Page MenuHomeVyOS Platform

Router announcements broken on boot
Closed, ResolvedPublicBUG

Description

Upgraded to the 1.3 rolling today. After a reboot, I don't have router advertisements working.

The config exists in /etc/radvd.conf

#   This section was automatically generated by the Vyatta
#   configuration sub-system.  Do not edit it.
#
#   Generated by root on Wed Dec 18 20:46:29 2019
#
    IgnoreIfMissing on;
    AdvDefaultLifetime 1800;
    MinRtrAdvInterval 198;
    AdvDefaultPreference high;
    AdvSendAdvert on;
    AdvRetransTimer 0;
    AdvLinkMTU 0;
    MaxRtrAdvInterval 600;
    AdvReachableTime 0;
    AdvIntervalOpt on;
    AdvManagedFlag off;
    AdvOtherConfigFlag on;
    AdvCurHopLimit 64;
    prefix 2001:dead:beef:9::/64 {
        AdvOnLink on;
        AdvPreferredLifetime 604800;
        AdvAutonomous on;
        AdvValidLifetime 2592000;
    };
    RDNSS 2001:dead:beef:5353::53 {
    };
};

And according to the commit log, everything should be working

[ interfaces ethernet eth0 vif 21 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.21...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 20 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.20...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 22 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.22...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 9 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.9...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 3 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.3...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

The fix appeared to be as simple as

sudo systemctl restart radvd.service

Details

Difficulty level
Easy (less than an hour)
Version
1.3 rolling
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)

Event Timeline

After some more testing, after a reboot, a tcpdump -n -i interface icmp6 on a client machine shows nothing until restarting the radvd service on the routers.

@kroy can you please share your config? I used a minimal one and everything works without issues.

set interfaces ethernet eth1 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 ipv6 router-advert other-config-flag 'false'
set interfaces ethernet eth1 ipv6 router-advert prefix 2001:db8:bbbb::/64 autonomous-flag 'true'
set interfaces ethernet eth1 ipv6 router-advert prefix 2001:db8:bbbb::/64 on-link-flag 'true'
set interfaces ethernet eth1 ipv6 router-advert prefix 2001:db8:bbbb::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 ipv6 router-advert send-advert 'true'

I only set:

12  2019-12-20T00:14:16+0000 set int eth eth1 address 2001:db8:aaaa::1/64
13  2019-12-20T00:14:18+0000 comit
14  2019-12-20T00:14:20+0000 commit
15  2019-12-20T00:14:22+0000 sa
16  2019-12-20T00:15:27+0000 set int eth eth1 ipv6 router-advert prefix 2001:db8:bbbb::/64
00:25:22.142263 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 118: fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 64
00:25:38.157817 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 118: fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 64
00:25:54.171542 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype IPv6 (0x86dd), length 118: fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 64

Maybe it's because I have multiples? Or on vlans (not that that should matter)

The only difference I see in my configs are the name server and my "other-config-flag" is true instead of false

set interfaces ethernet eth0 vif 3 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 3 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 3 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 3 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 3 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 3 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 3 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 3 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 3 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 9 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 9 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 9 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 9 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 9 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 9 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 9 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 9 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 20 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 20 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 20 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 20 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 20 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 20 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 20 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 20 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 21 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 21 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 21 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 21 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 21 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 21 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 21 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 21 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 22 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 22 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 22 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 22 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 22 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 22 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 22 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 22 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert send-advert 'true'

@kroy

I used your config and just changed to eth1, commit works and after reboot radvd runs and sends RAs as well. radvd has a very low priority, I think 999 or so to ensure all interfaces are up and running plus the fact that radvd runs with a flag which allows the config running on an offline interface. (IgnoreIfMissing on;) Could anything else x-fire?

 15:08:49.038359 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 22, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:08:49.161976 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 9, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:08:49.302356 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 20, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:08:49.443833 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:08:49.578081 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 3, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:09:05.053320 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 22, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:09:05.162448 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 9, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:09:05.302463 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 20, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:09:05.446451 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
