2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 01:51:26 +00:00

OpenFlow: Enable OpenFlow 1.4 by default.

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

Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
Ben Pfaff 2017-04-24 11:49:59 -07:00
parent 01f92b743e
commit 8d34857911
7 changed files with 45 additions and 35 deletions

View File

@ -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?

3
NEWS
View File

@ -26,6 +26,9 @@ Post-v2.7.0
abbreviated to 4 hex digits.
- 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)).

View File

@ -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);

View File

@ -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

View File

@ -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);

View File

@ -2245,8 +2245,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

View File

@ -858,12 +858,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>