This repository was archived by the owner on Jul 8, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathRELEASE-NOTES
More file actions
178 lines (152 loc) · 11 KB
/
RELEASE-NOTES
File metadata and controls
178 lines (152 loc) · 11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
OpenFlow 0.9 Release : July 20, 2009
* Failover
The reference implementation now includes a simple failover mechanism. A switch can be configured with a list of controllers. If the first controller fails, it will automatically switch over to the second controller on the list.
* Emergency Flow Cache
The protocol and reference implementation have been extended to allow insertion and management of emergency flow entries.
Emergency-specific flow entries are inactive until a switch loses connectivity from the controller. If this happens, the switch invalidates all normal flow table entries and copies all emergency flows into the normal flow table.
Upon connecting to a controller again, all entries in the flow cache stay active. The controller then has the option of resetting the flow cache if needed.
* Barrier Command
The Barrier Command is a mechanism to get notified when an OpenFlow message has finished executing on the switch. When a switch receives a Barrier message it must first complete all commands sent before the Barrier message before executing any commands after it. When all commands before the Barrier message have completed, it must send a Barrier Reply message back to the controller.
* Match on VLAN Priority Bits
There is an optional new feature that allows matching on priority VLAN fields. Pre 0.9, the VLAN id is a field used in identifying a flow, but the priority bits in the VLAN tag are not. In this release we include the priority bits as a separate field to identify flows. Matching is possible as either an exact match on the 3 priority bits, or as a wildcard for the entire 3 bits.
* Selective Flow Expirations
Flow expiration messages can now be requested on a per-flow, rather than per-switch granularity.
* Flow Mod Behavior
There now is a CHECK_OVERLAP flag to flow mods which requires the switch to do the (potentially more costly) check that there doesn't already exist a conflicting flow with the same priority. If there is one, the mod fails and an error code is returned. Support for this flag is required in an OpenFlow switch.
* Flow Expiration Duration
The meaning of the "duration" field in the Flow Expiration message has been changed slightly. Previously there were conflicting definitions of this in the spec. In 0.9 the value returned will be the time that the flow was active and not include the timeout period.
* Notification for Flow Deletes
If a controller deletes a flow it now receives a notification if the notification bit is set. In previous releases only flow expirations but not delete actions would trigger notifications.
* Rewrite DSCP in IP ToS header
There is now an added Flow action to rewrite the DiffServ CodePoint bits part of the IP ToS field in the IP header. This enables basic support for basic QoS with OpenFlow in in some switches. A more complete QoS framework is planned for a future OpenFlow release.
* Port Enumeration now starts at 1
Previous releases of OpenFlow had port numbers start at 0, release 0.9 changes them to start at 1.
* Other changes to the Specification
* 6633/TCP is now the recommended default OpenFlow Port. Long term the goal is to get a IANA approved port for OpenFlow.
* The use of "Type 1" and "Type 0" has been depreciated and references to it have been removed.
* Clarified Matching Behavior for Flow Modification and Stats
* Made explicit that packets received on ports that are disabled by spanning tree must follow the normal flow table processing path.
* Clarified that transaction ID in header should match offending message for OFPET_BAD_REQUEST, OFPET_BAD_ACTION, OFPET_FLOW_MOD_FAILED.
* Clarified the format for the Strip VLAN Action
* Clarify behavior for packets that are buffered on the switch while switch is waiting for a reply from controller
* Added the new EPERM Error Type
* Fixed Flow Table Matching Diagram
* Clarified datapath ID 64 bits, up from 48 bits
* Clarified miss-send-len and max-len of output action
OpenFlow 1.0 Release : December 31, 2009
* Slicing
OpenFlow now supports multiple queues per output port. Queues support the ability to provide minimum bandwidth guarantees; the bandwidth allocated to each queue is configurable. The name slicing is derived from the ability to provide a slice of the available network bandwidth to each queue.
* Flow cookies
Flows have been extended to include an opaque identifier, referred to as a cookie. The cookie is specified by the controller when the flow is installed; the cookie will be returned as part of each flow stats and flow expired message.
* User-specifiable datapath description
The OFPST_DESC (switch description) reply now includes a datapath description field. This is a user-specifiable field that allows a switch to return a string specified by the switch owner to describe the switch.
* Match on IP fields in ARP packets
The reference implementation can now match on IP fields inside ARP packets. The source and destination protocol address are mapped to the nw_src and nw_dst fields respecitively, and the opcode is mapped to the nw_proto field.
* Match on IP ToS/DSCP bits
OpenFlow now supports matching on the IP ToS/DSCP bits.
* Querying port stats for individual ports
Port stat request messages include a port_no field to allow stats for individual ports to be queried. Port stats for all ports can still be requested by specifying OFPP_NONE as the port number.
* Improved flow duration resolution in stats/expiry messages
Flow durations in stats and expiry messages are now expressed with nanosecond resolution. Note that the accuracy of flow durations in the reference implementation is on the order of milliseconds. (The actual accuracy is in part dependent upon kernel parameters.)
* Other changes to the Specification
* remove multi_phy_tx spec text and capability bit
* clarify execution order of actions
* replace SSL refs with TLS
* resolve overlap ambiguity
* clarify flow mod to non-existing port
* clarify port definition
* update packet flow diagram
* update header parsing diagram for ICMP
* fix English ambiguity for flow-removed messages
* fix async message English ambiguity
* note that multiple controller support is undefined
* clarify that byte equals octet
* note counter wrap-around
* removed warning not to build a switch from this specification
OpenFlow 1.1 Release : February 28, 2011
* Multiple Tables pipeline
The switch now expose a pipeline with multiple tables.
Flow entry have instruction to control pipeline processing
Controller can choose packet traversal of tables via goto instruction
Metadata field (64 bits) can be set and match in tables
Packet actions can be merged in packet action set
Packet action set is executed at the end of pipeline
Packet actions can be applied between table stages
Table miss can send to controller, continue to next table or drop
Rudimentary table capability and configuration
* Groups
Group indirection to represent a set of ports
Group table with 4 types of groups :
o All - used for multicast and flooding
o Select - used for multipath
o Indirect - simple indirection
o Fast Failover - use first live port
Group action to direct a flow to a group
* Tags : MPLS & VLAN
Support for VLAN and QinQ, adding, modifying and removing VLAN headers
Support for MPLS, adding, modifying and removing MPLS shim headers
* Virtual ports :
Enable switch to provide virtual port as OpenFlow ports
Augment packet-in to report both virtual and physical ports
* Miscellaneous
Remove 802.1d-specific text from spec
Remove Emergency Flow Cache from spec
Cookie Enhancements Proposal
Set_queue action (unbundled from output port)
Maskable DL and NW address match fields
Add TTL decrement, set and copy actions for IPv4 and MPLS
SCTP header matching and rewriting support
Set ECN action
Connection interruption trigger fail secure or fail standalone mode
Define message handling : no loss, may reorder if no barrier
* Many other bug fixes, rewording and clarifications
OpenFlow 1.2 Release : (Target) December 12th, 2011
Please refers to the bug tracking ID for more details on each change
* Extensible match support (EXT-1):
The ofp_match structure has been updated from a fixed length structure
to a TLV (OXM), which dramatically simplifies the addition of new
packet match fields.
Removed a lot of overloading/cludgery from OF1.1 ofp_match:
e.g,. tcp.src_port, udp.src_port, and icmp.code now different fields
Modify VLAN matching to be more flexible (EXT-26)
Add vendor classes and experimenter matches (EXT-42)
Enable flexible match field expressions (EXT-56, EXT-33)
* Extensible 'set_field' packet rewriting support (EXT-13):
Reuse match TLV structure (OXM) in a single generic action
Cleaner specification and eases cost of introducing new fields
* Extensible metadata expressing in 'packet-in' (EXT-6)
Reuse match TLV structure (OXM) to describe metadata in packet-in
Include the 'metadata' field in packet-in
Allow to optionally include packet header fields in TLV structure
* Extensible Error messages via experimenter error type (EXT-2)
* IPv6 support added (EXT-1):
Added support for matching on IPv6 source address, destination address,
protocol number, traffic class, ICMPv6 type, ICMPv6 code and
IPv6 neighboor discovery header fields
Added support for matching on IPv6 flow label (EXT-36)
* Simplified behaviour of flow-mod request (EXT-30)
MODIFY and MODIFY_STRICT commands never insert new flows in the table
New flag OFPFF_RESET_COUNTS to control counter reset
* Removed packet parsing specification (EXT-3)
OpenFlow does not mandate how to parse packets
Parsing consistency acheived via OXM pre-requisite
* Controller role change mechanism (EXT-39):
Simple mechanism to support multiple controllers for failover
Switches may now connect to multiple controllers in parallel
Enable each controller to change its roles to equal, master or slave
* Minor spec changes:
* Per-table metadata bitmask capabilities (EXT-34)
* Rudimentary group capabilities (EXT-61)
* Add hard timeout info in flow-removed messages (OFP-283)
* Add ability for controller to detect STP support(OFP-285)
* Turn off packet buffering with OFPCML_NO_BUFFER (EXT-45)
* Added ability to query all queues (EXT-15)
* Added experimenter queue property (EXT-16)
* Added max-rate queue property (EXT-21)
* Enable deleting flow in all tables (EXT-10)
* Enable switch to check chaining when deleting groups (EXT-12)
* Enable controller to disable buffering (EXT-45)
* Virtual ports renamed logical ports (EXT-78)
* New error messages (EXT-1, EXT-2, EXT-12, EXT-13, EXT-39, EXT-74
and EXT-82)
* Many other bug fixes, rewording and clarifications