15:09:05.578438 08:00:27:55:1b:64 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 3, p 0, ethertype IPv6, fe80::a00:27ff:fe55:1b64 > ff02::1: ICMP6, router advertisement, length 88
set interfaces ethernet eth1 vif 3 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 vif 3 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 vif 3 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth1 vif 3 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 vif 3 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 vif 3 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 vif 3 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth1 vif 3 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth1 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 autonomous-flag 'true'
set interfaces ethernet eth1 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 on-link-flag 'true'
set interfaces ethernet eth1 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 vif 3 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 vif 3 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 vif 3 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth1 vif 9 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 vif 9 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 vif 9 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth1 vif 9 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 vif 9 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 vif 9 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 vif 9 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth1 vif 9 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth1 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 autonomous-flag 'true'
set interfaces ethernet eth1 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 on-link-flag 'true'
set interfaces ethernet eth1 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 vif 9 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 vif 9 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 vif 9 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth1 vif 20 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 vif 20 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 vif 20 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth1 vif 20 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 vif 20 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 vif 20 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 vif 20 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth1 vif 20 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth1 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 autonomous-flag 'true'
set interfaces ethernet eth1 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 on-link-flag 'true'
set interfaces ethernet eth1 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 vif 20 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 vif 20 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 vif 20 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth1 vif 21 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 vif 21 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 vif 21 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth1 vif 21 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 vif 21 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 vif 21 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 vif 21 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth1 vif 21 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth1 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 autonomous-flag 'true'
set interfaces ethernet eth1 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 on-link-flag 'true'
set interfaces ethernet eth1 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 vif 21 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 vif 21 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 vif 21 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth1 vif 22 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth1 vif 22 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth1 vif 22 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth1 vif 22 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth1 vif 22 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth1 vif 22 ipv6 router-advert max-interval '600'
set interfaces ethernet eth1 vif 22 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth1 vif 22 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth1 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 autonomous-flag 'true'
set interfaces ethernet eth1 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 on-link-flag 'true'
set interfaces ethernet eth1 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 valid-lifetime '2592000'
set interfaces ethernet eth1 vif 22 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth1 vif 22 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth1 vif 22 ipv6 router-advert send-advert 'true'

Upgraded to lastest official rolling:

Version:          VyOS 1.3-rolling-201912201452
Built by:         [email protected]
Built on:         Fri 20 Dec 2019 14:52 UTC

Definitely can confirm again no RAs until I manually restart radvd on both routers:

This is the full config for one of the routers. The other is identical other than IPs.

