This patch series is at RFC stage, though some of the renaming changes could go in independently of the rest of the series.
The goal is to enable NIC csum and segmentation offloading by default in OVS userspace data path with and without DPDK. Other Linux software devices like tap (br) or socket (veth) netdevs are supported. The performance depends on the use case. For example, if OVS is just forwarding between two ports, then checksum offloading doesn't offer any gains. However, with more complex flow tables, like the ones generated by OVN for example, where packets are changed, then checksum offloading can improve performance. The TCP Segmentation Offload (TSO) helps regardless of the flow tables because instead of sending many frames of MSS size, OVS can process one big packet. This improves throughput performance in some cases up to 6x. A brief documentation is added to provide details on how this is supposed to work. A segmentation implementation is provided (untested) to see if the approach is good enough. Some of the challenges are in the commit message. The patch series currently misses the knobs to control each feature per port. Is that desired? Flavio Leitner (17): Rename checksum to csum in hwol functions. Rename flags with CKSUM to CSUM. Prefix netdev offload flags with NETDEV_OFFLOAD_. Rename hwol csum valid to good. Rename dp_packet_hwol to dp_packet_ol. dp-packet: Use p for packet and b for batch. dp-packet: Rename dp_packet_ol_tcp_seg dp-packet: Rename dp_packet_ol_is_ipv4. dp-packet: Rename dp_packet_ol l4 functions. dp-packet: Add _ol_ to functions using OL flags. Document netdev offload. Show netdev offloading flags. Enable IP checksum offloading by default. Enable L4 csum offloading by default. Respect tso/gso segment size. Add Generic Segmentation Offloading. Enable TSO if available. Documentation/automake.mk | 1 + Documentation/topics/index.rst | 1 + Documentation/topics/nic-offloads.rst | 95 +++ Documentation/topics/userspace-tso.rst | 12 - lib/automake.mk | 4 +- lib/conntrack.c | 28 +- lib/dp-packet-gso.c | 153 +++++ lib/{userspace-tso.h => dp-packet-gso.h} | 13 +- lib/dp-packet.c | 378 ++++++------ lib/dp-packet.h | 720 ++++++++++++++--------- lib/dpif-netdev-unixctl.man | 5 + lib/dpif-netdev.c | 58 ++ lib/dpif.h | 2 +- lib/flow.c | 37 +- lib/ipf.c | 13 +- lib/netdev-dpdk.c | 288 +++++---- lib/netdev-dummy.c | 21 + lib/netdev-linux.c | 430 +++++++------- lib/netdev-native-tnl.c | 53 +- lib/netdev-provider.h | 13 +- lib/netdev.c | 183 ++++-- lib/odp-execute.c | 21 +- lib/packets.c | 210 +++++-- lib/packets.h | 3 + lib/userspace-tso.c | 48 -- ofproto/ofproto-dpif-upcall.c | 14 +- tests/automake.mk | 1 + tests/dpif-netdev.at | 21 + tests/system-userspace-offload.at | 79 +++ tests/system-userspace-testsuite.at | 1 + vswitchd/bridge.c | 2 - vswitchd/vswitch.xml | 20 - 32 files changed, 1858 insertions(+), 1070 deletions(-) create mode 100644 Documentation/topics/nic-offloads.rst create mode 100644 lib/dp-packet-gso.c rename lib/{userspace-tso.h => dp-packet-gso.h} (67%) delete mode 100644 lib/userspace-tso.c create mode 100644 tests/system-userspace-offload.at -- 2.31.1 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev