[v3,0/3] Support UDP/IPv4 GSO
mbox series

Message ID 1529646843-45903-1-git-send-email-jiayu.hu@intel.com
Headers show
Series
  • Support UDP/IPv4 GSO
Related show

Message

Hu, Jiayu June 22, 2018, 5:54 a.m. UTC
With the support of UDP Fragmentation Offload (UFO) and TCP Segmentation
Offload (TSO) in virtio, VMs can exchange large UDP and TCP packets
exceeding MTU between each other, which can greatly reduce per-packet
processing overheads.

When the destination of the large TCP and UDP packets is crossing
machines, the host application needs to call two different libraries,
GSO and IP fragmentation, to split the large packets respectively.
However,the GSO and IP fragmentation library have quite different APIs,
which greatly complicates the host application implementation.

To simplify application development, we propose to support UDP/IPv4
fragmentation in the GSO library. With supporting UDP GSO, host
applicationss can use the unified APIs to split large UDP and TCP packets.

This patchset is to support UDP/IPv4 GSO. The first patch is to provide
UDP GSO function, the second patch is to enable UDP/IPv4 GSO in the
testpmd checksum forwarding engine, and the last patch is to update the
programmer guide and testpmd user guide.

Change log
==========
v3:
- replace rte_pktmbuf_mtod() with rte_pktmbuf_mtod_offset().
- fix meson build.
- add updates to document for better explaining how UDP GSO works.
V2:
- fix fragment offset calculation bug.
- add UDP GSO description in testpmd user guide.
- shorten the second patch name.

Jiayu Hu (3):
  gso: support UDP/IPv4 fragmentation
  app/testpmd: enable UDP GSO in csum engine
  gso: update documents for UDP/IPv4 GSO

 app/test-pmd/cmdline.c                             |  5 +-
 app/test-pmd/csumonly.c                            |  2 +
 app/test-pmd/testpmd.c                             |  2 +-
 .../generic_segmentation_offload_lib.rst           | 10 +++
 doc/guides/testpmd_app_ug/testpmd_funcs.rst        |  7 ++
 lib/librte_gso/Makefile                            |  1 +
 lib/librte_gso/gso_common.h                        |  3 +
 lib/librte_gso/gso_udp4.c                          | 81 ++++++++++++++++++++++
 lib/librte_gso/gso_udp4.h                          | 42 +++++++++++
 lib/librte_gso/meson.build                         |  2 +-
 lib/librte_gso/rte_gso.c                           | 24 +++++--
 lib/librte_gso/rte_gso.h                           |  6 +-
 12 files changed, 175 insertions(+), 10 deletions(-)
 create mode 100644 lib/librte_gso/gso_udp4.c
 create mode 100644 lib/librte_gso/gso_udp4.h

Comments

Wang, Xiao W June 25, 2018, 4:13 a.m. UTC | #1
Hi,

> -----Original Message-----
> From: Hu, Jiayu
> Sent: Friday, June 22, 2018 1:54 PM
> To: dev@dpdk.org
> Cc: Wang, Xiao W <xiao.w.wang@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>; Zhang, Yuwei1 <yuwei1.zhang@intel.com>;
> Iremonger, Bernard <bernard.iremonger@intel.com>; thomas@monjalon.net;
> Hu, Jiayu <jiayu.hu@intel.com>
> Subject: [PATCH v3 0/3] Support UDP/IPv4 GSO
> 
> With the support of UDP Fragmentation Offload (UFO) and TCP Segmentation
> Offload (TSO) in virtio, VMs can exchange large UDP and TCP packets
> exceeding MTU between each other, which can greatly reduce per-packet
> processing overheads.
> 
> When the destination of the large TCP and UDP packets is crossing
> machines, the host application needs to call two different libraries,
> GSO and IP fragmentation, to split the large packets respectively.
> However,the GSO and IP fragmentation library have quite different APIs,
> which greatly complicates the host application implementation.
> 
> To simplify application development, we propose to support UDP/IPv4
> fragmentation in the GSO library. With supporting UDP GSO, host
> applicationss can use the unified APIs to split large UDP and TCP packets.
> 
> This patchset is to support UDP/IPv4 GSO. The first patch is to provide
> UDP GSO function, the second patch is to enable UDP/IPv4 GSO in the
> testpmd checksum forwarding engine, and the last patch is to update the
> programmer guide and testpmd user guide.
> 
> Change log
> ==========
> v3:
> - replace rte_pktmbuf_mtod() with rte_pktmbuf_mtod_offset().
> - fix meson build.
> - add updates to document for better explaining how UDP GSO works.
> V2:
> - fix fragment offset calculation bug.
> - add UDP GSO description in testpmd user guide.
> - shorten the second patch name.
> 
> Jiayu Hu (3):
>   gso: support UDP/IPv4 fragmentation
>   app/testpmd: enable UDP GSO in csum engine
>   gso: update documents for UDP/IPv4 GSO
> 
>  app/test-pmd/cmdline.c                             |  5 +-
>  app/test-pmd/csumonly.c                            |  2 +
>  app/test-pmd/testpmd.c                             |  2 +-
>  .../generic_segmentation_offload_lib.rst           | 10 +++
>  doc/guides/testpmd_app_ug/testpmd_funcs.rst        |  7 ++
>  lib/librte_gso/Makefile                            |  1 +
>  lib/librte_gso/gso_common.h                        |  3 +
>  lib/librte_gso/gso_udp4.c                          | 81 ++++++++++++++++++++++
>  lib/librte_gso/gso_udp4.h                          | 42 +++++++++++
>  lib/librte_gso/meson.build                         |  2 +-
>  lib/librte_gso/rte_gso.c                           | 24 +++++--
>  lib/librte_gso/rte_gso.h                           |  6 +-
>  12 files changed, 175 insertions(+), 10 deletions(-)
>  create mode 100644 lib/librte_gso/gso_udp4.c
>  create mode 100644 lib/librte_gso/gso_udp4.h
> 
> --
> 2.7.4

Series Acked-by: Xiao Wang <xiao.w.wang@intel.com>

BRs,
Xiao