Hi,
If FBSD gets an RA containing an on-link prefix, then subsequently that on-link prefix becomes off-link, rather than remove the prefix immediately it hangs around for the original lifetime:
RA (2001:db8:0:1::/64 is on-link):
Now change the RA so that 2001:db8:0:1::/64 becomes off-link:
Note the expiry time on 2001:db8:0:1::/64. When this expires FBSD simply flushes it and continues to ignore it. You can speed this up with
Is this a bug? I've only tested this on 12.2-RELEASE, will test on 13 soon-ish.
Thanks,
Scott
If FBSD gets an RA containing an on-link prefix, then subsequently that on-link prefix becomes off-link, rather than remove the prefix immediately it hangs around for the original lifetime:
RA (2001:db8:0:1::/64 is on-link):
Code:
00:00:04.333210 IP6 (class 0xe0, hlim 255, next-header ICMPv6 (58) payload length: 96) fe80::1 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 96
hop limit 64, Flags [none], pref high, router lifetime 1800s, reachable time 0ms, retrans timer 0ms
source link-address option (1), length 8 (1): 00:00:00:00:02:01
0x0000: 0000 0000 0201
mtu option (5), length 8 (1): 9216
0x0000: 0000 0000 2400
prefix info option (3), length 32 (4): 2001:db8:0:1::/64, Flags [onlink], valid time 3600s, pref. time 60s
0x0000: 4080 0000 0e10 0000 003c 0000 0000 2001
0x0010: 0db8 0000 0001 0000 0000 0000 0000
prefix info option (3), length 32 (4): 2406:1234:1234:6601::/64, Flags [onlink], valid time 3600s, pref. time 60s
0x0000: 4080 0000 0e10 0000 003c 0000 0000 2406
0x0010: 1234 1234 6601 0000 0000 0000 0000
# ndp -p
2001:db8:0:1::/64 if=vmx0
flags=LO vltime=3600, pltime=60, expire=43m48s, ref=0
advertised by
fe80::1%vmx0 (reachable)
2406:1234:1234:6601::/64 if=vmx0
flags=LO vltime=3600, pltime=60, expire=59m28s, ref=0
advertised by
fe80::1%vmx0 (reachable)
fe80::%vmx0/64 if=vmx0
flags=LAO vltime=infinity, pltime=infinity, expire=Never, ref=0
No advertising router
fe80::%lo0/64 if=lo0
flags=LAO vltime=infinity, pltime=infinity, expire=Never, ref=0
No advertising router
Now change the RA so that 2001:db8:0:1::/64 becomes off-link:
Code:
00:00:00.000059 IP6 (class 0xe0, hlim 255, next-header ICMPv6 (58) payload length: 96) fe80::1 > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 96
hop limit 64, Flags [none], pref high, router lifetime 1800s, reachable time 0ms, retrans timer 0ms
source link-address option (1), length 8 (1): 00:00:00:00:02:01
0x0000: 0000 0000 0201
mtu option (5), length 8 (1): 9216
0x0000: 0000 0000 2400
prefix info option (3), length 32 (4): 2001:db8:0:1::/64, Flags [none], valid time 3600s, pref. time 60s
0x0000: 4000 0000 0e10 0000 003c 0000 0000 2001
0x0010: 0db8 0000 0001 0000 0000 0000 0000
prefix info option (3), length 32 (4): 2406:1234:1234:6601::/64, Flags [onlink], valid time 3600s, pref. time 60s
0x0000: 4080 0000 0e10 0000 003c 0000 0000 2406
0x0010: 1234 1234 6601 0000 0000 0000 0000
# ndp -p
2001:db8:0:1::/64 if=vmx0
flags=LO vltime=3600, pltime=60, expire=34m44s, ref=0
advertised by
fe80::1%vmx0 (reachable)
2406:3400:1234:1234::/64 if=vmx0
flags=LO vltime=3600, pltime=60, expire=57m46s, ref=0
advertised by
fe80::1%vmx0 (reachable)
fe80::%vmx0/64 if=vmx0
flags=LAO vltime=infinity, pltime=infinity, expire=Never, ref=0
No advertising router
fe80::%lo0/64 if=lo0
flags=LAO vltime=infinity, pltime=infinity, expire=Never, ref=0
No advertising router
Note the expiry time on 2001:db8:0:1::/64. When this expires FBSD simply flushes it and continues to ignore it. You can speed this up with
ndp -P
. But it should have removed the entry immediately when it received the prefix with no L-bit rather than time it out.Is this a bug? I've only tested this on 12.2-RELEASE, will test on 13 soon-ish.
Thanks,
Scott