|
|
Log in / Subscribe / Register

udp_tunnel: GRO optimizations

From:  Paolo Abeni <pabeni-AT-redhat.com>
To:  netdev-AT-vger.kernel.org
Subject:  [PATCH net-next 0/2] udp_tunnel: GRO optimizations
Date:  Thu, 06 Mar 2025 16:56:51 +0100
Message-ID:  <cover.1741275846.git.pabeni@redhat.com>
Cc:  Willem de Bruijn <willemdebruijn.kernel-AT-gmail.com>, "David S. Miller" <davem-AT-davemloft.net>, Eric Dumazet <edumazet-AT-google.com>, Jakub Kicinski <kuba-AT-kernel.org>, Simon Horman <horms-AT-kernel.org>, David Ahern <dsahern-AT-kernel.org>
Archive-link:  Article

The UDP tunnel GRO stage is source of measurable overhead for workload
based on UDP-encapsulated traffic: each incoming packets requires a full
UDP socket lookup and an indirect call.

In the most common setups a single UDP tunnel device is used. In such
case we can optimize both the lookup and the indirect call.

Patch 1 tracks per netns the active UDP tunnels and replaces the socket
lookup with a single destination port comparison when possible.

Patch 2 tracks the different types of UDP tunnels and replaces the
indirect call with a static one when there is a single UDP tunnel type
active.

I measure ~5% performance improvement in TCP over UDP tunnel stream
tests on top of this series.

Paolo Abeni (2):
  udp_tunnel: create a fast-path GRO lookup.
  udp_tunnel: use static call for GRO hooks when possible

 include/linux/udp.h        |  16 ++++
 include/net/netns/ipv4.h   |  11 +++
 include/net/udp.h          |   1 +
 include/net/udp_tunnel.h   |  22 +++++
 net/ipv4/udp.c             |  15 +++-
 net/ipv4/udp_offload.c     | 169 ++++++++++++++++++++++++++++++++++++-
 net/ipv4/udp_tunnel_core.c |  14 +++
 net/ipv6/udp.c             |   2 +
 net/ipv6/udp_offload.c     |   5 ++
 9 files changed, 252 insertions(+), 3 deletions(-)

-- 
2.48.1




Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds