Implement OpenFlow 1.5 group desc stats request.
[cascardo/ovs.git] / utilities / ovs-ofctl.8.in
1 .\" -*- nroff -*-
2 .de IQ
3 .  br
4 .  ns
5 .  IP "\\$1"
6 ..
7 .TH ovs\-ofctl 8 "@VERSION@" "Open vSwitch" "Open vSwitch Manual"
8 .ds PN ovs\-ofctl
9 .
10 .SH NAME
11 ovs\-ofctl \- administer OpenFlow switches
12 .
13 .SH SYNOPSIS
14 .B ovs\-ofctl
15 [\fIoptions\fR] \fIcommand \fR[\fIswitch\fR] [\fIargs\fR\&...]
16 .
17 .SH DESCRIPTION
18 The
19 .B ovs\-ofctl
20 program is a command line tool for monitoring and administering
21 OpenFlow switches.  It can also show the current state of an OpenFlow
22 switch, including features, configuration, and table entries.
23 It should work with any OpenFlow switch, not just Open vSwitch.
24 .
25 .SS "OpenFlow Switch Management Commands"
26 .PP
27 These commands allow \fBovs\-ofctl\fR to monitor and administer an OpenFlow
28 switch.  It is able to show the current state of a switch, including
29 features, configuration, and table entries.
30 .PP
31 Most of these commands take an argument that specifies the method for
32 connecting to an OpenFlow switch.  The following connection methods
33 are supported:
34 .
35 .RS
36 .so lib/vconn-active.man
37 .
38 .IP "\fIfile\fR"
39 This is short for \fBunix:\fIfile\fR, as long as \fIfile\fR does not
40 contain a colon.
41 .
42 .IP \fIbridge\fR
43 This is short for \fBunix:@RUNDIR@/\fIbridge\fB.mgmt\fR, as long as
44 \fIbridge\fR does not contain a colon.
45 .
46 .IP [\fItype\fB@\fR]\fIdp\fR
47 Attempts to look up the bridge associated with \fIdp\fR and open as
48 above.  If \fItype\fR is given, it specifies the datapath provider of
49 \fIdp\fR, otherwise the default provider \fBsystem\fR is assumed.
50 .RE
51 .
52 .TP
53 \fBshow \fIswitch\fR
54 Prints to the console information on \fIswitch\fR, including
55 information on its flow tables and ports.
56 .
57 .TP
58 \fBdump\-tables \fIswitch\fR
59 Prints to the console statistics for each of the flow tables used by
60 \fIswitch\fR.
61 .TP
62 \fBdump\-table\-features \fIswitch\fR
63 Prints to the console features for each of the flow tables used by
64 \fIswitch\fR.
65 .
66 .TP
67 \fBdump\-ports \fIswitch\fR [\fInetdev\fR]
68 Prints to the console statistics for network devices associated with 
69 \fIswitch\fR.  If \fInetdev\fR is specified, only the statistics
70 associated with that device will be printed.  \fInetdev\fR can be an
71 OpenFlow assigned port number or device name, e.g. \fBeth0\fR.
72 .
73 .TP
74 \fBdump\-ports\-desc \fIswitch\fR
75 Prints to the console detailed information about network devices
76 associated with \fIswitch\fR (version 1.7 or later).  This is a subset
77 of the information provided by the \fBshow\fR command.
78 .
79 .IP "\fBmod\-port \fIswitch\fR \fIport\fR \fIaction\fR"
80 Modify characteristics of port \fBport\fR in \fIswitch\fR.  \fIport\fR
81 may be an OpenFlow port number or name or the keyword \fBLOCAL\fR (the
82 preferred way to refer to the OpenFlow local port).  The \fIaction\fR
83 may be any one of the following:
84 .
85 .RS
86 .IQ \fBup\fR
87 .IQ \fBdown\fR
88 Enable or disable the interface.  This is equivalent to \fBifconfig
89 up\fR or \fBifconfig down\fR on a Unix system.
90 .
91 .IP \fBstp\fR
92 .IQ \fBno\-stp\fR
93 Enable or disable 802.1D spanning tree protocol (STP) on the
94 interface.  OpenFlow implementations that don't support STP will
95 refuse to enable it.
96 .
97 .IP \fBreceive\fR
98 .IQ \fBno\-receive\fR
99 .IQ \fBreceive\-stp\fR
100 .IQ \fBno\-receive\-stp\fR
101 Enable or disable OpenFlow processing of packets received on this
102 interface.  When packet processing is disabled, packets will be
103 dropped instead of being processed through the OpenFlow table.  The
104 \fBreceive\fR or \fBno\-receive\fR setting applies to all packets
105 except 802.1D spanning tree packets, which are separately controlled
106 by \fBreceive\-stp\fR or \fBno\-receive\-stp\fR.
107 .
108 .IP \fBforward\fR
109 .IQ \fBno\-forward\fR
110 Allow or disallow forwarding of traffic to this interface.  By
111 default, forwarding is enabled.
112 .
113 .IP \fBflood\fR
114 .IQ \fBno\-flood\fR
115 Controls whether an OpenFlow \fBflood\fR action will send traffic out
116 this interface.  By default, flooding is enabled.  Disabling flooding
117 is primarily useful to prevent loops when a spanning tree protocol is
118 not in use.
119 .
120 .IP \fBpacket\-in\fR
121 .IQ \fBno\-packet\-in\fR
122 Controls whether packets received on this interface that do not match
123 a flow table entry generate a ``packet in'' message to the OpenFlow
124 controller.  By default, ``packet in'' messages are enabled.
125 .RE
126 .IP
127 The \fBshow\fR command displays (among other information) the
128 configuration that \fBmod\-port\fR changes.
129 .
130 .IP "\fBget\-frags \fIswitch\fR"
131 Prints \fIswitch\fR's fragment handling mode.  See \fBset\-frags\fR,
132 below, for a description of each fragment handling mode.
133 .IP
134 The \fBshow\fR command also prints the fragment handling mode among
135 its other output.
136 .
137 .IP "\fBset\-frags \fIswitch frag_mode\fR"
138 Configures \fIswitch\fR's treatment of IPv4 and IPv6 fragments.  The
139 choices for \fIfrag_mode\fR are:
140 .RS
141 .IP "\fBnormal\fR"
142 Fragments pass through the flow table like non-fragmented packets.
143 The TCP ports, UDP ports, and ICMP type and code fields are always set
144 to 0, even for fragments where that information would otherwise be
145 available (fragments with offset 0).  This is the default fragment
146 handling mode for an OpenFlow switch.
147 .IP "\fBdrop\fR"
148 Fragments are dropped without passing through the flow table.
149 .IP "\fBreassemble\fR"
150 The switch reassembles fragments into full IP packets before passing
151 them through the flow table.  Open vSwitch does not implement this
152 fragment handling mode.
153 .IP "\fBnx\-match\fR"
154 Fragments pass through the flow table like non-fragmented packets.
155 The TCP ports, UDP ports, and ICMP type and code fields are available
156 for matching for fragments with offset 0, and set to 0 in fragments
157 with nonzero offset.  This mode is a Nicira extension.
158 .RE
159 .IP
160 See the description of \fBip_frag\fR, below, for a way to match on
161 whether a packet is a fragment and on its fragment offset.
162 .
163 .TP
164 \fBdump\-flows \fIswitch \fR[\fIflows\fR]
165 Prints to the console all flow entries in \fIswitch\fR's
166 tables that match \fIflows\fR.  If \fIflows\fR is omitted, all flows
167 in the switch are retrieved.  See \fBFlow Syntax\fR, below, for the
168 syntax of \fIflows\fR.  The output format is described in
169 \fBTable Entry Output\fR.
170 .
171 .IP
172 By default, \fBovs\-ofctl\fR prints flow entries in the same order
173 that the switch sends them, which is unlikely to be intuitive or
174 consistent.  See the description of \fB\-\-sort\fR and \fB\-\-rsort\fR,
175 under \fBOPTIONS\fR below, to influence the display order.
176 .
177 .TP
178 \fBdump\-aggregate \fIswitch \fR[\fIflows\fR]
179 Prints to the console aggregate statistics for flows in
180 \fIswitch\fR's tables that match \fIflows\fR.  If \fIflows\fR is omitted, 
181 the statistics are aggregated across all flows in the switch's flow
182 tables.  See \fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
183 The output format is described in \fBTable Entry Output\fR.
184 .
185 .IP "\fBqueue\-stats \fIswitch \fR[\fIport \fR[\fIqueue\fR]]"
186 Prints to the console statistics for the specified \fIqueue\fR on
187 \fIport\fR within \fIswitch\fR.  \fIport\fR can be an OpenFlow port
188 number or name, the keyword \fBLOCAL\fR (the preferred way to refer to
189 the OpenFlow local port), or the keyword \fBALL\fR.  Either of
190 \fIport\fR or \fIqueue\fR or both may be omitted (or equivalently the
191 keyword \fBALL\fR).  If both are omitted, statistics are printed for
192 all queues on all ports.  If only \fIqueue\fR is omitted, then
193 statistics are printed for all queues on \fIport\fR; if only
194 \fIport\fR is omitted, then statistics are printed for \fIqueue\fR on
195 every port where it exists.
196 .
197 .SS "OpenFlow 1.1+ Group Table Commands"
198 .
199 The following commands work only with switches that support OpenFlow
200 1.1 or later.  Because support for OpenFlow 1.1 and later is still
201 experimental in Open vSwitch, it is necessary to explicitly enable
202 these protocol versions in \fBovs\-ofctl\fR (using \fB\-O\fR) and in
203 the switch itself (with the \fBprotocols\fR column in the \fBBridge\fR
204 table).  For more information, see ``Q: What versions of OpenFlow does
205 Open vSwitch support?'' in the Open vSwitch FAQ.
206 .
207 .IP "\fBdump\-groups \fIswitch\fR [\fIgroup\fR]"
208 Prints group entries in \fIswitch\fR's tables to console.  To dump
209 only a specific group, specify its number as \fIgroup\fR.  Otherwise,
210 if \fIgroup\fR is omitted, or if it is specified as \fBALL\fR, then
211 all groups are printed.  Each line of output is a group entry as
212 described in \fBGroup Syntax\fR below.
213 .IP
214 Only OpenFlow 1.5 and later support dumping a specific group.  Earlier
215 versions of OpenFlow always dump all groups.
216 .
217 .IP "\fBdump\-group\-features \fIswitch"
218 Prints to the console the group features of the \fIswitch\fR.
219 .
220 .IP "\fBdump\-group-stats \fIswitch \fR[\fIgroups\fR]"
221 Prints to the console statistics for the specified \fIgroups in the
222 \fIswitch\fR's tables.  If \fIgroups\fR is omitted then statistics for all
223 groups are printed.  See \fBGroup Syntax\fR, below, for the syntax of
224 \fIgroups\fR.
225 .
226 .IP "\fBmod\-table \fIswitch\fR \fItable_id\fR  \fIflow_miss_handling\fR"
227 An OpenFlow 1.0 switch looks up each packet that arrives at the switch
228 in table 0, then in table 1 if there is no match in table 0, then in
229 table 2, and so on until the packet finds a match in some table.
230 Finally, if no match was found, the switch sends the packet to the
231 controller
232 .IP
233 OpenFlow 1.1 and later offer more flexibility.  This command
234 configures the flow table miss handling configuration for table
235 \fItable_id\fR in \fIswitch\fR.  \fItable_id\fR may be an OpenFlow
236 table number between 0 and 254, inclusive, or the keyword \fBALL\fR to
237 modify all tables.  \fIflow_miss_handling\fR may be any one of the
238 following:
239 .RS
240 .IP \fBdrop\fR
241 Drop the packet.
242 .IP \fBcontinue\fR
243 Continue to the next table in the pipeline.  (This is how an OpenFlow
244 1.0 switch always handles packets that do not match any flow, in
245 tables other than the last one.)
246 .IP \fBcontroller\fR
247 Send to controller.  (This is how an OpenFlow 1.0 switch always
248 handles packets that do not match any flow in the last table.)
249 .RE
250 .
251 .SS "OpenFlow 1.3+ Switch Meter Table Commands"
252 .
253 These commands manage the meter table in an OpenFlow switch.  In each
254 case, \fImeter\fR specifies a meter entry in the format described in
255 \fBMeter Syntax\fR, below.
256 .
257 .PP
258 OpenFlow 1.3 introduced support for meters, so these commands only
259 work with switches that support OpenFlow 1.3 or later.  The caveats
260 described for groups in the previous section also apply to meters.
261 .
262 .IP "\fBadd\-meter \fIswitch meter\fR"
263 Add a meter entry to \fIswitch\fR's tables. The \fImeter\fR syntax is
264 described in section \fBMeter Syntax\fR, below.
265 .
266 .IP "\fBmod\-meter \fIswitch meter\fR"
267 Modify an existing meter.
268 .
269 .IP "\fBdel\-meters \fIswitch\fR"
270 .IQ "\fBdel\-meter \fIswitch\fR [\fImeter\fR]"
271 Delete entries from \fIswitch\fR's meter table.  \fImeter\fR can specify
272 a single meter with syntax \fBmeter=\fIid\fR, or all meters with syntax
273 \fBmeter=all\fR.
274 .
275 .IP "\fBdump\-meters \fIswitch\fR"
276 .IQ "\fBdump\-meter \fIswitch\fR [\fImeter\fR]"
277 Print meter configuration.  \fImeter\fR can specify a single meter with
278 syntax \fBmeter=\fIid\fR, or all meters with syntax \fBmeter=all\fR.
279 .
280 .IP "\fBmeter\-stats \fIswitch\fR [\fImeter\fR]"
281 Print meter statistics.  \fImeter\fR can specify a single meter with
282 syntax \fBmeter=\fIid\fR, or all meters with syntax \fBmeter=all\fR.
283 .
284 .IP "\fBmeter\-features \fIswitch\fR"
285 Print meter features.
286 .
287 .SS "OpenFlow Switch Flow Table Commands"
288 .
289 These commands manage the flow table in an OpenFlow switch.  In each
290 case, \fIflow\fR specifies a flow entry in the format described in
291 \fBFlow Syntax\fR, below, and \fIfile\fR is a text file that contains
292 zero or more flows in the same syntax, one per line.
293 .
294 .IP "\fBadd\-flow \fIswitch flow\fR"
295 .IQ "\fBadd\-flow \fIswitch \fB\- < \fIfile\fR"
296 .IQ "\fBadd\-flows \fIswitch file\fR"
297 Add each flow entry to \fIswitch\fR's tables.
298 .
299 .IP "[\fB\-\-strict\fR] \fBmod\-flows \fIswitch flow\fR"
300 .IQ "[\fB\-\-strict\fR] \fBmod\-flows \fIswitch \fB\- < \fIfile\fR"
301 Modify the actions in entries from \fIswitch\fR's tables that match
302 the specified flows.  With \fB\-\-strict\fR, wildcards are not treated
303 as active for matching purposes.
304 .
305 .IP "\fBdel\-flows \fIswitch\fR"
306 .IQ "[\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fR[\fIflow\fR]"
307 .IQ "[\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fB\- < \fIfile\fR"
308 Deletes entries from \fIswitch\fR's flow table.  With only a
309 \fIswitch\fR argument, deletes all flows.  Otherwise, deletes flow
310 entries that match the specified flows.  With \fB\-\-strict\fR,
311 wildcards are not treated as active for matching purposes.
312 .
313 .IP "[\fB\-\-readd\fR] \fBreplace\-flows \fIswitch file\fR"
314 Reads flow entries from \fIfile\fR (or \fBstdin\fR if \fIfile\fR is
315 \fB\-\fR) and queries the flow table from \fIswitch\fR.  Then it fixes
316 up any differences, adding flows from \fIflow\fR that are missing on
317 \fIswitch\fR, deleting flows from \fIswitch\fR that are not in
318 \fIfile\fR, and updating flows in \fIswitch\fR whose actions, cookie,
319 or timeouts differ in \fIfile\fR.
320 .
321 .IP
322 With \fB\-\-readd\fR, \fBovs\-ofctl\fR adds all the flows from
323 \fIfile\fR, even those that exist with the same actions, cookie, and
324 timeout in \fIswitch\fR.  This resets all the flow packet and byte
325 counters to 0, which can be useful for debugging.
326 .
327 .IP "\fBdiff\-flows \fIsource1 source2\fR"
328 Reads flow entries from \fIsource1\fR and \fIsource2\fR and prints the
329 differences.  A flow that is in \fIsource1\fR but not in \fIsource2\fR
330 is printed preceded by a \fB\-\fR, and a flow that is in \fIsource2\fR
331 but not in \fIsource1\fR is printed preceded by a \fB+\fR.  If a flow
332 exists in both \fIsource1\fR and \fIsource2\fR with different actions,
333 cookie, or timeouts, then both versions are printed preceded by
334 \fB\-\fR and \fB+\fR, respectively.
335 .IP
336 \fIsource1\fR and \fIsource2\fR may each name a file or a switch.  If
337 a name begins with \fB/\fR or \fB.\fR, then it is considered to be a
338 file name.  A name that contains \fB:\fR is considered to be a switch.
339 Otherwise, it is a file if a file by that name exists, a switch if
340 not.
341 .IP
342 For this command, an exit status of 0 means that no differences were
343 found, 1 means that an error occurred, and 2 means that some
344 differences were found.
345 .
346 .IP "\fBpacket\-out \fIswitch in_port actions packet\fR..."
347 Connects to \fIswitch\fR and instructs it to execute the OpenFlow
348 \fIactions\fR on each \fIpacket\fR.  For the purpose of executing the
349 actions, the packets are considered to have arrived on \fIin_port\fR,
350 which may be an OpenFlow port number or name (e.g. \fBeth0\fR), the
351 keyword \fBLOCAL\fR (the preferred way to refer to the OpenFlow
352 ``local'' port), or the keyword \fBNONE\fR to indicate that the packet
353 was generated by the switch itself.
354 .
355 .SS "OpenFlow Switch Group Table Commands"
356 .
357 These commands manage the group table in an OpenFlow switch.  In each
358 case, \fIgroup\fR specifies a group entry in the format described in
359 \fBGroup Syntax\fR, below, and \fIfile\fR is a text file that contains
360 zero or more groups in the same syntax, one per line.
361
362 .IP "\fBadd\-group \fIswitch group\fR"
363 .IQ "\fBadd\-group \fIswitch \fB\- < \fIfile\fR"
364 .IQ "\fBadd\-groups \fIswitch file\fR"
365 Add each group entry to \fIswitch\fR's tables.
366 .
367 .IP "\fBmod\-group \fIswitch group\fR"
368 .IQ "\fBmod\-group \fIswitch \fB\- < \fIfile\fR"
369 Modify the action buckets in entries from \fIswitch\fR's tables for
370 each group entry.
371 .
372 .IP "\fBdel\-groups \fIswitch\fR"
373 .IQ "\fBdel\-groups \fIswitch \fR[\fIgroup\fR]"
374 .IQ "\fBdel\-groups \fIswitch \fB\- < \fIfile\fR"
375 Deletes entries from \fIswitch\fR's group table.  With only a
376 \fIswitch\fR argument, deletes all groups.  Otherwise, deletes the group
377 for each group entry.
378 .
379 .SS "OpenFlow Switch Monitoring Commands"
380 .
381 .IP "\fBsnoop \fIswitch\fR"
382 Connects to \fIswitch\fR and prints to the console all OpenFlow
383 messages received.  Unlike other \fBovs\-ofctl\fR commands, if
384 \fIswitch\fR is the name of a bridge, then the \fBsnoop\fR command
385 connects to a Unix domain socket named
386 \fB@RUNDIR@/\fIbridge\fB.snoop\fR.  \fBovs\-vswitchd\fR listens on
387 such a socket for each bridge and sends to it all of the OpenFlow
388 messages sent to or received from its configured OpenFlow controller.
389 Thus, this command can be used to view OpenFlow protocol activity
390 between a switch and its controller.
391 .IP
392 When a switch has more than one controller configured, only the
393 traffic to and from a single controller is output.  If none of the
394 controllers is configured as a master or a slave (using a Nicira
395 extension to OpenFlow 1.0 or 1.1, or a standard request in OpenFlow
396 1.2 or later), then a controller is chosen arbitrarily among
397 them.  If there is a master controller, it is chosen; otherwise, if
398 there are any controllers that are not masters or slaves, one is
399 chosen arbitrarily; otherwise, a slave controller is chosen
400 arbitrarily.  This choice is made once at connection time and does not
401 change as controllers reconfigure their roles.
402 .IP
403 If a switch has no controller configured, or if
404 the configured controller is disconnected, no traffic is sent, so
405 monitoring will not show any traffic.
406 .
407 .IP "\fBmonitor \fIswitch\fR [\fImiss-len\fR] [\fBinvalid_ttl\fR] [\fBwatch:\fR[\fIspec\fR...]]"
408 Connects to \fIswitch\fR and prints to the console all OpenFlow
409 messages received.  Usually, \fIswitch\fR should specify the name of a
410 bridge in the \fBovs\-vswitchd\fR database.
411 .IP
412 If \fImiss-len\fR is provided, \fBovs\-ofctl\fR sends an OpenFlow ``set
413 configuration'' message at connection setup time that requests
414 \fImiss-len\fR bytes of each packet that misses the flow table.  Open vSwitch
415 does not send these and other asynchronous messages to an
416 \fBovs\-ofctl monitor\fR client connection unless a nonzero value is
417 specified on this argument.  (Thus, if \fImiss\-len\fR is not
418 specified, very little traffic will ordinarily be printed.)
419 .IP
420 If \fBinvalid_ttl\fR is passed, \fBovs\-ofctl\fR sends an OpenFlow ``set
421 configuration'' message at connection setup time that requests
422 \fBINVALID_TTL_TO_CONTROLLER\fR, so that \fBovs\-ofctl monitor\fR can
423 receive ``packet-in'' messages when TTL reaches zero on \fBdec_ttl\fR action.
424 .IP
425 \fBwatch:\fR[\fB\fIspec\fR...] causes \fBovs\-ofctl\fR to send a
426 ``monitor request'' Nicira extension message to the switch at
427 connection setup time.  This message causes the switch to send
428 information about flow table changes as they occur.  The following
429 comma-separated \fIspec\fR syntax is available:
430 .RS
431 .IP "\fB!initial\fR"
432 Do not report the switch's initial flow table contents.
433 .IP "\fB!add\fR"
434 Do not report newly added flows.
435 .IP "\fB!delete\fR"
436 Do not report deleted flows.
437 .IP "\fB!modify\fR"
438 Do not report modifications to existing flows.
439 .IP "\fB!own\fR"
440 Abbreviate changes made to the flow table by \fBovs\-ofctl\fR's own
441 connection to the switch.  (These could only occur using the
442 \fBofctl/send\fR command described below under \fBRUNTIME MANAGEMENT
443 COMMANDS\fR.)
444 .IP "\fB!actions\fR"
445 Do not report actions as part of flow updates.
446 .IP "\fBtable=\fInumber\fR"
447 Limits the monitoring to the table with the given \fInumber\fR between
448 0 and 254.  By default, all tables are monitored.
449 .IP "\fBout_port=\fIport\fR"
450 If set, only flows that output to \fIport\fR are monitored.  The
451 \fIport\fR may be an OpenFlow port number or keyword
452 (e.g. \fBLOCAL\fR).
453 .IP "\fIfield\fB=\fIvalue\fR"
454 Monitors only flows that have \fIfield\fR specified as the given
455 \fIvalue\fR.  Any syntax valid for matching on \fBdump\-flows\fR may
456 be used.
457 .RE
458 .IP
459 This command may be useful for debugging switch or controller
460 implementations.  With \fBwatch:\fR, it is particularly useful for
461 observing how a controller updates flow tables.
462 .
463 .SS "OpenFlow Switch and Controller Commands"
464 .
465 The following commands, like those in the previous section, may be
466 applied to OpenFlow switches, using any of the connection methods
467 described in that section.  Unlike those commands, these may also be
468 applied to OpenFlow controllers.
469 .
470 .TP
471 \fBprobe \fItarget\fR
472 Sends a single OpenFlow echo-request message to \fItarget\fR and waits
473 for the response.  With the \fB\-t\fR or \fB\-\-timeout\fR option, this
474 command can test whether an OpenFlow switch or controller is up and
475 running.
476 .
477 .TP
478 \fBping \fItarget \fR[\fIn\fR]
479 Sends a series of 10 echo request packets to \fItarget\fR and times
480 each reply.  The echo request packets consist of an OpenFlow header
481 plus \fIn\fR bytes (default: 64) of randomly generated payload.  This
482 measures the latency of individual requests.
483 .
484 .TP
485 \fBbenchmark \fItarget n count\fR
486 Sends \fIcount\fR echo request packets that each consist of an
487 OpenFlow header plus \fIn\fR bytes of payload and waits for each
488 response.  Reports the total time required.  This is a measure of the
489 maximum bandwidth to \fItarget\fR for round-trips of \fIn\fR-byte
490 messages.
491 .
492 .SS "Other Commands"
493 .
494 .IP "\fBofp\-parse\fR \fIfile\fR"
495 Reads \fIfile\fR (or \fBstdin\fR if \fIfile\fR is \fB\-\fR) as a
496 series of OpenFlow messages in the binary format used on an OpenFlow
497 connection, and prints them to the console.  This can be useful for
498 printing OpenFlow messages captured from a TCP stream.
499 .
500 .IP "\fBofp\-parse\-pcap\fR \fIfile\fR [\fIport\fR...]"
501 Reads \fIfile\fR, which must be in the PCAP format used by network
502 capture tools such as \fBtcpdump\fR or \fBwireshark\fR, extracts all
503 the TCP streams for OpenFlow connections, and prints the OpenFlow
504 messages in those connections in human-readable format on
505 \fBstdout\fR.
506 .IP
507 OpenFlow connections are distinguished by TCP port number.
508 Non-OpenFlow packets are ignored.  By default, data on TCP ports 6633
509 and 6653 are considered to be OpenFlow.  Specify one or more
510 \fIport\fR arguments to override the default.
511 .IP
512 This command cannot usefully print SSL encrypted traffic.  It does not
513 understand IPv6.
514 .
515 .SS "Flow Syntax"
516 .PP
517 Some \fBovs\-ofctl\fR commands accept an argument that describes a flow or
518 flows.  Such flow descriptions comprise a series
519 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
520 space.  (Embedding spaces into a flow description normally requires
521 quoting to prevent the shell from breaking the description into
522 multiple arguments.)
523 .PP
524 Flow descriptions should be in \fBnormal form\fR.  This means that a
525 flow may only specify a value for an L3 field if it also specifies a
526 particular L2 protocol, and that a flow may only specify an L4 field
527 if it also specifies particular L2 and L3 protocol types.  For
528 example, if the L2 protocol type \fBdl_type\fR is wildcarded, then L3
529 fields \fBnw_src\fR, \fBnw_dst\fR, and \fBnw_proto\fR must also be
530 wildcarded.  Similarly, if \fBdl_type\fR or \fBnw_proto\fR (the L3
531 protocol type) is wildcarded, so must be \fBtp_dst\fR and
532 \fBtp_src\fR, which are L4 fields.  \fBovs\-ofctl\fR will warn about
533 flows not in normal form.
534 .PP
535 The following field assignments describe how a flow matches a packet.
536 If any of these assignments is omitted from the flow syntax, the field
537 is treated as a wildcard; thus, if all of them are omitted, the
538 resulting flow matches all packets.  The string \fB*\fR may be specified
539 to explicitly mark any of these fields as a wildcard.
540 (\fB*\fR should be quoted to protect it from shell expansion.)
541 .
542 .IP \fBin_port=\fIport\fR
543 Matches OpenFlow port \fIport\fR, which may be an OpenFlow port number
544 or keyword (e.g. \fBLOCAL\fR).
545 \fBovs\-ofctl show\fR.
546 .IP
547 (The \fBresubmit\fR action can search OpenFlow flow tables with
548 arbitrary \fBin_port\fR values, so flows that match port numbers that
549 do not exist from an OpenFlow perspective can still potentially be
550 matched.)
551 .
552 .IP \fBdl_vlan=\fIvlan\fR
553 Matches IEEE 802.1q Virtual LAN tag \fIvlan\fR.  Specify \fB0xffff\fR
554 as \fIvlan\fR to match packets that are not tagged with a Virtual LAN;
555 otherwise, specify a number between 0 and 4095, inclusive, as the
556 12-bit VLAN ID to match.
557 .
558 .IP \fBdl_vlan_pcp=\fIpriority\fR
559 Matches IEEE 802.1q Priority Code Point (PCP) \fIpriority\fR, which is
560 specified as a value between 0 and 7, inclusive.  A higher value
561 indicates a higher frame priority level.
562 .
563 .IP \fBdl_src=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
564 .IQ \fBdl_dst=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
565 Matches an Ethernet source (or destination) address specified as 6
566 pairs of hexadecimal digits delimited by colons
567 (e.g. \fB00:0A:E4:25:6B:B0\fR).
568 .
569 .IP \fBdl_src=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB/\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
570 .IQ \fBdl_dst=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB/\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
571 Matches an Ethernet destination address specified as 6 pairs of
572 hexadecimal digits delimited by colons (e.g. \fB00:0A:E4:25:6B:B0\fR),
573 with a wildcard mask following the slash. Open vSwitch 1.8 and later
574 support arbitrary masks for source and/or destination. Earlier
575 versions only support masking the destination with the following masks:
576 .RS
577 .IP \fB01:00:00:00:00:00\fR
578 Match only the multicast bit.  Thus,
579 \fBdl_dst=01:00:00:00:00:00/01:00:00:00:00:00\fR matches all multicast
580 (including broadcast) Ethernet packets, and
581 \fBdl_dst=00:00:00:00:00:00/01:00:00:00:00:00\fR matches all unicast
582 Ethernet packets.
583 .IP \fBfe:ff:ff:ff:ff:ff\fR
584 Match all bits except the multicast bit.  This is probably not useful.
585 .IP \fBff:ff:ff:ff:ff:ff\fR
586 Exact match (equivalent to omitting the mask).
587 .IP \fB00:00:00:00:00:00\fR
588 Wildcard all bits (equivalent to \fBdl_dst=*\fR.)
589 .RE
590 .
591 .IP \fBdl_type=\fIethertype\fR
592 Matches Ethernet protocol type \fIethertype\fR, which is specified as an
593 integer between 0 and 65535, inclusive, either in decimal or as a 
594 hexadecimal number prefixed by \fB0x\fR (e.g. \fB0x0806\fR to match ARP 
595 packets).
596 .
597 .IP \fBnw_src=\fIip\fR[\fB/\fInetmask\fR]
598 .IQ \fBnw_dst=\fIip\fR[\fB/\fInetmask\fR]
599 When \fBdl_type\fR is 0x0800 (possibly via shorthand, e.g. \fBip\fR
600 or \fBtcp\fR), matches IPv4 source (or destination) address \fIip\fR,
601 which may be specified as an IP address or host name
602 (e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR).  The optional
603 \fInetmask\fR allows restricting a match to an IPv4 address prefix.
604 The netmask may be specified as a dotted quad
605 (e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
606 (e.g. \fB192.168.1.0/24\fR).  Open vSwitch 1.8 and later support
607 arbitrary dotted quad masks; earlier versions support only CIDR masks,
608 that is, the dotted quads that are equivalent to some CIDR block.
609 .IP
610 When \fBdl_type=0x0806\fR or \fBarp\fR is specified, matches the
611 \fBar_spa\fR or \fBar_tpa\fR field, respectively, in ARP packets for
612 IPv4 and Ethernet.
613 .IP
614 When \fBdl_type=0x8035\fR or \fBrarp\fR is specified, matches the
615 \fBar_spa\fR or \fBar_tpa\fR field, respectively, in RARP packets for
616 IPv4 and Ethernet.
617 .IP
618 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800,
619 0x0806, or 0x8035, the values of \fBnw_src\fR and \fBnw_dst\fR are ignored
620 (see \fBFlow Syntax\fR above).
621 .
622 .IP \fBnw_proto=\fIproto\fR
623 .IQ \fBip_proto=\fIproto\fR
624 When \fBip\fR or \fBdl_type=0x0800\fR is specified, matches IP
625 protocol type \fIproto\fR, which is specified as a decimal number
626 between 0 and 255, inclusive (e.g. 1 to match ICMP packets or 6 to match
627 TCP packets).
628 .IP
629 When \fBipv6\fR or \fBdl_type=0x86dd\fR is specified, matches IPv6
630 header type \fIproto\fR, which is specified as a decimal number between
631 0 and 255, inclusive (e.g. 58 to match ICMPv6 packets or 6 to match
632 TCP).  The header type is the terminal header as described in the
633 \fBDESIGN\fR document.
634 .IP
635 When \fBarp\fR or \fBdl_type=0x0806\fR is specified, matches the lower
636 8 bits of the ARP opcode.  ARP opcodes greater than 255 are treated as
637 0.
638 .IP
639 When \fBrarp\fR or \fBdl_type=0x8035\fR is specified, matches the lower
640 8 bits of the ARP opcode.  ARP opcodes greater than 255 are treated as
641 0.
642 .IP
643 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800,
644 0x0806, 0x8035 or 0x86dd, the value of \fBnw_proto\fR is ignored (see
645 \fBFlow Syntax\fR above).
646 .
647 .IP \fBnw_tos=\fItos\fR
648 Matches IP ToS/DSCP or IPv6 traffic class field \fItos\fR, which is
649 specified as a decimal number between 0 and 255, inclusive.  Note that
650 the two lower reserved bits are ignored for matching purposes.
651 .IP
652 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800 or
653 0x86dd, the value of \fBnw_tos\fR is ignored (see \fBFlow Syntax\fR
654 above).
655 .
656 .IP \fBip_dscp=\fIdscp\fR
657 Matches IP ToS/DSCP or IPv6 traffic class field \fIdscp\fR, which is
658 specified as a decimal number between 0 and 63, inclusive.
659 .IP
660 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800 or
661 0x86dd, the value of \fBip_dscp\fR is ignored (see \fBFlow Syntax\fR
662 above).
663 .
664 .IP \fBnw_ecn=\fIecn\fR
665 .IQ \fBip_ecn=\fIecn\fR
666 Matches \fIecn\fR bits in IP ToS or IPv6 traffic class fields, which is
667 specified as a decimal number between 0 and 3, inclusive.
668 .IP
669 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800 or
670 0x86dd, the value of \fBnw_ecn\fR is ignored (see \fBFlow Syntax\fR
671 above).
672 .
673 .IP \fBnw_ttl=\fIttl\fR
674 Matches IP TTL or IPv6 hop limit value \fIttl\fR, which is
675 specified as a decimal number between 0 and 255, inclusive.
676 .IP
677 When \fBdl_type\fR is wildcarded or set to a value other than 0x0800 or
678 0x86dd, the value of \fBnw_ttl\fR is ignored (see \fBFlow Syntax\fR
679 above).
680 .IP
681 .
682 .IP \fBtp_src=\fIport\fR
683 .IQ \fBtp_dst=\fIport\fR
684 When \fBdl_type\fR and \fBnw_proto\fR specify TCP or UDP or SCTP, \fBtp_src\fR
685 and \fBtp_dst\fR match the UDP or TCP or SCTP source or destination port
686 \fIport\fR, respectively, which is specified as a decimal number
687 between 0 and 65535, inclusive (e.g. 80 to match packets originating
688 from a HTTP server).
689 .IP
690 When \fBdl_type\fR and \fBnw_proto\fR take other values, the values of
691 these settings are ignored (see \fBFlow Syntax\fR above).
692 .
693 .IP \fBtp_src=\fIport\fB/\fImask\fR
694 .IQ \fBtp_dst=\fIport\fB/\fImask\fR
695 Bitwise match on TCP (or UDP or SCTP) source or destination port,
696 respectively.  The \fIport\fR and \fImask\fR are 16-bit numbers
697 written in decimal or in hexadecimal prefixed by \fB0x\fR.  Each 1-bit
698 in \fImask\fR requires that the corresponding bit in \fIport\fR must
699 match.  Each 0-bit in \fImask\fR causes the corresponding bit to be
700 ignored.
701 .IP
702 Bitwise matches on transport ports are rarely useful in isolation, but
703 a group of them can be used to reduce the number of flows required to
704 match on a range of transport ports.  For example, suppose that the
705 goal is to match TCP source ports 1000 to 1999, inclusive.  One way is
706 to insert 1000 flows, each of which matches on a single source port.
707 Another way is to look at the binary representations of 1000 and 1999,
708 as follows:
709 .br
710 .B "01111101000"
711 .br
712 .B "11111001111"
713 .br
714 and then to transform those into a series of bitwise matches that
715 accomplish the same results:
716 .br
717 .B "01111101xxx"
718 .br
719 .B "0111111xxxx"
720 .br
721 .B "10xxxxxxxxx"
722 .br
723 .B "110xxxxxxxx"
724 .br
725 .B "1110xxxxxxx"
726 .br
727 .B "11110xxxxxx"
728 .br
729 .B "1111100xxxx"
730 .br
731 which become the following when written in the syntax required by
732 \fBovs\-ofctl\fR:
733 .br
734 .B "tcp,tp_src=0x03e8/0xfff8"
735 .br
736 .B "tcp,tp_src=0x03f0/0xfff0"
737 .br
738 .B "tcp,tp_src=0x0400/0xfe00"
739 .br
740 .B "tcp,tp_src=0x0600/0xff00"
741 .br
742 .B "tcp,tp_src=0x0700/0xff80"
743 .br
744 .B "tcp,tp_src=0x0780/0xffc0"
745 .br
746 .B "tcp,tp_src=0x07c0/0xfff0"
747 .IP
748 Only Open vSwitch 1.6 and later supports bitwise matching on transport
749 ports.
750 .IP
751 Like the exact-match forms of \fBtp_src\fR and \fBtp_dst\fR described
752 above, the bitwise match forms apply only when \fBdl_type\fR and
753 \fBnw_proto\fR specify TCP or UDP or SCTP.
754 .
755 .IP \fBtcp_flags=\fIflags\fB/\fImask\fR
756 .IQ \fBtcp_flags=\fR[\fB+\fIflag\fR...][\fB-\fIflag\fR...]
757 Bitwise match on TCP flags.  The \fIflags\fR and \fImask\fR are 16-bit
758 numbers written in decimal or in hexadecimal prefixed by \fB0x\fR.
759 Each 1-bit in \fImask\fR requires that the corresponding bit in
760 \fIflags\fR must match.  Each 0-bit in \fImask\fR causes the corresponding
761 bit to be ignored.
762 .IP
763 Alternatively, the flags can be specified by their symbolic names
764 (listed below), each preceded by either \fB+\fR for a flag that must
765 be set, or \fB\-\fR for a flag that must be unset, without any other
766 delimiters between the flags.  Flags not mentioned are wildcarded.
767 For example, \fBtcp,tcp_flags=+syn\-ack\fR matches TCP SYNs that are
768 not ACKs.
769 .IP
770 TCP protocol currently defines 9 flag bits, and additional 3 bits are
771 reserved (must be transmitted as zero), see RFCs 793, 3168, and 3540.
772 The flag bits are, numbering from the least significant bit:
773 .RS
774 .IP "\fB0: fin\fR"
775 No more data from sender.
776 .IP "\fB1: syn\fR"
777 Synchronize sequence numbers.
778 .IP "\fB2: rst\fR"
779 Reset the connection.
780 .IP "\fB3: psh\fR"
781 Push function.
782 .IP "\fB4: ack\fR"
783 Acknowledgement field significant.
784 .IP "\fB5: urg\fR"
785 Urgent pointer field significant.
786 .IP "\fB6: ece\fR"
787 ECN Echo.
788 .IP "\fB7: cwr\fR"
789 Congestion Windows Reduced.
790 .IP "\fB8: ns\fR"
791 Nonce Sum.
792 .IP "\fB9-11:\fR"
793 Reserved.
794 .IP "\fB12-15:\fR"
795 Not matchable, must be zero.
796 .RE
797 .IP \fBicmp_type=\fItype\fR
798 .IQ \fBicmp_code=\fIcode\fR
799 When \fBdl_type\fR and \fBnw_proto\fR specify ICMP or ICMPv6, \fItype\fR
800 matches the ICMP type and \fIcode\fR matches the ICMP code.  Each is
801 specified as a decimal number between 0 and 255, inclusive.
802 .IP
803 When \fBdl_type\fR and \fBnw_proto\fR take other values, the values of
804 these settings are ignored (see \fBFlow Syntax\fR above).
805 .
806 .IP \fBtable=\fInumber\fR
807 For flow dump commands, limits the flows dumped to those in the table
808 with the given \fInumber\fR between 0 and 254.  If not specified (or if
809 255 is specified as \fInumber\fR), then flows in all tables are
810 dumped.
811 .
812 .IP
813 For flow table modification commands, behavior varies based on the
814 OpenFlow version used to connect to the switch:
815 .
816 .RS
817 .IP "OpenFlow 1.0"
818 OpenFlow 1.0 does not support \fBtable\fR for modifying flows.
819 \fBovs\-ofctl\fR will exit with an error if \fBtable\fR (other than
820 \fBtable=255\fR) is specified for a switch that only supports OpenFlow
821 1.0.
822 .IP
823 In OpenFlow 1.0, the switch chooses the table into which to insert a
824 new flow.  The Open vSwitch software switch always chooses table 0.
825 Other Open vSwitch datapaths and other OpenFlow implementations may
826 choose different tables.
827 .IP
828 The OpenFlow 1.0 behavior in Open vSwitch for modifying or removing
829 flows depends on whether \fB\-\-strict\fR is used.  Without
830 \fB\-\-strict\fR, the command applies to matching flows in all tables.
831 With \fB\-\-strict\fR, the command will operate on any single matching
832 flow in any table; it will do nothing if there are matches in more
833 than one table.  (The distinction between these behaviors only matters
834 if non-OpenFlow 1.0 commands were also used, because OpenFlow 1.0
835 alone cannot add flows with the same matching criteria to multiple
836 tables.)
837 .
838 .IP "OpenFlow 1.0 with table_id extension"
839 Open vSwitch implements an OpenFlow extension that allows the
840 controller to specify the table on which to operate.  \fBovs\-ofctl\fR
841 automatically enables the extension when \fBtable\fR is specified and
842 OpenFlow 1.0 is used.  \fBovs\-ofctl\fR automatically detects whether
843 the switch supports the extension.  As of this writing, this extension
844 is only known to be implemented by Open vSwitch.
845 .
846 .IP
847 With this extension, \fBovs\-ofctl\fR operates on the requested table
848 when \fBtable\fR is specified, and acts as described for OpenFlow 1.0
849 above when no \fBtable\fR is specified (or for \fBtable=255\fR).
850 .
851 .IP "OpenFlow 1.1"
852 OpenFlow 1.1 requires flow table modification commands to specify a
853 table.  When \fBtable\fR is not specified (or \fBtable=255\fR is
854 specified), \fBovs\-ofctl\fR defaults to table 0.
855 .
856 .IP "OpenFlow 1.2 and later"
857 OpenFlow 1.2 and later allow flow deletion commands, but not other
858 flow table modification commands, to operate on all flow tables, with
859 the behavior described above for OpenFlow 1.0.
860 .RE
861 .
862 .IP \fBmetadata=\fIvalue\fR[\fB/\fImask\fR]
863 Matches \fIvalue\fR either exactly or with optional \fImask\fR in the metadata
864 field. \fIvalue\fR and \fImask\fR are 64-bit integers, by default in decimal
865 (use a \fB0x\fR prefix to specify hexadecimal). Arbitrary \fImask\fR values
866 are allowed: a 1-bit in \fImask\fR indicates that the corresponding bit in
867 \fIvalue\fR must match exactly, and a 0-bit wildcards that bit. Matching on
868 metadata was added in Open vSwitch 1.8.
869 .
870 .PP
871 The following shorthand notations are also available:
872 .
873 .IP \fBip\fR
874 Same as \fBdl_type=0x0800\fR.
875 .
876 .IP \fBicmp\fR
877 Same as \fBdl_type=0x0800,nw_proto=1\fR.
878 .
879 .IP \fBtcp\fR
880 Same as \fBdl_type=0x0800,nw_proto=6\fR.
881 .
882 .IP \fBudp\fR
883 Same as \fBdl_type=0x0800,nw_proto=17\fR.
884 .
885 .IP \fBsctp\fR
886 Same as \fBdl_type=0x0800,nw_proto=132\fR.
887 .
888 .IP \fBarp\fR
889 Same as \fBdl_type=0x0806\fR.
890 .
891 .IP \fBrarp\fR
892 Same as \fBdl_type=0x8035\fR.
893 .
894 .PP
895 The following field assignments require support for the NXM (Nicira
896 Extended Match) extension to OpenFlow.  When one of these is specified,
897 \fBovs\-ofctl\fR will automatically attempt to negotiate use of this
898 extension.  If the switch does not support NXM, then \fBovs\-ofctl\fR
899 will report a fatal error.
900 .
901 .IP \fBvlan_tci=\fItci\fR[\fB/\fImask\fR]
902 Matches modified VLAN TCI \fItci\fR.  If \fImask\fR is omitted,
903 \fItci\fR is the exact VLAN TCI to match; if \fImask\fR is specified,
904 then a 1-bit in \fImask\fR indicates that the corresponding bit in
905 \fItci\fR must match exactly, and a 0-bit wildcards that bit.  Both
906 \fItci\fR and \fImask\fR are 16-bit values that are decimal by
907 default; use a \fB0x\fR prefix to specify them in hexadecimal.
908 .
909 .IP
910 The value that \fBvlan_tci\fR matches against is 0 for a packet that
911 has no 802.1Q header.  Otherwise, it is the TCI value from the 802.1Q
912 header with the CFI bit (with value \fB0x1000\fR) forced to 1.
913 .IP
914 Examples:
915 .RS
916 .IP \fBvlan_tci=0\fR
917 Match only packets without an 802.1Q header.
918 .IP \fBvlan_tci=0xf123\fR
919 Match packets tagged with priority 7 in VLAN 0x123.
920 .IP \fBvlan_tci=0x1123/0x1fff\fR
921 Match packets tagged with VLAN 0x123 (and any priority).
922 .IP \fBvlan_tci=0x5000/0xf000\fR
923 Match packets tagged with priority 2 (in any VLAN).
924 .IP \fBvlan_tci=0/0xfff\fR
925 Match packets with no 802.1Q header or tagged with VLAN 0 (and any
926 priority).
927 .IP \fBvlan_tci=0x5000/0xe000\fR
928 Match packets with no 802.1Q header or tagged with priority 2 (in any
929 VLAN).
930 .IP \fBvlan_tci=0/0xefff\fR
931 Match packets with no 802.1Q header or tagged with VLAN 0 and priority
932 0.
933 .RE
934 .IP
935 Some of these matching possibilities can also be achieved with
936 \fBdl_vlan\fR and \fBdl_vlan_pcp\fR.
937 .
938 .IP \fBip_frag=\fIfrag_type\fR
939 When \fBdl_type\fR specifies IP or IPv6, \fIfrag_type\fR
940 specifies what kind of IP fragments or non-fragments to match.  The
941 following values of \fIfrag_type\fR are supported:
942 .RS
943 .IP "\fBno\fR"
944 Matches only non-fragmented packets.
945 .IP "\fByes\fR"
946 Matches all fragments.
947 .IP "\fBfirst\fR"
948 Matches only fragments with offset 0.
949 .IP "\fBlater\fR"
950 Matches only fragments with nonzero offset.
951 .IP "\fBnot_later\fR"
952 Matches non-fragmented packets and fragments with zero offset.
953 .RE
954 .IP
955 The \fBip_frag\fR match type is likely to be most useful in
956 \fBnx\-match\fR mode.  See the description of the \fBset\-frags\fR
957 command, above, for more details.
958 .
959 .IP \fBarp_spa=\fIip\fR[\fB/\fInetmask\fR]
960 .IQ \fBarp_tpa=\fIip\fR[\fB/\fInetmask\fR]
961 When \fBdl_type\fR specifies either ARP or RARP, \fBarp_spa\fR and
962 \fBarp_tpa\fR match the source and target IPv4 address, respectively.
963 An address may be specified as an IP address or host name
964 (e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR).  The optional
965 \fInetmask\fR allows restricting a match to an IPv4 address prefix.
966 The netmask may be specified as a dotted quad
967 (e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
968 (e.g. \fB192.168.1.0/24\fR).
969 .
970 .IP \fBarp_sha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
971 .IQ \fBarp_tha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
972 When \fBdl_type\fR specifies either ARP or RARP, \fBarp_sha\fR and
973 \fBarp_tha\fR match the source and target hardware address, respectively.  An
974 address is specified as 6 pairs of hexadecimal digits delimited by colons
975 (e.g. \fB00:0A:E4:25:6B:B0\fR).
976 .
977 .IP \fBarp_sha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB/\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
978 .IQ \fBarp_tha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB/\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
979 When \fBdl_type\fR specifies either ARP or RARP, \fBarp_sha\fR and
980 \fBarp_tha\fR match the source and target hardware address, respectively.  An
981 address is specified as 6 pairs of hexadecimal digits delimited by colons
982 (e.g. \fB00:0A:E4:25:6B:B0\fR), with a wildcard mask following the slash.
983 .
984
985 .IP \fBipv6_src=\fIipv6\fR[\fB/\fInetmask\fR]
986 .IQ \fBipv6_dst=\fIipv6\fR[\fB/\fInetmask\fR]
987 When \fBdl_type\fR is 0x86dd (possibly via shorthand, e.g., \fBipv6\fR
988 or \fBtcp6\fR), matches IPv6 source (or destination) address \fIipv6\fR,
989 which may be specified as defined in RFC 2373.  The preferred format is 
990 \fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fR, where
991 \fIx\fR are the hexadecimal values of the eight 16-bit pieces of the
992 address.  A single instance of \fB::\fR may be used to indicate multiple
993 groups of 16-bits of zeros.  The optional \fInetmask\fR allows
994 restricting a match to an IPv6 address prefix.  A netmask is specified
995 as an IPv6 address (e.g. \fB2001:db8:3c4d:1::/ffff:ffff:ffff:ffff::\fR)
996 or a CIDR block (e.g. \fB2001:db8:3c4d:1::/64\fR).  Open vSwitch 1.8
997 and later support arbitrary masks; earlier versions support only CIDR
998 masks, that is, CIDR block and IPv6 addresses that are equivalent to
999 CIDR blocks.
1000 .
1001 .IP \fBipv6_label=\fIlabel\fR
1002 When \fBdl_type\fR is 0x86dd (possibly via shorthand, e.g., \fBipv6\fR
1003 or \fBtcp6\fR), matches IPv6 flow label \fIlabel\fR.
1004 .
1005 .IP \fBnd_target=\fIipv6\fR[\fB/\fInetmask\fR]
1006 When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify
1007 IPv6 Neighbor Discovery (ICMPv6 type 135 or 136), matches the target address
1008 \fIipv6\fR.  \fIipv6\fR is in the same format described earlier for the
1009 \fBipv6_src\fR and \fBipv6_dst\fR fields.
1010 .
1011 .IP \fBnd_sll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
1012 When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
1013 Neighbor Solicitation (ICMPv6 type 135), matches the source link\-layer
1014 address option.  An address is specified as 6 pairs of hexadecimal
1015 digits delimited by colons.
1016 .
1017 .IP \fBnd_tll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
1018 When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
1019 Neighbor Advertisement (ICMPv6 type 136), matches the target link\-layer
1020 address option.  An address is specified as 6 pairs of hexadecimal
1021 digits delimited by colons.
1022 .
1023 .IP \fBmpls_bos=\fIbos\fR
1024 When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1025 \fBmpls\fR or \fBmplsm\fR), matches the bottom-of-stack bit of the
1026 outer-most MPLS label stack entry. Valid values are 0 and 1.
1027 .IP
1028 If 1 then for a packet with a well-formed MPLS label stack the
1029 bottom-of-stack bit indicates that the outer label stack entry is also
1030 the inner-most label stack entry and thus that is that there is only one
1031 label stack entry present.  Conversely, if 0 then for a packet with a
1032 well-formed MPLS label stack the bottom-of-stack bit indicates that the
1033 outer label stack entry is not the inner-most label stack entry and
1034 thus there is more than one label stack entry present.
1035 .
1036 .IP \fBmpls_label=\fIlabel\fR
1037 When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1038 \fBmpls\fR or \fBmplsm\fR), matches the label of the outer
1039 MPLS label stack entry. The label is a 20-bit value that is decimal by default;
1040 use a \fB0x\fR prefix to specify them in hexadecimal.
1041 .
1042 .IP \fBmpls_tc=\fItc\fR
1043 When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1044 \fBmpls\fR or \fBmplsm\fR), matches the traffic-class of the outer
1045 MPLS label stack entry. Valid values are between 0 (lowest) and 7 (highest).
1046 .
1047 .IP \fBtun_id=\fItunnel-id\fR[\fB/\fImask\fR]
1048 .IQ \fBtunnel_id=\fItunnel-id\fR[\fB/\fImask\fR]
1049 Matches tunnel identifier \fItunnel-id\fR.  Only packets that arrive
1050 over a tunnel that carries a key (e.g. GRE with the RFC 2890 key
1051 extension and a nonzero key value) will have a nonzero tunnel ID.
1052 If \fImask\fR is omitted, \fItunnel-id\fR is the exact tunnel ID to match;
1053 if \fImask\fR is specified, then a 1-bit in \fImask\fR indicates that the
1054 corresponding bit in \fItunnel-id\fR must match exactly, and a 0-bit
1055 wildcards that bit.
1056 .
1057 .IP \fBtun_src=\fIip\fR[\fB/\fInetmask\fR]
1058 .IQ \fBtun_dst=\fIip\fR[\fB/\fInetmask\fR]
1059 Matches tunnel IPv4 source (or destination) address \fIip\fR. Only packets
1060 that arrive over a tunnel will have nonzero tunnel addresses.
1061 The address may be specified as an IP address or host name
1062 (e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR).  The optional
1063 \fInetmask\fR allows restricting a match to a masked IPv4 address.
1064 The netmask may be specified as a dotted quad
1065 (e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
1066 (e.g. \fB192.168.1.0/24\fR).
1067 .
1068 .IP "\fBreg\fIidx\fB=\fIvalue\fR[\fB/\fImask\fR]"
1069 Matches \fIvalue\fR either exactly or with optional \fImask\fR in
1070 register number \fIidx\fR.  The valid range of \fIidx\fR depends on
1071 the switch.  \fIvalue\fR and \fImask\fR are 32-bit integers, by
1072 default in decimal (use a \fB0x\fR prefix to specify hexadecimal).
1073 Arbitrary \fImask\fR values are allowed: a 1-bit in \fImask\fR
1074 indicates that the corresponding bit in \fIvalue\fR must match
1075 exactly, and a 0-bit wildcards that bit.
1076 .IP
1077 When a packet enters an OpenFlow switch, all of the registers are set
1078 to 0.  Only explicit Nicira extension actions change register values.
1079 .
1080 .IP \fBpkt_mark=\fIvalue\fR[\fB/\fImask\fR]
1081 Matches packet metadata mark \fIvalue\fR either exactly or with optional
1082 \fImask\fR. The mark is associated data that may be passed into other
1083 system components in order to facilitate interaction between subsystems.
1084 On Linux this corresponds to the skb mark but the exact implementation is
1085 platform-dependent.
1086 .
1087 .PP
1088 Defining IPv6 flows (those with \fBdl_type\fR equal to 0x86dd) requires
1089 support for NXM.  The following shorthand notations are available for
1090 IPv6-related flows:
1091 .
1092 .IP \fBipv6\fR
1093 Same as \fBdl_type=0x86dd\fR.
1094 .
1095 .IP \fBtcp6\fR
1096 Same as \fBdl_type=0x86dd,nw_proto=6\fR.
1097 .
1098 .IP \fBudp6\fR
1099 Same as \fBdl_type=0x86dd,nw_proto=17\fR.
1100 .
1101 .IP \fBsctp6\fR
1102 Same as \fBdl_type=0x86dd,nw_proto=132\fR.
1103 .
1104 .IP \fBicmp6\fR
1105 Same as \fBdl_type=0x86dd,nw_proto=58\fR.
1106 .
1107 .PP
1108 Finally, field assignments to \fBduration\fR, \fBn_packets\fR, or
1109 \fBn_bytes\fR are ignored to allow output from the \fBdump\-flows\fR
1110 command to be used as input for other commands that parse flows.
1111 .
1112 .PP
1113 The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1114 require an additional field, which must be the final field specified:
1115 .
1116 .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
1117 Specifies a comma-separated list of actions to take on a packet when the 
1118 flow entry matches.  If no \fIaction\fR is specified, then packets
1119 matching the flow are dropped.  The following forms of \fIaction\fR
1120 are supported:
1121 .
1122 .RS
1123 .IP \fIport\fR
1124 .IQ \fBoutput:\fIport\fR
1125 Outputs the packet to OpenFlow port number \fIport\fR.  If \fIport\fR
1126 is the packet's input port, the packet is not output.
1127 .
1128 .IP \fBoutput:\fIsrc\fB[\fIstart\fB..\fIend\fB]
1129 Outputs the packet to the OpenFlow port number read from \fIsrc\fR,
1130 which must be an NXM field as described above.  For example,
1131 \fBoutput:NXM_NX_REG0[16..31]\fR outputs to the OpenFlow port number
1132 written in the upper half of register 0.  If the port number is the
1133 packet's input port, the packet is not output.
1134 .IP
1135 This form of \fBoutput\fR was added in Open vSwitch 1.3.0.  This form
1136 of \fBoutput\fR uses an OpenFlow extension that is not supported by
1137 standard OpenFlow switches.
1138 .
1139 .IP \fBnormal\fR
1140 Subjects the packet to the device's normal L2/L3 processing.  (This
1141 action is not implemented by all OpenFlow switches.)
1142 .
1143 .IP \fBflood\fR
1144 Outputs the packet on all switch physical ports other than the port on
1145 which it was received and any ports on which flooding is disabled
1146 (typically, these would be ports disabled by the IEEE 802.1D spanning
1147 tree protocol).
1148 .
1149 .IP \fBall\fR
1150 Outputs the packet on all switch physical ports other than the port on
1151 which it was received.
1152 .
1153 .IP \fBlocal\fR
1154 Outputs the packet on the ``local port,'' which corresponds to the
1155 network device that has the same name as the bridge.
1156 .
1157 .IP \fBin_port\fR
1158 Outputs the packet on the port from which it was received.
1159 .
1160 .IP \fBcontroller(\fIkey\fB=\fIvalue\fR...\fB)
1161 Sends the packet to the OpenFlow controller as a ``packet in''
1162 message.  The supported key-value pairs are:
1163 .RS
1164 .IP "\fBmax_len=\fInbytes\fR"
1165 Limit to \fInbytes\fR the number of bytes of the packet to send to
1166 the controller.  By default the entire packet is sent.
1167 .IP "\fBreason=\fIreason\fR"
1168 Specify \fIreason\fR as the reason for sending the message in the
1169 ``packet in'' message.  The supported reasons are \fBaction\fR (the
1170 default), \fBno_match\fR, and \fBinvalid_ttl\fR.
1171 .IP "\fBid=\fIcontroller-id\fR"
1172 Specify \fIcontroller-id\fR, a 16-bit integer, as the connection ID of
1173 the OpenFlow controller or controllers to which the ``packet in''
1174 message should be sent.  The default is zero.  Zero is also the
1175 default connection ID for each controller connection, and a given
1176 controller connection will only have a nonzero connection ID if its
1177 controller uses the \fBNXT_SET_CONTROLLER_ID\fR Nicira extension to
1178 OpenFlow.
1179 .RE
1180 .IP
1181 Any \fIreason\fR other than \fBaction\fR and any nonzero
1182 \fIcontroller-id\fR uses a Nicira vendor extension that, as of this
1183 writing, is only known to be implemented by Open vSwitch (version 1.6
1184 or later).
1185 .
1186 .IP \fBcontroller\fR
1187 .IQ \fBcontroller\fR[\fB:\fInbytes\fR]
1188 Shorthand for \fBcontroller()\fR or
1189 \fBcontroller(max_len=\fInbytes\fB)\fR, respectively.
1190 .
1191 .IP \fBenqueue(\fIport\fB,\fIqueue\fB)\fR
1192 Enqueues the packet on the specified \fIqueue\fR within port
1193 \fIport\fR, which must be an OpenFlow port number or keyword
1194 (e.g. \fBLOCAL\fR).  The number of supported queues depends on the
1195 switch; some OpenFlow implementations do not support queuing at all.
1196 .
1197 .IP \fBdrop\fR
1198 Discards the packet, so no further processing or forwarding takes place.
1199 If a drop action is used, no other actions may be specified.
1200 .
1201 .IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
1202 Modifies the VLAN id on a packet.  The VLAN tag is added or modified 
1203 as necessary to match the value specified.  If the VLAN tag is added,
1204 a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
1205 this).
1206 .
1207 .IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
1208 Modifies the VLAN priority on a packet.  The VLAN tag is added or modified 
1209 as necessary to match the value specified.  Valid values are between 0
1210 (lowest) and 7 (highest).  If the VLAN tag is added, a vid of zero is used 
1211 (see the \fBmod_vlan_vid\fR action to set this).
1212 .
1213 .IP \fBstrip_vlan\fR
1214 Strips the VLAN tag from a packet if it is present.
1215 .
1216 .IP \fBpush_vlan\fR:\fIethertype\fR
1217 Push a new VLAN tag onto the packet.  Ethertype is used as the the Ethertype
1218 for the tag. Only ethertype 0x8100 should be used. (0x88a8 which the spec
1219 allows isn't supported at the moment.)
1220 A priority of zero and the tag of zero are used for the new tag.
1221 .
1222 .IP \fBpush_mpls\fR:\fIethertype\fR
1223 Changes the packet's Ethertype to \fIethertype\fR, which must be either
1224 \fB0x8847\fR or \fB0x8848\fR, and pushes an MPLS LSE.
1225 .IP
1226 If the packet does not already contain any MPLS labels then an initial
1227 label stack entry is pushed.  The label stack entry's label is 2 if the
1228 packet contains IPv6 and 0 otherwise, its default traffic control value is
1229 the low 3 bits of the packet's DSCP value (0 if the packet is not IP), and
1230 its TTL is copied from the IP TTL (64 if the packet is not IP).
1231 .IP
1232 If the packet does already contain an MPLS label, pushes a new
1233 outermost label as a copy of the existing outermost label.
1234 .IP
1235 A limitation of the implementation is that processing of actions will stop
1236 if \fBpush_mpls\fR follows another \fBpush_mpls\fR unless there is a
1237 \fBpop_mpls\fR in between.
1238 .
1239 .IP \fBpop_mpls\fR:\fIethertype\fR
1240 Strips the outermost MPLS label stack entry.
1241 Currently the implementation restricts \fIethertype\fR to a non-MPLS Ethertype
1242 and thus \fBpop_mpls\fR should only be applied to packets with
1243 an MPLS label stack depth of one. A further limitation is that processing of
1244 actions will stop if \fBpop_mpls\fR follows another \fBpop_mpls\fR unless
1245 there is a \fBpush_mpls\fR in between.
1246 .
1247 .IP \fBmod_dl_src\fB:\fImac\fR
1248 Sets the source Ethernet address to \fImac\fR.
1249 .
1250 .IP \fBmod_dl_dst\fB:\fImac\fR
1251 Sets the destination Ethernet address to \fImac\fR.
1252 .
1253 .IP \fBmod_nw_src\fB:\fIip\fR
1254 Sets the IPv4 source address to \fIip\fR.
1255 .
1256 .IP \fBmod_nw_dst\fB:\fIip\fR
1257 Sets the IPv4 destination address to \fIip\fR.
1258 .
1259 .IP \fBmod_tp_src\fB:\fIport\fR
1260 Sets the TCP or UDP or SCTP source port to \fIport\fR.
1261 .
1262 .IP \fBmod_tp_dst\fB:\fIport\fR
1263 Sets the TCP or UDP or SCTP destination port to \fIport\fR.
1264 .
1265 .IP \fBmod_nw_tos\fB:\fItos\fR
1266 Sets the DSCP bits in the IPv4 ToS/DSCP or IPv6 traffic class field to
1267 \fItos\fR, which must be a multiple of 4 between 0 and 255.  This action
1268 does not modify the two least significant bits of the ToS field (the ECN bits).
1269 .
1270 .IP \fBmod_nw_ecn\fB:\fIecn\fR
1271 Sets the ECN bits in the IPv4 ToS or IPv6 traffic class field to \fIecn\fR,
1272 which must be a value between 0 and 3, inclusive.  This action does not modify
1273 the six most significant bits of the field (the DSCP bits).
1274 .IP
1275 Requires OpenFlow 1.1 or later.
1276 .
1277 .IP \fBmod_nw_ttl\fB:\fIttl\fR
1278 Sets the IPv4 TTL or IPv6 hop limit field to \fIttl\fR, which is specified as
1279 a decimal number between 0 and 255, inclusive.  Switch behavior when setting
1280 \fIttl\fR to zero is not well specified, though.
1281 .IP
1282 Requires OpenFlow 1.1 or later.
1283 .RE
1284 .IP
1285 The following actions are Nicira vendor extensions that, as of this writing, are
1286 only known to be implemented by Open vSwitch:
1287 .
1288 .RS
1289 .
1290 .IP \fBresubmit\fB:\fIport\fR
1291 .IQ \fBresubmit\fB(\fR[\fIport\fR]\fB,\fR[\fItable\fR]\fB)
1292 Re-searches this OpenFlow flow table (or the table whose number is
1293 specified by \fItable\fR) with the \fBin_port\fR field replaced by
1294 \fIport\fR (if \fIport\fR is specified) and executes the actions
1295 found, if any, in addition to any other actions in this flow entry.
1296 .IP
1297 Recursive \fBresubmit\fR actions are obeyed up to an
1298 implementation-defined maximum depth.  Open vSwitch 1.0.1 and earlier
1299 did not support recursion; Open vSwitch before 1.2.90 did not support
1300 \fItable\fR.
1301 .
1302 .IP \fBset_tunnel\fB:\fIid\fR
1303 .IQ \fBset_tunnel64\fB:\fIid\fR
1304 If outputting to a port that encapsulates the packet in a tunnel and
1305 supports an identifier (such as GRE), sets the identifier to \fIid\fR.
1306 If the \fBset_tunnel\fR form is used and \fIid\fR fits in 32 bits,
1307 then this uses an action extension that is supported by Open vSwitch
1308 1.0 and later.  Otherwise, if \fIid\fR is a 64-bit value, it requires
1309 Open vSwitch 1.1 or later.
1310 .
1311 .IP \fBset_queue\fB:\fIqueue\fR
1312 Sets the queue that should be used to \fIqueue\fR when packets are
1313 output.  The number of supported queues depends on the switch; some
1314 OpenFlow implementations do not support queuing at all.
1315 .
1316 .IP \fBpop_queue\fR
1317 Restores the queue to the value it was before any \fBset_queue\fR
1318 actions were applied.
1319 .
1320 .IP \fBdec_ttl\fR
1321 .IQ \fBdec_ttl\fB[\fR(\fIid1,id2\fI)\fR]\fR
1322 Decrement TTL of IPv4 packet or hop limit of IPv6 packet.  If the
1323 TTL or hop limit is initially zero or decrementing would make it so, no
1324 decrement occurs, as packets reaching TTL zero must be rejected.  Instead,
1325 a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR is
1326 sent to each connected controller that has enabled receiving them,
1327 if any.  Processing the current set of actions then stops.  However,
1328 if the current set of actions was reached through ``resubmit'' then
1329 remaining actions in outer levels resume processing.  This action
1330 also optionally supports the ability to specify a list of valid
1331 controller ids.  Each of controllers in the list will receive the
1332 ``packet_in'' message only if they have registered to receive the
1333 invalid ttl packets.  If controller ids are not specified, the
1334 ``packet_in'' message will be sent only to the controllers having
1335 controller id zero which have registered for the invalid ttl packets.
1336 .
1337 .IP \fBset_mpls_label\fR:\fIlabel\fR
1338 Set the label of the outer MPLS label stack entry of a packet.
1339 \fIlabel\fR should be a 20-bit value that is decimal by default;
1340 use a \fB0x\fR prefix to specify them in hexadecimal.
1341 .
1342 .IP \fBset_mpls_tc\fR:\fItc\fR
1343 Set the traffic-class of the outer MPLS label stack entry of a packet.
1344 \fItc\fR should be a in the range 0 to 7 inclusive.
1345 .
1346 .IP \fBset_mpls_ttl\fR:\fIttl\fR
1347 Set the TTL of the outer MPLS label stack entry of a packet.
1348 \fIttl\fR should be in the range 0 to 255 inclusive.
1349 .
1350 .IP \fBdec_mpls_ttl\fR
1351 Decrement TTL of the outer MPLS label stack entry of a packet.  If the TTL
1352 is initially zero or decrementing would make it so, no decrement occurs.
1353 Instead, a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR
1354 is sent to the main controller (id zero), if it has enabled receiving them.
1355 Processing the current set of actions then stops.  However, if the current
1356 set of actions was reached through ``resubmit'' then remaining actions in
1357 outer levels resume processing.
1358 .
1359 .IP \fBnote:\fR[\fIhh\fR]...
1360 Does nothing at all.  Any number of bytes represented as hex digits
1361 \fIhh\fR may be included.  Pairs of hex digits may be separated by
1362 periods for readability.
1363 The \fBnote\fR action's format doesn't include an exact length for its
1364 payload, so the provided bytes will be padded on the right by enough
1365 bytes with value 0 to make the total number 6 more than a multiple of
1366 8.
1367 .
1368 .IP "\fBmove:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]\fR"
1369 Copies the named bits from field \fIsrc\fR to field \fIdst\fR.
1370 \fIsrc\fR and \fIdst\fR must be NXM field names as defined in
1371 \fBnicira\-ext.h\fR, e.g. \fBNXM_OF_UDP_SRC\fR or \fBNXM_NX_REG0\fR.
1372 Each \fIstart\fR and \fIend\fR pair, which are inclusive, must specify
1373 the same number of bits and must fit within its respective field.
1374 Shorthands for \fB[\fIstart\fB..\fIend\fB]\fR exist: use
1375 \fB[\fIbit\fB]\fR to specify a single bit or \fB[]\fR to specify an
1376 entire field.
1377 .IP
1378 Examples: \fBmove:NXM_NX_REG0[0..5]\->NXM_NX_REG1[26..31]\fR copies the
1379 six bits numbered 0 through 5, inclusive, in register 0 into bits 26
1380 through 31, inclusive;
1381 \fBmove:NXM_NX_REG0[0..15]\->NXM_OF_VLAN_TCI[]\fR copies the least
1382 significant 16 bits of register 0 into the VLAN TCI field.
1383 .
1384 .IP "\fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]"
1385 Writes \fIvalue\fR to bits \fIstart\fR through \fIend\fR, inclusive,
1386 in field \fIdst\fR.
1387 .IP
1388 Example: \fBload:55\->NXM_NX_REG2[0..5]\fR loads value 55 (bit pattern
1389 \fB110111\fR) into bits 0 through 5, inclusive, in register 2.
1390 .
1391 .IP "\fBpush:\fIsrc\fB[\fIstart\fB..\fIend\fB]"
1392 Pushes \fIstart\fR to \fIend\fR bits inclusive, in fields
1393 on top of the stack.
1394 .IP
1395 Example: \fBpush:NXM_NX_REG2[0..5]\fR push the value stored in register
1396 2 bits 0 through 5, inclusive, on to the internal stack.
1397 .
1398 .IP "\fBpop:\fIdst\fB[\fIstart\fB..\fIend\fB]"
1399 Pops from the top of the stack, retrieves the \fIstart\fR to \fIend\fR bits
1400 inclusive, from the value popped and store them into the corresponding
1401 bits in \fIdst\fR.
1402 .
1403 .IP
1404 Example: \fBpop:NXM_NX_REG2[0..5]\fR pops the value from top of the stack.
1405 Set register 2 bits 0 through 5, inclusive, based on bits 0 through 5 from the
1406 value just popped.
1407 .
1408 .IP "\fBset_field:\fIvalue\fB\->\fIdst"
1409 Writes the literal \fIvalue\fR into the field \fIdst\fR, which should
1410 be specified as a name used for matching.  (This is similar to
1411 \fBload\fR but more closely matches the set-field action defined in
1412 OpenFlow 1.2 and above.)
1413 .
1414 .IP
1415 Example: \fBset_field:00:11:22:33:44:55->eth_src\fR.
1416 .
1417 .IP "\fBmultipath(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIn_links\fB, \fIarg\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
1418 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter,
1419 then the applies multipath link selection \fIalgorithm\fR (with
1420 parameter \fIarg\fR) to choose one of \fIn_links\fR output links
1421 numbered 0 through \fIn_links\fR minus 1, and stores the link into
1422 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as
1423 described above.
1424 .IP
1425 Currently, \fIfields\fR must be either \fBeth_src\fR or
1426 \fBsymmetric_l4\fR and \fIalgorithm\fR must be one of \fBmodulo_n\fR,
1427 \fBhash_threshold\fR, \fBhrw\fR, and \fBiter_hash\fR.  Only
1428 the \fBiter_hash\fR algorithm uses \fIarg\fR.
1429 .IP
1430 Refer to \fBnicira\-ext.h\fR for more details.
1431 .
1432 .IP "\fBbundle(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1433 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter, then
1434 applies the bundle link selection \fIalgorithm\fR to choose one of the listed
1435 slaves represented as \fIslave_type\fR.  Currently the only supported
1436 \fIslave_type\fR is \fBofport\fR.  Thus, each \fIs1\fR through \fIsN\fR should
1437 be an OpenFlow port number. Outputs to the selected slave.
1438 .IP
1439 Currently, \fIfields\fR must be either \fBeth_src\fR or \fBsymmetric_l4\fR and
1440 \fIalgorithm\fR must be one of \fBhrw\fR and \fBactive_backup\fR.
1441 .IP
1442 Example: \fBbundle(eth_src,0,hrw,ofport,slaves:4,8)\fR uses an Ethernet source
1443 hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest
1444 Random Weight algorithm.
1445 .IP
1446 Refer to \fBnicira\-ext.h\fR for more details.
1447 .
1448 .IP "\fBbundle_load(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, \fIdst\fB[\fIstart\fB..\fIend\fB], slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1449 Has the same behavior as the \fBbundle\fR action, with one exception.  Instead
1450 of outputting to the selected slave, it writes its selection to
1451 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as described
1452 above.
1453 .IP
1454 Example: \fBbundle_load(eth_src, 0, hrw, ofport, NXM_NX_REG0[],
1455 slaves:4, 8)\fR uses an Ethernet source hash with basis 0, to select
1456 between OpenFlow ports 4 and 8 using the Highest Random Weight
1457 algorithm, and writes the selection to \fBNXM_NX_REG0[]\fR.
1458 .IP
1459 Refer to \fBnicira\-ext.h\fR for more details.
1460 .
1461 .IP "\fBlearn(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1462 This action adds or modifies a flow in an OpenFlow table, similar to
1463 \fBovs\-ofctl \-\-strict mod\-flows\fR.  The arguments specify the
1464 flow's match fields, actions, and other properties, as follows.  At
1465 least one match criterion and one action argument should ordinarily be
1466 specified.
1467 .RS
1468 .IP \fBidle_timeout=\fIseconds\fR
1469 .IQ \fBhard_timeout=\fIseconds\fR
1470 .IQ \fBpriority=\fIvalue\fR
1471 These key-value pairs have the same meaning as in the usual
1472 \fBovs\-ofctl\fR flow syntax.
1473 .
1474 .IP \fBfin_idle_timeout=\fIseconds\fR
1475 .IQ \fBfin_hard_timeout=\fIseconds\fR
1476 Adds a \fBfin_timeout\fR action with the specified arguments to the
1477 new flow.  This feature was added in Open vSwitch 1.5.90.
1478 .
1479 .IP \fBtable=\fInumber\fR
1480 The table in which the new flow should be inserted.  Specify a decimal
1481 number between 0 and 254.  The default, if \fBtable\fR is unspecified,
1482 is table 1.
1483 .
1484 .IP \fIfield\fB=\fIvalue\fR
1485 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]=\fIsrc\fB[\fIstart\fB..\fIend\fB]\fR
1486 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1487 Adds a match criterion to the new flow.
1488 .IP
1489 The first form specifies that \fIfield\fR must match the literal
1490 \fIvalue\fR, e.g. \fBdl_type=0x0800\fR.  All of the fields and values
1491 for \fBovs\-ofctl\fR flow syntax are available with their usual
1492 meanings.
1493 .IP
1494 The second form specifies that \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1495 in the new flow must match \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR taken
1496 from the flow currently being processed.
1497 .IP
1498 The third form is a shorthand for the second form.  It specifies that
1499 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR in the new flow must match
1500 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR taken from the flow currently
1501 being processed.
1502 .
1503 .IP \fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1504 .IQ \fBload:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1505 .
1506 Adds a \fBload\fR action to the new flow.
1507 .IP
1508 The first form loads the literal \fIvalue\fR into bits \fIstart\fR
1509 through \fIend\fR, inclusive, in field \fIdst\fR.  Its syntax is the
1510 same as the \fBload\fR action described earlier in this section.
1511 .IP
1512 The second form loads \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR, a value
1513 from the flow currently being processed, into bits \fIstart\fR
1514 through \fIend\fR, inclusive, in field \fIdst\fR.
1515 .
1516 .IP \fBoutput:\fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1517 Add an \fBoutput\fR action to the new flow's actions, that outputs to
1518 the OpenFlow port taken from \fIfield\fB[\fIstart\fB..\fIend\fB]\fR,
1519 which must be an NXM field as described above.
1520 .RE
1521 .IP
1522 For best performance, segregate learned flows into a table (using
1523 \fBtable=\fInumber\fR) that is not used for any other flows except
1524 possibly for a lowest-priority ``catch-all'' flow, that is, a flow
1525 with no match criteria.  (This is why the default \fBtable\fR is 1, to
1526 keep the learned flows separate from the primary flow table 0.)
1527 .RE
1528 .
1529 .RS
1530 .IP \fBapply_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1531 Applies the specific action(s) immediately. The syntax of actions are same
1532 to \fBactions=\fR field.
1533 .
1534 .IP \fBclear_actions\fR
1535 Clears all the actions in the action set immediately.
1536 .
1537 .IP \fBwrite_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1538 Add the specific actions to the action set.  The syntax of
1539 \fIactions\fR is the same as in the \fBactions=\fR field.  The action
1540 set is carried between flow tables and then executed at the end of the
1541 pipeline.
1542 .
1543 .IP
1544 The actions in the action set are applied in the following order, as
1545 required by the OpenFlow specification, regardless of the order in
1546 which they were added to the action set.  Except as specified
1547 otherwise below, the action set only holds at most a single action of
1548 each type.  When more than one action of a single type is written to
1549 the action set, the one written later replaces the earlier action:
1550 .
1551 .RS
1552 .IP 1.
1553 \fBstrip_vlan\fR
1554 .IQ
1555 \fBpop_mpls\fR
1556 .
1557 .IP 2.
1558 \fBpush_mpls\fR
1559 .
1560 .IP 3.
1561 \fBpush_vlan\fR
1562 .
1563 .IP 4.
1564 \fBdec_ttl\fR
1565 .IQ
1566 \fBdec_mpls_ttl\fR
1567 .
1568 .IP 5.
1569 \fBload\fR
1570 .IQ
1571 \fBmod_dl_dst\fR
1572 .IQ
1573 \fBmod_dl_src\fR
1574 .IQ
1575 \fBmod_nw_dst\fR
1576 .IQ
1577 \fBmod_nw_src\fR
1578 .IQ
1579 \fBmod_nw_tos\fR
1580 .IQ
1581 \fBmod_nw_ecn\fR
1582 .IQ
1583 \fBmod_nw_ttl\fR
1584 .IQ
1585 \fBmod_tp_dst\fR
1586 .IQ
1587 \fBmod_tp_src\fR
1588 .IQ
1589 \fBmod_vlan_pcp\fR
1590 .IQ
1591 \fBmod_vlan_vid\fR
1592 .IQ
1593 \fBset_field\fR
1594 .IQ
1595 \fBset_tunnel\fR
1596 .IQ
1597 \fBset_tunnel64\fR
1598 .IQ
1599 The action set can contain any number of these actions, with
1600 cumulative effect.  That is, when multiple actions modify the same
1601 part of a field, the later modification takes effect, and when they
1602 modify different parts of a field (or different fields), then both
1603 modifications are applied.
1604 .
1605 .IP 6.
1606 \fBset_queue\fR
1607 .
1608 .IP 7.
1609 \fBgroup\fR
1610 .IQ
1611 \fBoutput\fR
1612 .IQ
1613 If both actions are present, then \fBgroup\fR is executed and
1614 \fBoutput\fR is ignored, regardless of the order in which they were
1615 added to the action set.  (If neither action is present, the action
1616 set has no real effect, because the modified packet is not sent
1617 anywhere and thus the modifications are not visible.)
1618 .RE
1619 .IP
1620 Only the actions listed above may be written to the action set.
1621 .
1622 .IP \fBwrite_metadata\fB:\fIvalue\fR[/\fImask\fR]
1623 Updates the metadata field for the flow. If \fImask\fR is omitted, the
1624 metadata field is set exactly to \fIvalue\fR; if \fImask\fR is specified, then
1625 a 1-bit in \fImask\fR indicates that the corresponding bit in the metadata
1626 field will be replaced with the corresponding bit from \fIvalue\fR. Both
1627 \fIvalue\fR and \fImask\fR are 64-bit values that are decimal by default; use
1628 a \fB0x\fR prefix to specify them in hexadecimal.
1629 .
1630 .IP \fBmeter\fR:\fImeter_id\fR
1631 Apply the \fImeter_id\fR before any other actions. If a meter band rate is
1632 exceeded, the packet may be dropped, or modified, depending on the meter
1633 band type. See the description of the \fBMeter Table Commands\fR, above,
1634 for more details.
1635 .
1636 .IP \fBgoto_table\fR:\fItable\fR
1637 Indicates the next table in the process pipeline.
1638 .
1639 .IP "\fBfin_timeout(\fIargument\fR[\fB,\fIargument\fR]\fB)"
1640 This action changes the idle timeout or hard timeout, or both, of this
1641 OpenFlow rule when the rule matches a TCP packet with the FIN or RST
1642 flag.  When such a packet is observed, the action reduces the rule's
1643 timeouts to those specified on the action.  If the rule's existing
1644 timeout is already shorter than the one that the action specifies,
1645 then that timeout is unaffected.
1646 .IP
1647 \fIargument\fR takes the following forms:
1648 .RS
1649 .IP "\fBidle_timeout=\fIseconds\fR"
1650 Causes the flow to expire after the given number of seconds of
1651 inactivity.
1652 .
1653 .IP "\fBhard_timeout=\fIseconds\fR"
1654 Causes the flow to expire after the given number of seconds,
1655 regardless of activity.  (\fIseconds\fR specifies time since the
1656 flow's creation, not since the receipt of the FIN or RST.)
1657 .RE
1658 .IP
1659 This action was added in Open vSwitch 1.5.90.
1660 .
1661 .IP "\fBsample(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1662 Samples packets and sends one sample for every sampled packet.
1663 .IP
1664 \fIargument\fR takes the following forms:
1665 .RS
1666 .IP "\fBprobability=\fIpackets\fR"
1667 The number of sampled packets out of 65535.  Must be greater or equal to 1.
1668 .IP "\fBcollector_set_id=\fIid\fR"
1669 The unsigned 32-bit integer identifier of the set of sample collectors
1670 to send sampled packets to.  Defaults to 0.
1671 .IP "\fBobs_domain_id=\fIid\fR"
1672 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1673 Observation Domain ID sent in every IPFIX flow record.  Defaults to 0.
1674 .IP "\fBobs_point_id=\fIid\fR"
1675 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1676 Observation Point ID sent in every IPFIX flow record.  Defaults to 0.
1677 .RE
1678 .IP
1679 Refer to \fBovs\-vswitchd.conf.db\fR(8) for more details on
1680 configuring sample collector sets.
1681 .IP
1682 This action was added in Open vSwitch 1.10.90.
1683 .
1684 .IP "\fBexit\fR"
1685 This action causes Open vSwitch to immediately halt execution of
1686 further actions.  Those actions which have already been executed are
1687 unaffected.  Any further actions, including those which may be in
1688 other tables, or different levels of the \fBresubmit\fR call stack,
1689 are ignored.  Actions in the action set is still executed (specify
1690 \fBclear_actions\fR before \fBexit\fR to discard them).
1691 .RE
1692 .
1693 .PP
1694 An opaque identifier called a cookie can be used as a handle to identify
1695 a set of flows:
1696 .
1697 .IP \fBcookie=\fIvalue\fR
1698 .
1699 A cookie can be associated with a flow using the \fBadd\-flow\fR,
1700 \fBadd\-flows\fR, and \fBmod\-flows\fR commands.  \fIvalue\fR can be any
1701 64-bit number and need not be unique among flows.  If this field is
1702 omitted, a default cookie value of 0 is used.
1703 .
1704 .IP \fBcookie=\fIvalue\fR\fB/\fImask\fR
1705 .
1706 When using NXM, the cookie can be used as a handle for querying,
1707 modifying, and deleting flows.  \fIvalue\fR and \fImask\fR may be
1708 supplied for the \fBdel\-flows\fR, \fBmod\-flows\fR, \fBdump\-flows\fR, and
1709 \fBdump\-aggregate\fR commands to limit matching cookies.  A 1-bit in
1710 \fImask\fR indicates that the corresponding bit in \fIcookie\fR must
1711 match exactly, and a 0-bit wildcards that bit.  A mask of \-1 may be used
1712 to exactly match a cookie.
1713 .IP
1714 The \fBmod\-flows\fR command can update the cookies of flows that
1715 match a cookie by specifying the \fIcookie\fR field twice (once with a
1716 mask for matching and once without to indicate the new value):
1717 .RS
1718 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1,actions=normal\fR"
1719 Change all flows' cookies to 1 and change their actions to \fBnormal\fR.
1720 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1/\-1,cookie=2,actions=normal\fR"
1721 Update cookies with a value of 1 to 2 and change their actions to
1722 \fBnormal\fR.
1723 .RE
1724 .IP
1725 The ability to match on cookies was added in Open vSwitch 1.5.0.
1726 .
1727 .PP
1728 The following additional field sets the priority for flows added by
1729 the \fBadd\-flow\fR and \fBadd\-flows\fR commands.  For
1730 \fBmod\-flows\fR and \fBdel\-flows\fR when \fB\-\-strict\fR is
1731 specified, priority must match along with the rest of the flow
1732 specification.  For \fBmod-flows\fR without \fB\-\-strict\fR,
1733 priority is only significant if the command creates a new flow, that
1734 is, non-strict \fBmod\-flows\fR does not match on priority and will
1735 not change the priority of existing flows.  Other commands do not
1736 allow priority to be specified.
1737 .
1738 .IP \fBpriority=\fIvalue\fR
1739 The priority at which a wildcarded entry will match in comparison to
1740 others.  \fIvalue\fR is a number between 0 and 65535, inclusive.  A higher 
1741 \fIvalue\fR will match before a lower one.  An exact-match entry will always 
1742 have priority over an entry containing wildcards, so it has an implicit 
1743 priority value of 65535.  When adding a flow, if the field is not specified, 
1744 the flow's priority will default to 32768.
1745 .IP
1746 OpenFlow leaves behavior undefined when two or more flows with the
1747 same priority can match a single packet.  Some users expect
1748 ``sensible'' behavior, such as more specific flows taking precedence
1749 over less specific flows, but OpenFlow does not specify this and Open
1750 vSwitch does not implement it.  Users should therefore take care to
1751 use priorities to ensure the behavior that they expect.
1752 .
1753 .PP
1754 The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1755 support the following additional options.  These options affect only
1756 new flows.  Thus, for \fBadd\-flow\fR and \fBadd\-flows\fR, these
1757 options are always significant, but for \fBmod\-flows\fR they are
1758 significant only if the command creates a new flow, that is, their
1759 values do not update or affect existing flows.
1760 .
1761 .IP "\fBidle_timeout=\fIseconds\fR"
1762 Causes the flow to expire after the given number of seconds of
1763 inactivity.  A value of 0 (the default) prevents a flow from expiring
1764 due to inactivity.
1765 .
1766 .IP \fBhard_timeout=\fIseconds\fR
1767 Causes the flow to expire after the given number of seconds,
1768 regardless of activity.  A value of 0 (the default) gives the flow no
1769 hard expiration deadline.
1770 .
1771 .IP "\fBsend_flow_rem\fR"
1772 Marks the flow with a flag that causes the switch to generate a ``flow
1773 removed'' message and send it to interested controllers when the flow
1774 later expires or is removed.
1775 .
1776 .IP "\fBcheck_overlap\fR"
1777 Forces the switch to check that the flow match does not overlap that
1778 of any different flow with the same priority in the same table.  (This
1779 check is expensive so it is best to avoid it.)
1780 .
1781 .PP
1782 The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR 
1783 and \fBdel\-flows\fR commands support one additional optional field:
1784 .
1785 .TP
1786 \fBout_port=\fIport\fR
1787 If set, a matching flow must include an output action to \fIport\fR,
1788 which must be an OpenFlow port number or name (e.g. \fBlocal\fR).
1789 .
1790 .SS "Table Entry Output"
1791 .
1792 The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information 
1793 about the entries in a datapath's tables.  Each line of output is a 
1794 flow entry as described in \fBFlow Syntax\fR, above, plus some
1795 additional fields:
1796 .
1797 .IP \fBduration=\fIsecs\fR
1798 The time, in seconds, that the entry has been in the table.
1799 \fIsecs\fR includes as much precision as the switch provides, possibly
1800 to nanosecond resolution.
1801 .
1802 .IP \fBn_packets\fR
1803 The number of packets that have matched the entry.
1804 .
1805 .IP \fBn_bytes\fR
1806 The total number of bytes from packets that have matched the entry.
1807 .
1808 .PP
1809 The following additional fields are included only if the switch is
1810 Open vSwitch 1.6 or later and the NXM flow format is used to dump the
1811 flow (see the description of the \fB\-\-flow-format\fR option below).
1812 The values of these additional fields are approximations only and in
1813 particular \fBidle_age\fR will sometimes become nonzero even for busy
1814 flows.
1815 .
1816 .IP \fBhard_age=\fIsecs\fR
1817 The integer number of seconds since the flow was added or modified.
1818 \fBhard_age\fR is displayed only if it differs from the integer part
1819 of \fBduration\fR.  (This is separate from \fBduration\fR because
1820 \fBmod\-flows\fR restarts the \fBhard_timeout\fR timer without zeroing
1821 \fBduration\fR.)
1822 .
1823 .IP \fBidle_age=\fIsecs\fR
1824 The integer number of seconds that have passed without any packets
1825 passing through the flow.
1826 .
1827 .SS "Group Syntax"
1828 .PP
1829 Some \fBovs\-ofctl\fR commands accept an argument that describes a group or
1830 groups.  Such flow descriptions comprise a series
1831 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
1832 space.  (Embedding spaces into a group description normally requires
1833 quoting to prevent the shell from breaking the description into
1834 multiple arguments.). Unless noted otherwise only the last instance
1835 of each field is honoured.
1836 .PP
1837 .IP \fBgroup_id=\fIid\fR
1838 The integer group id of group.
1839 When this field is specified in \fBdel\-groups\fR or \fBdump\-groups\fR,
1840 the keyword "all" may be used to designate all groups.
1841 .
1842 This field is required.
1843
1844
1845 .IP \fBtype=\fItype\fR
1846 The type of the group.  This \fBadd-group\fR, \fBadd-groups\fR and
1847 \fBdel-groups\fR command require this field.  The following keywords
1848 designated the allowed types:
1849 .RS
1850 .IP \fBall\fR
1851 Execute all buckets in the group.
1852 .IP \fBselect\fR
1853 Execute one bucket in the group.
1854 The switch should select the bucket in such a way that should implement
1855 equal load sharing is achieved.  The switch may optionally select the
1856 bucket based on bucket weights.
1857 .IP \fBindirect\fR
1858 Executes the one bucket in the group.
1859 .IP \fBff\fR
1860 .IQ \fBfast_failover\fR
1861 Executes the first live bucket in the group which is associated with
1862 a live port or group.
1863 .RE
1864
1865 .IP \fBbucket\fR=\fIbucket_parameters\fR
1866 The \fBadd-group\fR, \fBadd-groups\fR and \fBmod-group\fR commands
1867 require at least one bucket field. Bucket fields must appear after
1868 all other fields.
1869 .
1870 Multiple bucket fields to specify multiple buckets.
1871 The order in which buckets are specified corresponds to their order in
1872 the group. If the type of the group is "indirect" then only one group may
1873 be specified.
1874 .
1875 \fIbucket_parameters\fR consists of a list of \fIfield\fB=\fIvalue\fR
1876 assignments, separated by commas or white space followed by a
1877 comma-separated list of actions.
1878 The syntax of actions are same
1879 to \fBactions=\fR field described in \fBFlow Syntax\fR above.
1880 The fields for \fIbucket_parameters\fR are:
1881 .
1882 .RS
1883 .IP \fBweight=\fIvalue\fR
1884 The relative weight of the bucket as an integer. This may be used by the switch
1885 during bucket select for groups whose \fBtype\fR is \fBselect\fR.
1886 .IP \fBwatch_port=\fIport\fR
1887 Port used to determine liveness of group.
1888 This or the \fBwatch_group\fR field is required
1889 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1890 .IP \fBwatch_group=\fIgroup_id\fR
1891 Group identifier of group used to determine liveness of group.
1892 This or the \fBwatch_port\fR field is required
1893 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1894 .RE
1895 .
1896 .SS "Meter Syntax"
1897 .PP
1898 The meter table commands accept an argument that describes a meter.
1899 Such meter descriptions comprise a series \fIfield\fB=\fIvalue\fR
1900 assignments, separated by commas or white space.
1901 (Embedding spaces into a group description normally requires
1902 quoting to prevent the shell from breaking the description into
1903 multiple arguments.). Unless noted otherwise only the last instance
1904 of each field is honoured.
1905 .PP
1906 .IP \fBmeter=\fIid\fR
1907 The integer meter id of the meter.
1908 When this field is specified in \fBdel-meter\fR, \fBdump-meter\fR, or
1909 \fBmeter-stats\fR, the keyword "all" may be used to designate all meters.
1910 .
1911 This field is required, exept for \fBmeter-stats\fR, which dumps all stats
1912 when this field is not specified.
1913
1914 .IP \fBkbps\fR
1915 .IQ \fBpktps\fR
1916 The unit for the meter band rate parameters, either kilobits per second, or
1917 packets per second, respectively.  One of these must be specified.  The burst
1918 size unit corresponds to the rate unit by dropping the "per second", i.e.,
1919 burst is in units of kilobits or packets, respectively.
1920
1921 .IP \fBburst\fR
1922 Specify burst size for all bands, or none of them, if this flag is not given.
1923
1924 .IP \fBstats\fR
1925 Collect meter and band statistics.
1926
1927 .IP \fBbands\fR=\fIband_parameters\fR
1928 The \fBadd-meter\fR and \fBmod-meter\fR commands require at least one
1929 band specification. Bands must appear after all other fields.
1930 .RS
1931 .IP \fBtype=\fItype\fR
1932 The type of the meter band.  This keyword starts a new band specification.
1933 Each band specifies a rate above which the band is to take some action. The
1934 action depends on the band type.  If multiple bands' rate is exceeded, then
1935 the band with the highest rate among the exceeded bands is selected.
1936 The following keywords designate the allowed
1937 meter band types:
1938 .RS
1939 .IP \fBdrop\fR
1940 Drop packets exceeding the band's rate limit.
1941 .RE
1942 .
1943 .IP "The other \fIband_parameters\fR are:"
1944 .IP \fBrate=\fIvalue\fR
1945 The relative rate limit for this band, in kilobits per second or packets per
1946 second, depending on the meter flags defined above.
1947 .IP \fBburst_size=\fIport\fR
1948 The maximum burst allowed for the band.  If unspecified, the switch is free to
1949 select some reasonable value depending on it's configuration.
1950 .RE
1951 .
1952 .SH OPTIONS
1953 .TP
1954 \fB\-\-strict\fR
1955 Uses strict matching when running flow modification commands.
1956 .
1957 .so lib/ofp-version.man
1958 .
1959 .IP "\fB\-F \fIformat\fR[\fB,\fIformat\fR...]"
1960 .IQ "\fB\-\-flow\-format=\fIformat\fR[\fB,\fIformat\fR...]"
1961 \fBovs\-ofctl\fR supports the following individual flow formats, any
1962 number of which may be listed as \fIformat\fR:
1963 .RS
1964 .IP "\fBOpenFlow10\-table_id\fR"
1965 This is the standard OpenFlow 1.0 flow format.  All OpenFlow switches
1966 and all versions of Open vSwitch support this flow format.
1967 .
1968 .IP "\fBOpenFlow10+table_id\fR"
1969 This is the standard OpenFlow 1.0 flow format plus a Nicira extension
1970 that allows \fBovs\-ofctl\fR to specify the flow table in which a
1971 particular flow should be placed.  Open vSwitch 1.2 and later supports
1972 this flow format.
1973 .
1974 .IP "\fBNXM\-table_id\fR (Nicira Extended Match)"
1975 This Nicira extension to OpenFlow is flexible and extensible.  It
1976 supports all of the Nicira flow extensions, such as \fBtun_id\fR and
1977 registers.  Open vSwitch 1.1 and later supports this flow format.
1978 .
1979 .IP "\fBNXM+table_id\fR (Nicira Extended Match)"
1980 This combines Nicira Extended match with the ability to place a flow
1981 in a specific table.  Open vSwitch 1.2 and later supports this flow
1982 format.
1983 .
1984 .IP "\fBOXM-OpenFlow12\fR"
1985 .IQ "\fBOXM-OpenFlow13\fR"
1986 .IQ "\fBOXM-OpenFlow14\fR"
1987 These are the standard OXM (OpenFlow Extensible Match) flow format in
1988 OpenFlow 1.2, 1.3, and 1.4, respectively.
1989 .RE
1990 .
1991 .IP
1992 \fBovs\-ofctl\fR also supports the following abbreviations for
1993 collections of flow formats:
1994 .RS
1995 .IP "\fBany\fR"
1996 Any supported flow format.
1997 .IP "\fBOpenFlow10\fR"
1998 \fBOpenFlow10\-table_id\fR or \fBOpenFlow10+table_id\fR.
1999 .IP "\fBNXM\fR"
2000 \fBNXM\-table_id\fR or \fBNXM+table_id\fR.
2001 .IP "\fBOXM\fR"
2002 \fBOXM-OpenFlow12\fR, \fBOXM-OpenFlow13\fR, or \fBOXM-OpenFlow14\fR.
2003 .RE
2004 .
2005 .IP
2006 For commands that modify the flow table, \fBovs\-ofctl\fR by default
2007 negotiates the most widely supported flow format that supports the
2008 flows being added.  For commands that query the flow table,
2009 \fBovs\-ofctl\fR by default uses the most advanced format supported by
2010 the switch.
2011 .IP
2012 This option, where \fIformat\fR is a comma-separated list of one or
2013 more of the formats listed above, limits \fBovs\-ofctl\fR's choice of
2014 flow format.  If a command cannot work as requested using one of the
2015 specified flow formats, \fBovs\-ofctl\fR will report a fatal error.
2016 .
2017 .IP "\fB\-P \fIformat\fR"
2018 .IQ "\fB\-\-packet\-in\-format=\fIformat\fR"
2019 \fBovs\-ofctl\fR supports the following packet_in formats, in order of
2020 increasing capability:
2021 .RS
2022 .IP "\fBopenflow10\fR"
2023 This is the standard OpenFlow 1.0 packet in format. It should be supported by
2024 all OpenFlow switches.
2025 .
2026 .IP "\fBnxm\fR (Nicira Extended Match)"
2027 This packet_in format includes flow metadata encoded using the NXM format.
2028 .
2029 .RE
2030 .IP
2031 Usually, \fBovs\-ofctl\fR prefers the \fBnxm\fR packet_in format, but will
2032 allow the switch to choose its default if \fBnxm\fR is unsupported.  When
2033 \fIformat\fR is one of the formats listed in the above table, \fBovs\-ofctl\fR
2034 will insist on the selected format.  If the switch does not support the
2035 requested format, \fBovs\-ofctl\fR will report a fatal error.  This option only
2036 affects the \fBmonitor\fR command.
2037 .
2038 .IP "\fB\-\-timestamp\fR"
2039 Print a timestamp before each received packet.  This option only
2040 affects the \fBmonitor\fR, \fBsnoop\fR, and \fBofp\-parse\-pcap\fR
2041 commands.
2042 .
2043 .IP "\fB\-m\fR"
2044 .IQ "\fB\-\-more\fR"
2045 Increases the verbosity of OpenFlow messages printed and logged by
2046 \fBovs\-ofctl\fR commands.  Specify this option more than once to
2047 increase verbosity further.
2048 .
2049 .IP \fB\-\-sort\fR[\fB=\fIfield\fR]
2050 .IQ \fB\-\-rsort\fR[\fB=\fIfield\fR]
2051 Display output sorted by flow \fIfield\fR in ascending
2052 (\fB\-\-sort\fR) or descending (\fB\-\-rsort\fR) order, where
2053 \fIfield\fR is any of the fields that are allowed for matching or
2054 \fBpriority\fR to sort by priority.  When \fIfield\fR is omitted, the
2055 output is sorted by priority.  Specify these options multiple times to
2056 sort by multiple fields.
2057 .IP
2058 Any given flow will not necessarily specify a value for a given
2059 field.  This requires special treatement:
2060 .RS
2061 .IP \(bu
2062 A flow that does not specify any part of a field that is used for sorting is
2063 sorted after all the flows that do specify the field.  For example,
2064 \fB\-\-sort=tcp_src\fR will sort all the flows that specify a TCP
2065 source port in ascending order, followed by the flows that do not
2066 specify a TCP source port at all.
2067 .IP \(bu
2068 A flow that only specifies some bits in a field is sorted as if the
2069 wildcarded bits were zero.  For example, \fB\-\-sort=nw_src\fR would
2070 sort a flow that specifies \fBnw_src=192.168.0.0/24\fR the same as
2071 \fBnw_src=192.168.0.0\fR.
2072 .RE
2073 .IP
2074 These options currently affect only \fBdump\-flows\fR output.
2075 .
2076 .ds DD \
2077 \fBovs\-ofctl\fR detaches only when executing the \fBmonitor\fR or \
2078 \fBsnoop\fR commands.
2079 .so lib/daemon.man
2080 .SS "Public Key Infrastructure Options"
2081 .so lib/ssl.man
2082 .so lib/vlog.man
2083 .so lib/common.man
2084 .
2085 .SH "RUNTIME MANAGEMENT COMMANDS"
2086 \fBovs\-appctl\fR(8) can send commands to a running \fBovs\-ofctl\fR
2087 process.  The supported commands are listed below.
2088 .
2089 .IP "\fBexit\fR"
2090 Causes \fBovs\-ofctl\fR to gracefully terminate.  This command applies
2091 only when executing the \fBmonitor\fR or \fBsnoop\fR commands.
2092 .
2093 .IP "\fBofctl/set\-output\-file \fIfile\fR"
2094 Causes all subsequent output to go to \fIfile\fR instead of stderr.
2095 This command applies only when executing the \fBmonitor\fR or
2096 \fBsnoop\fR commands.
2097 .
2098 .IP "\fBofctl/send \fIofmsg\fR..."
2099 Sends each \fIofmsg\fR, specified as a sequence of hex digits that
2100 express an OpenFlow message, on the OpenFlow connection.  This command
2101 is useful only when executing the \fBmonitor\fR command.
2102 .
2103 .IP "\fBofctl/barrier\fR"
2104 Sends an OpenFlow barrier request on the OpenFlow connection and waits
2105 for a reply.  This command is useful only for the \fBmonitor\fR
2106 command.
2107 .
2108 .SH EXAMPLES
2109 .
2110 The following examples assume that \fBovs\-vswitchd\fR has a bridge
2111 named \fBbr0\fR configured.
2112 .
2113 .TP
2114 \fBovs\-ofctl dump\-tables br0\fR
2115 Prints out the switch's table stats.  (This is more interesting after
2116 some traffic has passed through.)
2117 .
2118 .TP
2119 \fBovs\-ofctl dump\-flows br0\fR
2120 Prints the flow entries in the switch.
2121 .
2122 .SH "SEE ALSO"
2123 .
2124 .BR ovs\-appctl (8),
2125 .BR ovs\-vswitchd (8)
2126 .BR ovs\-vswitchd.conf.db (8)