]> git.proxmox.com Git - mirror_ovs.git/blame - utilities/ovs-ofctl.8.in
flow: Support OF1.5+ (draft) actset_output field.
[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
1c58a78b
BP
540protocol type) is wildcarded, so must be the L4 fields \fBtcp_dst\fR and
541\fBtcp_src\fR. \fBovs\-ofctl\fR will warn about
0b3f2725
BP
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.
1c58a78b
BP
691.IP \fBtcp_src=\fIport\fR
692.IQ \fBtcp_dst=\fIport\fR
693.IQ \fBudp_src=\fIport\fR
694.IQ \fBudp_dst=\fIport\fR
695.IQ \fBsctp_src=\fIport\fR
696.IQ \fBsctp_dst=\fIport\fR
697Matches a TCP, UDP, or SCTP source or destination port \fIport\fR,
698which is specified as a decimal number between 0 and 65535, inclusive.
699.IP
700When \fBdl_type\fR and \fBnw_proto\fR are wildcarded or set to values
701that do not indicate an appropriate protocol, the values of these
702settings are ignored (see \fBFlow Syntax\fR above).
703.
704.IP \fBtcp_src=\fIport\fB/\fImask\fR
705.IQ \fBtcp_dst=\fIport\fB/\fImask\fR
706.IQ \fBudp_src=\fIport\fB/\fImask\fR
707.IQ \fBudp_dst=\fIport\fB/\fImask\fR
708.IQ \fBsctp_src=\fIport\fB/\fImask\fR
709.IQ \fBsctp_dst=\fIport\fB/\fImask\fR
710Bitwise match on TCP (or UDP or SCTP) source or destination port.
711The \fIport\fR and \fImask\fR are 16-bit numbers
73f33563
BP
712written in decimal or in hexadecimal prefixed by \fB0x\fR. Each 1-bit
713in \fImask\fR requires that the corresponding bit in \fIport\fR must
714match. Each 0-bit in \fImask\fR causes the corresponding bit to be
715ignored.
716.IP
717Bitwise matches on transport ports are rarely useful in isolation, but
718a group of them can be used to reduce the number of flows required to
719match on a range of transport ports. For example, suppose that the
720goal is to match TCP source ports 1000 to 1999, inclusive. One way is
edcbeb4d 721to insert 1000 flows, each of which matches on a single source port.
73f33563
BP
722Another way is to look at the binary representations of 1000 and 1999,
723as follows:
724.br
725.B "01111101000"
726.br
727.B "11111001111"
728.br
729and then to transform those into a series of bitwise matches that
730accomplish the same results:
731.br
732.B "01111101xxx"
733.br
734.B "0111111xxxx"
735.br
736.B "10xxxxxxxxx"
737.br
738.B "110xxxxxxxx"
739.br
740.B "1110xxxxxxx"
741.br
742.B "11110xxxxxx"
743.br
744.B "1111100xxxx"
745.br
746which become the following when written in the syntax required by
747\fBovs\-ofctl\fR:
748.br
1c58a78b 749.B "tcp,tcp_src=0x03e8/0xfff8"
73f33563 750.br
1c58a78b 751.B "tcp,tcp_src=0x03f0/0xfff0"
73f33563 752.br
1c58a78b 753.B "tcp,tcp_src=0x0400/0xfe00"
73f33563 754.br
1c58a78b 755.B "tcp,tcp_src=0x0600/0xff00"
73f33563 756.br
1c58a78b 757.B "tcp,tcp_src=0x0700/0xff80"
73f33563 758.br
1c58a78b 759.B "tcp,tcp_src=0x0780/0xffc0"
73f33563 760.br
1c58a78b 761.B "tcp,tcp_src=0x07c0/0xfff0"
73f33563
BP
762.IP
763Only Open vSwitch 1.6 and later supports bitwise matching on transport
764ports.
765.IP
1c58a78b 766Like the exact-match forms described
edcbeb4d 767above, the bitwise match forms apply only when \fBdl_type\fR and
0d56eaf2 768\fBnw_proto\fR specify TCP or UDP or SCTP.
73f33563 769.
1c58a78b
BP
770.IP \fBtp_src=\fIport\fR
771.IQ \fBtp_dst=\fIport\fR
772These are deprecated generic forms of L4 port matches. In new code,
773please use the TCP-, UDP-, or SCTP-specific forms described above.
774.
dc235f7f 775.IP \fBtcp_flags=\fIflags\fB/\fImask\fR
61bf6666 776.IQ \fBtcp_flags=\fR[\fB+\fIflag\fR...][\fB-\fIflag\fR...]
dc235f7f
JR
777Bitwise match on TCP flags. The \fIflags\fR and \fImask\fR are 16-bit
778numbers written in decimal or in hexadecimal prefixed by \fB0x\fR.
779Each 1-bit in \fImask\fR requires that the corresponding bit in
780\fIflags\fR must match. Each 0-bit in \fImask\fR causes the corresponding
781bit to be ignored.
782.IP
61bf6666
JR
783Alternatively, the flags can be specified by their symbolic names
784(listed below), each preceded by either \fB+\fR for a flag that must
785be set, or \fB\-\fR for a flag that must be unset, without any other
786delimiters between the flags. Flags not mentioned are wildcarded.
787For example, \fBtcp,tcp_flags=+syn\-ack\fR matches TCP SYNs that are
788not ACKs.
789.IP
dc235f7f
JR
790TCP protocol currently defines 9 flag bits, and additional 3 bits are
791reserved (must be transmitted as zero), see RFCs 793, 3168, and 3540.
792The flag bits are, numbering from the least significant bit:
793.RS
61bf6666 794.IP "\fB0: fin\fR"
dc235f7f 795No more data from sender.
61bf6666 796.IP "\fB1: syn\fR"
dc235f7f 797Synchronize sequence numbers.
61bf6666 798.IP "\fB2: rst\fR"
dc235f7f 799Reset the connection.
61bf6666 800.IP "\fB3: psh\fR"
dc235f7f 801Push function.
61bf6666 802.IP "\fB4: ack\fR"
dc235f7f 803Acknowledgement field significant.
61bf6666 804.IP "\fB5: urg\fR"
dc235f7f 805Urgent pointer field significant.
61bf6666 806.IP "\fB6: ece\fR"
dc235f7f 807ECN Echo.
61bf6666 808.IP "\fB7: cwr\fR"
dc235f7f 809Congestion Windows Reduced.
61bf6666 810.IP "\fB8: ns\fR"
dc235f7f
JR
811Nonce Sum.
812.IP "\fB9-11:\fR"
813Reserved.
814.IP "\fB12-15:\fR"
815Not matchable, must be zero.
816.RE
064af421 817.IP \fBicmp_type=\fItype\fR
ed951f15 818.IQ \fBicmp_code=\fIcode\fR
d31f1109
JP
819When \fBdl_type\fR and \fBnw_proto\fR specify ICMP or ICMPv6, \fItype\fR
820matches the ICMP type and \fIcode\fR matches the ICMP code. Each is
821specified as a decimal number between 0 and 255, inclusive.
ed951f15
BP
822.IP
823When \fBdl_type\fR and \fBnw_proto\fR take other values, the values of
0b3f2725 824these settings are ignored (see \fBFlow Syntax\fR above).
71e17a7a 825.
6c1491fb 826.IP \fBtable=\fInumber\fR
0e197060
BP
827For flow dump commands, limits the flows dumped to those in the table
828with the given \fInumber\fR between 0 and 254. If not specified (or if
829255 is specified as \fInumber\fR), then flows in all tables are
830dumped.
831.
832.IP
833For flow table modification commands, behavior varies based on the
834OpenFlow version used to connect to the switch:
835.
836.RS
837.IP "OpenFlow 1.0"
838OpenFlow 1.0 does not support \fBtable\fR for modifying flows.
839\fBovs\-ofctl\fR will exit with an error if \fBtable\fR (other than
840\fBtable=255\fR) is specified for a switch that only supports OpenFlow
8411.0.
842.IP
843In OpenFlow 1.0, the switch chooses the table into which to insert a
844new flow. The Open vSwitch software switch always chooses table 0.
845Other Open vSwitch datapaths and other OpenFlow implementations may
846choose different tables.
847.IP
848The OpenFlow 1.0 behavior in Open vSwitch for modifying or removing
849flows depends on whether \fB\-\-strict\fR is used. Without
850\fB\-\-strict\fR, the command applies to matching flows in all tables.
851With \fB\-\-strict\fR, the command will operate on any single matching
852flow in any table; it will do nothing if there are matches in more
853than one table. (The distinction between these behaviors only matters
854if non-OpenFlow 1.0 commands were also used, because OpenFlow 1.0
855alone cannot add flows with the same matching criteria to multiple
856tables.)
857.
858.IP "OpenFlow 1.0 with table_id extension"
859Open vSwitch implements an OpenFlow extension that allows the
860controller to specify the table on which to operate. \fBovs\-ofctl\fR
861automatically enables the extension when \fBtable\fR is specified and
862OpenFlow 1.0 is used. \fBovs\-ofctl\fR automatically detects whether
863the switch supports the extension. As of this writing, this extension
864is only known to be implemented by Open vSwitch.
865.
866.IP
867With this extension, \fBovs\-ofctl\fR operates on the requested table
868when \fBtable\fR is specified, and acts as described for OpenFlow 1.0
869above when no \fBtable\fR is specified (or for \fBtable=255\fR).
870.
871.IP "OpenFlow 1.1"
872OpenFlow 1.1 requires flow table modification commands to specify a
873table. When \fBtable\fR is not specified (or \fBtable=255\fR is
874specified), \fBovs\-ofctl\fR defaults to table 0.
875.
876.IP "OpenFlow 1.2 and later"
877OpenFlow 1.2 and later allow flow deletion commands, but not other
878flow table modification commands, to operate on all flow tables, with
879the behavior described above for OpenFlow 1.0.
880.RE
6c1491fb 881.
54fa24c5
JS
882.IP \fBmetadata=\fIvalue\fR[\fB/\fImask\fR]
883Matches \fIvalue\fR either exactly or with optional \fImask\fR in the metadata
884field. \fIvalue\fR and \fImask\fR are 64-bit integers, by default in decimal
885(use a \fB0x\fR prefix to specify hexadecimal). Arbitrary \fImask\fR values
886are allowed: a 1-bit in \fImask\fR indicates that the corresponding bit in
887\fIvalue\fR must match exactly, and a 0-bit wildcards that bit. Matching on
888metadata was added in Open vSwitch 1.8.
889.
71e17a7a 890.PP
d31f1109
JP
891The following shorthand notations are also available:
892.
893.IP \fBip\fR
894Same as \fBdl_type=0x0800\fR.
895.
896.IP \fBicmp\fR
897Same as \fBdl_type=0x0800,nw_proto=1\fR.
898.
899.IP \fBtcp\fR
900Same as \fBdl_type=0x0800,nw_proto=6\fR.
901.
902.IP \fBudp\fR
903Same as \fBdl_type=0x0800,nw_proto=17\fR.
904.
0d56eaf2
JS
905.IP \fBsctp\fR
906Same as \fBdl_type=0x0800,nw_proto=132\fR.
907.
d31f1109
JP
908.IP \fBarp\fR
909Same as \fBdl_type=0x0806\fR.
910.
8087f5ff
MM
911.IP \fBrarp\fR
912Same as \fBdl_type=0x8035\fR.
913.
d31f1109 914.PP
71e17a7a
JP
915The following field assignments require support for the NXM (Nicira
916Extended Match) extension to OpenFlow. When one of these is specified,
917\fBovs\-ofctl\fR will automatically attempt to negotiate use of this
918extension. If the switch does not support NXM, then \fBovs\-ofctl\fR
919will report a fatal error.
920.
33d8c6b4
BP
921.IP \fBvlan_tci=\fItci\fR[\fB/\fImask\fR]
922Matches modified VLAN TCI \fItci\fR. If \fImask\fR is omitted,
923\fItci\fR is the exact VLAN TCI to match; if \fImask\fR is specified,
a8600e1a 924then a 1-bit in \fImask\fR indicates that the corresponding bit in
33d8c6b4
BP
925\fItci\fR must match exactly, and a 0-bit wildcards that bit. Both
926\fItci\fR and \fImask\fR are 16-bit values that are decimal by
927default; use a \fB0x\fR prefix to specify them in hexadecimal.
928.
929.IP
930The value that \fBvlan_tci\fR matches against is 0 for a packet that
931has no 802.1Q header. Otherwise, it is the TCI value from the 802.1Q
932header with the CFI bit (with value \fB0x1000\fR) forced to 1.
933.IP
934Examples:
935.RS
936.IP \fBvlan_tci=0\fR
937Match only packets without an 802.1Q header.
938.IP \fBvlan_tci=0xf123\fR
939Match packets tagged with priority 7 in VLAN 0x123.
940.IP \fBvlan_tci=0x1123/0x1fff\fR
941Match packets tagged with VLAN 0x123 (and any priority).
942.IP \fBvlan_tci=0x5000/0xf000\fR
943Match packets tagged with priority 2 (in any VLAN).
944.IP \fBvlan_tci=0/0xfff\fR
945Match packets with no 802.1Q header or tagged with VLAN 0 (and any
946priority).
947.IP \fBvlan_tci=0x5000/0xe000\fR
948Match packets with no 802.1Q header or tagged with priority 2 (in any
949VLAN).
950.IP \fBvlan_tci=0/0xefff\fR
951Match packets with no 802.1Q header or tagged with VLAN 0 and priority
9520.
953.RE
954.IP
955Some of these matching possibilities can also be achieved with
956\fBdl_vlan\fR and \fBdl_vlan_pcp\fR.
957.
7257b535
BP
958.IP \fBip_frag=\fIfrag_type\fR
959When \fBdl_type\fR specifies IP or IPv6, \fIfrag_type\fR
960specifies what kind of IP fragments or non-fragments to match. The
961following values of \fIfrag_type\fR are supported:
962.RS
963.IP "\fBno\fR"
964Matches only non-fragmented packets.
965.IP "\fByes\fR"
966Matches all fragments.
967.IP "\fBfirst\fR"
968Matches only fragments with offset 0.
969.IP "\fBlater\fR"
970Matches only fragments with nonzero offset.
971.IP "\fBnot_later\fR"
972Matches non-fragmented packets and fragments with zero offset.
973.RE
974.IP
975The \fBip_frag\fR match type is likely to be most useful in
976\fBnx\-match\fR mode. See the description of the \fBset\-frags\fR
977command, above, for more details.
978.
1e6fbba0
SH
979.IP \fBarp_spa=\fIip\fR[\fB/\fInetmask\fR]
980.IQ \fBarp_tpa=\fIip\fR[\fB/\fInetmask\fR]
981When \fBdl_type\fR specifies either ARP or RARP, \fBarp_spa\fR and
e935fc32 982\fBarp_tpa\fR match the source and target IPv4 address, respectively.
1e6fbba0
SH
983An address may be specified as an IP address or host name
984(e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR). The optional
985\fInetmask\fR allows restricting a match to an IPv4 address prefix.
986The netmask may be specified as a dotted quad
987(e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
988(e.g. \fB192.168.1.0/24\fR).
989.
bad68a99
JP
990.IP \fBarp_sha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
991.IQ \fBarp_tha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
8087f5ff
MM
992When \fBdl_type\fR specifies either ARP or RARP, \fBarp_sha\fR and
993\fBarp_tha\fR match the source and target hardware address, respectively. An
9183708a
SH
994address is specified as 6 pairs of hexadecimal digits delimited by colons
995(e.g. \fB00:0A:E4:25:6B:B0\fR).
bad68a99 996.
9183708a
SH
997.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
998.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
999When \fBdl_type\fR specifies either ARP or RARP, \fBarp_sha\fR and
1000\fBarp_tha\fR match the source and target hardware address, respectively. An
1001address is specified as 6 pairs of hexadecimal digits delimited by colons
1002(e.g. \fB00:0A:E4:25:6B:B0\fR), with a wildcard mask following the slash.
1003.
1004
d31f1109
JP
1005.IP \fBipv6_src=\fIipv6\fR[\fB/\fInetmask\fR]
1006.IQ \fBipv6_dst=\fIipv6\fR[\fB/\fInetmask\fR]
1007When \fBdl_type\fR is 0x86dd (possibly via shorthand, e.g., \fBipv6\fR
1008or \fBtcp6\fR), matches IPv6 source (or destination) address \fIipv6\fR,
1009which may be specified as defined in RFC 2373. The preferred format is
1010\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fR, where
1011\fIx\fR are the hexadecimal values of the eight 16-bit pieces of the
1012address. A single instance of \fB::\fR may be used to indicate multiple
1013groups of 16-bits of zeros. The optional \fInetmask\fR allows
1014restricting a match to an IPv6 address prefix. A netmask is specified
ff0b06ee
BP
1015as an IPv6 address (e.g. \fB2001:db8:3c4d:1::/ffff:ffff:ffff:ffff::\fR)
1016or a CIDR block (e.g. \fB2001:db8:3c4d:1::/64\fR). Open vSwitch 1.8
1017and later support arbitrary masks; earlier versions support only CIDR
1018masks, that is, CIDR block and IPv6 addresses that are equivalent to
1019CIDR blocks.
d31f1109 1020.
fa8223b7
JP
1021.IP \fBipv6_label=\fIlabel\fR
1022When \fBdl_type\fR is 0x86dd (possibly via shorthand, e.g., \fBipv6\fR
1023or \fBtcp6\fR), matches IPv6 flow label \fIlabel\fR.
1024.
47284b1f 1025.IP \fBnd_target=\fIipv6\fR[\fB/\fInetmask\fR]
685a51a5
JP
1026When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify
1027IPv6 Neighbor Discovery (ICMPv6 type 135 or 136), matches the target address
1028\fIipv6\fR. \fIipv6\fR is in the same format described earlier for the
1029\fBipv6_src\fR and \fBipv6_dst\fR fields.
1030.
1031.IP \fBnd_sll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
1032When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
1033Neighbor Solicitation (ICMPv6 type 135), matches the source link\-layer
1034address option. An address is specified as 6 pairs of hexadecimal
1035digits delimited by colons.
1036.
1037.IP \fBnd_tll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
1038When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
1039Neighbor Advertisement (ICMPv6 type 136), matches the target link\-layer
1040address option. An address is specified as 6 pairs of hexadecimal
1041digits delimited by colons.
1042.
b4dca848
SH
1043.IP \fBmpls_bos=\fIbos\fR
1044When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1045\fBmpls\fR or \fBmplsm\fR), matches the bottom-of-stack bit of the
1046outer-most MPLS label stack entry. Valid values are 0 and 1.
1047.IP
1048If 1 then for a packet with a well-formed MPLS label stack the
1049bottom-of-stack bit indicates that the outer label stack entry is also
1050the inner-most label stack entry and thus that is that there is only one
1051label stack entry present. Conversely, if 0 then for a packet with a
1052well-formed MPLS label stack the bottom-of-stack bit indicates that the
1053outer label stack entry is not the inner-most label stack entry and
1054thus there is more than one label stack entry present.
1055.
1056.IP \fBmpls_label=\fIlabel\fR
1057When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1058\fBmpls\fR or \fBmplsm\fR), matches the label of the outer
1059MPLS label stack entry. The label is a 20-bit value that is decimal by default;
1060use a \fB0x\fR prefix to specify them in hexadecimal.
1061.
1062.IP \fBmpls_tc=\fItc\fR
1063When \fBdl_type\fR is 0x8847 or 0x8848 (possibly via shorthand e.g.,
1064\fBmpls\fR or \fBmplsm\fR), matches the traffic-class of the outer
1065MPLS label stack entry. Valid values are between 0 (lowest) and 7 (highest).
1066.
8368c090 1067.IP \fBtun_id=\fItunnel-id\fR[\fB/\fImask\fR]
44a7e26d 1068.IQ \fBtunnel_id=\fItunnel-id\fR[\fB/\fImask\fR]
8368c090 1069Matches tunnel identifier \fItunnel-id\fR. Only packets that arrive
4c5df7f7 1070over a tunnel that carries a key (e.g. GRE with the RFC 2890 key
bcb90943
SH
1071extension and a nonzero key value) will have a nonzero tunnel ID.
1072If \fImask\fR is omitted, \fItunnel-id\fR is the exact tunnel ID to match;
1073if \fImask\fR is specified, then a 1-bit in \fImask\fR indicates that the
1074corresponding bit in \fItunnel-id\fR must match exactly, and a 0-bit
1075wildcards that bit.
71e17a7a 1076.
0ad90c84
JR
1077.IP \fBtun_src=\fIip\fR[\fB/\fInetmask\fR]
1078.IQ \fBtun_dst=\fIip\fR[\fB/\fInetmask\fR]
1079Matches tunnel IPv4 source (or destination) address \fIip\fR. Only packets
1080that arrive over a tunnel will have nonzero tunnel addresses.
1081The address may be specified as an IP address or host name
1082(e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR). The optional
1083\fInetmask\fR allows restricting a match to a masked IPv4 address.
1084The netmask may be specified as a dotted quad
1085(e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
1086(e.g. \fB192.168.1.0/24\fR).
1087.
00b1c62f
BP
1088.IP "\fBreg\fIidx\fB=\fIvalue\fR[\fB/\fImask\fR]"
1089Matches \fIvalue\fR either exactly or with optional \fImask\fR in
1090register number \fIidx\fR. The valid range of \fIidx\fR depends on
1091the switch. \fIvalue\fR and \fImask\fR are 32-bit integers, by
1092default in decimal (use a \fB0x\fR prefix to specify hexadecimal).
1093Arbitrary \fImask\fR values are allowed: a 1-bit in \fImask\fR
1094indicates that the corresponding bit in \fIvalue\fR must match
1095exactly, and a 0-bit wildcards that bit.
1096.IP
1097When a packet enters an OpenFlow switch, all of the registers are set
79fe0f46
BP
1098to 0. Only explicit actions change register values.
1099.
1100.IP "\fBxreg\fIidx\fB=\fIvalue\fR[\fB/\fImask\fR]"
1101Matches \fIvalue\fR either exactly or with optional \fImask\fR in
110264-bit ``extended register'' number \fIidx\fR. Each of the 64-bit
1103extended registers overlays two of the 32-bit registers: \fBxreg0\fR
1104overlays \fBreg0\fR and \fBreg1\fR, with \fBreg0\fR supplying the
1105most-significant bits of \fBxreg0\fR and \fBreg1\fR the
5e0464a0 1106least-significant. \fBxreg1\fR similarly overlays \fBreg2\fR and
79fe0f46
BP
1107\fBreg3\fR, and so on.
1108.IP
1109These fields were added in Open vSwitch 2.3 to conform with the
1110OpenFlow 1.5 (draft) specification. OpenFlow 1.5 calls these fields
1111just the ``packet registers,'' but Open vSwitch already had 32-bit
1112registers by that name, which is why Open vSwitch refers to the
1113standard registers as ``extended registers''.
a9b4a41a 1114.
ac923e91
JG
1115.IP \fBpkt_mark=\fIvalue\fR[\fB/\fImask\fR]
1116Matches packet metadata mark \fIvalue\fR either exactly or with optional
1117\fImask\fR. The mark is associated data that may be passed into other
1118system components in order to facilitate interaction between subsystems.
1119On Linux this corresponds to the skb mark but the exact implementation is
1120platform-dependent.
1121.
c61f3870
BP
1122.IP \fBactset_output=\fIport\fR
1123Matches the output port currently in the OpenFlow action set, where
1124\fIport\fR may be an OpenFlow port number or keyword
1125(e.g. \fBLOCAL\fR). If there is no output port in the OpenFlow action
1126set, or if the output port will be ignored (e.g. because there is an
1127output group in the OpenFlow action set), then the value will be
1128\fBUNSET\fR.
1129.IP
1130This field was introduced in Open vSwitch 2.4 to conform with the
1131OpenFlow 1.5 (draft) specification.
064af421 1132.PP
d31f1109
JP
1133Defining IPv6 flows (those with \fBdl_type\fR equal to 0x86dd) requires
1134support for NXM. The following shorthand notations are available for
1135IPv6-related flows:
a9b4a41a 1136.
d31f1109
JP
1137.IP \fBipv6\fR
1138Same as \fBdl_type=0x86dd\fR.
a9b4a41a 1139.
d31f1109
JP
1140.IP \fBtcp6\fR
1141Same as \fBdl_type=0x86dd,nw_proto=6\fR.
a9b4a41a 1142.
d31f1109
JP
1143.IP \fBudp6\fR
1144Same as \fBdl_type=0x86dd,nw_proto=17\fR.
a9b4a41a 1145.
0d56eaf2
JS
1146.IP \fBsctp6\fR
1147Same as \fBdl_type=0x86dd,nw_proto=132\fR.
1148.
d31f1109
JP
1149.IP \fBicmp6\fR
1150Same as \fBdl_type=0x86dd,nw_proto=58\fR.
a9b4a41a 1151.
064af421 1152.PP
2c6d8411
BP
1153Finally, field assignments to \fBduration\fR, \fBn_packets\fR, or
1154\fBn_bytes\fR are ignored to allow output from the \fBdump\-flows\fR
1155command to be used as input for other commands that parse flows.
1156.
1157.PP
c821124b
BP
1158The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1159require an additional field, which must be the final field specified:
a9b4a41a 1160.
d1ba66e9 1161.IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
064af421 1162Specifies a comma-separated list of actions to take on a packet when the
d1ba66e9
BP
1163flow entry matches. If no \fIaction\fR is specified, then packets
1164matching the flow are dropped. The following forms of \fIaction\fR
1165are supported:
a9b4a41a 1166.
064af421 1167.RS
d1ba66e9
BP
1168.IP \fIport\fR
1169.IQ \fBoutput:\fIport\fR
1170Outputs the packet to OpenFlow port number \fIport\fR. If \fIport\fR
1171is the packet's input port, the packet is not output.
c6100d92
BP
1172.
1173.IP \fBoutput:\fIsrc\fB[\fIstart\fB..\fIend\fB]
1174Outputs the packet to the OpenFlow port number read from \fIsrc\fR,
1175which must be an NXM field as described above. For example,
1176\fBoutput:NXM_NX_REG0[16..31]\fR outputs to the OpenFlow port number
d1ba66e9
BP
1177written in the upper half of register 0. If the port number is the
1178packet's input port, the packet is not output.
1179.IP
1180This form of \fBoutput\fR was added in Open vSwitch 1.3.0. This form
1181of \fBoutput\fR uses an OpenFlow extension that is not supported by
1182standard OpenFlow switches.
5682f723 1183.
b47e67c4
TG
1184.IP \fBgroup:\fIgroup_id\fR
1185Outputs the packet to the OpenFlow group \fIgroup_id\fR. Group tables
1186are only supported in OpenFlow 1.1+. See Group Syntax for more details.
1187.
064af421
BP
1188.IP \fBnormal\fR
1189Subjects the packet to the device's normal L2/L3 processing. (This
1190action is not implemented by all OpenFlow switches.)
a9b4a41a 1191.
064af421
BP
1192.IP \fBflood\fR
1193Outputs the packet on all switch physical ports other than the port on
1194which it was received and any ports on which flooding is disabled
1195(typically, these would be ports disabled by the IEEE 802.1D spanning
1196tree protocol).
a9b4a41a 1197.
064af421
BP
1198.IP \fBall\fR
1199Outputs the packet on all switch physical ports other than the port on
1200which it was received.
a9b4a41a 1201.
d1ba66e9
BP
1202.IP \fBlocal\fR
1203Outputs the packet on the ``local port,'' which corresponds to the
1204network device that has the same name as the bridge.
1205.
1206.IP \fBin_port\fR
1207Outputs the packet on the port from which it was received.
1208.
a7349929 1209.IP \fBcontroller(\fIkey\fB=\fIvalue\fR...\fB)
064af421 1210Sends the packet to the OpenFlow controller as a ``packet in''
a7349929
BP
1211message. The supported key-value pairs are:
1212.RS
1213.IP "\fBmax_len=\fInbytes\fR"
1214Limit to \fInbytes\fR the number of bytes of the packet to send to
1215the controller. By default the entire packet is sent.
1216.IP "\fBreason=\fIreason\fR"
1217Specify \fIreason\fR as the reason for sending the message in the
1218``packet in'' message. The supported reasons are \fBaction\fR (the
1219default), \fBno_match\fR, and \fBinvalid_ttl\fR.
1220.IP "\fBid=\fIcontroller-id\fR"
1221Specify \fIcontroller-id\fR, a 16-bit integer, as the connection ID of
1222the OpenFlow controller or controllers to which the ``packet in''
1223message should be sent. The default is zero. Zero is also the
1224default connection ID for each controller connection, and a given
1225controller connection will only have a nonzero connection ID if its
1226controller uses the \fBNXT_SET_CONTROLLER_ID\fR Nicira extension to
1227OpenFlow.
1228.RE
d1ba66e9 1229.IP
a7349929
BP
1230Any \fIreason\fR other than \fBaction\fR and any nonzero
1231\fIcontroller-id\fR uses a Nicira vendor extension that, as of this
1232writing, is only known to be implemented by Open vSwitch (version 1.6
1233or later).
1234.
1235.IP \fBcontroller\fR
1236.IQ \fBcontroller\fR[\fB:\fInbytes\fR]
1237Shorthand for \fBcontroller()\fR or
1238\fBcontroller(max_len=\fInbytes\fB)\fR, respectively.
a9b4a41a 1239.
d1ba66e9
BP
1240.IP \fBenqueue(\fIport\fB,\fIqueue\fB)\fR
1241Enqueues the packet on the specified \fIqueue\fR within port
1242\fIport\fR, which must be an OpenFlow port number or keyword
1243(e.g. \fBLOCAL\fR). The number of supported queues depends on the
1244switch; some OpenFlow implementations do not support queuing at all.
64c1e8af 1245.
064af421
BP
1246.IP \fBdrop\fR
1247Discards the packet, so no further processing or forwarding takes place.
1248If a drop action is used, no other actions may be specified.
a9b4a41a 1249.
064af421
BP
1250.IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
1251Modifies the VLAN id on a packet. The VLAN tag is added or modified
1252as necessary to match the value specified. If the VLAN tag is added,
1253a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
1254this).
a9b4a41a 1255.
064af421
BP
1256.IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
1257Modifies the VLAN priority on a packet. The VLAN tag is added or modified
1258as necessary to match the value specified. Valid values are between 0
1259(lowest) and 7 (highest). If the VLAN tag is added, a vid of zero is used
1260(see the \fBmod_vlan_vid\fR action to set this).
a9b4a41a 1261.
064af421
BP
1262.IP \fBstrip_vlan\fR
1263Strips the VLAN tag from a packet if it is present.
a9b4a41a 1264.
3e34fbdd
IY
1265.IP \fBpush_vlan\fR:\fIethertype\fR
1266Push a new VLAN tag onto the packet. Ethertype is used as the the Ethertype
1267for the tag. Only ethertype 0x8100 should be used. (0x88a8 which the spec
1268allows isn't supported at the moment.)
1269A priority of zero and the tag of zero are used for the new tag.
1270.
b02475c5 1271.IP \fBpush_mpls\fR:\fIethertype\fR
912c1938
SH
1272Changes the packet's Ethertype to \fIethertype\fR, which must be either
1273\fB0x8847\fR or \fB0x8848\fR, and pushes an MPLS LSE.
1274.IP
1275If the packet does not already contain any MPLS labels then an initial
1276label stack entry is pushed. The label stack entry's label is 2 if the
1277packet contains IPv6 and 0 otherwise, its default traffic control value is
1278the low 3 bits of the packet's DSCP value (0 if the packet is not IP), and
1279its TTL is copied from the IP TTL (64 if the packet is not IP).
b02475c5
SH
1280.IP
1281If the packet does already contain an MPLS label, pushes a new
1282outermost label as a copy of the existing outermost label.
1283.IP
b0a17866
SH
1284A limitation of the implementation is that processing of actions will stop
1285if \fBpush_mpls\fR follows another \fBpush_mpls\fR unless there is a
1286\fBpop_mpls\fR in between.
b02475c5
SH
1287.
1288.IP \fBpop_mpls\fR:\fIethertype\fR
799a91bb
SH
1289Strips the outermost MPLS label stack entry.
1290Currently the implementation restricts \fIethertype\fR to a non-MPLS Ethertype
1291and thus \fBpop_mpls\fR should only be applied to packets with
b0a17866
SH
1292an MPLS label stack depth of one. A further limitation is that processing of
1293actions will stop if \fBpop_mpls\fR follows another \fBpop_mpls\fR unless
1294there is a \fBpush_mpls\fR in between.
b02475c5 1295.
064af421
BP
1296.IP \fBmod_dl_src\fB:\fImac\fR
1297Sets the source Ethernet address to \fImac\fR.
a9b4a41a 1298.
064af421
BP
1299.IP \fBmod_dl_dst\fB:\fImac\fR
1300Sets the destination Ethernet address to \fImac\fR.
a9b4a41a 1301.
e423eca6
JP
1302.IP \fBmod_nw_src\fB:\fIip\fR
1303Sets the IPv4 source address to \fIip\fR.
a9b4a41a 1304.
e423eca6
JP
1305.IP \fBmod_nw_dst\fB:\fIip\fR
1306Sets the IPv4 destination address to \fIip\fR.
a9b4a41a 1307.
e423eca6 1308.IP \fBmod_tp_src\fB:\fIport\fR
0d56eaf2 1309Sets the TCP or UDP or SCTP source port to \fIport\fR.
a9b4a41a 1310.
e423eca6 1311.IP \fBmod_tp_dst\fB:\fIport\fR
0d56eaf2 1312Sets the TCP or UDP or SCTP destination port to \fIport\fR.
a9b4a41a 1313.
959a2ecd 1314.IP \fBmod_nw_tos\fB:\fItos\fR
04f01c24
BP
1315Sets the DSCP bits in the IPv4 ToS/DSCP or IPv6 traffic class field to
1316\fItos\fR, which must be a multiple of 4 between 0 and 255. This action
1317does not modify the two least significant bits of the ToS field (the ECN bits).
ff14eb7a
JR
1318.
1319.IP \fBmod_nw_ecn\fB:\fIecn\fR
1320Sets the ECN bits in the IPv4 ToS or IPv6 traffic class field to \fIecn\fR,
1321which must be a value between 0 and 3, inclusive. This action does not modify
1322the six most significant bits of the field (the DSCP bits).
1323.IP
1324Requires OpenFlow 1.1 or later.
0c20dbe4
JR
1325.
1326.IP \fBmod_nw_ttl\fB:\fIttl\fR
1327Sets the IPv4 TTL or IPv6 hop limit field to \fIttl\fR, which is specified as
1328a decimal number between 0 and 255, inclusive. Switch behavior when setting
1329\fIttl\fR to zero is not well specified, though.
1330.IP
1331Requires OpenFlow 1.1 or later.
659586ef
JG
1332.RE
1333.IP
1334The following actions are Nicira vendor extensions that, as of this writing, are
1335only known to be implemented by Open vSwitch:
1336.
1337.RS
1338.
3a2fe1f3 1339.IP \fBresubmit\fB:\fIport\fR
29901626
BP
1340.IQ \fBresubmit\fB(\fR[\fIport\fR]\fB,\fR[\fItable\fR]\fB)
1341Re-searches this OpenFlow flow table (or the table whose number is
1342specified by \fItable\fR) with the \fBin_port\fR field replaced by
1343\fIport\fR (if \fIport\fR is specified) and executes the actions
1344found, if any, in addition to any other actions in this flow entry.
1345.IP
1346Recursive \fBresubmit\fR actions are obeyed up to an
1347implementation-defined maximum depth. Open vSwitch 1.0.1 and earlier
1348did not support recursion; Open vSwitch before 1.2.90 did not support
1349\fItable\fR.
659586ef
JG
1350.
1351.IP \fBset_tunnel\fB:\fIid\fR
b9298d3f
BP
1352.IQ \fBset_tunnel64\fB:\fIid\fR
1353If outputting to a port that encapsulates the packet in a tunnel and
5a6861aa 1354supports an identifier (such as GRE), sets the identifier to \fIid\fR.
b9298d3f
BP
1355If the \fBset_tunnel\fR form is used and \fIid\fR fits in 32 bits,
1356then this uses an action extension that is supported by Open vSwitch
13571.0 and later. Otherwise, if \fIid\fR is a 64-bit value, it requires
1358Open vSwitch 1.1 or later.
3a2fe1f3 1359.
eedc0097
JP
1360.IP \fBset_queue\fB:\fIqueue\fR
1361Sets the queue that should be used to \fIqueue\fR when packets are
1362output. The number of supported queues depends on the switch; some
1363OpenFlow implementations do not support queuing at all.
1364.
1365.IP \fBpop_queue\fR
1366Restores the queue to the value it was before any \fBset_queue\fR
1367actions were applied.
1368.
f0fd1a17 1369.IP \fBdec_ttl\fR
c2d967a5 1370.IQ \fBdec_ttl\fB[\fR(\fIid1,id2\fI)\fR]\fR
f0fd1a17 1371Decrement TTL of IPv4 packet or hop limit of IPv6 packet. If the
972b5f38
JR
1372TTL or hop limit is initially zero or decrementing would make it so, no
1373decrement occurs, as packets reaching TTL zero must be rejected. Instead,
f0fd1a17
PS
1374a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR is
1375sent to each connected controller that has enabled receiving them,
c2d967a5
MM
1376if any. Processing the current set of actions then stops. However,
1377if the current set of actions was reached through ``resubmit'' then
1378remaining actions in outer levels resume processing. This action
1379also optionally supports the ability to specify a list of valid
1380controller ids. Each of controllers in the list will receive the
1381``packet_in'' message only if they have registered to receive the
1382invalid ttl packets. If controller ids are not specified, the
1383``packet_in'' message will be sent only to the controllers having
1384controller id zero which have registered for the invalid ttl packets.
f0fd1a17 1385.
afd5ac06
SH
1386.IP \fBset_mpls_label\fR:\fIlabel\fR
1387Set the label of the outer MPLS label stack entry of a packet.
1388\fIlabel\fR should be a 20-bit value that is decimal by default;
1389use a \fB0x\fR prefix to specify them in hexadecimal.
1390.
1391.IP \fBset_mpls_tc\fR:\fItc\fR
1392Set the traffic-class of the outer MPLS label stack entry of a packet.
1393\fItc\fR should be a in the range 0 to 7 inclusive.
1394.
0f3f3c3d
SH
1395.IP \fBset_mpls_ttl\fR:\fIttl\fR
1396Set the TTL of the outer MPLS label stack entry of a packet.
1397\fIttl\fR should be in the range 0 to 255 inclusive.
1398.
b676167a
SH
1399.IP \fBdec_mpls_ttl\fR
1400Decrement TTL of the outer MPLS label stack entry of a packet. If the TTL
972b5f38
JR
1401is initially zero or decrementing would make it so, no decrement occurs.
1402Instead, a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR
1403is sent to the main controller (id zero), if it has enabled receiving them.
b676167a
SH
1404Processing the current set of actions then stops. However, if the current
1405set of actions was reached through ``resubmit'' then remaining actions in
1406outer levels resume processing.
1407.
96fc46e8
BP
1408.IP \fBnote:\fR[\fIhh\fR]...
1409Does nothing at all. Any number of bytes represented as hex digits
1410\fIhh\fR may be included. Pairs of hex digits may be separated by
1411periods for readability.
e0631927
BP
1412The \fBnote\fR action's format doesn't include an exact length for its
1413payload, so the provided bytes will be padded on the right by enough
1414bytes with value 0 to make the total number 6 more than a multiple of
14158.
f393f81e 1416.
5a6861aa 1417.IP "\fBmove:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]\fR"
f393f81e
BP
1418Copies the named bits from field \fIsrc\fR to field \fIdst\fR.
1419\fIsrc\fR and \fIdst\fR must be NXM field names as defined in
1420\fBnicira\-ext.h\fR, e.g. \fBNXM_OF_UDP_SRC\fR or \fBNXM_NX_REG0\fR.
1421Each \fIstart\fR and \fIend\fR pair, which are inclusive, must specify
1422the same number of bits and must fit within its respective field.
1423Shorthands for \fB[\fIstart\fB..\fIend\fB]\fR exist: use
1424\fB[\fIbit\fB]\fR to specify a single bit or \fB[]\fR to specify an
1425entire field.
1426.IP
1427Examples: \fBmove:NXM_NX_REG0[0..5]\->NXM_NX_REG1[26..31]\fR copies the
1428six bits numbered 0 through 5, inclusive, in register 0 into bits 26
1429through 31, inclusive;
5a6861aa 1430\fBmove:NXM_NX_REG0[0..15]\->NXM_OF_VLAN_TCI[]\fR copies the least
f393f81e 1431significant 16 bits of register 0 into the VLAN TCI field.
1a12c419
BP
1432.IP
1433In OpenFlow 1.0 through 1.4, \fBmove\fR uses an Open vSwitch extension
1434to OpenFlow. In OpenFlow 1.5, \fBmove\fR uses the OpenFlow 1.5
1435(draft) standard \fBcopy_field\fR action.
f393f81e 1436.
7eb4b1f1
BP
1437.IP "\fBset_field:\fIvalue\fR[/\fImask\fR]\fB\->\fIdst"
1438.IQ "\fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]"
1439Loads a literal value into a field or part of a field. With
1440\fBset_field\fR, \fBvalue\fR and the optional \fBmask\fR are given in
1441the customary syntax for field \fIdst\fR, which is expressed as a
1442field name. For example, \fBset_field:00:11:22:33:44:55->eth_src\fR
1443sets the Ethernet source address to 00:11:22:33:44:55. With
1444\fBload\fR, \fIvalue\fR must be an integer value (in decimal or
1445prefixed by \fB0x\fR for hexadecimal) and \fIdst\fR is the NXM or OXM
1446name for the field. For example,
1447\fBload:0x001122334455->OXM_OF_ETH_DST[]\fR has the same effect as the
1448prior \fBset_field\fR example.
1449.IP
1450The two forms exist for historical reasons. Open vSwitch 1.1
1451introduced \fBNXAST_REG_LOAD\fR as a Nicira extension to OpenFlow 1.0
1452and used \fBload\fR to express it. Later, OpenFlow 1.2 introduced a
1453standard \fBOFPAT_SET_FIELD\fR action that was restricted to loading
1454entire fields, so Open vSwitch added the form \fBset_field\fR with
1455this restriction. OpenFlow 1.5 extended \fBOFPAT_SET_FIELD\fR to the
1456point that it became a superset of \fBNXAST_REG_LOAD\fR. Open vSwitch
1457translates either syntax as necessary for the OpenFlow version in use:
1458in OpenFlow 1.0 and 1.1, \fBNXAST_REG_LOAD\fR; in OpenFlow 1.2, 1.3,
1459and 1.4, \fBNXAST_REG_LOAD\fR for \fBload\fR or for loading a
1460subfield, \fBOFPAT_SET_FIELD\fR otherwise; and OpenFlow 1.5 and later,
1461\fBOFPAT_SET_FIELD\fR.
53ddd40a 1462.
bd85dac1
AZ
1463.IP "\fBpush:\fIsrc\fB[\fIstart\fB..\fIend\fB]"
1464Pushes \fIstart\fR to \fIend\fR bits inclusive, in fields
1465on top of the stack.
1466.IP
1467Example: \fBpush:NXM_NX_REG2[0..5]\fR push the value stored in register
14682 bits 0 through 5, inclusive, on to the internal stack.
1469.
1470.IP "\fBpop:\fIdst\fB[\fIstart\fB..\fIend\fB]"
1471Pops from the top of the stack, retrieves the \fIstart\fR to \fIend\fR bits
1472inclusive, from the value popped and store them into the corresponding
1473bits in \fIdst\fR.
1474.
1475.IP
1476Example: \fBpop:NXM_NX_REG2[0..5]\fR pops the value from top of the stack.
1477Set register 2 bits 0 through 5, inclusive, based on bits 0 through 5 from the
1478value just popped.
1479.
f5c45121 1480.
53ddd40a
BP
1481.IP "\fBmultipath(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIn_links\fB, \fIarg\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
1482Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter,
1483then the applies multipath link selection \fIalgorithm\fR (with
1484parameter \fIarg\fR) to choose one of \fIn_links\fR output links
1485numbered 0 through \fIn_links\fR minus 1, and stores the link into
43edca57 1486\fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as
53ddd40a
BP
1487described above.
1488.IP
1489Currently, \fIfields\fR must be either \fBeth_src\fR or
1490\fBsymmetric_l4\fR and \fIalgorithm\fR must be one of \fBmodulo_n\fR,
1491\fBhash_threshold\fR, \fBhrw\fR, and \fBiter_hash\fR. Only
1492the \fBiter_hash\fR algorithm uses \fIarg\fR.
1493.IP
1494Refer to \fBnicira\-ext.h\fR for more details.
3b6a2571 1495.
daff3353
EJ
1496.IP "\fBbundle(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1497Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter, then
1498applies the bundle link selection \fIalgorithm\fR to choose one of the listed
1499slaves represented as \fIslave_type\fR. Currently the only supported
1500\fIslave_type\fR is \fBofport\fR. Thus, each \fIs1\fR through \fIsN\fR should
1501be an OpenFlow port number. Outputs to the selected slave.
1502.IP
1503Currently, \fIfields\fR must be either \fBeth_src\fR or \fBsymmetric_l4\fR and
1504\fIalgorithm\fR must be one of \fBhrw\fR and \fBactive_backup\fR.
1505.IP
1506Example: \fBbundle(eth_src,0,hrw,ofport,slaves:4,8)\fR uses an Ethernet source
1507hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest
1508Random Weight algorithm.
1509.IP
1510Refer to \fBnicira\-ext.h\fR for more details.
a368bb53
EJ
1511.
1512.IP "\fBbundle_load(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, \fIdst\fB[\fIstart\fB..\fIend\fB], slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1513Has the same behavior as the \fBbundle\fR action, with one exception. Instead
1514of outputting to the selected slave, it writes its selection to
1515\fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as described
1516above.
1517.IP
2638c6dc
BP
1518Example: \fBbundle_load(eth_src, 0, hrw, ofport, NXM_NX_REG0[],
1519slaves:4, 8)\fR uses an Ethernet source hash with basis 0, to select
1520between OpenFlow ports 4 and 8 using the Highest Random Weight
1521algorithm, and writes the selection to \fBNXM_NX_REG0[]\fR.
a368bb53
EJ
1522.IP
1523Refer to \fBnicira\-ext.h\fR for more details.
75a75043
BP
1524.
1525.IP "\fBlearn(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1526This action adds or modifies a flow in an OpenFlow table, similar to
1527\fBovs\-ofctl \-\-strict mod\-flows\fR. The arguments specify the
1528flow's match fields, actions, and other properties, as follows. At
1529least one match criterion and one action argument should ordinarily be
1530specified.
1531.RS
1532.IP \fBidle_timeout=\fIseconds\fR
1533.IQ \fBhard_timeout=\fIseconds\fR
1534.IQ \fBpriority=\fIvalue\fR
45d77538 1535.IQ \fBcookie=\fIvalue\fR
3d6832c2
BP
1536.IQ \fBsend_flow_rem\fR
1537These arguments have the same meaning as in the usual \fBovs\-ofctl\fR
1538flow syntax.
75a75043 1539.
0e553d9c
BP
1540.IP \fBfin_idle_timeout=\fIseconds\fR
1541.IQ \fBfin_hard_timeout=\fIseconds\fR
1542Adds a \fBfin_timeout\fR action with the specified arguments to the
1543new flow. This feature was added in Open vSwitch 1.5.90.
1544.
75a75043
BP
1545.IP \fBtable=\fInumber\fR
1546The table in which the new flow should be inserted. Specify a decimal
1547number between 0 and 254. The default, if \fBtable\fR is unspecified,
1548is table 1.
1549.
35f48b8b
BP
1550.IP \fBdelete_learned\fR
1551This flag enables deletion of the learned flows when the flow with the
1552\fBlearn\fR action is removed. Specifically, when the last
1553\fBlearn\fR action with this flag and particular \fBtable\fR and
1554\fBcookie\fR values is removed, the switch deletes all of the flows in
1555the specified table with the specified cookie.
1556.
1557.IP
1558This flag was added in Open vSwitch 2.4.
1559.
75a75043
BP
1560.IP \fIfield\fB=\fIvalue\fR
1561.IQ \fIfield\fB[\fIstart\fB..\fIend\fB]=\fIsrc\fB[\fIstart\fB..\fIend\fB]\fR
1562.IQ \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1563Adds a match criterion to the new flow.
1564.IP
1565The first form specifies that \fIfield\fR must match the literal
1566\fIvalue\fR, e.g. \fBdl_type=0x0800\fR. All of the fields and values
1567for \fBovs\-ofctl\fR flow syntax are available with their usual
1568meanings.
1569.IP
1570The second form specifies that \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1571in the new flow must match \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR taken
1572from the flow currently being processed.
1573.IP
1574The third form is a shorthand for the second form. It specifies that
1575\fIfield\fB[\fIstart\fB..\fIend\fB]\fR in the new flow must match
1576\fIfield\fB[\fIstart\fB..\fIend\fB]\fR taken from the flow currently
1577being processed.
1578.
1579.IP \fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1580.IQ \fBload:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1581.
1582Adds a \fBload\fR action to the new flow.
1583.IP
1584The first form loads the literal \fIvalue\fR into bits \fIstart\fR
1585through \fIend\fR, inclusive, in field \fIdst\fR. Its syntax is the
1586same as the \fBload\fR action described earlier in this section.
1587.IP
1588The second form loads \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR, a value
1589from the flow currently being processed, into bits \fIstart\fR
1590through \fIend\fR, inclusive, in field \fIdst\fR.
1591.
1592.IP \fBoutput:\fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1593Add an \fBoutput\fR action to the new flow's actions, that outputs to
1594the OpenFlow port taken from \fIfield\fB[\fIstart\fB..\fIend\fB]\fR,
1595which must be an NXM field as described above.
1596.RE
1597.IP
1598For best performance, segregate learned flows into a table (using
1599\fBtable=\fInumber\fR) that is not used for any other flows except
1600possibly for a lowest-priority ``catch-all'' flow, that is, a flow
1601with no match criteria. (This is why the default \fBtable\fR is 1, to
1602keep the learned flows separate from the primary flow table 0.)
c4f5d00b 1603.RE
a9b4a41a 1604.
8dd54666 1605.RS
8dd54666 1606.
b19e8793
IY
1607.IP \fBclear_actions\fR
1608Clears all the actions in the action set immediately.
1609.
7fdb60a7
SH
1610.IP \fBwrite_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1611Add the specific actions to the action set. The syntax of
1612\fIactions\fR is the same as in the \fBactions=\fR field. The action
1613set is carried between flow tables and then executed at the end of the
1614pipeline.
1615.
1616.IP
1617The actions in the action set are applied in the following order, as
1618required by the OpenFlow specification, regardless of the order in
1619which they were added to the action set. Except as specified
1620otherwise below, the action set only holds at most a single action of
1621each type. When more than one action of a single type is written to
1622the action set, the one written later replaces the earlier action:
1623.
1624.RS
1625.IP 1.
1626\fBstrip_vlan\fR
1627.IQ
1628\fBpop_mpls\fR
1629.
1630.IP 2.
1631\fBpush_mpls\fR
1632.
1633.IP 3.
1634\fBpush_vlan\fR
1635.
1636.IP 4.
1637\fBdec_ttl\fR
1638.IQ
1639\fBdec_mpls_ttl\fR
1640.
1641.IP 5.
1642\fBload\fR
1643.IQ
1b0ee636
TG
1644\fBmove\fR
1645.IQ
7fdb60a7
SH
1646\fBmod_dl_dst\fR
1647.IQ
1648\fBmod_dl_src\fR
1649.IQ
1650\fBmod_nw_dst\fR
1651.IQ
1652\fBmod_nw_src\fR
1653.IQ
1654\fBmod_nw_tos\fR
1655.IQ
ff14eb7a
JR
1656\fBmod_nw_ecn\fR
1657.IQ
0c20dbe4
JR
1658\fBmod_nw_ttl\fR
1659.IQ
7fdb60a7
SH
1660\fBmod_tp_dst\fR
1661.IQ
1662\fBmod_tp_src\fR
1663.IQ
1664\fBmod_vlan_pcp\fR
1665.IQ
1666\fBmod_vlan_vid\fR
1667.IQ
1668\fBset_field\fR
1669.IQ
1670\fBset_tunnel\fR
1671.IQ
1672\fBset_tunnel64\fR
1673.IQ
1674The action set can contain any number of these actions, with
1b0ee636
TG
1675cumulative effect. They will be applied in the order as added.
1676That is, when multiple actions modify the same part of a field,
1677the later modification takes effect, and when they modify
1678different parts of a field (or different fields), then both
7fdb60a7
SH
1679modifications are applied.
1680.
1681.IP 6.
1682\fBset_queue\fR
1683.
1684.IP 7.
1685\fBgroup\fR
1686.IQ
1687\fBoutput\fR
1688.IQ
2e34a6a3
SS
1689\fBresubmit\fR
1690.IQ
1691If more than one of these actions is present, then the one listed
1692earliest above is executed and the others are ignored, regardless of
1693the order in which they were added to the action set. (If none of these
1694actions is present, the action set has no real effect, because the
1695modified packet is not sent anywhere and thus the modifications are
1696not visible.)
7fdb60a7
SH
1697.RE
1698.IP
1699Only the actions listed above may be written to the action set.
1700.
4cceacb9
JS
1701.IP \fBwrite_metadata\fB:\fIvalue\fR[/\fImask\fR]
1702Updates the metadata field for the flow. If \fImask\fR is omitted, the
1703metadata field is set exactly to \fIvalue\fR; if \fImask\fR is specified, then
1704a 1-bit in \fImask\fR indicates that the corresponding bit in the metadata
1705field will be replaced with the corresponding bit from \fIvalue\fR. Both
1706\fIvalue\fR and \fImask\fR are 64-bit values that are decimal by default; use
1707a \fB0x\fR prefix to specify them in hexadecimal.
1708.
3200ed58
JR
1709.IP \fBmeter\fR:\fImeter_id\fR
1710Apply the \fImeter_id\fR before any other actions. If a meter band rate is
1711exceeded, the packet may be dropped, or modified, depending on the meter
1712band type. See the description of the \fBMeter Table Commands\fR, above,
1713for more details.
1714.
8dd54666
IY
1715.IP \fBgoto_table\fR:\fItable\fR
1716Indicates the next table in the process pipeline.
8dd54666 1717.
0e553d9c
BP
1718.IP "\fBfin_timeout(\fIargument\fR[\fB,\fIargument\fR]\fB)"
1719This action changes the idle timeout or hard timeout, or both, of this
1720OpenFlow rule when the rule matches a TCP packet with the FIN or RST
1721flag. When such a packet is observed, the action reduces the rule's
1722timeouts to those specified on the action. If the rule's existing
1723timeout is already shorter than the one that the action specifies,
1724then that timeout is unaffected.
1725.IP
1726\fIargument\fR takes the following forms:
1727.RS
1728.IP "\fBidle_timeout=\fIseconds\fR"
1729Causes the flow to expire after the given number of seconds of
1730inactivity.
1731.
1732.IP "\fBhard_timeout=\fIseconds\fR"
1733Causes the flow to expire after the given number of seconds,
1734regardless of activity. (\fIseconds\fR specifies time since the
1735flow's creation, not since the receipt of the FIN or RST.)
1736.RE
1737.IP
1738This action was added in Open vSwitch 1.5.90.
29089a54
RL
1739.
1740.IP "\fBsample(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1741Samples packets and sends one sample for every sampled packet.
1742.IP
1743\fIargument\fR takes the following forms:
1744.RS
1745.IP "\fBprobability=\fIpackets\fR"
1746The number of sampled packets out of 65535. Must be greater or equal to 1.
1747.IP "\fBcollector_set_id=\fIid\fR"
1748The unsigned 32-bit integer identifier of the set of sample collectors
1749to send sampled packets to. Defaults to 0.
1750.IP "\fBobs_domain_id=\fIid\fR"
1751When sending samples to IPFIX collectors, the unsigned 32-bit integer
1752Observation Domain ID sent in every IPFIX flow record. Defaults to 0.
1753.IP "\fBobs_point_id=\fIid\fR"
1754When sending samples to IPFIX collectors, the unsigned 32-bit integer
1755Observation Point ID sent in every IPFIX flow record. Defaults to 0.
1756.RE
1757.IP
1758Refer to \fBovs\-vswitchd.conf.db\fR(8) for more details on
1759configuring sample collector sets.
1760.IP
1761This action was added in Open vSwitch 1.10.90.
1762.
848e8809 1763.IP "\fBexit\fR"
7fdb60a7
SH
1764This action causes Open vSwitch to immediately halt execution of
1765further actions. Those actions which have already been executed are
1766unaffected. Any further actions, including those which may be in
1767other tables, or different levels of the \fBresubmit\fR call stack,
1768are ignored. Actions in the action set is still executed (specify
1769\fBclear_actions\fR before \fBexit\fR to discard them).
24362cd6 1770.RE
848e8809 1771.
064af421 1772.PP
e729e793
JP
1773An opaque identifier called a cookie can be used as a handle to identify
1774a set of flows:
1775.
623e1caf
JP
1776.IP \fBcookie=\fIvalue\fR
1777.
1778A cookie can be associated with a flow using the \fBadd\-flow\fR,
1779\fBadd\-flows\fR, and \fBmod\-flows\fR commands. \fIvalue\fR can be any
178064-bit number and need not be unique among flows. If this field is
1781omitted, a default cookie value of 0 is used.
1782.
1783.IP \fBcookie=\fIvalue\fR\fB/\fImask\fR
e729e793 1784.
e729e793 1785When using NXM, the cookie can be used as a handle for querying,
623e1caf
JP
1786modifying, and deleting flows. \fIvalue\fR and \fImask\fR may be
1787supplied for the \fBdel\-flows\fR, \fBmod\-flows\fR, \fBdump\-flows\fR, and
1788\fBdump\-aggregate\fR commands to limit matching cookies. A 1-bit in
1789\fImask\fR indicates that the corresponding bit in \fIcookie\fR must
1790match exactly, and a 0-bit wildcards that bit. A mask of \-1 may be used
1791to exactly match a cookie.
1792.IP
1793The \fBmod\-flows\fR command can update the cookies of flows that
1794match a cookie by specifying the \fIcookie\fR field twice (once with a
1795mask for matching and once without to indicate the new value):
1796.RS
1797.IP "\fBovs\-ofctl mod\-flows br0 cookie=1,actions=normal\fR"
1798Change all flows' cookies to 1 and change their actions to \fBnormal\fR.
1799.IP "\fBovs\-ofctl mod\-flows br0 cookie=1/\-1,cookie=2,actions=normal\fR"
1800Update cookies with a value of 1 to 2 and change their actions to
1801\fBnormal\fR.
1802.RE
1803.IP
1804The ability to match on cookies was added in Open vSwitch 1.5.0.
8cce2125
JP
1805.
1806.PP
4b6b46ce
BP
1807The following additional field sets the priority for flows added by
1808the \fBadd\-flow\fR and \fBadd\-flows\fR commands. For
1809\fBmod\-flows\fR and \fBdel\-flows\fR when \fB\-\-strict\fR is
1810specified, priority must match along with the rest of the flow
623e1caf 1811specification. For \fBmod-flows\fR without \fB\-\-strict\fR,
fdb3539e
BP
1812priority is only significant if the command creates a new flow, that
1813is, non-strict \fBmod\-flows\fR does not match on priority and will
1814not change the priority of existing flows. Other commands do not
1815allow priority to be specified.
a9b4a41a 1816.
064af421
BP
1817.IP \fBpriority=\fIvalue\fR
1818The priority at which a wildcarded entry will match in comparison to
1819others. \fIvalue\fR is a number between 0 and 65535, inclusive. A higher
1820\fIvalue\fR will match before a lower one. An exact-match entry will always
1821have priority over an entry containing wildcards, so it has an implicit
1822priority value of 65535. When adding a flow, if the field is not specified,
1823the flow's priority will default to 32768.
4530afba
BP
1824.IP
1825OpenFlow leaves behavior undefined when two or more flows with the
1826same priority can match a single packet. Some users expect
1827``sensible'' behavior, such as more specific flows taking precedence
1828over less specific flows, but OpenFlow does not specify this and Open
1829vSwitch does not implement it. Users should therefore take care to
1830use priorities to ensure the behavior that they expect.
a9b4a41a 1831.
064af421 1832.PP
fdb3539e
BP
1833The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1834support the following additional options. These options affect only
1835new flows. Thus, for \fBadd\-flow\fR and \fBadd\-flows\fR, these
1836options are always significant, but for \fBmod\-flows\fR they are
1837significant only if the command creates a new flow, that is, their
a993007b 1838values do not update or affect existing flows.
a9b4a41a 1839.
fdb3539e 1840.IP "\fBidle_timeout=\fIseconds\fR"
064af421 1841Causes the flow to expire after the given number of seconds of
fdb3539e
BP
1842inactivity. A value of 0 (the default) prevents a flow from expiring
1843due to inactivity.
a9b4a41a 1844.
064af421
BP
1845.IP \fBhard_timeout=\fIseconds\fR
1846Causes the flow to expire after the given number of seconds,
1847regardless of activity. A value of 0 (the default) gives the flow no
1848hard expiration deadline.
a9b4a41a 1849.
a993007b
BP
1850.IP "\fBsend_flow_rem\fR"
1851Marks the flow with a flag that causes the switch to generate a ``flow
1852removed'' message and send it to interested controllers when the flow
1853later expires or is removed.
1854.
1855.IP "\fBcheck_overlap\fR"
1856Forces the switch to check that the flow match does not overlap that
1857of any different flow with the same priority in the same table. (This
1858check is expensive so it is best to avoid it.)
1859.
064af421 1860.PP
4e312e69
BP
1861The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR
1862and \fBdel\-flows\fR commands support one additional optional field:
a9b4a41a 1863.
064af421
BP
1864.TP
1865\fBout_port=\fIport\fR
c6100d92 1866If set, a matching flow must include an output action to \fIport\fR,
60a0b9e5 1867which must be an OpenFlow port number or name (e.g. \fBlocal\fR).
a9b4a41a 1868.
064af421 1869.SS "Table Entry Output"
a9b4a41a 1870.
4e312e69 1871The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information
064af421 1872about the entries in a datapath's tables. Each line of output is a
f27f2134
BP
1873flow entry as described in \fBFlow Syntax\fR, above, plus some
1874additional fields:
a9b4a41a 1875.
f27f2134
BP
1876.IP \fBduration=\fIsecs\fR
1877The time, in seconds, that the entry has been in the table.
1878\fIsecs\fR includes as much precision as the switch provides, possibly
1879to nanosecond resolution.
a9b4a41a 1880.
064af421
BP
1881.IP \fBn_packets\fR
1882The number of packets that have matched the entry.
a9b4a41a 1883.
064af421
BP
1884.IP \fBn_bytes\fR
1885The total number of bytes from packets that have matched the entry.
a9b4a41a 1886.
064af421 1887.PP
f27f2134
BP
1888The following additional fields are included only if the switch is
1889Open vSwitch 1.6 or later and the NXM flow format is used to dump the
1890flow (see the description of the \fB\-\-flow-format\fR option below).
1891The values of these additional fields are approximations only and in
1892particular \fBidle_age\fR will sometimes become nonzero even for busy
1893flows.
1894.
1895.IP \fBhard_age=\fIsecs\fR
1896The integer number of seconds since the flow was added or modified.
1897\fBhard_age\fR is displayed only if it differs from the integer part
1898of \fBduration\fR. (This is separate from \fBduration\fR because
1899\fBmod\-flows\fR restarts the \fBhard_timeout\fR timer without zeroing
1900\fBduration\fR.)
1901.
1902.IP \fBidle_age=\fIsecs\fR
1903The integer number of seconds that have passed without any packets
1904passing through the flow.
a9b4a41a 1905.
7395c052
NZ
1906.SS "Group Syntax"
1907.PP
1908Some \fBovs\-ofctl\fR commands accept an argument that describes a group or
1909groups. Such flow descriptions comprise a series
1910\fIfield\fB=\fIvalue\fR assignments, separated by commas or white
1911space. (Embedding spaces into a group description normally requires
1912quoting to prevent the shell from breaking the description into
1913multiple arguments.). Unless noted otherwise only the last instance
1914of each field is honoured.
1915.PP
1916.IP \fBgroup_id=\fIid\fR
1917The integer group id of group.
19187a71 1918When this field is specified in \fBdel\-groups\fR or \fBdump\-groups\fR,
7395c052
NZ
1919the keyword "all" may be used to designate all groups.
1920.
1921This field is required.
1922
1923
1924.IP \fBtype=\fItype\fR
1925The type of the group. This \fBadd-group\fR, \fBadd-groups\fR and
1926\fBdel-groups\fR command require this field. The following keywords
1927designated the allowed types:
1928.RS
1929.IP \fBall\fR
1930Execute all buckets in the group.
1931.IP \fBselect\fR
1932Execute one bucket in the group.
1933The switch should select the bucket in such a way that should implement
1934equal load sharing is achieved. The switch may optionally select the
1935bucket based on bucket weights.
1936.IP \fBindirect\fR
1937Executes the one bucket in the group.
1938.IP \fBff\fR
1939.IQ \fBfast_failover\fR
1940Executes the first live bucket in the group which is associated with
1941a live port or group.
1942.RE
1943
1944.IP \fBbucket\fR=\fIbucket_parameters\fR
1945The \fBadd-group\fR, \fBadd-groups\fR and \fBmod-group\fR commands
1946require at least one bucket field. Bucket fields must appear after
1947all other fields.
1948.
1949Multiple bucket fields to specify multiple buckets.
1950The order in which buckets are specified corresponds to their order in
1951the group. If the type of the group is "indirect" then only one group may
1952be specified.
1953.
1954\fIbucket_parameters\fR consists of a list of \fIfield\fB=\fIvalue\fR
1955assignments, separated by commas or white space followed by a
1956comma-separated list of actions.
7395c052
NZ
1957The fields for \fIbucket_parameters\fR are:
1958.
1959.RS
f1457c26
TG
1960.IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
1961The syntax of actions are identical to the \fBactions=\fR field described in
1962\fBFlow Syntax\fR above. Specyfing \fBactions=\fR is optional, any unknown
1963bucket parameter will be interpreted as an action.
7395c052
NZ
1964.IP \fBweight=\fIvalue\fR
1965The relative weight of the bucket as an integer. This may be used by the switch
1966during bucket select for groups whose \fBtype\fR is \fBselect\fR.
1967.IP \fBwatch_port=\fIport\fR
1968Port used to determine liveness of group.
1969This or the \fBwatch_group\fR field is required
1970for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1971.IP \fBwatch_group=\fIgroup_id\fR
1972Group identifier of group used to determine liveness of group.
1973This or the \fBwatch_port\fR field is required
1974for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
1975.RE
1976.
3200ed58
JR
1977.SS "Meter Syntax"
1978.PP
1979The meter table commands accept an argument that describes a meter.
1980Such meter descriptions comprise a series \fIfield\fB=\fIvalue\fR
1981assignments, separated by commas or white space.
1982(Embedding spaces into a group description normally requires
1983quoting to prevent the shell from breaking the description into
1984multiple arguments.). Unless noted otherwise only the last instance
1985of each field is honoured.
1986.PP
1987.IP \fBmeter=\fIid\fR
1988The integer meter id of the meter.
1989When this field is specified in \fBdel-meter\fR, \fBdump-meter\fR, or
1990\fBmeter-stats\fR, the keyword "all" may be used to designate all meters.
1991.
1992This field is required, exept for \fBmeter-stats\fR, which dumps all stats
1993when this field is not specified.
1994
1995.IP \fBkbps\fR
1996.IQ \fBpktps\fR
1997The unit for the meter band rate parameters, either kilobits per second, or
1998packets per second, respectively. One of these must be specified. The burst
1999size unit corresponds to the rate unit by dropping the "per second", i.e.,
2000burst is in units of kilobits or packets, respectively.
2001
2002.IP \fBburst\fR
2003Specify burst size for all bands, or none of them, if this flag is not given.
2004
2005.IP \fBstats\fR
2006Collect meter and band statistics.
2007
2008.IP \fBbands\fR=\fIband_parameters\fR
2009The \fBadd-meter\fR and \fBmod-meter\fR commands require at least one
2010band specification. Bands must appear after all other fields.
2011.RS
2012.IP \fBtype=\fItype\fR
2013The type of the meter band. This keyword starts a new band specification.
2014Each band specifies a rate above which the band is to take some action. The
2015action depends on the band type. If multiple bands' rate is exceeded, then
2016the band with the highest rate among the exceeded bands is selected.
2017The following keywords designate the allowed
2018meter band types:
2019.RS
2020.IP \fBdrop\fR
2021Drop packets exceeding the band's rate limit.
2022.RE
2023.
2024.IP "The other \fIband_parameters\fR are:"
2025.IP \fBrate=\fIvalue\fR
2026The relative rate limit for this band, in kilobits per second or packets per
2027second, depending on the meter flags defined above.
2028.IP \fBburst_size=\fIport\fR
2029The maximum burst allowed for the band. If unspecified, the switch is free to
2030select some reasonable value depending on it's configuration.
2031.RE
2032.
064af421
BP
2033.SH OPTIONS
2034.TP
4e312e69 2035\fB\-\-strict\fR
064af421 2036Uses strict matching when running flow modification commands.
a9b4a41a 2037.
a53a8efa
SH
2038.so lib/ofp-version.man
2039.
27527aa0
BP
2040.IP "\fB\-F \fIformat\fR[\fB,\fIformat\fR...]"
2041.IQ "\fB\-\-flow\-format=\fIformat\fR[\fB,\fIformat\fR...]"
2042\fBovs\-ofctl\fR supports the following individual flow formats, any
2043number of which may be listed as \fIformat\fR:
88ca35ee 2044.RS
27527aa0
BP
2045.IP "\fBOpenFlow10\-table_id\fR"
2046This is the standard OpenFlow 1.0 flow format. All OpenFlow switches
2047and all versions of Open vSwitch support this flow format.
88ca35ee 2048.
27527aa0
BP
2049.IP "\fBOpenFlow10+table_id\fR"
2050This is the standard OpenFlow 1.0 flow format plus a Nicira extension
2051that allows \fBovs\-ofctl\fR to specify the flow table in which a
2052particular flow should be placed. Open vSwitch 1.2 and later supports
2053this flow format.
2054.
2055.IP "\fBNXM\-table_id\fR (Nicira Extended Match)"
88ca35ee
BP
2056This Nicira extension to OpenFlow is flexible and extensible. It
2057supports all of the Nicira flow extensions, such as \fBtun_id\fR and
27527aa0
BP
2058registers. Open vSwitch 1.1 and later supports this flow format.
2059.
2060.IP "\fBNXM+table_id\fR (Nicira Extended Match)"
2061This combines Nicira Extended match with the ability to place a flow
2062in a specific table. Open vSwitch 1.2 and later supports this flow
2063format.
e71bff1b
BP
2064.
2065.IP "\fBOXM-OpenFlow12\fR"
2066.IQ "\fBOXM-OpenFlow13\fR"
aa233d57 2067.IQ "\fBOXM-OpenFlow14\fR"
e71bff1b 2068These are the standard OXM (OpenFlow Extensible Match) flow format in
aa233d57 2069OpenFlow 1.2, 1.3, and 1.4, respectively.
88ca35ee 2070.RE
27527aa0 2071.
88ca35ee 2072.IP
27527aa0
BP
2073\fBovs\-ofctl\fR also supports the following abbreviations for
2074collections of flow formats:
2075.RS
2076.IP "\fBany\fR"
aa233d57 2077Any supported flow format.
27527aa0
BP
2078.IP "\fBOpenFlow10\fR"
2079\fBOpenFlow10\-table_id\fR or \fBOpenFlow10+table_id\fR.
2080.IP "\fBNXM\fR"
2081\fBNXM\-table_id\fR or \fBNXM+table_id\fR.
e71bff1b 2082.IP "\fBOXM\fR"
aa233d57 2083\fBOXM-OpenFlow12\fR, \fBOXM-OpenFlow13\fR, or \fBOXM-OpenFlow14\fR.
27527aa0 2084.RE
4f564f8d 2085.
27527aa0
BP
2086.IP
2087For commands that modify the flow table, \fBovs\-ofctl\fR by default
2088negotiates the most widely supported flow format that supports the
2089flows being added. For commands that query the flow table,
2090\fBovs\-ofctl\fR by default uses the most advanced format supported by
2091the switch.
2092.IP
2093This option, where \fIformat\fR is a comma-separated list of one or
2094more of the formats listed above, limits \fBovs\-ofctl\fR's choice of
2095flow format. If a command cannot work as requested using one of the
2096specified flow formats, \fBovs\-ofctl\fR will report a fatal error.
54834960
EJ
2097.
2098.IP "\fB\-P \fIformat\fR"
2099.IQ "\fB\-\-packet\-in\-format=\fIformat\fR"
2100\fBovs\-ofctl\fR supports the following packet_in formats, in order of
2101increasing capability:
2102.RS
2103.IP "\fBopenflow10\fR"
2104This is the standard OpenFlow 1.0 packet in format. It should be supported by
2105all OpenFlow switches.
2106.
2107.IP "\fBnxm\fR (Nicira Extended Match)"
2108This packet_in format includes flow metadata encoded using the NXM format.
2109.
2110.RE
2111.IP
2112Usually, \fBovs\-ofctl\fR prefers the \fBnxm\fR packet_in format, but will
2113allow the switch to choose its default if \fBnxm\fR is unsupported. When
2114\fIformat\fR is one of the formats listed in the above table, \fBovs\-ofctl\fR
2115will insist on the selected format. If the switch does not support the
2116requested format, \fBovs\-ofctl\fR will report a fatal error. This option only
ca8526e0 2117affects the \fBmonitor\fR command.
54834960 2118.
0c9560b7
BP
2119.IP "\fB\-\-timestamp\fR"
2120Print a timestamp before each received packet. This option only
f3dd1419
BP
2121affects the \fBmonitor\fR, \fBsnoop\fR, and \fBofp\-parse\-pcap\fR
2122commands.
0c9560b7 2123.
4f564f8d
BP
2124.IP "\fB\-m\fR"
2125.IQ "\fB\-\-more\fR"
2126Increases the verbosity of OpenFlow messages printed and logged by
2127\fBovs\-ofctl\fR commands. Specify this option more than once to
2128increase verbosity further.
1eb85ef5 2129.
bdcc5925
BP
2130.IP \fB\-\-sort\fR[\fB=\fIfield\fR]
2131.IQ \fB\-\-rsort\fR[\fB=\fIfield\fR]
2132Display output sorted by flow \fIfield\fR in ascending
2133(\fB\-\-sort\fR) or descending (\fB\-\-rsort\fR) order, where
2134\fIfield\fR is any of the fields that are allowed for matching or
2135\fBpriority\fR to sort by priority. When \fIfield\fR is omitted, the
2136output is sorted by priority. Specify these options multiple times to
2137sort by multiple fields.
2138.IP
2139Any given flow will not necessarily specify a value for a given
2140field. This requires special treatement:
2141.RS
2142.IP \(bu
2143A flow that does not specify any part of a field that is used for sorting is
2144sorted after all the flows that do specify the field. For example,
2145\fB\-\-sort=tcp_src\fR will sort all the flows that specify a TCP
2146source port in ascending order, followed by the flows that do not
0d56eaf2 2147specify a TCP source port at all.
bdcc5925
BP
2148.IP \(bu
2149A flow that only specifies some bits in a field is sorted as if the
2150wildcarded bits were zero. For example, \fB\-\-sort=nw_src\fR would
2151sort a flow that specifies \fBnw_src=192.168.0.0/24\fR the same as
2152\fBnw_src=192.168.0.0\fR.
2153.RE
2154.IP
2155These options currently affect only \fBdump\-flows\fR output.
2156.
1eb85ef5
EJ
2157.ds DD \
2158\fBovs\-ofctl\fR detaches only when executing the \fBmonitor\fR or \
2159\fBsnoop\fR commands.
2160.so lib/daemon.man
19945013 2161.so lib/unixctl.man
ac300505 2162.SS "Public Key Infrastructure Options"
84ee7bcf 2163.so lib/ssl.man
064af421
BP
2164.so lib/vlog.man
2165.so lib/common.man
a9b4a41a 2166.
1eb85ef5 2167.SH "RUNTIME MANAGEMENT COMMANDS"
96761f58
BP
2168\fBovs\-appctl\fR(8) can send commands to a running \fBovs\-ofctl\fR
2169process. The supported commands are listed below.
2170.
1eb85ef5 2171.IP "\fBexit\fR"
96761f58
BP
2172Causes \fBovs\-ofctl\fR to gracefully terminate. This command applies
2173only when executing the \fBmonitor\fR or \fBsnoop\fR commands.
2174.
1e1d00a5
BP
2175.IP "\fBofctl/set\-output\-file \fIfile\fR"
2176Causes all subsequent output to go to \fIfile\fR instead of stderr.
2177This command applies only when executing the \fBmonitor\fR or
2178\fBsnoop\fR commands.
2179.
96761f58
BP
2180.IP "\fBofctl/send \fIofmsg\fR..."
2181Sends each \fIofmsg\fR, specified as a sequence of hex digits that
2182express an OpenFlow message, on the OpenFlow connection. This command
2183is useful only when executing the \fBmonitor\fR command.
2184.
bb638b9a
BP
2185.IP "\fBofctl/barrier\fR"
2186Sends an OpenFlow barrier request on the OpenFlow connection and waits
2187for a reply. This command is useful only for the \fBmonitor\fR
2188command.
2189.
064af421 2190.SH EXAMPLES
a9b4a41a 2191.
045b2e5c
BP
2192The following examples assume that \fBovs\-vswitchd\fR has a bridge
2193named \fBbr0\fR configured.
a9b4a41a 2194.
064af421 2195.TP
045b2e5c 2196\fBovs\-ofctl dump\-tables br0\fR
064af421
BP
2197Prints out the switch's table stats. (This is more interesting after
2198some traffic has passed through.)
a9b4a41a 2199.
064af421 2200.TP
045b2e5c 2201\fBovs\-ofctl dump\-flows br0\fR
064af421 2202Prints the flow entries in the switch.
a9b4a41a 2203.
064af421 2204.SH "SEE ALSO"
a9b4a41a 2205.
064af421 2206.BR ovs\-appctl (8),
064af421 2207.BR ovs\-vswitchd (8)
29089a54 2208.BR ovs\-vswitchd.conf.db (8)