diff mbox

[ovs-dev] OpenFlow: Enable OpenFlow 1.4 by default.

Message ID 20170424184959.5175-1-blp@ovn.org
State Accepted
Headers show

Commit Message

Ben Pfaff April 24, 2017, 6:49 p.m. UTC
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(-)

Comments

Yi-Hung Wei April 27, 2017, 4:56 p.m. UTC | #1
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
Ben Pfaff May 1, 2017, 5:39 p.m. UTC | #2
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 mbox

Patch

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>