This is the non-RFC version of the patch that I sent earlier this week. At this point, I think it is still most important to discuss the interface if there are ways to improve it. However, I've addressed the outstanding issues that I mentioned previously and also rebased against master, so I thought that it would be worth sending out the current version for people that want to try it out.
Here is the original message with the areas that could use some review: The current Geneve code in OVS only supports a feature set equal to VXLAN - the ability to set and match on the VNI. This patch series provides the more interesting part, which is the ability to use options. Some areas that it would be nice to have comments on: OVN people: As the presumable first user, any OpenFlow level interface issues that might make it more complicated to use. In particular, I think it's a little unfortunate that we don't have a better way to gracefully handle changes to the mapping table when there are active flows but I don't have a good idea there now. Thomas: I'm not intentionally trying to make this Geneve-specific although I would like to be not so generic that we can't do helpful sanity checking. If you have suggestions on ways to make it more generically useful, I would be open to that. Madhu: I incorporated a bunch of your previous code into the second to last patch, which was very helpful. Can you provide a signed-off-by for that patch? Follow-up work in the near future: * The mapping table is shared across OpenFlow switches but should not be. * Support for zero-length options. * More sanity checking and informative messages. Jesse Gross (11): metaflow: Allow fields to be marked as variable length. nx-match: Support variable length header lookup. nx-match: Handle receiving variable length fields. nx-match: Enable senders of NXM fields to specify length. nx-match: Trim variable length fields when encoding as actions. nx-match: Enable parsing string representations of variable fields. openflow: Table maintenance commands for Geneve options. metaflow: Extend size of mf_value to 128 bytes. odp-util: Pass down flow netlink attributes when translating masks. tunnel: Geneve TLV handling support for OpenFlow. pkt-metadata: Avoid introducing overhead for userspace tunnels. NEWS | 1 + build-aux/extract-ofp-fields | 24 +- include/openflow/nicira-ext.h | 70 ++++ lib/automake.mk | 2 + lib/dpctl.c | 3 +- lib/dpif-netdev.c | 3 +- lib/flow.c | 25 +- lib/flow.h | 4 +- lib/learning-switch.c | 3 + lib/match.c | 9 +- lib/match.h | 2 + lib/meta-flow.c | 72 +++- lib/meta-flow.h | 217 +++++++++++- lib/nx-match.c | 116 +++++-- lib/nx-match.h | 3 + lib/odp-util.c | 97 +++--- lib/odp-util.h | 13 +- lib/ofp-errors.h | 28 ++ lib/ofp-msgs.h | 12 + lib/ofp-parse.c | 32 ++ lib/ofp-parse.h | 6 + lib/ofp-print.c | 91 +++++ lib/ofp-util.c | 143 +++++++- lib/ofp-util.h | 31 ++ lib/packets.h | 7 +- lib/rconn.c | 3 + lib/tun-metadata.c | 792 ++++++++++++++++++++++++++++++++++++++++++ lib/tun-metadata.h | 100 ++++++ ofproto/ofproto-dpif-rid.h | 2 +- ofproto/ofproto-dpif-upcall.c | 5 +- ofproto/ofproto-dpif-xlate.c | 2 +- ofproto/ofproto.c | 45 +++ ovn/controller/ofctrl.c | 3 + tests/learn.at | 2 +- tests/ofproto.at | 68 +++- tests/ovn.at | 1 - tests/ovs-ofctl.at | 2 + tests/test-odp.c | 4 +- tests/tunnel.at | 65 ++++ utilities/ovs-ofctl.8.in | 51 +++ utilities/ovs-ofctl.c | 57 +++ vswitchd/vswitch.xml | 7 +- 42 files changed, 2094 insertions(+), 129 deletions(-) create mode 100644 lib/tun-metadata.c create mode 100644 lib/tun-metadata.h -- 2.1.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev