The following article guides you on what to check if the services are constantly restarting with coredumps with DPDK driver errors. The following coredumps are seen in the OpenStack-based VM due to the MTU issue.


If the MTU on the interface is negotiated less than the Default 1500, then you might see the issue.


Coredump Samples:


Sample1


#0  0x00007f8a5b3d8817 in raise () from /lib/x86_64-linux-gnu/libpthread.so.0                                                   

#1  0x000055f3613f551d in vsm_sa_sigaction (signum=6, siginfo=<optimized out>, context=<optimized out>) at ../usr/sbin/vsm/vsm.c:3006      

#2  <signal handler called>                                                                                                                

#3  0x00007f8a57cbfe87 in raise () from /lib/x86_64-linux-gnu/libc.so.6                                                                   

#4  0x00007f8a57cc17f1 in abort () from /lib/x86_64-linux-gnu/libc.so.6                                                                   

#5  0x00007f8a57cb13fa in ?? () from /lib/x86_64-linux-gnu/libc.so.6                                                                       

#6  0x00007f8a57cb1472 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6                                                 

#7  0x000055f36137f572 in vsm_init_local_cpu_for_desc (desc=desc@entry=0x7f8a4dc3cb40) at ../usr/sbin/vsm/vsm_common_intf.c:4542           

#8  0x000055f361398630 in vsm_interface_fill_inf_desc (vsn_slot=0 '\000') at ../usr/sbin/vsm/vsm_common_intf.c:4742                        

#9 vsm_interface_subsys_init (evbase=<optimized out>, vcn_ip=<optimized out>, vsn_slot=vsn_slot@entry=0 '\000') at ../usr/sbin/vsm/vsm_com

mon_intf.c:9608  

#10 0x000055f3613fc9be in vsm_post_init () at ../usr/sbin/vsm/vsm.c:4509 

#11 0x000055f361400534 in vsm_main (argc=<optimized out>, argv=<optimized out>) at ../usr/sbin/vsm/vsm.c:3595  

#12 0x00007f8a57ca2c87 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6  

#13 0x000055f36137327a in _start ()  

[ok][2025-10-09 11:50:03]  


Sample2


#0  0x00007f4308fa4817 in raise () from /lib/x86_64-linux-gnu/libpthread.so.0 

[Current thread is 1 (Thread 0x7f42fc1e4700 (LWP 7418))] 

#0  0x00007f4308fa4817 in raise () from /lib/x86_64-linux-gnu/libpthread.so.0                                          

#1  0x000055cdf3c3b51d in vsm_sa_sigaction (signum=11, siginfo=<optimized out>, context=<optimized out>) at ../usr/sbin/vsm/vsm.c:3006     

#2  <signal handler called>                                                                                                                

#3 virtio_dev_hwstats_get (dev=0x55cdfc3f8300 <rte_eth_devices+16512>, stats=0x7ffe0079b2c0) at ../usr/lib/DPDK/drivers/net/virtio/virtio_ethdev.c:3142  

#4 0x000055cdf603839a in rte_eth_stats_get (port_id=port_id@entry=1,stats=stats@entry=0x7ffe0079b2c0) at ../usr/lib/DPDK/lib/ethdev/rte_ethdev.c:2869 

#5 0x000055cdf3c07e7c in vsm_dpdk_get_stats (port=1, stats=stats@entry=0x0, hw_stats=hw_stats@entry=0x0) at ../usr/sbin/vsm/vsm_dpdk_intf.c:304  

#6  0x000055cdf3bb9e61 in vsm_get_poller_if_load (if_load=0x7ffe0079b8f0, tindex=0, hdl=0x7f42fb871c00) at ../usr/sbin/vsm/vsm_load.c:951  

#7  vsm_calc_pollerthd_load (hdl=hdl@entry=0x7f42fb871c00) at ../usr/sbin/vsm/vsm_load.c:990                       

#8  0x000055cdf3bbac3d in vsm_calc_thd_load (hdl=0x7f42fb871c00) at ../usr/sbin/vsm/vsm_load.c:1284   

#9  vsm_get_loadinfo (cur_load=cur_load@entry=0x7ffe0079bb40) at ../usr/sbin/vsm/vsm_load.c:1415              

