Page MenuHomeVyOS Platform

If VPP crashes, the system loads without hugepages
Closed, ResolvedPublicBUG

Description

If VPP crashes, the system loads without hugepages

Initial config:

set interfaces ethernet eth1 address '192.0.2.1/30'
set interfaces ethernet eth1 description 'LAN'
set interfaces ethernet eth1 vif 11 address '10.0.11.1/30'
set interfaces ethernet eth1 vif 12 address '10.0.12.1/30'
set interfaces ethernet eth1 vif 13 address '10.0.13.1/30'
set interfaces ethernet eth1 vif 14 address '10.0.14.1/30'
set interfaces ethernet eth1 vif 15 address '10.0.15.1/30'
set interfaces ethernet eth1 vif 16 address '10.0.16.1/30'
set interfaces ethernet eth1 vif 17 address '10.0.17.1/30'
set interfaces ethernet eth1 vif 18 address '10.0.18.1/30'

set system option kernel disable-mitigations
set system option kernel memory hugepage-size 2M hugepage-count '1650'

set vpp settings interface eth1 dpdk-options promisc
set vpp settings interface eth1 driver 'dpdk'
set vpp settings lcp netlink batch-delay-ms '10'
set vpp settings lcp netlink batch-size '1024'
set vpp settings lcp netlink rx-buffer-size '8388608'
set vpp settings memory main-heap-page-size '2M'
set vpp settings memory main-heap-size '3G'
set vpp settings statseg size '128M'
set vpp settings unix poll-sleep-usec '222'

All works fine and we see required kernel options:

vyos@r14:~$ cat /proc/cmdline 
BOOT_IMAGE=/boot/2025.07.22-0021-rolling/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/2025.07.22-0021-rolling mitigations=off hugepagesz=2M hugepages=1650 console=tty0
vyos@r14:~$

Crash VPP, I got 8 Full BGP tables, but could be produced via kill (several times)

vyos@r14:~$ sudo kill -9 `pidof vpp`
vyos@r14:~$ 
vyos@r14:~$ sudo pidof vpp
vyos@r14:~$ sudo pidof vpp
vyos@r14:~$ 
vyos@r14:~$ 
vyos@r14:~$ sudo pidof vppConnection to 192.168.122.14 closed by remote host.
Connection to 192.168.122.14 closed.
sever@sever:~$

Reboot the system and it loads without VPP and kernel-options hugepages in /proc/cmdline

vyos@r14:~$ cat /proc/cmdline 
BOOT_IMAGE=/boot/2025.07.22-0021-rolling/vmlinuz boot=live rootdelay=5 noautologin net.ifnames=0 biosdevname=0 vyos-union=/boot/2025.07.22-0021-rolling console=tty0
vyos@r14:~$

Check after the crash after reboot:

vyos@r14:~$ conf
WARNING: There was a config error on boot: saving the configuration now could overwrite data.
You may want to check and reload the boot config
[edit]
vyos@r14# load 
Load complete. Use 'commit' to make changes effective.
[edit]
vyos@r14# compare 
+ vpp {
+     settings {
+         interface eth1 {
+             dpdk-options {
+                 promisc
+             }
+             driver "dpdk"
+         }
+         lcp {
+             netlink {
+                 batch-delay-ms "10"
+                 batch-size "1024"
+                 rx-buffer-size "8388608"
+             }
+         }
+         memory {
+             main-heap-page-size "2M"
+             main-heap-size "3G"
+         }
+         statseg {
+             size "128M"
+         }
+         unix {
+             poll-sleep-usec "222"
+         }
+     }
+ }

[edit]
vyos@r14# commit
[ vpp ]
Not enough free hugepage memory to start VPP: available: 0.0 GB,
required: 3.2 GB. Please add kernel memory options for HugePages and
reboot
[[vpp]] failed
Commit failed
[edit]
vyos@r14#

If we reboot again, the system will load with VPP and kernel options.

Details

Version
VyOS 2025.07.22-0021-rolling
Is it a breaking change?
Perfectly compatible
Issue type
Bug (incorrect behavior)

Event Timeline

Viacheslav triaged this task as High priority.

With the above fix, the configuration above will be preserved after a crash, for example, the grub boot settings such as hugepages.

A check can be run as above, however, note that with the bug fixed in the vpp-failure-handler script, VPP will successfully restart. One can force a crash by repeated kill signals in quick succession, but this is artificial, not allowing for proper initialization. Allowing proper spacing, restart appears robust. Even on forcing an artificial crash, the configuration with grub boot settings remain intact.

Viacheslav moved this task from Open to Finished on the VyOS 1.5 Circinus (1.5-stream-2025-Q3) board.
Viacheslav moved this task from Need Triage to Completed on the VyOS Rolling board.
dmbaturin changed Is it a breaking change? from Unspecified (possibly destroys the router) to Perfectly compatible.