]> git.proxmox.com Git - mirror_ovs.git/commit
tun-metadata: Manage tunnel TLV mapping table on a per-bridge basis.
authorJesse Gross <jesse@kernel.org>
Wed, 20 Apr 2016 01:36:04 +0000 (18:36 -0700)
committerJesse Gross <jesse@kernel.org>
Mon, 19 Sep 2016 16:52:22 +0000 (09:52 -0700)
commit8d8ab6c2d5743eb229a5e7c27ccd963a2c103adb
treed198a78ddf968ab119e029ca998eba2337812cd8
parent56fb20c4a1622c0f19bd2865c6688bdc78d5b40f
tun-metadata: Manage tunnel TLV mapping table on a per-bridge basis.

When using tunnel TLVs (at the moment, this means Geneve options), a
controller must first map the class and type onto an appropriate OXM
field so that it can be used in OVS flow operations. This table is
managed using OpenFlow extensions.

The original code that added support for TLVs made the mapping table
global as a simplification. However, this is not really logically
correct as the OpenFlow management commands are operating on a per-bridge
basis. This removes the original limitation to make the table per-bridge.

One nice result of this change is that it is generally clearer whether
the tunnel metadata is in datapath or OpenFlow format. Rather than
allowing ad-hoc format changes and trying to handle both formats in the
tunnel metadata functions, the format is more clearly separated by function.
Datapaths (both kernel and userspace) use datapath format and it is not
changed during the upcall process. At the beginning of action translation,
tunnel metadata is converted to OpenFlow format and flows and wildcards
are translated back at the end of the process.

As an additional benefit, this change improves performance in some flow
setup situations by keeping the tunnel metadata in the original packet
format in more cases. This helps when copies need to be made as the amount
of data touched is only what is present in the packet rather than the
maximum amount of metadata supported.

Co-authored-by: Madhu Challa <challa@noironetworks.com>
Signed-off-by: Madhu Challa <challa@noironetworks.com>
Signed-off-by: Jesse Gross <jesse@kernel.org>
Acked-by: Ben Pfaff <blp@ovn.org>
34 files changed:
NEWS
include/openvswitch/match.h
include/openvswitch/ofp-parse.h
include/openvswitch/ofp-util.h
include/openvswitch/tun-metadata.h
lib/classifier.c
lib/classifier.h
lib/dpctl.c
lib/dpif-netdev.c
lib/flow.c
lib/learning-switch.c
lib/match.c
lib/nx-match.c
lib/nx-match.h
lib/odp-execute.c
lib/odp-util.c
lib/odp-util.h
lib/ofp-parse.c
lib/ofp-print.c
lib/ofp-util.c
lib/tun-metadata.c
lib/tun-metadata.h
ofproto/ofproto-dpif-sflow.c
ofproto/ofproto-dpif-upcall.c
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif-xlate.h
ofproto/ofproto-dpif.c
ofproto/ofproto-dpif.h
ofproto/ofproto-provider.h
ofproto/ofproto.c
ovn/controller/pinctrl.c
tests/test-odp.c
utilities/ovs-ofctl.8.in
utilities/ovs-ofctl.c