Skip to content

Global IPv6 addresses remain deprecated after receiving RA #19846

@LP-HAW

Description

@LP-HAW

Description

SLAAC-configured global IPv6 addresses, once deprecated, do not become valid again after receiving a new router advertisement.
This is a problem when the router advertisement daemon goes offline for a time period between the preferred lifetime and the valid lifetime (e.g. due to maintenance).

Steps to reproduce the issue

  1. Compile and launch RIOT's gnrc_networking example:
$ sudo ./dist/tools/tapsetup/tapsetup
$ make -C examples/gnrc_networking all term
  1. Start radvd:
$ sudo ./dist/tools/radvd/radvd.sh -c tapbr0 2001:db8::/64
  1. Either stop radvd until the preferred lifetime expires:
$ sudo ./dist/tools/radvd/radvd.sh -d
$ sleep 14400
$ sudo ./dist/tools/radvd/radvd.sh -c tapbr0 2001:db8::/64

...or if you don't want to wait for 4 hours, just send a router advertisement to the node with a preferred lifetime of 1 using a link-local source address:

$ sudo scapy
>>> send(IPv6(dst='2001:db8::343f:a7ff:fecf:48aa', src='fe80::cde:52ff:feae:c1c6')/ICMPv6ND_RA()/ICMPv6NDOptPrefixInfo(prefix='2001:db8::', validlifetime=86400, preferredlifetime=1))

Expected results

The global address should become valid again after receiving a new router advertisement.

Actual results

The valid lifetime and preferred lifetime are updated by new router advertisements. However the address remains deprecated:

> nib prefix
nib prefix
2001:db8::/64 dev #6  expires 86363 sec deprecates 14363 sec

> ifconfig
ifconfig
Iface  6  HWaddr: 36:3F:A7:CF:48:AA
        L2-PDU:1500  MTU:1500  HL:64  RTR
        RTR_ADV
        Source address length: 6
        Link type: wired
        inet6 addr: fe80::343f:a7ff:fecf:48aa  scope: link  VAL
        inet6 addr: 2001:db8::343f:a7ff:fecf:48aa  scope: global  DPR

Metadata

Metadata

Labels

Area: networkArea: NetworkingType: bugThe issue reports a bug / The PR fixes a bug (including spelling errors)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions