dd5f7755ea1667452614ce5bcaa594953c25bae6
[sliver-openvswitch.git] / utilities / dpctl.8
1 .TH dpctl 8 "May 2008" "OpenFlow" "OpenFlow Manual"
2
3 .SH NAME
4 dpctl \- administer OpenFlow datapaths
5
6 .SH SYNOPSIS
7 .B dpctl
8 [\fIoptions\fR] \fIcommand \fR[\fIswitch\fR] [\fIargs\fR&...]
9
10 .SH DESCRIPTION
11 The
12 .B dpctl
13 program is a command line tool for monitoring and administering OpenFlow 
14 datapaths.  It is able to show the current state of a datapath,
15 including features, configuration, and tables entries.  When using the
16 OpenFlow kernel module,
17 .B dpctl
18 is used to add, delete, modify, and monitor datapaths.  
19
20 Most \fBdpctl\fR commands take an argument that specifies the
21 method for connecting to an OpenFlow switch.  The following connection
22 methods are supported:
23
24 .TP
25 \fBnl:\fIdp_idx\fR
26 The local Netlink datapath numbered \fIdp_idx\fR.  This form requires
27 that the local host has the OpenFlow kernel module for Linux loaded.
28
29 .TP
30 \fBssl:\fIhost\fR[\fB:\fIport\fR]
31 The specified SSL \fIport\fR (default: 976) on the given remote
32 \fIhost\fR.  The \fB--private-key\fR, \fB--certificate\fR, and
33 \fB--ca-cert\fR options are mandatory when this form is used.
34
35 .TP
36 \fBtcp:\fIhost\fR[\fB:\fIport\fR]
37 The specified TCP \fIport\fR (default: 975) on the given remote
38 \fIhost\fR.
39
40 .SH COMMANDS
41
42 With the \fBdpctl\fR program, datapaths running in the kernel can be 
43 created, deleted, modified, and monitored.  A single machine may 
44 host up to 32 datapaths (numbered 0 to 31).  In most situations, 
45 a machine hosts only one datapath.
46
47 A newly created datapath is not associated with any of the
48 host's network devices thus does not process any incoming
49 traffic.  To intercept and process traffic on a given network device, the
50 network device must be explicitly added to a datapath through the
51 \fBaddif\fR command.
52
53 The following commands manage local datapaths.
54
55 .TP
56 \fBadddp nl:\fIdp_idx\fR
57 Creates datapath numbered \fIdp_idx\fR on the local host.  This will 
58 fail if \fIdp_idx\fR is not in the range 0 to 31, or if the datapath 
59 with that number already exists on the host.
60
61 .TP
62 \fBdeldp nl:\fIdp_idx\fR
63 Deletes datapath \fIdp_idx\fR on the local host.  \fIdp_idx\fR must be
64 an existing datapath.  All of a datapath's network devices must be
65 explicitly removed before the datapath can be deleted (see \fBdelif\fR
66 command).
67
68 .TP
69 \fBaddif nl:\fIdp_idx netdev\fR
70 Adds \fInetdev\fR to the list of network devices datapath
71 \fIdp_idx\fR monitors, where \fIdp_idx\fR is the ID of an existing
72 datapath, and \fInetdev\fR is the name of one of the host's
73 network devices, e.g. \fBeth0\fR.  Once a network device has been added
74 to a datapath, the datapath has complete ownership of the network device's
75 traffic and the network device appears silent to the rest of the system.
76
77 .TP
78 \fBdelif nl:\fIdp_idx netdev\fR
79 Removes \fInetdev\fR from the list of network devices datapath
80 \fIdp_idx\fR monitors.
81
82 .TP
83 \fBmonitor nl:\fIdp_idx\fR
84 Prints to the console all OpenFlow packets sent by datapath
85 \fIdp_idx\fR to its controller, where \fIdp_idx\fR is the ID of an
86 existing datapath.
87
88 .TP
89 \fBbenchmark-nl nl:\fIdp_idx n size\fR
90 Checks the netlink performance between the kernel and userspace.
91 This is done by sending \fIN\fR packets of \fIsize\fR bytes from
92 the kernel module to dpctl.
93
94 .PP
95 The following commands can be used regardless of the connection method.
96
97 .TP
98 \fBshow \fIswitch\fR
99 Prints to the console information on datapath \fIswitch\fR including
100 information on its flow tables and ports.
101
102 .TP
103 \fBdump-tables \fIswitch\fR
104 Prints to the console statistics for each of the flow tables used by
105 datapath \fIswitch\fR.
106
107 .TP
108 \fBdump-ports \fIswitch\fR
109 Prints to the console statistics for each of the network devices
110 associated with datapath \fIswitch\fR.
111
112 .TP
113 \fBdump-flows \fIswitch \fR[\fIflows\fR]
114 Prints to the console all flow entries in datapath \fIswitch\fR's
115 tables that match \fIflows\fR.  If \fIflows\fR is omitted, all flows
116 in the datapath are retrieved.  See \fBFLOW SYNTAX\fR, below, for the
117 syntax of \fIflows\fR.
118
119 .TP
120 \fBdump-aggregate \fIswitch \fR[\fIflows\fR]
121 Prints to the console aggregate statistics for flows in datapath
122 \fSWITCH\fR's tables that match \fIflows\fR.  If \fIflows\fR is omitted, 
123 the statistics are aggregated across all flows in the datapath's flow
124 tables.  See \fBFLOW SYNTAX\fR, below, for the syntax of \fIflows\fR.
125
126 .TP
127 \fBadd-flows \fIswitch file\fR
128 Add flow entries as described in \fIfile\fR to the datapath \fIswitch\fR's 
129 tables.  Each line in \fIfile\fR is a flow entry in the format
130 described in \fBFLOW SYNTAX\fB, below.
131
132 .TP
133 \fBdel-flows \fIswitch \fR[\fIflow\fR]
134 Deletes entries from the datapath \fIswitch\fR's tables that match
135 \fIflow\fR.  If \fIflow\fR is omitted, all flows in the datapath's
136 tables are removed.  See \fBFLOW SYNTAX\fR, below, for the syntax of
137 \fIflows\fR.
138
139 .SH "FLOW SYNTAX"
140
141 Some \fBdpctl\fR commands accept an argument that describes a flow or
142 flows.  Such flow descriptions comprise a series
143 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
144 space.
145
146 The following field assignments describe how a flow matches a packet.
147 If any of these assignments is omitted from the flow syntax, the field
148 is treated as a wildcard; thus, if all of them are omitted, the
149 resulting flow matches all packets.  The string \fB*\fR or \fBANY\fR
150 may be specified a value to explicitly mark any of these fields as a
151 wildcard.
152
153 .IP \fBin_port=\fIport_no\fR
154 Matches physical port \fIport_no\fR.  Switch ports are numbered as
155 displayed by \fBdpctl show\fR.
156
157 .IP \fBdl_vlan=\fIvlan\fR
158 Matches IEEE 802.1q virtual LAN tag \fIvlan\fR.  Specify \fB0xffff\fR
159 as \fIvlan\fR to match packets that are not tagged with a virtual LAN;
160 otherwise, specify a number between 0 and 4095, inclusive, as the
161 12-bit VLAN ID to match.
162
163 .IP \fBdl_src=\fImac\fR
164 Matches Ethernet source address \fImac\fR, which should be specified
165 as 6 pairs of hexadecimal digits delimited by colons,
166 e.g. \fB00:0A:E4:25:6B:B0\fR.
167
168 .IP \fBdl_dst=\fImac\fR
169 Matches Ethernet destination address \fImac\fR.
170
171 .IP \fBdl_type=\fIethertype\fR
172 Matches Ethernet protocol type \fIethertype\fR, which should be
173 specified as a integer between 0 and 65535, inclusive, either in
174 decimal or as a hexadecimal number prefixed by \fB0x\fR,
175 e.g. \fB0x0806\fR to match ARP packets.
176
177 .IP \fBnw_src=\fIip\fR
178 Matches IPv4 source address \fIip\fR, which should be specified as an
179 IP address or host name, e.g. \fB192.168.1.1\fR or
180 \fBwww.example.com\fR.
181
182 .IP \fBnw_dst=\fInw_dst\fR
183 Matches IPv4 destination address \fIip\fR.
184
185 .IP \fBnw_proto=\fIproto\fR
186 Matches IP protocol type \fIproto\fR, which should be specified as a
187 decimal number between 0 and 255, inclusive, e.g. 6 to match TCP
188 packets.
189
190 .IP \fBtp_src=\fIport\fR
191 Matches UDP or TCP source port \fIport\fR, which should be specified
192 as a decimal number between 0 and 65535, inclusive, e.g. 80 to match
193 packets originating from a HTTP server.
194
195 .IP \fBtp_dst=\fIport\fR
196 Matches UDP or TCP destination port \fIport\fR.
197
198 .PP
199 The \fBadd-flow\fR command requires an additional field:
200
201 .IP \fBaction=\fItarget\fR
202 Specifies the action to take on a packet when the flow entry matches.
203 The \fItarget\fR may be a decimal port number designating the physical
204 port on which to output the packet, or one of the following keywords:
205
206 .RS
207 .IP \fBnormal\fR
208 Subjects the packet to the device's normal L2/L3 processing.  This
209 action is not implemented by all OpenFlow switches.
210
211 .IP \fBflood\fR
212 Outputs the packet on all switch physical ports other than the port on
213 which it was received and any ports on which flooding is disabled
214 (typically, these would be ports disabled by the IEEE 802.1D spanning
215 tree protocol).
216
217 .IP \fBall\fR
218 Outputs the packet on all switch physical ports other than the port on
219 which it was received.
220
221 .IP \fBcontroller\fR
222 Sends the packet to the OpenFlow controller as a ``packet in''
223 message.
224
225 .IP \fBlocal\fR
226 Outputs the packet on the ``local port,'' which corresponds to the
227 \fBof\fIn\fR network device (see \fBCONTACTING THE CONTROLLER\fR in
228 \fBsecchan\fR(8) for information on the \fBof\fIn\fR network device).
229 .RE
230
231 .IP
232 (The OpenFlow protocol supports other actions that \fBdpctl\fR does
233 not yet expose to the user.)
234
235 .PP
236 The \fBadd-flows\fR and \fBdel-flows\fR commands support an additional
237 optional field:
238
239 .IP \fBpriority=\fIvalue\fR
240 Sets the priority of the flow to be added or deleted to \fIvalue\fR,
241 which should be a number between 0 and 65535, inclusive.  If this
242 field is not specified, it defaults to 32768.
243
244 .PP
245 The \fBdump-flows\fR and \fBdump-aggregate\fR commands support an
246 additional optional field:
247
248 .IP \fBtable=\fInumber\fR
249 If specified, limits the flows about which statistics are gathered to
250 those in the table with the given \fInumber\fR.  Tables are numbered
251 as shown by the \fBdump-tables\fR command.
252
253 If this field is not specified, or if \fInumber\fR is given as
254 \fB255\fR, statistics are gathered about flows from all tables.
255
256 .SH OPTIONS
257 .TP
258 \fB-p\fR, \fB--private-key=\fIprivkey.pem\fR
259 Specifies a PEM file containing the private key used as the
260 identity for SSL connections to a switch.
261
262 .TP
263 \fB-c\fR, \fB--certificate=\fIcert.pem\fR
264 Specifies a PEM file containing a certificate, signed by the
265 controller's certificate authority (CA), that certifies the
266 private key to identify a trustworthy controller.
267
268 .TP
269 \fB-C\fR, \fB--ca-cert=\fIcacert.pem\fR
270 Specifies a PEM file containing the CA certificate used to verify that
271 a switch is trustworthy.
272
273 .TP
274 .BR \-h ", " \-\^\-help
275 Prints a brief help message to the console.
276
277 .TP
278 \fB-v\fR \fImodule\fB:\fIfacility\fB:\fIlevel\fR, \fB--verbose=\fImodule\fB:\fIfacility\fB:\fIlevel\fR
279 Sets the logging level for \fImodule\fR in \fIfacility\fR to
280 \fIlevel\fR.  The \fImodule\fR may be any valid module name (as
281 displayed by the \fB--list\fR action on \fBvlogconf\fR(8)), or the
282 special name \fBANY\fR to set the logging levels for all modules.  The
283 \fIfacility\fR may be \fBsyslog\fR or \fBconsole\fR to set the levels
284 for logging to the system log or to the console, respectively, or
285 \fBANY\fR to set the logging levels for both facilities.  The
286 \fIlevel\fR must be one of \fBemer\fR, \fBerr\fR, \fBwarn\fR, or
287 \fBdbg\fR, designating the minimum severity of a message for it to be
288 logged.
289
290 .TP
291 \fB-v\fR, \fB--verbose\fR
292 Sets the maximum logging verbosity level, equivalent to
293 \fB--verbose=ANY:ANY:dbg\fR.
294
295 .TP
296 .BR \-V ", " \-\^\-version
297 Prints version information to the console.
298
299 .SH EXAMPLES
300
301 A typical dpctl command sequence for controlling an OpenFlow kernel module:
302 .nf
303 .TP
304 Create datapath numbered 0:
305
306 .B % dpctl adddp nl:0
307
308 .TP
309 Add two network devices to the new datapath:
310
311 .B % dpctl addif nl:0 eth0
312 .B % dpctl addif nl:0 eth1
313
314 .TP
315 Monitor traffic received by the datapath (exit with control-C):
316
317 .B % dpctl monitor nl:0
318
319
320 .TP
321 View the datapath's table stats after some traffic has passed through:
322
323 .B % dpctl dump-tables nl:0
324
325 .TP
326 View the flow entries in the datapath:
327
328 .B % dpctl dump-flows nl:0 
329
330 .TP
331 Remove network devices from the datapath when finished:
332
333 .B % dpctl delif nl:0 eth0
334 .B % dpctl delif nl:0 eth1
335
336 .TP
337 Delete the datapath:
338
339 .B % dpctl deldp nl:0
340 .fi
341 .SH "SEE ALSO"
342
343 .BR secchan (8),
344 .BR switch (8),
345 .BR controller (8),
346 .BR vlogconf (8)