[dpdk-dev] [PATCH 0/5] Support TCP/IPv4, VxLAN and GRE GSO in DPDK
Jiayu Hu
jiayu.hu at intel.com
Thu Aug 24 16:15:39 CEST 2017
Generic Segmentation Offload (GSO) is a SW technique to split large
packets into small ones. Akin to TSO, GSO enables applications to
operate on large packets, thus reducing per-packet processing overhead.
To enable more flexibility to applications, DPDK GSO is implemented
as a standalone library. Applications explicitly use the GSO library
to segment packets. This patch adds GSO support to DPDK for specific
packet types: specifically, TCP/IPv4, VxLAN, and GRE.
The first patch introduces the GSO API framework. The second patch
adds GSO support for TCP/IPv4 packets (containing an optional VLAN
tag). The third patch adds GSO support for VxLAN packets that contain
outer IPv4, and inner TCP/IPv4 headers (plus optional inner and/or
outer VLAN tags). The fourth patch adds GSO support for GRE packets
that contain outer IPv4, and inner TCP/IPv4 headers (with optional
outer VLAN tag). The last patch in the series enables TCP/IPv4, VxLAN,
and GRE GSO in testpmd's checksum forwarding engine.
The performance of TCP/IPv4 GSO on a 10Gbps link is demonstrated using
iperf. Setup for the test is described as follows:
a. Connect 2 x 10Gbps physical ports (P0, P1), together physically.
b. Launch testpmd with P0 and a vhost-user port, and use csum
forwarding engine.
c. Select IP and TCP HW checksum calculation for P0; select TCP HW
checksum calculation for vhost-user port.
d. Launch a VM with csum and tso offloading enabled.
e. Run iperf-client on virtio-net port in the VM to send TCP packets.
With GSO enabled for P0 in testpmd, observed iperf throughput is ~9Gbps.
The experimental data of VxLAN and GRE will be shown later.
Jiayu Hu (3):
lib: add Generic Segmentation Offload API framework
gso/lib: add TCP/IPv4 GSO support
app/testpmd: enable TCP/IPv4, VxLAN and GRE GSO
Mark Kavanagh (2):
lib/gso: add VxLAN GSO support
lib/gso: add GRE GSO support
app/test-pmd/cmdline.c | 121 +++++++++
app/test-pmd/config.c | 25 ++
app/test-pmd/csumonly.c | 68 ++++-
app/test-pmd/testpmd.c | 9 +
app/test-pmd/testpmd.h | 10 +
config/common_base | 5 +
lib/Makefile | 2 +
lib/librte_eal/common/include/rte_log.h | 1 +
lib/librte_gso/Makefile | 52 ++++
lib/librte_gso/gso_common.c | 431 ++++++++++++++++++++++++++++++++
lib/librte_gso/gso_common.h | 180 +++++++++++++
lib/librte_gso/gso_tcp.c | 82 ++++++
lib/librte_gso/gso_tcp.h | 73 ++++++
lib/librte_gso/gso_tunnel.c | 62 +++++
lib/librte_gso/gso_tunnel.h | 46 ++++
lib/librte_gso/rte_gso.c | 100 ++++++++
lib/librte_gso/rte_gso.h | 122 +++++++++
lib/librte_gso/rte_gso_version.map | 7 +
mk/rte.app.mk | 1 +
19 files changed, 1392 insertions(+), 5 deletions(-)
create mode 100644 lib/librte_gso/Makefile
create mode 100644 lib/librte_gso/gso_common.c
create mode 100644 lib/librte_gso/gso_common.h
create mode 100644 lib/librte_gso/gso_tcp.c
create mode 100644 lib/librte_gso/gso_tcp.h
create mode 100644 lib/librte_gso/gso_tunnel.c
create mode 100644 lib/librte_gso/gso_tunnel.h
create mode 100644 lib/librte_gso/rte_gso.c
create mode 100644 lib/librte_gso/rte_gso.h
create mode 100644 lib/librte_gso/rte_gso_version.map
--
2.7.4
More information about the dev
mailing list