[ovs-dev] [PATCH 10/10] OpenFlow: Enable OpenFlow 1.5 by default.

Ben Pfaff blp at ovn.org
Tue Apr 30 23:27:28 UTC 2019


Open vSwitch now supports all OpenFlow 1.5 required features, so enable
it by default.

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 Documentation/faq/openflow.rst                | 27 +++++++++----------
 .../group-selection-method-property.txt       | 16 +++++------
 NEWS                                          |  3 +++
 include/openvswitch/ofp-protocol.h            |  5 ++--
 lib/ofp-version-opt.h                         |  2 +-
 lib/ofp-version.man                           |  7 +----
 tests/test-vconn.c                            | 14 +++++-----
 vswitchd/vswitch.xml                          | 13 +++------
 8 files changed, 39 insertions(+), 48 deletions(-)

diff --git a/Documentation/faq/openflow.rst b/Documentation/faq/openflow.rst
index 561d793a6692..8c94891703a8 100644
--- a/Documentation/faq/openflow.rst
+++ b/Documentation/faq/openflow.rst
@@ -30,17 +30,18 @@ Q: What versions of OpenFlow does Open vSwitch support?
     A: The following table lists the versions of OpenFlow supported by each
     version of Open vSwitch:
 
-    =============== ===== ===== ===== ===== ===== =====
-    Open vSwitch    OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5
-    =============== ===== ===== ===== ===== ===== =====
-    1.9 and earlier  yes   ---   ---   ---   ---   ---
-    1.10, 1.11       yes   ---   (*)   (*)   ---   ---
-    2.0, 2.1         yes   (*)   (*)   (*)   ---   ---
-    2.2              yes   (*)   (*)   (*)   (%)   (*)
-    2.3, 2.4         yes   yes   yes   yes   (*)   (*)
-    2.5, 2.6, 2.7    yes   yes   yes   yes   (*)   (*)
-    2.8              yes   yes   yes   yes   yes   (*)
-    =============== ===== ===== ===== ===== ===== =====
+    ===================== ===== ===== ===== ===== ===== =====
+    Open vSwitch          OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5
+    ===================== ===== ===== ===== ===== ===== =====
+    1.9 and earlier        yes   ---   ---   ---   ---   ---
+    1.10, 1.11             yes   ---   (*)   (*)   ---   ---
+    2.0, 2.1               yes   (*)   (*)   (*)   ---   ---
+    2.2                    yes   (*)   (*)   (*)   (%)   (*)
+    2.3, 2.4               yes   yes   yes   yes   (*)   (*)
+    2.5, 2.6, 2.7          yes   yes   yes   yes   (*)   (*)
+    2.8, 2.9, 2.10, 2.11   yes   yes   yes   yes   yes   (*)
+    2.12                   yes   yes   yes   yes   yes   yes
+    ===================== ===== ===== ===== ===== ===== =====
 
     --- Not supported.
     yes Supported and enabled by default
@@ -73,8 +74,6 @@ Q: What versions of OpenFlow does Open vSwitch support?
     could cause crashes.  We don't recommend enabling it.)
 
     :doc:`/topics/openflow` tracks support for OpenFlow 1.1 and later features.
-    When support for OpenFlow 1.5 is solidly implemented, Open vSwitch will
-    enable it by default.
 
 Q: Does Open vSwitch support MPLS?
 
@@ -476,7 +475,7 @@ Q: How does OVS divide flows among buckets in an OpenFlow "select" group?
     different hash function, using a Netronome extension to the OpenFlow 1.5+
     group_mod message.  For more information, see
     Documentation/group-selection-method-property.txt in the Open vSwitch
-    source tree.  (OpenFlow 1.5 support in Open vSwitch is still experimental.)
+    source tree.
 
 Q: An OpenFlow "select" group isn't dividing packets evenly among the buckets.
 
diff --git a/Documentation/group-selection-method-property.txt b/Documentation/group-selection-method-property.txt
index 29e8249af6ac..0b13da908a4e 100644
--- a/Documentation/group-selection-method-property.txt
+++ b/Documentation/group-selection-method-property.txt
@@ -18,7 +18,7 @@ Contents
 1. Introduction
 ===============
 
