netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 00/14] gtp: Additional feature support
@ 2017-09-19  0:38 Tom Herbert
  2017-09-19  0:38 ` [PATCH net-next 01/14] iptunnel: Add common functions to get a tunnel route Tom Herbert
                   ` (14 more replies)
  0 siblings, 15 replies; 63+ messages in thread
From: Tom Herbert @ 2017-09-19  0:38 UTC (permalink / raw)
  To: davem; +Cc: netdev, pablo, laforge, rohit, Tom Herbert

This patch set builds upon the initial GTP implementation to make
support closer to that enjoyed by other encapsulation protocols.

The major items are:

  - IPv6 support
  - Configurable networking interfaces so that GTP kernel can be
    used and tested without needing GSN network emulation (i.e. no user
    space daemon needed).
  - GSO,GRO
  - Control of zero UDP checksums
  - Port numbers are configurable
  - Addition of a dst_cache in the GTP structure and other cleanup

Additionally, this patch set also includes a couple of general support
capabilities:

  - A facility that allows application specific GSO callbacks
  - Common functions to get a route fo for an IP tunnel

For IPv6 support, the mobile subscriber needs to allow IPv6 addresses,
and the remote enpoint can be IPv6.

For configurable interfaces, configuration is added to allow an
alterate means to configure a GTP and device. This follows the
typical UDP encapsulation model of specifying a listener port for
receive, and a remote address and port for transmit. 

GRO was straightfoward to implement following the model of other
UDP encapsulations.

Providing GSO support had one wrinkle-- the GTP header includes a
payload length field that needs to be set per GSO segment. In order
to address that in a general way, I create the concept of
application specific GSO.

To implement application layer GSO I reserved the top four bits of
shinfo(skb)->gso_type. The idea is that an application or encapsulation
protocol (like GTP in this case) can register a GSO segment callback.
The facility returns a gso_type with upper four bits set to a value
(index into a table). When the application sets up a packet it includes
the code in the gso_type for the skb. At some point (e.g. from UDP
segment) the gso_type is checked in the skb and if the application
specific GSO is indicated then the callback is called. The
registered callbacks include a set of other gso_types so that
an application callback can be matched to an appropriate instance.
FOr instance, the GTP callback checks for the UDP GSO flags.

Zero UDP checksum, port number configuration, and dst_cache are
straightforwad.

Configuration is performed by iproute2/ip. I will post that
in a subsequent patch set.

Tested:

Configured the matrix of IPv4/IPv6 mobile subscriber, IPv4/IPv6 remote
peer, and GTP version 0 and 1 (eight combinations). Observed
connectivity and proper GSO/GRO. Also, tested VXLAN for
regression.

Tom Herbert (14):
  iptunnel: Add common functions to get a tunnel route
  vxlan: Call common functions to get tunnel routes
  gtp: Call common functions to get tunnel routes and add dst_cache
  gtp: udp recv clean up
  gtp: Remove special mtu handling
  gtp: Eliminate pktinfo and add port configuration
  gtp: Support encapsulation of IPv6 packets
  gtp: Support encpasulating over IPv6
  gtp: Allow configuring GTP interface as standalone
  gtp: Add support for devnet
  net: Add a facility to support application defined GSO
  gtp: Configuration for zero UDP checksum
  gtp: Support for GRO
  gtp: GSO support

 drivers/net/gtp.c            | 1300 ++++++++++++++++++++++++++++++++----------
 drivers/net/vxlan.c          |   84 +--
 include/linux/netdevice.h    |   31 +
 include/linux/skbuff.h       |   25 +
 include/net/ip6_tunnel.h     |   33 ++
 include/net/ip_tunnels.h     |   33 ++
 include/uapi/linux/gtp.h     |    8 +
 include/uapi/linux/if_link.h |    6 +
 net/core/dev.c               |   47 ++
 net/ipv4/ip_tunnel.c         |   41 ++
 net/ipv4/ip_tunnel_core.c    |    6 +
 net/ipv4/udp_offload.c       |   20 +-
 net/ipv6/ip6_tunnel.c        |   43 ++
 13 files changed, 1306 insertions(+), 371 deletions(-)

-- 
2.11.0

^ permalink raw reply	[flat|nested] 63+ messages in thread

end of thread, other threads:[~2017-09-24 17:18 UTC | newest]

