mirror of
https://github.com/openvswitch/ovs
synced 2025-08-29 13:27:59 +00:00
OpenFlow: Enable OpenFlow 1.5 by default.
Open vSwitch now supports all OpenFlow 1.5 required features, so enable it by default. Acked-by: Numan Siddique <nusiddiq@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
parent
4332b67199
commit
13c952ca05
@ -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
|
A: The following table lists the versions of OpenFlow supported by each
|
||||||
version of Open vSwitch:
|
version of Open vSwitch:
|
||||||
|
|
||||||
=============== ===== ===== ===== ===== ===== =====
|
===================== ===== ===== ===== ===== ===== =====
|
||||||
Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5
|
Open vSwitch OF1.0 OF1.1 OF1.2 OF1.3 OF1.4 OF1.5
|
||||||
=============== ===== ===== ===== ===== ===== =====
|
===================== ===== ===== ===== ===== ===== =====
|
||||||
1.9 and earlier yes --- --- --- --- ---
|
1.9 and earlier yes --- --- --- --- ---
|
||||||
1.10, 1.11 yes --- (*) (*) --- ---
|
1.10, 1.11 yes --- (*) (*) --- ---
|
||||||
2.0, 2.1 yes (*) (*) (*) --- ---
|
2.0, 2.1 yes (*) (*) (*) --- ---
|
||||||
2.2 yes (*) (*) (*) (%) (*)
|
2.2 yes (*) (*) (*) (%) (*)
|
||||||
2.3, 2.4 yes yes yes yes (*) (*)
|
2.3, 2.4 yes yes yes yes (*) (*)
|
||||||
2.5, 2.6, 2.7 yes yes yes yes (*) (*)
|
2.5, 2.6, 2.7 yes yes yes yes (*) (*)
|
||||||
2.8 yes 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.
|
--- Not supported.
|
||||||
yes Supported and enabled by default
|
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.)
|
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.5 is solidly implemented, Open vSwitch will
|
|
||||||
enable it by default.
|
|
||||||
|
|
||||||
Q: Does Open vSwitch support MPLS?
|
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+
|
different hash function, using a Netronome extension to the OpenFlow 1.5+
|
||||||
group_mod message. For more information, see
|
group_mod message. For more information, see
|
||||||
Documentation/group-selection-method-property.txt in the Open vSwitch
|
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.
|
Q: An OpenFlow "select" group isn't dividing packets evenly among the buckets.
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ Contents
|
|||||||
1. Introduction
|
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
|
controller to provide more information on the selection method for select
|
||||||
groups. This proposal is in the form of an enhanced select group type.
|
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
|
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
|
(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
|
method of select groups to be passed by the controller. In particular it
|
||||||
allows controllers to:
|
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
|
Modifications to the group table from the controller may be done with
|
||||||
OFPT_GROUP_MOD message described (draft) Open Flow 1.5. Group Entry
|
a OFPT_GROUP_MOD message described Open Flow 1.5. Group Entry
|
||||||
Message. Of relevance here is that (draft) Open Flow 1.5 group messages
|
Message. Of relevance here is that Open Flow 1.5 group messages have
|
||||||
have properties.
|
properties.
|
||||||
|
|
||||||
This proposal is defined in terms of an implementation of struct
|
This proposal is defined in terms of an implementation of struct
|
||||||
ofp_group_prop_experimenter which is described in (draft) Open Flow 1.5.
|
ofp_group_prop_experimenter which is described in Open Flow 1.5. The
|
||||||
The implementation is:
|
implementation is:
|
||||||
|
|
||||||
struct ntr_group_prop_selection_method {
|
struct ntr_group_prop_selection_method {
|
||||||
ovs_be16 type; /* OFPGPT_EXPERIMENTER. */
|
ovs_be16 type; /* OFPGPT_EXPERIMENTER. */
|
||||||
|
3
NEWS
3
NEWS
@ -6,6 +6,9 @@ Post-v2.11.0
|
|||||||
* Add support for vHost Post-copy Live Migration (experimental).
|
* Add support for vHost Post-copy Live Migration (experimental).
|
||||||
* OVS validated with DPDK 18.11.1 which is recommended to be used.
|
* OVS validated with DPDK 18.11.1 which is recommended to be used.
|
||||||
- OpenFlow:
|
- 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.
|
* Removed support for OpenFlow 1.6 (draft), which ONF abandoned.
|
||||||
* New action "check_pkt_larger".
|
* New action "check_pkt_larger".
|
||||||
* Support for OpenFlow 1.5 "meter" action.
|
* Support for OpenFlow 1.5 "meter" action.
|
||||||
|
@ -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");
|
* 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.
|
||||||
@ -151,7 +151,8 @@ enum ofputil_protocol ofputil_protocols_from_version_bitmap(uint32_t bitmap);
|
|||||||
(1u << OFP11_VERSION) | \
|
(1u << OFP11_VERSION) | \
|
||||||
(1u << OFP12_VERSION) | \
|
(1u << OFP12_VERSION) | \
|
||||||
(1u << OFP13_VERSION) | \
|
(1u << OFP13_VERSION) | \
|
||||||
(1u << OFP14_VERSION))
|
(1u << OFP14_VERSION) | \
|
||||||
|
(1u << OFP15_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);
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#define OFP_VERSION_OPTION_HANDLERS \
|
#define OFP_VERSION_OPTION_HANDLERS \
|
||||||
case 'V': \
|
case 'V': \
|
||||||
ovs_print_version(OFP10_VERSION, OFP14_VERSION); \
|
ovs_print_version(OFP10_VERSION, OFP15_VERSION); \
|
||||||
exit(EXIT_SUCCESS); \
|
exit(EXIT_SUCCESS); \
|
||||||
\
|
\
|
||||||
case 'O': \
|
case 'O': \
|
||||||
|
@ -27,12 +27,7 @@ by default:
|
|||||||
.
|
.
|
||||||
.IP \(bu
|
.IP \(bu
|
||||||
\fBOpenFlow14\fR, for OpenFlow 1.4.
|
\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
|
.IP \(bu
|
||||||
\fBOpenFlow15\fR, for OpenFlow 1.5.
|
\fBOpenFlow15\fR, for OpenFlow 1.5.
|
||||||
|
.RE
|
||||||
|
@ -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");
|
* 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.
|
||||||
@ -239,7 +239,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, OFP14_VERSION);
|
CHECK(hello.version, OFP15_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);
|
||||||
@ -312,7 +312,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, OFP14_VERSION);
|
CHECK(hello.version, OFP15_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);
|
||||||
@ -363,7 +363,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, OFP14_VERSION,
|
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_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);
|
||||||
@ -379,7 +379,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, OFP14_VERSION,
|
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_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);
|
||||||
@ -395,7 +395,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, OFP14_VERSION,
|
echo = ofpraw_alloc_xid(OFPRAW_OFPT_ECHO_REQUEST, OFP15_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);
|
||||||
@ -421,7 +421,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, OFP14_VERSION,
|
hello = ofpraw_alloc_xid(OFPRAW_OFPT_HELLO, OFP15_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);
|
||||||
|
@ -1269,16 +1269,9 @@
|
|||||||
</column>
|
</column>
|
||||||
|
|
||||||
<column name="protocols">
|
<column name="protocols">
|
||||||
<p>
|
List of OpenFlow protocols that may be used when negotiating a
|
||||||
List of OpenFlow protocols that may be used when negotiating
|
connection with a controller. OpenFlow 1.0, 1.1, 1.2, 1.3, 1.4, and
|
||||||
a connection with a controller. OpenFlow 1.0, 1.1, 1.2, 1.3, and
|
1.5 are enabled by default if this column is empty.
|
||||||
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>
|
|
||||||
</column>
|
</column>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user