-This text describes a Netronome Extension to (draft) OpenFlow 1.5 that allows a
+This text describes a Netronome Extension to OpenFlow 1.5 that allows a
 controller to provide more information on the selection method for select
 groups.  This proposal is in the form of an enhanced select group type.
 
@@ -30,7 +30,7 @@ the OpenFlow specification.
 ===============
 
 A new Netronome group experimenter property is defined which provides
-compatibility with the group mod message defined in draft Open Flow 1.5
+compatibility with the group mod message defined in Open Flow 1.5
 (also known as ONF EXT-350) and allows parameters for the selection
 method of select groups to be passed by the controller. In particular it
 allows controllers to:
@@ -60,14 +60,14 @@ enum ntr_group_mod_subtype {
 };
 
 
-Modifications to the group table from the controller may be done with a
-OFPT_GROUP_MOD message described (draft) Open Flow 1.5.  Group Entry
-Message. Of relevance here is that (draft) Open Flow 1.5 group messages
-have properties.
+Modifications to the group table from the controller may be done with
+a OFPT_GROUP_MOD message described Open Flow 1.5.  Group Entry
+Message. Of relevance here is that Open Flow 1.5 group messages have
+properties.
 
 This proposal is defined in terms of an implementation of struct
-ofp_group_prop_experimenter which is described in (draft) Open Flow 1.5.
-The implementation is:
+ofp_group_prop_experimenter which is described in Open Flow 1.5.  The
+implementation is:
 
 struct ntr_group_prop_selection_method {
     ovs_be16 type;                  /* OFPGPT_EXPERIMENTER. */
diff --git a/NEWS b/NEWS
index 43fd44bbd870..dd1e01d18a94 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,9 @@ Post-v2.11.0
      * New option 'other_config:dpdk-socket-limit' to limit amount of
        hugepage memory that can be used by DPDK.
    - OpenFlow:
+     * All features required by OpenFlow 1.5 are now implemented, so
+       ovs-vswitchd now enables OpenFlow 1.5 by default (in addition to
+       OpenFlow 1.0 to 1.4).
      * Removed support for OpenFlow 1.6 (draft), which ONF abandoned.
      * New action "check_pkt_larger".
      * Support for OpenFlow 1.5 "meter" action.
diff --git a/include/openvswitch/ofp-protocol.h b/include/openvswitch/ofp-protocol.h
index 7873fdd12853..741ddc458bd2 100644
--- a/include/openvswitch/ofp-protocol.h
+++ b/include/openvswitch/ofp-protocol.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008-2017 Nicira, Inc.
+ * Copyright (c) 2008-2017, 2019 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -151,7 +151,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap);
                                     (1u << OFP11_VERSION) | \
                                     (1u << OFP12_VERSION) | \
                                     (1u << OFP13_VERSION) | \
-                                    (1u << OFP14_VERSION))
+                                    (1u << OFP14_VERSION) | \
+                                    (1u << OFP15_VERSION))
 #define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS
 
 enum ofputil_protocol ofputil_protocols_from_string(const char *s);
diff --git a/lib/ofp-version-opt.h b/lib/ofp-version-opt.h
index 525fd8ac41b9..f50f400d3293 100644
--- a/lib/ofp-version-opt.h
+++ b/lib/ofp-version-opt.h
@@ -10,7 +10,7 @@
 
 #define OFP_VERSION_OPTION_HANDLERS                             \
         case 'V':                                               \
-            ovs_print_version(OFP10_VERSION, OFP14_VERSION);    \
+            ovs_print_version(OFP10_VERSION, OFP15_VERSION);    \
             exit(EXIT_SUCCESS);                                 \
                                                                 \
         case 'O':                                               \
