radvd lifetime question

Nico Schottelius nico.schottelius at ungleich.ch
Wed Dec 18 22:59:30 CET 2024


Hello,

we got a network in which clients using dhcpcd withdraw the router
advertisements sent by bird too early:

--------------------------------------------------------------------------------
Dec 19 06:33:15 bibimbap daemon.warn dhcpcd[18464]: wlan0: fe80::20d:b9ff:fe48:3bb8: router expired
Dec 19 06:33:15 bibimbap daemon.warn dhcpcd[18464]: wlan0: part of a Router Advertisement expired
Dec 19 06:38:22 bibimbap daemon.warn dhcpcd[18464]: wlan0: fe80::20d:b9ff:fe48:3bb8: router expired
Dec 19 06:38:22 bibimbap daemon.warn dhcpcd[18464]: wlan0: part of a Router Advertisement expired
Dec 19 06:39:30 bibimbap daemon.warn dhcpcd[18464]: wlan0: fe80::20d:b9ff:fe46:3bd4: router expired
Dec 19 06:39:30 bibimbap daemon.warn dhcpcd[18464]: wlan0: part of a Router Advertisement expired
--------------------------------------------------------------------------------

The config in bird is:

--------------------------------------------------------------------------------
protocol radv {
    # Pods / bridge
    interface "eth0" {
        max ra interval 10;

        prefix 2a0a:5480::/64 { preferred lifetime 86400; };
        prefix 2a0a:e5c0:13::/64 { skip; };
        default preference high;
    };
    rdnss {
      ns 2a0a:5480:0:a::a;
      ns 2a0a:5480:0:a::b;
      lifetime 86400;
    };
}
--------------------------------------------------------------------------------

This causes RAs to be sent that look like this:

--------------------------------------------------------------------------------
interface wlan0
{
	AdvSendAdvert on;
	# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
	AdvManagedFlag off;
	AdvOtherConfigFlag off;
	AdvReachableTime 0;
	AdvRetransTimer 0;
	AdvCurHopLimit 64;
	AdvDefaultLifetime 30;
	AdvHomeAgentFlag off;
	AdvDefaultPreference low;

	prefix 2a0a:5480::/64
	{
		AdvValidLifetime 86400;
		AdvPreferredLifetime 86400;
		AdvOnLink on;
		AdvAutonomous on;
		AdvRouterAddr off;
	}; # End of prefix definition


	RDNSS 2a0a:5480:0:a::a 2a0a:5480:0:a::b
	{
		AdvRDNSSLifetime 86400;
	}; # End of RDNSS definition

}; # End of interface definition
--------------------------------------------------------------------------------

It seems that the "AdvDefaultLifetime 30;" is wrong.

Trying to fix it using

--------------------------------------------------------------------------------
    interface "eth0" {
        default lifetime 86400;
--------------------------------------------------------------------------------

fails as bird reports:

--------------------------------------------------------------------------------
/bird/bird.conf:897:31 Default lifetime must be in range 0-9000
--------------------------------------------------------------------------------

I read in the manpage of radvd that indeed 9000 is the max (not sure why
that limit is at 9k though...), but what I am wondering is what is the
right approach to this?

Or is this a bug in dhcpcd?


BR,

Nico

p.s.: A low "max ra interval" allows us to run multiple, active routers
in the same network and clients will quickly fall over to the second
router, if one is not functioning correctly.

--
Sustainable and modern Infrastructures by ungleich.ch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 873 bytes
Desc: not available
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20241218/c9679c34/attachment.sig>


More information about the Bird-users mailing list