[ovs-dev] [PATCH v4 0/3] Support for layer 3 ports/flows

Lorand Jakab lojakab at cisco.com
Fri Jun 27 13:21:52 UTC 2014


This series implements support for layer 3 ports, of which we have one example
so far, the LISP vport.  LISP support is currently implemented with a hack, by
adding/removing the Ethernet header within the datapath/vport-lisp.c file.  By
removing the assumption that all packets/flows have Ethernet header, this
series adds generic support for layer 3 ports in OVS, and thus it is expected
that the user/kernel space API for LISP support will not change.  This will
allow the upstreaming of the LISP vport, resulting in a decreased the delta
against the Linux kernel module, which is the goal that started this work.  It
will also allow supporting layer 3 GRE tunnels, for which patches have been
proposed based on this work.

The patch set doesn't change the current behavior when a packet from a LISP
port is sent to a layer 2 port or the other way around, so it's not necessary
to change existing flow rules.  The implementation will automatically add the
appropriate pop_eth and push_eth actions to datapath flows.  This may change in
the future when OpenFlow support for these actions will be added, since
discussions on EXT-112 in the ONF showed preference for explicitly requiring
the pop_eth and push_eth actions in OpenFlow rules.

Changes from v3:
  * Addressed the new round of comments from Ben
  * Rebased several times

Changes from v2:
  * Addressed the new round of comments from Ben
  * Addressed Jesse's comments
  * Rebased several times

Changes from the initial version:
  * Addressed all comments from Ben's review
  * Fixed all failing unit tests

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

 datapath/actions.c            |  35 +++++++++++++
 datapath/datapath.h           |   1 +
 datapath/flow.c               |  47 ++++++++++--------
 datapath/flow.h               |   1 +
 datapath/flow_netlink.c       |  72 +++++++++++++++++++++++----
 datapath/vport-geneve.c       |   6 ++-
 datapath/vport-gre.c          |   5 +-
 datapath/vport-internal_dev.c |   5 +-
 datapath/vport-lisp.c         |  26 +++-------
 datapath/vport-netdev.c       |   5 +-
 datapath/vport-vxlan.c        |   7 ++-
 datapath/vport.c              |   5 +-
 datapath/vport.h              |   2 +-
 include/linux/openvswitch.h   |  12 +++++
 lib/bfd.c                     |   1 +
 lib/dpif-linux.c              |   8 +++
 lib/dpif-netdev.c             |   2 +
 lib/dpif.c                    |   8 ++-
 lib/flow.c                    | 113 ++++++++++++++++++++++++++----------------
 lib/flow.h                    |  16 ++++--
 lib/match.c                   |  12 +++--
 lib/meta-flow.c               |  17 ++++---
 lib/meta-flow.h               |   1 +
 lib/netdev-dummy.c            |   1 +
 lib/netdev-linux.c            |   1 +
 lib/nx-match.c                |   2 +-
 lib/odp-execute.c             |  19 +++++++
 lib/odp-util.c                |  95 +++++++++++++++++++++++++++++++----
 lib/odp-util.h                |   8 ++-
 lib/ofp-print.c               |  19 ++++---
 lib/ofp-print.h               |   3 +-
 lib/ofp-util.c                |   2 +-
 lib/ofpbuf.h                  |  12 +++--
 lib/packets.c                 |  27 ++++++++++
 lib/packets.h                 |   4 ++
 lib/pcap-file.c               |   1 +
 ofproto/ofproto-dpif-xlate.c  |  28 ++++++++---
 ofproto/ofproto-dpif-xlate.h  |   2 +-
 ofproto/ofproto-dpif.c        |   4 +-
 ofproto/ofproto.c             |   1 +
 tests/ofproto-dpif.at         |   6 +--
 tests/vlan-splinters.at       |   4 +-
 42 files changed, 494 insertions(+), 152 deletions(-)

-- 
1.8.5.2 (Apple Git-48)




More information about the dev mailing list