-
Bug
-
Resolution: Unresolved
-
Undefined
-
None
-
None
-
None
-
False
-
-
False
-
rhel-9
-
rhel-sst-network-fastdatapath
-
-
-
ssg_networking
TSO (over tunnel) packets get dropped if recirculated.
This can be reproduced with (in preparation) OVS 3.5.
Reproducer:
- system A
# ip -4 a a 172.16.10.1/24 dev ens1f0np0 # ip l set ens1f0np0 up # ip link add tunnel0 type geneve id 0 remote 172.16.10.2 # ip -4 a a 172.16.20.1/24 dev tunnel0 # ip l set tunnel0 up # iperf3 -s
- system B (already set up for OVS-DPDK, iow hugepages, isolation in place, dpdk-init=true, pmd threads configured)
# ovs-vsctl set o . other_config:userspace-tso-enable=true # ovs-vsctl add-br br0 -- set bridge br0 datapath_type=netdev # ovs-vsctl add-port br0 dpdk0 -- set interface dpdk0 type=dpdk options:dpdk-devargs=0000:3b:00.0 # ip -4 a a 172.16.10.2/24 dev br0 # ip l set br0 up # ovs-vsctl add-br br-int -- set bridge br-int datapath_type=netdev # ovs-vsctl add-port br-int vhost0 -- set interface vhost0 type=dpdkvhostuserclient options:vhost-server-path="/var/run/openvswitch/vhost_sockets/vhost0" # ovs-vsctl add-port br-int tunnel0 -- set interface tunnel0 type=geneve options:remote_ip=172.16.10.1
- setup a guest on system B, plugged on /var/run/openvswitch/vhost_sockets/vhost0
# nmcli device set ens9 managed no # ip l set ens9 mtu 1400 # ip -4 a a 172.16.20.20/24 dev ens9 # iperf3 -c 172.16.20.1 Connecting to host 172.16.20.1, port 5201 [ 5] local 172.16.20.20 port 53996 connected to 172.16.20.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 1.18 GBytes 10.2 Gbits/sec 5 787 KBytes [ 5] 1.00-2.00 sec 1.18 GBytes 10.1 Gbits/sec 37 640 KBytes [ 5] 2.00-3.00 sec 1.18 GBytes 10.1 Gbits/sec 23 586 KBytes ...
- then add a openflow rule to force recirculation of encapsulated packets:
# ovs-ofctl add-group br0 group_id=1234,type=select,selection_method=dp_hash,bucket=weight=1,output:dpdk0 # ovs-ofctl del-flows br0 # ovs-ofctl add-flow br0 in_port=br0,action=group:1234 # ovs-ofctl add-flow br0 actions=NORMAL
- restart iperf in guest
# iperf3 -c 172.16.20.1 Connecting to host 172.16.20.1, port 5201 [ 5] local 172.16.20.20 port 55872 connected to 172.16.20.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 168 KBytes 1.38 Mbits/sec 36 2.63 KBytes [ 5] 1.00-2.00 sec 240 KBytes 1.96 Mbits/sec 33 2.63 KBytes ...
- check OVS logs
2025-02-11T14:42:22.292Z|00192|connmgr|INFO|br0<->unix#57: 1 flow_mods in the last 0 s (1 deletes) 2025-02-11T14:42:26.635Z|00193|connmgr|INFO|br0<->unix#60: 1 flow_mods in the last 0 s (1 adds) 2025-02-11T14:42:30.202Z|00194|connmgr|INFO|br0<->unix#63: 1 flow_mods in the last 0 s (1 adds) 2025-02-11T14:42:42.673Z|1529742|dpif_netdev(pmd-c04/id:10)|WARN|Dropped 177 log messages in last 415 seconds (most recently, 405 seconds ago) due to excessive rate 2025-02-11T14:42:42.673Z|1529743|dpif_netdev(pmd-c04/id:10)|WARN|Recirculating tunnel packets with TSO is not supported 2025-02-11T14:42:42.673Z|1529744|dpif_netdev(pmd-c04/id:10)|WARN|Recirculating tunnel packets with TSO is not supported 2025-02-11T14:42:42.677Z|1529745|dpif_netdev(pmd-c04/id:10)|WARN|Recirculating tunnel packets with TSO is not supported
Some patch is being discussed upstream: https://patchwork.ozlabs.org/project/openvswitch/patch/20250123155628.3694720-1-david.marchand@redhat.com/