set high-availability vrrp group VLAN3 interface 'eth0.3'
set high-availability vrrp group VLAN3 priority '200'
set high-availability vrrp group VLAN3 virtual-address '10.3.1.1/24'
set high-availability vrrp group VLAN3 vrid '3'
set high-availability vrrp group VLAN9 interface 'eth0.9'
set high-availability vrrp group VLAN9 priority '200'
set high-availability vrrp group VLAN9 virtual-address '10.9.1.1/24'
set high-availability vrrp group VLAN9 vrid '9'
set high-availability vrrp group VLAN20 interface 'eth0.20'
set high-availability vrrp group VLAN20 priority '200'
set high-availability vrrp group VLAN20 virtual-address '10.20.20.1/24'
set high-availability vrrp group VLAN20 vrid '20'
set high-availability vrrp group VLAN21 interface 'eth0.21'
set high-availability vrrp group VLAN21 priority '200'
set high-availability vrrp group VLAN21 virtual-address '10.21.21.1/24'
set high-availability vrrp group VLAN21 vrid '21'
set high-availability vrrp group VLAN22 interface 'eth0.22'
set high-availability vrrp group VLAN22 priority '200'
set high-availability vrrp group VLAN22 virtual-address '10.22.22.1/24'
set high-availability vrrp group VLAN22 vrid '22'
set high-availability vrrp sync-group MAIN member 'VLAN20'
set high-availability vrrp sync-group MAIN member 'VLAN21'
set high-availability vrrp sync-group MAIN member 'VLAN9'
set high-availability vrrp sync-group MAIN member 'VLAN22'
set high-availability vrrp sync-group MAIN member 'VLAN3'
set interfaces ethernet eth0 duplex 'auto'
set interfaces ethernet eth0 hw-id '00:50:56:b5:a1:48'
set interfaces ethernet eth0 smp-affinity 'auto'
set interfaces ethernet eth0 speed 'auto'
set interfaces ethernet eth0 vif 3 address '10.3.1.3/24'
set interfaces ethernet eth0 vif 3 address '2001:dead:beef:3::1/64'
set interfaces ethernet eth0 vif 3 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 3 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 3 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 3 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 3 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 3 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 3 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 3 ipv6 router-advert prefix 2001:dead:beef:3::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 3 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 3 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 9 address '10.9.1.3/24'
set interfaces ethernet eth0 vif 9 address '2001:dead:beef:9::1/64'
set interfaces ethernet eth0 vif 9 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 9 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 9 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 9 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 9 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 9 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 9 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 9 ipv6 router-advert prefix 2001:dead:beef:9::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 9 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 9 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 20 address '2001:dead:beef:20::1/64'
set interfaces ethernet eth0 vif 20 address '10.20.20.3/24'
set interfaces ethernet eth0 vif 20 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 20 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 20 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 20 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 20 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 20 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 20 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 20 ipv6 router-advert prefix 2001:dead:beef:20::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 20 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 20 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 21 address '10.21.21.3/24'
set interfaces ethernet eth0 vif 21 address '2001:dead:beef:21::1/64'
set interfaces ethernet eth0 vif 21 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 21 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 21 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 21 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 21 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 21 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 21 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 21 ipv6 router-advert prefix 2001:dead:beef:21::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 21 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 21 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 22 address '10.22.22.3/24'
set interfaces ethernet eth0 vif 22 address '2001:dead:beef:22::1/64'
set interfaces ethernet eth0 vif 22 ipv6 dup-addr-detect-transmits '1'
set interfaces ethernet eth0 vif 22 ipv6 router-advert cur-hop-limit '64'
set interfaces ethernet eth0 vif 22 ipv6 router-advert default-preference 'high'
set interfaces ethernet eth0 vif 22 ipv6 router-advert link-mtu '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert managed-flag 'false'
set interfaces ethernet eth0 vif 22 ipv6 router-advert max-interval '600'
set interfaces ethernet eth0 vif 22 ipv6 router-advert name-server '2001:dead:beef:5353::53'
set interfaces ethernet eth0 vif 22 ipv6 router-advert other-config-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 autonomous-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 on-link-flag 'true'
set interfaces ethernet eth0 vif 22 ipv6 router-advert prefix 2001:dead:beef:22::/64 valid-lifetime '2592000'
set interfaces ethernet eth0 vif 22 ipv6 router-advert reachable-time '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert retrans-timer '0'
set interfaces ethernet eth0 vif 22 ipv6 router-advert send-advert 'true'
set interfaces ethernet eth0 vif 500 address '10.253.253.2/30'
set interfaces ethernet eth0 vif 500 address '2001:dead:beef:500::2/64'
set interfaces loopback lo
set protocols ospf area 0 network '10.253.253.0/24'
set protocols ospf area 0 network '10.3.1.0/24'
set protocols ospf redistribute connected metric-type '2'
set protocols ospfv3 area 0.0.0.0 interface 'eth0.500'
set protocols ospfv3 area 0.0.0.0 interface 'eth0.3'
set protocols ospfv3 redistribute connected
set service lldp interface eth0.500
set service lldp legacy-protocols cdp
set service lldp legacy-protocols edp
set service ssh port '22'
set system config-management commit-revisions '100'
set system domain-name 'lan.domain.io'
set system host-name 'route1'
set system login radius server 10.0.10.114 key 'asdfasdfasdf'
set system login radius server 10.0.10.114 port '1812'
set system login radius server 10.0.10.114 timeout '2'
set system login radius server 10.0.10.115 key 'asdfasdf'
set system login radius server 10.0.10.115 port '1812'
set system login radius server 10.0.10.115 timeout '2'
set system name-server '10.53.53.53'
set system ntp server 0.pool.ntp.org
set system ntp server 1.pool.ntp.org
set system ntp server 2.pool.ntp.org
set system syslog global facility all level 'info'
set system syslog global facility protocols level 'debug'
set system time-zone 'UTC'

