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:
parent
01f92b743e
commit
8d34857911
@ -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
|
Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5 OF1.6
|
||||||
=============== ===== ===== ===== ===== ===== ===== =====
|
=============== ===== ===== ===== ===== ===== ===== =====
|
||||||
1.9 and earlier yes --- --- --- --- --- ---
|
1.9 and earlier yes --- --- --- --- --- ---
|
||||||
1.10 yes --- (*) (*) --- --- ---
|
1.10, 1.11 yes --- (*) (*) --- --- ---
|
||||||
1.11 yes --- (*) (*) --- --- ---
|
2.0, 2.1 yes (*) (*) (*) --- --- ---
|
||||||
2.0 yes (*) (*) (*) --- --- ---
|
|
||||||
2.1 yes (*) (*) (*) --- --- ---
|
|
||||||
2.2 yes (*) (*) (*) (%) (*) ---
|
2.2 yes (*) (*) (*) (%) (*) ---
|
||||||
2.3 yes yes yes yes (*) (*) ---
|
2.3, 2.4 yes yes yes yes (*) (*) ---
|
||||||
2.4 yes yes yes yes (*) (*) ---
|
2.5, 2.6, 2.7 yes yes yes yes (*) (*) (*)
|
||||||
2.5 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.
|
(%) 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:
|
In any case, the user may override the default:
|
||||||
|
|
||||||
- To enable OpenFlow 1.0, 1.1, 1.2, and 1.3 on bridge br0::
|
- 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.)
|
could cause crashes. We don't recommend enabling it.)
|
||||||
|
|
||||||
:doc:`/topics/openflow` tracks support for OpenFlow 1.1 and later features.
|
: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.
|
will enable those version by default.
|
||||||
|
|
||||||
Q: Does Open vSwitch support MPLS?
|
Q: Does Open vSwitch support MPLS?
|
||||||
|
3
NEWS
3
NEWS
@ -26,6 +26,9 @@ Post-v2.7.0
|
|||||||
abbreviated to 4 hex digits.
|
abbreviated to 4 hex digits.
|
||||||
- Add the command 'ovs-appctl stp/show' (see ovs-vswitchd(8)).
|
- Add the command 'ovs-appctl stp/show' (see ovs-vswitchd(8)).
|
||||||
- OpenFlow:
|
- 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).
|
* Increased support for OpenFlow 1.6 (draft).
|
||||||
* Bundles now support hashing by just nw_src or nw_dst.
|
* Bundles now support hashing by just nw_src or nw_dst.
|
||||||
* The "learn" action now supports a "limit" option (see ovs-ofctl(8)).
|
* The "learn" action now supports a "limit" option (see ovs-ofctl(8)).
|
||||||
|
@ -189,7 +189,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap);
|
|||||||
#define OFPUTIL_SUPPORTED_VERSIONS ((1u << OFP10_VERSION) | \
|
#define OFPUTIL_SUPPORTED_VERSIONS ((1u << OFP10_VERSION) | \
|
||||||
(1u << OFP11_VERSION) | \
|
(1u << OFP11_VERSION) | \
|
||||||
(1u << OFP12_VERSION) | \
|
(1u << OFP12_VERSION) | \
|
||||||
(1u << OFP13_VERSION))
|
(1u << OFP13_VERSION) | \
|
||||||
|
(1u << OFP14_VERSION))
|
||||||
#define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS
|
#define OFPUTIL_DEFAULT_VERSIONS OFPUTIL_SUPPORTED_VERSIONS
|
||||||
|
|
||||||
enum ofputil_protocol ofputil_protocols_from_string(const char *s);
|
enum ofputil_protocol ofputil_protocols_from_string(const char *s);
|
||||||
|
@ -9,7 +9,6 @@ Sets the OpenFlow protocol versions that are allowed when establishing
|
|||||||
an OpenFlow session.
|
an OpenFlow session.
|
||||||
.
|
.
|
||||||
.IP
|
.IP
|
||||||
The following versions are considered to be ready for general use.
|
|
||||||
These protocol versions are enabled by default:
|
These protocol versions are enabled by default:
|
||||||
.
|
.
|
||||||
.RS
|
.RS
|
||||||
@ -17,9 +16,9 @@ These protocol versions are enabled by default:
|
|||||||
\fBOpenFlow10\fR, for OpenFlow 1.0.
|
\fBOpenFlow10\fR, for OpenFlow 1.0.
|
||||||
.RE
|
.RE
|
||||||
.
|
.
|
||||||
.IP
|
The following protocol versions are generally supported, but for
|
||||||
Support for the following protocol versions is provided for testing
|
compatibility with older versions of Open vSwitch they are not enabled
|
||||||
and development purposes. They are not enabled by default:
|
by default:
|
||||||
.
|
.
|
||||||
.RS
|
.RS
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
@ -30,4 +29,19 @@ and development purposes. They are not enabled by default:
|
|||||||
.
|
.
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
\fBOpenFlow13\fR, for OpenFlow 1.3.
|
\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
|
.RE
|
||||||
|
@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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) {
|
if (retval == sizeof hello) {
|
||||||
enum ofpraw raw;
|
enum ofpraw raw;
|
||||||
|
|
||||||
CHECK(hello.version, OFP13_VERSION);
|
CHECK(hello.version, OFP14_VERSION);
|
||||||
CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
|
CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
|
||||||
CHECK(raw, OFPRAW_OFPT_HELLO);
|
CHECK(raw, OFPRAW_OFPT_HELLO);
|
||||||
CHECK(ntohs(hello.length), sizeof 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) {
|
if (retval == sizeof hello) {
|
||||||
enum ofpraw raw;
|
enum ofpraw raw;
|
||||||
|
|
||||||
CHECK(hello.version, OFP13_VERSION);
|
CHECK(hello.version, OFP14_VERSION);
|
||||||
CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
|
CHECK(ofpraw_decode_partial(&raw, &hello, sizeof hello), 0);
|
||||||
CHECK(raw, OFPRAW_OFPT_HELLO);
|
CHECK(raw, OFPRAW_OFPT_HELLO);
|
||||||
CHECK(ntohs(hello.length), sizeof 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];
|
const char *type = ctx->argv[1];
|
||||||
struct ofpbuf *hello;
|
struct ofpbuf *hello;
|
||||||
|
|
||||||
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP13_VERSION,
|
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION,
|
||||||
htonl(0x12345678), 0);
|
htonl(0x12345678), 0);
|
||||||
test_send_hello(type, hello->data, hello->size, 0);
|
test_send_hello(type, hello->data, hello->size, 0);
|
||||||
ofpbuf_delete(hello);
|
ofpbuf_delete(hello);
|
||||||
@ -382,7 +382,7 @@ test_send_long_hello(struct ovs_cmdl_context *ctx)
|
|||||||
struct ofpbuf *hello;
|
struct ofpbuf *hello;
|
||||||
enum { EXTRA_BYTES = 8 };
|
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);
|
htonl(0x12345678), EXTRA_BYTES);
|
||||||
ofpbuf_put_zeros(hello, EXTRA_BYTES);
|
ofpbuf_put_zeros(hello, EXTRA_BYTES);
|
||||||
ofpmsg_update_length(hello);
|
ofpmsg_update_length(hello);
|
||||||
@ -398,7 +398,7 @@ test_send_echo_hello(struct ovs_cmdl_context *ctx)
|
|||||||
const char *type = ctx->argv[1];
|
const char *type = ctx->argv[1];
|
||||||
struct ofpbuf *echo;
|
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);
|
htonl(0x12345678), 0);
|
||||||
test_send_hello(type, echo->data, echo->size, EPROTO);
|
test_send_hello(type, echo->data, echo->size, EPROTO);
|
||||||
ofpbuf_delete(echo);
|
ofpbuf_delete(echo);
|
||||||
@ -424,7 +424,7 @@ test_send_invalid_version_hello(struct ovs_cmdl_context *ctx)
|
|||||||
const char *type = ctx->argv[1];
|
const char *type = ctx->argv[1];
|
||||||
struct ofpbuf *hello;
|
struct ofpbuf *hello;
|
||||||
|
|
||||||
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP13_VERSION,
|
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP14_VERSION,
|
||||||
htonl(0x12345678), 0);
|
htonl(0x12345678), 0);
|
||||||
((struct ofp_header *) hello->data)->version = 0;
|
((struct ofp_header *) hello->data)->version = 0;
|
||||||
test_send_hello(type, hello->data, hello->size, EPROTO);
|
test_send_hello(type, hello->data, hello->size, EPROTO);
|
||||||
|
@ -2245,8 +2245,10 @@ format.
|
|||||||
.IP "\fBOXM-OpenFlow12\fR"
|
.IP "\fBOXM-OpenFlow12\fR"
|
||||||
.IQ "\fBOXM-OpenFlow13\fR"
|
.IQ "\fBOXM-OpenFlow13\fR"
|
||||||
.IQ "\fBOXM-OpenFlow14\fR"
|
.IQ "\fBOXM-OpenFlow14\fR"
|
||||||
|
.IQ "\fBOXM-OpenFlow15\fR"
|
||||||
|
.IQ "\fBOXM-OpenFlow16\fR"
|
||||||
These are the standard OXM (OpenFlow Extensible Match) flow format in
|
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
|
.RE
|
||||||
.
|
.
|
||||||
.IP
|
.IP
|
||||||
|
@ -858,12 +858,12 @@
|
|||||||
<column name="protocols">
|
<column name="protocols">
|
||||||
<p>
|
<p>
|
||||||
List of OpenFlow protocols that may be used when negotiating
|
List of OpenFlow protocols that may be used when negotiating
|
||||||
a connection with a controller. OpenFlow 1.0, 1.1, 1.2, and
|
a connection with a controller. OpenFlow 1.0, 1.1, 1.2, 1.3, and
|
||||||
1.3 are enabled by default if this column is empty.
|
1.4 are enabled by default if this column is empty.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<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
|
implementations are missing features. In addition, the OpenFlow 1.6
|
||||||
specification is still under development and thus subject to change.
|
specification is still under development and thus subject to change.
|
||||||
</p>
|
</p>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user