Thread overview: 63+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-09-19  0:38 [PATCH net-next 00/14] gtp: Additional feature support Tom Herbert
2017-09-19  0:38 ` [PATCH net-next 01/14] iptunnel: Add common functions to get a tunnel route Tom Herbert
2017-09-19  7:30   ` kbuild test robot
2017-09-19  0:38 ` [PATCH net-next 02/14] vxlan: Call common functions to get tunnel routes Tom Herbert
2017-09-19  0:38 ` [PATCH net-next 03/14] gtp: Call common functions to get tunnel routes and add dst_cache Tom Herbert
2017-09-19  4:17   ` David Miller
2017-09-19 12:09     ` Harald Welte
2017-09-19 17:44       ` David Miller
2017-09-20 15:37       ` Andreas Schultz
2017-09-24  1:33         ` Harald Welte
2017-09-19 16:05     ` Tom Herbert
2017-09-19  0:38 ` [PATCH net-next 04/14] gtp: udp recv clean up Tom Herbert
2017-09-19  7:44   ` kbuild test robot
2017-09-19 11:32   ` Harald Welte
2017-09-19  0:38 ` [PATCH net-next 05/14] gtp: Remove special mtu handling Tom Herbert
2017-09-19 11:42   ` Harald Welte
2017-09-19 18:12     ` Tom Herbert
2017-09-19  0:38 ` [PATCH net-next 06/14] gtp: Eliminate pktinfo and add port configuration Tom Herbert
2017-09-19  0:38 ` [PATCH net-next 07/14] gtp: Support encapsulation of IPv6 packets Tom Herbert
2017-09-19  4:19   ` David Miller
2017-09-19 12:12     ` Harald Welte
2017-09-19 17:42       ` David Miller
2017-09-20  0:11         ` Tom Herbert
2017-09-19 11:53   ` Harald Welte
2017-09-19  0:38 ` [PATCH net-next 08/14] gtp: Support encpasulating over IPv6 Tom Herbert
2017-09-19  4:19   ` David Miller
2017-09-20 18:03     ` Tom Herbert
2017-09-20 19:45       ` David Miller
2017-09-20 20:40         ` Tom Herbert
2017-09-21  0:04           ` Harald Welte
2017-09-21  0:16             ` Tom Herbert
2017-09-19 11:59   ` Harald Welte
2017-09-19  0:38 ` [PATCH net-next 09/14] gtp: Allow configuring GTP interface as standalone Tom Herbert
2017-09-20 15:27   ` Andreas Schultz
2017-09-20 15:57     ` Tom Herbert
2017-09-20 16:07       ` Andreas Schultz
2017-09-20 16:24         ` Tom Herbert
2017-09-21  0:13           ` Harald Welte
2017-09-21  0:55             ` Tom Herbert
2017-09-21 15:12               ` Harald Welte
2017-09-21 16:43                 ` Tom Herbert
2017-09-24  2:16                   ` Harald Welte
2017-09-24 15:55                     ` Tom Herbert
2017-09-24 16:25                       ` Harald Welte
2017-09-24 17:18                         ` Tom Herbert
2017-09-19  0:39 ` [PATCH net-next 10/14] gtp: Add support for devnet Tom Herbert
2017-09-19  0:39 ` [PATCH net-next 11/14] net: Add a facility to support application defined GSO Tom Herbert
2017-09-19  4:21   ` David Miller
2017-09-19  0:39 ` [PATCH net-next 12/14] gtp: Configuration for zero UDP checksum Tom Herbert
2017-09-19  4:24   ` David Miller
2017-09-20 18:09     ` Tom Herbert
2017-09-21  1:55       ` Harald Welte
2017-09-21 22:41         ` Tom Herbert
2017-09-19  0:39 ` [PATCH net-next 13/14] gtp: Support for GRO Tom Herbert
2017-09-19 11:57   ` kbuild test robot
2017-09-19 12:03   ` Harald Welte
2017-09-19  0:39 ` [PATCH net-next 14/14] gtp: GSO support Tom Herbert
2017-09-19 12:43 ` [PATCH net-next 00/14] gtp: Additional feature support Harald Welte
2017-09-19 15:59   ` Tom Herbert
2017-09-19 23:19     ` Harald Welte
2017-09-19 23:47       ` Tom Herbert
2017-09-21 15:38         ` Harald Welte
2017-09-20 15:34       ` Andreas Schultz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).