]> git.proxmox.com Git - mirror_ovs.git/blame - utilities/ovs-ofctl.8.in
Fix excessive white space in manpages.
[mirror_ovs.git] / utilities / ovs-ofctl.8.in
CommitLineData
a9b4a41a
BP
1.\" -*- nroff -*-
2.de IQ
3. br
4. ns
5. IP "\\$1"
6..
834377ea 7.TH ovs\-ofctl 8 "January 2010" "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
BP
56.TP
57\fBstatus \fIswitch\fR [\fIkey\fR]
58Prints to the console a series of key-value pairs that report the
59status of \fIswitch\fR. If \fIkey\fR is specified, only the key-value
60pairs whose key names begin with \fIkey\fR are printed. If \fIkey\fR is
61omitted, all key-value pairs are printed.
a9b4a41a 62.
064af421
BP
63.TP
64\fBdump-tables \fIswitch\fR
65Prints to the console statistics for each of the flow tables used by
66\fIswitch\fR.
a9b4a41a 67.
064af421 68.TP
abaad8cf
JP
69\fBdump-ports \fIswitch\fR [\fInetdev\fR]
70Prints to the console statistics for network devices associated with
71\fIswitch\fR. If \fInetdev\fR is specified, only the statistics
72associated with that device will be printed. \fInetdev\fR can be an
73OpenFlow assigned port number or device name, e.g. \fBeth0\fR.
a9b4a41a 74.
064af421
BP
75.TP
76\fBmod-port \fIswitch\fR \fInetdev\fR \fIaction\fR
77Modify characteristics of an interface monitored by \fIswitch\fR.
78\fInetdev\fR can be referred to by its OpenFlow assigned port number or
79the device name, e.g. \fBeth0\fR. The \fIaction\fR may be any one of the
80following:
a9b4a41a 81.
064af421
BP
82.RS
83.IP \fBup\fR
84Enables the interface. This is equivalent to ``ifconfig up'' on a Unix
85system.
a9b4a41a 86.
064af421
BP
87.IP \fBdown\fR
88Disables the interface. This is equivalent to ``ifconfig down'' on a Unix
89system.
a9b4a41a 90.
064af421
BP
91.IP \fBflood\fR
92When a \fIflood\fR action is specified, traffic will be sent out this
93interface. This is the default posture for monitored ports.
a9b4a41a 94.
064af421
BP
95.IP \fBnoflood\fR
96When a \fIflood\fR action is specified, traffic will not be sent out
97this interface. This is primarily useful to prevent loops when a
98spanning tree protocol is not in use.
a9b4a41a 99.
064af421 100.RE
a9b4a41a 101.
064af421
BP
102.TP
103\fBdump-flows \fIswitch \fR[\fIflows\fR]
104Prints to the console all flow entries in \fIswitch\fR's
105tables that match \fIflows\fR. If \fIflows\fR is omitted, all flows
106in the switch are retrieved. See \fBFlow Syntax\fR, below, for the
107syntax of \fIflows\fR. The output format is described in
108\fBTable Entry Output\fR.
a9b4a41a 109.
064af421
BP
110.TP
111\fBdump-aggregate \fIswitch \fR[\fIflows\fR]
112Prints to the console aggregate statistics for flows in
113\fIswitch\fR's tables that match \fIflows\fR. If \fIflows\fR is omitted,
114the statistics are aggregated across all flows in the switch's flow
115tables. See \fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
116The output format is descrbed in \fBTable Entry Output\fR.
a9b4a41a 117.
064af421
BP
118.TP
119\fBadd-flow \fIswitch flow\fR
120Add the flow entry as described by \fIflow\fR to the \fIswitch\fR's
121tables. The flow entry is in the format described in \fBFlow Syntax\fR,
122below.
a9b4a41a 123.
064af421
BP
124.TP
125\fBadd-flows \fIswitch file\fR
126Add flow entries as described in \fIfile\fR to \fIswitch\fR's
127tables. Each line in \fIfile\fR is a flow entry in the format
128described in \fBFlow Syntax\fR, below.
a9b4a41a 129.
064af421
BP
130.TP
131\fBmod-flows \fIswitch flow\fR
132Modify the actions in entries from the \fIswitch\fR's tables
133that match \fIflow\fR. When invoked with the \fB--strict\fR option,
134wildcards are not treated as active for matching purposes. See
135\fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
a9b4a41a 136.
064af421
BP
137.TP
138\fBdel-flows \fIswitch \fR[\fIflow\fR]
139Deletes entries from the \fIswitch\fR's tables that match
140\fIflow\fR. When invoked with the \fB--strict\fR option, wildcards are
141not treated as active for matching purposes. If \fIflow\fR is
142omitted and the \fB--strict\fR option is not used, all flows in the
143switch's tables are removed. See \fBFlow Syntax\fR, below, for the
144syntax of \fIflows\fR.
a9b4a41a 145.
064af421 146.TP
ca069229 147\fBmonitor \fIswitch\fR [\fImiss-len\fR]
064af421
BP
148Connects to \fIswitch\fR and prints to the console all OpenFlow
149messages received. Usually, \fIswitch\fR should specify a connection
8cd4882f 150named on \fBovs\-openflowd\fR(8)'s \fB-l\fR or \fB--listen\fR command line
064af421 151option.
a9b4a41a 152.IP
064af421
BP
153If \fImiss-len\fR is provided, \fBovs\-ofctl\fR sends an OpenFlow ``set
154configuration'' message at connection setup time that requests
155\fImiss-len\fR bytes of each packet that misses the flow table. The
cae40bbd 156OpenFlow reference implementation does not send these messages to the
064af421
BP
157\fBovs\-ofctl monitor\fR client connection unless a nonzero value is
158specified on this argument.
a9b4a41a 159.IP
064af421
BP
160This command may be useful for debugging switch or controller
161implementations.
a9b4a41a 162.
064af421 163.SS "OpenFlow Switch and Controller Commands"
a9b4a41a 164.
064af421
BP
165The following commands, like those in the previous section, may be
166applied to OpenFlow switches, using any of the connection methods
167described in that section. Unlike those commands, these may also be
168applied to OpenFlow controllers.
a9b4a41a 169.
064af421
BP
170.TP
171\fBprobe \fItarget\fR
172Sends a single OpenFlow echo-request message to \fItarget\fR and waits
173for the response. With the \fB-t\fR or \fB--timeout\fR option, this
174command can test whether an OpenFlow switch or controller is up and
175running.
a9b4a41a 176.
064af421
BP
177.TP
178\fBping \fItarget \fR[\fIn\fR]
179Sends a series of 10 echo request packets to \fItarget\fR and times
180each reply. The echo request packets consist of an OpenFlow header
181plus \fIn\fR bytes (default: 64) of randomly generated payload. This
182measures the latency of individual requests.
a9b4a41a 183.
064af421
BP
184.TP
185\fBbenchmark \fItarget n count\fR
186Sends \fIcount\fR echo request packets that each consist of an
187OpenFlow header plus \fIn\fR bytes of payload and waits for each
188response. Reports the total time required. This is a measure of the
189maximum bandwidth to \fItarget\fR for round-trips of \fIn\fR-byte
190messages.
a9b4a41a 191.
064af421 192.SS "Flow Syntax"
a9b4a41a 193.PP
064af421
BP
194Some \fBovs\-ofctl\fR commands accept an argument that describes a flow or
195flows. Such flow descriptions comprise a series
196\fIfield\fB=\fIvalue\fR assignments, separated by commas or white
197space. (Embedding spaces into a flow description normally requires
198quoting to prevent the shell from breaking the description into
199multiple arguments.)
a9b4a41a 200.PP
064af421
BP
201The following field assignments describe how a flow matches a packet.
202If any of these assignments is omitted from the flow syntax, the field
203is treated as a wildcard; thus, if all of them are omitted, the
204resulting flow matches all packets. The string \fB*\fR or \fBANY\fR
205may be specified to explicitly mark any of these fields as a wildcard.
206(\fB*\fR should be quoted to protect it from shell expansion.)
a9b4a41a 207.
064af421
BP
208.IP \fBin_port=\fIport_no\fR
209Matches physical port \fIport_no\fR. Switch ports are numbered as
210displayed by \fBovs\-ofctl show\fR.
a9b4a41a 211.
064af421 212.IP \fBdl_vlan=\fIvlan\fR
f30f26be
JP
213Matches IEEE 802.1q Virtual LAN tag \fIvlan\fR. Specify \fB0xffff\fR
214as \fIvlan\fR to match packets that are not tagged with a Virtual LAN;
064af421
BP
215otherwise, specify a number between 0 and 4095, inclusive, as the
21612-bit VLAN ID to match.
a9b4a41a 217.
959a2ecd
JP
218.IP \fBdl_vlan_pcp=\fIpriority\fR
219Matches IEEE 802.1q Priority Code Point (PCP) \fIpriority\fR, which is
220specified as a value between 0 and 7, inclusive. A higher value
221indicates a higher frame priority level.
a9b4a41a 222.
064af421
BP
223.IP \fBdl_src=\fImac\fR
224Matches Ethernet source address \fImac\fR, which is specified as 6 pairs
225of hexadecimal digits delimited by colons (e.g. \fB00:0A:E4:25:6B:B0\fR).
064af421
BP
226.IP \fBdl_dst=\fImac\fR
227Matches Ethernet destination address \fImac\fR.
064af421
BP
228.IP \fBdl_type=\fIethertype\fR
229Matches Ethernet protocol type \fIethertype\fR, which is specified as an
230integer between 0 and 65535, inclusive, either in decimal or as a
231hexadecimal number prefixed by \fB0x\fR (e.g. \fB0x0806\fR to match ARP
232packets).
a9b4a41a 233.
064af421
BP
234.IP \fBnw_src=\fIip\fR[\fB/\fInetmask\fR]
235Matches IPv4 source address \fIip\fR, which may be specified as an
236IP address or host name (e.g. \fB192.168.1.1\fR or
237\fBwww.example.com\fR). The optional \fInetmask\fR allows restricting a
238match to an IPv4 address prefix. The netmask may be specified as a dotted
239quad (e.g. \fB192.168.1.0/255.255.255.0\fR) or as a CIDR block
240(e.g. \fB192.168.1.0/24\fR).
a9b4a41a 241.
064af421
BP
242.IP \fBnw_dst=\fIip\fR[\fB/\fInetmask\fR]
243Matches IPv4 destination address \fIip\fR.
064af421 244.IP \fBnw_proto=\fIproto\fR
a9b4a41a 245.
064af421
BP
246Matches IP protocol type \fIproto\fR, which is specified as a decimal
247number between 0 and 255, inclusive (e.g. 6 to match TCP packets).
834377ea
JP
248.IP \fBnw_tos=\fItos\fR
249Matches IP ToS/DSCP field \fItos\fR, which is specified as a decimal
250number between 0 and 255, inclusive. Note that the two lower reserved
251bits are ignored for matching purposes.
a9b4a41a 252.
064af421
BP
253.IP \fBtp_src=\fIport\fR
254Matches UDP or TCP source port \fIport\fR, which is specified as a decimal
255number between 0 and 65535, inclusive (e.g. 80 to match packets originating
256from a HTTP server).
a9b4a41a 257.
064af421
BP
258.IP \fBtp_dst=\fIport\fR
259Matches UDP or TCP destination port \fIport\fR.
064af421 260.IP \fBicmp_type=\fItype\fR
a9b4a41a 261.
064af421
BP
262Matches ICMP message with \fItype\fR, which is specified as a decimal
263number between 0 and 255, inclusive.
064af421
BP
264.IP \fBicmp_code=\fIcode\fR
265Matches ICMP messages with \fIcode\fR.
064af421
BP
266.PP
267The following shorthand notations are also available:
a9b4a41a 268.
064af421
BP
269.IP \fBip\fR
270Same as \fBdl_type=0x0800\fR.
a9b4a41a 271.
064af421
BP
272.IP \fBicmp\fR
273Same as \fBdl_type=0x0800,nw_proto=1\fR.
a9b4a41a 274.
064af421
BP
275.IP \fBtcp\fR
276Same as \fBdl_type=0x0800,nw_proto=6\fR.
a9b4a41a 277.
064af421
BP
278.IP \fBudp\fR
279Same as \fBdl_type=0x0800,nw_proto=17\fR.
a9b4a41a 280.
064af421
BP
281.IP \fBarp\fR
282Same as \fBdl_type=0x0806\fR.
a9b4a41a 283.
064af421
BP
284.PP
285The \fBadd-flow\fR and \fBadd-flows\fR commands require an additional field:
a9b4a41a 286.
064af421
BP
287.IP \fBactions=\fR[\fItarget\fR][\fB,\fItarget\fR...]\fR
288Specifies a comma-separated list of actions to take on a packet when the
289flow entry matches. If no \fItarget\fR is specified, then packets
290matching the flow are dropped. The \fItarget\fR may be a decimal port
291number designating the physical port on which to output the packet, or one
292of the following keywords:
a9b4a41a 293.
064af421
BP
294.RS
295.IP \fBoutput\fR:\fIport\fR
296Outputs the packet on the port specified by \fIport\fR.
a9b4a41a 297.
064af421
BP
298.IP \fBnormal\fR
299Subjects the packet to the device's normal L2/L3 processing. (This
300action is not implemented by all OpenFlow switches.)
a9b4a41a 301.
064af421
BP
302.IP \fBflood\fR
303Outputs the packet on all switch physical ports other than the port on
304which it was received and any ports on which flooding is disabled
305(typically, these would be ports disabled by the IEEE 802.1D spanning
306tree protocol).
a9b4a41a 307.
064af421
BP
308.IP \fBall\fR
309Outputs the packet on all switch physical ports other than the port on
310which it was received.
a9b4a41a 311.
064af421
BP
312.IP \fBcontroller\fR:\fImax_len\fR
313Sends the packet to the OpenFlow controller as a ``packet in''
314message. If \fImax_len\fR is a number, then it specifies the maximum
315number of bytes that should be sent. If \fImax_len\fR is \fBALL\fR or
316omitted, then the entire packet is sent.
a9b4a41a 317.
064af421
BP
318.IP \fBlocal\fR
319Outputs the packet on the ``local port,'' which corresponds to the
320\fBof\fIn\fR network device (see \fBCONTACTING THE CONTROLLER\fR in
8cd4882f 321\fBovs\-openflowd\fR(8) for information on the \fBof\fIn\fR network device).
a9b4a41a 322.
064af421
BP
323.IP \fBdrop\fR
324Discards the packet, so no further processing or forwarding takes place.
325If a drop action is used, no other actions may be specified.
a9b4a41a 326.
064af421
BP
327.IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
328Modifies the VLAN id on a packet. The VLAN tag is added or modified
329as necessary to match the value specified. If the VLAN tag is added,
330a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
331this).
a9b4a41a 332.
064af421
BP
333.IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
334Modifies the VLAN priority on a packet. The VLAN tag is added or modified
335as necessary to match the value specified. Valid values are between 0
336(lowest) and 7 (highest). If the VLAN tag is added, a vid of zero is used
337(see the \fBmod_vlan_vid\fR action to set this).
a9b4a41a 338.
064af421
BP
339.IP \fBstrip_vlan\fR
340Strips the VLAN tag from a packet if it is present.
a9b4a41a 341.
064af421
BP
342.IP \fBmod_dl_src\fB:\fImac\fR
343Sets the source Ethernet address to \fImac\fR.
a9b4a41a 344.
064af421
BP
345.IP \fBmod_dl_dst\fB:\fImac\fR
346Sets the destination Ethernet address to \fImac\fR.
a9b4a41a 347.
e423eca6
JP
348.IP \fBmod_nw_src\fB:\fIip\fR
349Sets the IPv4 source address to \fIip\fR.
a9b4a41a 350.
e423eca6
JP
351.IP \fBmod_nw_dst\fB:\fIip\fR
352Sets the IPv4 destination address to \fIip\fR.
a9b4a41a 353.
e423eca6
JP
354.IP \fBmod_tp_src\fB:\fIport\fR
355Sets the TCP or UDP source port to \fIport\fR.
a9b4a41a 356.
e423eca6
JP
357.IP \fBmod_tp_dst\fB:\fIport\fR
358Sets the TCP or UDP destination port to \fIport\fR.
a9b4a41a 359.
959a2ecd
JP
360.IP \fBmod_nw_tos\fB:\fItos\fR
361Sets the IP ToS/DSCP field to \fItos\fR. Valid values are between 0 and
362255, inclusive. Note that the two lower reserved bits are never
363modified.
a9b4a41a 364.
064af421 365.RE
a9b4a41a 366.
064af421
BP
367.IP
368(The OpenFlow protocol supports other actions that \fBovs\-ofctl\fR does
369not yet expose to the user.)
a9b4a41a 370.
064af421
BP
371.PP
372The \fBadd-flow\fR, \fBadd-flows\fR, and \fBdel-flows\fR commands
373support an additional optional field:
a9b4a41a 374.
064af421
BP
375.IP \fBpriority=\fIvalue\fR
376The priority at which a wildcarded entry will match in comparison to
377others. \fIvalue\fR is a number between 0 and 65535, inclusive. A higher
378\fIvalue\fR will match before a lower one. An exact-match entry will always
379have priority over an entry containing wildcards, so it has an implicit
380priority value of 65535. When adding a flow, if the field is not specified,
381the flow's priority will default to 32768.
a9b4a41a 382.
064af421
BP
383.PP
384The \fBadd-flow\fR and \fBadd-flows\fR commands support additional
385optional fields:
a9b4a41a 386.
064af421
BP
387.TP
388\fBidle_timeout=\fIseconds\fR
389Causes the flow to expire after the given number of seconds of
390inactivity. A value of 0 prevents a flow from expiring due to
391inactivity. The default is 60 seconds.
a9b4a41a 392.
064af421
BP
393.IP \fBhard_timeout=\fIseconds\fR
394Causes the flow to expire after the given number of seconds,
395regardless of activity. A value of 0 (the default) gives the flow no
396hard expiration deadline.
a9b4a41a 397.
064af421
BP
398.PP
399The \fBdump-flows\fR, \fBdump-aggregate\fR, \fBdel-flow\fR
400and \fBdel-flows\fR commands support one additional optional field:
a9b4a41a 401.
064af421
BP
402.TP
403\fBout_port=\fIport\fR
404If set, a matching flow must include an output action to \fIport\fR.
a9b4a41a 405.
064af421
BP
406.PP
407The \fBdump-flows\fR and \fBdump-aggregate\fR commands support an
408additional optional field:
a9b4a41a 409.
064af421
BP
410.IP \fBtable=\fInumber\fR
411If specified, limits the flows about which statistics are gathered to
412those in the table with the given \fInumber\fR. Tables are numbered
413as shown by the \fBdump-tables\fR command.
a9b4a41a 414.
064af421
BP
415If this field is not specified, or if \fInumber\fR is given as
416\fB255\fR, statistics are gathered about flows from all tables.
a9b4a41a 417.
064af421 418.SS "Table Entry Output"
a9b4a41a 419.
064af421
BP
420The \fBdump-tables\fR and \fBdump-aggregate\fR commands print information
421about the entries in a datapath's tables. Each line of output is a
422unique flow entry, which begins with some common information:
a9b4a41a 423.
064af421
BP
424.IP \fBduration\fR
425The number of seconds the entry has been in the table.
a9b4a41a 426.
064af421
BP
427.IP \fBtable_id\fR
428The table that contains the flow. When a packet arrives, the switch
429begins searching for an entry at the lowest numbered table. Tables are
430numbered as shown by the \fBdump-tables\fR command.
a9b4a41a 431.
064af421
BP
432.IP \fBpriority\fR
433The priority of the entry in relation to other entries within the same
434table. A higher value will match before a lower one.
a9b4a41a 435.
064af421
BP
436.IP \fBn_packets\fR
437The number of packets that have matched the entry.
a9b4a41a 438.
064af421
BP
439.IP \fBn_bytes\fR
440The total number of bytes from packets that have matched the entry.
a9b4a41a 441.
064af421
BP
442.PP
443The rest of the line consists of a description of the flow entry as
444described in \fBFlow Syntax\fR, above.
a9b4a41a
BP
445.
446.
064af421
BP
447.SH OPTIONS
448.TP
449\fB--strict\fR
450Uses strict matching when running flow modification commands.
a9b4a41a 451.
84ee7bcf 452.so lib/ssl.man
064af421
BP
453.so lib/vlog.man
454.so lib/common.man
a9b4a41a 455.
064af421 456.SH EXAMPLES
a9b4a41a 457.
064af421
BP
458The following examples assume that an OpenFlow switch on the local
459host has been configured to listen for management connections on a
460Unix domain socket named \fB@RUNDIR@/openflow.sock\fR, e.g. by
461specifying \fB--listen=punix:@RUNDIR@/openflow.sock\fR on the
8cd4882f 462\fBovs\-openflowd\fR(8) command line.
a9b4a41a 463.
064af421
BP
464.TP
465\fBovs\-ofctl dump-tables unix:@RUNDIR@/openflow.sock\fR
466Prints out the switch's table stats. (This is more interesting after
467some traffic has passed through.)
a9b4a41a 468.
064af421
BP
469.TP
470\fBovs\-ofctl dump-flows unix:@RUNDIR@/openflow.sock\fR
471Prints the flow entries in the switch.
a9b4a41a 472.
064af421 473.SH "SEE ALSO"
a9b4a41a 474.
064af421
BP
475.BR ovs\-appctl (8),
476.BR ovs\-controller (8),
477.BR ovs\-vswitchd (8)