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

Reply via email to