]> git.proxmox.com Git - mirror_ovs.git/blame - utilities/ovs-ofctl.8.in
util: New function log_2_floor().
[mirror_ovs.git] / utilities / ovs-ofctl.8.in
CommitLineData
a9b4a41a
BP
1.\" -*- nroff -*-
2.de IQ
3. br
4. ns
5. IP "\\$1"
6..
71e17a7a 7.TH ovs\-ofctl 8 "January 2011" "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.
a9b4a41a 23.
064af421 24.SS "OpenFlow Switch Management Commands"
a9b4a41a 25.PP
064af421
BP
26These commands allow \fBovs\-ofctl\fR to monitor and administer an OpenFlow
27switch. It is able to show the current state of a switch, including
28features, configuration, and table entries.
a9b4a41a 29.PP
064af421
BP
30Most of these commands take an argument that specifies the method for
31connecting to an OpenFlow switch. The following connection methods
32are supported:
a9b4a41a 33.
064af421 34.RS
84ee7bcf
BP
35.so lib/vconn-active.man
36.
064af421
BP
37.IP "\fIfile\fR"
38This is short for \fBunix:\fIfile\fR, as long as \fIfile\fR does not
39contain a colon.
84ee7bcf 40.
1a6f1e2a
JG
41.IP \fIbridge\fR
42This is short for \fBunix:@RUNDIR@/\fIbridge\fB.mgmt\fR, as long as
43\fIbridge\fR does not contain a colon.
44.
45.IP [\fItype\fB@\fR]\fIdp\fR
46Attempts to look up the bridge associated with \fIdp\fR and open as
47above. If \fItype\fR is given, it specifies the datapath provider of
48\fIdp\fR, otherwise the default provider \fBsystem\fR is assumed.
064af421 49.RE
a9b4a41a 50.
064af421
BP
51.TP
52\fBshow \fIswitch\fR
53Prints to the console information on \fIswitch\fR, including
54information on its flow tables and ports.
a9b4a41a 55.
064af421 56.TP
4e312e69 57\fBdump\-tables \fIswitch\fR
064af421
BP
58Prints to the console statistics for each of the flow tables used by
59\fIswitch\fR.
a9b4a41a 60.
064af421 61.TP
4e312e69 62\fBdump\-ports \fIswitch\fR [\fInetdev\fR]
abaad8cf
JP
63Prints to the console statistics for network devices associated with
64\fIswitch\fR. If \fInetdev\fR is specified, only the statistics
65associated with that device will be printed. \fInetdev\fR can be an
66OpenFlow assigned port number or device name, e.g. \fBeth0\fR.
a9b4a41a 67.
064af421 68.TP
4e312e69 69\fBmod\-port \fIswitch\fR \fInetdev\fR \fIaction\fR
064af421
BP
70Modify characteristics of an interface monitored by \fIswitch\fR.
71\fInetdev\fR can be referred to by its OpenFlow assigned port number or
72the device name, e.g. \fBeth0\fR. The \fIaction\fR may be any one of the
73following:
a9b4a41a 74.
064af421
BP
75.RS
76.IP \fBup\fR
77Enables the interface. This is equivalent to ``ifconfig up'' on a Unix
78system.
a9b4a41a 79.
064af421
BP
80.IP \fBdown\fR
81Disables the interface. This is equivalent to ``ifconfig down'' on a Unix
82system.
a9b4a41a 83.
064af421
BP
84.IP \fBflood\fR
85When a \fIflood\fR action is specified, traffic will be sent out this
86interface. This is the default posture for monitored ports.
a9b4a41a 87.
064af421
BP
88.IP \fBnoflood\fR
89When a \fIflood\fR action is specified, traffic will not be sent out
90this interface. This is primarily useful to prevent loops when a
91spanning tree protocol is not in use.
a9b4a41a 92.
064af421 93.RE
a9b4a41a 94.
064af421 95.TP
4e312e69 96\fBdump\-flows \fIswitch \fR[\fIflows\fR]
064af421
BP
97Prints to the console all flow entries in \fIswitch\fR's
98tables that match \fIflows\fR. If \fIflows\fR is omitted, all flows
99in the switch are retrieved. See \fBFlow Syntax\fR, below, for the
100syntax of \fIflows\fR. The output format is described in
101\fBTable Entry Output\fR.
a9b4a41a 102.
064af421 103.TP
4e312e69 104\fBdump\-aggregate \fIswitch \fR[\fIflows\fR]
064af421
BP
105Prints to the console aggregate statistics for flows in
106\fIswitch\fR's tables that match \fIflows\fR. If \fIflows\fR is omitted,
107the statistics are aggregated across all flows in the switch's flow
108tables. See \fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
109The output format is descrbed in \fBTable Entry Output\fR.
a9b4a41a 110.
d2805da2
BP
111.IP "\fBqueue\-stats \fIswitch \fR[\fIport \fR[\fIqueue\fR]]"
112Prints to the console statistics for the specified \fIqueue\fR on
113\fIport\fR within \fIswitch\fR. Either of \fIport\fR or \fIqueue\fR
114or both may be omitted (or equivalently specified as \fBALL\fR). If
115both are omitted, statistics are printed for all queues on all ports.
116If only \fIqueue\fR is omitted, then statistics are printed for all
117queues on \fIport\fR; if only \fIport\fR is omitted, then statistics
118are printed for \fIqueue\fR on every port where it exists.
119.
4989c59f
BP
120.SS "OpenFlow Switch Flow Table Commands"
121.
122These commands manage the flow table in an OpenFlow switch. In each
123case, \fIflow\fR specifies a flow entry in the format described in
124\fBFlow Syntax\fR, below, and \fIfile\fR is a text file that contains
125zero or more flows in the same syntax, one per line.
126.
127.IP "\fBadd\-flow \fIswitch flow\fR"
128.IQ "\fBadd\-flow \fIswitch \fB\- < \fIfile\fR"
129.IQ "\fBadd\-flows \fIswitch file\fR"
130Add each flow entry to \fIswitch\fR's tables.
131.
132.IP "[\fB\-\-strict\fR] \fBmod\-flows \fIswitch flow\fR"
133.IQ "[\fB\-\-strict\fR] \fBmod\-flows \fIswitch \fB\- < \fIfile\fR"
134Modify the actions in entries from \fIswitch\fR's tables that match
135the specified flows. With \fB\-\-strict\fR, wildcards are not treated
136as active for matching purposes.
137.
138.IP "\fBdel\-flows \fIswitch\fR"
139.IQ "[\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fR[\fIflow\fR]"
140.IQ "[\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fB\- < \fIfile\fR"
141Deletes entries from \fIswitch\fR's flow table. With only a
142\fIswitch\fR argument, deletes all flows. Otherwise, deletes flow
143entries that match the specified flows. With \fB\-\-strict\fR,
144wildcards are not treated as active for matching purposes.
a9b4a41a 145.
0199c526
BP
146.IP "\fBreplace\-flows \fIswitch file\fR"
147Reads flow entries from \fIfile\fR (or \fBstdin\fR if \fIfile\fR is
148\fB\-\fR) and queries the flow table from \fIswitch\fR. Then it fixes
149up any differences, adding flows from \fIflow\fR that are missing on
150\fIswitch\fR, deleting flows from \fIswitch\fR that are not in
151\fIfile\fR, and updating flows in \fIswitch\fR whose actions, cookie,
152or timeouts differ in \fIfile\fR.
153.
154.IP "\fBdiff\-flows \fIsource1 source2\fR"
155Reads flow entries from \fIsource1\fR and \fIsource2\fR and prints the
156differences. A flow that is in \fIsource1\fR but not in \fIsource2\fR
157is printed preceded by a \fB\-\fR, and a flow that is in \fIsource2\fR
158but not in \fIsource1\fR is printed preceded by a \fB+\fR. If a flow
159exists in both \fIsource1\fR and \fIsource2\fR with different actions,
160cookie, or timeouts, then both versions are printed preceded by
161\fB\-\fR and \fB+\fR, respectively.
162.IP
163\fIsource1\fR and \fIsource2\fR may each name a file or a switch. If
164a name begins with \fB/\fR or \fB.\fR, then it is considered to be a
165file name. A name that contains \fB:\fR is considered to be a switch.
166Otherwise, it is a file if a file by that name exists, a switch if
167not.
168.IP
169For this command, an exit status of 0 means that no differences were
170found, 1 means that an error occurred, and 2 means that some
171differences were found.
172.
4989c59f
BP
173.SS "OpenFlow Switch Monitoring Commands"
174.
0caf6bde
BP
175.IP "\fBsnoop \fIswitch\fR"
176Connects to \fIswitch\fR and prints to the console all OpenFlow
177messages received. Unlike other \fBovs\-ofctl\fR commands, if
178\fIswitch\fR is the name of a bridge, then the \fBsnoop\fR command
179connects to a Unix domain socket named
180\fB@RUNDIR@/\fIbridge\fB.snoop\fR. \fBovs\-vswitchd\fR listens on
181such a socket for each bridge and sends to it all of the OpenFlow
182messages sent to or received from its configured OpenFlow controller.
183Thus, this command can be used to view OpenFlow protocol activity
184between a switch and its controller.
185.IP
186When a switch has more than one controller configured, only the
e2bfacb6
BP
187traffic to and from a single controller is output. If none of the
188controllers is configured as a master or a slave (using a Nicira
189extension to OpenFlow), then a controller is chosen arbitrarily among
190them. If there is a master controller, it is chosen; otherwise, if
191there are any controllers that are not masters or slaves, one is
192chosen arbitrarily; otherwise, a slave controller is chosen
193arbitrarily. This choice is made once at connection time and does not
194change as controllers reconfigure their roles.
195.IP
196If a switch has no controller configured, or if
0caf6bde
BP
197the configured controller is disconnected, no traffic is sent, so
198monitoring will not show any traffic.
199.
4989c59f 200.IP "\fBmonitor \fIswitch\fR [\fImiss-len\fR]"
064af421 201Connects to \fIswitch\fR and prints to the console all OpenFlow
045b2e5c
BP
202messages received. Usually, \fIswitch\fR should specify the name of a
203bridge in the \fBovs\-vswitchd\fR database.
a9b4a41a 204.IP
064af421
BP
205If \fImiss-len\fR is provided, \fBovs\-ofctl\fR sends an OpenFlow ``set
206configuration'' message at connection setup time that requests
0caf6bde
BP
207\fImiss-len\fR bytes of each packet that misses the flow table. Open vSwitch
208does not send these and other asynchronous messages to an
064af421 209\fBovs\-ofctl monitor\fR client connection unless a nonzero value is
0caf6bde
BP
210specified on this argument. (Thus, if \fImiss\-len\fR is not
211specified, very little traffic will ordinarily be printed.)
a9b4a41a 212.IP
064af421
BP
213This command may be useful for debugging switch or controller
214implementations.
a9b4a41a 215.
064af421 216.SS "OpenFlow Switch and Controller Commands"
a9b4a41a 217.
064af421
BP
218The following commands, like those in the previous section, may be
219applied to OpenFlow switches, using any of the connection methods
220described in that section. Unlike those commands, these may also be
221applied to OpenFlow controllers.
a9b4a41a 222.
064af421
BP
223.TP
224\fBprobe \fItarget\fR
225Sends a single OpenFlow echo-request message to \fItarget\fR and waits
4e312e69 226for the response. With the \fB\-t\fR or \fB\-\-timeout\fR option, this
064af421
BP
227command can test whether an OpenFlow switch or controller is up and
228running.
a9b4a41a 229.
064af421
BP
230.TP
231\fBping \fItarget \fR[\fIn\fR]
232Sends a series of 10 echo request packets to \fItarget\fR and times
233each reply. The echo request packets consist of an OpenFlow header
234plus \fIn\fR bytes (default: 64) of randomly generated payload. This
235measures the latency of individual requests.
a9b4a41a 236.
064af421
BP
237.TP
238\fBbenchmark \fItarget n count\fR
239Sends \fIcount\fR echo request packets that each consist of an
240OpenFlow header plus \fIn\fR bytes of payload and waits for each
241response. Reports the total time required. This is a measure of the
242maximum bandwidth to \fItarget\fR for round-trips of \fIn\fR-byte
243messages.
a9b4a41a 244.
064af421 245.SS "Flow Syntax"
a9b4a41a 246.PP
064af421
BP
247Some \fBovs\-ofctl\fR commands accept an argument that describes a flow or
248flows. Such flow descriptions comprise a series
249\fIfield\fB=\fIvalue\fR assignments, separated by commas or white
250space. (Embedding spaces into a flow description normally requires
251quoting to prevent the shell from breaking the description into
252multiple arguments.)
a9b4a41a 253.PP
0b3f2725
BP
254Flow descriptions should be in \fBnormal form\fR. This means that a
255flow may only specify a value for an L3 field if it also specifies a
256particular L2 protocol, and that a flow may only specify an L4 field
257if it also specifies particular L2 and L3 protocol types. For
258example, if the L2 protocol type \fBdl_type\fR is wildcarded, then L3
259fields \fBnw_src\fR, \fBnw_dst\fR, and \fBnw_proto\fR must also be
260wildcarded. Similarly, if \fBdl_type\fR or \fBnw_proto\fR (the L3
261protocol type) is wildcarded, so must be \fBtp_dst\fR and
262\fBtp_src\fR, which are L4 fields. \fBovs\-ofctl\fR will warn about
263flows not in normal form.
264.PP
064af421
BP
265The following field assignments describe how a flow matches a packet.
266If any of these assignments is omitted from the flow syntax, the field
267is treated as a wildcard; thus, if all of them are omitted, the
268resulting flow matches all packets. The string \fB*\fR or \fBANY\fR
269may be specified to explicitly mark any of these fields as a wildcard.
270(\fB*\fR should be quoted to protect it from shell expansion.)
a9b4a41a 271.
064af421
BP
272.IP \fBin_port=\fIport_no\fR
273Matches physical port \fIport_no\fR. Switch ports are numbered as
274displayed by \fBovs\-ofctl show\fR.
a9b4a41a 275.
064af421 276.IP \fBdl_vlan=\fIvlan\fR
f30f26be
JP
277Matches IEEE 802.1q Virtual LAN tag \fIvlan\fR. Specify \fB0xffff\fR
278as \fIvlan\fR to match packets that are not tagged with a Virtual LAN;
064af421
BP
279otherwise, specify a number between 0 and 4095, inclusive, as the
28012-bit VLAN ID to match.
a9b4a41a 281.
959a2ecd
JP
282.IP \fBdl_vlan_pcp=\fIpriority\fR
283Matches IEEE 802.1q Priority Code Point (PCP) \fIpriority\fR, which is
284specified as a value between 0 and 7, inclusive. A higher value
285indicates a higher frame priority level.
a9b4a41a 286.
ed951f15
BP
287.IP \fBdl_src=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
288.IQ \fBdl_dst=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
289Matches an Ethernet source (or destination) address specified as 6
290pairs of hexadecimal digits delimited by colons
291(e.g. \fB00:0A:E4:25:6B:B0\fR).
292.
cb8ca532
BP
293.IP \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
294Matches an Ethernet destination address specified as 6 pairs of
295hexadecimal digits delimited by colons (e.g. \fB00:0A:E4:25:6B:B0\fR),
296with a wildcard mask following the slash. Only
297the following masks are allowed:
298.RS
299.IP \fB01:00:00:00:00:00\fR
300Match only the multicast bit. Thus,
301\fBdl_dst=01:00:00:00:00:00/01:00:00:00:00:00\fR matches all multicast
302(including broadcast) Ethernet packets, and
303\fBdl_dst=00:00:00:00:00:00/01:00:00:00:00:00\fR matches all unicast
304Ethernet packets.
305.IP \fBfe:ff:ff:ff:ff:ff\fR
306Match all bits except the multicast bit. This is probably not useful.
307.IP \fBff:ff:ff:ff:ff:ff\fR
308Exact match (equivalent to omitting the mask).
309.IP \fB00:00:00:00:00:00\fR
310Wildcard all bits (equivalent to \fBdl_dst=*\fR.)
311.RE
312.
064af421
BP
313.IP \fBdl_type=\fIethertype\fR
314Matches Ethernet protocol type \fIethertype\fR, which is specified as an
315integer between 0 and 65535, inclusive, either in decimal or as a
316hexadecimal number prefixed by \fB0x\fR (e.g. \fB0x0806\fR to match ARP
317packets).
a9b4a41a 318.
064af421 319.IP \fBnw_src=\fIip\fR[\fB/\fInetmask\fR]
ed951f15
BP
320.IQ \fBnw_dst=\fIip\fR[\fB/\fInetmask\fR]
321When \fBdl_type\fR is 0x0800 (possibly via shorthand, e.g. \fBip\fR
322or \fBtcp\fR), matches IPv4 source (or destination) address \fIip\fR,
323which may be specified as an IP address or host name
324(e.g. \fB192.168.1.1\fR or \fBwww.example.com\fR). The optional
325\fInetmask\fR allows restricting a match to an IPv4 address prefix.
326The netmask may be specified as a dotted quad
327(e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
064af421 328(e.g. \fB192.168.1.0/24\fR).
ed951f15
BP
329.IP
330When \fBdl_type=0x0806\fR or \fBarp\fR is specified, matches the
331\fBar_spa\fR or \fBar_tpa\fR field, respectively, in ARP packets for
332IPv4 and Ethernet.
333.IP
334When \fBdl_type\fR is wildcarded or set to a value other than 0x0800
0b3f2725
BP
335or 0x0806, the values of \fBnw_src\fR and \fBnw_dst\fR are ignored
336(see \fBFlow Syntax\fR above).
a9b4a41a 337.
064af421 338.IP \fBnw_proto=\fIproto\fR
ed951f15
BP
339When \fBip\fR or \fBdl_type=0x0800\fR is specified, matches IP
340protocol type \fIproto\fR, which is specified as a decimal number
d31f1109
JP
341between 0 and 255, inclusive (e.g. 1 to match ICMP packets or 6 to match
342TCP packets).
343.IP
344When \fBipv6\fR or \fBdl_type=0x86dd\fR is specified, matches IPv6
345header type \fIproto\fR, which is specified as a decimal number between
3460 and 255, inclusive (e.g. 58 to match ICMPv6 packets or 6 to match
347TCP). The header type is the terminal header as described in the
348\fBDESIGN\fR document.
ed951f15
BP
349.IP
350When \fBarp\fR or \fBdl_type=0x0806\fR is specified, matches the lower
3518 bits of the ARP opcode. ARP opcodes greater than 255 are treated as
3520.
353.IP
d31f1109
JP
354When \fBdl_type\fR is wildcarded or set to a value other than 0x0800,
3550x0806, or 0x86dd, the value of \fBnw_proto\fR is ignored (see \fBFlow
0b3f2725 356Syntax\fR above).
a9b4a41a 357.
834377ea 358.IP \fBnw_tos=\fItos\fR
d31f1109
JP
359Matches IP ToS/DSCP or IPv6 traffic class field \fItos\fR, which is
360specified as a decimal number between 0 and 255, inclusive. Note that
361the two lower reserved bits are ignored for matching purposes.
ed951f15 362.IP
d31f1109
JP
363When \fBdl_type\fR is wildcarded or set to a value other than 0x0800,
3640x0806, or 0x86dd, the value of \fBnw_tos\fR is ignored (see \fBFlow
365Syntax\fR above).
a9b4a41a 366.
064af421 367.IP \fBtp_src=\fIport\fR
ed951f15
BP
368.IQ \fBtp_dst=\fIport\fR
369When \fBdl_type\fR and \fBnw_proto\fR specify TCP or UDP, \fBtp_src\fR
370and \fBtp_dst\fR match the UDP or TCP source or destination port
371\fIport\fR, respectively. which is specified as a decimal number
372between 0 and 65535, inclusive (e.g. 80 to match packets originating
064af421 373from a HTTP server).
ed951f15
BP
374.IP
375When \fBdl_type\fR and \fBnw_proto\fR take other values, the values of
0b3f2725 376these settings are ignored (see \fBFlow Syntax\fR above).
a9b4a41a 377.
064af421 378.IP \fBicmp_type=\fItype\fR
ed951f15 379.IQ \fBicmp_code=\fIcode\fR
d31f1109
JP
380When \fBdl_type\fR and \fBnw_proto\fR specify ICMP or ICMPv6, \fItype\fR
381matches the ICMP type and \fIcode\fR matches the ICMP code. Each is
382specified as a decimal number between 0 and 255, inclusive.
ed951f15
BP
383.IP
384When \fBdl_type\fR and \fBnw_proto\fR take other values, the values of
0b3f2725 385these settings are ignored (see \fBFlow Syntax\fR above).
71e17a7a 386.
6c1491fb
BP
387.IP \fBtable=\fInumber\fR
388If specified, limits the flow manipulation and flow dump commands to
389only apply to the table with the given \fInumber\fR.
390\fInumber\fR is a number between 0 and 254, inclusive.
391.
392Behavior varies if \fBtable\fR is not specified. For flow table
393modification commands without \fB\-\-strict\fR, the switch will choose
394the table for these commands to operate on. For flow table
395modification commands with \fB\-\-strict\fR, the command will operate
396on any single matching flow in any table; it will do nothing if there
397are matches in more than one table. The \fBdump-flows\fR and
398\fBdump-aggregate\fR commands will gather statistics about flows from
399all tables.
400.IP
401When this field is specified in \fBadd-flow\fR, \fBadd-flows\fR,
402\fBmod-flows\fR and \fBdel-flows\fR commands, it activates a Nicira
403extension to OpenFlow, which as of this writing is only known to be
404implemented by Open vSwitch.
405.
71e17a7a 406.PP
d31f1109
JP
407The following shorthand notations are also available:
408.
409.IP \fBip\fR
410Same as \fBdl_type=0x0800\fR.
411.
412.IP \fBicmp\fR
413Same as \fBdl_type=0x0800,nw_proto=1\fR.
414.
415.IP \fBtcp\fR
416Same as \fBdl_type=0x0800,nw_proto=6\fR.
417.
418.IP \fBudp\fR
419Same as \fBdl_type=0x0800,nw_proto=17\fR.
420.
421.IP \fBarp\fR
422Same as \fBdl_type=0x0806\fR.
423.
424.PP
71e17a7a
JP
425The following field assignments require support for the NXM (Nicira
426Extended Match) extension to OpenFlow. When one of these is specified,
427\fBovs\-ofctl\fR will automatically attempt to negotiate use of this
428extension. If the switch does not support NXM, then \fBovs\-ofctl\fR
429will report a fatal error.
430.
33d8c6b4
BP
431.IP \fBvlan_tci=\fItci\fR[\fB/\fImask\fR]
432Matches modified VLAN TCI \fItci\fR. If \fImask\fR is omitted,
433\fItci\fR is the exact VLAN TCI to match; if \fImask\fR is specified,
434then a 1-bit in \fItci\fR indicates that the corresponding bit in
435\fItci\fR must match exactly, and a 0-bit wildcards that bit. Both
436\fItci\fR and \fImask\fR are 16-bit values that are decimal by
437default; use a \fB0x\fR prefix to specify them in hexadecimal.
438.
439.IP
440The value that \fBvlan_tci\fR matches against is 0 for a packet that
441has no 802.1Q header. Otherwise, it is the TCI value from the 802.1Q
442header with the CFI bit (with value \fB0x1000\fR) forced to 1.
443.IP
444Examples:
445.RS
446.IP \fBvlan_tci=0\fR
447Match only packets without an 802.1Q header.
448.IP \fBvlan_tci=0xf123\fR
449Match packets tagged with priority 7 in VLAN 0x123.
450.IP \fBvlan_tci=0x1123/0x1fff\fR
451Match packets tagged with VLAN 0x123 (and any priority).
452.IP \fBvlan_tci=0x5000/0xf000\fR
453Match packets tagged with priority 2 (in any VLAN).
454.IP \fBvlan_tci=0/0xfff\fR
455Match packets with no 802.1Q header or tagged with VLAN 0 (and any
456priority).
457.IP \fBvlan_tci=0x5000/0xe000\fR
458Match packets with no 802.1Q header or tagged with priority 2 (in any
459VLAN).
460.IP \fBvlan_tci=0/0xefff\fR
461Match packets with no 802.1Q header or tagged with VLAN 0 and priority
4620.
463.RE
464.IP
465Some of these matching possibilities can also be achieved with
466\fBdl_vlan\fR and \fBdl_vlan_pcp\fR.
467.
bad68a99
JP
468.IP \fBarp_sha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
469.IQ \fBarp_tha=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
470When \fBdl_type\fR specifies ARP, \fBarp_sha\fR and \fBarp_tha\fR match
471the source and target hardware address, respectively. An address is
472specified as 6 pairs of hexadecimal digits delimited by colons.
473.
d31f1109
JP
474.IP \fBipv6_src=\fIipv6\fR[\fB/\fInetmask\fR]
475.IQ \fBipv6_dst=\fIipv6\fR[\fB/\fInetmask\fR]
476When \fBdl_type\fR is 0x86dd (possibly via shorthand, e.g., \fBipv6\fR
477or \fBtcp6\fR), matches IPv6 source (or destination) address \fIipv6\fR,
478which may be specified as defined in RFC 2373. The preferred format is
479\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fB:\fIx\fR, where
480\fIx\fR are the hexadecimal values of the eight 16-bit pieces of the
481address. A single instance of \fB::\fR may be used to indicate multiple
482groups of 16-bits of zeros. The optional \fInetmask\fR allows
483restricting a match to an IPv6 address prefix. A netmask is specified
484as a CIDR block (e.g. \fB2001:db8:3c4d:1::/64\fR).
485.
685a51a5
JP
486.IP \fBnd_target=\fIipv6\fR
487When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify
488IPv6 Neighbor Discovery (ICMPv6 type 135 or 136), matches the target address
489\fIipv6\fR. \fIipv6\fR is in the same format described earlier for the
490\fBipv6_src\fR and \fBipv6_dst\fR fields.
491.
492.IP \fBnd_sll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
493When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
494Neighbor Solicitation (ICMPv6 type 135), matches the source link\-layer
495address option. An address is specified as 6 pairs of hexadecimal
496digits delimited by colons.
497.
498.IP \fBnd_tll=\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fB:\fIxx\fR
499When \fBdl_type\fR, \fBnw_proto\fR, and \fBicmp_type\fR specify IPv6
500Neighbor Advertisement (ICMPv6 type 136), matches the target link\-layer
501address option. An address is specified as 6 pairs of hexadecimal
502digits delimited by colons.
503.
8368c090
BP
504.IP \fBtun_id=\fItunnel-id\fR[\fB/\fImask\fR]
505Matches tunnel identifier \fItunnel-id\fR. Only packets that arrive
4c5df7f7 506over a tunnel that carries a key (e.g. GRE with the RFC 2890 key
8368c090 507extension) will have a nonzero tunnel ID. If \fImask\fR is omitted,
71e17a7a 508\fItunnel-id\fR is the exact tunnel ID to match; if \fImask\fR is
8368c090
BP
509specified, then a 1-bit in \fImask\fR indicates that the corresponding
510bit in \fItunnel-id\fR must match exactly, and a 0-bit wildcards that
511bit.
4c5df7f7 512.IP
71e17a7a
JP
513In an attempt to be compatible with more switches, \fBovs\-ofctl\fR will
514prefer to use the ``tunnel ID from cookie'' Nicira extension to NXM.
515The use of this extension comes with three caveats: the top 32 bits of
516the \fBcookie\fR (see below) are used for \fItunnel-id\fR and thus
517unavailable for other use, specifying \fBtun_id\fR on \fBdump\-flows\fR
518or \fBdump\-aggregate\fR has no effect, and \fImask\fR is not supported.
519If any of these caveats apply, \fBovs-ofctl\fR will use NXM.
520.
00b1c62f
BP
521.IP "\fBreg\fIidx\fB=\fIvalue\fR[\fB/\fImask\fR]"
522Matches \fIvalue\fR either exactly or with optional \fImask\fR in
523register number \fIidx\fR. The valid range of \fIidx\fR depends on
524the switch. \fIvalue\fR and \fImask\fR are 32-bit integers, by
525default in decimal (use a \fB0x\fR prefix to specify hexadecimal).
526Arbitrary \fImask\fR values are allowed: a 1-bit in \fImask\fR
527indicates that the corresponding bit in \fIvalue\fR must match
528exactly, and a 0-bit wildcards that bit.
529.IP
530When a packet enters an OpenFlow switch, all of the registers are set
531to 0. Only explicit Nicira extension actions change register values.
a9b4a41a 532.
064af421 533.PP
d31f1109
JP
534Defining IPv6 flows (those with \fBdl_type\fR equal to 0x86dd) requires
535support for NXM. The following shorthand notations are available for
536IPv6-related flows:
a9b4a41a 537.
d31f1109
JP
538.IP \fBipv6\fR
539Same as \fBdl_type=0x86dd\fR.
a9b4a41a 540.
d31f1109
JP
541.IP \fBtcp6\fR
542Same as \fBdl_type=0x86dd,nw_proto=6\fR.
a9b4a41a 543.
d31f1109
JP
544.IP \fBudp6\fR
545Same as \fBdl_type=0x86dd,nw_proto=17\fR.
a9b4a41a 546.
d31f1109
JP
547.IP \fBicmp6\fR
548Same as \fBdl_type=0x86dd,nw_proto=58\fR.
a9b4a41a 549.
064af421 550.PP
2c6d8411
BP
551Finally, field assignments to \fBduration\fR, \fBn_packets\fR, or
552\fBn_bytes\fR are ignored to allow output from the \fBdump\-flows\fR
553command to be used as input for other commands that parse flows.
554.
555.PP
c821124b
BP
556The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
557require an additional field, which must be the final field specified:
a9b4a41a 558.
064af421
BP
559.IP \fBactions=\fR[\fItarget\fR][\fB,\fItarget\fR...]\fR
560Specifies a comma-separated list of actions to take on a packet when the
561flow entry matches. If no \fItarget\fR is specified, then packets
562matching the flow are dropped. The \fItarget\fR may be a decimal port
563number designating the physical port on which to output the packet, or one
564of the following keywords:
a9b4a41a 565.
064af421
BP
566.RS
567.IP \fBoutput\fR:\fIport\fR
568Outputs the packet on the port specified by \fIport\fR.
a9b4a41a 569.
5682f723
BP
570.IP \fBenqueue\fR:\fIport\fB:\fIqueue\fR
571Enqueues the packet on the specified \fIqueue\fR within port
572\fIport\fR. The number of supported queues depends on the switch;
573some OpenFlow implementations do not support queuing at all.
574.
064af421
BP
575.IP \fBnormal\fR
576Subjects the packet to the device's normal L2/L3 processing. (This
577action is not implemented by all OpenFlow switches.)
a9b4a41a 578.
064af421
BP
579.IP \fBflood\fR
580Outputs the packet on all switch physical ports other than the port on
581which it was received and any ports on which flooding is disabled
582(typically, these would be ports disabled by the IEEE 802.1D spanning
583tree protocol).
a9b4a41a 584.
064af421
BP
585.IP \fBall\fR
586Outputs the packet on all switch physical ports other than the port on
587which it was received.
a9b4a41a 588.
064af421
BP
589.IP \fBcontroller\fR:\fImax_len\fR
590Sends the packet to the OpenFlow controller as a ``packet in''
591message. If \fImax_len\fR is a number, then it specifies the maximum
592number of bytes that should be sent. If \fImax_len\fR is \fBALL\fR or
593omitted, then the entire packet is sent.
a9b4a41a 594.
064af421
BP
595.IP \fBlocal\fR
596Outputs the packet on the ``local port,'' which corresponds to the
045b2e5c 597network device that has the same name as the bridge.
a9b4a41a 598.
64c1e8af
JP
599.IP \fBin_port\fR
600Outputs the packet on the port from which it was received.
601.
064af421
BP
602.IP \fBdrop\fR
603Discards the packet, so no further processing or forwarding takes place.
604If a drop action is used, no other actions may be specified.
a9b4a41a 605.
064af421
BP
606.IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
607Modifies the VLAN id on a packet. The VLAN tag is added or modified
608as necessary to match the value specified. If the VLAN tag is added,
609a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
610this).
a9b4a41a 611.
064af421
BP
612.IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
613Modifies the VLAN priority on a packet. The VLAN tag is added or modified
614as necessary to match the value specified. Valid values are between 0
615(lowest) and 7 (highest). If the VLAN tag is added, a vid of zero is used
616(see the \fBmod_vlan_vid\fR action to set this).
a9b4a41a 617.
064af421
BP
618.IP \fBstrip_vlan\fR
619Strips the VLAN tag from a packet if it is present.
a9b4a41a 620.
064af421
BP
621.IP \fBmod_dl_src\fB:\fImac\fR
622Sets the source Ethernet address to \fImac\fR.
a9b4a41a 623.
064af421
BP
624.IP \fBmod_dl_dst\fB:\fImac\fR
625Sets the destination Ethernet address to \fImac\fR.
a9b4a41a 626.
e423eca6
JP
627.IP \fBmod_nw_src\fB:\fIip\fR
628Sets the IPv4 source address to \fIip\fR.
a9b4a41a 629.
e423eca6
JP
630.IP \fBmod_nw_dst\fB:\fIip\fR
631Sets the IPv4 destination address to \fIip\fR.
a9b4a41a 632.
e423eca6
JP
633.IP \fBmod_tp_src\fB:\fIport\fR
634Sets the TCP or UDP source port to \fIport\fR.
a9b4a41a 635.
e423eca6
JP
636.IP \fBmod_tp_dst\fB:\fIport\fR
637Sets the TCP or UDP destination port to \fIport\fR.
a9b4a41a 638.
959a2ecd
JP
639.IP \fBmod_nw_tos\fB:\fItos\fR
640Sets the IP ToS/DSCP field to \fItos\fR. Valid values are between 0 and
641255, inclusive. Note that the two lower reserved bits are never
642modified.
a9b4a41a 643.
659586ef
JG
644.RE
645.IP
646The following actions are Nicira vendor extensions that, as of this writing, are
647only known to be implemented by Open vSwitch:
648.
649.RS
650.
3a2fe1f3
BP
651.IP \fBresubmit\fB:\fIport\fR
652Re-searches the OpenFlow flow table with the \fBin_port\fR field
653replaced by \fIport\fR and executes the actions found, if any, in
654addition to any other actions in this flow entry. Recursive
655\fBresubmit\fR actions are ignored.
659586ef
JG
656.
657.IP \fBset_tunnel\fB:\fIid\fR
b9298d3f
BP
658.IQ \fBset_tunnel64\fB:\fIid\fR
659If outputting to a port that encapsulates the packet in a tunnel and
660supports an identifier (such as GRE), sets the identifier to \fBid\fR.
661If the \fBset_tunnel\fR form is used and \fIid\fR fits in 32 bits,
662then this uses an action extension that is supported by Open vSwitch
6631.0 and later. Otherwise, if \fIid\fR is a 64-bit value, it requires
664Open vSwitch 1.1 or later.
3a2fe1f3 665.
eedc0097
JP
666.IP \fBset_queue\fB:\fIqueue\fR
667Sets the queue that should be used to \fIqueue\fR when packets are
668output. The number of supported queues depends on the switch; some
669OpenFlow implementations do not support queuing at all.
670.
671.IP \fBpop_queue\fR
672Restores the queue to the value it was before any \fBset_queue\fR
673actions were applied.
674.
96fc46e8
BP
675.IP \fBnote:\fR[\fIhh\fR]...
676Does nothing at all. Any number of bytes represented as hex digits
677\fIhh\fR may be included. Pairs of hex digits may be separated by
678periods for readability.
f393f81e
BP
679.
680.IP "\fBmove:\fIsrc\fB[\fIstart\fB..\fIend\fB]->\fIdst\fB[\fIstart\fB..\fIend\fB]\fR"
681Copies the named bits from field \fIsrc\fR to field \fIdst\fR.
682\fIsrc\fR and \fIdst\fR must be NXM field names as defined in
683\fBnicira\-ext.h\fR, e.g. \fBNXM_OF_UDP_SRC\fR or \fBNXM_NX_REG0\fR.
684Each \fIstart\fR and \fIend\fR pair, which are inclusive, must specify
685the same number of bits and must fit within its respective field.
686Shorthands for \fB[\fIstart\fB..\fIend\fB]\fR exist: use
687\fB[\fIbit\fB]\fR to specify a single bit or \fB[]\fR to specify an
688entire field.
689.IP
690Examples: \fBmove:NXM_NX_REG0[0..5]\->NXM_NX_REG1[26..31]\fR copies the
691six bits numbered 0 through 5, inclusive, in register 0 into bits 26
692through 31, inclusive;
693\fBmove:NXM_NX_REG0[0..15]->NXM_OF_VLAN_TCI[]\fR copies the least
694significant 16 bits of register 0 into the VLAN TCI field.
695.
696.IP "\fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]"
697Writes \fIvalue\fR to bits \fIstart\fR through \fIend\fR, inclusive,
698in field \fBdst\fR.
699.IP
700Example: \fBload:55\->NXM_NX_REG2[0..5]\fR loads value 55 (bit pattern
701\fB110111\fR) into bits 0 through 5, inclusive, in register 2.
53ddd40a
BP
702.
703.IP "\fBmultipath(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIn_links\fB, \fIarg\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
704Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter,
705then the applies multipath link selection \fIalgorithm\fR (with
706parameter \fIarg\fR) to choose one of \fIn_links\fR output links
707numbered 0 through \fIn_links\fR minus 1, and stores the link into
708\fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM register as
709described above.
710.IP
711Currently, \fIfields\fR must be either \fBeth_src\fR or
712\fBsymmetric_l4\fR and \fIalgorithm\fR must be one of \fBmodulo_n\fR,
713\fBhash_threshold\fR, \fBhrw\fR, and \fBiter_hash\fR. Only
714the \fBiter_hash\fR algorithm uses \fIarg\fR.
715.IP
716Refer to \fBnicira\-ext.h\fR for more details.
3b6a2571
EJ
717.
718.IP "\fBautopath(\fIid\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
719Given \fIid\fR, chooses an OpenFlow port and populates it in
720\fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM register as
721described above.
722.IP
723Currently, \fIid\fR should be the OpenFlow port number of an interface on the
724bridge. If it isn't then \fIdst\fB[\fIstart\fB..\fIend\fB]\fR will be
725populated with the OpenFlow port "none". If \fIid\fR is a member of a bond,
726the normal bond selection logic will be used to choose the destination port.
727Otherwise, the register will be populated with \fIid\fR itself.
728.IP
729Refer to \fBnicira\-ext.h\fR for more details.
daff3353
EJ
730.
731.IP "\fBbundle(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
732Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter, then
733applies the bundle link selection \fIalgorithm\fR to choose one of the listed
734slaves represented as \fIslave_type\fR. Currently the only supported
735\fIslave_type\fR is \fBofport\fR. Thus, each \fIs1\fR through \fIsN\fR should
736be an OpenFlow port number. Outputs to the selected slave.
737.IP
738Currently, \fIfields\fR must be either \fBeth_src\fR or \fBsymmetric_l4\fR and
739\fIalgorithm\fR must be one of \fBhrw\fR and \fBactive_backup\fR.
740.IP
741Example: \fBbundle(eth_src,0,hrw,ofport,slaves:4,8)\fR uses an Ethernet source
742hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest
743Random Weight algorithm.
744.IP
745Refer to \fBnicira\-ext.h\fR for more details.
064af421 746.RE
a9b4a41a 747.
064af421
BP
748.IP
749(The OpenFlow protocol supports other actions that \fBovs\-ofctl\fR does
750not yet expose to the user.)
a9b4a41a 751.
064af421 752.PP
8cce2125
JP
753The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
754support an additional optional field:
755.
756.IP \fBcookie=\fIvalue\fR
757.
758A cookie is an opaque identifier that can be associated with the flow.
759\fIvalue\fR can be any 64-bit number and need not be unique among
c821124b
BP
760flows. If this field is omitted, these commands set a default cookie
761value of 0.
8cce2125
JP
762.
763.PP
4b6b46ce
BP
764The following additional field sets the priority for flows added by
765the \fBadd\-flow\fR and \fBadd\-flows\fR commands. For
766\fBmod\-flows\fR and \fBdel\-flows\fR when \fB\-\-strict\fR is
767specified, priority must match along with the rest of the flow
c821124b 768specification. Other commands do not allow priority to be specified.
a9b4a41a 769.
064af421
BP
770.IP \fBpriority=\fIvalue\fR
771The priority at which a wildcarded entry will match in comparison to
772others. \fIvalue\fR is a number between 0 and 65535, inclusive. A higher
773\fIvalue\fR will match before a lower one. An exact-match entry will always
774have priority over an entry containing wildcards, so it has an implicit
775priority value of 65535. When adding a flow, if the field is not specified,
776the flow's priority will default to 32768.
a9b4a41a 777.
064af421 778.PP
4e312e69 779The \fBadd\-flow\fR and \fBadd\-flows\fR commands support additional
064af421 780optional fields:
a9b4a41a 781.
064af421
BP
782.TP
783\fBidle_timeout=\fIseconds\fR
784Causes the flow to expire after the given number of seconds of
a1545337
BP
785inactivity. A value of 0 (the default) prevents a flow from expiring due to
786inactivity.
a9b4a41a 787.
064af421
BP
788.IP \fBhard_timeout=\fIseconds\fR
789Causes the flow to expire after the given number of seconds,
790regardless of activity. A value of 0 (the default) gives the flow no
791hard expiration deadline.
a9b4a41a 792.
064af421 793.PP
4e312e69
BP
794The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR
795and \fBdel\-flows\fR commands support one additional optional field:
a9b4a41a 796.
064af421
BP
797.TP
798\fBout_port=\fIport\fR
799If set, a matching flow must include an output action to \fIport\fR.
a9b4a41a 800.
064af421 801.SS "Table Entry Output"
a9b4a41a 802.
4e312e69 803The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information
064af421
BP
804about the entries in a datapath's tables. Each line of output is a
805unique flow entry, which begins with some common information:
a9b4a41a 806.
064af421
BP
807.IP \fBduration\fR
808The number of seconds the entry has been in the table.
a9b4a41a 809.
064af421
BP
810.IP \fBtable_id\fR
811The table that contains the flow. When a packet arrives, the switch
812begins searching for an entry at the lowest numbered table. Tables are
4e312e69 813numbered as shown by the \fBdump\-tables\fR command.
a9b4a41a 814.
064af421
BP
815.IP \fBpriority\fR
816The priority of the entry in relation to other entries within the same
817table. A higher value will match before a lower one.
a9b4a41a 818.
064af421
BP
819.IP \fBn_packets\fR
820The number of packets that have matched the entry.
a9b4a41a 821.
064af421
BP
822.IP \fBn_bytes\fR
823The total number of bytes from packets that have matched the entry.
a9b4a41a 824.
064af421
BP
825.PP
826The rest of the line consists of a description of the flow entry as
827described in \fBFlow Syntax\fR, above.
a9b4a41a
BP
828.
829.
064af421
BP
830.SH OPTIONS
831.TP
4e312e69 832\fB\-\-strict\fR
064af421 833Uses strict matching when running flow modification commands.
a9b4a41a 834.
88ca35ee
BP
835.IP "\fB\-F \fIformat\fR"
836.IQ "\fB\-\-flow\-format=\fIformat\fR"
837\fBovs\-ofctl\fR supports the following flow formats, in order of
838increasing capability:
839.RS
840.IP "\fBopenflow10\fR"
841This is the standard OpenFlow 1.0 flow format. It should be supported
842by all OpenFlow switches.
843.
88ca35ee
BP
844.IP "\fBnxm\fR (Nicira Extended Match)"
845This Nicira extension to OpenFlow is flexible and extensible. It
846supports all of the Nicira flow extensions, such as \fBtun_id\fR and
847registers.
848.RE
849.IP
850Usually, \fBovs\-ofctl\fR picks the correct format automatically. For
851commands that modify the flow table, \fBovs\-ofctl\fR by default uses
852the most widely supported flow format that supports the flows being
853added. For commands that query the flow table, \fBovs\-ofctl\fR by
854default queries and uses the most advanced format supported by the
855switch.
856.IP
857This option, where \fIformat\fR is one of the formats listed in the
858above table, overrides \fBovs\-ofctl\fR's default choice of flow
859format. If a command cannot work as requested using the requested
860flow format, \fBovs\-ofctl\fR will report a fatal error.
4f564f8d
BP
861.
862.IP "\fB\-m\fR"
863.IQ "\fB\-\-more\fR"
864Increases the verbosity of OpenFlow messages printed and logged by
865\fBovs\-ofctl\fR commands. Specify this option more than once to
866increase verbosity further.
ac300505 867.SS "Public Key Infrastructure Options"
84ee7bcf 868.so lib/ssl.man
064af421
BP
869.so lib/vlog.man
870.so lib/common.man
a9b4a41a 871.
064af421 872.SH EXAMPLES
a9b4a41a 873.
045b2e5c
BP
874The following examples assume that \fBovs\-vswitchd\fR has a bridge
875named \fBbr0\fR configured.
a9b4a41a 876.
064af421 877.TP
045b2e5c 878\fBovs\-ofctl dump\-tables br0\fR
064af421
BP
879Prints out the switch's table stats. (This is more interesting after
880some traffic has passed through.)
a9b4a41a 881.
064af421 882.TP
045b2e5c 883\fBovs\-ofctl dump\-flows br0\fR
064af421 884Prints the flow entries in the switch.
a9b4a41a 885.
064af421 886.SH "SEE ALSO"
a9b4a41a 887.
064af421
BP
888.BR ovs\-appctl (8),
889.BR ovs\-controller (8),
890.BR ovs\-vswitchd (8)