Florian Obser wrote: > slaacd(8) used to never renew temporary addresses but would form a new > one once the pltime reached 0. This was because I misunderstood what the > RFC was saying and did not appreciate what would hapen. > If there is a huge difference between pltime and vltime in router > advertisements slaacd would accumulate deprecated temporary IPv6 > addresses and wouldn't be able to get rid of them since the vltime did > not expire. Say you have a pltime of 5 minutes and a vltime of a > day. You'd get a new temporary address every 5 minutes and they would > stick around for a day. You'd end up with 288 temporary IPv6 addresses. > > Long story short, this was fixed in rev 1.57 in engine.c > > See RFC 8981 3.4. step 1.
Here the router advertisement (from my FRITZ!Box 7590): | t20$ slaacctl show interface em0 | em0: | index: 1 running: yes temporary: yes | lladdr: 80:ee:73:XX:XX:XX | inet6: fe80::82ee:73ff:feXX:XXXX%em0 | Router Advertisement from fe80::464e:6dff:feXX:XXXX%em0 | received: 2022-01-30 01:21:18; 478s ago | Cur Hop Limit: 255, M: 0, O: 1, Router Lifetime: 1800s | Default Router Preference: Medium | Reachable Time: 0ms, Retrans Timer: 0ms | MTU: 1492 bytes | prefix: 2003:e6:726:d500::/64 | On-link: 1, Autonomous address-configuration: 1 | vltime: 7200, pltime: 1800 | rdns: fd00::464e:6dff:febc:d984, lifetime: 1200 | Address proposals | id: 11, state: CONFIGURED, temporary: y | vltime: 7200, pltime: 1800, timeout: 1307s | updated: 2022-01-30 01:21:18; 478s ago | 2003:e6:726:d500:59b7:85fb:6976:2fb1, 2003:e6:726:d500::/64 | id: 10, state: CONFIGURED, temporary: y | vltime: 7200, pltime: 0, timeout: 6707s | updated: 2022-01-30 01:21:18; 478s ago | 2003:e6:726:d500:dab4:fca1:1255:7c8, 2003:e6:726:d500::/64 | id: 9, state: CONFIGURED, temporary: y | vltime: 5138, pltime: 0, timeout: 4645s | updated: 2022-01-30 01:21:18; 478s ago | 2003:e6:726:d500:1d5f:91de:490f:d709, 2003:e6:726:d500::/64 | id: 3, state: CONFIGURED, temporary: n | vltime: 7200, pltime: 1800, timeout: 1307s | updated: 2022-01-30 01:21:18; 478s ago | 2003:e6:726:d500:XXXX:XXXX:XXXX:XXXX, 2003:e6:726:d500::/64 | Default router proposals | id: 1, state: CONFIGURED | router: fe80::464e:6dff:feXX:XXXX%em0 | router lifetime: 1800 | Preference: Medium | updated: 2022-01-30 01:21:18; 478s ago, timeout: 1307s | rDNS proposals [...] Here the dates (and differences in seconds) when a new temporary address was created in the last days: | 202201242053 | 79200 | 202201251853 | 73982 | 202201261526.02 | 19668 | 202201262053.50 | 17838 | 202201270151.08 | 27897 | 202201270936.05 | 61852 | 202201280246.57 | 83957 | 202201290206.14 | 68407 | 202201292106.21 Why does slaacd(8) not obey the values (7200s/1800s) from the router advertisements? The difference between vltime and pltime in the router ad- vertisement isn't as big as in your example (1 day/5 min), so there should be no problem of too many addresses per inter- face. Marcel
