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