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