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