Skip to content

RFC Convert OVS tunnel vports to use regular net_devices

Thomas Graf netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest13 of 14 patches 6 repliesIn review

13 of 14 patches are in this archive. The cover letter announces 14.

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/14ip_tunnel: Make ovs_tunnel_info and ovs_key_ipv4_tunnel genericinclude/net/ip_tunnels.h include/uapi/linux/openvswitch.h net/openvswitch/actions.c +10 more+128 -1350 replies
2/14ip_tunnel: support per packet tunnel metadatainclude/linux/skbuff.h include/net/ip_tunnels.h net/core/skbuff.c +1 more+69 -00 replies
3/14vxlan: Flow based tunnelingdrivers/net/vxlan.c include/linux/skbuff.h include/net/ip_tunnels.h +3 more+146 -230 replies
4/14route: Extend flow representation with tunnel keyinclude/net/flow.h include/net/ip_tunnels.h net/ipv4/route.c+19 -00 replies
5/14route: Per route tunnel metadata with RTA_TUNNELinclude/net/ip_fib.h include/net/ip_tunnels.h include/net/route.h +5 more+161 -22 replies
6/14fib: Add fib rule match on tunnel idinclude/net/fib_rules.h include/uapi/linux/fib_rules.h net/core/fib_rules.c+17 -30 replies
7/14vxlan: Factor out device configurationdrivers/net/vxlan.c include/net/vxlan.h+236 -1550 replies
8/14openvswitch: Allocate & attach ip_tunnel_info for tunnel set actionnet/openvswitch/actions.c net/openvswitch/datapath.c net/openvswitch/flow.h +2 more+69 -122 replies
9/14openvswitch: Move dev pointer into vport itselfnet/openvswitch/datapath.c net/openvswitch/dp_notify.c net/openvswitch/vport-internal_dev.c +3 more+58 -900 replies
11/14openvswitch: Use regular VXLAN net_device devicedrivers/net/vxlan.c include/net/vxlan.h net/openvswitch/Kconfig +4 more+193 -3600 replies
12/14vxlan: remove indirect call to vxlan_rcv() and vni memberdrivers/net/vxlan.c include/net/vxlan.h+107 -1250 replies
13/14openvswitch: Use regular GRE net_device instead of vportnet/core/dev.c net/ipv4/ip_gre.c net/openvswitch/Makefile +2 more+168 -3190 replies
14/14arp: Associate ARP requests with tunnel infonet/ipv4/arp.c+8 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [net-next RFC 00/14] Convert OVS tunnel vports to use regular net_devices

This is the first series in a greater effort to bring the scalability and programmability advantages of OVS to the rest of the network stack and to get rid of as much OVS specific code as possible.

This first series focuses on getting rid of OVS tunnel vports and use regular tunnel net_devices instead. As part of this effort, the routing subsystem is extended with support for flow based tunneling. In this new tunneling mode, the route is able to match on tunnel information as well as set tunnel encapsulation parameters per route. This allows to perform L3 forwarding for a large number of tunnel endpoints and virtual networks using a single tunnel net_device.

TODO:
- Geneve support
- IPv6 support
- Benchmarks

Pravin Shelar (1):
openvswitch: Use regular GRE net_device instead of vport

Thomas Graf (13):
ip_tunnel: Make ovs_tunnel_info and ovs_key_ipv4_tunnel generic
ip_tunnel: support per packet tunnel metadata
vxlan: Flow based tunneling
route: Extend flow representation with tunnel key
route: Per route tunnel metadata with RTA_TUNNEL
fib: Add fib rule match on tunnel id
vxlan: Factor out device configuration
openvswitch: Allocate & attach ip_tunnel_info for tunnel set action
openvswitch: Move dev pointer into vport itself
openvswitch: Abstract vport name through ovs_vport_name()
openvswitch: Use regular VXLAN net_device device
vxlan: remove indirect call to vxlan_rcv() and vni member
arp: Associate ARP requests with tunnel info

 drivers/net/vxlan.c                  | 663 ++++++++++++++++++++---------------
 include/linux/skbuff.h               |   2 +
 include/net/fib_rules.h              |   1 +
 include/net/flow.h                   |   7 +
 include/net/ip_fib.h                 |   3 +
 include/net/ip_tunnels.h             | 127 ++++++-
 include/net/route.h                  |  18 +
 include/net/vxlan.h                  |  82 ++++-
 include/uapi/linux/fib_rules.h       |   2 +-
 include/uapi/linux/if_link.h         |   1 +
 include/uapi/linux/openvswitch.h     |   2 +-
 include/uapi/linux/rtnetlink.h       |  16 +
 net/core/dev.c                       |   5 +-
 net/core/fib_rules.c                 |  17 +-
 net/core/skbuff.c                    |   8 +
 net/ipv4/arp.c                       |   8 +
 net/ipv4/fib_frontend.c              |  57 +++
 net/ipv4/fib_semantics.c             |  45 +++
 net/ipv4/ip_gre.c                    | 161 ++++++++-
 net/ipv4/ip_tunnel_core.c            |  15 +
 net/ipv4/route.c                     |  32 +-
 net/openvswitch/Kconfig              |  12 -
 net/openvswitch/Makefile             |   2 -
 net/openvswitch/actions.c            |  10 +-
 net/openvswitch/datapath.c           |  19 +-
 net/openvswitch/datapath.h           |   5 +-
 net/openvswitch/dp_notify.c          |   5 +-
 net/openvswitch/flow.c               |   4 +-
 net/openvswitch/flow.h               |  77 +---
 net/openvswitch/flow_netlink.c       |  78 ++++-
 net/openvswitch/flow_netlink.h       |   3 +-
 net/openvswitch/vport-geneve.c       |  17 +-
 net/openvswitch/vport-gre.c          | 313 -----------------
 net/openvswitch/vport-internal_dev.c |  38 +-
 net/openvswitch/vport-netdev.c       | 271 +++++++++++---
 net/openvswitch/vport-netdev.h       |  13 -
 net/openvswitch/vport-vxlan.c        | 322 -----------------
 net/openvswitch/vport.c              |  34 +-
 net/openvswitch/vport.h              |  21 +-
 39 files changed, 1334 insertions(+), 1182 deletions(-)
 delete mode 100644 net/openvswitch/vport-gre.c
 delete mode 100644 net/openvswitch/vport-vxlan.c
Signature · 1 line
2.3.5