Enabling TSO offload allows a host stack to delegate the segmentation of
oversized TCP packets to the underlying physical NIC, if supported. In the case
of a VM this means that the segmentation of the packets is not performed by the
guest kernel, but by the host NIC itself. In turn, since the TSO calculations
and checksums are being performed in hardware, this alleviates the CPU load on
the host system. In inter VM communication this might account to significant
savings, and higher throughput, even more so if the VMs are running on the same
host.

Thus, although inter VM communication is already possible as is, there's a
sacrifice in terms of CPU, which may affect the overall throughput.

This series adds support for TSO in OvS-DPDK, by making use of the TSO
offloading feature already supported by DPDK vhost backend, having the
following scenarios in mind:
- Inter VM communication on the same host;
- Inter VM communication on different hosts;
- The same two use cases above, but on a VLAN network.

The work is based on [1]; It has been rebased to run on top of the
multi-segment mbufs work (v13) [2] and re-worked to use DPDK v18.11.

[1] https://patchwork.ozlabs.org/patch/749564/
[2] https://mail.openvswitch.org/pipermail/ovs-dev/2019-January/354950.html

Considerations:
- As mentioned above, this series depends on the multi-segment mbuf series
  (v13) and can't be applied on master as is;
- The `rte_eth_tx_prepare()` API in DPDK is marked experimental, and although
  I'm not getting any errors / warnings while compiling, do shout if get into
  trouble while testing;
- I'm due to send v3 in the next few days, but sending v2 now to enable early
  testing;

Tiago Lam (3):
  netdev-dpdk: Validate packets burst before Tx.
  netdev-dpdk: Consider packets marked for TSO.
  netdev-dpdk: Enable TSO when using multi-seg mbufs

 Documentation/automake.mk           |   1 +
 Documentation/topics/dpdk/index.rst |   1 +
 Documentation/topics/dpdk/tso.rst   | 111 ++++++++++++++++++++
 NEWS                                |   1 +
 lib/dp-packet.h                     |  14 +++
 lib/netdev-bsd.c                    |  11 +-
 lib/netdev-dpdk.c                   | 203 ++++++++++++++++++++++++++++++------
 lib/netdev-dummy.c                  |  11 +-
 lib/netdev-linux.c                  |  15 +++
 9 files changed, 332 insertions(+), 36 deletions(-)
 create mode 100644 Documentation/topics/dpdk/tso.rst

-- 
2.7.4

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to