[PATCH v11 0/4] virtio-net: define UDP tunnel offload

Paolo Abeni
2024-11-27T09:36:58Z

UDP tunnel usage is ubiquitous in container deployment, and the ability
to offload UDP encapsulated GSO traffic impacts greatly the performances
and the CPU utilization of such use cases.

This series includes:
- clarifications on the current semantic of NEEDS_CSUM offload
(patch 1) and DATA_VALID offload (patch 2) to make later changes easier
to follow,
- new features definition to handle both UDP tunnel segmentation
offload (patch 3).
- new features definition to handle UDP tunnel outer checksum offload
(patch 4).

A PoC implementation is available here:

https://github.com/pabeni/linux-devel/commits/virtio_tunnel_gso_v10/
https://github.com/pabeni/qemu/tree/virtio_tunnel_gso_v9

Note that both implementations has not been updated since the previous
iteration, since there are no additional functional changes in v11.

Changes from v10:
- added patch 2
- clarified only a single encapsulation level is supported (patch 3)
- s/TCP or UDP GSO packets/GSO packets/ (patch 3)
- 'to the outer UDP pseudo header' -> 'to the outer UDP pseudo header
checksum' (patch 4)
https://lore.kernel.org/virtio-comment/cover.1731084277.git.pabeni@redhat.com/

Changes from v9:
- added patch 1
- clarified that 'hdr_len' accounts for the inner header for GSO over
UDP tunnel packets
- DATA_VALID is not be allowed for GSO over UDP tunnel packets.
https://lore.kernel.org/virtio-comment/cover.1728029499.git.pabeni@redhat.com/

Changes from v8:
- rebased on top of virtio-1.4, changed udp-tunnel features number
to avoid conflicts/duplications
- Clarified the usage of DATA_VALID flag with UDP tunneled GSO packets
- mandate strict hdr validation on the rx side, too - for UDP tunneled
GSO packets only
https://lore.kernel.org/virtio-comment/cover.1725463935.git.pabeni@redhat.com/

Changes from v7:
- minor cleanup in patch 1/2
- dropped confusing wording about csum validation in patch 2/2

Changes from v6:
- replaced inner_protocol_type with
VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV{4,6}
- many clarifications and cleanup, see the individual patches changelog
for the details

Changes from v5:
- split in 2 patches
- dropped outer_mh_offset field
- many csum related clarification
---
Paolo Abeni (4):
virtio-net: clarify NEEDS_CSUM semantic for GSO packats.
virtio-net: clarify DATA_VALID semantic for encap protos.
virtio-net: define UDP tunnel segmentation offload feature
virtio-net: define UDP tunnel checksum offload feature

device-types/net/description.tex | 355 ++++++++++++++++++++++++++++++-
1 file changed, 345 insertions(+), 10 deletions(-)

--
2.45.2