Following up with completely clean logs, after rebuilding my lab VM from scratch. The issue remains entirely reproducible on a naked install with the latest rolling image. On initial boot, tc filter show dev eth0 parent ffff: returns completely blank, and CAKE on ifb0 sits at 0 packets.
The logs suggest a distinct initialisation timing window between the configuration engine and the network driver link state. vyos-configd executes the QoS and interface scripts and reports final configuration success by system time 15:02:16:
Jul 7 15:02:14 vyos-lab vyos-configd[850]: scripts_called: ['system_host-name', 'system_host-name', 'system_console', 'system_timezone', 'nat', 'interfaces_loopback_lo', 'interfaces_input_ifb0', 'interfaces_ethernet_eth0', 'interfaces_ethernet_eth1', 'system_config-management', 'system_syslog', 'system_host-name', 'system_host-name', 'system_host-name', 'system_host-name', 'system_login', 'firewall', 'qos', 'service_ntp', 'service_dhcp-server', 'service_dns_forwarding', 'service_ssh', 'system_option']
...
Jul 7 15:02:16 vyos-lab vyos-config[1045]: Configuration success
However, checking dmesg shows that the physical interface carrier transition doesnât complete until 32.16 seconds into the kernel boot sequence:
[ 1.958012] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:3a:fd:e5
[ 1.958569] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
[ 2.347954] e1000 0000:02:01.0 e2: renamed from eth0
[ 19.640377] e1000 0000:02:01.0 eth0: renamed from e2
[ 30.130942] 8021q: adding VLAN 0 to HW filter on device eth0
[ 32.164813] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
Because the configuration engine processes the qos ruleset before the dynamic network interface link layer has matured to an active link up state, the redirection hook then seemingly fails to attach to the kernel table during boot.
Here are the complete readouts from this run as requested. I hope it helps pin down the issue:
vyos@vyos-lab:~$ sudo dmesg | grep -i eth0
[ 1.958012] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:3a:fd:e5
[ 1.958569] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
[ 2.347954] e1000 0000:02:01.0 e2: renamed from eth0
[ 19.640377] e1000 0000:02:01.0 eth0: renamed from e2
[ 30.130942] 8021q: adding VLAN 0 to HW filter on device eth0
[ 32.164813] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
vyos@vyos-lab:~$ sudo dmesg | grep -i ifb0
vyos@vyos-lab:~$
vyos@vyos-lab:~$ tc filter show dev eth0 parent ffff:
vyos@vyos-lab:~$
vyos@vyos-lab:~$ tail -n 100 /var/log/messages
Jul 7 15:02:12 vyos-lab dbus-daemon[1007]: [system] Successfully activated service 'org.freedesktop.PolicyKit1'
Jul 7 15:02:12 vyos-lab systemd[1]: Started Authorization Manager.
Jul 7 15:02:12 vyos-lab polkitd[2967]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Jul 7 15:02:12 vyos-lab systemd[1]: Started Dynamic System Tuning Daemon.
Jul 7 15:02:12 vyos-lab dbus-daemon[1007]: [system] Activating via systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service' requested by ':1.21' (uid=0 pid=2717 comm="/usr/bin/python3 -Es /usr/sbin/tuned -l -P")
Jul 7 15:02:12 vyos-lab systemd[1]: Starting Authorization Manager...
Jul 7 15:02:12 vyos-lab polkitd[2967]: Started polkitd version 122
Jul 7 15:02:12 vyos-lab polkitd[2967]: Loading rules from directory /etc/polkit-1/rules.d
Jul 7 15:02:12 vyos-lab polkitd[2967]: Loading rules from directory /usr/share/polkit-1/rules.d
Jul 7 15:02:12 vyos-lab polkitd[2967]: Finished loading, compiling and executing 2 rules
Jul 7 15:02:12 vyos-lab dbus-daemon[1007]: [system] Successfully activated service 'org.freedesktop.PolicyKit1'
Jul 7 15:02:12 vyos-lab systemd[1]: Started Authorization Manager.
Jul 7 15:02:12 vyos-lab polkitd[2967]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
Jul 7 15:02:12 vyos-lab systemd[1]: Started Dynamic System Tuning Daemon.
Jul 7 15:02:13 vyos-lab systemd[1]: Reloading.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:4 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:6 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:9 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:11 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab vyos-configd[850]: [system_option]
Jul 7 15:02:14 vyos-lab vyos-configd[850]: scripts_called: ['system_host-name', 'system_host-name', 'system_console', 'system_timezone', 'nat', 'interfaces_loopback_lo', 'interfaces_input_ifb0', 'interfaces_ethernet_eth0', 'interfaces_ethernet_eth1', 'system_config-management', 'system_syslog', 'system_host-name', 'system_host-name', 'system_host-name', 'system_host-name', 'system_login', 'firewall', 'qos', 'service_ntp', 'service_dhcp-server', 'service_dns_forwarding', 'service_ssh', 'system_option']
Jul 7 15:02:13 vyos-lab systemd[1]: Reloading.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:4 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:6 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:9 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab systemd-udevd[858]: /etc/udev/rules.d/40-usb_modeswitch.rules:11 ATTR key takes '==', '!=', or '=' operator, assuming '='.
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
Jul 7 15:02:14 vyos-lab vyos-configd[850]: [system_option]
Jul 7 15:02:14 vyos-lab vyos-configd[850]: scripts_called: ['system_host-name', 'system_host-name', 'system_console', 'system_timezone', 'nat', 'interfaces_loopback_lo', 'interfaces_input_ifb0', 'interfaces_ethernet_eth0', 'interfaces_ethernet_eth1', 'system_config-management', 'system_syslog', 'system_host-name', 'system_host-name', 'system_host-name', 'system_host-name', 'system_login', 'firewall', 'qos', 'service_ntp', 'service_dhcp-server', 'service_dns_forwarding', 'service_ssh', 'system_option']
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [WFP93-1D146] configuration write completed with exit code 0
Jul 7 15:02:14 vyos-lab vyos-configd[850]: Sending reply: SUCCESS with output
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [VTVCM-Y2NW3] Configuration Read in Took: 00:00:00
Jul 7 15:02:14 vyos-lab watchfrr[1430]: [WFP93-1D146] configuration write completed with exit code 0
Jul 7 15:02:14 vyos-lab vyos-configd[850]: Sending reply: SUCCESS with output
Jul 7 15:02:14 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_1575.mount: Deactivated successfully.
Jul 7 15:02:14 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_1575.mount: Deactivated successfully.
Jul 7 15:02:15 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface pim6reg has no usable IPv4 addresses configured
Jul 7 15:02:15 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface ifb0 has no usable IPv4 addresses configured
Jul 7 15:02:15 vyos-lab commit: Successful change to active configuration by user root on unknown
Jul 7 15:02:15 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_1575.mount: Deactivated successfully.
Jul 7 15:02:15 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface pim6reg has no usable IPv4 addresses configured
Jul 7 15:02:15 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface ifb0 has no usable IPv4 addresses configured
Jul 7 15:02:15 vyos-lab commit[3141]: Successful change to active configuration by user root on unknown
Jul 7 15:02:15 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_1575.mount: Deactivated successfully.
Jul 7 15:02:15 vyos-lab vyos-router[1041]: migrate activate configure.
Jul 7 15:02:15 vyos-lab systemd[1]: Reloading.
Jul 7 15:02:15 vyos-lab vyos-router[1041]: migrate activate configure.
Jul 7 15:02:15 vyos-lab systemd[1]: Reloading.
Jul 7 15:02:16 vyos-lab systemd[1]: Started VyOS netlink daemon.
Jul 7 15:02:16 vyos-lab systemd[1]: Started VyOS netlink daemon.
Jul 7 15:02:16 vyos-lab vyos-netlinkd[3181]: VyOS Netlink listener daemon started.
Jul 7 15:02:16 vyos-lab vyos-netlinkd[3181]: IPRoute.bind() using link and address RTNL subscriptions
Jul 7 15:02:16 vyos-lab vyos-config[1045]: Configuration success
Jul 7 15:02:16 vyos-lab vyos-netlinkd[3181]: VyOS Netlink listener daemon started.
Jul 7 15:02:16 vyos-lab vyos-netlinkd[3181]: IPRoute.bind() using link and address RTNL subscriptions
Jul 7 15:02:16 vyos-lab vyos-config[1045]: Configuration success
Jul 7 15:02:17 vyos-lab sshd[3017]: Accepted password for vyos from 172.16.32.200 port 58098 ssh2
Jul 7 15:02:17 vyos-lab sshd[3017]: pam_unix(sshd:session): session opened for user vyos(uid=1002) by (uid=0)
Jul 7 15:02:17 vyos-lab systemd-logind[1011]: New session 1 of user vyos.
Jul 7 15:02:17 vyos-lab systemd[1]: Created slice User Slice of UID 1002.
Jul 7 15:02:17 vyos-lab systemd[1]: Starting User Runtime Directory /run/user/1002...
Jul 7 15:02:17 vyos-lab systemd[1]: Finished User Runtime Directory /run/user/1002.
Jul 7 15:02:17 vyos-lab systemd[1]: Starting User Manager for UID 1002...
Jul 7 15:02:17 vyos-lab (systemd): pam_unix(systemd-user:session): session opened for user vyos(uid=1002) by (uid=0)
Jul 7 15:02:17 vyos-lab sshd[3017]: Accepted password for vyos from 172.16.32.200 port 58098 ssh2
Jul 7 15:02:17 vyos-lab sshd[3017]: pam_unix(sshd:session): session opened for user vyos(uid=1002) by (uid=0)
Jul 7 15:02:18 vyos-lab systemd[3187]: Queued start job for default target default.target.
Jul 7 15:02:17 vyos-lab systemd-logind[1011]: New session 1 of user vyos.
Jul 7 15:02:17 vyos-lab systemd[1]: Created slice User Slice of UID 1002.
Jul 7 15:02:17 vyos-lab systemd[1]: Starting User Runtime Directory /run/user/1002...
Jul 7 15:02:17 vyos-lab systemd[1]: Finished User Runtime Directory /run/user/1002.
Jul 7 15:02:17 vyos-lab systemd[1]: Starting User Manager for UID 1002...
Jul 7 15:02:17 vyos-lab (systemd)[3187]: pam_unix(systemd-user:session): session opened for user vyos(uid=1002) by (uid=0)
Jul 7 15:02:18 vyos-lab rsyslogd: imjournal: journal files changed, reloading... [v8.2302.0 try [https://www.rsyslog.com/e/0](https://www.rsyslog.com/e/0) ]
Jul 7 15:02:18 vyos-lab systemd[3187]: Queued start job for default target default.target.
Jul 7 15:02:18 vyos-lab rsyslogd[2037]: imjournal: journal files changed, reloading... [v8.2302.0 try [https://www.rsyslog.com/e/0](https://www.rsyslog.com/e/0) ]
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target paths.target - Paths.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target sockets.target - Sockets.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target timers.target - Timers.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target basic.target - Basic System.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target default.target - Main User Target.
Jul 7 15:02:18 vyos-lab systemd[3187]: Startup finished in 115ms.
Jul 7 15:02:18 vyos-lab systemd[1]: Started User Manager for UID 1002.
Jul 7 15:02:18 vyos-lab systemd[1]: Started Session 1 of User vyos.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target paths.target - Paths.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target sockets.target - Sockets.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target timers.target - Timers.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target basic.target - Basic System.
Jul 7 15:02:18 vyos-lab systemd[3187]: Reached target default.target - Main User Target.
Jul 7 15:02:18 vyos-lab systemd[3187]: Startup finished in 115ms.
Jul 7 15:02:18 vyos-lab systemd[1]: Started User Manager for UID 1002.
Jul 7 15:02:18 vyos-lab systemd[1]: Started Session 1 of User vyos.
Jul 7 15:02:18 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_3209.mount: Deactivated successfully.
Jul 7 15:02:18 vyos-lab systemd[1]: opt-vyatta-config-tmp-new_config_3209.mount: Deactivated successfully.
Jul 7 15:02:20 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface pim6reg has no usable IPv4 addresses configured
Jul 7 15:02:20 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface ifb0 has no usable IPv4 addresses configured
Jul 7 15:02:20 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface pim6reg has no usable IPv4 addresses configured
Jul 7 15:02:20 vyos-lab kea-dhcp4[2575]: WARN DHCPSRV_OPEN_SOCKET_FAIL failed to open socket: the interface ifb0 has no usable IPv4 addresses configured
As an aside, scripting the deletion and re-adding of ifb0 does indeed bring things back into line and allow CAKE to work. Itâs a viable work-around for now on Stream 2026.03 or Rolling, but thereâs clearly an underlying mechanism/race condition causing the problem to begin with. If I can provide anything else please donât hesitate to ask. Cheers.