[ovs-dev] [PATCH v12 rebased 0/3] userspace: Support for layer 3 encapsulated packets

Jiri Benc jbenc at redhat.com
Wed Oct 19 17:21:16 UTC 2016


This is a rebase of Simon's submission from July on top of the current
master. It is not intended to be applied yet but to help testing of the
kernel part.

The rebase was straightforward, the differences are:

* Accomodated changes made by aff49b8c66be ("meta-flow: Clean up masking
  with prerequisities checking.") and 362a2ebb5ba2 ("ofproto-dpif-xlate:
  Hash only fields specified for 'hash' selection method.").
* Changed value of FLOW_WC_SEQ (note that MINIFLOW_ASSERT is kept defined in
  lib/flow.c for testing).
* In miniflow_extract, removed one instance of miniflow_pad_from_64 (see the
  comment in patch 2). This looks fishy, I'm not sure the code is correct.

Also, the feedback to v12 is addressed (see patch 2 description). This was
still done by Simon (thanks!).

Note that this patchset will have to look a bit differently, as the combined
L2/L3 GRE interfaces will be created using rtnetlink and there will need to
be a fallback code for older kernels. For testing purposes, the whole
patchset submitted to netdev needs to be applied, including the patch 9. The
patch 9 won't be applied to the kernel but this doesn't affect the rest of
the patches nor the API to configure the flows. Please consider this
patchset and patch 9 from the kernel set as a way to test the kernel
patches 1-8.

The original patchset cover letter follows:

------

This series implements support for layer 3 encapsulated packets.  At the
core of this change is removing the assumption that all packets/flows have
Ethernet header. Support for layer 3 packets in GRE tunnels is also added
by this patchset.

The implementation automatically adds appropriate pop_eth and push_eth
actions to datapath flows. This may change in the future if OpenFlow
support for these actions is added.

This series is based on work by Lorand Jakab, Thomas Morin and others.

Unlike Lorand's work this series does not update the kernel datapath
nor the LISP vport implementation in the version of the kernel datapath
in the OVS tree. Rather it focuses only on userspace including
the user-space datapath, and provides layer 3 GRE support. It should,
however, be in keeping with his goal of providing a clean path for
porting the LISP datapath support to the mainline kernel for inclusion
there.

Lorand Jakab (2):
  userspace: add support for pop_eth and push_eth actions
  userspace: add layer 3 flow and switching support

Simon Horman (1):
  userspace: add non-tap (l3) support to GRE vports

 build-aux/extract-ofp-fields                      |   1 +
 datapath/linux/compat/include/linux/openvswitch.h |  17 ++
 include/openvswitch/flow.h                        |  23 ++-
 include/openvswitch/match.h                       |   1 +
 include/openvswitch/meta-flow.h                   |   9 +-
 include/openvswitch/ofp-print.h                   |   8 +-
 lib/dp-packet.h                                   |  14 +-
 lib/dpif-netdev.c                                 |   6 +-
 lib/dpif-netlink.c                                |   4 +
 lib/dpif.c                                        |   9 +-
 lib/flow.c                                        | 132 +++++++++----
 lib/flow.h                                        |  11 ++
 lib/match.c                                       |  13 +-
 lib/meta-flow.c                                   |   2 +
 lib/netdev-bsd.c                                  |   2 +
 lib/netdev-dummy.c                                |   1 +
 lib/netdev-linux.c                                |   5 +-
 lib/netdev-native-tnl.c                           |  26 ++-
 lib/netdev-vport.c                                |  22 ++-
 lib/netdev.h                                      |   1 +
 lib/nx-match.c                                    |   2 +-
 lib/odp-execute.c                                 |  20 ++
 lib/odp-util.c                                    | 227 ++++++++++++++++++----
 lib/odp-util.h                                    |   4 +-
 lib/ofp-print.c                                   |  27 ++-
 lib/ofp-util.c                                    |   2 +-
 lib/packets.c                                     |  33 ++++
 lib/packets.h                                     |   6 +
 lib/tnl-ports.c                                   |  49 +++--
 lib/tnl-ports.h                                   |   3 +-
 ofproto/ofproto-dpif-rid.h                        |   2 +-
 ofproto/ofproto-dpif-sflow.c                      |   8 +
 ofproto/ofproto-dpif-xlate.c                      |  30 ++-
 ofproto/ofproto-dpif-xlate.h                      |   2 +-
 ofproto/ofproto-dpif.c                            |   4 +-
 ofproto/tunnel.c                                  |   4 +-
 tests/ofproto-dpif.at                             |   6 +-
 tests/tunnel-push-pop-ipv6.at                     |  22 ++-
 tests/tunnel-push-pop.at                          |  36 +++-
 tests/tunnel.at                                   |  10 +-
 vswitchd/vswitch.xml                              |  13 ++
 41 files changed, 645 insertions(+), 172 deletions(-)

-- 
1.8.3.1




More information about the dev mailing list