Message ID | 20170424184959.5175-1-blp@ovn.org |
---|---|
State | Accepted |
Headers | show |
Thanks for the patch. I cross-check this patch with 6dc5374435cc ("Enable OpenFlow 1.0, 1.1, 1.2, and 1.3 by default."). It LGTM. Acked-by: Yi-Hung Wei <yihung.wei@gmail.com> On Mon, Apr 24, 2017 at 11:49 AM, Ben Pfaff <blp@ovn.org> wrote: > Open vSwitch now supports all OpenFlow 1.4 required features, so enable > it by default. > > Signed-off-by: Ben Pfaff <blp@ovn.org> > --- > Documentation/faq/openflow.rst | 28 +++++++++------------------- > NEWS | 3 +++ > include/openvswitch/ofp-util.h | 3 ++- > lib/ofp-version.man | 22 ++++++++++++++++++---- > tests/test-vconn.c | 14 +++++++------- > utilities/ovs-ofctl.8.in | 4 +++- > vswitchd/vswitch.xml | 6 +++--- > 7 files changed, 45 insertions(+), 35 deletions(-) > > diff --git a/Documentation/faq/openflow.rst b/Documentation/faq/openflow.rst > index d21bb4459395..7cd6161ddefb 100644 > --- a/Documentation/faq/openflow.rst > +++ b/Documentation/faq/openflow.rst > @@ -34,29 +34,19 @@ Q: What versions of OpenFlow does Open vSwitch support? > Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6 > =============== ===== ===== ===== ===== ===== ===== ===== > 1.9 and earlier yes --- --- --- --- --- --- > - 1.10 yes --- (*) (*) --- --- --- > - 1.11 yes --- (*) (*) --- --- --- > - 2.0 yes (*) (*) (*) --- --- --- > - 2.1 yes (*) (*) (*) --- --- --- > + 1.10, 1.11 yes --- (*) (*) --- --- --- > + 2.0, 2.1 yes (*) (*) (*) --- --- --- > 2.2 yes (*) (*) (*) (%) (*) --- > - 2.3 yes yes yes yes (*) (*) --- > - 2.4 yes yes yes yes (*) (*) --- > - 2.5 yes yes yes 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 (*) (*) > =============== ===== ===== ===== ===== ===== ===== ===== > > - (*) Supported, with one or more missing features. > + --- Not supported. > + yes Supported and enabled by default > + (*) Supported, but missing features, and must be enabled by user. > (%) Experimental, unsafe implementation. > > - Open vSwitch 2.3 enables OpenFlow 1.0, 1.1, 1.2, and 1.3 by default in > - ovs-vswitchd. In Open vSwitch 1.10 through 2.2, OpenFlow 1.1, 1.2, and 1.3 > - must be enabled manually in ovs-vswitchd. > - > - Some versions of OpenFlow are supported with missing features and therefore > - not enabled by default: OpenFlow 1.4 and 1.5, in Open vSwitch 2.3 and > - later, as well as OpenFlow 1.6 in Open vSwitch 2.5 and later. Also, the > - OpenFlow 1.6 specification is still under development and thus subject to > - change. > - > In any case, the user may override the default: > > - To enable OpenFlow 1.0, 1.1, 1.2, and 1.3 on bridge br0:: > @@ -83,7 +73,7 @@ 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.4 and 1.5 is solidly implemented, Open vSwitch > + When support for OpenFlow 1.5 and 1.6 is solidly implemented, Open vSwitch > will enable those version by default. > > Q: Does Open vSwitch support MPLS? > diff --git a/NEWS b/NEWS > index ea97d84a2dea..4632b80df698 100644 > --- a/NEWS > +++ b/NEWS > @@ -22,6 +22,9 @@ Post-v2.7.0 > * ovn-trace now has basic support for tracing distributed firewalls. > - Add the command 'ovs-appctl stp/show' (see ovs-vswitchd(8)). > - OpenFlow: > + * All features required by OpenFlow 1.4 are now implemented, so > + ovs-vswitchd now enables OpenFlow 1.4 by default (in addition to > + OpenFlow 1.0 to 1.3). > * Increased support for OpenFlow 1.6 (draft). > * Bundles now support hashing by just nw_src or nw_dst. > * The "learn" action now supports a "limit" option (see ovs-ofctl(8)). > diff --git a/include/openvswitch/ofp-util.h b/include/openvswitch/ofp-util.h > index f664055c3939..f37d181599b2 100644 > --- a/include/openvswitch/ofp-util.h > +++ b/include/openvswitch/ofp-util.h > @@ -189,7 +189,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap); > #define OFPUTIL_SUPPORTED_VERSIONS ((1u << OFP10_VERSION) | \ > (1u << OFP11_VERSION) | \ > (1u << OFP12_VERSION) | \ > - (1u << OFP13_VERSION)) > + (1u << OFP13_VERSION) | \ > + (1u << OFP14_VERSION)) > #define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS > > enum ofputil_protocol ofputil_protocols_from_string(const char *s); > diff --git a/lib/ofp-version.man b/lib/ofp-version.man > index 54fa1664e5f8..0ab70891d270 100644 > --- a/lib/ofp-version.man > +++ b/lib/ofp-version.man > @@ -9,7 +9,6 @@ Sets the OpenFlow protocol versions that are allowed when establishing > an OpenFlow session. > . > .IP > -The following versions are considered to be ready for general use. > These protocol versions are enabled by default: > . > .RS > @@ -17,9 +16,9 @@ These protocol versions are enabled by default: > \fBOpenFlow10\fR, for OpenFlow 1.0. > .RE > . > -.IP > -Support for the following protocol versions is provided for testing > -and development purposes. They are not enabled by default: > +The following protocol versions are generally supported, but for > +compatibility with older versions of Open vSwitch they are not enabled > +by default: > . > .RS > .IP \(bu > @@ -30,4 +29,19 @@ and development purposes. They are not enabled by default: > . > .IP \(bu > \fBOpenFlow13\fR, for OpenFlow 1.3. > +. > +.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. > +. > +.IP \(bu > +\fBOpenFlow16\fR, for OpenFlow 1.6. > .RE > diff --git a/tests/test-vconn.c b/tests/test-vconn.c > index 1bf9aa019b51..96e31832cb70 100644 > --- a/tests/test-vconn.c > +++ b/tests/test-vconn.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. > + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2017 Nicira, Inc. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -242,7 +242,7 @@ test_read_hello(struct ovs_cmdl_context *ctx) > if (retval == sizeof hello) { > enum ofpraw raw; > > - CHECK(hello.version, OFP13_VERSION); > + CHECK(hello.version, OFP14_VERSION); > CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); > CHECK(raw, OFPRAW_OFPT_HELLO); > CHECK(ntohs(hello.length), sizeof hello); > @@ -315,7 +315,7 @@ test_send_hello(const char *type, const void *out, size_t out_size, > if (retval == sizeof hello) { > enum ofpraw raw; > > - CHECK(hello.version, OFP13_VERSION); > + CHECK(hello.version, OFP14_VERSION); > CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); > CHECK(raw, OFPRAW_OFPT_HELLO); > CHECK(ntohs(hello.length), sizeof hello); > @@ -366,7 +366,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, OFP13_VERSION, > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > htonl(0x12345678), 0); > test_send_hello(type, hello->data, hello->size, 0); > ofpbuf_delete(hello); > @@ -382,7 +382,7 @@ test_send_long_hello(struct ovs_cmdl_context *ctx) > struct ofpbuf *hello; > enum { EXTRA_BYTES = 8 }; > > - hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP13_VERSION, > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > htonl(0x12345678), EXTRA_BYTES); > ofpbuf_put_zeros(hello, EXTRA_BYTES); > ofpmsg_update_length(hello); > @@ -398,7 +398,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, OFP13_VERSION, > + echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP14_VERSION, > htonl(0x12345678), 0); > test_send_hello(type, echo->data, echo->size, EPROTO); > ofpbuf_delete(echo); > @@ -424,7 +424,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, OFP13_VERSION, > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > htonl(0x12345678), 0); > ((struct ofp_header *) hello->data)->version = 0; > test_send_hello(type, hello->data, hello->size, EPROTO); > diff --git a/utilities/ovs-ofctl.8.in b/utilities/ovs-ofctl.8.in > index 96232a5003e4..0ea914c728b9 100644 > --- a/utilities/ovs-ofctl.8.in > +++ b/utilities/ovs-ofctl.8.in > @@ -2243,8 +2243,10 @@ format. > .IP "\fBOXM-OpenFlow12\fR" > .IQ "\fBOXM-OpenFlow13\fR" > .IQ "\fBOXM-OpenFlow14\fR" > +.IQ "\fBOXM-OpenFlow15\fR" > +.IQ "\fBOXM-OpenFlow16\fR" > These are the standard OXM (OpenFlow Extensible Match) flow format in > -OpenFlow 1.2, 1.3, and 1.4, respectively. > +OpenFlow 1.2 and later. > .RE > . > .IP > diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml > index 870c81318317..5375c4857d98 100644 > --- a/vswitchd/vswitch.xml > +++ b/vswitchd/vswitch.xml > @@ -857,12 +857,12 @@ > <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, and > - 1.3 are enabled by default if this column is empty. > + 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.4, 1.5, and 1.6 are not enabled by default because their > + OpenFlow 1.5 and 1.6 are not enabled by default because their > implementations are missing features. In addition, the OpenFlow 1.6 > specification is still under development and thus subject to change. > </p> > -- > 2.10.2 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
Thank you! I applied this to master. On Thu, Apr 27, 2017 at 09:56:45AM -0700, Yi-Hung Wei wrote: > Thanks for the patch. I cross-check this patch with 6dc5374435cc > ("Enable OpenFlow 1.0, 1.1, 1.2, and 1.3 by default."). It LGTM. > > Acked-by: Yi-Hung Wei <yihung.wei@gmail.com> > > On Mon, Apr 24, 2017 at 11:49 AM, Ben Pfaff <blp@ovn.org> wrote: > > Open vSwitch now supports all OpenFlow 1.4 required features, so enable > > it by default. > > > > Signed-off-by: Ben Pfaff <blp@ovn.org> > > --- > > Documentation/faq/openflow.rst | 28 +++++++++------------------- > > NEWS | 3 +++ > > include/openvswitch/ofp-util.h | 3 ++- > > lib/ofp-version.man | 22 ++++++++++++++++++---- > > tests/test-vconn.c | 14 +++++++------- > > utilities/ovs-ofctl.8.in | 4 +++- > > vswitchd/vswitch.xml | 6 +++--- > > 7 files changed, 45 insertions(+), 35 deletions(-) > > > > diff --git a/Documentation/faq/openflow.rst b/Documentation/faq/openflow.rst > > index d21bb4459395..7cd6161ddefb 100644 > > --- a/Documentation/faq/openflow.rst > > +++ b/Documentation/faq/openflow.rst > > @@ -34,29 +34,19 @@ Q: What versions of OpenFlow does Open vSwitch support? > > Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6 > > =============== ===== ===== ===== ===== ===== ===== ===== > > 1.9 and earlier yes --- --- --- --- --- --- > > - 1.10 yes --- (*) (*) --- --- --- > > - 1.11 yes --- (*) (*) --- --- --- > > - 2.0 yes (*) (*) (*) --- --- --- > > - 2.1 yes (*) (*) (*) --- --- --- > > + 1.10, 1.11 yes --- (*) (*) --- --- --- > > + 2.0, 2.1 yes (*) (*) (*) --- --- --- > > 2.2 yes (*) (*) (*) (%) (*) --- > > - 2.3 yes yes yes yes (*) (*) --- > > - 2.4 yes yes yes yes (*) (*) --- > > - 2.5 yes yes yes 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 (*) (*) > > =============== ===== ===== ===== ===== ===== ===== ===== > > > > - (*) Supported, with one or more missing features. > > + --- Not supported. > > + yes Supported and enabled by default > > + (*) Supported, but missing features, and must be enabled by user. > > (%) Experimental, unsafe implementation. > > > > - Open vSwitch 2.3 enables OpenFlow 1.0, 1.1, 1.2, and 1.3 by default in > > - ovs-vswitchd. In Open vSwitch 1.10 through 2.2, OpenFlow 1.1, 1.2, and 1.3 > > - must be enabled manually in ovs-vswitchd. > > - > > - Some versions of OpenFlow are supported with missing features and therefore > > - not enabled by default: OpenFlow 1.4 and 1.5, in Open vSwitch 2.3 and > > - later, as well as OpenFlow 1.6 in Open vSwitch 2.5 and later. Also, the > > - OpenFlow 1.6 specification is still under development and thus subject to > > - change. > > - > > In any case, the user may override the default: > > > > - To enable OpenFlow 1.0, 1.1, 1.2, and 1.3 on bridge br0:: > > @@ -83,7 +73,7 @@ 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.4 and 1.5 is solidly implemented, Open vSwitch > > + When support for OpenFlow 1.5 and 1.6 is solidly implemented, Open vSwitch > > will enable those version by default. > > > > Q: Does Open vSwitch support MPLS? > > diff --git a/NEWS b/NEWS > > index ea97d84a2dea..4632b80df698 100644 > > --- a/NEWS > > +++ b/NEWS > > @@ -22,6 +22,9 @@ Post-v2.7.0 > > * ovn-trace now has basic support for tracing distributed firewalls. > > - Add the command 'ovs-appctl stp/show' (see ovs-vswitchd(8)). > > - OpenFlow: > > + * All features required by OpenFlow 1.4 are now implemented, so > > + ovs-vswitchd now enables OpenFlow 1.4 by default (in addition to > > + OpenFlow 1.0 to 1.3). > > * Increased support for OpenFlow 1.6 (draft). > > * Bundles now support hashing by just nw_src or nw_dst. > > * The "learn" action now supports a "limit" option (see ovs-ofctl(8)). > > diff --git a/include/openvswitch/ofp-util.h b/include/openvswitch/ofp-util.h > > index f664055c3939..f37d181599b2 100644 > > --- a/include/openvswitch/ofp-util.h > > +++ b/include/openvswitch/ofp-util.h > > @@ -189,7 +189,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap); > > #define OFPUTIL_SUPPORTED_VERSIONS ((1u << OFP10_VERSION) | \ > > (1u << OFP11_VERSION) | \ > > (1u << OFP12_VERSION) | \ > > - (1u << OFP13_VERSION)) > > + (1u << OFP13_VERSION) | \ > > + (1u << OFP14_VERSION)) > > #define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS > > > > enum ofputil_protocol ofputil_protocols_from_string(const char *s); > > diff --git a/lib/ofp-version.man b/lib/ofp-version.man > > index 54fa1664e5f8..0ab70891d270 100644 > > --- a/lib/ofp-version.man > > +++ b/lib/ofp-version.man > > @@ -9,7 +9,6 @@ Sets the OpenFlow protocol versions that are allowed when establishing > > an OpenFlow session. > > . > > .IP > > -The following versions are considered to be ready for general use. > > These protocol versions are enabled by default: > > . > > .RS > > @@ -17,9 +16,9 @@ These protocol versions are enabled by default: > > \fBOpenFlow10\fR, for OpenFlow 1.0. > > .RE > > . > > -.IP > > -Support for the following protocol versions is provided for testing > > -and development purposes. They are not enabled by default: > > +The following protocol versions are generally supported, but for > > +compatibility with older versions of Open vSwitch they are not enabled > > +by default: > > . > > .RS > > .IP \(bu > > @@ -30,4 +29,19 @@ and development purposes. They are not enabled by default: > > . > > .IP \(bu > > \fBOpenFlow13\fR, for OpenFlow 1.3. > > +. > > +.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. > > +. > > +.IP \(bu > > +\fBOpenFlow16\fR, for OpenFlow 1.6. > > .RE > > diff --git a/tests/test-vconn.c b/tests/test-vconn.c > > index 1bf9aa019b51..96e31832cb70 100644 > > --- a/tests/test-vconn.c > > +++ b/tests/test-vconn.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. > > + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2017 Nicira, Inc. > > * > > * Licensed under the Apache License, Version 2.0 (the "License"); > > * you may not use this file except in compliance with the License. > > @@ -242,7 +242,7 @@ test_read_hello(struct ovs_cmdl_context *ctx) > > if (retval == sizeof hello) { > > enum ofpraw raw; > > > > - CHECK(hello.version, OFP13_VERSION); > > + CHECK(hello.version, OFP14_VERSION); > > CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); > > CHECK(raw, OFPRAW_OFPT_HELLO); > > CHECK(ntohs(hello.length), sizeof hello); > > @@ -315,7 +315,7 @@ test_send_hello(const char *type, const void *out, size_t out_size, > > if (retval == sizeof hello) { > > enum ofpraw raw; > > > > - CHECK(hello.version, OFP13_VERSION); > > + CHECK(hello.version, OFP14_VERSION); > > CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); > > CHECK(raw, OFPRAW_OFPT_HELLO); > > CHECK(ntohs(hello.length), sizeof hello); > > @@ -366,7 +366,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, OFP13_VERSION, > > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > > htonl(0x12345678), 0); > > test_send_hello(type, hello->data, hello->size, 0); > > ofpbuf_delete(hello); > > @@ -382,7 +382,7 @@ test_send_long_hello(struct ovs_cmdl_context *ctx) > > struct ofpbuf *hello; > > enum { EXTRA_BYTES = 8 }; > > > > - hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP13_VERSION, > > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > > htonl(0x12345678), EXTRA_BYTES); > > ofpbuf_put_zeros(hello, EXTRA_BYTES); > > ofpmsg_update_length(hello); > > @@ -398,7 +398,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, OFP13_VERSION, > > + echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP14_VERSION, > > htonl(0x12345678), 0); > > test_send_hello(type, echo->data, echo->size, EPROTO); > > ofpbuf_delete(echo); > > @@ -424,7 +424,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, OFP13_VERSION, > > + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, > > htonl(0x12345678), 0); > > ((struct ofp_header *) hello->data)->version = 0; > > test_send_hello(type, hello->data, hello->size, EPROTO); > > diff --git a/utilities/ovs-ofctl.8.in b/utilities/ovs-ofctl.8.in > > index 96232a5003e4..0ea914c728b9 100644 > > --- a/utilities/ovs-ofctl.8.in > > +++ b/utilities/ovs-ofctl.8.in > > @@ -2243,8 +2243,10 @@ format. > > .IP "\fBOXM-OpenFlow12\fR" > > .IQ "\fBOXM-OpenFlow13\fR" > > .IQ "\fBOXM-OpenFlow14\fR" > > +.IQ "\fBOXM-OpenFlow15\fR" > > +.IQ "\fBOXM-OpenFlow16\fR" > > These are the standard OXM (OpenFlow Extensible Match) flow format in > > -OpenFlow 1.2, 1.3, and 1.4, respectively. > > +OpenFlow 1.2 and later. > > .RE > > . > > .IP > > diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml > > index 870c81318317..5375c4857d98 100644 > > --- a/vswitchd/vswitch.xml > > +++ b/vswitchd/vswitch.xml > > @@ -857,12 +857,12 @@ > > <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, and > > - 1.3 are enabled by default if this column is empty. > > + 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.4, 1.5, and 1.6 are not enabled by default because their > > + OpenFlow 1.5 and 1.6 are not enabled by default because their > > implementations are missing features. In addition, the OpenFlow 1.6 > > specification is still under development and thus subject to change. > > </p> > > -- > > 2.10.2 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
diff --git a/Documentation/faq/openflow.rst b/Documentation/faq/openflow.rst index d21bb4459395..7cd6161ddefb 100644 --- a/Documentation/faq/openflow.rst +++ b/Documentation/faq/openflow.rst @@ -34,29 +34,19 @@ Q: What versions of OpenFlow does Open vSwitch support? Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6 =============== ===== ===== ===== ===== ===== ===== ===== 1.9 and earlier yes --- --- --- --- --- --- - 1.10 yes --- (*) (*) --- --- --- - 1.11 yes --- (*) (*) --- --- --- - 2.0 yes (*) (*) (*) --- --- --- - 2.1 yes (*) (*) (*) --- --- --- + 1.10, 1.11 yes --- (*) (*) --- --- --- + 2.0, 2.1 yes (*) (*) (*) --- --- --- 2.2 yes (*) (*) (*) (%) (*) --- - 2.3 yes yes yes yes (*) (*) --- - 2.4 yes yes yes yes (*) (*) --- - 2.5 yes yes yes 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 (*) (*) =============== ===== ===== ===== ===== ===== ===== ===== - (*) Supported, with one or more missing features. + --- Not supported. + yes Supported and enabled by default + (*) Supported, but missing features, and must be enabled by user. (%) Experimental, unsafe implementation. - Open vSwitch 2.3 enables OpenFlow 1.0, 1.1, 1.2, and 1.3 by default in - ovs-vswitchd. In Open vSwitch 1.10 through 2.2, OpenFlow 1.1, 1.2, and 1.3 - must be enabled manually in ovs-vswitchd. - - Some versions of OpenFlow are supported with missing features and therefore - not enabled by default: OpenFlow 1.4 and 1.5, in Open vSwitch 2.3 and - later, as well as OpenFlow 1.6 in Open vSwitch 2.5 and later. Also, the - OpenFlow 1.6 specification is still under development and thus subject to - change. - In any case, the user may override the default: - To enable OpenFlow 1.0, 1.1, 1.2, and 1.3 on bridge br0:: @@ -83,7 +73,7 @@ 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.4 and 1.5 is solidly implemented, Open vSwitch + When support for OpenFlow 1.5 and 1.6 is solidly implemented, Open vSwitch will enable those version by default. Q: Does Open vSwitch support MPLS? diff --git a/NEWS b/NEWS index ea97d84a2dea..4632b80df698 100644 --- a/NEWS +++ b/NEWS @@ -22,6 +22,9 @@ Post-v2.7.0 * ovn-trace now has basic support for tracing distributed firewalls. - Add the command 'ovs-appctl stp/show' (see ovs-vswitchd(8)). - OpenFlow: + * All features required by OpenFlow 1.4 are now implemented, so + ovs-vswitchd now enables OpenFlow 1.4 by default (in addition to + OpenFlow 1.0 to 1.3). * Increased support for OpenFlow 1.6 (draft). * Bundles now support hashing by just nw_src or nw_dst. * The "learn" action now supports a "limit" option (see ovs-ofctl(8)). diff --git a/include/openvswitch/ofp-util.h b/include/openvswitch/ofp-util.h index f664055c3939..f37d181599b2 100644 --- a/include/openvswitch/ofp-util.h +++ b/include/openvswitch/ofp-util.h @@ -189,7 +189,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap); #define OFPUTIL_SUPPORTED_VERSIONS ((1u << OFP10_VERSION) | \ (1u << OFP11_VERSION) | \ (1u << OFP12_VERSION) | \ - (1u << OFP13_VERSION)) + (1u << OFP13_VERSION) | \ + (1u << OFP14_VERSION)) #define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS enum ofputil_protocol ofputil_protocols_from_string(const char *s); diff --git a/lib/ofp-version.man b/lib/ofp-version.man index 54fa1664e5f8..0ab70891d270 100644 --- a/lib/ofp-version.man +++ b/lib/ofp-version.man @@ -9,7 +9,6 @@ Sets the OpenFlow protocol versions that are allowed when establishing an OpenFlow session. . .IP -The following versions are considered to be ready for general use. These protocol versions are enabled by default: . .RS @@ -17,9 +16,9 @@ These protocol versions are enabled by default: \fBOpenFlow10\fR, for OpenFlow 1.0. .RE . -.IP -Support for the following protocol versions is provided for testing -and development purposes. They are not enabled by default: +The following protocol versions are generally supported, but for +compatibility with older versions of Open vSwitch they are not enabled +by default: . .RS .IP \(bu @@ -30,4 +29,19 @@ and development purposes. They are not enabled by default: . .IP \(bu \fBOpenFlow13\fR, for OpenFlow 1.3. +. +.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. +. +.IP \(bu +\fBOpenFlow16\fR, for OpenFlow 1.6. .RE diff --git a/tests/test-vconn.c b/tests/test-vconn.c index 1bf9aa019b51..96e31832cb70 100644 --- a/tests/test-vconn.c +++ b/tests/test-vconn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. + * Copyright (c) 2009, 2010, 2011, 2012, 2013, 2014, 2017 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -242,7 +242,7 @@ test_read_hello(struct ovs_cmdl_context *ctx) if (retval == sizeof hello) { enum ofpraw raw; - CHECK(hello.version, OFP13_VERSION); + CHECK(hello.version, OFP14_VERSION); CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); CHECK(raw, OFPRAW_OFPT_HELLO); CHECK(ntohs(hello.length), sizeof hello); @@ -315,7 +315,7 @@ test_send_hello(const char *type, const void *out, size_t out_size, if (retval == sizeof hello) { enum ofpraw raw; - CHECK(hello.version, OFP13_VERSION); + CHECK(hello.version, OFP14_VERSION); CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0); CHECK(raw, OFPRAW_OFPT_HELLO); CHECK(ntohs(hello.length), sizeof hello); @@ -366,7 +366,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, OFP13_VERSION, + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, htonl(0x12345678), 0); test_send_hello(type, hello->data, hello->size, 0); ofpbuf_delete(hello); @@ -382,7 +382,7 @@ test_send_long_hello(struct ovs_cmdl_context *ctx) struct ofpbuf *hello; enum { EXTRA_BYTES = 8 }; - hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP13_VERSION, + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, htonl(0x12345678), EXTRA_BYTES); ofpbuf_put_zeros(hello, EXTRA_BYTES); ofpmsg_update_length(hello); @@ -398,7 +398,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, OFP13_VERSION, + echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP14_VERSION, htonl(0x12345678), 0); test_send_hello(type, echo->data, echo->size, EPROTO); ofpbuf_delete(echo); @@ -424,7 +424,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, OFP13_VERSION, + hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION, htonl(0x12345678), 0); ((struct ofp_header *) hello->data)->version = 0; test_send_hello(type, hello->data, hello->size, EPROTO); diff --git a/utilities/ovs-ofctl.8.in b/utilities/ovs-ofctl.8.in index 96232a5003e4..0ea914c728b9 100644 --- a/utilities/ovs-ofctl.8.in +++ b/utilities/ovs-ofctl.8.in @@ -2243,8 +2243,10 @@ format. .IP "\fBOXM-OpenFlow12\fR" .IQ "\fBOXM-OpenFlow13\fR" .IQ "\fBOXM-OpenFlow14\fR" +.IQ "\fBOXM-OpenFlow15\fR" +.IQ "\fBOXM-OpenFlow16\fR" These are the standard OXM (OpenFlow Extensible Match) flow format in -OpenFlow 1.2, 1.3, and 1.4, respectively. +OpenFlow 1.2 and later. .RE . .IP diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml index 870c81318317..5375c4857d98 100644 --- a/vswitchd/vswitch.xml +++ b/vswitchd/vswitch.xml @@ -857,12 +857,12 @@ <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, and - 1.3 are enabled by default if this column is empty. + 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.4, 1.5, and 1.6 are not enabled by default because their + OpenFlow 1.5 and 1.6 are not enabled by default because their implementations are missing features. In addition, the OpenFlow 1.6 specification is still under development and thus subject to change. </p>
Open vSwitch now supports all OpenFlow 1.4 required features, so enable it by default. Signed-off-by: Ben Pfaff <blp@ovn.org> --- Documentation/faq/openflow.rst | 28 +++++++++------------------- NEWS | 3 +++ include/openvswitch/ofp-util.h | 3 ++- lib/ofp-version.man | 22 ++++++++++++++++++---- tests/test-vconn.c | 14 +++++++------- utilities/ovs-ofctl.8.in | 4 +++- vswitchd/vswitch.xml | 6 +++--- 7 files changed, 45 insertions(+), 35 deletions(-)