~james-page/ubuntu/saucy/openvswitch/1.12-snapshot

« back to all changes in this revision

Viewing changes to DESIGN

  • Committer: James Page
  • Date: 2013-08-21 10:16:57 UTC
  • mfrom: (1.1.20)
  • Revision ID: james.page@canonical.com-20130821101657-3o0z0qeiv5zkwlzi
New upstream snapshot

Show diffs side-by-side

added added

removed removed

Lines of Context:
84
84
OFPT_FLOW_MOD
85
85
=============
86
86
 
87
 
The OpenFlow 1.0 specification for the behavior of OFPT_FLOW_MOD is
88
 
confusing.  The following table summarizes the Open vSwitch
 
87
The OpenFlow specification for the behavior of OFPT_FLOW_MOD is
 
88
confusing.  The following tables summarize the Open vSwitch
89
89
implementation of its behavior in the following categories:
90
90
 
91
91
    - "match on priority": Whether the flow_mod acts only on flows
93
93
 
94
94
    - "match on out_port": Whether the flow_mod acts only on flows
95
95
      that output to the out_port included in the flow_mod message (if
96
 
      out_port is not OFPP_NONE).
 
96
      out_port is not OFPP_NONE).  OpenFlow 1.1 and later have a
 
97
      similar feature (not listed separately here) for out_group.
 
98
 
 
99
    - "match on flow_cookie": Whether the flow_mod acts only on flows
 
100
      whose flow_cookie matches an optional controller-specified value
 
101
      and mask.
97
102
 
98
103
    - "updates flow_cookie": Whether the flow_mod changes the
99
104
      flow_cookie of the flow or flows that it matches to the
120
125
    - "zeros counters": Whether the flow_mod resets per-flow packet
121
126
      and byte counters to zero.
122
127
 
 
128
    - "may add a new flow": Whether the flow_mod may add a new flow to
 
129
      the flow table.  (Obviously this is always true for "add"
 
130
      commands but in some OpenFlow versions "modify" and
 
131
      "modify-strict" can also add new flows.)
 
132
 
123
133
    - "sends flow_removed message": Whether the flow_mod generates a
124
134
      flow_removed message for the flow or flows that it affects.
125
135
 
128
138
that the property is not applicable, and other values are explained
129
139
below the table.
130
140
 
 
141
OpenFlow 1.0
 
142
------------
 
143
 
131
144
                                          MODIFY          DELETE
132
145
                             ADD  MODIFY  STRICT  DELETE  STRICT
133
146
                             ===  ======  ======  ======  ======
134
 
match on priority            ---    ---     yes     ---     yes
 
147
match on priority            yes    ---     yes     ---     yes
135
148
match on out_port            ---    ---     ---     yes     yes
 
149
match on flow_cookie         ---    ---     ---     ---     ---
 
150
match on table_id            ---    ---     ---     ---     ---
 
151
controller chooses table_id  ---    ---     ---
136
152
updates flow_cookie          yes    yes     yes
137
153
updates OFPFF_SEND_FLOW_REM  yes     +       +
138
154
honors OFPFF_CHECK_OVERLAP   yes     +       +
141
157
resets idle timer            yes     +       +
142
158
resets hard timer            yes    yes     yes
143
159
zeros counters               yes     +       +
144
 
sends flow_removed message   ---    ---     ---      %       %
145
 
 
146
 
(+) "modify" and "modify-strict" only take these actions when they
147
 
    create a new flow, not when they update an existing flow.
148
 
 
149
 
(%) "delete" and "delete_strict" generates a flow_removed message if
150
 
    the deleted flow or flows have the OFPFF_SEND_FLOW_REM flag set.
151
 
    (Each controller can separately control whether it wants to
152
 
    receive the generated messages.)
 
160
may add a new flow           yes    yes     yes
 
161
sends flow_removed message   ---    ---     ---      %       %
 
162
 
 
163
(+) "modify" and "modify-strict" only take these actions when they
 
164
    create a new flow, not when they update an existing flow.
 
165
 
 
166
(%) "delete" and "delete_strict" generates a flow_removed message if
 
167
    the deleted flow or flows have the OFPFF_SEND_FLOW_REM flag set.
 
168
    (Each controller can separately control whether it wants to
 
169
    receive the generated messages.)
 
170
 
 
171
OpenFlow 1.1
 
172
------------
 
173
 
 
174
OpenFlow 1.1 makes these changes:
 
175
 
 
176
    - The controller now must specify the table_id of the flow match
 
177
      searched and into which a flow may be inserted.  Behavior for a
 
178
      table_id of 255 is undefined.
 
179
 
 
180
    - A flow_mod, except an "add", can now match on the flow_cookie.
 
181
 
 
182
    - When a flow_mod matches on the flow_cookie, "modify" and
 
183
      "modify-strict" never insert a new flow.
 
