Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Mar 2026 05:11:31 +0000
From:      bugzilla-noreply@freebsd.org
To:        bugs@FreeBSD.org
Subject:   [Bug 292319] [network: fibs] traffic comes from the wrong fib in some cases.
Message-ID:  <bug-292319-227-rNdbW07nmB@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-292319-227@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292319

William Brown <william@firstyear.id.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|Works As Intended           |---
             Status|Closed                      |Open

--- Comment #2 from William Brown <william@firstyear.id.au> ---
I do actually think this is a bug.

My understanding is that "two fibs" should be equivalent to "two separate
machines" from a routing table perspective. They are isolated networking
"islands", and this is how I understand it from other implementations.

We send the ping:

13:28:08.139450 IP 172.24.17.26 > 10.144.53.53: ICMP echo request, id 7657, seq
0, length 64

Logically this flows from 172.24.17.26 (vtnet5 fib 5) to 172.24.17.1, then back
to 172.24.17.24 (vtnet1 fib 1) and onward via 10.149.242.42 (via tun5 fib 1)

Then we get a redirect, which as you note, is completely valid:

13:41:43.442440 IP 172.24.17.1 > 172.24.17.26: ICMP redirect 10.149.242.42 to
host 172.24.17.24, length 92

Since 10.149.242.42 (via tun5 fib 1) is routed via 172.24.17.24 (vtnet1 fib 1)
then it is valid to inform 172.24.17.26 (vtnet5 fib 5) that it can directly
communicate via that path. 

But then we see:

13:28:09.167377 IP 10.149.242.42 > 10.144.53.53: ICMP echo request, id 968, seq
1, length 64

FreeBSD is resolving correctly that it is in possession of all three IP's
10.149.242.42, 172.24.17.24 and 172.24.17.26. So then the "shortest path"
becomes emitting the traffic from 10.149.242.42 as 10/8 is part of fib 1's
routing table.

However, the echo requests are sent out of vtnet5 (fib 5) but from the source
address 10.149.242.42. If they were correctly sent from tun5 (fib 1) then it
wouldn't be a problem. I believe this is the bug - that the redirect causes the
traffic to be emitted incorrectly from this interface. Secondary to this, it
does seem wrong that fibs will "cross streams" in this way - if an interface is
part of a fib, it should not be able to view the interface state in other fibs.
That alone would probably have prevented the issue here. 


I would expect that if anything - the redirect should cause 172.24.17.26
(vtnet5 fib 5) to emit the ICMP echo request, then send it via loopback to
172.24.17.24 (vtnet1 fib 1), as this is the path denoted by the ICMP redirect.
Alternately, the packet is emitted to the switch which will reflect it back to
the host. 

Thanks for your time,

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-292319-227-rNdbW07nmB>