#10 0x000055cdf3bbbef8 in vsm_loadinfo_construct (hdl=0x7f42fb871c00) at ../usr/sbin/vsm/vsm_load.c:722 

#11 0x000055cdf3c439e7 in vsm_post_init () at ../usr/sbin/vsm/vsm.c:5064 

#12 0x000055cdf3c46534 in vsm_main (argc=<optimized out>, argv=<optimized out>) at ../usr/sbin/vsm/vsm.c:3595  

#13 0x00007f430586ec87 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6  

#14 0x000055cdf3bb927a in _start ()



Tshooting:


Make sure the interface driver is virtio


[admin@versa-flexvnf: ~]  $ sudo ethtool -i eth0

driver: virtio_net

version: 1.0.0

firmware-version: 

expansion-rom-version: 

bus-info: 0000:00:03.0

supports-statistics: yes

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no


[admin@versa-flexvnf: ~]  $ sudo ethtool -i eth1

[admin@versa-flexvnf: ~]  $ sudo ethtool -i eth2

[admin@versa-flexvnf: ~]  $ sudo ethtool -i eth3


[admin@versa-flexvnf: ~] $ sudo cat /var/run/vinterfaces 

52:54:0:a7:f6:94        0000:00:03.0    eth0    3       virtio-pci

52:54:0:ae:5:e1 0000:00:04.0    eth1    3       virtio-pci

52:54:0:2a:e8:ce        0000:00:05.0    eth2    3       virtio-pci

52:54:0:fb:d6:56        0000:00:06.0    eth3    3       virtio-pci

52:54:0:e9:37:1a        0000:00:07.0    eth4    3       virtio-pci

5a:cf:74:d:ed:89        0000:00:00.0    dspt_0  0       kni

ba:a:f9:26:c6:b0        0000:00:00.0    dfex_1  0       kni


[admin@versa-flexvnf: ~] $ lspci | grep Ethernet

00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device

00:04.0 Ethernet controller: Red Hat, Inc. Virtio network device

00:05.0 Ethernet controller: Red Hat, Inc. Virtio network device

00:06.0 Ethernet controller: Red Hat, Inc. Virtio network device

00:07.0 Ethernet controller: Red Hat, Inc. Virtio network device



Check for the following errors in the versa-service.logs before the crash


MTU (1500) > device max MTU (1450) for port_id 1
2025-10-14 11:16:32.982 ERROR [0] vsm_post_thrm_port_init:1228 Cannot configure device: err=-22, port=1
2025-10-14 11:16:32.982 NOTIC [0] vs_mark_interface_failsafe:5146 Marking inteface vni-0/1 port 1 as failsafe(non-operational)
MTU (1500) > device max MTU (1450) for port_id 2
2025-10-14 11:16:32.982 ERROR [0] vsm_post_thrm_port_init:1228 Cannot configure device: err=-22, port=2
2025-10-14 11:16:32.982 NOTIC [0] vs_mark_interface_failsafe:5146 Marking inteface vni-0/2 port 2 as failsafe(non-operational)


[admin@versa-flexvnf: ~] $ sudo ifconfig eth0   —— Similarly check MTU for other Interfaces as well
[sudo] password for admin: 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.101.118  netmask 255.255.255.0  broadcast 192.168.101.255
        inet6 fe80::f816:3eff:fe1b:3c4b  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:1b:3c:4b  txqueuelen 1000  (Ethernet)
        RX packets 1271  bytes 113314 (113.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1100  bytes 240038 (240.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



The issue is related to the lower MTU set in the OpenStack platform for these virtio interfaces and we have accommodated these issues regarding MTU through our code. This fix allows us to inherit the configured MTU instead of the default 1500.


Ref Article:

Why OpenStack is setting 1450 and found a couple of articles and documents here and how to set a higher MTU through the neutron config file.

https://docs.openstack.org/kilo/config-reference/content/networking-options-plugins-ml2.html

https://platform9.com/docs/openstack-docs/openstack/managing-mtu-with-neutron


PR: 126218

Description: For the virtio interface, readjust the max-mtu during dev-configure based on the negotiated mtu.

Fix: Available in June 2025, 22.1.4 release and newer releases.