184
 
 
185
                                          MODIFY          DELETE
 
186
                             ADD  MODIFY  STRICT  DELETE  STRICT
 
187
                             ===  ======  ======  ======  ======
 
188
match on priority            yes    ---     yes     ---     yes
 
189
match on out_port            ---    ---     ---     yes     yes
 
190
match on flow_cookie         ---    yes     yes     yes     yes
 
191
match on table_id            yes    yes     yes     yes     yes
 
192
controller chooses table_id  yes    yes     yes
 
193
updates flow_cookie          yes    ---     ---
 
194
updates OFPFF_SEND_FLOW_REM  yes     +       +
 
195
honors OFPFF_CHECK_OVERLAP   yes     +       +
 
196
updates idle_timeout         yes     +       +
 
197
updates hard_timeout         yes     +       +
 
198
resets idle timer            yes     +       +
 
199
resets hard timer            yes    yes     yes
 
200
zeros counters               yes     +       +
 
201
may add a new flow           yes     #       #
 
202
sends flow_removed message   ---    ---     ---      %       %
 
203
 
 
204
(+) "modify" and "modify-strict" only take these actions when they
 
205
    create a new flow, not when they update an existing flow.
 
206
 
 
207
(%) "delete" and "delete_strict" generates a flow_removed message if
 
208
    the deleted flow or flows have the OFPFF_SEND_FLOW_REM flag set.
 
209
    (Each controller can separately control whether it wants to
 
210
    receive the generated messages.)
 
211
 
 
212
(#) "modify" and "modify-strict" only add a new flow if the flow_mod
 
213
    does not match on any bits of the flow cookie
 
214
 
 
215
OpenFlow 1.2
 
216
------------
 
217
 
 
218
OpenFlow 1.2 makes these changes:
 
219
 
 
220
    - Only "add" commands ever add flows, "modify" and "modify-strict"
 
221
      never do.
 
222
 
 
223
    - A new flag OFPFF_RESET_COUNTS now controls whether "modify" and
 
224
      "modify-strict" reset counters, whereas previously they never
 
225
      reset counters (except when they inserted a new flow).
 
226
 
 
227
                                          MODIFY          DELETE
 
228
                             ADD  MODIFY  STRICT  DELETE  STRICT
 
229
                             ===  ======  ======  ======  ======
 
230
match on priority            yes    ---     yes     ---     yes
 
231
match on out_port            ---    ---     ---     yes     yes
 
232
match on flow_cookie         ---    yes     yes     yes     yes
 
233
match on table_id            yes    yes     yes     yes     yes
 
234
controller chooses table_id  yes    yes     yes
 
235
updates flow_cookie          yes    ---     ---
 
236
updates OFPFF_SEND_FLOW_REM  yes    ---     ---
 
237
honors OFPFF_CHECK_OVERLAP   yes    ---     ---
 
238
updates idle_timeout         yes    ---     ---
 
239
updates hard_timeout         yes    ---     ---
 
240
resets idle timer            yes    ---     ---
 
241
resets hard timer            yes    yes     yes
 
242
zeros counters               yes     &       &
 
243
may add a new flow           yes    ---     ---
 
244
sends flow_removed message   ---    ---     ---      %       %
 
245
 
 
246
(%) "delete" and "delete_strict" generates a flow_removed message if
 
247
    the deleted flow or flows have the OFPFF_SEND_FLOW_REM flag set.
 
248
    (Each controller can separately control whether it wants to
 
249
    receive the generated messages.)
 
250
 
 
251
(&) "modify" and "modify-strict" reset counters if the
 
252
    OFPFF_RESET_COUNTS flag is specified.
 
253
 
 
254
OpenFlow 1.3
 
255
------------
 
256
 
 
257
OpenFlow 1.3 makes these changes:
 
258
 
 
259
    - Behavior for a table_id of 255 is now defined, for "delete" and
 
260
      "delete-strict" commands, as meaning to delete from all tables.
 
261
      A table_id of 255 is now explicitly invalid for other commands.
 
262
 
 
263
    - New flags OFPFF_NO_PKT_COUNTS and OFPFF_NO_BYT_COUNTS for "add"
 
264
      operations.
 
265
 
 
266
The table for 1.3 is the same as the one shown above for 1.2.
153
267
 
154
268
 
155
269
VLAN Matching
185
299
 
186
300
    - OF1.0 and OF1.1: wwww/x,yy/z means dl_vlan wwww, OFPFW_DL_VLAN
187
301
      x, dl_vlan_pcp yy, and OFPFW_DL_VLAN_PCP z.  ? means that the
188
 
      given nibble is ignored (and conventionally 0 for wwww or z,
 
302
      given nibble is ignored (and conventionally 0 for wwww or yy,
189
303
      conventionally 1 for x or z).  <none> means that the given match
190
304
      is not supported.
191
305