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