lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250617155742-mutt-send-email-mst@kernel.org>
Date: Tue, 17 Jun 2025 15:58:24 -0400
From: "Michael S. Tsirkin" <mst@...hat.com>
To: Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org,
	Willem de Bruijn <willemdebruijn.kernel@...il.com>,
	Jason Wang <jasowang@...hat.com>,
	Andrew Lunn <andrew+netdev@...n.ch>,
	"David S. Miller" <davem@...emloft.net>,
	Eric Dumazet <edumazet@...gle.com>,
	Jakub Kicinski <kuba@...nel.org>,
	Xuan Zhuo <xuanzhuo@...ux.alibaba.com>,
	Eugenio Pérez <eperezma@...hat.com>,
	Yuri Benditovich <yuri.benditovich@...nix.com>,
	Akihiko Odaki <akihiko.odaki@...nix.com>
Subject: Re: [PATCH v4 net-next 0/8] virtio: introduce GSO over UDP tunnel

On Tue, Jun 17, 2025 at 06:12:07PM +0200, Paolo Abeni wrote:
> Some virtualized deployments use UDP tunnel pervasively and are impacted
> negatively by the lack of GSO support for such kind of traffic in the
> virtual NIC driver.
> 
> The virtio_net specification recently introduced support for GSO over
> UDP tunnel, this series updates the virtio implementation to support
> such a feature.
> 
> Currently the kernel virtio support limits the feature space to 64,
> while the virtio specification allows for a larger number of features.
> Specifically the GSO-over-UDP-tunnel-related virtio features use bits
> 65-69.
> 
> The first four patches in this series rework the virtio and vhost
> feature support to cope with up to 128 bits. The limit is set by
> a define and could be easily raised in future, as needed.
> 
> This implementation choice is aimed at keeping the code churn as
> limited as possible. For the same reason, only the virtio_net driver is
> reworked to leverage the extended feature space; all other
> virtio/vhost drivers are unaffected, but could be upgraded to support
> the extended features space in a later time.
> 
> The last four patches bring in the actual GSO over UDP tunnel support.
> As per specification, some additional fields are introduced into the
> virtio net header to support the new offload. The presence of such
> fields depends on the negotiated features.
> 
> New helpers are introduced to convert the UDP-tunneled skb metadata to
> an extended virtio net header and vice versa. Such helpers are used by
> the tun and virtio_net driver to cope with the newly supported offloads.
> 
> Tested with basic stream transfer with all the possible permutations of
> host kernel/qemu/guest kernel with/without GSO over UDP tunnel support.
> 


Hi!
I'm out sick. Hope to get to this next week. Sorry about the delay.


> ---
> v3 -> v4:
>   - vnet sockopt cleanup
>   - fixed offset for UDP-tunnel related field
>   - use dev->features instead of flags
> v3: https://lore.kernel.org/netdev/cover.1749210083.git.pabeni@redhat.com/
> 
> v2 -> v3:
>   - uint128_t -> u64[2]
>   - dropped related ifdef
>   - define and use vnet_hdr with tunnel layouts
> v2: https://lore.kernel.org/netdev/cover.1748614223.git.pabeni@redhat.com/
> 
> v1 -> v2:
>   - fix build failures
>   - many comment clarification
>   - changed the vhost_net ioctl API
>   - fixed some hdr <> skb helper bugs
> v1: https://lore.kernel.org/netdev/cover.1747822866.git.pabeni@redhat.com/
> 
> Paolo Abeni (8):
>   virtio: introduce extended features
>   virtio_pci_modern: allow configuring extended features
>   vhost-net: allow configuring extended features
>   virtio_net: add supports for extended offloads
>   net: implement virtio helpers to handle UDP GSO tunneling.
>   virtio_net: enable gso over UDP tunnel support.
>   tun: enable gso over UDP tunnel support.
>   vhost/net: enable gso over UDP tunnel support.
> 
>  drivers/net/tun.c                      |  70 +++++++--
>  drivers/net/tun_vnet.h                 |  88 +++++++++--
>  drivers/net/virtio_net.c               | 109 +++++++++++---
>  drivers/vhost/net.c                    |  95 +++++++++---
>  drivers/vhost/vhost.c                  |   2 +-
>  drivers/vhost/vhost.h                  |   4 +-
>  drivers/virtio/virtio.c                |  43 +++---
>  drivers/virtio/virtio_debug.c          |  27 ++--
>  drivers/virtio/virtio_pci_modern.c     |  10 +-
>  drivers/virtio/virtio_pci_modern_dev.c |  69 +++++----
>  include/linux/virtio.h                 |   5 +-
>  include/linux/virtio_config.h          |  41 +++---
>  include/linux/virtio_features.h        |  88 +++++++++++
>  include/linux/virtio_net.h             | 196 ++++++++++++++++++++++++-
>  include/linux/virtio_pci_modern.h      |  43 +++++-
>  include/uapi/linux/if_tun.h            |   9 ++
>  include/uapi/linux/vhost.h             |   7 +
>  include/uapi/linux/vhost_types.h       |   5 +
>  include/uapi/linux/virtio_net.h        |  33 +++++
>  19 files changed, 780 insertions(+), 164 deletions(-)
>  create mode 100644 include/linux/virtio_features.h
> 
> -- 
> 2.49.0


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