<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Aptos;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Aptos",sans-serif;
        mso-ligatures:standardcontextual;}
span.EmailStyle18
        {mso-style-type:personal-compose;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#467886" vlink="#96607D" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi, everyone:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">We’re trying to make VPP work over Hyper-V Netvsc (DPDK 23.07).<o:p></o:p></p>
<p class="MsoNormal">We don’t have a DPDK implementing HW NIC, but Hyper-V’s paravirtualization of relatively cheap 1G NICs (tested with an HP server and an HP laptop, both fail), so we depend on Hyper-V/uio_hv_generic/netvsc for providing us with a fully virtualized
 DPDK implementation on top of which to place VPP.<o:p></o:p></p>
<p class="MsoNormal">The VPP process aborts after receiving some packets if we configure any worker thread (in contrast, the configuration with all VPP, control and user plane, in a single thread works).<o:p></o:p></p>
<p class="MsoNormal">This is the backtrace (deterministic, the same in both machines with different HW):<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>Thread 3 "vpp_wk_0" received signal SIGSEGV, Segmentation fault.<o:p></o:p></i></p>
<p class="MsoNormal"><i>[Switching to Thread 0x7fffa7d2a640 (LWP 1296)]<o:p></o:p></i></p>
<p class="MsoNormal"><i>0x00007fffb0190710 in rte_spinlock_trylock (sl=0x20) at ../src-dpdk/lib/eal/x86/include/rte_spinlock.h:63<o:p></o:p></i></p>
<p class="MsoNormal"><i>63              asm volatile (<o:p></o:p></i></p>
<p class="MsoNormal"><i>(gdb) bt<o:p></o:p></i></p>
<p class="MsoNormal"><i>#0  0x00007fffb0190710 in rte_spinlock_trylock (sl=0x20) at ../src-dpdk/lib/eal/x86/include/rte_spinlock.h:63<o:p></o:p></i></p>
<p class="MsoNormal"><i>#1  0x00007fffb01bd531 in hn_process_events (hv=0xac03a7bc0, queue_id=1, tx_limit=0) at ../src-dpdk/drivers/net/netvsc/hn_rxtx.c:1075<o:p></o:p></i></p>
<p class="MsoNormal"><i>#2  0x00007fffb01c55d3 in hn_xmit_pkts (ptxq=0xac08a5040, tx_pkts=0x7fffb7b32e00, nb_pkts=1) at ../src-dpdk/drivers/net/netvsc/hn_rxtx.c:1497<o:p></o:p></i></p>
<p class="MsoNormal"><i>#3  0x00007fffb0b5bbf2 in rte_eth_tx_burst (port_id=0, queue_id=1, tx_pkts=0x7fffb7b32e00, nb_pkts=1)<o:p></o:p></i></p>
<p class="MsoNormal"><i>    at /home/ubuntu/vpp/build-root/install-vpp_debug-native/external/include/rte_ethdev.h:6320<o:p></o:p></i></p>
<p class="MsoNormal"><i>#4  0x00007fffb0b57799 in tx_burst_vector_internal (vm=0x7fffb7af8b80, xd=0x7fffb7b37c40, mb=0x7fffb7b32e00, n_left=1, queue_id=1, is_shared=0 '\000')<o:p></o:p></i></p>
<p class="MsoNormal"><i>    at /home/ubuntu/vpp/src/plugins/dpdk/device/device.c:173<o:p></o:p></i></p>
<p class="MsoNormal"><i>#5  0x00007fffb0b56ac2 in dpdk_device_class_tx_fn_hsw (vm=0x7fffb7af8b80, node=0x7fffb7b54540, f=0x7fffb7bcfdc0)<o:p></o:p></i></p>
<p class="MsoNormal"><i>    at /home/ubuntu/vpp/src/plugins/dpdk/device/device.c:423<o:p></o:p></i></p>
<p class="MsoNormal"><i>#6  0x00007ffff7062a32 in dispatch_node (vm=0x7fffb7af8b80, node=0x7fffb7b54540, type=VLIB_NODE_TYPE_INTERNAL, dispatch_state=VLIB_NODE_STATE_POLLING,<o:p></o:p></i></p>
<p class="MsoNormal"><i>    frame=0x7fffb7bcfdc0, last_time_stamp=29933360537300) at /home/ubuntu/vpp/src/vlib/main.c:960<o:p></o:p></i></p>
<p class="MsoNormal"><i>#7  0x00007ffff7063452 in dispatch_pending_node (vm=0x7fffb7af8b80, pending_frame_index=9, last_time_stamp=29933360537300)<o:p></o:p></i></p>
<p class="MsoNormal"><i>    at /home/ubuntu/vpp/src/vlib/main.c:1119<o:p></o:p></i></p>
<p class="MsoNormal"><i>#8  0x00007ffff705e7d2 in vlib_main_or_worker_loop (vm=0x7fffb7af8b80, is_main=0) at /home/ubuntu/vpp/src/vlib/main.c:1608<o:p></o:p></i></p>
<p class="MsoNormal"><i>#9  0x00007ffff705ded7 in vlib_worker_loop (vm=0x7fffb7af8b80) at /home/ubuntu/vpp/src/vlib/main.c:1741<o:p></o:p></i></p>
<p class="MsoNormal"><i>#10 0x00007ffff709b050 in vlib_worker_thread_fn (arg=0x7fffb865d600) at /home/ubuntu/vpp/src/vlib/threads.c:1604<o:p></o:p></i></p>
<p class="MsoNormal"><i>#11 0x00007ffff7096236 in vlib_worker_thread_bootstrap_fn (arg=0x7fffb865d600) at /home/ubuntu/vpp/src/vlib/threads.c:418<o:p></o:p></i></p>
<p class="MsoNormal"><i>#12 0x00007ffff6c86ac3 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442<o:p></o:p></i></p>
<p class="MsoNormal"><i>#13 0x00007ffff6d18850 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81<o:p></o:p></i></p>
<p class="MsoNormal"><i>(gdb)</i><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Before posting on VPP lists, we want to confirm there aren’t any known issues with netvsc that may be causing this, or any advanced configuration or parameter we can try.<o:p></o:p></p>
<p class="MsoNormal">Our current configuration is pretty simple.<o:p></o:p></p>
<p class="MsoNormal">The problem can be easily reproduced on an Ubuntu 22.04 VM over Hyper-V (Hyper-V Server 2019 or Windows 11), with VPP 23.10/DPDK 23.07, two interfaces, 1 worker thread, DPDK and ping plugins enabled, and sending a bunch of ICMP Echo Requests
 on a loop from the host machine to one of the VPP interfaces.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thank you very much.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Regards,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">José Manuel<o:p></o:p></p>
</div>
</body>
</html>