In this capture output, you can tell exactly when I restarted the daemons on both routers (VLAN42 RAs come from a different router not running VyOS)

15:58:05.354289 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:58:16.357637 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:58:27.493875 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:58:41.962712 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:58:56.720837 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:59:06.816361 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:06.847336 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128
15:59:07.083340 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 3, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:07.083621 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 9, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:07.084326 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 22, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:07.084544 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 20, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:07.084895 00:50:56:b5:68:45 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::250:56ff:feb5:6845 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.095384 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.385299 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 3, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.385717 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 9, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.386022 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 22, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.386464 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 20, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:08.386772 00:50:56:b5:a1:48 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 146: vlan 21, p 0, ethertype IPv6, fe80::250:56ff:feb5:a148 > ff02::1: ICMP6, router advertisement, length 88
15:59:16.995901 00:50:56:b5:bf:17 > 33:33:00:00:00:01, ethertype 802.1Q (0x8100), length 186: vlan 42, p 0, ethertype IPv6, fe80::250:56ff:feb5:bf17 > ff02::1: ICMP6, router advertisement, length 128

And I don't know if it's relevant, but the syslog output is definitely different depending on whether I restart it, or it gets restarted on boot

When it is restarted on boot:

Dec 20 15:46:23 route1 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 20 15:46:23 route1 systemd[1]: message repeated 2 times: [ /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.]
Dec 20 15:46:23 route1 radvd[1695]: config file, /etc/radvd.conf, syntax ok
Dec 20 15:46:24 route1 radvd[1696]: version 2.17 started
Dec 20 15:46:25 route1 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.

When I restart it with sudo systemctl restart radvd.service

Dec 20 15:59:08 route1 systemd[1]: radvd.service: Succeeded.
Dec 20 15:59:08 route1 radvd[2483]: config file, /etc/radvd.conf, syntax ok
Dec 20 15:59:08 route1 radvd[2485]: version 2.17 started

That can't be the issue, what do you see if you do a grep radvd /var/log/messages?

Dec 20 18:53:33 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.22
Dec 20 18:53:33 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start
Dec 20 18:53:33 vyos13 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 20 18:53:33 vyos13 systemd[1]: message repeated 2 times: [ /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.]
Dec 20 18:53:33 vyos13 radvd[1400]: config file, /etc/radvd.conf, syntax ok
Dec 20 18:53:33 vyos13 radvd[1401]: version 2.17 started
Dec 20 18:53:33 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.20
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.9
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.3
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.21
Dec 20 18:53:34 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start
Dec 20 18:53:36 vyos13 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.

You should see something similar.
The stupid thing is the reastart for each vif, but it shouldn't make a big difference since the lifetime for the ra is big enough and sent on the interface each time radvd loads it.

My output there basically matches yours.

I think I just fixed it. I added and deleted a new advertisement on a different interface, and now it all seems to be working as intended. So I'm not sure if it was a problem with some migration or what.

Weird, afaik there was nothing to migrate yet.

Confirmed on 1.3-20191213, tcpdump on the router shows no advertisements until radvd is restarted with sudo systemctl restart radvd.

Can you provide the output of sudo journalctl -u radvd on fresh boot when the advertisements aren't working?

Edit: I see there is not much difference other than the PID file warnings. They are present on my installations also, and after a reboot of one, advertisements were working without having to restart the service.
The other router they weren't working on is where there are several VLANs on a bond interface, it's too critical to restart to try to duplicate the issue.

The only thing I see is that radvd is now a native systemd service (/lib/systemd/system/radvd.service) but vyatta_gen_radvd.pl is starting it through /etc/init.d/radvd. On 1.2 there is no /lib/systemd/system/radvd.service so systemd uses the LSB script instead. On 1.3 both are present. Though that doesn't seem to be the issue as /etc/init.d/radvd is redirected to systemd.