diff --git a/lib/ofp-version.man b/lib/ofp-version.man
index 0e5391db72ba..301eb91152b6 100644
--- a/lib/ofp-version.man
+++ b/lib/ofp-version.man
@@ -27,12 +27,7 @@ by default:
 .
 .IP \(bu
 \fBOpenFlow14\fR, for OpenFlow 1.4.
-.RE
-.
-.IP
-Support for the following protocol versions is provided for testing
-and development purposes.  They are not enabled by default:
 .
-.RS
 .IP \(bu
 \fBOpenFlow15\fR, for OpenFlow 1.5.
+.RE
diff --git a/tests/test-vconn.c b/tests/test-vconn.c
index 73ef9a9587ab..fc8ce4a2c0e1 100644
--- a/tests/test-vconn.c
+++ b/tests/test-vconn.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2017 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2017, 2019 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -239,7 +239,7 @@ test_read_hello(struct ovs_cmdl_context *ctx)
        if (retval == sizeof hello) {
            enum ofpraw raw;
 
-           CHECK(hello.version, OFP14_VERSION);
+           CHECK(hello.version, OFP15_VERSION);
            CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
            CHECK(raw, OFPRAW_OFPT_HELLO);
            CHECK(ntohs(hello.length), sizeof hello);
@@ -312,7 +312,7 @@ test_send_hello(const char *type, const void *out, size_t out_size,
            if (retval == sizeof hello) {
                enum ofpraw raw;
 
-               CHECK(hello.version, OFP14_VERSION);
+               CHECK(hello.version, OFP15_VERSION);
                CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
                CHECK(raw, OFPRAW_OFPT_HELLO);
                CHECK(ntohs(hello.length), sizeof hello);
@@ -363,7 +363,7 @@ test_send_plain_hello(struct ovs_cmdl_context *ctx)
     const char *type = ctx->argv[1];
     struct ofpbuf *hello;
 
-    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION,
+    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_VERSION,
                              htonl(0x12345678), 0);
     test_send_hello(type, hello->data, hello->size, 0);
     ofpbuf_delete(hello);
@@ -379,7 +379,7 @@ test_send_long_hello(struct ovs_cmdl_context *ctx)
     struct ofpbuf *hello;
     enum { EXTRA_BYTES = 8 };
 
-    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION,
+    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_VERSION,
                              htonl(0x12345678), EXTRA_BYTES);
     ofpbuf_put_zeros(hello, EXTRA_BYTES);
     ofpmsg_update_length(hello);
@@ -395,7 +395,7 @@ test_send_echo_hello(struct ovs_cmdl_context *ctx)
     const char *type = ctx->argv[1];
     struct ofpbuf *echo;
 
-    echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP14_VERSION,
+    echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP15_VERSION,
                              htonl(0x12345678), 0);
     test_send_hello(type, echo->data, echo->size, EPROTO);
     ofpbuf_delete(echo);
@@ -421,7 +421,7 @@ test_send_invalid_version_hello(struct ovs_cmdl_context *ctx)
     const char *type = ctx->argv[1];
     struct ofpbuf *hello;
 
-    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION,
+    hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_VERSION,
                              htonl(0x12345678), 0);
     ((struct ofp_header *) hello->data)->version = 0;
     test_send_hello(type, hello->data, hello->size, EPROTO);
diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml
index 08001dbce3d3..376688ea4b90 100644
--- a/vswitchd/vswitch.xml
+++ b/vswitchd/vswitch.xml
@@ -1248,16 +1248,9 @@
       </column>
 
       <column name="protocols">
-        <p>
-          List of OpenFlow protocols that may be used when negotiating
-          a connection with a controller.  OpenFlow 1.0, 1.1, 1.2, 1.3, and
-          1.4 are enabled by default if this column is empty.
-        </p>
-
-        <p>
-          OpenFlow 1.5 is not enabled by default because its
-          implementations is missing features.
-        </p>
+        List of OpenFlow protocols that may be used when negotiating a
+        connection with a controller.  OpenFlow 1.0, 1.1, 1.2, 1.3, 1.4, and
+        1.5 are enabled by default if this column is empty.
       </column>
     </group>
 
-- 
2.20.1



More information about the dev mailing list