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

--- Comment #9 from Paige Thompson <pa...@paige.bio> ---
I just tested using a 2000::/3 scoped address and it's the same problem,,


➜  ~ sudo ifconfig epair9a inet6 2001:470:B56F::2 prefixlen 64
➜  ~ sudo ifconfig epair9b inet6 2001:470:B56F::1 prefixlen 64 fib 48


it has the correct address in it's assignment:

epair9a: flags=1008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP> metric
0 mtu 1500
        options=8<VLAN_MTU>
        ether 02:a8:b6:06:0f:0a
        inet 192.0.0.28 netmask 0xfffffffe broadcast 255.255.255.255
        inet6 2001:470:b56f::2 prefixlen 64
        inet6 fe80::a8:b6ff:fe06:f0a%epair9a prefixlen 64 scopeid 0x21
        groups: epair
        media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
        status: active
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>

but if you compare the route that it creates to the ipv4 address routes: 

2001:470:b56f::/64 link#33            U           epair9a
2001:470:b56f::2   link#3             UHS             lo0

192.0.0.28         link#3             UHS             lo0
192.0.0.28/31      link#33            U           epair9a

that checks out too so ... um 

FIB 48 has the same kinda thing going on: 

2001:470:b56f::/64                link#34                       U          
epair9b
2001:470:b56f::1                  link#3                        UHS            
lo0

so.. I donno.... 


➜  ~ sudo route add -inet6 2001:470:b56f::1 -iface epair9a
add host 2001:470:b56f::1: gateway epair9a fib 0

➜  ~ sudo route add -inet6 2001:470:b56f::2 -iface epair9b -fib 48
add host 2001:470:b56f::2: gateway epair9b fib 48

➜  ~ ping6 2001:470:B56F::1
PING(56=40+8+8 bytes) 2001:470:b56f::1 --> 2001:470:b56f::1
no

ok so delete these 

I donno this should just work, .. the way it is *shrug* yet it doesn't. Works
with IPv4: 

➜  ~ ping -S 192.0.0.28 192.0.0.29
PING 192.0.0.29 (192.0.0.29) from 192.0.0.28: 56 data bytes
64 bytes from 192.0.0.29: icmp_seq=0 ttl=64 time=0.240 ms
64 bytes from 192.0.0.29: icmp_seq=1 ttl=64 time=0.209 ms
64 bytes from 192.0.0.29: icmp_seq=2 ttl=64 time=0.225 ms
64 bytes from 192.0.0.29: icmp_seq=3 ttl=64 time=0.241 ms

¯\_(ツ)_/¯

with Linux this is like trivial:

⚡ root@smol  /home/netcraveos  ip link add vrf1 type vrf table 1000
ip link set vrf1 up
ip link add veth0 type veth peer name veth1
ip link set veth1 master vrf1
ip addr add fcff::a/64 dev veth0
ip addr add fcff::b/64 dev veth1
ip link set veth0 up
ip link set veth1 up

⚡ root@smol  /home/netcraveos  ping -6 fcff::b          
PING fcff::b (fcff::b) 56 data bytes
64 bytes from fcff::b: icmp_seq=1 ttl=64 time=0.084 ms
--- fcff::b ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.084/0.084/0.084/0.000 ms

⚡ root@smol  /home/netcraveos  ping -6 fcff::a
PING fcff::a (fcff::a) 56 data bytes
64 bytes from fcff::a: icmp_seq=1 ttl=64 time=0.041 ms
^C
--- fcff::a ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.041/0.041/0.041/0.000 ms

⚡ root@smol  /home/netcraveos  ip -6 route show table 1000
anycast fcff:: dev veth1 proto kernel metric 0 pref medium
local fcff::b dev veth1 proto kernel metric 0 pref medium
fcff::/64 dev veth1 proto kernel metric 256 pref medium
anycast fe80:: dev veth1 proto kernel metric 0 pref medium
local fe80::502d:fff:fec3:6a38 dev veth1 proto kernel metric 0 pref medium
fe80::/64 dev veth1 proto kernel metric 256 pref medium
multicast ff00::/8 dev veth1 proto kernel metric 256 pref medium

The only actual difference between VRF and what freeBSD has is that the FIB
that an interface is assigned to is set by the FIB parameter; Linux interfaces
don't have a way to specify a FIB association; VRF acts like a bridge but the
only thing it bridges are what routing tables the interfaces it enslaves are
assigned to. 


I donno if I put them both on fib 0: 

➜  ~ sudo ifconfig epair9a inet6 2001:470:B56F::2 prefixlen 64
➜  ~ sudo ifconfig epair9b inet6 2001:470:B56F::1 prefixlen 64 fib 0

then of course it actually works 

➜  sq ping6 -S 2001:470:b56f::2 2001:470:b56f::1
PING(56=40+8+8 bytes) 2001:470:b56f::2 --> 2001:470:b56f::1
16 bytes from 2001:470:b56f::1, icmp_seq=0 hlim=64 time=0.278 ms
16 bytes from 2001:470:b56f::1, icmp_seq=1 hlim=64 time=0.223 ms

and I can even move epair9b to FIB 48 and it still works: 

➜  sq ifconfig epair9b fib 48
➜  sq ping6 -S 2001:470:b56f::2 2001:470:b56f::1
PING(56=40+8+8 bytes) 2001:470:b56f::2 --> 2001:470:b56f::1
16 bytes from 2001:470:b56f::1, icmp_seq=0 hlim=64 time=0.273 ms
^C
--- 2001:470:b56f::1 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.273/0.273/0.273/0.000 ms


2001:470:b56f::/64 link#33            U           epair9a
2001:470:b56f::1   link#3             UHS             lo0 <---- but wait I
tried adding this manually and it didn't work soo.... idk this is broken I'm
just saying
2001:470:b56f::2   link#3             UHS             lo0

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

Reply via email to