[Bug 286322] IPv6 doesn't work across different FIBs (epair)

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 24 Apr 2025 21:15:57 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=286322

--- Comment #1 from Paige thompson <paige@paige.bio> ---
Maybe I was wrong: 

root@FBSDDEV1:~ # diff before after
7a8
> fcff::b            link#2             UHS             lo0
13a15,16
> fe80::f9:50ff:fe72 link#2             UHS             lo0
> fe80::%epair128b/6 link#4             U         epair128b
root@FBSDDEV1:~ # diff after andafter 
root@FBSDDEV1:~ # 

It seems after moving epair128b to FIB 0, it creates a couple of routes in fib
0, that persist even after moving epair128b back to FIB 128.

It would seem a routing issue rather than NDP in this case: 

round-trip min/avg/max/stddev = 0.484/0.623/0.990/0.154 ms
root@FBSDDEV1:~ # setfib -F 128 ping fcff::a
PING(56=40+8+8 bytes) fcff::a --> fcff::a
^C
--- fcff::a ping statistics ---
2 packets transmitted, 0 packets received, 100.0% packet loss
root@FBSDDEV1:~ # setfib -F 128 ping -S fcff::b fcff::a
PING(56=40+8+8 bytes) fcff::b --> fcff::a
16 bytes from fcff::a, icmp_seq=0 hlim=64 time=0.706 ms
^C
--- fcff::a ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.706/0.706/0.706/0.000 ms

Yeah so I think the only problem is when you use IPv6 it doesn't create that
route on interface lo because if I recreate the epair128 interfaces and assign
IPv4 instead, without doing anything (no switching the interfaces between FIBs,
a is assigned in 0 and b is assigned in 128: 

Internet:
Destination        Gateway            Flags         Netif Expire
10.0.0.0           link#2             UHS             lo0
10.0.0.0/31        link#3             U         epair128a
10.0.0.1           link#2             UHS             lo0 <-- it created this 
localhost          link#2             UH              lo0
169.254.0.0/16     link#1             U            vtnet0
169.254.10.136     link#2             UHS             lo0

and it does that for IPv6 too but only after you move epair128b to FIB 0 which
you can then move it back... 

um cant figure out how to route add fcff::b to interface lo myself,

root@FBSDDEV1:~ # route add -inet6 fcff::b 
add host fcff::b fib 0: Invalid argument
root@FBSDDEV1:~ # route add -inet6 -host fcff::b
add host fcff::b fib 0: Invalid argument
root@FBSDDEV1:~ # route add -inet6 -host fcff::b/64
add host fcff::b/64 fib 0: Invalid argument
root@FBSDDEV1:~ # route add -inet6 fcff::b/64
add net fcff::b/64 fib 0: Invalid argument
root@FBSDDEV1:~ # 

but that would appear to be the issue its missing that route

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