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