On Wed, 29 Oct 2025 at 12:02, David Marchand via dev <[email protected]> wrote: > > Outer UDP checksum for TSO packets can be computed in software > regardless of how segmentation is done (SW or HW). > This property comes from nested checksums that cancels impact of the > inner L4 payload to the outer checksum. > > Performance was evaluated using iperf between two virtual machines > hosted by two RHEL 9 hypervisors running OVS-DPDK. > > The main limiting factor is on the receiving endpoint as the receiving > virtual machine seems too slow to dequeue packets coming from the > hypervisor (tx retries/tx drops seen on the vhost-user port). > > A little warning on those numbers that should be taken simply as an > indication of the improvement and not as absolute numbers: > - the VMs and OVS-DPDKs were running from numa 0 while the E810 nic > is placed in numa 1, > - the random drops on the receiving side means that there is some > variance on the numbers between runs, > > Main branch: > > Switching to 0000:3b:00.0 (mlx5_core) > IPv4/IPv4 [ 5] 0.00-1.00 sec 767 MBytes 6.43 Gbits/sec 39 2.10 > MBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 768 MBytes 6.44 Gbits/sec 0 2.86 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 771 MBytes 6.46 Gbits/sec 0 2.56 > MBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 639 MBytes 5.36 Gbits/sec 416 1.77 > MBytes > Switching to 0000:5e:00.0 (i40e) > IPv4/IPv4 [ 5] 0.00-1.00 sec 583 MBytes 4.89 Gbits/sec 990 228 > KBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 646 MBytes 5.42 Gbits/sec 0 2.12 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 633 MBytes 5.31 Gbits/sec 465 538 > KBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 657 MBytes 5.51 Gbits/sec 0 2.14 > MBytes > Switching to 0000:d8:00.0 (ice) > IPv4/IPv4 [ 5] 0.00-1.00 sec 1.27 GBytes 10.9 Gbits/sec 64 1.52 > MBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 1.16 GBytes 9.93 Gbits/sec 110 2.30 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 1.17 GBytes 10.1 Gbits/sec 112 2.35 > MBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 1.14 GBytes 9.79 Gbits/sec 94 1.75 > MBytes > > After series: > > Switching to 0000:3b:00.0 (mlx5_core) > IPv4/IPv4 [ 5] 0.00-1.00 sec 1.10 GBytes 9.49 Gbits/sec 493 1.14 > MBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 1.08 GBytes 9.30 Gbits/sec 162 1.77 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 1.10 GBytes 9.43 Gbits/sec 1354 642 > KBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 1.10 GBytes 9.44 Gbits/sec 103 1.36 > MBytes > Switching to 0000:5e:00.0 (i40e) > IPv4/IPv4 [ 5] 0.00-1.00 sec 1.13 GBytes 9.71 Gbits/sec 516 1.49 > MBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 1.29 GBytes 11.0 Gbits/sec 7 2.54 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 1.28 GBytes 11.0 Gbits/sec 1220 920 > KBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 1.32 GBytes 11.3 Gbits/sec 116 1.89 > MBytes > Switching to 0000:d8:00.0 (ice) > IPv4/IPv4 [ 5] 0.00-1.00 sec 1.23 GBytes 10.6 Gbits/sec 1867 400 > KBytes > IPv4/IPv6 [ 5] 0.00-1.00 sec 1.17 GBytes 10.0 Gbits/sec 113 2.28 > MBytes > IPv6/IPv4 [ 5] 0.00-1.00 sec 1.22 GBytes 10.5 Gbits/sec 102 2.33 > MBytes > IPv6/IPv6 [ 5] 0.00-1.00 sec 1.15 GBytes 9.86 Gbits/sec 109 2.29 > MBytes > > > -- > David Marchand > > David Marchand (8): > netdev-dpdk: Dump checksum offloads flags for debug. > netdev-dpdk: Fix rx queue fill level with QoS. > netdev-dpdk: Enforce mono-segment mbufs. > netdev-dpdk: Fix TSO packet length check for tunnels. > dp-packet-gso: Request UDP checksum when needed. > dp-packet: Optimize outer checksum for nested checksums. > dp-packet-gso: Refactor software segmentation code. > netdev: Use HW segmentation without outer UDP checksum. > > lib/dp-packet-gso.c | 296 ++++++++++++++++++++++++++------------------ > lib/dp-packet-gso.h | 4 +- > lib/dp-packet.c | 20 +-- > lib/dp-packet.h | 12 ++ > lib/netdev-dpdk.c | 129 +++++++++---------- > lib/netdev.c | 36 +++--- > lib/packets.c | 117 +++++++++++++++-- > lib/packets.h | 1 + > 8 files changed, 392 insertions(+), 223 deletions(-)
Maxime reported a regression on UDP (with 0 checksum) encapsulated in Geneve. I have a (really simple) fix. I think it is worth writing down all the checksums combinations OVS support, in the documentation. And, in any case, this series deserves more unit tests. I'll send a v2 during this week hopefully. -- David Marchand _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
