[ovs-dev] [PATCH dpdk-latest v2 0/4] Add support for TSO with DPDK
ian.stokes at intel.com
Mon Jan 6 20:23:46 UTC 2020
On 12/31/2019 8:14 PM, Flavio Leitner wrote:
> Abbreviated as TSO, TCP Segmentation Offload is a feature which enables
> the network stack to delegate the TCP segmentation to the NIC reducing
> the per packet CPU overhead.
> A guest using vhost-user interface with TSO enabled can send TCP packets
> much bigger than the MTU, which saves CPU cycles normally used to break
> the packets down to MTU size and to calculate checksums.
> It also saves CPU cycles used to parse multiple packets/headers during
> the packet processing inside virtual switch.
> If the destination of the packet is another guest in the same host, then
> the same big packet can be sent through a vhost-user interface skipping
> the segmentation completely. However, if the destination is not local,
> the NIC hardware is instructed to do the TCP segmentation and checksum
> The first 3 patches are not really part of TSO support, but they are
> required to make sure everything works.
> The TSO is enabled in the vhost-user ports in client mode and linux ports
> in userspace.
> This patchset is based on branch dpdk-latest (v19.11 required).
Thanks for the patch Flavio, FYI 19.11 support is now upstreamed to OVS
master. For future revisions to the patch series can you target master
branch instead of dpdk-latest?
> There are good improvements sending to or receiving from veth pairs or
> tap devices as well.
> Flavio Leitner (4):
> dp-packet: preserve headroom when cloning a pkt batch
> vhost: Disable multi-segmented buffers
> dp-packet: handle new dpdk buffer flags
> netdev-dpdk: Add TCP Segmentation Offload support
> Documentation/automake.mk | 1 +
> Documentation/topics/dpdk/index.rst | 1 +
> Documentation/topics/dpdk/tso.rst | 89 ++++++++
> NEWS | 1 +
> lib/automake.mk | 2 +
> lib/conntrack.c | 29 ++-
> lib/dp-packet.c | 4 +-
> lib/dp-packet.h | 160 +++++++++++++-
> lib/ipf.c | 32 +--
> lib/netdev-dpdk.c | 317 ++++++++++++++++++++++++----
> lib/netdev-linux-private.h | 4 +
> lib/netdev-linux.c | 295 +++++++++++++++++++++++---
> lib/netdev-provider.h | 10 +
> lib/netdev.c | 52 ++++-
> lib/tso.c | 54 +++++
> lib/tso.h | 23 ++
> vswitchd/bridge.c | 2 +
> vswitchd/vswitch.xml | 12 ++
> 18 files changed, 997 insertions(+), 91 deletions(-)
> create mode 100644 Documentation/topics/dpdk/tso.rst
> create mode 100644 lib/tso.c
> create mode 100644 lib/tso.h
More information about the dev