Description
After adding aronud 10k of static routes, 40k in total the VyOS took several hours to finisht the commit BUT the main issue is after the commit finish the interfaces were not loaded properly.
Observed behaviour
Commits grew to about 2 hours, and save to about 2 hours (known config-size scaling: T5388/T6302).
- After a reboot, the console shows Waiting for NICs to settle down … Timed out for waiting the udev queue being empty … settled in 120sec. failed!
- The physical NICs remain on temporary names e2–e9. Only lo and dum0 appear in show interfaces.
- The boot config load ends with “Configuration error” after 4h 17min. The ethernet and bond0 sections fail because eth0–eth7 don’t exist, and 4. everything that depends on them (addressing, OSPF, MPLS, BGP) fails as a result.
Expected behaviour
NICs are renamed to their hw-id-bound ethX names regardless of config size, and the boot config applies to existing interfaces.
Fix
The fix exists in mainline. Commit 22cfee1 (T3871, 2026-08-08) does two things. First, vyos_net_name no longer imports ConfigTree; it assigns a provisional name only, and its docstring says it does not consult hw-id. Second, a new one-shot vyos-net-name-resolve.service (vyos-net-name-resolve.py, 90 s timeout), started by vyos-router once config.boot is available, reads the config once and applies all hw-id bindings. Test coverage: src/tests/test_net_name_resolve.py, plus make testifname in vyos-build. The commit was motivated by naming reliability on systems with NICs from several vendors, not by config size.