Re: Multiple Fibs and INET6
- Reply: Santiago Martinez : "Re: Multiple Fibs and INET6"
- In reply to: Santiago Martinez : "Re: Multiple Fibs and INET6"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 18 Jul 2024 16:15:12 UTC
> On Jul 19, 2024, at 12:11 AM, Santiago Martinez <sm@codenetworks.net> wrote: > > Interesting, I'm running 14.1p2. > > Yes, I'm running exactly the same version with you. > how does your routing table looks for fib1 ? > > ``` # netstat -6rnF 1 Routing tables (fib: 1) Internet6: Destination Gateway Flags Netif Expire fe80::%lo1/64 link#5 U lo1 fe80::1%lo0 link#2 UHS lo0 ``` > Santi > > > > On 7/18/24 18:09, Zhenlei Huang wrote: >> >> >>> On Jul 13, 2024, at 1:06 AM, Santiago Martinez <sm@codenetworks.net <mailto:sm@codenetworks.net>> wrote: >>> >>> Hi Everyone. >>> >>> While adding -F ( fib as used in netstat ) to ping and ping6 I have found something that from my understanding is not correct. >>> Please can you advise? >>> I have the following setup : >>> >>> -- two fibs (0 and 1) >>> -- two loop-backs (lo0 and lo1). >>> -- Lo1 has been assigned to fib1 >>> -- net.add_addr_allfibs = 0 >>> My interface output looks like this: >>> >>> >>> ifconfig lo0 | grep inet6 >>> inet6 ::1 prefixlen 128 >>> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2 >>> >>> ifconfig lo1 | grep inet6 >>> inet6 fe80::1%lo1 prefixlen 64 scopeid 0x3 >>> >>> >>> If I do a netstat -rn -6 -F0 I get the following which is was i expected. >>> >>> Internet6: >>> Destination Gateway Flags Netif Expire >>> ::/96 link#2 URS lo0 >>> ::1 link#2 UHS lo0 >>> ::ffff:0.0.0.0/96 link#2 URS lo0 >>> fe80::%lo0/10 link#2 URS lo0 >>> fe80::%lo0/64 link#2 U lo0 >>> fe80::1%lo0 link#2 UHS lo0 >>> ff02::/16 link#2 URS lo0 >>> >>> >>> Now, netstat -rn -6 -F1 shows "fe80::1%lo0" which should not be there and "fe80::1%lo1" is missing which should be there. >>> >>> Internet6: >>> Destination Gateway Flags Netif Expire >>> fe80::%lo1/64 link#3 U lo1 >>> fe80::1%lo0 link#2 UHS lo0 >>> >> That seems wrong from my first glance. IIRC, there's HACK ( I'd prefer this ) for loopback route. For example >> ``` >> # sysctl net.fibs=3 >> net.fibs: 2 -> 3 >> # ifconfig epair create >> # epair0a >> # ifconfig epair0a fib 2 >> # ifconfig epair0a inet6 -ifdisabled up >> # netstat -6rnF 2 >> Routing tables (fib: 2) >> >> Internet6: >> Destination Gateway Flags Netif Expire >> fe80::%epair0a/64 link#5 U epair0a >> fe80::3b:b3ff:fe8f:9a0a%lo0 link#1 UHS lo0 >> ``` >> >> The loopback route always refer the first loop interface, aka lo0. >>> >>> >>> What output I was expecting was: >>> Internet6: >>> Destination Gateway Flags Netif Expire >>> fe80::%lo1/64 link#3 U lo1 >>> fe80::1%lo1 link#3 UHS lo1 >>> >>> >>> >>> This makes the ping -6 -F0 fe80::1%lo0 to work but ping -6 -F1 fe80::1%l01 to fail which I wanted to use as test case. >>> >> That is interesting. I can ping without failure. >> >> ``` >> # setfib 1 ping6 -c3 fe80::1%lo1 >> PING(56=40+8+8 bytes) fe80::1%lo1 --> fe80::1%lo1 >> 16 bytes from fe80::1%lo1, icmp_seq=0 hlim=64 time=0.050 ms >> 16 bytes from fe80::1%lo1, icmp_seq=1 hlim=64 time=0.067 ms >> 16 bytes from fe80::1%lo1, icmp_seq=2 hlim=64 time=0.096 ms >> >> --- fe80::1%lo1 ping statistics --- >> 3 packets transmitted, 3 packets received, 0.0% packet loss >> round-trip min/avg/max/stddev = 0.050/0.071/0.096/0.019 ms >> ``` >> >> Best regards, >> Zhenlei >> >>> >>> Thanks in advance. >>> >>> Santiago >>> >>> >> >> >>