So the problem went away until I upgraded to the latest rolling. VyOS 1.3-rolling-201912211124

As before. no RAs until manually restarting.

Output of journalctl:

-- Logs begin at Sat 2019-12-21 20:19:27 UTC, end at Sat 2019-12-21 20:26:02 UTC. --
Dec 21 20:19:48 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 21 20:19:48 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 21 20:19:48 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 21 20:19:48 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 21 20:19:48 route2 radvd[1747]: config file, /etc/radvd.conf, syntax ok
Dec 21 20:19:48 route2 radvd[1748]: version 2.17 started
Dec 21 20:19:48 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 21 20:19:50 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.

It seems like maybe something doesn't exist, or permissions aren't working right on a freshly upgraded system, until you manually do something to create it?

Maybe even just the action of sudo systemctl restart radvd.service is enough to fix it? It seems to maybe be the case

So I guess the key to duplication here is to:

  • have a system already configured for RAs
  • upgrade the system image to get the pristine filesystem

At that point it appears that RAs don’t work until you manually restart the service. After that I think RAs will work after a reboot.

All right, I can reproduce it now, thanks for the detailed report. I see what I can find out.

It sends it after a while, I was waiting around 5 minutes and captured 1 RA msg.
But it sends only on vlan 22, which is quite unusual since all vlans are setup and readable by radvd, at least when I check /proc/<pid> it has it setup.
After the restart it sends on all interfaces (Just sent a SIGHUP, so no systemd involved). Reboot fixes it then as well.

@kroy I think I found the issue, the script just called start every time when radvd was already running, please test with either tomorrows iso or: http://dev.packages.vyos.net/repositories/current/pool/main/v/vyatta-ipv6-rtradv/vyatta-ipv6-rtradv_0.38+vyos2+current1_all.deb

You should then see in messages then something like the below (restart after the first start):

Dec 22 01:01:19 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.20
Dec 22 01:01:19 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd start <---
Dec 22 01:01:19 vyos13 radvd[1353]: config file, /etc/radvd.conf, syntax ok
Dec 22 01:01:19 vyos13 radvd[1354]: version 2.17 started
Dec 22 01:01:19 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/opt/vyatta/sbin/vyatta_gen_radvd.pl --generate eth1.9
Dec 22 01:01:19 vyos13 sudo:     root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/etc/init.d/radvd restart <---
Dec 22 01:01:19 vyos13 systemd[1]: radvd.service: Main process exited, code=killed, status=15/TERM
hagbard changed the task status from Open to Needs testing.Dec 22 2019, 1:08 AM
hagbard triaged this task as Normal priority.
hagbard moved this task from Need Triage to In Progress on the VyOS 1.3 Equuleus board.

