ovs-ofctl.8: Move mod-table out of group tables section
[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 .IP "\fBmod\-table \fIswitch\fR \fItable_id\fR  \fIflow_miss_handling\fR"
67 An OpenFlow 1.0 switch looks up each packet that arrives at the switch
68 in table 0, then in table 1 if there is no match in table 0, then in
69 table 2, and so on until the packet finds a match in some table.
70 Finally, if no match was found, the switch sends the packet to the
71 controller
72 .IP
73 OpenFlow 1.1 and later offer more flexibility.  This command
74 configures the flow table miss handling configuration for table
75 \fItable_id\fR in \fIswitch\fR.  \fItable_id\fR may be an OpenFlow
76 table number between 0 and 254, inclusive, or the keyword \fBALL\fR to
77 modify all tables.  \fIflow_miss_handling\fR may be any one of the
78 following:
79 .RS
80 .IP \fBdrop\fR
81 Drop the packet.
82 .IP \fBcontinue\fR
83 Continue to the next table in the pipeline.  (This is how an OpenFlow
84 1.0 switch always handles packets that do not match any flow, in
85 tables other than the last one.)
86 .IP \fBcontroller\fR
87 Send to controller.  (This is how an OpenFlow 1.0 switch always
88 handles packets that do not match any flow in the last table.)
89 .RE
90 .
91 .TP
92 \fBdump\-ports \fIswitch\fR [\fInetdev\fR]
93 Prints to the console statistics for network devices associated with 
94 \fIswitch\fR.  If \fInetdev\fR is specified, only the statistics
95 associated with that device will be printed.  \fInetdev\fR can be an
96 OpenFlow assigned port number or device name, e.g. \fBeth0\fR.
97 .
98 .IP "\fBdump\-ports\-desc \fIswitch\fR [\fIport\fR]"
99 Prints to the console detailed information about network devices
100 associated with \fIswitch\fR.  To dump only a specific port, specify
101 its number as \fIport\fR.  Otherwise, if \fIport\fR is omitted, or if
102 it is specified as \fBANY\fR, then all ports are printed.  This is a
103 subset of the information provided by the \fBshow\fR command.
104 .IP
105 If the connection to \fIswitch\fR negotiates OpenFlow 1.0, 1.2, or
106 1.2, this command uses an OpenFlow extension only implemented in Open
107 vSwitch (version 1.7 and later).
108 .IP
109 Only OpenFlow 1.5 and later support dumping a specific port.  Earlier
110 versions of OpenFlow always dump all ports.
111 .
112 .IP "\fBmod\-port \fIswitch\fR \fIport\fR \fIaction\fR"
113 Modify characteristics of port \fBport\fR in \fIswitch\fR.  \fIport\fR
114 may be an OpenFlow port number or name or the keyword \fBLOCAL\fR (the
115 preferred way to refer to the OpenFlow local port).  The \fIaction\fR
116 may be any one of the following:
117 .
118 .RS
119 .IQ \fBup\fR
120 .IQ \fBdown\fR
121 Enable or disable the interface.  This is equivalent to \fBifconfig
122 up\fR or \fBifconfig down\fR on a Unix system.
123 .
124 .IP \fBstp\fR
125 .IQ \fBno\-stp\fR
126 Enable or disable 802.1D spanning tree protocol (STP) on the
127 interface.  OpenFlow implementations that don't support STP will
128 refuse to enable it.
129 .
130 .IP \fBreceive\fR
131 .IQ \fBno\-receive\fR
132 .IQ \fBreceive\-stp\fR
133 .IQ \fBno\-receive\-stp\fR
134 Enable or disable OpenFlow processing of packets received on this
135 interface.  When packet processing is disabled, packets will be
136 dropped instead of being processed through the OpenFlow table.  The
137 \fBreceive\fR or \fBno\-receive\fR setting applies to all packets
138 except 802.1D spanning tree packets, which are separately controlled
139 by \fBreceive\-stp\fR or \fBno\-receive\-stp\fR.
140 .
141 .IP \fBforward\fR
142 .IQ \fBno\-forward\fR
143 Allow or disallow forwarding of traffic to this interface.  By
144 default, forwarding is enabled.
145 .
146 .IP \fBflood\fR
147 .IQ \fBno\-flood\fR
148 Controls whether an OpenFlow \fBflood\fR action will send traffic out
149 this interface.  By default, flooding is enabled.  Disabling flooding
150 is primarily useful to prevent loops when a spanning tree protocol is
151 not in use.
152 .
153 .IP \fBpacket\-in\fR
154 .IQ \fBno\-packet\-in\fR
155 Controls whether packets received on this interface that do not match
156 a flow table entry generate a ``packet in'' message to the OpenFlow
157 controller.  By default, ``packet in'' messages are enabled.
158 .RE
159 .IP
160 The \fBshow\fR command displays (among other information) the
161 configuration that \fBmod\-port\fR changes.
162 .
163 .IP "\fBget\-frags \fIswitch\fR"
164 Prints \fIswitch\fR's fragment handling mode.  See \fBset\-frags\fR,
165 below, for a description of each fragment handling mode.
166 .IP
167 The \fBshow\fR command also prints the fragment handling mode among
168 its other output.
169 .
170 .IP "\fBset\-frags \fIswitch frag_mode\fR"
171 Configures \fIswitch\fR's treatment of IPv4 and IPv6 fragments.  The
172 choices for \fIfrag_mode\fR are:
173 .RS
174 .IP "\fBnormal\fR"
175 Fragments pass through the flow table like non-fragmented packets.
176 The TCP ports, UDP ports, and ICMP type and code fields are always set
177 to 0, even for fragments where that information would otherwise be
178 available (fragments with offset 0).  This is the default fragment
179 handling mode for an OpenFlow switch.
180 .IP "\fBdrop\fR"
181 Fragments are dropped without passing through the flow table.
182 .IP "\fBreassemble\fR"
183 The switch reassembles fragments into full IP packets before passing
184 them through the flow table.  Open vSwitch does not implement this
185 fragment handling mode.
186 .IP "\fBnx\-match\fR"
187 Fragments pass through the flow table like non-fragmented packets.
188 The TCP ports, UDP ports, and ICMP type and code fields are available
189 for matching for fragments with offset 0, and set to 0 in fragments
190 with nonzero offset.  This mode is a Nicira extension.
191 .RE
192 .IP
193 See the description of \fBip_frag\fR, below, for a way to match on
194 whether a packet is a fragment and on its fragment offset.
195 .
196 .TP
197 \fBdump\-flows \fIswitch \fR[\fIflows\fR]
198 Prints to the console all flow entries in \fIswitch\fR's
199 tables that match \fIflows\fR.  If \fIflows\fR is omitted, all flows
200 in the switch are retrieved.  See \fBFlow Syntax\fR, below, for the
201 syntax of \fIflows\fR.  The output format is described in
202 \fBTable Entry Output\fR.
203 .
204 .IP
205 By default, \fBovs\-ofctl\fR prints flow entries in the same order
206 that the switch sends them, which is unlikely to be intuitive or
207 consistent.  See the description of \fB\-\-sort\fR and \fB\-\-rsort\fR,
208 under \fBOPTIONS\fR below, to influence the display order.
209 .
210 .TP
211 \fBdump\-aggregate \fIswitch \fR[\fIflows\fR]
212 Prints to the console aggregate statistics for flows in
213 \fIswitch\fR's tables that match \fIflows\fR.  If \fIflows\fR is omitted, 
214 the statistics are aggregated across all flows in the switch's flow
215 tables.  See \fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
216 The output format is described in \fBTable Entry Output\fR.
217 .
218 .IP "\fBqueue\-stats \fIswitch \fR[\fIport \fR[\fIqueue\fR]]"
219 Prints to the console statistics for the specified \fIqueue\fR on
220 \fIport\fR within \fIswitch\fR.  \fIport\fR can be an OpenFlow port
221 number or name, the keyword \fBLOCAL\fR (the preferred way to refer to
222 the OpenFlow local port), or the keyword \fBALL\fR.  Either of
223 \fIport\fR or \fIqueue\fR or both may be omitted (or equivalently the
224 keyword \fBALL\fR).  If both are omitted, statistics are printed for
225 all queues on all ports.  If only \fIqueue\fR is omitted, then
226 statistics are printed for all queues on \fIport\fR; if only
227 \fIport\fR is omitted, then statistics are printed for \fIqueue\fR on
228 every port where it exists.
229 .
230 .SS "OpenFlow 1.1+ Group Table Commands"
231 .
232 The following commands work only with switches that support OpenFlow
233 1.1 or later.  Because support for OpenFlow 1.1 and later is still
234 experimental in Open vSwitch, it is necessary to explicitly enable
235 these protocol versions in \fBovs\-ofctl\fR (using \fB\-O\fR) and in
236 the switch itself (with the \fBprotocols\fR column in the \fBBridge\fR
237 table).  For more information, see ``Q: What versions of OpenFlow does
238 Open vSwitch support?'' in the Open vSwitch FAQ.
239 .
240 .IP "\fBdump\-groups \fIswitch\fR [\fIgroup\fR]"
241 Prints group entries in \fIswitch\fR's tables to console.  To dump
242 only a specific group, specify its number as \fIgroup\fR.  Otherwise,
243 if \fIgroup\fR is omitted, or if it is specified as \fBALL\fR, then
244 all groups are printed.  Each line of output is a group entry as
245 described in \fBGroup Syntax\fR below.
246 .IP
247 Only OpenFlow 1.5 and later support dumping a specific group.  Earlier
248 versions of OpenFlow always dump all groups.
249 .
250 .IP "\fBdump\-group\-features \fIswitch"
251 Prints to the console the group features of the \fIswitch\fR.
252 .
253 .IP "\fBdump\-group-stats \fIswitch \fR[\fIgroups\fR]"
254 Prints to the console statistics for the specified \fIgroups in the
255 \fIswitch\fR's tables.  If \fIgroups\fR is omitted then statistics for all
256 groups are printed.  See \fBGroup Syntax\fR, below, for the syntax of
257 \fIgroups\fR.
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 \fBgroup:\fIgroup_id\fR
1148 Outputs the packet to the OpenFlow group \fIgroup_id\fR. Group tables
1149 are only supported in OpenFlow 1.1+. See Group Syntax for more details.
1150 .
1151 .IP \fBnormal\fR
1152 Subjects the packet to the device's normal L2/L3 processing.  (This
1153 action is not implemented by all OpenFlow switches.)
1154 .
1155 .IP \fBflood\fR
1156 Outputs the packet on all switch physical ports other than the port on
1157 which it was received and any ports on which flooding is disabled
1158 (typically, these would be ports disabled by the IEEE 802.1D spanning
1159 tree protocol).
1160 .
1161 .IP \fBall\fR
1162 Outputs the packet on all switch physical ports other than the port on
1163 which it was received.
1164 .
1165 .IP \fBlocal\fR
1166 Outputs the packet on the ``local port,'' which corresponds to the
1167 network device that has the same name as the bridge.
1168 .
1169 .IP \fBin_port\fR
1170 Outputs the packet on the port from which it was received.
1171 .
1172 .IP \fBcontroller(\fIkey\fB=\fIvalue\fR...\fB)
1173 Sends the packet to the OpenFlow controller as a ``packet in''
1174 message.  The supported key-value pairs are:
1175 .RS
1176 .IP "\fBmax_len=\fInbytes\fR"
1177 Limit to \fInbytes\fR the number of bytes of the packet to send to
1178 the controller.  By default the entire packet is sent.
1179 .IP "\fBreason=\fIreason\fR"
1180 Specify \fIreason\fR as the reason for sending the message in the
1181 ``packet in'' message.  The supported reasons are \fBaction\fR (the
1182 default), \fBno_match\fR, and \fBinvalid_ttl\fR.
1183 .IP "\fBid=\fIcontroller-id\fR"
1184 Specify \fIcontroller-id\fR, a 16-bit integer, as the connection ID of
1185 the OpenFlow controller or controllers to which the ``packet in''
1186 message should be sent.  The default is zero.  Zero is also the
1187 default connection ID for each controller connection, and a given
1188 controller connection will only have a nonzero connection ID if its
1189 controller uses the \fBNXT_SET_CONTROLLER_ID\fR Nicira extension to
1190 OpenFlow.
1191 .RE
1192 .IP
1193 Any \fIreason\fR other than \fBaction\fR and any nonzero
1194 \fIcontroller-id\fR uses a Nicira vendor extension that, as of this
1195 writing, is only known to be implemented by Open vSwitch (version 1.6
1196 or later).
1197 .
1198 .IP \fBcontroller\fR
1199 .IQ \fBcontroller\fR[\fB:\fInbytes\fR]
1200 Shorthand for \fBcontroller()\fR or
1201 \fBcontroller(max_len=\fInbytes\fB)\fR, respectively.
1202 .
1203 .IP \fBenqueue(\fIport\fB,\fIqueue\fB)\fR
1204 Enqueues the packet on the specified \fIqueue\fR within port
1205 \fIport\fR, which must be an OpenFlow port number or keyword
1206 (e.g. \fBLOCAL\fR).  The number of supported queues depends on the
1207 switch; some OpenFlow implementations do not support queuing at all.
1208 .
1209 .IP \fBdrop\fR
1210 Discards the packet, so no further processing or forwarding takes place.
1211 If a drop action is used, no other actions may be specified.
1212 .
1213 .IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
1214 Modifies the VLAN id on a packet.  The VLAN tag is added or modified 
1215 as necessary to match the value specified.  If the VLAN tag is added,
1216 a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
1217 this).
1218 .
1219 .IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
1220 Modifies the VLAN priority on a packet.  The VLAN tag is added or modified 
1221 as necessary to match the value specified.  Valid values are between 0
1222 (lowest) and 7 (highest).  If the VLAN tag is added, a vid of zero is used 
1223 (see the \fBmod_vlan_vid\fR action to set this).
1224 .
1225 .IP \fBstrip_vlan\fR
1226 Strips the VLAN tag from a packet if it is present.
1227 .
1228 .IP \fBpush_vlan\fR:\fIethertype\fR
1229 Push a new VLAN tag onto the packet.  Ethertype is used as the the Ethertype
1230 for the tag. Only ethertype 0x8100 should be used. (0x88a8 which the spec
1231 allows isn't supported at the moment.)
1232 A priority of zero and the tag of zero are used for the new tag.
1233 .
1234 .IP \fBpush_mpls\fR:\fIethertype\fR
1235 Changes the packet's Ethertype to \fIethertype\fR, which must be either
1236 \fB0x8847\fR or \fB0x8848\fR, and pushes an MPLS LSE.
1237 .IP
1238 If the packet does not already contain any MPLS labels then an initial
1239 label stack entry is pushed.  The label stack entry's label is 2 if the
1240 packet contains IPv6 and 0 otherwise, its default traffic control value is
1241 the low 3 bits of the packet's DSCP value (0 if the packet is not IP), and
1242 its TTL is copied from the IP TTL (64 if the packet is not IP).
1243 .IP
1244 If the packet does already contain an MPLS label, pushes a new
1245 outermost label as a copy of the existing outermost label.
1246 .IP
1247 A limitation of the implementation is that processing of actions will stop
1248 if \fBpush_mpls\fR follows another \fBpush_mpls\fR unless there is a
1249 \fBpop_mpls\fR in between.
1250 .
1251 .IP \fBpop_mpls\fR:\fIethertype\fR
1252 Strips the outermost MPLS label stack entry.
1253 Currently the implementation restricts \fIethertype\fR to a non-MPLS Ethertype
1254 and thus \fBpop_mpls\fR should only be applied to packets with
1255 an MPLS label stack depth of one. A further limitation is that processing of
1256 actions will stop if \fBpop_mpls\fR follows another \fBpop_mpls\fR unless
1257 there is a \fBpush_mpls\fR in between.
1258 .
1259 .IP \fBmod_dl_src\fB:\fImac\fR
1260 Sets the source Ethernet address to \fImac\fR.
1261 .
1262 .IP \fBmod_dl_dst\fB:\fImac\fR
1263 Sets the destination Ethernet address to \fImac\fR.
1264 .
1265 .IP \fBmod_nw_src\fB:\fIip\fR
1266 Sets the IPv4 source address to \fIip\fR.
1267 .
1268 .IP \fBmod_nw_dst\fB:\fIip\fR
1269 Sets the IPv4 destination address to \fIip\fR.
1270 .
1271 .IP \fBmod_tp_src\fB:\fIport\fR
1272 Sets the TCP or UDP or SCTP source port to \fIport\fR.
1273 .
1274 .IP \fBmod_tp_dst\fB:\fIport\fR
1275 Sets the TCP or UDP or SCTP destination port to \fIport\fR.
1276 .
1277 .IP \fBmod_nw_tos\fB:\fItos\fR
1278 Sets the DSCP bits in the IPv4 ToS/DSCP or IPv6 traffic class field to
1279 \fItos\fR, which must be a multiple of 4 between 0 and 255.  This action
1280 does not modify the two least significant bits of the ToS field (the ECN bits).
1281 .
1282 .IP \fBmod_nw_ecn\fB:\fIecn\fR
1283 Sets the ECN bits in the IPv4 ToS or IPv6 traffic class field to \fIecn\fR,
1284 which must be a value between 0 and 3, inclusive.  This action does not modify
1285 the six most significant bits of the field (the DSCP bits).
1286 .IP
1287 Requires OpenFlow 1.1 or later.
1288 .
1289 .IP \fBmod_nw_ttl\fB:\fIttl\fR
1290 Sets the IPv4 TTL or IPv6 hop limit field to \fIttl\fR, which is specified as
1291 a decimal number between 0 and 255, inclusive.  Switch behavior when setting
1292 \fIttl\fR to zero is not well specified, though.
1293 .IP
1294 Requires OpenFlow 1.1 or later.
1295 .RE
1296 .IP
1297 The following actions are Nicira vendor extensions that, as of this writing, are
1298 only known to be implemented by Open vSwitch:
1299 .
1300 .RS
1301 .
1302 .IP \fBresubmit\fB:\fIport\fR
1303 .IQ \fBresubmit\fB(\fR[\fIport\fR]\fB,\fR[\fItable\fR]\fB)
1304 Re-searches this OpenFlow flow table (or the table whose number is
1305 specified by \fItable\fR) with the \fBin_port\fR field replaced by
1306 \fIport\fR (if \fIport\fR is specified) and executes the actions
1307 found, if any, in addition to any other actions in this flow entry.
1308 .IP
1309 Recursive \fBresubmit\fR actions are obeyed up to an
1310 implementation-defined maximum depth.  Open vSwitch 1.0.1 and earlier
1311 did not support recursion; Open vSwitch before 1.2.90 did not support
1312 \fItable\fR.
1313 .
1314 .IP \fBset_tunnel\fB:\fIid\fR
1315 .IQ \fBset_tunnel64\fB:\fIid\fR
1316 If outputting to a port that encapsulates the packet in a tunnel and
1317 supports an identifier (such as GRE), sets the identifier to \fIid\fR.
1318 If the \fBset_tunnel\fR form is used and \fIid\fR fits in 32 bits,
1319 then this uses an action extension that is supported by Open vSwitch
1320 1.0 and later.  Otherwise, if \fIid\fR is a 64-bit value, it requires
1321 Open vSwitch 1.1 or later.
1322 .
1323 .IP \fBset_queue\fB:\fIqueue\fR
1324 Sets the queue that should be used to \fIqueue\fR when packets are
1325 output.  The number of supported queues depends on the switch; some
1326 OpenFlow implementations do not support queuing at all.
1327 .
1328 .IP \fBpop_queue\fR
1329 Restores the queue to the value it was before any \fBset_queue\fR
1330 actions were applied.
1331 .
1332 .IP \fBdec_ttl\fR
1333 .IQ \fBdec_ttl\fB[\fR(\fIid1,id2\fI)\fR]\fR
1334 Decrement TTL of IPv4 packet or hop limit of IPv6 packet.  If the
1335 TTL or hop limit is initially zero or decrementing would make it so, no
1336 decrement occurs, as packets reaching TTL zero must be rejected.  Instead,
1337 a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR is
1338 sent to each connected controller that has enabled receiving them,
1339 if any.  Processing the current set of actions then stops.  However,
1340 if the current set of actions was reached through ``resubmit'' then
1341 remaining actions in outer levels resume processing.  This action
1342 also optionally supports the ability to specify a list of valid
1343 controller ids.  Each of controllers in the list will receive the
1344 ``packet_in'' message only if they have registered to receive the
1345 invalid ttl packets.  If controller ids are not specified, the
1346 ``packet_in'' message will be sent only to the controllers having
1347 controller id zero which have registered for the invalid ttl packets.
1348 .
1349 .IP \fBset_mpls_label\fR:\fIlabel\fR
1350 Set the label of the outer MPLS label stack entry of a packet.
1351 \fIlabel\fR should be a 20-bit value that is decimal by default;
1352 use a \fB0x\fR prefix to specify them in hexadecimal.
1353 .
1354 .IP \fBset_mpls_tc\fR:\fItc\fR
1355 Set the traffic-class of the outer MPLS label stack entry of a packet.
1356 \fItc\fR should be a in the range 0 to 7 inclusive.
1357 .
1358 .IP \fBset_mpls_ttl\fR:\fIttl\fR
1359 Set the TTL of the outer MPLS label stack entry of a packet.
1360 \fIttl\fR should be in the range 0 to 255 inclusive.
1361 .
1362 .IP \fBdec_mpls_ttl\fR
1363 Decrement TTL of the outer MPLS label stack entry of a packet.  If the TTL
1364 is initially zero or decrementing would make it so, no decrement occurs.
1365 Instead, a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR
1366 is sent to the main controller (id zero), if it has enabled receiving them.
1367 Processing the current set of actions then stops.  However, if the current
1368 set of actions was reached through ``resubmit'' then remaining actions in
1369 outer levels resume processing.
1370 .
1371 .IP \fBnote:\fR[\fIhh\fR]...
1372 Does nothing at all.  Any number of bytes represented as hex digits
1373 \fIhh\fR may be included.  Pairs of hex digits may be separated by
1374 periods for readability.
1375 The \fBnote\fR action's format doesn't include an exact length for its
1376 payload, so the provided bytes will be padded on the right by enough
1377 bytes with value 0 to make the total number 6 more than a multiple of
1378 8.
1379 .
1380 .IP "\fBmove:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]\fR"
1381 Copies the named bits from field \fIsrc\fR to field \fIdst\fR.
1382 \fIsrc\fR and \fIdst\fR must be NXM field names as defined in
1383 \fBnicira\-ext.h\fR, e.g. \fBNXM_OF_UDP_SRC\fR or \fBNXM_NX_REG0\fR.
1384 Each \fIstart\fR and \fIend\fR pair, which are inclusive, must specify
1385 the same number of bits and must fit within its respective field.
1386 Shorthands for \fB[\fIstart\fB..\fIend\fB]\fR exist: use
1387 \fB[\fIbit\fB]\fR to specify a single bit or \fB[]\fR to specify an
1388 entire field.
1389 .IP
1390 Examples: \fBmove:NXM_NX_REG0[0..5]\->NXM_NX_REG1[26..31]\fR copies the
1391 six bits numbered 0 through 5, inclusive, in register 0 into bits 26
1392 through 31, inclusive;
1393 \fBmove:NXM_NX_REG0[0..15]\->NXM_OF_VLAN_TCI[]\fR copies the least
1394 significant 16 bits of register 0 into the VLAN TCI field.
1395 .
1396 .IP "\fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]"
1397 Writes \fIvalue\fR to bits \fIstart\fR through \fIend\fR, inclusive,
1398 in field \fIdst\fR.
1399 .IP
1400 Example: \fBload:55\->NXM_NX_REG2[0..5]\fR loads value 55 (bit pattern
1401 \fB110111\fR) into bits 0 through 5, inclusive, in register 2.
1402 .
1403 .IP "\fBpush:\fIsrc\fB[\fIstart\fB..\fIend\fB]"
1404 Pushes \fIstart\fR to \fIend\fR bits inclusive, in fields
1405 on top of the stack.
1406 .IP
1407 Example: \fBpush:NXM_NX_REG2[0..5]\fR push the value stored in register
1408 2 bits 0 through 5, inclusive, on to the internal stack.
1409 .
1410 .IP "\fBpop:\fIdst\fB[\fIstart\fB..\fIend\fB]"
1411 Pops from the top of the stack, retrieves the \fIstart\fR to \fIend\fR bits
1412 inclusive, from the value popped and store them into the corresponding
1413 bits in \fIdst\fR.
1414 .
1415 .IP
1416 Example: \fBpop:NXM_NX_REG2[0..5]\fR pops the value from top of the stack.
1417 Set register 2 bits 0 through 5, inclusive, based on bits 0 through 5 from the
1418 value just popped.
1419 .
1420 .IP "\fBset_field:\fIvalue\fB\->\fIdst"
1421 Writes the literal \fIvalue\fR into the field \fIdst\fR, which should
1422 be specified as a name used for matching.  (This is similar to
1423 \fBload\fR but more closely matches the set-field action defined in
1424 OpenFlow 1.2 and above.)
1425 .
1426 .IP
1427 Example: \fBset_field:00:11:22:33:44:55->eth_src\fR.
1428 .
1429 .IP "\fBmultipath(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIn_links\fB, \fIarg\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
1430 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter,
1431 then the applies multipath link selection \fIalgorithm\fR (with
1432 parameter \fIarg\fR) to choose one of \fIn_links\fR output links
1433 numbered 0 through \fIn_links\fR minus 1, and stores the link into
1434 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as
1435 described above.
1436 .IP
1437 Currently, \fIfields\fR must be either \fBeth_src\fR or
1438 \fBsymmetric_l4\fR and \fIalgorithm\fR must be one of \fBmodulo_n\fR,
1439 \fBhash_threshold\fR, \fBhrw\fR, and \fBiter_hash\fR.  Only
1440 the \fBiter_hash\fR algorithm uses \fIarg\fR.
1441 .IP
1442 Refer to \fBnicira\-ext.h\fR for more details.
1443 .
1444 .IP "\fBbundle(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1445 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter, then
1446 applies the bundle link selection \fIalgorithm\fR to choose one of the listed
1447 slaves represented as \fIslave_type\fR.  Currently the only supported
1448 \fIslave_type\fR is \fBofport\fR.  Thus, each \fIs1\fR through \fIsN\fR should
1449 be an OpenFlow port number. Outputs to the selected slave.
1450 .IP
1451 Currently, \fIfields\fR must be either \fBeth_src\fR or \fBsymmetric_l4\fR and
1452 \fIalgorithm\fR must be one of \fBhrw\fR and \fBactive_backup\fR.
1453 .IP
1454 Example: \fBbundle(eth_src,0,hrw,ofport,slaves:4,8)\fR uses an Ethernet source
1455 hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest
1456 Random Weight algorithm.
1457 .IP
1458 Refer to \fBnicira\-ext.h\fR for more details.
1459 .
1460 .IP "\fBbundle_load(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, \fIdst\fB[\fIstart\fB..\fIend\fB], slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1461 Has the same behavior as the \fBbundle\fR action, with one exception.  Instead
1462 of outputting to the selected slave, it writes its selection to
1463 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as described
1464 above.
1465 .IP
1466 Example: \fBbundle_load(eth_src, 0, hrw, ofport, NXM_NX_REG0[],
1467 slaves:4, 8)\fR uses an Ethernet source hash with basis 0, to select
1468 between OpenFlow ports 4 and 8 using the Highest Random Weight
1469 algorithm, and writes the selection to \fBNXM_NX_REG0[]\fR.
1470 .IP
1471 Refer to \fBnicira\-ext.h\fR for more details.
1472 .
1473 .IP "\fBlearn(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1474 This action adds or modifies a flow in an OpenFlow table, similar to
1475 \fBovs\-ofctl \-\-strict mod\-flows\fR.  The arguments specify the
1476 flow's match fields, actions, and other properties, as follows.  At
1477 least one match criterion and one action argument should ordinarily be
1478 specified.
1479 .RS
1480 .IP \fBidle_timeout=\fIseconds\fR
1481 .IQ \fBhard_timeout=\fIseconds\fR
1482 .IQ \fBpriority=\fIvalue\fR
1483 .IQ \fBcookie=\fIvalue\fR
1484 .IQ \fBsend_flow_rem\fR
1485 These arguments have the same meaning as in the usual \fBovs\-ofctl\fR
1486 flow syntax.
1487 .
1488 .IP \fBfin_idle_timeout=\fIseconds\fR
1489 .IQ \fBfin_hard_timeout=\fIseconds\fR
1490 Adds a \fBfin_timeout\fR action with the specified arguments to the
1491 new flow.  This feature was added in Open vSwitch 1.5.90.
1492 .
1493 .IP \fBtable=\fInumber\fR
1494 The table in which the new flow should be inserted.  Specify a decimal
1495 number between 0 and 254.  The default, if \fBtable\fR is unspecified,
1496 is table 1.
1497 .
1498 .IP \fBdelete_learned\fR
1499 This flag enables deletion of the learned flows when the flow with the
1500 \fBlearn\fR action is removed.  Specifically, when the last
1501 \fBlearn\fR action with this flag and particular \fBtable\fR and
1502 \fBcookie\fR values is removed, the switch deletes all of the flows in
1503 the specified table with the specified cookie.
1504 .
1505 .IP
1506 This flag was added in Open vSwitch 2.4.
1507 .
1508 .IP \fIfield\fB=\fIvalue\fR
1509 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]=\fIsrc\fB[\fIstart\fB..\fIend\fB]\fR
1510 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1511 Adds a match criterion to the new flow.
1512 .IP
1513 The first form specifies that \fIfield\fR must match the literal
1514 \fIvalue\fR, e.g. \fBdl_type=0x0800\fR.  All of the fields and values
1515 for \fBovs\-ofctl\fR flow syntax are available with their usual
1516 meanings.
1517 .IP
1518 The second form specifies that \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1519 in the new flow must match \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR taken
1520 from the flow currently being processed.
1521 .IP
1522 The third form is a shorthand for the second form.  It specifies that
1523 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR in the new flow must match
1524 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR taken from the flow currently
1525 being processed.
1526 .
1527 .IP \fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1528 .IQ \fBload:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1529 .
1530 Adds a \fBload\fR action to the new flow.
1531 .IP
1532 The first form loads the literal \fIvalue\fR into bits \fIstart\fR
1533 through \fIend\fR, inclusive, in field \fIdst\fR.  Its syntax is the
1534 same as the \fBload\fR action described earlier in this section.
1535 .IP
1536 The second form loads \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR, a value
1537 from the flow currently being processed, into bits \fIstart\fR
1538 through \fIend\fR, inclusive, in field \fIdst\fR.
1539 .
1540 .IP \fBoutput:\fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1541 Add an \fBoutput\fR action to the new flow's actions, that outputs to
1542 the OpenFlow port taken from \fIfield\fB[\fIstart\fB..\fIend\fB]\fR,
1543 which must be an NXM field as described above.
1544 .RE
1545 .IP
1546 For best performance, segregate learned flows into a table (using
1547 \fBtable=\fInumber\fR) that is not used for any other flows except
1548 possibly for a lowest-priority ``catch-all'' flow, that is, a flow
1549 with no match criteria.  (This is why the default \fBtable\fR is 1, to
1550 keep the learned flows separate from the primary flow table 0.)
1551 .RE
1552 .
1553 .RS
1554 .IP \fBapply_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1555 Applies the specific action(s) immediately. The syntax of actions are same
1556 to \fBactions=\fR field.
1557 .
1558 .IP \fBclear_actions\fR
1559 Clears all the actions in the action set immediately.
1560 .
1561 .IP \fBwrite_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1562 Add the specific actions to the action set.  The syntax of
1563 \fIactions\fR is the same as in the \fBactions=\fR field.  The action
1564 set is carried between flow tables and then executed at the end of the
1565 pipeline.
1566 .
1567 .IP
1568 The actions in the action set are applied in the following order, as
1569 required by the OpenFlow specification, regardless of the order in
1570 which they were added to the action set.  Except as specified
1571 otherwise below, the action set only holds at most a single action of
1572 each type.  When more than one action of a single type is written to
1573 the action set, the one written later replaces the earlier action:
1574 .
1575 .RS
1576 .IP 1.
1577 \fBstrip_vlan\fR
1578 .IQ
1579 \fBpop_mpls\fR
1580 .
1581 .IP 2.
1582 \fBpush_mpls\fR
1583 .
1584 .IP 3.
1585 \fBpush_vlan\fR
1586 .
1587 .IP 4.
1588 \fBdec_ttl\fR
1589 .IQ
1590 \fBdec_mpls_ttl\fR
1591 .
1592 .IP 5.
1593 \fBload\fR
1594 .IQ
1595 \fBmod_dl_dst\fR
1596 .IQ
1597 \fBmod_dl_src\fR
1598 .IQ
1599 \fBmod_nw_dst\fR
1600 .IQ
1601 \fBmod_nw_src\fR
1602 .IQ
1603 \fBmod_nw_tos\fR
1604 .IQ
1605 \fBmod_nw_ecn\fR
1606 .IQ
1607 \fBmod_nw_ttl\fR
1608 .IQ
1609 \fBmod_tp_dst\fR
1610 .IQ
1611 \fBmod_tp_src\fR
1612 .IQ
1613 \fBmod_vlan_pcp\fR
1614 .IQ
1615 \fBmod_vlan_vid\fR
1616 .IQ
1617 \fBset_field\fR
1618 .IQ
1619 \fBset_tunnel\fR
1620 .IQ
1621 \fBset_tunnel64\fR
1622 .IQ
1623 The action set can contain any number of these actions, with
1624 cumulative effect.  That is, when multiple actions modify the same
1625 part of a field, the later modification takes effect, and when they
1626 modify different parts of a field (or different fields), then both
1627 modifications are applied.
1628 .
1629 .IP 6.
1630 \fBset_queue\fR
1631 .
1632 .IP 7.
1633 \fBgroup\fR
1634 .IQ
1635 \fBoutput\fR
1636 .IQ
1637 If both actions are present, then \fBgroup\fR is executed and
1638 \fBoutput\fR is ignored, regardless of the order in which they were
1639 added to the action set.  (If neither action is present, the action
1640 set has no real effect, because the modified packet is not sent
1641 anywhere and thus the modifications are not visible.)
1642 .RE
1643 .IP
1644 Only the actions listed above may be written to the action set.
1645 .
1646 .IP \fBwrite_metadata\fB:\fIvalue\fR[/\fImask\fR]
1647 Updates the metadata field for the flow. If \fImask\fR is omitted, the
1648 metadata field is set exactly to \fIvalue\fR; if \fImask\fR is specified, then
1649 a 1-bit in \fImask\fR indicates that the corresponding bit in the metadata
1650 field will be replaced with the corresponding bit from \fIvalue\fR. Both
1651 \fIvalue\fR and \fImask\fR are 64-bit values that are decimal by default; use
1652 a \fB0x\fR prefix to specify them in hexadecimal.
1653 .
1654 .IP \fBmeter\fR:\fImeter_id\fR
1655 Apply the \fImeter_id\fR before any other actions. If a meter band rate is
1656 exceeded, the packet may be dropped, or modified, depending on the meter
1657 band type. See the description of the \fBMeter Table Commands\fR, above,
1658 for more details.
1659 .
1660 .IP \fBgoto_table\fR:\fItable\fR
1661 Indicates the next table in the process pipeline.
1662 .
1663 .IP "\fBfin_timeout(\fIargument\fR[\fB,\fIargument\fR]\fB)"
1664 This action changes the idle timeout or hard timeout, or both, of this
1665 OpenFlow rule when the rule matches a TCP packet with the FIN or RST
1666 flag.  When such a packet is observed, the action reduces the rule's
1667 timeouts to those specified on the action.  If the rule's existing
1668 timeout is already shorter than the one that the action specifies,
1669 then that timeout is unaffected.
1670 .IP
1671 \fIargument\fR takes the following forms:
1672 .RS
1673 .IP "\fBidle_timeout=\fIseconds\fR"
1674 Causes the flow to expire after the given number of seconds of
1675 inactivity.
1676 .
1677 .IP "\fBhard_timeout=\fIseconds\fR"
1678 Causes the flow to expire after the given number of seconds,
1679 regardless of activity.  (\fIseconds\fR specifies time since the
1680 flow's creation, not since the receipt of the FIN or RST.)
1681 .RE
1682 .IP
1683 This action was added in Open vSwitch 1.5.90.
1684 .
1685 .IP "\fBsample(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1686 Samples packets and sends one sample for every sampled packet.
1687 .IP
1688 \fIargument\fR takes the following forms:
1689 .RS
1690 .IP "\fBprobability=\fIpackets\fR"
1691 The number of sampled packets out of 65535.  Must be greater or equal to 1.
1692 .IP "\fBcollector_set_id=\fIid\fR"
1693 The unsigned 32-bit integer identifier of the set of sample collectors
1694 to send sampled packets to.  Defaults to 0.
1695 .IP "\fBobs_domain_id=\fIid\fR"
1696 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1697 Observation Domain ID sent in every IPFIX flow record.  Defaults to 0.
1698 .IP "\fBobs_point_id=\fIid\fR"
1699 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1700 Observation Point ID sent in every IPFIX flow record.  Defaults to 0.
1701 .RE
1702 .IP
1703 Refer to \fBovs\-vswitchd.conf.db\fR(8) for more details on
1704 configuring sample collector sets.
1705 .IP
1706 This action was added in Open vSwitch 1.10.90.
1707 .
1708 .IP "\fBexit\fR"
1709 This action causes Open vSwitch to immediately halt execution of
1710 further actions.  Those actions which have already been executed are
1711 unaffected.  Any further actions, including those which may be in
1712 other tables, or different levels of the \fBresubmit\fR call stack,
1713 are ignored.  Actions in the action set is still executed (specify
1714 \fBclear_actions\fR before \fBexit\fR to discard them).
1715 .RE
1716 .
1717 .PP
1718 An opaque identifier called a cookie can be used as a handle to identify
1719 a set of flows:
1720 .
1721 .IP \fBcookie=\fIvalue\fR
1722 .
1723 A cookie can be associated with a flow using the \fBadd\-flow\fR,
1724 \fBadd\-flows\fR, and \fBmod\-flows\fR commands.  \fIvalue\fR can be any
1725 64-bit number and need not be unique among flows.  If this field is
1726 omitted, a default cookie value of 0 is used.
1727 .
1728 .IP \fBcookie=\fIvalue\fR\fB/\fImask\fR
1729 .
1730 When using NXM, the cookie can be used as a handle for querying,
1731 modifying, and deleting flows.  \fIvalue\fR and \fImask\fR may be
1732 supplied for the \fBdel\-flows\fR, \fBmod\-flows\fR, \fBdump\-flows\fR, and
1733 \fBdump\-aggregate\fR commands to limit matching cookies.  A 1-bit in
1734 \fImask\fR indicates that the corresponding bit in \fIcookie\fR must
1735 match exactly, and a 0-bit wildcards that bit.  A mask of \-1 may be used
1736 to exactly match a cookie.
1737 .IP
1738 The \fBmod\-flows\fR command can update the cookies of flows that
1739 match a cookie by specifying the \fIcookie\fR field twice (once with a
1740 mask for matching and once without to indicate the new value):
1741 .RS
1742 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1,actions=normal\fR"
1743 Change all flows' cookies to 1 and change their actions to \fBnormal\fR.
1744 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1/\-1,cookie=2,actions=normal\fR"
1745 Update cookies with a value of 1 to 2 and change their actions to
1746 \fBnormal\fR.
1747 .RE
1748 .IP
1749 The ability to match on cookies was added in Open vSwitch 1.5.0.
1750 .
1751 .PP
1752 The following additional field sets the priority for flows added by
1753 the \fBadd\-flow\fR and \fBadd\-flows\fR commands.  For
1754 \fBmod\-flows\fR and \fBdel\-flows\fR when \fB\-\-strict\fR is
1755 specified, priority must match along with the rest of the flow
1756 specification.  For \fBmod-flows\fR without \fB\-\-strict\fR,
1757 priority is only significant if the command creates a new flow, that
1758 is, non-strict \fBmod\-flows\fR does not match on priority and will
1759 not change the priority of existing flows.  Other commands do not
1760 allow priority to be specified.
1761 .
1762 .IP \fBpriority=\fIvalue\fR
1763 The priority at which a wildcarded entry will match in comparison to
1764 others.  \fIvalue\fR is a number between 0 and 65535, inclusive.  A higher 
1765 \fIvalue\fR will match before a lower one.  An exact-match entry will always 
1766 have priority over an entry containing wildcards, so it has an implicit 
1767 priority value of 65535.  When adding a flow, if the field is not specified, 
1768 the flow's priority will default to 32768.
1769 .IP
1770 OpenFlow leaves behavior undefined when two or more flows with the
1771 same priority can match a single packet.  Some users expect
1772 ``sensible'' behavior, such as more specific flows taking precedence
1773 over less specific flows, but OpenFlow does not specify this and Open
1774 vSwitch does not implement it.  Users should therefore take care to
1775 use priorities to ensure the behavior that they expect.
1776 .
1777 .PP
1778 The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1779 support the following additional options.  These options affect only
1780 new flows.  Thus, for \fBadd\-flow\fR and \fBadd\-flows\fR, these
1781 options are always significant, but for \fBmod\-flows\fR they are
1782 significant only if the command creates a new flow, that is, their
1783 values do not update or affect existing flows.
1784 .
1785 .IP "\fBidle_timeout=\fIseconds\fR"
1786 Causes the flow to expire after the given number of seconds of
1787 inactivity.  A value of 0 (the default) prevents a flow from expiring
1788 due to inactivity.
1789 .
1790 .IP \fBhard_timeout=\fIseconds\fR
1791 Causes the flow to expire after the given number of seconds,
1792 regardless of activity.  A value of 0 (the default) gives the flow no
1793 hard expiration deadline.
1794 .
1795 .IP "\fBsend_flow_rem\fR"
1796 Marks the flow with a flag that causes the switch to generate a ``flow
1797 removed'' message and send it to interested controllers when the flow
1798 later expires or is removed.
1799 .
1800 .IP "\fBcheck_overlap\fR"
1801 Forces the switch to check that the flow match does not overlap that
1802 of any different flow with the same priority in the same table.  (This
1803 check is expensive so it is best to avoid it.)
1804 .
1805 .PP
1806 The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR 
1807 and \fBdel\-flows\fR commands support one additional optional field:
1808 .
1809 .TP
1810 \fBout_port=\fIport\fR
1811 If set, a matching flow must include an output action to \fIport\fR,
1812 which must be an OpenFlow port number or name (e.g. \fBlocal\fR).
1813 .
1814 .SS "Table Entry Output"
1815 .
1816 The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information 
1817 about the entries in a datapath's tables.  Each line of output is a 
1818 flow entry as described in \fBFlow Syntax\fR, above, plus some
1819 additional fields:
1820 .
1821 .IP \fBduration=\fIsecs\fR
1822 The time, in seconds, that the entry has been in the table.
1823 \fIsecs\fR includes as much precision as the switch provides, possibly
1824 to nanosecond resolution.
1825 .
1826 .IP \fBn_packets\fR
1827 The number of packets that have matched the entry.
1828 .
1829 .IP \fBn_bytes\fR
1830 The total number of bytes from packets that have matched the entry.
1831 .
1832 .PP
1833 The following additional fields are included only if the switch is
1834 Open vSwitch 1.6 or later and the NXM flow format is used to dump the
1835 flow (see the description of the \fB\-\-flow-format\fR option below).
1836 The values of these additional fields are approximations only and in
1837 particular \fBidle_age\fR will sometimes become nonzero even for busy
1838 flows.
1839 .
1840 .IP \fBhard_age=\fIsecs\fR
1841 The integer number of seconds since the flow was added or modified.
1842 \fBhard_age\fR is displayed only if it differs from the integer part
1843 of \fBduration\fR.  (This is separate from \fBduration\fR because
1844 \fBmod\-flows\fR restarts the \fBhard_timeout\fR timer without zeroing
1845 \fBduration\fR.)
1846 .
1847 .IP \fBidle_age=\fIsecs\fR
1848 The integer number of seconds that have passed without any packets
1849 passing through the flow.
1850 .
1851 .SS "Group Syntax"
1852 .PP
1853 Some \fBovs\-ofctl\fR commands accept an argument that describes a group or
1854 groups.  Such flow descriptions comprise a series
1855 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
1856 space.  (Embedding spaces into a group description normally requires
1857 quoting to prevent the shell from breaking the description into
1858 multiple arguments.). Unless noted otherwise only the last instance
1859 of each field is honoured.
1860 .PP
1861 .IP \fBgroup_id=\fIid\fR
1862 The integer group id of group.
1863 When this field is specified in \fBdel\-groups\fR or \fBdump\-groups\fR,
1864 the keyword "all" may be used to designate all groups.
1865 .
1866 This field is required.
1867
1868
1869 .IP \fBtype=\fItype\fR
1870 The type of the group.  This \fBadd-group\fR, \fBadd-groups\fR and
1871 \fBdel-groups\fR command require this field.  The following keywords
1872 designated the allowed types:
1873 .RS
1874 .IP \fBall\fR
1875 Execute all buckets in the group.
1876 .IP \fBselect\fR
1877 Execute one bucket in the group.
1878 The switch should select the bucket in such a way that should implement
1879 equal load sharing is achieved.  The switch may optionally select the
1880 bucket based on bucket weights.
1881 .IP \fBindirect\fR
1882 Executes the one bucket in the group.
1883 .IP \fBff\fR
1884 .IQ \fBfast_failover\fR
1885 Executes the first live bucket in the group which is associated with
1886 a live port or group.
1887 .RE
1888
1889 .IP \fBbucket\fR=\fIbucket_parameters\fR
1890 The \fBadd-group\fR, \fBadd-groups\fR and \fBmod-group\fR commands
1891 require at least one bucket field. Bucket fields must appear after
1892 all other fields.
1893 .
1894 Multiple bucket fields to specify multiple buckets.
1895 The order in which buckets are specified corresponds to their order in
1896 the group. If the type of the group is "indirect" then only one group may
1897 be specified.
1898 .
1899 \fIbucket_parameters\fR consists of a list of \fIfield\fB=\fIvalue\fR
1900 assignments, separated by commas or white space followed by a
1901 comma-separated list of actions.
1902 The syntax of actions are same
1903 to \fBactions=\fR field described in \fBFlow Syntax\fR above.
1904 The fields for \fIbucket_parameters\fR are:
1905 .
1906 .RS
1907 .IP \fBweight=\fIvalue\fR
1908 The relative weight of the bucket as an integer. This may be used by the switch
1909 during bucket select for groups whose \fBtype\fR is \fBselect\fR.
1910 .IP \fBwatch_port=\fIport\fR
1911 Port used to determine liveness of group.
1912 This or the \fBwatch_group\fR field is required
1913 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1914 .IP \fBwatch_group=\fIgroup_id\fR
1915 Group identifier of group used to determine liveness of group.
1916 This or the \fBwatch_port\fR field is required
1917 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1918 .RE
1919 .
1920 .SS "Meter Syntax"
1921 .PP
1922 The meter table commands accept an argument that describes a meter.
1923 Such meter descriptions comprise a series \fIfield\fB=\fIvalue\fR
1924 assignments, separated by commas or white space.
1925 (Embedding spaces into a group description normally requires
1926 quoting to prevent the shell from breaking the description into
1927 multiple arguments.). Unless noted otherwise only the last instance
1928 of each field is honoured.
1929 .PP
1930 .IP \fBmeter=\fIid\fR
1931 The integer meter id of the meter.
1932 When this field is specified in \fBdel-meter\fR, \fBdump-meter\fR, or
1933 \fBmeter-stats\fR, the keyword "all" may be used to designate all meters.
1934 .
1935 This field is required, exept for \fBmeter-stats\fR, which dumps all stats
1936 when this field is not specified.
1937
1938 .IP \fBkbps\fR
1939 .IQ \fBpktps\fR
1940 The unit for the meter band rate parameters, either kilobits per second, or
1941 packets per second, respectively.  One of these must be specified.  The burst
1942 size unit corresponds to the rate unit by dropping the "per second", i.e.,
1943 burst is in units of kilobits or packets, respectively.
1944
1945 .IP \fBburst\fR
1946 Specify burst size for all bands, or none of them, if this flag is not given.
1947
1948 .IP \fBstats\fR
1949 Collect meter and band statistics.
1950
1951 .IP \fBbands\fR=\fIband_parameters\fR
1952 The \fBadd-meter\fR and \fBmod-meter\fR commands require at least one
1953 band specification. Bands must appear after all other fields.
1954 .RS
1955 .IP \fBtype=\fItype\fR
1956 The type of the meter band.  This keyword starts a new band specification.
1957 Each band specifies a rate above which the band is to take some action. The
1958 action depends on the band type.  If multiple bands' rate is exceeded, then
1959 the band with the highest rate among the exceeded bands is selected.
1960 The following keywords designate the allowed
1961 meter band types:
1962 .RS
1963 .IP \fBdrop\fR
1964 Drop packets exceeding the band's rate limit.
1965 .RE
1966 .
1967 .IP "The other \fIband_parameters\fR are:"
1968 .IP \fBrate=\fIvalue\fR
1969 The relative rate limit for this band, in kilobits per second or packets per
1970 second, depending on the meter flags defined above.
1971 .IP \fBburst_size=\fIport\fR
1972 The maximum burst allowed for the band.  If unspecified, the switch is free to
1973 select some reasonable value depending on it's configuration.
1974 .RE
1975 .
1976 .SH OPTIONS
1977 .TP
1978 \fB\-\-strict\fR
1979 Uses strict matching when running flow modification commands.
1980 .
1981 .so lib/ofp-version.man
1982 .
1983 .IP "\fB\-F \fIformat\fR[\fB,\fIformat\fR...]"
1984 .IQ "\fB\-\-flow\-format=\fIformat\fR[\fB,\fIformat\fR...]"
1985 \fBovs\-ofctl\fR supports the following individual flow formats, any
1986 number of which may be listed as \fIformat\fR:
1987 .RS
1988 .IP "\fBOpenFlow10\-table_id\fR"
1989 This is the standard OpenFlow 1.0 flow format.  All OpenFlow switches
1990 and all versions of Open vSwitch support this flow format.
1991 .
1992 .IP "\fBOpenFlow10+table_id\fR"
1993 This is the standard OpenFlow 1.0 flow format plus a Nicira extension
1994 that allows \fBovs\-ofctl\fR to specify the flow table in which a
1995 particular flow should be placed.  Open vSwitch 1.2 and later supports
1996 this flow format.
1997 .
1998 .IP "\fBNXM\-table_id\fR (Nicira Extended Match)"
1999 This Nicira extension to OpenFlow is flexible and extensible.  It
2000 supports all of the Nicira flow extensions, such as \fBtun_id\fR and
2001 registers.  Open vSwitch 1.1 and later supports this flow format.
2002 .
2003 .IP "\fBNXM+table_id\fR (Nicira Extended Match)"
2004 This combines Nicira Extended match with the ability to place a flow
2005 in a specific table.  Open vSwitch 1.2 and later supports this flow
2006 format.
2007 .
2008 .IP "\fBOXM-OpenFlow12\fR"
2009 .IQ "\fBOXM-OpenFlow13\fR"
2010 .IQ "\fBOXM-OpenFlow14\fR"
2011 These are the standard OXM (OpenFlow Extensible Match) flow format in
2012 OpenFlow 1.2, 1.3, and 1.4, respectively.
2013 .RE
2014 .
2015 .IP
2016 \fBovs\-ofctl\fR also supports the following abbreviations for
2017 collections of flow formats:
2018 .RS
2019 .IP "\fBany\fR"
2020 Any supported flow format.
2021 .IP "\fBOpenFlow10\fR"
2022 \fBOpenFlow10\-table_id\fR or \fBOpenFlow10+table_id\fR.
2023 .IP "\fBNXM\fR"
2024 \fBNXM\-table_id\fR or \fBNXM+table_id\fR.
2025 .IP "\fBOXM\fR"
2026 \fBOXM-OpenFlow12\fR, \fBOXM-OpenFlow13\fR, or \fBOXM-OpenFlow14\fR.
2027 .RE
2028 .
2029 .IP
2030 For commands that modify the flow table, \fBovs\-ofctl\fR by default
2031 negotiates the most widely supported flow format that supports the
2032 flows being added.  For commands that query the flow table,
2033 \fBovs\-ofctl\fR by default uses the most advanced format supported by
2034 the switch.
2035 .IP
2036 This option, where \fIformat\fR is a comma-separated list of one or
2037 more of the formats listed above, limits \fBovs\-ofctl\fR's choice of
2038 flow format.  If a command cannot work as requested using one of the
2039 specified flow formats, \fBovs\-ofctl\fR will report a fatal error.
2040 .
2041 .IP "\fB\-P \fIformat\fR"
2042 .IQ "\fB\-\-packet\-in\-format=\fIformat\fR"
2043 \fBovs\-ofctl\fR supports the following packet_in formats, in order of
2044 increasing capability:
2045 .RS
2046 .IP "\fBopenflow10\fR"
2047 This is the standard OpenFlow 1.0 packet in format. It should be supported by
2048 all OpenFlow switches.
2049 .
2050 .IP "\fBnxm\fR (Nicira Extended Match)"
2051 This packet_in format includes flow metadata encoded using the NXM format.
2052 .
2053 .RE
2054 .IP
2055 Usually, \fBovs\-ofctl\fR prefers the \fBnxm\fR packet_in format, but will
2056 allow the switch to choose its default if \fBnxm\fR is unsupported.  When
2057 \fIformat\fR is one of the formats listed in the above table, \fBovs\-ofctl\fR
2058 will insist on the selected format.  If the switch does not support the
2059 requested format, \fBovs\-ofctl\fR will report a fatal error.  This option only
2060 affects the \fBmonitor\fR command.
2061 .
2062 .IP "\fB\-\-timestamp\fR"
2063 Print a timestamp before each received packet.  This option only
2064 affects the \fBmonitor\fR, \fBsnoop\fR, and \fBofp\-parse\-pcap\fR
2065 commands.
2066 .
2067 .IP "\fB\-m\fR"
2068 .IQ "\fB\-\-more\fR"
2069 Increases the verbosity of OpenFlow messages printed and logged by
2070 \fBovs\-ofctl\fR commands.  Specify this option more than once to
2071 increase verbosity further.
2072 .
2073 .IP \fB\-\-sort\fR[\fB=\fIfield\fR]
2074 .IQ \fB\-\-rsort\fR[\fB=\fIfield\fR]
2075 Display output sorted by flow \fIfield\fR in ascending
2076 (\fB\-\-sort\fR) or descending (\fB\-\-rsort\fR) order, where
2077 \fIfield\fR is any of the fields that are allowed for matching or
2078 \fBpriority\fR to sort by priority.  When \fIfield\fR is omitted, the
2079 output is sorted by priority.  Specify these options multiple times to
2080 sort by multiple fields.
2081 .IP
2082 Any given flow will not necessarily specify a value for a given
2083 field.  This requires special treatement:
2084 .RS
2085 .IP \(bu
2086 A flow that does not specify any part of a field that is used for sorting is
2087 sorted after all the flows that do specify the field.  For example,
2088 \fB\-\-sort=tcp_src\fR will sort all the flows that specify a TCP
2089 source port in ascending order, followed by the flows that do not
2090 specify a TCP source port at all.
2091 .IP \(bu
2092 A flow that only specifies some bits in a field is sorted as if the
2093 wildcarded bits were zero.  For example, \fB\-\-sort=nw_src\fR would
2094 sort a flow that specifies \fBnw_src=192.168.0.0/24\fR the same as
2095 \fBnw_src=192.168.0.0\fR.
2096 .RE
2097 .IP
2098 These options currently affect only \fBdump\-flows\fR output.
2099 .
2100 .ds DD \
2101 \fBovs\-ofctl\fR detaches only when executing the \fBmonitor\fR or \
2102 \fBsnoop\fR commands.
2103 .so lib/daemon.man
2104 .SS "Public Key Infrastructure Options"
2105 .so lib/ssl.man
2106 .so lib/vlog.man
2107 .so lib/common.man
2108 .
2109 .SH "RUNTIME MANAGEMENT COMMANDS"
2110 \fBovs\-appctl\fR(8) can send commands to a running \fBovs\-ofctl\fR
2111 process.  The supported commands are listed below.
2112 .
2113 .IP "\fBexit\fR"
2114 Causes \fBovs\-ofctl\fR to gracefully terminate.  This command applies
2115 only when executing the \fBmonitor\fR or \fBsnoop\fR commands.
2116 .
2117 .IP "\fBofctl/set\-output\-file \fIfile\fR"
2118 Causes all subsequent output to go to \fIfile\fR instead of stderr.
2119 This command applies only when executing the \fBmonitor\fR or
2120 \fBsnoop\fR commands.
2121 .
2122 .IP "\fBofctl/send \fIofmsg\fR..."
2123 Sends each \fIofmsg\fR, specified as a sequence of hex digits that
2124 express an OpenFlow message, on the OpenFlow connection.  This command
2125 is useful only when executing the \fBmonitor\fR command.
2126 .
2127 .IP "\fBofctl/barrier\fR"
2128 Sends an OpenFlow barrier request on the OpenFlow connection and waits
2129 for a reply.  This command is useful only for the \fBmonitor\fR
2130 command.
2131 .
2132 .SH EXAMPLES
2133 .
2134 The following examples assume that \fBovs\-vswitchd\fR has a bridge
2135 named \fBbr0\fR configured.
2136 .
2137 .TP
2138 \fBovs\-ofctl dump\-tables br0\fR
2139 Prints out the switch's table stats.  (This is more interesting after
2140 some traffic has passed through.)
2141 .
2142 .TP
2143 \fBovs\-ofctl dump\-flows br0\fR
2144 Prints the flow entries in the switch.
2145 .
2146 .SH "SEE ALSO"
2147 .
2148 .BR ovs\-appctl (8),
2149 .BR ovs\-vswitchd (8)
2150 .BR ovs\-vswitchd.conf.db (8)