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 v4: * Addressed the new round of comments from Jesse * Rebased several times 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 build-aux/extract-ofp-fields | 1 + datapath/actions.c | 85 ++++++++++++--- datapath/flow.c | 45 ++++---- datapath/flow.h | 4 +- datapath/flow_netlink.c | 75 +++++++++++-- datapath/linux/compat/include/linux/openvswitch.h | 12 +++ datapath/vport-geneve.c | 2 +- datapath/vport-gre.c | 2 +- datapath/vport-internal_dev.c | 2 +- datapath/vport-lisp.c | 28 ++--- datapath/vport-netdev.c | 2 +- datapath/vport-vxlan.c | 2 +- datapath/vport.c | 6 +- datapath/vport.h | 2 +- lib/bfd.c | 1 + lib/dpif-netdev.c | 5 +- lib/dpif-netlink.c | 8 ++ lib/dpif.c | 8 +- lib/flow.c | 124 ++++++++++++++-------- lib/flow.h | 16 ++- lib/match.c | 2 +- lib/meta-flow.c | 5 + lib/meta-flow.h | 13 +-- 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 | 29 +++-- ofproto/ofproto-dpif-xlate.h | 2 +- ofproto/ofproto-dpif.c | 3 +- ofproto/ofproto.c | 1 + tests/ofproto-dpif.at | 6 +- tests/vlan-splinters.at | 4 +- 42 files changed, 522 insertions(+), 167 deletions(-) -- 1.9.3 (Apple Git-50) _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev