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

Reply via email to