If this is the issue I would replace the init.d call with systemctl since in 1.3 init.d/radvd is redirected to systemd anyway (maybe the bugs are present in this redirection so it's best to completely avoid it).
1.2 and earlier would still need to call init.d as-is.

Restart could also be replaced with reload to save from unnecessary daemon restart on every interface change (reload sends SIGHUP). We would need to check that the daemon is running first though as if it crashed before reload wouldn't work.

@jjakob It's not really relevant if you SIGHUP or SIGKILL as RAs have no status, they are just send. I was looking into rewriting it anyway and port it into frr as frr sends RAs reliably as well. (https://phabricator.vyos.net/T1831) So the above is just a quick fix to get it working again with buster using the original logic.

Can confirm. Problem seems to be fixed now.

hagbard moved this task from In Progress to Finished on the VyOS 1.3 Equuleus board.

Rolling built on 201912301711 seems to have a different issue. Same config as above.

I believe the key is from the syslog message:

Dec 30 20:17:32 route2 systemd[1]: radvd.service: Failed with result 'start-limit-hit'.

I think because I have so many interfaces with announcements, it's being restarted too many times, and makes systemd angry.

Full logs follow

[ interfaces ethernet eth0 vif 22 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.22...
Starting radvd...
Starting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 9 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.9...
Re-starting radvd...
Restarting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 8 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.8...
Re-starting radvd...
Restarting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 3 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.3...
Re-starting radvd...
Restarting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 20 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.20...
Re-starting radvd...
Restarting radvd (via systemctl): radvd.service.

[ interfaces ethernet eth0 vif 21 ipv6 router-advert ]
Re-generating radvd config file for interface eth0.21...
Re-starting radvd...
Restarting radvd (via systemctl): radvd.serviceJob for radvd.service failed.
See "systemctl status radvd.service" and "journalctl -xe" for details.
 failed!

[[interfaces ethernet eth0 vif 21 ipv6 router-advert]] failed
Commit failed
Dec 30 20:17:30 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 30 20:17:30 route2 systemd[1]: message repeated 2 times: [ /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.]
Dec 30 20:17:30 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 30 20:17:30 route2 radvd[1786]: config file, /etc/radvd.conf, syntax ok
Dec 30 20:17:31 route2 radvd[1787]: version 2.17 started
Dec 30 20:17:31 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Stopping Router advertisement daemon for IPv6...
Dec 30 20:17:31 route2 systemd[1]: radvd.service: Succeeded.
Dec 30 20:17:31 route2 systemd[1]: Stopped Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 30 20:17:31 route2 radvd[1808]: config file, /etc/radvd.conf, syntax ok
Dec 30 20:17:31 route2 radvd[1809]: version 2.17 started
Dec 30 20:17:31 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Stopping Router advertisement daemon for IPv6...
Dec 30 20:17:31 route2 systemd[1]: radvd.service: Succeeded.
Dec 30 20:17:31 route2 systemd[1]: Stopped Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 30 20:17:31 route2 radvd[1831]: config file, /etc/radvd.conf, syntax ok
Dec 30 20:17:31 route2 radvd[1832]: version 2.17 started
Dec 30 20:17:31 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Stopping Router advertisement daemon for IPv6...
Dec 30 20:17:31 route2 systemd[1]: radvd.service: Succeeded.
Dec 30 20:17:31 route2 systemd[1]: Stopped Router advertisement daemon for IPv6.
Dec 30 20:17:31 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 30 20:17:32 route2 radvd[1853]: config file, /etc/radvd.conf, syntax ok
Dec 30 20:17:32 route2 radvd[1854]: version 2.17 started
Dec 30 20:17:32 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 30 20:17:32 route2 systemd[1]: Stopping Router advertisement daemon for IPv6...
Dec 30 20:17:32 route2 systemd[1]: radvd.service: Succeeded.
Dec 30 20:17:32 route2 systemd[1]: Stopped Router advertisement daemon for IPv6.
Dec 30 20:17:32 route2 systemd[1]: Starting Router advertisement daemon for IPv6...
Dec 30 20:17:32 route2 radvd[1875]: config file, /etc/radvd.conf, syntax ok
Dec 30 20:17:32 route2 radvd[1876]: version 2.17 started
Dec 30 20:17:32 route2 systemd[1]: Started Router advertisement daemon for IPv6.
Dec 30 20:17:32 route2 systemd[1]: Stopping Router advertisement daemon for IPv6...
Dec 30 20:17:32 route2 systemd[1]: radvd.service: Succeeded.
Dec 30 20:17:32 route2 systemd[1]: Stopped Router advertisement daemon for IPv6.
Dec 30 20:17:32 route2 systemd[1]: radvd.service: Start request repeated too quickly.
Dec 30 20:17:32 route2 systemd[1]: radvd.service: Failed with result 'start-limit-hit'.
Dec 30 20:17:32 route2 systemd[1]: Failed to start Router advertisement daemon for IPv6.
Dec 30 20:17:32 route2 systemd[1]: opt-vyatta-config-tmp-new_config_1291.mount: Succeeded.
Dec 30 20:17:33 route2 systemd[1]: opt-vyatta-config-tmp-new_config_1291.mount: Succeeded.
Dec 30 20:17:33 route2 vyos-config[1012]: Configuration error
Dec 30 20:17:33 route2 vyos-router[963]: Starting VyOS router: migrate rl-system firewall configure failed!
Dec 30 20:17:33 route2 systemd[1]: Reloading.
Dec 30 20:17:33 route2 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid → /run/radvd.pid; please update the unit file accordingly.
Dec 30 20:17:33 route2 systemd[1]: [email protected]: Current command vanished from the unit file, execution of the command list won't be resumed.

Hmm, I can't reproduce the issue, looks good when I test it with your config and reboot few times.

Jan  2 21:08:17 vyos13 systemd[1]: /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid â /run/radvd.pid; please update
 the unit file accordingly.
Jan  2 21:08:17 vyos13 systemd[1]: message repeated 2 times: [ /lib/systemd/system/radvd.service:11: PIDFile= references path below legacy directory /var/run/, updating /var/run/radvd.pid â /
run/radvd.pid; please update the unit file accordingly.]
Jan  2 21:08:17 vyos13 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  2 21:08:17 vyos13 radvd[1449]: config file, /etc/radvd.conf, syntax ok
Jan  2 21:08:17 vyos13 radvd[1450]: version 2.17 started
Jan  2 21:08:17 vyos13 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  2 21:08:17 vyos13 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  2 21:08:17 vyos13 systemd[1]: radvd.service: Succeeded.
Jan  2 21:08:17 vyos13 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  2 21:08:17 vyos13 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  2 21:08:17 vyos13 radvd[1471]: config file, /etc/radvd.conf, syntax ok
Jan  2 21:08:17 vyos13 radvd[1472]: version 2.17 started
Jan  2 21:08:17 vyos13 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 systemd[1]: radvd.service: Succeeded.
Jan  2 21:08:18 vyos13 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 radvd[1493]: config file, /etc/radvd.conf, syntax ok
Jan  2 21:08:18 vyos13 radvd[1494]: version 2.17 started
Jan  2 21:08:18 vyos13 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 systemd[1]: radvd.service: Succeeded.
Jan  2 21:08:18 vyos13 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 radvd[1516]: config file, /etc/radvd.conf, syntax ok
Jan  2 21:08:18 vyos13 radvd[1517]: version 2.17 started
Jan  2 21:08:18 vyos13 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 systemd[1]: radvd.service: Succeeded.
Jan  2 21:08:18 vyos13 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  2 21:08:18 vyos13 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  2 21:08:18 vyos13 radvd[1538]: config file, /etc/radvd.conf, syntax ok
Jan  2 21:08:18 vyos13 radvd[1539]: version 2.17 started
Jan  2 21:08:18 vyos13 systemd[1]: Started Router advertisement daemon for IPv6.

I'm going to change the node.def to reload if radvd is running already, not sure if it fixes that since the issue appears to be systemd related.
Also if you just disable a vif, radvd won't be restarted and has an invalid interface it tries to announce on, that's why I want to move it out of the interfaces and set it as it's own service.

hagbard changed the task status from Open to In progress.Jan 2 2020, 10:09 PM
hagbard moved this task from Finished to In Progress on the VyOS 1.3 Equuleus board.

Definitely confirmed as of yesterday's rolling. Still occurs on three different VMs.

Jan  3 15:26:22 route3 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  3 15:26:22 route3 radvd[1664]: config file, /etc/radvd.conf, syntax ok
Jan  3 15:26:23 route3 radvd[1666]: version 2.17 started
Jan  3 15:26:23 route3 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  3 15:26:23 route3 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  3 15:26:23 route3 systemd[1]: radvd.service: Succeeded.
Jan  3 15:26:23 route3 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  3 15:26:23 route3 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  3 15:26:23 route3 radvd[1687]: config file, /etc/radvd.conf, syntax ok
Jan  3 15:26:23 route3 radvd[1688]: version 2.17 started
Jan  3 15:26:23 route3 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  3 15:26:23 route3 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  3 15:26:23 route3 systemd[1]: radvd.service: Succeeded.
Jan  3 15:26:23 route3 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  3 15:26:23 route3 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  3 15:26:23 route3 radvd[1709]: config file, /etc/radvd.conf, syntax ok
Jan  3 15:26:24 route3 radvd[1715]: version 2.17 started
Jan  3 15:26:24 route3 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  3 15:26:24 route3 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  3 15:26:24 route3 systemd[1]: radvd.service: Succeeded.
Jan  3 15:26:24 route3 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  3 15:26:24 route3 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  3 15:26:24 route3 radvd[1736]: config file, /etc/radvd.conf, syntax ok
Jan  3 15:26:24 route3 radvd[1737]: version 2.17 started
Jan  3 15:26:24 route3 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  3 15:26:24 route3 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  3 15:26:24 route3 systemd[1]: radvd.service: Succeeded.
Jan  3 15:26:24 route3 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  3 15:26:24 route3 systemd[1]: Starting Router advertisement daemon for IPv6...
Jan  3 15:26:24 route3 radvd[1758]: config file, /etc/radvd.conf, syntax ok
Jan  3 15:26:25 route3 radvd[1760]: version 2.17 started
Jan  3 15:26:25 route3 systemd[1]: Started Router advertisement daemon for IPv6.
Jan  3 15:26:25 route3 systemd[1]: Stopping Router advertisement daemon for IPv6...
Jan  3 15:26:25 route3 systemd[1]: radvd.service: Succeeded.
Jan  3 15:26:25 route3 systemd[1]: Stopped Router advertisement daemon for IPv6.
Jan  3 15:26:25 route3 systemd[1]: radvd.service: Start request repeated too quickly.
Jan  3 15:26:25 route3 systemd[1]: radvd.service: Failed with result 'start-limit-hit'.
Jan  3 15:26:25 route3 systemd[1]: Failed to start Router advertisement daemon for IPv6.

I'll wait to test until the reload fix is merged

https://github.com/vyos/vyatta-ipv6-rtradv/commit/8b0a66edbc7d0eedb1918d86f4ec5cc8b10e051b

Let's see if it does the job, it's more a hack than a fix. The real problem is that you will have reloads for each interface which has router-advert configured during boot.
Systemd doesn't like the quick restarts during boot and limits that.

hagbard changed the task status from In progress to Needs testing.Jan 3 2020, 5:18 PM

Why not check if radv is running and sent a HUP signal instead?

killall -HUP radvd

HUP triggers a reread of the configuration.

That's what it does but using the init script.

[...]
 reload|force-reload)
        echo "Reloading $DESC configuration files."
        start-stop-daemon --stop --signal HUP --quiet --pidfile \
            $PIDFILE --exec $DAEMON
[...]

I actually suggested using reload/SIGHUP. The problem is the very rapid reloads sent by the vyos script to systemd. start-stop-daemon is handled by systemd in Debian Buster, in Jessie it was still handled by sysvinit so it didn't have any limits. I suppose it uses some default restart limits/timeouts that can otherwise be adjusted in unit/service files. I suppose it could be converted to a native systemd service so the limits can be set if there is a corresponding setting that would fix the issue. Otherwise it'd be better if we don't use systemd to send SIGHUP at all and send the signal direclty to the daemon w/ pid read from pid file. Or switch to using frr for RAs - what's the progress on that?

As I can remember there is no objection about FRR for RAs - its only the CLI structure.

Yup, https://phabricator.vyos.net/T1831 is pending. FRR RAs will fix the issue entirely or going with set service ipv6-ra interface... would fix that too regardless what daemin is being used at the backend which would also make it interchangeable.

@hagbard Confirmed your hack takes care of the issue.

@kroy thx for testing, glad it is working for you since I'm not really satified with it.

Hallo,

I ran into the same problem, here:

https://forum.vyos.io/t/radvd-will-not-start-on-about-200-vlans/4593

Can the fix be backported to crux?

Also problems can happen with the .pid file, when radvd exits, because the pid file will not be deleted automatically.

Mebus

hagbard reopened this task as Backport candidate.Jan 15 2020, 1:00 AM
hagbard changed Difficulty level from Unknown (require assessment) to Easy (less than an hour).
hagbard moved this task from Needs Triage to Backlog on the VyOS 1.2 Crux (VyOS 1.2.5) board.
hagbard moved this task from In Progress to Finished on the VyOS 1.3 Equuleus board.