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