[ovs-discuss] Packet drop issue with Tap Poll Mode Driver

Nobuhiro Miki nmiki at yahoo-corp.jp
Fri May 21 07:04:42 UTC 2021


Hi all,

I have experienced packet loss when using DPDK Virtual Devices
and have questions about troubleshooting it. The documentation [1] says
"Not all DPDK virtual PMD drivers have been tested and verified to work."
Does anyone know the current support status for Tap Poll Mode Driver [2] ?
Or is there a mistake in my procedure? Below are instructions on how to
reproduce this issue. For reference, I found a presentation [3] at ovscon2019
that talks about using tap interface with OvS-DPDK.

Environment
-----------

- Ubuntu 20.04 LTS on Virtual Machine (QEMU/KVM)
- Ubuntu 20.04 LTS on Bare Metal Machine

Diagram
-------

tap1 (Tap Poll Mode Driver, source of ping6) --- br0 (datapath_type=netdev) --- tap2 (Tap Poll Mode Driver, destination of ping6)

Reproduction Steps
------------------

# https://ubuntu.com/server/docs/openvswitch-dpdk
sudo apt install -y openvswitch-switch-dpdk
sudo update-alternatives --set ovs-vswitchd /usr/lib/openvswitch-switch-dpdk/ovs-vswitchd-dpdk
sudo ovs-vsctl set Open_vSwitch . "other_config:dpdk-init=true"
sudo ovs-vsctl set Open_vSwitch . "other_config:dpdk-lcore-mask=0x1"
sudo ovs-vsctl set Open_vSwitch . "other_config:dpdk-alloc-mem=2048"
sudo service openvswitch-switch restart

sudo /usr/share/openvswitch/scripts/ovs-ctl version
# ovsdb-server (Open vSwitch) 2.13.3
# ovs-vswitchd (Open vSwitch) 2.13.3
# DPDK 19.11.7

sudo ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev
sudo ovs-vsctl add-port br0 myeth0 -- set Interface myeth0 type=dpdk options:dpdk-devargs="net_tap0,iface=tap1"
sudo ovs-vsctl add-port br0 myeth1 -- set Interface myeth1 type=dpdk options:dpdk-devargs="net_tap1,iface=tap2"

sudo ovs-ofctl del-flows br0
sudo ovs-ofctl add-flow br0 priority=10,in_port=myeth1,actions:output=myeth0
sudo ovs-ofctl add-flow br0 priority=10,in_port=myeth0,actions:output=myeth1

sudo ip netns add ns1
sudo ip netns add ns2

sudo ip link set tap1 netns ns1
sudo ip link set tap2 netns ns2

sudo ip netns exec ns1 ip link set tap1 up
sudo ip netns exec ns2 ip link set tap2 up

sudo ip netns exec ns1 ip link set lo up
sudo ip netns exec ns2 ip link set lo up

# ping6 from tap1 to tap2
# Only one ping succeeds every few times. In some cases, there is no response at all.
sudo ip netns exec ns1 ping6 $ipv6_address_of_tap2 -I tap1
# 64 bytes from fe80::8433:52ff:fe29:f20a%tap1: icmp_seq=1 ttl=64 time=0.223 ms
# 64 bytes from fe80::8433:52ff:fe29:f20a%tap1: icmp_seq=5 ttl=64 time=0.321 ms
# 64 bytes from fe80::8433:52ff:fe29:f20a%tap1: icmp_seq=9 ttl=64 time=0.291 ms
# 64 bytes from fe80::8433:52ff:fe29:f20a%tap1: icmp_seq=13 ttl=64 time=0.281 ms
# 64 bytes from fe80::8433:52ff:fe29:f20a%tap1: icmp_seq=17 ttl=64 time=0.284 ms

sudo ovs-vsctl get Open_vSwitch . dpdk_initialized
# true

sudo ovs-appctl dpif-netdev/pmd-rxq-show
# pmd thread numa_id 0 core_id 5:
#   isolated : false
#   port: myeth0            queue-id:  0 (enabled)   pmd usage:  0 %
#   port: myeth1            queue-id:  0 (enabled)   pmd usage:  0 %

[1]: https://docs.openvswitch.org/en/latest/topics/dpdk/vdev/
[2]: https://doc.dpdk.org/guides/nics/tap.html
[3]: https://www.openvswitch.org/support/ovscon2019/day1/1101-Utilizing%20DPDK%20Virtual%20Devices%20in%20OVS.pdf

Best Regards,
Nobuhiro Miki


More information about the discuss mailing list