]> git.proxmox.com Git - ovs.git/blob - utilities/ovs-ofctl.8.in
ofproto-dpif: Use dp_hash as default selection method
[ovs.git] / utilities / ovs-ofctl.8.in
1 .\" -*- nroff -*-
2 .de IQ
3 . br
4 . ns
5 . IP "\\$1"
6 ..
7 .TH ovs\-ofctl 8 "@VERSION@" "Open vSwitch" "Open vSwitch Manual"
8 .ds PN ovs\-ofctl
9 .
10 .SH NAME
11 ovs\-ofctl \- administer OpenFlow switches
12 .
13 .SH SYNOPSIS
14 .B ovs\-ofctl
15 [\fIoptions\fR] \fIcommand \fR[\fIswitch\fR] [\fIargs\fR\&...]
16 .
17 .SH DESCRIPTION
18 The
19 .B ovs\-ofctl
20 program is a command line tool for monitoring and administering
21 OpenFlow switches. It can also show the current state of an OpenFlow
22 switch, including features, configuration, and table entries.
23 It should work with any OpenFlow switch, not just Open vSwitch.
24 .
25 .SS "OpenFlow Switch Management Commands"
26 .PP
27 These commands allow \fBovs\-ofctl\fR to monitor and administer an OpenFlow
28 switch. It is able to show the current state of a switch, including
29 features, configuration, and table entries.
30 .PP
31 Most of these commands take an argument that specifies the method for
32 connecting to an OpenFlow switch. The following connection methods
33 are supported:
34 .
35 .RS
36 .so lib/vconn-active.man
37 .
38 .IP "\fIfile\fR"
39 This is short for \fBunix:\fIfile\fR, as long as \fIfile\fR does not
40 contain a colon.
41 .
42 .IP \fIbridge\fR
43 This 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
47 Attempts to look up the bridge associated with \fIdp\fR and open as
48 above. If \fItype\fR is given, it specifies the datapath provider of
49 \fIdp\fR, otherwise the default provider \fBsystem\fR is assumed.
50 .RE
51 .
52 .TP
53 \fBshow \fIswitch\fR
54 Prints to the console information on \fIswitch\fR, including
55 information on its flow tables and ports.
56 .
57 .TP
58 \fBdump\-tables \fIswitch\fR
59 Prints to the console statistics for each of the flow tables used by
60 \fIswitch\fR.
61 .TP
62 \fBdump\-table\-features \fIswitch\fR
63 Prints to the console features for each of the flow tables used by
64 \fIswitch\fR.
65 .TP
66 \fBdump\-table\-desc \fIswitch\fR
67 Prints to the console configuration for each of the flow tables used
68 by \fIswitch\fR for OpenFlow 1.4+.
69 .IP "\fBmod\-table \fIswitch\fR \fItable\fR \fIsetting\fR"
70 This command configures flow table settings in \fIswitch\fR for
71 OpenFlow table \fItable\fR, which may be expressed as a number or
72 (unless \fB\-\-no\-names\fR is specified) a name.
73 .IP
74 The available settings depend on
75 the OpenFlow version in use. In OpenFlow 1.1 and 1.2 (which must be
76 enabled with the \fB\-O\fR option) only, \fBmod\-table\fR configures
77 behavior when no flow is found when a packet is looked up in a flow
78 table. The following \fIsetting\fR values are available:
79 .RS
80 .IP \fBdrop\fR
81 Drop the packet.
82 .IP \fBcontinue\fR
83 Continue to the next table in the pipeline. (This is how an OpenFlow
84 1.0 switch always handles packets that do not match any flow, in
85 tables other than the last one.)
86 .IP \fBcontroller\fR
87 Send to controller. (This is how an OpenFlow 1.0 switch always
88 handles packets that do not match any flow in the last table.)
89 .RE
90 .IP
91 In OpenFlow 1.4 and later (which must be enabled with the \fB\-O\fR
92 option) only, \fBmod\-table\fR configures the behavior when a
93 controller attempts to add a flow to a flow table that is full. The
94 following \fIsetting\fR values are available:
95 .RS
96 .IP \fBevict\fR
97 Delete some existing flow from the flow table, according to the
98 algorithm described for the \fBFlow_Table\fR table in
99 \fBovs-vswitchd.conf.db\fR(5).
100 .IP \fBnoevict\fR
101 Refuse to add the new flow. (Eviction might still be enabled through
102 the \fBoverflow_policy\fR column in the \fBFlow_Table\fR table
103 documented in \fBovs-vswitchd.conf.db\fR(5).)
104 .IP \fBvacancy:\fIlow\fB,\fIhigh\fR
105 Enables sending vacancy events to controllers using \fBTABLE_STATUS\fR
106 messages, based on percentage thresholds \fIlow\fR and \fIhigh\fR.
107 .IP \fBnovacancy\fR
108 Disables vacancy events.
109 .RE
110 .
111 .TP
112 \fBdump\-ports \fIswitch\fR [\fInetdev\fR]
113 Prints to the console statistics for network devices associated with
114 \fIswitch\fR. If \fInetdev\fR is specified, only the statistics
115 associated with that device will be printed. \fInetdev\fR can be an
116 OpenFlow assigned port number or device name, e.g. \fBeth0\fR.
117 .
118 .IP "\fBdump\-ports\-desc \fIswitch\fR [\fIport\fR]"
119 Prints to the console detailed information about network devices
120 associated with \fIswitch\fR. To dump only a specific port, specify
121 its number as \fIport\fR. Otherwise, if \fIport\fR is omitted, or if
122 it is specified as \fBANY\fR, then all ports are printed. This is a
123 subset of the information provided by the \fBshow\fR command.
124 .IP
125 If the connection to \fIswitch\fR negotiates OpenFlow 1.0, 1.2, or
126 1.2, this command uses an OpenFlow extension only implemented in Open
127 vSwitch (version 1.7 and later).
128 .IP
129 Only OpenFlow 1.5 and later support dumping a specific port. Earlier
130 versions of OpenFlow always dump all ports.
131 .
132 .IP "\fBmod\-port \fIswitch\fR \fIport\fR \fIaction\fR"
133 Modify characteristics of port \fBport\fR in \fIswitch\fR. \fIport\fR
134 may be an OpenFlow port number or name (unless \fB\-\-no\-names\fR is
135 specified) or the keyword \fBLOCAL\fR (the
136 preferred way to refer to the OpenFlow local port). The \fIaction\fR
137 may be any one of the following:
138 .
139 .RS
140 .IQ \fBup\fR
141 .IQ \fBdown\fR
142 Enable or disable the interface. This is equivalent to \fBip
143 link set up\fR or \fBip link set down\fR on a Unix system.
144 .
145 .IP \fBstp\fR
146 .IQ \fBno\-stp\fR
147 Enable or disable 802.1D spanning tree protocol (STP) on the
148 interface. OpenFlow implementations that don't support STP will
149 refuse to enable it.
150 .
151 .IP \fBreceive\fR
152 .IQ \fBno\-receive\fR
153 .IQ \fBreceive\-stp\fR
154 .IQ \fBno\-receive\-stp\fR
155 Enable or disable OpenFlow processing of packets received on this
156 interface. When packet processing is disabled, packets will be
157 dropped instead of being processed through the OpenFlow table. The
158 \fBreceive\fR or \fBno\-receive\fR setting applies to all packets
159 except 802.1D spanning tree packets, which are separately controlled
160 by \fBreceive\-stp\fR or \fBno\-receive\-stp\fR.
161 .
162 .IP \fBforward\fR
163 .IQ \fBno\-forward\fR
164 Allow or disallow forwarding of traffic to this interface. By
165 default, forwarding is enabled.
166 .
167 .IP \fBflood\fR
168 .IQ \fBno\-flood\fR
169 Controls whether an OpenFlow \fBflood\fR action will send traffic out
170 this interface. By default, flooding is enabled. Disabling flooding
171 is primarily useful to prevent loops when a spanning tree protocol is
172 not in use.
173 .
174 .IP \fBpacket\-in\fR
175 .IQ \fBno\-packet\-in\fR
176 Controls whether packets received on this interface that do not match
177 a flow table entry generate a ``packet in'' message to the OpenFlow
178 controller. By default, ``packet in'' messages are enabled.
179 .RE
180 .IP
181 The \fBshow\fR command displays (among other information) the
182 configuration that \fBmod\-port\fR changes.
183 .
184 .IP "\fBget\-frags \fIswitch\fR"
185 Prints \fIswitch\fR's fragment handling mode. See \fBset\-frags\fR,
186 below, for a description of each fragment handling mode.
187 .IP
188 The \fBshow\fR command also prints the fragment handling mode among
189 its other output.
190 .
191 .IP "\fBset\-frags \fIswitch frag_mode\fR"
192 Configures \fIswitch\fR's treatment of IPv4 and IPv6 fragments. The
193 choices for \fIfrag_mode\fR are:
194 .RS
195 .IP "\fBnormal\fR"
196 Fragments pass through the flow table like non-fragmented packets.
197 The TCP ports, UDP ports, and ICMP type and code fields are always set
198 to 0, even for fragments where that information would otherwise be
199 available (fragments with offset 0). This is the default fragment
200 handling mode for an OpenFlow switch.
201 .IP "\fBdrop\fR"
202 Fragments are dropped without passing through the flow table.
203 .IP "\fBreassemble\fR"
204 The switch reassembles fragments into full IP packets before passing
205 them through the flow table. Open vSwitch does not implement this
206 fragment handling mode.
207 .IP "\fBnx\-match\fR"
208 Fragments pass through the flow table like non-fragmented packets.
209 The TCP ports, UDP ports, and ICMP type and code fields are available
210 for matching for fragments with offset 0, and set to 0 in fragments
211 with nonzero offset. This mode is a Nicira extension.
212 .RE
213 .IP
214 See the description of \fBip_frag\fR, below, for a way to match on
215 whether a packet is a fragment and on its fragment offset.
216 .
217 .TP
218 \fBdump\-flows \fIswitch \fR[\fIflows\fR]
219 Prints to the console all flow entries in \fIswitch\fR's
220 tables that match \fIflows\fR. If \fIflows\fR is omitted, all flows
221 in the switch are retrieved. See \fBFlow Syntax\fR, below, for the
222 syntax of \fIflows\fR. The output format is described in
223 \fBTable Entry Output\fR.
224 .
225 .IP
226 By default, \fBovs\-ofctl\fR prints flow entries in the same order
227 that the switch sends them, which is unlikely to be intuitive or
228 consistent. Use \fB\-\-sort\fR and \fB\-\-rsort\fR to control display
229 order. The \fB\-\-names\fR/\fB\-\-no\-names\fR and
230 \fB\-\-stats\fR/\fB\-\-no\-stats\fR options also affect output
231 formatting. See the descriptions of these options, under
232 \fBOPTIONS\fR below, for more information
233 .
234 .TP
235 \fBdump\-aggregate \fIswitch \fR[\fIflows\fR]
236 Prints to the console aggregate statistics for flows in
237 \fIswitch\fR's tables that match \fIflows\fR. If \fIflows\fR is omitted,
238 the statistics are aggregated across all flows in the switch's flow
239 tables. See \fBFlow Syntax\fR, below, for the syntax of \fIflows\fR.
240 The output format is described in \fBTable Entry Output\fR.
241 .
242 .IP "\fBqueue\-stats \fIswitch \fR[\fIport \fR[\fIqueue\fR]]"
243 Prints to the console statistics for the specified \fIqueue\fR on
244 \fIport\fR within \fIswitch\fR. \fIport\fR can be an OpenFlow port
245 number or name, the keyword \fBLOCAL\fR (the preferred way to refer to
246 the OpenFlow local port), or the keyword \fBALL\fR. Either of
247 \fIport\fR or \fIqueue\fR or both may be omitted (or equivalently the
248 keyword \fBALL\fR). If both are omitted, statistics are printed for
249 all queues on all ports. If only \fIqueue\fR is omitted, then
250 statistics are printed for all queues on \fIport\fR; if only
251 \fIport\fR is omitted, then statistics are printed for \fIqueue\fR on
252 every port where it exists.
253 .
254 .IP "\fBqueue\-get\-config \fIswitch [\fIport \fR[\fIqueue\fR]]"
255 Prints to the console the configuration of \fIqueue\fR on \fIport\fR
256 in \fIswitch\fR. If \fIport\fR is omitted or \fBANY\fR, reports
257 queues for all port. If \fIqueue\fR is omitted or \fBANY\fR, reports
258 all queues. For OpenFlow 1.3 and earlier, the output always includes
259 all queues, ignoring \fIqueue\fR if specified.
260 .IP
261 This command has limited usefulness, because ports often have no
262 configured queues and because the OpenFlow protocol provides only very
263 limited information about the configuration of a queue.
264 .
265 .IP "\fBdump\-ipfix\-bridge \fIswitch\fR"
266 Prints to the console the statistics of bridge IPFIX for \fIswitch\fR.
267 If bridge IPFIX is configured on the \fIswitch\fR, IPFIX statistics
268 can be retrieved. Otherwise, error message will be printed.
269 .IP
270 This command uses an Open vSwitch extension that is only in Open
271 vSwitch 2.6 and later.
272 .
273 .IP "\fBdump\-ipfix\-flow \fIswitch\fR"
274 Prints to the console the statistics of flow-based IPFIX for
275 \fIswitch\fR. If flow-based IPFIX is configured on the \fIswitch\fR,
276 statistics of all the collector set ids on the \fIswitch\fR will be
277 printed. Otherwise, print error message.
278 .IP
279 Refer to \fBovs\-vswitchd.conf.db\fR(5) for more details on configuring
280 flow based IPFIX and collector set ids.
281 .IP
282 This command uses an Open vSwitch extension that is only in Open
283 vSwitch 2.6 and later.
284 .
285 .IP "\fBct\-flush\-zone \fIswitch zone\fR
286 Flushes the connection tracking entries in \fIzone\fR on \fIswitch\fR.
287 .IP
288 This command uses an Open vSwitch extension that is only in Open
289 vSwitch 2.6 and later.
290 .
291 .SS "OpenFlow Switch Flow Table Commands"
292 .
293 These commands manage the flow table in an OpenFlow switch. In each
294 case, \fIflow\fR specifies a flow entry in the format described in
295 \fBFlow Syntax\fR, below, \fIfile\fR is a text file that contains zero
296 or more flows in the same syntax, one per line, and the optional
297 \fB\-\-bundle\fR option operates the command as a single atomic
298 transation, see option \fB\-\-bundle\fR, below.
299 .
300 .IP "[\fB\-\-bundle\fR] \fBadd\-flow \fIswitch flow\fR"
301 .IQ "[\fB\-\-bundle\fR] \fBadd\-flow \fIswitch \fB\- < \fIfile\fR"
302 .IQ "[\fB\-\-bundle\fR] \fBadd\-flows \fIswitch file\fR"
303 Add each flow entry to \fIswitch\fR's tables.
304 .
305 Each flow specification (e.g., each line in \fIfile\fR) may start with
306 \fBadd\fR, \fBmodify\fR, \fBdelete\fR, \fBmodify_strict\fR, or
307 \fBdelete_strict\fR keyword to specify whether a flow is to be added,
308 modified, or deleted, and whether the modify or delete is strict or
309 not. For backwards compatibility a flow specification without one of
310 these keywords is treated as a flow add. All flow mods are executed
311 in the order specified.
312 .
313 .IP "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBmod\-flows \fIswitch flow\fR"
314 .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBmod\-flows \fIswitch \fB\- < \fIfile\fR"
315 Modify the actions in entries from \fIswitch\fR's tables that match
316 the specified flows. With \fB\-\-strict\fR, wildcards are not treated
317 as active for matching purposes.
318 .
319 .IP "[\fB\-\-bundle\fR] \fBdel\-flows \fIswitch\fR"
320 .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fR[\fIflow\fR]"
321 .IQ "[\fB\-\-bundle\fR] [\fB\-\-strict\fR] \fBdel\-flows \fIswitch \fB\- < \fIfile\fR"
322 Deletes entries from \fIswitch\fR's flow table. With only a
323 \fIswitch\fR argument, deletes all flows. Otherwise, deletes flow
324 entries that match the specified flows. With \fB\-\-strict\fR,
325 wildcards are not treated as active for matching purposes.
326 .
327 .IP "[\fB\-\-bundle\fR] [\fB\-\-readd\fR] \fBreplace\-flows \fIswitch file\fR"
328 Reads flow entries from \fIfile\fR (or \fBstdin\fR if \fIfile\fR is
329 \fB\-\fR) and queries the flow table from \fIswitch\fR. Then it fixes
330 up any differences, adding flows from \fIflow\fR that are missing on
331 \fIswitch\fR, deleting flows from \fIswitch\fR that are not in
332 \fIfile\fR, and updating flows in \fIswitch\fR whose actions, cookie,
333 or timeouts differ in \fIfile\fR.
334 .
335 .IP
336 With \fB\-\-readd\fR, \fBovs\-ofctl\fR adds all the flows from
337 \fIfile\fR, even those that exist with the same actions, cookie, and
338 timeout in \fIswitch\fR. In OpenFlow 1.0 and 1.1, re-adding a flow
339 always resets the flow's packet and byte counters to 0, and in
340 OpenFlow 1.2 and later, it does so only if the \fBreset_counts\fR flag
341 is set.
342 .
343 .IP "\fBdiff\-flows \fIsource1 source2\fR"
344 Reads flow entries from \fIsource1\fR and \fIsource2\fR and prints the
345 differences. A flow that is in \fIsource1\fR but not in \fIsource2\fR
346 is printed preceded by a \fB\-\fR, and a flow that is in \fIsource2\fR
347 but not in \fIsource1\fR is printed preceded by a \fB+\fR. If a flow
348 exists in both \fIsource1\fR and \fIsource2\fR with different actions,
349 cookie, or timeouts, then both versions are printed preceded by
350 \fB\-\fR and \fB+\fR, respectively.
351 .IP
352 \fIsource1\fR and \fIsource2\fR may each name a file or a switch. If
353 a name begins with \fB/\fR or \fB.\fR, then it is considered to be a
354 file name. A name that contains \fB:\fR is considered to be a switch.
355 Otherwise, it is a file if a file by that name exists, a switch if
356 not.
357 .IP
358 For this command, an exit status of 0 means that no differences were
359 found, 1 means that an error occurred, and 2 means that some
360 differences were found.
361 .
362 .IP "\fBpacket\-out \fIswitch\fR \fIpacket-out\fR"
363 Connects to \fIswitch\fR and instructs it to execute the
364 \fIpacket-out\fR OpenFlow message, specified as defined in
365 \fBPacket\-Out Syntax\fR section.
366 .
367 .SS "Group Table Commands"
368 .
369 These commands manage the group table in an OpenFlow switch. In each
370 case, \fIgroup\fR specifies a group entry in the format described in
371 \fBGroup Syntax\fR, below, and \fIfile\fR is a text file that contains
372 zero or more groups in the same syntax, one per line, and the optional
373 \fB\-\-bundle\fR option operates the command as a single atomic
374 transation, see option \fB\-\-bundle\fR, below.
375 .PP
376 The group commands work only with switches that support OpenFlow 1.1
377 or later or the Open vSwitch group extensions to OpenFlow 1.0 (added
378 in Open vSwitch 2.9.90). For OpenFlow 1.1 or later, it is necessary
379 to explicitly enable these protocol versions in \fBovs\-ofctl\fR
380 (using \fB\-O\fR). For more information, see ``Q: What versions of
381 OpenFlow does Open vSwitch support?'' in the Open vSwitch FAQ.
382 .
383 .IP "[\fB\-\-bundle\fR] \fBadd\-group \fIswitch group\fR"
384 .IQ "[\fB\-\-bundle\fR] \fBadd\-group \fIswitch \fB\- < \fIfile\fR"
385 .IQ "[\fB\-\-bundle\fR] \fBadd\-groups \fIswitch file\fR"
386 Add each group entry to \fIswitch\fR's tables.
387 .
388 Each group specification (e.g., each line in \fIfile\fR) may start
389 with \fBadd\fR, \fBmodify\fR, \fBadd_or_mod\fR, \fBdelete\fR,
390 \fBinsert_bucket\fR, or \fBremove_bucket\fR keyword to specify whether
391 a flow is to be added, modified, or deleted, or whether a group bucket
392 is to be added or removed. For backwards compatibility a group
393 specification without one of these keywords is treated as a group add.
394 All group mods are executed in the order specified.
395 .
396 .IP "[\fB\-\-bundle\fR] [\fB\-\-may\-create\fR] \fBmod\-group \fIswitch group\fR"
397 .IQ "[\fB\-\-bundle\fR] [\fB\-\-may\-create\fR] \fBmod\-group \fIswitch \fB\- < \fIfile\fR"
398 Modify the action buckets in entries from \fIswitch\fR's tables for
399 each group entry. If a specified group does not already exist, then
400 without \fB\-\-may\-create\fR, this command has no effect; with
401 \fB\-\-may\-create\fR, it creates a new group. The
402 \fB\-\-may\-create\fR option uses an Open vSwitch extension to
403 OpenFlow only implemented in Open vSwitch 2.6 and later.
404 .
405 .IP "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch\fR"
406 .IQ "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch \fR[\fIgroup\fR]"
407 .IQ "[\fB\-\-bundle\fR] \fBdel\-groups \fIswitch \fB\- < \fIfile\fR"
408 Deletes entries from \fIswitch\fR's group table. With only a
409 \fIswitch\fR argument, deletes all groups. Otherwise, deletes the group
410 for each group entry.
411 .
412 .IP "[\fB\-\-bundle\fR] \fBinsert\-buckets \fIswitch group\fR"
413 .IQ "[\fB\-\-bundle\fR] \fBinsert\-buckets \fIswitch \fB\- < \fIfile\fR"
414 Add buckets to an existing group present in the \fIswitch\fR's group table.
415 If no \fIcommand_bucket_id\fR is present in the group specification then all
416 buckets of the group are removed.
417 .
418 .IP "[\fB\-\-bundle\fR] \fBremove\-buckets \fIswitch group\fR"
419 .IQ "[\fB\-\-bundle\fR] \fBremove\-buckets \fIswitch \fB\- < \fIfile\fR"
420 Remove buckets to an existing group present in the \fIswitch\fR's group table.
421 If no \fIcommand_bucket_id\fR is present in the group specification then all
422 buckets of the group are removed.
423 .
424 .IP "\fBdump\-groups \fIswitch\fR [\fIgroup\fR]"
425 Prints group entries in \fIswitch\fR's tables to console. To dump
426 only a specific group, specify its number as \fIgroup\fR. Otherwise,
427 if \fIgroup\fR is omitted, or if it is specified as \fBALL\fR, then
428 all groups are printed.
429 .IP
430 Only OpenFlow 1.5 and later support dumping a specific group. Earlier
431 versions of OpenFlow always dump all groups.
432 .
433 .IP "\fBdump\-group\-features \fIswitch"
434 Prints to the console the group features of the \fIswitch\fR.
435 .
436 .IP "\fBdump\-group\-stats \fIswitch \fR[\fIgroup\fR]"
437 Prints to the console statistics for the specified \fIgroup\fR in
438 \fIswitch\fR's tables. If \fIgroup\fR is omitted then statistics for all
439 groups are printed.
440 .
441 .SS "OpenFlow 1.3+ Switch Meter Table Commands"
442 .
443 These commands manage the meter table in an OpenFlow switch. In each
444 case, \fImeter\fR specifies a meter entry in the format described in
445 \fBMeter Syntax\fR, below.
446 .
447 .PP
448 OpenFlow 1.3 introduced support for meters, so these commands only work
449 with switches that support OpenFlow 1.3 or later. It is necessary to
450 explicitly enable these protocol versions in \fBovs\-ofctl\fR (using
451 \fB\-O\fR) and in the switch itself (with the \fBprotocols\fR column in
452 the \fBBridge\fR table). For more information, see ``Q: What versions
453 of OpenFlow does Open vSwitch support?'' in the Open vSwitch FAQ.
454 .
455 .IP "\fBadd\-meter \fIswitch meter\fR"
456 Add a meter entry to \fIswitch\fR's tables. The \fImeter\fR syntax is
457 described in section \fBMeter Syntax\fR, below.
458 .
459 .IP "\fBmod\-meter \fIswitch meter\fR"
460 Modify an existing meter.
461 .
462 .IP "\fBdel\-meters \fIswitch\fR"
463 .IQ "\fBdel\-meter \fIswitch\fR [\fImeter\fR]"
464 Delete entries from \fIswitch\fR's meter table. \fImeter\fR can specify
465 a single meter with syntax \fBmeter=\fIid\fR, or all meters with syntax
466 \fBmeter=all\fR.
467 .
468 .IP "\fBdump\-meters \fIswitch\fR"
469 .IQ "\fBdump\-meter \fIswitch\fR [\fImeter\fR]"
470 Print meter configuration. \fImeter\fR can specify a single meter with
471 syntax \fBmeter=\fIid\fR, or all meters with syntax \fBmeter=all\fR.
472 .
473 .IP "\fBmeter\-stats \fIswitch\fR [\fImeter\fR]"
474 Print meter statistics. \fImeter\fR can specify a single meter with
475 syntax \fBmeter=\fIid\fR, or all meters with syntax \fBmeter=all\fR.
476 .
477 .IP "\fBmeter\-features \fIswitch\fR"
478 Print meter features.
479 .
480 .SS OpenFlow Switch Bundle Command
481 .
482 Transactional updates to both flow and group tables can be made with
483 the \fBbundle\fR command. \fIfile\fR is a text file that contains
484 zero or more flow mods, group mods, or packet-outs in \fBFlow
485 Syntax\fR, \fBGroup Syntax\fR, or \fBPacket\-Out Syntax\fR, each line
486 preceded by \fBflow\fR, \fBgroup\fR, or \fBpacket\-out\fR keyword,
487 correspondingly. The \fBflow\fR keyword may be optionally followed by
488 one of the keywords \fBadd\fR, \fBmodify\fR, \fBmodify_strict\fR,
489 \fBdelete\fR, or \fBdelete_strict\fR, of which the \fBadd\fR is
490 assumed if a bare \fBflow\fR is given. Similarly, the \fBgroup\fR
491 keyword may be optionally followed by one of the keywords \fBadd\fR,
492 \fBmodify\fR, \fBadd_or_mod\fR, \fBdelete\fR, \fBinsert_bucket\fR, or
493 \fBremove_bucket\fR, of which the \fBadd\fR is assumed if a bare
494 \fBgroup\fR is given.
495 .
496 .IP "\fBbundle \fIswitch file\fR"
497 Execute all flow and group mods in \fIfile\fR as a single atomic
498 transaction against \fIswitch\fR's tables. All bundled mods are
499 executed in the order specified.
500 .
501 .SS "OpenFlow Switch Tunnel TLV Table Commands"
502 .
503 Open vSwitch maintains a mapping table between tunnel option TLVs (defined
504 by <class, type, length>) and NXM fields \fBtun_metadata\fIn\fR,
505 where \fIn\fR ranges from 0 to 63, that can be operated on for the
506 purposes of matches, actions, etc. This TLV table can be used for
507 Geneve option TLVs or other protocols with options in same TLV format
508 as Geneve options. This mapping must be explicitly specified by the user
509 through the following commands.
510
511 A TLV mapping is specified with the syntax
512 \fB{class=\fIclass\fB,type=\fItype\fB,len=\fIlength\fB}->tun_metadata\fIn\fR.
513 When an option mapping exists for a given \fBtun_metadata\fIn\fR,
514 matching on the defined field becomes possible, e.g.:
515
516 .RS
517 ovs-ofctl add-tlv-map br0 "{class=0xffff,type=0,len=4}->tun_metadata0"
518 .PP
519 ovs-ofctl add-flow br0 tun_metadata0=1234,actions=controller
520 .RE
521
522 A mapping should not be changed while it is in active
523 use by a flow. The result of doing so is undefined.
524
525 These commands are Nicira extensions to OpenFlow and require Open vSwitch
526 2.5 or later.
527
528 .IP "\fBadd\-tlv\-map \fIswitch option\fR[\fB,\fIoption\fR]..."
529 Add each \fIoption\fR to \fIswitch\fR's tables. Duplicate fields are
530 rejected.
531 .
532 .IP "\fBdel\-tlv\-map \fIswitch \fR[\fIoption\fR[\fB,\fIoption\fR]]..."
533 Delete each \fIoption\fR from \fIswitch\fR's table, or all option TLV
534 mapping if no \fIoption\fR is specified.
535 Fields that aren't mapped are ignored.
536 .
537 .IP "\fBdump\-tlv\-map \fIswitch\fR"
538 Show the currently mapped fields in the switch's option table as well
539 as switch capabilities.
540 .
541 .SS "OpenFlow Switch Monitoring Commands"
542 .
543 .IP "\fBsnoop \fIswitch\fR"
544 Connects to \fIswitch\fR and prints to the console all OpenFlow
545 messages received. Unlike other \fBovs\-ofctl\fR commands, if
546 \fIswitch\fR is the name of a bridge, then the \fBsnoop\fR command
547 connects to a Unix domain socket named
548 \fB@RUNDIR@/\fIswitch\fB.snoop\fR. \fBovs\-vswitchd\fR listens on
549 such a socket for each bridge and sends to it all of the OpenFlow
550 messages sent to or received from its configured OpenFlow controller.
551 Thus, this command can be used to view OpenFlow protocol activity
552 between a switch and its controller.
553 .IP
554 When a switch has more than one controller configured, only the
555 traffic to and from a single controller is output. If none of the
556 controllers is configured as a master or a slave (using a Nicira
557 extension to OpenFlow 1.0 or 1.1, or a standard request in OpenFlow
558 1.2 or later), then a controller is chosen arbitrarily among
559 them. If there is a master controller, it is chosen; otherwise, if
560 there are any controllers that are not masters or slaves, one is
561 chosen arbitrarily; otherwise, a slave controller is chosen
562 arbitrarily. This choice is made once at connection time and does not
563 change as controllers reconfigure their roles.
564 .IP
565 If a switch has no controller configured, or if
566 the configured controller is disconnected, no traffic is sent, so
567 monitoring will not show any traffic.
568 .
569 .IP "\fBmonitor \fIswitch\fR [\fImiss-len\fR] [\fBinvalid_ttl\fR] [\fBwatch:\fR[\fIspec\fR...]]"
570 Connects to \fIswitch\fR and prints to the console all OpenFlow
571 messages received. Usually, \fIswitch\fR should specify the name of a
572 bridge in the \fBovs\-vswitchd\fR database.
573 .IP
574 If \fImiss-len\fR is provided, \fBovs\-ofctl\fR sends an OpenFlow ``set
575 configuration'' message at connection setup time that requests
576 \fImiss-len\fR bytes of each packet that misses the flow table. Open vSwitch
577 does not send these and other asynchronous messages to an
578 \fBovs\-ofctl monitor\fR client connection unless a nonzero value is
579 specified on this argument. (Thus, if \fImiss\-len\fR is not
580 specified, very little traffic will ordinarily be printed.)
581 .IP
582 If \fBinvalid_ttl\fR is passed, \fBovs\-ofctl\fR sends an OpenFlow ``set
583 configuration'' message at connection setup time that requests
584 \fBINVALID_TTL_TO_CONTROLLER\fR, so that \fBovs\-ofctl monitor\fR can
585 receive ``packet-in'' messages when TTL reaches zero on \fBdec_ttl\fR action.
586 Only OpenFlow 1.1 and 1.2 support \fBinvalid_ttl\fR; Open vSwitch also
587 implements it for OpenFlow 1.0 as an extension.
588 .IP
589 \fBwatch:\fR[\fB\fIspec\fR...] causes \fBovs\-ofctl\fR to send a
590 ``monitor request'' Nicira extension message to the switch at
591 connection setup time. This message causes the switch to send
592 information about flow table changes as they occur. The following
593 comma-separated \fIspec\fR syntax is available:
594 .RS
595 .IP "\fB!initial\fR"
596 Do not report the switch's initial flow table contents.
597 .IP "\fB!add\fR"
598 Do not report newly added flows.
599 .IP "\fB!delete\fR"
600 Do not report deleted flows.
601 .IP "\fB!modify\fR"
602 Do not report modifications to existing flows.
603 .IP "\fB!own\fR"
604 Abbreviate changes made to the flow table by \fBovs\-ofctl\fR's own
605 connection to the switch. (These could only occur using the
606 \fBofctl/send\fR command described below under \fBRUNTIME MANAGEMENT
607 COMMANDS\fR.)
608 .IP "\fB!actions\fR"
609 Do not report actions as part of flow updates.
610 .IP "\fBtable=\fItable\fR"
611 Limits the monitoring to the table with the given \fItable\fR, which
612 may be expressed as a number between 0 and 254 or (unless
613 \fB\-\-no\-names\fR is specified) a name. By default, all tables are
614 monitored.
615 .IP "\fBout_port=\fIport\fR"
616 If set, only flows that output to \fIport\fR are monitored. The
617 \fIport\fR may be an OpenFlow port number or keyword
618 (e.g. \fBLOCAL\fR).
619 .IP "\fIfield\fB=\fIvalue\fR"
620 Monitors only flows that have \fIfield\fR specified as the given
621 \fIvalue\fR. Any syntax valid for matching on \fBdump\-flows\fR may
622 be used.
623 .RE
624 .IP
625 This command may be useful for debugging switch or controller
626 implementations. With \fBwatch:\fR, it is particularly useful for
627 observing how a controller updates flow tables.
628 .
629 .SS "OpenFlow Switch and Controller Commands"
630 .
631 The following commands, like those in the previous section, may be
632 applied to OpenFlow switches, using any of the connection methods
633 described in that section. Unlike those commands, these may also be
634 applied to OpenFlow controllers.
635 .
636 .TP
637 \fBprobe \fItarget\fR
638 Sends a single OpenFlow echo-request message to \fItarget\fR and waits
639 for the response. With the \fB\-t\fR or \fB\-\-timeout\fR option, this
640 command can test whether an OpenFlow switch or controller is up and
641 running.
642 .
643 .TP
644 \fBping \fItarget \fR[\fIn\fR]
645 Sends a series of 10 echo request packets to \fItarget\fR and times
646 each reply. The echo request packets consist of an OpenFlow header
647 plus \fIn\fR bytes (default: 64) of randomly generated payload. This
648 measures the latency of individual requests.
649 .
650 .TP
651 \fBbenchmark \fItarget n count\fR
652 Sends \fIcount\fR echo request packets that each consist of an
653 OpenFlow header plus \fIn\fR bytes of payload and waits for each
654 response. Reports the total time required. This is a measure of the
655 maximum bandwidth to \fItarget\fR for round-trips of \fIn\fR-byte
656 messages.
657 .
658 .SS "Other Commands"
659 .
660 .IP "\fBofp\-parse\fR \fIfile\fR"
661 Reads \fIfile\fR (or \fBstdin\fR if \fIfile\fR is \fB\-\fR) as a
662 series of OpenFlow messages in the binary format used on an OpenFlow
663 connection, and prints them to the console. This can be useful for
664 printing OpenFlow messages captured from a TCP stream.
665 .
666 .IP "\fBofp\-parse\-pcap\fR \fIfile\fR [\fIport\fR...]"
667 Reads \fIfile\fR, which must be in the PCAP format used by network
668 capture tools such as \fBtcpdump\fR or \fBwireshark\fR, extracts all
669 the TCP streams for OpenFlow connections, and prints the OpenFlow
670 messages in those connections in human-readable format on
671 \fBstdout\fR.
672 .IP
673 OpenFlow connections are distinguished by TCP port number.
674 Non-OpenFlow packets are ignored. By default, data on TCP ports 6633
675 and 6653 are considered to be OpenFlow. Specify one or more
676 \fIport\fR arguments to override the default.
677 .IP
678 This command cannot usefully print SSL encrypted traffic. It does not
679 understand IPv6.
680 .
681 .SS "Flow Syntax"
682 .PP
683 Some \fBovs\-ofctl\fR commands accept an argument that describes a flow or
684 flows. Such flow descriptions comprise a series of
685 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
686 space. (Embedding spaces into a flow description normally requires
687 quoting to prevent the shell from breaking the description into
688 multiple arguments.)
689 .PP
690 Flow descriptions should be in \fBnormal form\fR. This means that a
691 flow may only specify a value for an L3 field if it also specifies a
692 particular L2 protocol, and that a flow may only specify an L4 field
693 if it also specifies particular L2 and L3 protocol types. For
694 example, if the L2 protocol type \fBdl_type\fR is wildcarded, then L3
695 fields \fBnw_src\fR, \fBnw_dst\fR, and \fBnw_proto\fR must also be
696 wildcarded. Similarly, if \fBdl_type\fR or \fBnw_proto\fR (the L3
697 protocol type) is wildcarded, so must be the L4 fields \fBtcp_dst\fR and
698 \fBtcp_src\fR. \fBovs\-ofctl\fR will warn about
699 flows not in normal form.
700 .PP
701 \fBovs\-fields\fR(7) describes the supported fields and how to match
702 them. In addition to match fields, commands that operate on flows
703 accept a few additional key-value pairs:
704 .
705 .IP \fBtable=\fItable\fR
706 For flow dump commands, limits the flows dumped to those in
707 \fItable\fR, which may be expressed as a number between 0 and 255 or
708 (unless \fB\-\-no\-names\fR is specified) a name. If not specified
709 (or if 255 is specified as \fItable\fR), then flows in all tables are
710 dumped.
711 .
712 .IP
713 For flow table modification commands, behavior varies based on the
714 OpenFlow version used to connect to the switch:
715 .
716 .RS
717 .IP "OpenFlow 1.0"
718 OpenFlow 1.0 does not support \fBtable\fR for modifying flows.
719 \fBovs\-ofctl\fR will exit with an error if \fBtable\fR (other than
720 \fBtable=255\fR) is specified for a switch that only supports OpenFlow
721 1.0.
722 .IP
723 In OpenFlow 1.0, the switch chooses the table into which to insert a
724 new flow. The Open vSwitch software switch always chooses table 0.
725 Other Open vSwitch datapaths and other OpenFlow implementations may
726 choose different tables.
727 .IP
728 The OpenFlow 1.0 behavior in Open vSwitch for modifying or removing
729 flows depends on whether \fB\-\-strict\fR is used. Without
730 \fB\-\-strict\fR, the command applies to matching flows in all tables.
731 With \fB\-\-strict\fR, the command will operate on any single matching
732 flow in any table; it will do nothing if there are matches in more
733 than one table. (The distinction between these behaviors only matters
734 if non-OpenFlow 1.0 commands were also used, because OpenFlow 1.0
735 alone cannot add flows with the same matching criteria to multiple
736 tables.)
737 .
738 .IP "OpenFlow 1.0 with table_id extension"
739 Open vSwitch implements an OpenFlow extension that allows the
740 controller to specify the table on which to operate. \fBovs\-ofctl\fR
741 automatically enables the extension when \fBtable\fR is specified and
742 OpenFlow 1.0 is used. \fBovs\-ofctl\fR automatically detects whether
743 the switch supports the extension. As of this writing, this extension
744 is only known to be implemented by Open vSwitch.
745 .
746 .IP
747 With this extension, \fBovs\-ofctl\fR operates on the requested table
748 when \fBtable\fR is specified, and acts as described for OpenFlow 1.0
749 above when no \fBtable\fR is specified (or for \fBtable=255\fR).
750 .
751 .IP "OpenFlow 1.1"
752 OpenFlow 1.1 requires flow table modification commands to specify a
753 table. When \fBtable\fR is not specified (or \fBtable=255\fR is
754 specified), \fBovs\-ofctl\fR defaults to table 0.
755 .
756 .IP "OpenFlow 1.2 and later"
757 OpenFlow 1.2 and later allow flow deletion commands, but not other
758 flow table modification commands, to operate on all flow tables, with
759 the behavior described above for OpenFlow 1.0.
760 .RE
761 .IP "\fBduration=\fR..."
762 .IQ "\fBn_packet=\fR..."
763 .IQ "\fBn_bytes=\fR..."
764 \fBovs\-ofctl\fR ignores assignments to these ``fields'' to allow
765 output from the \fBdump\-flows\fR command to be used as input for
766 other commands that parse flows.
767 .
768 .PP
769 The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
770 require an additional field, which must be the final field specified:
771 .
772 .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
773 Specifies a comma-separated list of actions to take on a packet when the
774 flow entry matches. If no \fIaction\fR is specified, then packets
775 matching the flow are dropped. The following forms of \fIaction\fR
776 are supported:
777 .
778 .RS
779 .IP \fIport\fR
780 .IQ \fBoutput:\fIport\fR
781 Outputs the packet to OpenFlow port number \fIport\fR. If \fIport\fR
782 is the packet's input port, the packet is not output.
783 .
784 .IP \fBoutput:\fIsrc\fB[\fIstart\fB..\fIend\fB]
785 Outputs the packet to the OpenFlow port number read from \fIsrc\fR,
786 which may be an NXM field name, as described above, or a match field name.
787 \fBoutput:reg0[16..31]\fR outputs to the OpenFlow port number
788 written in the upper half of register 0. If the port number is the
789 packet's input port, the packet is not output.
790 .IP
791 This form of \fBoutput\fR was added in Open vSwitch 1.3.0. This form
792 of \fBoutput\fR uses an OpenFlow extension that is not supported by
793 standard OpenFlow switches.
794 .
795 .IP \fBoutput(port=\fIport\fR\fB,max_len=\fInbytes\fR)
796 Outputs the packet to the OpenFlow port number read from \fIport\fR,
797 with maximum packet size set to \fInbytes\fR. \fIport\fR may be OpenFlow
798 port number, \fBlocal\fR, or \fBin_port\fR. Patch port is not supported.
799 Packets larger than \fInbytes\fR will be trimmed to \fInbytes\fR while
800 packets smaller than \fInbytes\fR remains the original size.
801 .
802 .IP \fBgroup:\fIgroup_id\fR
803 Outputs the packet to the OpenFlow group \fIgroup_id\fR. OpenFlow 1.1
804 introduced support for groups; Open vSwitch 2.6 and later also
805 supports output to groups as an extension to OpenFlow 1.0. See
806 \fBGroup Syntax\fR for more details.
807 .
808 .IP \fBnormal\fR
809 Subjects the packet to the device's normal L2/L3 processing. (This
810 action is not implemented by all OpenFlow switches.)
811 .
812 .IP \fBflood\fR
813 Outputs the packet on all switch physical ports other than the port on
814 which it was received and any ports on which flooding is disabled
815 (typically, these would be ports disabled by the IEEE 802.1D spanning
816 tree protocol).
817 .
818 .IP \fBall\fR
819 Outputs the packet on all switch physical ports other than the port on
820 which it was received.
821 .
822 .IP \fBlocal\fR
823 Outputs the packet on the ``local port,'' which corresponds to the
824 network device that has the same name as the bridge.
825 .
826 .IP \fBin_port\fR
827 Outputs the packet on the port from which it was received.
828 .
829 .IP \fBcontroller(\fIkey\fB=\fIvalue\fR...\fB)
830 Sends the packet and its metadata to the OpenFlow controller as a ``packet in''
831 message. The supported key-value pairs are:
832 .RS
833 .IP "\fBmax_len=\fInbytes\fR"
834 Limit to \fInbytes\fR the number of bytes of the packet to send to
835 the controller. By default the entire packet is sent.
836 .IP "\fBreason=\fIreason\fR"
837 Specify \fIreason\fR as the reason for sending the message in the
838 ``packet in'' message. The supported reasons are \fBaction\fR (the
839 default), \fBno_match\fR, and \fBinvalid_ttl\fR.
840 .IP "\fBid=\fIcontroller-id\fR"
841 Specify \fIcontroller-id\fR, a 16-bit integer, as the connection ID of
842 the OpenFlow controller or controllers to which the ``packet in''
843 message should be sent. The default is zero. Zero is also the
844 default connection ID for each controller connection, and a given
845 controller connection will only have a nonzero connection ID if its
846 controller uses the \fBNXT_SET_CONTROLLER_ID\fR Nicira extension to
847 OpenFlow.
848 .IP "\fBuserdata=\fIhh\fR...\fR"
849 Supplies the bytes represented as hex digits \fIhh\fR as additional
850 data to the controller in the packet-in message. Pairs of hex digits
851 may be separated by periods for readability.
852 .IP "\fBpause\fR"
853 Causes the switch to freeze the packet's trip through Open vSwitch
854 flow tables and serializes that state into the packet-in message as a
855 ``continuation,'' an additional property in the \fBNXT_PACKET_IN2\fR
856 message. The controller can later send the continuation back to the
857 switch in an \fBNXT_RESUME\fR message, which will restart the packet's
858 traversal from the point where it was interrupted. This permits an
859 OpenFlow controller to interpose on a packet midway through processing
860 in Open vSwitch.
861 .
862 .RE
863 .IP
864 If any \fIreason\fR other than \fBaction\fR or any nonzero
865 \fIcontroller-id\fR is supplied, Open vSwitch extension
866 \fBNXAST_CONTROLLER\fR, supported by Open vSwitch 1.6 and later, is
867 used. If \fBuserdata\fR is supplied, then \fBNXAST_CONTROLLER2\fR,
868 supported by Open vSwitch 2.6 and later, is used.
869 .
870 .IP \fBcontroller\fR
871 .IQ \fBcontroller\fR[\fB:\fInbytes\fR]
872 Shorthand for \fBcontroller()\fR or
873 \fBcontroller(max_len=\fInbytes\fB)\fR, respectively.
874 .
875 .IP \fBenqueue(\fIport\fB,\fIqueue\fB)\fR
876 Enqueues the packet on the specified \fIqueue\fR within port
877 \fIport\fR, which must be an OpenFlow port number or keyword
878 (e.g. \fBLOCAL\fR). The number of supported queues depends on the
879 switch; some OpenFlow implementations do not support queuing at all.
880 .
881 .IP \fBdrop\fR
882 Discards the packet, so no further processing or forwarding takes place.
883 If a drop action is used, no other actions may be specified.
884 .
885 .IP \fBmod_vlan_vid\fR:\fIvlan_vid\fR
886 Modifies the VLAN id on a packet. The VLAN tag is added or modified
887 as necessary to match the value specified. If the VLAN tag is added,
888 a priority of zero is used (see the \fBmod_vlan_pcp\fR action to set
889 this).
890 .
891 .IP \fBmod_vlan_pcp\fR:\fIvlan_pcp\fR
892 Modifies the VLAN priority on a packet. The VLAN tag is added or modified
893 as necessary to match the value specified. Valid values are between 0
894 (lowest) and 7 (highest). If the VLAN tag is added, a vid of zero is used
895 (see the \fBmod_vlan_vid\fR action to set this).
896 .
897 .IP \fBstrip_vlan\fR
898 Strips the VLAN tag from a packet if it is present.
899 .
900 .IP \fBpush_vlan\fR:\fIethertype\fR
901 Push a new VLAN tag onto the packet. Ethertype is used as the Ethertype
902 for the tag. Only ethertype 0x8100 should be used. (0x88a8 which the spec
903 allows isn't supported at the moment.)
904 A priority of zero and the tag of zero are used for the new tag.
905 .
906 .IP \fBpush_mpls\fR:\fIethertype\fR
907 Changes the packet's Ethertype to \fIethertype\fR, which must be either
908 \fB0x8847\fR or \fB0x8848\fR, and pushes an MPLS LSE.
909 .IP
910 If the packet does not already contain any MPLS labels then an initial
911 label stack entry is pushed. The label stack entry's label is 2 if the
912 packet contains IPv6 and 0 otherwise, its default traffic control value is
913 the low 3 bits of the packet's DSCP value (0 if the packet is not IP), and
914 its TTL is copied from the IP TTL (64 if the packet is not IP).
915 .IP
916 If the packet does already contain an MPLS label, pushes a new
917 outermost label as a copy of the existing outermost label.
918 .IP
919 A limitation of the implementation is that processing of actions will stop
920 if \fBpush_mpls\fR follows another \fBpush_mpls\fR unless there is a
921 \fBpop_mpls\fR in between.
922 .
923 .IP \fBpop_mpls\fR:\fIethertype\fR
924 Strips the outermost MPLS label stack entry.
925 Currently the implementation restricts \fIethertype\fR to a non-MPLS Ethertype
926 and thus \fBpop_mpls\fR should only be applied to packets with
927 an MPLS label stack depth of one. A further limitation is that processing of
928 actions will stop if \fBpop_mpls\fR follows another \fBpop_mpls\fR unless
929 there is a \fBpush_mpls\fR in between.
930 .
931 .IP \fBmod_dl_src\fB:\fImac\fR
932 Sets the source Ethernet address to \fImac\fR.
933 .
934 .IP \fBmod_dl_dst\fB:\fImac\fR
935 Sets the destination Ethernet address to \fImac\fR.
936 .
937 .IP \fBmod_nw_src\fB:\fIip\fR
938 Sets the IPv4 source address to \fIip\fR.
939 .
940 .IP \fBmod_nw_dst\fB:\fIip\fR
941 Sets the IPv4 destination address to \fIip\fR.
942 .
943 .IP \fBmod_tp_src\fB:\fIport\fR
944 Sets the TCP or UDP or SCTP source port to \fIport\fR.
945 .
946 .IP \fBmod_tp_dst\fB:\fIport\fR
947 Sets the TCP or UDP or SCTP destination port to \fIport\fR.
948 .
949 .IP \fBmod_nw_tos\fB:\fItos\fR
950 Sets the DSCP bits in the IPv4 ToS/DSCP or IPv6 traffic class field to
951 \fItos\fR, which must be a multiple of 4 between 0 and 255. This action
952 does not modify the two least significant bits of the ToS field (the ECN bits).
953 .
954 .IP \fBmod_nw_ecn\fB:\fIecn\fR
955 Sets the ECN bits in the IPv4 ToS or IPv6 traffic class field to \fIecn\fR,
956 which must be a value between 0 and 3, inclusive. This action does not modify
957 the six most significant bits of the field (the DSCP bits).
958 .IP
959 Requires OpenFlow 1.1 or later.
960 .
961 .IP \fBmod_nw_ttl\fB:\fIttl\fR
962 Sets the IPv4 TTL or IPv6 hop limit field to \fIttl\fR, which is specified as
963 a decimal number between 0 and 255, inclusive. Switch behavior when setting
964 \fIttl\fR to zero is not well specified, though.
965 .IP
966 Requires OpenFlow 1.1 or later.
967 .RE
968 .IP
969 The following actions are Nicira vendor extensions that, as of this writing, are
970 only known to be implemented by Open vSwitch:
971 .
972 .RS
973 .
974 .IP \fBresubmit\fB:\fIport\fR
975 .IQ \fBresubmit\fB(\fR[\fIport\fR]\fB,\fR[\fItable\fR]\fB)
976 .IQ \fBresubmit\fB(\fR[\fIport\fR]\fB,\fR[\fItable\fR]\fB,ct)
977 Re-searches this OpenFlow flow table (or table \fItable\fR, if
978 specified) with the \fBin_port\fR field replaced by
979 \fIport\fR (if \fIport\fR is specified) and the packet 5-tuple fields
980 swapped with the corresponding conntrack original direction tuple
981 fields (if \fBct\fR is specified, see \fBct_nw_src\fR above), and
982 executes the actions found, if any, in addition to any other actions
983 in this flow entry. The \fBin_port\fR and swapped 5-tuple fields are
984 restored immediately after the search, before any actions are
985 executed.
986 .IP
987 The \fItable\fR may be expressed as a number between 0 and 254 or
988 (unless \fB\-\-no\-names\fR is specified) a name.
989 .IP
990 The \fBct\fR option requires a valid connection tracking state as a
991 match prerequisite in the flow where this action is placed. Examples
992 of valid connection tracking state matches include
993 \fBct_state=+new\fR, \fBct_state=+est\fR, \fBct_state=+rel\fR, and
994 \fBct_state=+trk-inv\fR.
995 .IP
996 Recursive \fBresubmit\fR actions are obeyed up to
997 implementation-defined limits:
998 .RS
999 .IP \(bu
1000 Open vSwitch 1.0.1 and earlier did not support recursion.
1001 .IP \(bu
1002 Open vSwitch 1.0.2 and 1.0.3 limited recursion to 8 levels.
1003 .IP \(bu
1004 Open vSwitch 1.1 and 1.2 limited recursion to 16 levels.
1005 .IP \(bu
1006 Open vSwitch 1.2 through 1.8 limited recursion to 32 levels.
1007 .IP \(bu
1008 Open vSwitch 1.9 through 2.0 limited recursion to 64 levels.
1009 .IP \(bu
1010 Open vSwitch 2.1 through 2.5 limited recursion to 64 levels and impose
1011 a total limit of 4,096 resubmits per flow translation (earlier versions
1012 did not impose any total limit).
1013 .IP \(bu
1014 Open vSwitch 2.6 and later imposes the same limits as 2.5, with one
1015 exception: \fBresubmit\fR from table \fIx\fR to any table \fIy\fR >
1016 \fIx\fR does not count against the recursion limit.
1017 .RE
1018 .IP
1019 Open vSwitch before 1.2.90 did not support \fItable\fR. Open vSwitch
1020 before 2.7 did not support \fBct\fR.
1021 .
1022 .IP \fBset_tunnel\fB:\fIid\fR
1023 .IQ \fBset_tunnel64\fB:\fIid\fR
1024 If outputting to a port that encapsulates the packet in a tunnel and
1025 supports an identifier (such as GRE), sets the identifier to \fIid\fR.
1026 If the \fBset_tunnel\fR form is used and \fIid\fR fits in 32 bits,
1027 then this uses an action extension that is supported by Open vSwitch
1028 1.0 and later. Otherwise, if \fIid\fR is a 64-bit value, it requires
1029 Open vSwitch 1.1 or later.
1030 .
1031 .IP \fBset_queue\fB:\fIqueue\fR
1032 Sets the queue that should be used to \fIqueue\fR when packets are
1033 output. The number of supported queues depends on the switch; some
1034 OpenFlow implementations do not support queuing at all.
1035 .
1036 .IP \fBpop_queue\fR
1037 Restores the queue to the value it was before any \fBset_queue\fR
1038 actions were applied.
1039 .
1040 .IP \fBct\fR
1041 .IQ \fBct(\fR[\fIargument\fR][\fB,\fIargument\fR...]\fB)
1042 Send the packet through the connection tracker. Refer to the \fBct_state\fR
1043 documentation above for possible packet and connection states. A \fBct\fR
1044 action always sets the packet to an untracked state and clears out the
1045 \fBct_state\fR fields for the current processing path. Those fields are
1046 only available for the processing path pointed to by the \fBtable\fR
1047 argument. The following arguments are supported:
1048 .RS
1049 .IP \fBcommit\fR
1050 .RS
1051 Commit the connection to the connection tracking module. Information about the
1052 connection will be stored beyond the lifetime of the packet in the pipeline.
1053 Some \fBct_state\fR flags are only available for committed connections.
1054 .RE
1055 .IP \fBforce\fR
1056 .RS
1057 A committed connection always has the directionality of the packet
1058 that caused the connection to be committed in the first place. This
1059 is the ``original direction'' of the connection, and the opposite
1060 direction is the ``reply direction''. If a connection is already
1061 committed, but it is in the wrong direction, \fBforce\fR flag may be
1062 used in addition to \fBcommit\fR flag to effectively terminate the
1063 existing connection and start a new one in the current direction.
1064 This flag has no effect if the original direction of the connection is
1065 already the same as that of the current packet.
1066 .RE
1067 .IP \fBtable=\fItable\fR
1068 Fork pipeline processing in two. The original instance of the packet will
1069 continue processing the current actions list as an untracked packet. An
1070 additional instance of the packet will be sent to the connection tracker, which
1071 will be re-injected into the OpenFlow pipeline to resume processing in table
1072 \fInumber\fR (which may be specified as a number between 0 and 254 or,
1073 unless \fB\-\-no\-names\fR is specified, a name), with the
1074 \fBct_state\fR and other ct match fields set. If
1075 \fBtable\fR is not specified, then the packet which is submitted to the
1076 connection tracker is not re-injected into the OpenFlow pipeline. It is
1077 strongly recommended to specify a table later than the current table to prevent
1078 loops.
1079 .IP \fBzone=\fIvalue\fR
1080 .IQ \fBzone=\fIsrc\fB[\fIstart\fB..\fIend\fB]\fR
1081 A 16-bit context id that can be used to isolate connections into separate
1082 domains, allowing overlapping network addresses in different zones. If a zone
1083 is not provided, then the default is to use zone zero. The \fBzone\fR may be
1084 specified either as an immediate 16-bit \fIvalue\fR, or may be provided from an
1085 NXM field \fIsrc\fR. The \fIstart\fR and \fIend\fR pair are inclusive, and must
1086 specify a 16-bit range within the field. This value is copied to the
1087 \fBct_zone\fR match field for packets which are re-injected into the pipeline
1088 using the \fBtable\fR option.
1089 .IP \fBexec\fB(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)\fR
1090 Perform actions within the context of connection tracking. This is a restricted
1091 set of actions which are in the same format as their specifications as part
1092 of a flow. Only actions which modify the \fBct_mark\fR or \fBct_label\fR
1093 fields are accepted within the \fBexec\fR action, and these fields may only be
1094 modified with this option. For example:
1095 .
1096 .RS
1097 .IP \fBset_field:\fIvalue\fR[\fB/\fImask\fR]->ct_mark\fR
1098 Store a 32-bit metadata value with the connection. Subsequent lookups
1099 for packets in this connection will populate the \fBct_mark\fR flow
1100 field when the packet is sent to the connection tracker with the
1101 \fBtable\fR specified.
1102 .IP \fBset_field:\fIvalue\fR[\fB/\fImask\fR]->ct_label\fR
1103 Store a 128-bit metadata value with the connection. Subsequent
1104 lookups for packets in this connection will populate the
1105 \fBct_label\fR flow field when the packet is sent to the connection
1106 tracker with the \fBtable\fR specified.
1107 .RE
1108 .IP
1109 The \fBcommit\fR parameter must be specified to use \fBexec(...)\fR.
1110 .
1111 .IP \fBalg=\fIalg\fR
1112 Specify application layer gateway \fIalg\fR to track specific connection
1113 types. If subsequent related connections are sent through the \fBct\fR
1114 action, then the \fBrel\fR flag in the \fBct_state\fR field will be set.
1115 Supported types include:
1116 .RS
1117 .IP \fBftp\fR
1118 Look for negotiation of FTP data connections. Specify this option for FTP
1119 control connections to detect related data connections and populate the
1120 \fBrel\fR flag for the data connections.
1121 .
1122 .IP \fBtftp\fR
1123 Look for negotiation of TFTP data connections. Specify this option for TFTP
1124 control connections to detect related data connections and populate the
1125 \fBrel\fR flag for the data connections.
1126 .RE
1127 .
1128 .IP
1129 The \fBcommit\fR parameter must be specified to use \fBalg=\fIalg\fR.
1130 .
1131 .IP
1132 When committing related connections, the \fBct_mark\fR for that connection is
1133 inherited from the current \fBct_mark\fR stored with the original connection
1134 (ie, the connection created by \fBct(alg=...)\fR).
1135 .
1136 .IP
1137 Note that with the Linux datapath, global sysctl options affect the usage of
1138 the \fBct\fR action. In particular, if \fBnet.netfilter.nf_conntrack_helper\fR
1139 is enabled then application layer gateway helpers may be executed even if the
1140 \fBalg\fR option is not specified. This is the default setting until Linux 4.7.
1141 For security reasons, the netfilter team recommends users to disable this
1142 option. See this blog post for further details:
1143 .
1144 http://www.netfilter.org/news.html#2012-04-03
1145 .
1146 .IP \fBnat\fR[\fB(\fR(\fBsrc\fR|\fBdst\fR)\fB=\fIaddr1\fR[\fB-\fIaddr2\fR][\fB:\fIport1\fR[\fB-\fIport2\fR]][\fB,\fIflags\fR]\fB)\fR]
1147 .
1148 Specify address and port translation for the connection being tracked.
1149 For new connections either \fBsrc\fR or \fBdst\fR argument must be
1150 provided to set up either source address/port translation (SNAT) or
1151 destination address/port translation (DNAT), respectively. Setting up
1152 address translation for a new connection takes effect only if the
1153 \fBcommit\fR flag is also provided for the enclosing \fBct\fR action.
1154 A bare \fBnat\fR action will only translate the packet being processed
1155 in the way the connection has been set up with an earlier \fBct\fR
1156 action. Also a \fBnat\fR action with \fBsrc\fR or \fBdst\fR, when
1157 applied to a packet belonging to an established (rather than new)
1158 connection, will behave the same as a bare \fBnat\fR.
1159 .IP
1160 \fBsrc\fR and \fBdst\fR options take the following arguments:
1161 .RS
1162 .IP \fIaddr1\fR[\fB-\fIaddr2\fR]
1163 The address range from which the translated address should be
1164 selected. If only one address is given, then that address will always
1165 be selected, otherwise the address selection can be informed by the
1166 optional \fBpersistent\fR flag as described below. Either IPv4 or
1167 IPv6 addresses can be provided, but both addresses must be of the same
1168 type, and the datapath behavior is undefined in case of providing IPv4
1169 address range for an IPv6 packet, or IPv6 address range for an IPv4
1170 packet. IPv6 addresses must be bracketed with '[' and ']' if a port
1171 range is also given.
1172 .RE
1173 .
1174 .RS
1175 .IP \fIport1\fR[\fB-\fIport2\fR]
1176 The port range from which the translated port should be selected. If
1177 only one port number is provided, then that should be selected. In
1178 case of a mapping conflict the datapath may choose any other
1179 non-conflicting port number instead, even when no port range is
1180 specified. The port number selection can be informed by the optional
1181 \fBrandom\fR and \fBhash\fR flags as described below.
1182 .RE
1183 .IP
1184 The optional flags are:
1185 .RS
1186 .IP \fBrandom\fR
1187 The selection of the port from the given range should be done using a
1188 fresh random number. This flag is mutually exclusive with \fBhash\fR.
1189 .RE
1190 .
1191 .RS
1192 .IP \fBhash\fR
1193 The selection of the port from the given range should be done using a
1194 datapath specific hash of the packet's IP addresses and the other,
1195 non-mapped port number. This flag is mutually exclusive with
1196 \fBrandom\fR.
1197 .RE
1198 .
1199 .RS
1200 .IP \fBpersistent\fR
1201 The selection of the IP address from the given range should be done so
1202 that the same mapping can be provided after the system restarts.
1203 .RE
1204 .IP
1205 If an \fBalg\fR is specified for the committing \fBct\fR action that
1206 also includes \fBnat\fR with a \fBsrc\fR or \fBdst\fR attribute,
1207 then the datapath tries to set up the helper to be NAT aware. This
1208 functionality is datapath specific and may not be supported by all
1209 datapaths.
1210 .IP
1211 \fBnat\fR was introduced in Open vSwitch 2.6. The first datapath that
1212 implements \fBct nat\fR support is the one that ships with Linux 4.6.
1213 .RE
1214 .IP
1215 The \fBct\fR action may be used as a primitive to construct stateful firewalls
1216 by selectively committing some traffic, then matching the \fBct_state\fR to
1217 allow established connections while denying new connections. The following
1218 flows provide an example of how to implement a simple firewall that allows new
1219 connections from port 1 to port 2, and only allows established connections to
1220 send traffic from port 2 to port 1:
1221 \fBtable=0,priority=1,action=drop
1222 table=0,priority=10,arp,action=normal
1223 table=0,priority=100,ip,ct_state=-trk,action=ct(table=1)
1224 table=1,in_port=1,ip,ct_state=+trk+new,action=ct(commit),2
1225 table=1,in_port=1,ip,ct_state=+trk+est,action=2
1226 table=1,in_port=2,ip,ct_state=+trk+new,action=drop
1227 table=1,in_port=2,ip,ct_state=+trk+est,action=1\fR
1228 .IP
1229 If \fBct\fR is executed on IP (or IPv6) fragments, then the message is
1230 implicitly reassembled before sending to the connection tracker and
1231 refragmented upon \fBoutput\fR, to the original maximum received fragment size.
1232 Reassembly occurs within the context of the \fBzone\fR, meaning that IP
1233 fragments in different zones are not assembled together. Pipeline processing
1234 for the initial fragments is halted; When the final fragment is received, the
1235 message is assembled and pipeline processing will continue for that flow.
1236 Because packet ordering is not guaranteed by IP protocols, it is not possible
1237 to determine which IP fragment will cause message reassembly (and therefore
1238 continue pipeline processing). As such, it is strongly recommended that
1239 multiple flows should not execute \fBct\fR to reassemble fragments from the
1240 same IP message.
1241 .IP
1242 Currently, connection tracking is only available on Linux kernels with the
1243 nf_conntrack module loaded. The \fBct\fR action was introduced in Open vSwitch
1244 2.5.
1245 .
1246 .IP \fBct_clear\fR
1247 Clears connection tracking state from the flow, zeroing
1248 \fBct_state\fR, \fBct_zone\fR, \fBct_mark\fR, and \fBct_label\fR.
1249 .IP
1250 This action was introduced in Open vSwitch 2.6.90.
1251 .
1252 .IP \fBdec_ttl\fR
1253 .IQ \fBdec_ttl(\fIid1\fR[\fB,\fIid2\fR]...\fB)\fR
1254 Decrement TTL of IPv4 packet or hop limit of IPv6 packet. If the
1255 TTL or hop limit is initially zero or decrementing would make it so, no
1256 decrement occurs, as packets reaching TTL zero must be rejected. Instead,
1257 a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR is
1258 sent to each connected controller that has enabled receiving them,
1259 if any. Processing the current set of actions then stops. However,
1260 if the current set of actions was reached through ``resubmit'' then
1261 remaining actions in outer levels resume processing.
1262 .IP
1263 This action also optionally supports the ability to specify a list of
1264 valid controller ids. Each of the controllers in the list will receive
1265 the ``packet_in'' message only if they have registered to receive the
1266 invalid ttl packets. If controller ids are not specified, the
1267 ``packet_in'' message will be sent only to the controllers having
1268 controller id zero which have registered for the invalid ttl packets.
1269 .
1270 .IP \fBset_mpls_label\fR:\fIlabel\fR
1271 Set the label of the outer MPLS label stack entry of a packet.
1272 \fIlabel\fR should be a 20-bit value that is decimal by default;
1273 use a \fB0x\fR prefix to specify them in hexadecimal.
1274 .
1275 .IP \fBset_mpls_tc\fR:\fItc\fR
1276 Set the traffic-class of the outer MPLS label stack entry of a packet.
1277 \fItc\fR should be a in the range 0 to 7 inclusive.
1278 .
1279 .IP \fBset_mpls_ttl\fR:\fIttl\fR
1280 Set the TTL of the outer MPLS label stack entry of a packet.
1281 \fIttl\fR should be in the range 0 to 255 inclusive.
1282 .
1283 .IP \fBdec_mpls_ttl\fR
1284 Decrement TTL of the outer MPLS label stack entry of a packet. If the TTL
1285 is initially zero or decrementing would make it so, no decrement occurs.
1286 Instead, a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR
1287 is sent to the main controller (id zero), if it has enabled receiving them.
1288 Processing the current set of actions then stops. However, if the current
1289 set of actions was reached through ``resubmit'' then remaining actions in
1290 outer levels resume processing.
1291 .
1292 .IP \fBdec_nsh_ttl\fR
1293 Decrement TTL of the outer NSH header of a packet. If the TTL
1294 is initially zero or decrementing would make it so, no decrement occurs.
1295 Instead, a ``packet-in'' message with reason code \fBOFPR_INVALID_TTL\fR
1296 is sent to the main controller (id zero), if it has enabled receiving them.
1297 Processing the current set of actions then stops. However, if the current
1298 set of actions was reached through ``resubmit'' then remaining actions in
1299 outer levels resume processing.
1300 .
1301 .IP \fBnote:\fR[\fIhh\fR]...
1302 Does nothing at all. Any number of bytes represented as hex digits
1303 \fIhh\fR may be included. Pairs of hex digits may be separated by
1304 periods for readability.
1305 The \fBnote\fR action's format doesn't include an exact length for its
1306 payload, so the provided bytes will be padded on the right by enough
1307 bytes with value 0 to make the total number 6 more than a multiple of
1308 8.
1309 .
1310 .IP "\fBmove:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]\fR"
1311 Copies the named bits from field \fIsrc\fR to field \fIdst\fR.
1312 \fIsrc\fR and \fIdst\fR may be NXM field names as defined in
1313 \fBnicira\-ext.h\fR, e.g. \fBNXM_OF_UDP_SRC\fR or \fBNXM_NX_REG0\fR,
1314 or a match field name, e.g. \fBreg0\fR. Each
1315 \fIstart\fR and \fIend\fR pair, which are inclusive, must specify the
1316 same number of bits and must fit within its respective field.
1317 Shorthands for \fB[\fIstart\fB..\fIend\fB]\fR exist: use
1318 \fB[\fIbit\fB]\fR to specify a single bit or \fB[]\fR to specify an
1319 entire field (in the latter case the brackets can also be left off).
1320 .IP
1321 Examples: \fBmove:NXM_NX_REG0[0..5]\->NXM_NX_REG1[26..31]\fR copies the
1322 six bits numbered 0 through 5, inclusive, in register 0 into bits 26
1323 through 31, inclusive;
1324 \fBmove:reg0[0..15]\->vlan_tci\fR copies the least
1325 significant 16 bits of register 0 into the VLAN TCI field.
1326 .IP
1327 In OpenFlow 1.0 through 1.4, \fBmove\fR ordinarily uses an Open
1328 vSwitch extension to OpenFlow. In OpenFlow 1.5, \fBmove\fR uses the
1329 OpenFlow 1.5 standard \fBcopy_field\fR action. The ONF has
1330 also made \fBcopy_field\fR available as an extension to OpenFlow 1.3.
1331 Open vSwitch 2.4 and later understands this extension and uses it if a
1332 controller uses it, but for backward compatibility with older versions
1333 of Open vSwitch, \fBovs\-ofctl\fR does not use it.
1334 .
1335 .IP "\fBset_field:\fIvalue\fR[/\fImask\fR]\fB\->\fIdst"
1336 .IQ "\fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]"
1337 Loads a literal value into a field or part of a field. With
1338 \fBset_field\fR, \fBvalue\fR and the optional \fBmask\fR are given in
1339 the customary syntax for field \fIdst\fR, which is expressed as a
1340 field name. For example, \fBset_field:00:11:22:33:44:55->eth_src\fR
1341 sets the Ethernet source address to 00:11:22:33:44:55. With
1342 \fBload\fR, \fIvalue\fR must be an integer value (in decimal or
1343 prefixed by \fB0x\fR for hexadecimal) and \fIdst\fR can also be the
1344 NXM or OXM name for the field. For example,
1345 \fBload:0x001122334455->OXM_OF_ETH_SRC[]\fR has the same effect as the
1346 prior \fBset_field\fR example.
1347 .IP
1348 The two forms exist for historical reasons. Open vSwitch 1.1
1349 introduced \fBNXAST_REG_LOAD\fR as a Nicira extension to OpenFlow 1.0
1350 and used \fBload\fR to express it. Later, OpenFlow 1.2 introduced a
1351 standard \fBOFPAT_SET_FIELD\fR action that was restricted to loading
1352 entire fields, so Open vSwitch added the form \fBset_field\fR with
1353 this restriction. OpenFlow 1.5 extended \fBOFPAT_SET_FIELD\fR to the
1354 point that it became a superset of \fBNXAST_REG_LOAD\fR. Open vSwitch
1355 translates either syntax as necessary for the OpenFlow version in use:
1356 in OpenFlow 1.0 and 1.1, \fBNXAST_REG_LOAD\fR; in OpenFlow 1.2, 1.3,
1357 and 1.4, \fBNXAST_REG_LOAD\fR for \fBload\fR or for loading a
1358 subfield, \fBOFPAT_SET_FIELD\fR otherwise; and OpenFlow 1.5 and later,
1359 \fBOFPAT_SET_FIELD\fR.
1360 .
1361 .IP "\fBpush:\fIsrc\fB[\fIstart\fB..\fIend\fB]"
1362 .IQ "\fBpop:\fIdst\fB[\fIstart\fB..\fIend\fB]"
1363 These Open vSwitch extension actions act on bits \fIstart\fR to
1364 \fIend\fR, inclusive, in the named field, pushing or popping the bits
1365 on a general-purpose stack of fields or subfields. Controllers can
1366 use this stack for saving and restoring data or metadata around
1367 \fBresubmit\fR actions, for swapping or rearranging data and metadata,
1368 or for other purposes. Any data or metadata field, or part of one,
1369 may be pushed, and any modifiable field or subfield may be popped.
1370 .IP
1371 The number of bits pushed in a stack entry do not have to match the
1372 number of bits later popped from that entry. If more bits are popped
1373 from an entry than were pushed, then the entry is conceptually
1374 left-padded with 0-bits as needed. If fewer bits are popped than
1375 pushed, then bits are conceptually trimmed from the left side of the
1376 entry.
1377 .IP
1378 The stack's size is intended to have a large enough limit that
1379 ``normal'' use will not pose problems. Stack overflow or underflow is
1380 an error that causes action execution to stop.
1381 .IP
1382 Example: \fBpush:NXM_NX_REG2[0..5]\fR or \fBpush:reg2[0..5]\fR push
1383 the value stored in register 2 bits 0 through 5, inclusive, on the
1384 internal stack, and \fBpop:NXM_NX_REG2[0..5]\fR or
1385 \fBpop:reg2[0..5]\fR pops the value from top of the stack and sets
1386 register 2 bits 0 through 5, inclusive, based on bits 0 through 5 from
1387 the value just popped.
1388 .
1389 .IP "\fBmultipath(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIn_links\fB, \fIarg\fB, \fIdst\fB[\fIstart\fB..\fIend\fB])\fR"
1390 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter,
1391 then the applies multipath link selection \fIalgorithm\fR (with
1392 parameter \fIarg\fR) to choose one of \fIn_links\fR output links
1393 numbered 0 through \fIn_links\fR minus 1, and stores the link into
1394 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as
1395 described above.
1396 .IP
1397 \fIfields\fR must be one of the following:
1398 .RS
1399 .IP \fBeth_src\fR
1400 Hashes Ethernet source address only.
1401 .IP \fBsymmetric_l4\fR
1402 Hashes Ethernet source, destination, and type, VLAN ID, IPv4/IPv6
1403 source, destination, and protocol, and TCP or SCTP (but not UDP)
1404 ports. The hash is computed so that pairs of corresponding flows in
1405 each direction hash to the same value, in environments where L2 paths
1406 are the same in each direction. UDP ports are not included in the
1407 hash to support protocols such as VXLAN that use asymmetric ports in
1408 each direction.
1409 .IP \fBsymmetric_l3l4\fR
1410 Hashes IPv4/IPv6 source, destination, and protocol, and TCP or SCTP
1411 (but not UDP) ports. Like \fBsymmetric_l4\fR, this is a symmetric
1412 hash, but by excluding L2 headers it is more effective in environments
1413 with asymmetric L2 paths (e.g. paths involving VRRP IP addresses on a
1414 router). Not an effective hash function for protocols other than IPv4
1415 and IPv6, which hash to a constant zero.
1416 .IP \fBsymmetric_l3l4+udp\fR
1417 Like \fBsymmetric_l3l4+udp\fR, but UDP ports are included in the hash.
1418 This is a more effective hash when asymmetric UDP protocols such as
1419 VXLAN are not a consideration.
1420 .IP \fBnw_src\fR
1421 Hashes Network source address only.
1422 .IP \fBnw_dst\fR
1423 Hashes Network destination address only.
1424 .RE
1425 .IP
1426 \fIalgorithm\fR must be one of \fBmodulo_n\fR,
1427 \fBhash_threshold\fR, \fBhrw\fR, and \fBiter_hash\fR. Only
1428 the \fBiter_hash\fR algorithm uses \fIarg\fR.
1429 .IP
1430 Refer to \fBnicira\-ext.h\fR for more details.
1431 .
1432 .IP "\fBbundle(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1433 Hashes \fIfields\fR using \fIbasis\fR as a universal hash parameter, then
1434 applies the bundle link selection \fIalgorithm\fR to choose one of the listed
1435 slaves represented as \fIslave_type\fR. Currently the only supported
1436 \fIslave_type\fR is \fBofport\fR. Thus, each \fIs1\fR through \fIsN\fR should
1437 be an OpenFlow port number. Outputs to the selected slave.
1438 .IP
1439 Currently, \fIfields\fR must be either \fBeth_src\fR, \fBsymmetric_l4\fR, \fBsymmetric_l3l4\fR, \fBsymmetric_l3l4+udp\fR,
1440 \fBnw_src\fR, or \fBnw_dst\fR, and \fIalgorithm\fR must be one of \fBhrw\fR and \fBactive_backup\fR.
1441 .IP
1442 Example: \fBbundle(eth_src,0,hrw,ofport,slaves:4,8)\fR uses an Ethernet source
1443 hash with basis 0, to select between OpenFlow ports 4 and 8 using the Highest
1444 Random Weight algorithm.
1445 .IP
1446 Refer to \fBnicira\-ext.h\fR for more details.
1447 .
1448 .IP "\fBbundle_load(\fIfields\fB, \fIbasis\fB, \fIalgorithm\fB, \fIslave_type\fB, \fIdst\fB[\fIstart\fB..\fIend\fB], slaves:[\fIs1\fB, \fIs2\fB, ...])\fR"
1449 Has the same behavior as the \fBbundle\fR action, with one exception. Instead
1450 of outputting to the selected slave, it writes its selection to
1451 \fIdst\fB[\fIstart\fB..\fIend\fB]\fR, which must be an NXM field as described
1452 above.
1453 .IP
1454 Example: \fBbundle_load(eth_src, 0, hrw, ofport, NXM_NX_REG0[],
1455 slaves:4, 8)\fR uses an Ethernet source hash with basis 0, to select
1456 between OpenFlow ports 4 and 8 using the Highest Random Weight
1457 algorithm, and writes the selection to \fBNXM_NX_REG0[]\fR. Also the
1458 match field name can be used, for example, instead of 'NXM_NX_REG0'
1459 the name 'reg0' can be used. When the while field is indicated the
1460 empty brackets can also be left off.
1461 .IP
1462 Refer to \fBnicira\-ext.h\fR for more details.
1463 .
1464 .IP "\fBlearn(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1465 This action adds or modifies a flow in an OpenFlow table, similar to
1466 \fBovs\-ofctl \-\-strict mod\-flows\fR. The arguments specify the
1467 flow's match fields, actions, and other properties, as follows. At
1468 least one match criterion and one action argument should ordinarily be
1469 specified.
1470 .RS
1471 .IP \fBidle_timeout=\fIseconds\fR
1472 .IQ \fBhard_timeout=\fIseconds\fR
1473 .IQ \fBpriority=\fIvalue\fR
1474 .IQ \fBcookie=\fIvalue\fR
1475 .IQ \fBsend_flow_rem\fR
1476 These arguments have the same meaning as in the usual \fBovs\-ofctl\fR
1477 flow syntax.
1478 .
1479 .IP \fBfin_idle_timeout=\fIseconds\fR
1480 .IQ \fBfin_hard_timeout=\fIseconds\fR
1481 Adds a \fBfin_timeout\fR action with the specified arguments to the
1482 new flow. This feature was added in Open vSwitch 1.5.90.
1483 .
1484 .IP \fBtable=\fItable\fR
1485 The table in which the new flow should be inserted. Specify a decimal
1486 number between 0 and 254 or (unless \fB\-\-no\-names\fR is specified)
1487 a name. The default, if \fBtable\fR is unspecified, is table 1.
1488 .
1489 .IP \fBdelete_learned\fR
1490 This flag enables deletion of the learned flows when the flow with the
1491 \fBlearn\fR action is removed. Specifically, when the last
1492 \fBlearn\fR action with this flag and particular \fBtable\fR and
1493 \fBcookie\fR values is removed, the switch deletes all of the flows in
1494 the specified table with the specified cookie.
1495 .
1496 .IP
1497 This flag was added in Open vSwitch 2.4.
1498 .
1499 .IP \fBlimit=\fInumber\fR
1500 If the number of flows in table \fBtable\fR with cookie id \fBcookie\fR exceeds
1501 \fInumber\fR, a new flow will not be learned by this action. By default
1502 there's no limit. limit=0 is a long-hand for no limit.
1503 .
1504 .IP
1505 This flag was added in Open vSwitch 2.8.
1506 .
1507 .IP \fBresult_dst=\fIfield\fB[\fIbit\fB]\fR
1508 If learning failed (because the number of flows exceeds \fBlimit\fR),
1509 the action sets \fIfield\fB[\fIbit\fB]\fR to 0, otherwise it will be set to 1.
1510 \fIfield\fB[\fIbit\fB]\fR must be a single bit.
1511 .
1512 .IP
1513 This flag was added in Open vSwitch 2.8.
1514 .
1515 .IP \fIfield\fB=\fIvalue\fR
1516 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]=\fIsrc\fB[\fIstart\fB..\fIend\fB]\fR
1517 .IQ \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1518 Adds a match criterion to the new flow.
1519 .IP
1520 The first form specifies that \fIfield\fR must match the literal
1521 \fIvalue\fR, e.g. \fBdl_type=0x0800\fR. All of the fields and values
1522 for \fBovs\-ofctl\fR flow syntax are available with their usual
1523 meanings. Shorthand notation matchers (e.g. \fBip\fR in place of
1524 \fBdl_type=0x0800\fR) are not currently implemented.
1525 .IP
1526 The second form specifies that \fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1527 in the new flow must match \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR taken
1528 from the flow currently being processed.
1529 For example, \fINXM_OF_UDP_DST\fB[]\fR=\fINXM_OF_UDP_SRC\fB[]\fR on a
1530 TCP packet for which the UDP src port is \fB53\fR, creates a flow which
1531 matches \fINXM_OF_UDP_DST\fB[]\fR=\fB53\fR.
1532 .IP
1533 The third form is a shorthand for the second form. It specifies that
1534 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR in the new flow must match the same
1535 \fIfield\fB[\fIstart\fB..\fIend\fB]\fR taken from the flow currently
1536 being processed.
1537 For example, \fINXM_OF_TCP_DST\fB[]\fR on a TCP packet
1538 for which the TCP dst port is \fB80\fR, creates a flow which
1539 matches \fINXM_OF_TCP_DST\fB[]\fR=\fB80\fR.
1540 .
1541 .IP \fBload:\fIvalue\fB\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1542 .IQ \fBload:\fIsrc\fB[\fIstart\fB..\fIend\fB]\->\fIdst\fB[\fIstart\fB..\fIend\fB]
1543 .
1544 Adds a \fBload\fR action to the new flow.
1545 .IP
1546 The first form loads the literal \fIvalue\fR into bits \fIstart\fR
1547 through \fIend\fR, inclusive, in field \fIdst\fR. Its syntax is the
1548 same as the \fBload\fR action described earlier in this section.
1549 .IP
1550 The second form loads \fIsrc\fB[\fIstart\fB..\fIend\fB]\fR, a value
1551 from the flow currently being processed, into bits \fIstart\fR
1552 through \fIend\fR, inclusive, in field \fIdst\fR.
1553 .
1554 .IP \fBoutput:\fIfield\fB[\fIstart\fB..\fIend\fB]\fR
1555 Add an \fBoutput\fR action to the new flow's actions, that outputs to
1556 the OpenFlow port taken from \fIfield\fB[\fIstart\fB..\fIend\fB]\fR,
1557 which must be an NXM field as described above.
1558 .RE
1559 .RE
1560 .
1561 .RS
1562 .
1563 .IP \fBclear_actions\fR
1564 Clears all the actions in the action set immediately.
1565 .
1566 .IP \fBwrite_actions(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)
1567 Add the specific actions to the action set. The syntax of
1568 \fIactions\fR is the same as in the \fBactions=\fR field. The action
1569 set is carried between flow tables and then executed at the end of the
1570 pipeline.
1571 .
1572 .IP
1573 The actions in the action set are applied in the following order, as
1574 required by the OpenFlow specification, regardless of the order in
1575 which they were added to the action set. Except as specified
1576 otherwise below, the action set only holds at most a single action of
1577 each type. When more than one action of a single type is written to
1578 the action set, the one written later replaces the earlier action:
1579 .
1580 .RS
1581 .IP 1.
1582 \fBstrip_vlan\fR
1583 .IQ
1584 \fBpop_mpls\fR
1585 .
1586 .IP 2.
1587 \fBdecap\fR
1588 .
1589 .IP 3.
1590 \fBencap\fR
1591 .
1592 .IP 4.
1593 \fBpush_mpls\fR
1594 .
1595 .IP 5.
1596 \fBpush_vlan\fR
1597 .
1598 .IP 6.
1599 \fBdec_ttl\fR
1600 .IQ
1601 \fBdec_mpls_ttl\fR
1602 .IQ
1603 \fBdec_nsh_ttl\fR
1604 .
1605 .IP 7.
1606 \fBload\fR
1607 .IQ
1608 \fBmove\fR
1609 .IQ
1610 \fBmod_dl_dst\fR
1611 .IQ
1612 \fBmod_dl_src\fR
1613 .IQ
1614 \fBmod_nw_dst\fR
1615 .IQ
1616 \fBmod_nw_src\fR
1617 .IQ
1618 \fBmod_nw_tos\fR
1619 .IQ
1620 \fBmod_nw_ecn\fR
1621 .IQ
1622 \fBmod_nw_ttl\fR
1623 .IQ
1624 \fBmod_tp_dst\fR
1625 .IQ
1626 \fBmod_tp_src\fR
1627 .IQ
1628 \fBmod_vlan_pcp\fR
1629 .IQ
1630 \fBmod_vlan_vid\fR
1631 .IQ
1632 \fBset_field\fR
1633 .IQ
1634 \fBset_tunnel\fR
1635 .IQ
1636 \fBset_tunnel64\fR
1637 .IQ
1638 The action set can contain any number of these actions, with
1639 cumulative effect. They will be applied in the order as added.
1640 That is, when multiple actions modify the same part of a field,
1641 the later modification takes effect, and when they modify
1642 different parts of a field (or different fields), then both
1643 modifications are applied.
1644 .
1645 .IP 8.
1646 \fBset_queue\fR
1647 .
1648 .IP 9.
1649 \fBgroup\fR
1650 .IQ
1651 \fBoutput\fR
1652 .IQ
1653 \fBresubmit\fR
1654 .IQ
1655 If more than one of these actions is present, then the one listed
1656 earliest above is executed and the others are ignored, regardless of
1657 the order in which they were added to the action set. (If none of these
1658 actions is present, the action set has no real effect, because the
1659 modified packet is not sent anywhere and thus the modifications are
1660 not visible.)
1661 .RE
1662 .IP
1663 Only the actions listed above may be written to the action set.
1664 \fBencap\fR, \fBdecap\fR and \fBdec_nsh_ttl\fR actions are nonstandard.
1665 .
1666 .IP \fBwrite_metadata\fB:\fIvalue\fR[/\fImask\fR]
1667 Updates the metadata field for the flow. If \fImask\fR is omitted, the
1668 metadata field is set exactly to \fIvalue\fR; if \fImask\fR is specified, then
1669 a 1-bit in \fImask\fR indicates that the corresponding bit in the metadata
1670 field will be replaced with the corresponding bit from \fIvalue\fR. Both
1671 \fIvalue\fR and \fImask\fR are 64-bit values that are decimal by default; use
1672 a \fB0x\fR prefix to specify them in hexadecimal.
1673 .
1674 .IP \fBmeter\fR:\fImeter_id\fR
1675 Apply the \fImeter_id\fR before any other actions. If a meter band rate is
1676 exceeded, the packet may be dropped, or modified, depending on the meter
1677 band type. See the description of the \fBMeter Table Commands\fR, above,
1678 for more details.
1679 .
1680 .IP \fBgoto_table\fR:\fItable\fR
1681 Jumps to \fItable\Fr as the next table in the process pipeline. The
1682 \fItable\fR may be a number between 0 and 254 or (unless
1683 \fB\-\-no\-names\fR is specified) a name.
1684 .
1685 .IP "\fBfin_timeout(\fIargument\fR[\fB,\fIargument\fR]\fB)"
1686 This action changes the idle timeout or hard timeout, or both, of this
1687 OpenFlow rule when the rule matches a TCP packet with the FIN or RST
1688 flag. When such a packet is observed, the action reduces the rule's
1689 timeouts to those specified on the action. If the rule's existing
1690 timeout is already shorter than the one that the action specifies,
1691 then that timeout is unaffected.
1692 .IP
1693 \fIargument\fR takes the following forms:
1694 .RS
1695 .IP "\fBidle_timeout=\fIseconds\fR"
1696 Causes the flow to expire after the given number of seconds of
1697 inactivity.
1698 .
1699 .IP "\fBhard_timeout=\fIseconds\fR"
1700 Causes the flow to expire after the given number of seconds,
1701 regardless of activity. (\fIseconds\fR specifies time since the
1702 flow's creation, not since the receipt of the FIN or RST.)
1703 .RE
1704 .IP
1705 This action was added in Open vSwitch 1.5.90.
1706 .
1707 .IP "\fBsample(\fIargument\fR[\fB,\fIargument\fR]...\fB)\fR"
1708 Samples packets and sends one sample for every sampled packet.
1709 .IP
1710 \fIargument\fR takes the following forms:
1711 .RS
1712 .IP "\fBprobability=\fIpackets\fR"
1713 The number of sampled packets out of 65535. Must be greater or equal to 1.
1714 .IP "\fBcollector_set_id=\fIid\fR"
1715 The unsigned 32-bit integer identifier of the set of sample collectors
1716 to send sampled packets to. Defaults to 0.
1717 .IP "\fBobs_domain_id=\fIid\fR"
1718 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1719 Observation Domain ID sent in every IPFIX flow record. Defaults to 0.
1720 .IP "\fBobs_point_id=\fIid\fR"
1721 When sending samples to IPFIX collectors, the unsigned 32-bit integer
1722 Observation Point ID sent in every IPFIX flow record. Defaults to 0.
1723 .IP "\fBsampling_port=\fIport\fR"
1724 Sample packets on \fIport\fR, which should be the ingress or egress
1725 port. This option, which was added in Open vSwitch 2.5.90, allows the
1726 IPFIX implementation to export egress tunnel information.
1727 .IP "\fBingress\fR"
1728 .IQ "\fBegress\fR"
1729 Specifies explicitly that the packet is being sampled on ingress to or
1730 egress from the switch. IPFIX reports sent by Open vSwitch before
1731 version 2.5.90 did not include a direction. From 2.5.90 until 2.6.90,
1732 IPFIX reports inferred a direction from \fBsampling_port\fR: if it was
1733 the packet's output port, then the direction was reported as egress,
1734 otherwise as ingress. Open vSwitch 2.6.90 introduced these options,
1735 which allow the inferred direction to be overridden. This is
1736 particularly useful when the ingress (or egress) port is not a tunnel.
1737 .RE
1738 .IP
1739 Refer to \fBovs\-vswitchd.conf.db\fR(5) for more details on
1740 configuring sample collector sets.
1741 .IP
1742 This action was added in Open vSwitch 1.10.90.
1743 .
1744 .IP "\fBexit\fR"
1745 This action causes Open vSwitch to immediately halt execution of
1746 further actions. Those actions which have already been executed are
1747 unaffected. Any further actions, including those which may be in
1748 other tables, or different levels of the \fBresubmit\fR call stack,
1749 are ignored. Actions in the action set is still executed (specify
1750 \fBclear_actions\fR before \fBexit\fR to discard them).
1751 .
1752 .IP "\fBconjunction(\fIid\fB, \fIk\fB/\fIn\fR\fB)\fR"
1753 This action allows for sophisticated ``conjunctive match'' flows.
1754 Refer to \fBCONJUNCTIVE MATCH FIELDS\fR in \fBovs\-fields\fR(7) for details.
1755 .IP
1756 The \fBconjunction\fR action and \fBconj_id\fR field were introduced
1757 in Open vSwitch 2.4.
1758 .
1759 .IP "\fBclone(\fR[\fIaction\fR][\fB,\fIaction\fR...]\fB)\fR"
1760 Executes each nested \fIaction\fR, saving much of the packet and
1761 pipeline state beforehand and then restoring it afterward. The state
1762 that is saved and restored includes all flow data and metadata
1763 (including, for example, \fBct_state\fR), the stack accessed by
1764 \fBpush\fR and \fBpop\fR actions, and the OpenFlow action set.
1765 .IP
1766 This action was added in Open vSwitch 2.6.90.
1767 .
1768 .IP "\fBencap(\fR\fIheader\fR[\fB(\fR\fIprop\fR\fB=\fR\fIvalue\fR,\fItlv\fR\fB(\fR\fIclass\fR,\fItype\fR,\fIvalue\fB)\fR,...\fB)\fR]\fB)\fR"
1769 Encapsulates the packet with a new packet header, e.g., ethernet
1770 or nsh.
1771 .
1772 .RS
1773 .IP "\fIheader\fR"
1774 Used to specify encapsulation header type.
1775 .
1776 .IP "\fIprop\fR\fB=\fR\fIvalue\fR"
1777 Used to specify the initial value for the property in the encapsulation header.
1778 .
1779 .IP "\fItlv\fR\fB(\fR\fIclass\fR,\fItype\fR,\fIvalue\fB)\fR"
1780 Used to specify the initial value for the TLV (Type Length Value)
1781 in the encapsulation header.
1782 .RE
1783 .IP
1784 For example, \fBencap(ethernet)\fR will encapsulate the L3 packet with
1785 Ethernet header.
1786 .IP
1787 \fBencap(nsh(md_type=1))\fR will encapsulate the packet with nsh header
1788 and nsh metadata type 1.
1789 .IP
1790 \fBencap(nsh(md_type=2,tlv(0x1000,10,0x12345678)))\fR will encapsulate
1791 the packet with nsh header and nsh metadata type 2, and the nsh TLV with
1792 class 0x1000 and type 10 is set to 0x12345678.
1793 .IP
1794 \fIprop\fR\fB=\fR\fIvalue\fR is just used to set some
1795 necessary fields for encapsulation header initialization. Other fields
1796 in the encapsulation header must be set by \fBset_field\fR action. New
1797 encapsulation header implementation must add new match fields and
1798 corresponding \fBset\fR action in order that \fBset_field\fR action can
1799 change the fields in the encapsulation header on demand.
1800 .IP
1801 \fBencap(nsh(md_type=1)),\fR
1802 \fBset_field:0x1234->nsh_spi,set_field:0x11223344->nsh_c1\fR
1803 is an example to encapsulate nsh header and set nsh spi and c1.
1804 .IP
1805 This action was added in Open vSwitch 2.8.
1806 .
1807 .IP "\fBdecap(\fR[\fBpacket_type(ns=\fR\fInamespace\fR\fB,type=\fR\fItype\fR\fB)\fR]\fB)\fR"
1808 Decapsulates the outer packet header.
1809 .
1810 .RS
1811 .IP "\fBpacket_type(ns=\fR\fInamespace\fR\fB,type=\fR\fItype\fR\fB)\fR"
1812 It is optional and used to specify the outer header type of the
1813 decapsulated packet. \fInamespace\fR is 0 for Ethernet packet,
1814 1 for L3 packet, \fItype\fR\ is L3 protocol type, e.g.,
1815 0x894f for nsh, 0x0 for Ethernet.
1816 .RE
1817 .IP
1818 By default, \fBdecap()\fR will decapsulate the outer packet header
1819 according to the packet header type, if
1820 \fBpacket_type(ns=\fR\fInamespace\fR\fB,type=\fR\fItype\fR\fB)\fR
1821 is given, it will decapsulate the given packet header, it will fail
1822 if the actual outer packet header type is not of
1823 \fBpacket_type(ns=\fR\fInamespace\fR\fB,type=\fR\fItype\fR\fB)\fR.
1824 .IP
1825 This action was added in Open vSwitch 2.8.
1826 .RE
1827 .
1828 .PP
1829 An opaque identifier called a cookie can be used as a handle to identify
1830 a set of flows:
1831 .
1832 .IP \fBcookie=\fIvalue\fR
1833 .
1834 A cookie can be associated with a flow using the \fBadd\-flow\fR,
1835 \fBadd\-flows\fR, and \fBmod\-flows\fR commands. \fIvalue\fR can be any
1836 64-bit number and need not be unique among flows. If this field is
1837 omitted, a default cookie value of 0 is used.
1838 .
1839 .IP \fBcookie=\fIvalue\fR\fB/\fImask\fR
1840 .
1841 When using NXM, the cookie can be used as a handle for querying,
1842 modifying, and deleting flows. \fIvalue\fR and \fImask\fR may be
1843 supplied for the \fBdel\-flows\fR, \fBmod\-flows\fR, \fBdump\-flows\fR, and
1844 \fBdump\-aggregate\fR commands to limit matching cookies. A 1-bit in
1845 \fImask\fR indicates that the corresponding bit in \fIcookie\fR must
1846 match exactly, and a 0-bit wildcards that bit. A mask of \-1 may be used
1847 to exactly match a cookie.
1848 .IP
1849 The \fBmod\-flows\fR command can update the cookies of flows that
1850 match a cookie by specifying the \fIcookie\fR field twice (once with a
1851 mask for matching and once without to indicate the new value):
1852 .RS
1853 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1,actions=normal\fR"
1854 Change all flows' cookies to 1 and change their actions to \fBnormal\fR.
1855 .IP "\fBovs\-ofctl mod\-flows br0 cookie=1/\-1,cookie=2,actions=normal\fR"
1856 Update cookies with a value of 1 to 2 and change their actions to
1857 \fBnormal\fR.
1858 .RE
1859 .IP
1860 The ability to match on cookies was added in Open vSwitch 1.5.0.
1861 .
1862 .PP
1863 The following additional field sets the priority for flows added by
1864 the \fBadd\-flow\fR and \fBadd\-flows\fR commands. For
1865 \fBmod\-flows\fR and \fBdel\-flows\fR when \fB\-\-strict\fR is
1866 specified, priority must match along with the rest of the flow
1867 specification. For \fBmod-flows\fR without \fB\-\-strict\fR,
1868 priority is only significant if the command creates a new flow, that
1869 is, non-strict \fBmod\-flows\fR does not match on priority and will
1870 not change the priority of existing flows. Other commands do not
1871 allow priority to be specified.
1872 .
1873 .IP \fBpriority=\fIvalue\fR
1874 The priority at which a wildcarded entry will match in comparison to
1875 others. \fIvalue\fR is a number between 0 and 65535, inclusive. A higher
1876 \fIvalue\fR will match before a lower one. An exact-match entry will always
1877 have priority over an entry containing wildcards, so it has an implicit
1878 priority value of 65535. When adding a flow, if the field is not specified,
1879 the flow's priority will default to 32768.
1880 .IP
1881 OpenFlow leaves behavior undefined when two or more flows with the
1882 same priority can match a single packet. Some users expect
1883 ``sensible'' behavior, such as more specific flows taking precedence
1884 over less specific flows, but OpenFlow does not specify this and Open
1885 vSwitch does not implement it. Users should therefore take care to
1886 use priorities to ensure the behavior that they expect.
1887 .
1888 .PP
1889 The \fBadd\-flow\fR, \fBadd\-flows\fR, and \fBmod\-flows\fR commands
1890 support the following additional options. These options affect only
1891 new flows. Thus, for \fBadd\-flow\fR and \fBadd\-flows\fR, these
1892 options are always significant, but for \fBmod\-flows\fR they are
1893 significant only if the command creates a new flow, that is, their
1894 values do not update or affect existing flows.
1895 .
1896 .IP "\fBidle_timeout=\fIseconds\fR"
1897 Causes the flow to expire after the given number of seconds of
1898 inactivity. A value of 0 (the default) prevents a flow from expiring
1899 due to inactivity.
1900 .
1901 .IP \fBhard_timeout=\fIseconds\fR
1902 Causes the flow to expire after the given number of seconds,
1903 regardless of activity. A value of 0 (the default) gives the flow no
1904 hard expiration deadline.
1905 .
1906 .IP "\fBimportance=\fIvalue\fR"
1907 Sets the importance of a flow. The flow entry eviction mechanism can
1908 use importance as a factor in deciding which flow to evict. A value
1909 of 0 (the default) makes the flow non-evictable on the basis of
1910 importance. Specify a value between 0 and 65535.
1911 .IP
1912 Only OpenFlow 1.4 and later support \fBimportance\fR.
1913 .
1914 .IP "\fBsend_flow_rem\fR"
1915 Marks the flow with a flag that causes the switch to generate a ``flow
1916 removed'' message and send it to interested controllers when the flow
1917 later expires or is removed.
1918 .
1919 .IP "\fBcheck_overlap\fR"
1920 Forces the switch to check that the flow match does not overlap that
1921 of any different flow with the same priority in the same table. (This
1922 check is expensive so it is best to avoid it.)
1923 .
1924 .IP "\fBreset_counts\fR"
1925 When this flag is specified on a flow being added to a switch, and the
1926 switch already has a flow with an identical match, an OpenFlow 1.2 (or
1927 later) switch resets the flow's packet and byte counters to 0.
1928 Without the flag, the packet and byte counters are preserved.
1929 .IP
1930 OpenFlow 1.0 and 1.1 switches always reset counters in this situation,
1931 as if \fBreset_counts\fR were always specified.
1932 .IP
1933 Open vSwitch 1.10 added support for \fBreset_counts\fR.
1934 .
1935 .IP "\fBno_packet_counts\fR"
1936 .IQ "\fBno_byte_counts\fR"
1937 Adding these flags to a flow advises an OpenFlow 1.3 (or later) switch
1938 that the controller does not need packet or byte counters,
1939 respectively, for the flow. Some switch implementations might achieve
1940 higher performance or reduce resource consumption when these flags are
1941 used. These flags provide no benefit to the Open vSwitch software
1942 switch implementation.
1943 .IP
1944 OpenFlow 1.2 and earlier do not support these flags.
1945 .IP
1946 Open vSwitch 1.10 added support for \fBno_packet_counts\fR and
1947 \fBno_byte_counts\fR.
1948 .
1949 .PP
1950 The \fBdump\-flows\fR, \fBdump\-aggregate\fR, \fBdel\-flow\fR
1951 and \fBdel\-flows\fR commands support these additional optional fields:
1952 .
1953 .TP
1954 \fBout_port=\fIport\fR
1955 If set, a matching flow must include an output action to \fIport\fR,
1956 which must be an OpenFlow port number or name (e.g. \fBlocal\fR).
1957 .
1958 .TP
1959 \fBout_group=\fIport\fR
1960 If set, a matching flow must include an \fBgroup\fR action naming
1961 \fIgroup\fR, which must be an OpenFlow group number. This field
1962 is supported in Open vSwitch 2.5 and later and requires OpenFlow 1.1
1963 or later.
1964 .
1965 .SS "Table Entry Output"
1966 .
1967 The \fBdump\-tables\fR and \fBdump\-aggregate\fR commands print information
1968 about the entries in a datapath's tables. Each line of output is a
1969 flow entry as described in \fBFlow Syntax\fR, above, plus some
1970 additional fields:
1971 .
1972 .IP \fBduration=\fIsecs\fR
1973 The time, in seconds, that the entry has been in the table.
1974 \fIsecs\fR includes as much precision as the switch provides, possibly
1975 to nanosecond resolution.
1976 .
1977 .IP \fBn_packets\fR
1978 The number of packets that have matched the entry.
1979 .
1980 .IP \fBn_bytes\fR
1981 The total number of bytes from packets that have matched the entry.
1982 .
1983 .PP
1984 The following additional fields are included only if the switch is
1985 Open vSwitch 1.6 or later and the NXM flow format is used to dump the
1986 flow (see the description of the \fB\-\-flow-format\fR option below).
1987 The values of these additional fields are approximations only and in
1988 particular \fBidle_age\fR will sometimes become nonzero even for busy
1989 flows.
1990 .
1991 .IP \fBhard_age=\fIsecs\fR
1992 The integer number of seconds since the flow was added or modified.
1993 \fBhard_age\fR is displayed only if it differs from the integer part
1994 of \fBduration\fR. (This is separate from \fBduration\fR because
1995 \fBmod\-flows\fR restarts the \fBhard_timeout\fR timer without zeroing
1996 \fBduration\fR.)
1997 .
1998 .IP \fBidle_age=\fIsecs\fR
1999 The integer number of seconds that have passed without any packets
2000 passing through the flow.
2001 .
2002 .SS "Packet\-Out Syntax"
2003 .PP
2004 \fBovs\-ofctl bundle\fR command accepts packet-outs to be specified in
2005 the bundle file. Each packet-out comprises of a series of
2006 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
2007 space. (Embedding spaces into a packet-out description normally
2008 requires quoting to prevent the shell from breaking the description
2009 into multiple arguments.). Unless noted otherwise only the last
2010 instance of each field is honoured. This same syntax is also
2011 supported by the \fBovs\-ofctl packet-out\fR command.
2012 .PP
2013 .IP \fBin_port=\fIport\fR
2014 The port number to be considered the in_port when processing actions.
2015 This can be any valid OpenFlow port number, or any of the \fBLOCAL\fR,
2016 \fBCONTROLLER\fR, or \fBNONE\fR.
2017 .
2018 This field is required.
2019
2020 .IP \fIpipeline_field\fR=\fIvalue\fR
2021 Optionally, user can specify a list of pipeline fields for a packet-out
2022 message. The supported pipeline fields includes \fBtunnel fields\fR and
2023 \fBregister fields\fR as defined in \fBovs\-fields\fR(7).
2024
2025 .IP \fBpacket=\fIhex-string\fR
2026 The actual packet to send, expressed as a string of hexadecimal bytes.
2027 .
2028 This field is required.
2029
2030 .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
2031 The syntax of actions are identical to the \fBactions=\fR field
2032 described in \fBFlow Syntax\fR above. Specifying \fBactions=\fR is
2033 optional, but omitting actions is interpreted as a drop, so the packet
2034 will not be sent anywhere from the switch.
2035 .
2036 \fBactions\fR must be specified at the end of each line, like for flow mods.
2037 .RE
2038 .
2039 .SS "Group Syntax"
2040 .PP
2041 Some \fBovs\-ofctl\fR commands accept an argument that describes a group or
2042 groups. Such flow descriptions comprise a series
2043 \fIfield\fB=\fIvalue\fR assignments, separated by commas or white
2044 space. (Embedding spaces into a group description normally requires
2045 quoting to prevent the shell from breaking the description into
2046 multiple arguments.). Unless noted otherwise only the last instance
2047 of each field is honoured.
2048 .PP
2049 .IP \fBgroup_id=\fIid\fR
2050 The integer group id of group.
2051 When this field is specified in \fBdel\-groups\fR or \fBdump\-groups\fR,
2052 the keyword "all" may be used to designate all groups.
2053 .
2054 This field is required.
2055
2056
2057 .IP \fBtype=\fItype\fR
2058 The type of the group. The \fBadd-group\fR, \fBadd-groups\fR and
2059 \fBmod-groups\fR commands require this field. It is prohibited for
2060 other commands. The following keywords designated the allowed types:
2061 .RS
2062 .IP \fBall\fR
2063 Execute all buckets in the group.
2064 .IP \fBselect\fR
2065 Execute one bucket in the group, balancing across the buckets
2066 according to their weights. To select a bucket, for each live bucket,
2067 Open vSwitch hashes flow data with the bucket ID and multiplies by the
2068 bucket weight to obtain a ``score,'' and then selects the bucket with
2069 the highest score. Use \fBselection_method\fR to control the flow
2070 data used for selection.
2071 .IP \fBindirect\fR
2072 Executes the one bucket in the group.
2073 .IP \fBff\fR
2074 .IQ \fBfast_failover\fR
2075 Executes the first live bucket in the group which is associated with
2076 a live port or group.
2077 .RE
2078
2079 .IP \fBcommand_bucket_id=\fIid\fR
2080 The bucket to operate on. The \fBinsert-buckets\fR and \fBremove-buckets\fR
2081 commands require this field. It is prohibited for other commands.
2082 \fIid\fR may be an integer or one of the following keywords:
2083 .RS
2084 .IP \fBall\fR
2085 Operate on all buckets in the group.
2086 Only valid when used with the \fBremove-buckets\fR command in which
2087 case the effect is to remove all buckets from the group.
2088 .IP \fBfirst\fR
2089 Operate on the first bucket present in the group.
2090 In the case of the \fBinsert-buckets\fR command the effect is to
2091 insert new bucets just before the first bucket already present in the group;
2092 or to replace the buckets of the group if there are no buckets already present
2093 in the group.
2094 In the case of the \fBremove-buckets\fR command the effect is to
2095 remove the first bucket of the group; or do nothing if there are no
2096 buckets present in the group.
2097 .IP \fBlast\fR
2098 Operate on the last bucket present in the group.
2099 In the case of the \fBinsert-buckets\fR command the effect is to
2100 insert new bucets just after the last bucket already present in the group;
2101 or to replace the buckets of the group if there are no buckets already present
2102 in the group.
2103 In the case of the \fBremove-buckets\fR command the effect is to
2104 remove the last bucket of the group; or do nothing if there are no
2105 buckets present in the group.
2106 .RE
2107 .IP
2108 If \fIid\fR is an integer then it should correspond to the \fBbucket_id\fR
2109 of a bucket present in the group.
2110 In case of the \fBinsert-buckets\fR command the effect is to
2111 insert buckets just before the bucket in the group whose \fBbucket_id\fR is
2112 \fIid\fR.
2113 In case of the \fBiremove-buckets\fR command the effect is to
2114 remove the in the group whose \fBbucket_id\fR is \fIid\fR.
2115 It is an error if there is no bucket persent group in whose \fBbucket_id\fR is
2116 \fIid\fR.
2117
2118 .IP \fBselection_method\fR=\fImethod\fR
2119 The selection method used to select a bucket for a select group.
2120 This is a string of 1 to 15 bytes in length known to lower layers.
2121 This field is optional for \fBadd\-group\fR, \fBadd\-groups\fR and
2122 \fBmod\-group\fR commands on groups of type \fBselect\fR. Prohibited
2123 otherwise. If no selection method is specified, Open vSwitch up to
2124 release 2.9 applies the \fBhash\fR method with default fields. From
2125 2.10 onwards Open vSwitch defaults to the \fBdp_hash\fR method with symmetric
2126 L3/L4 hash algorithm, unless the weighted group buckets cannot be mapped to
2127 a maximum of 64 dp_hash values with sufficient accuracy.
2128 In those rare cases Open vSwitch 2.10 and later fall back to the \fBhash\fR
2129 method with the default set of hash fields.
2130 .RS
2131 .IP \fBdp_hash\fR
2132 Use a datapath computed hash value. The hash algorithm varies accross
2133 different datapath implementations. \fBdp_hash\fR uses the upper 32
2134 bits of the \fBselection_method_param\fR as the datapath hash
2135 algorithm selector. The supported values are \fB0\fR (corresponding to
2136 hash computation over the IP 5-tuple) and \fB1\fR (corresponding to a
2137 \fIsymmetric\fR hash computation over the IP 5-tuple). Selecting specific
2138 fields with the \fBfields\fR option is not supported with \fBdp_hash\fR).
2139 The lower 32 bits are used as the hash basis.
2140 .IP
2141 Using \fBdp_hash\fR has the advantage that it does not require the
2142 generated datapath flows to exact match any additional packet header
2143 fields. For example, even if multiple TCP connections thus hashed to
2144 different select group buckets have different source port numbers,
2145 generally all of them would be handled with a small set of already
2146 established datapath flows, resulting in less latency for TCP SYN
2147 packets. The downside is that the shared datapath flows must match
2148 each packet twice, as the datapath hash value calculation happens only
2149 when needed, and a second match is required to match some bits of its
2150 value. This double-matching incurs a small additional latency cost
2151 for each packet, but this latency is orders of magnitude less than the
2152 latency of creating new datapath flows for new TCP connections.
2153 .IP \fBhash\fR
2154 Use a hash computed over the fields specified with the \fBfields\fR
2155 option, see below. If no hash fields are specified, \fBhash\fR defaults
2156 to a symmetric hash over the combination of MAC addresses, VLAN tags,
2157 Ether type, IP addresses and L4 port numbers. \fBhash\fR uses the
2158 \fBselection_method_param\fR as the hash basis.
2159 .IP
2160 Note that the hashed fields become exact matched by the datapath
2161 flows. For example, if the TCP source port is hashed, the created
2162 datapath flows will match the specific TCP source port value present
2163 in the packet received. Since each TCP connection generally has a
2164 different source port value, a separate datapath flow will be need to
2165 be inserted for each TCP connection thus hashed to a select group
2166 bucket.
2167 .RE
2168 .IP
2169 This option uses a Netronome OpenFlow extension which is only supported
2170 when using Open vSwitch 2.4 and later with OpenFlow 1.5 and later.
2171
2172 .IP \fBselection_method_param\fR=\fIparam\fR
2173 64-bit integer parameter to the selection method selected by the
2174 \fBselection_method\fR field. The parameter's use is defined by the
2175 lower-layer that implements the \fBselection_method\fR. It is optional if
2176 the \fBselection_method\fR field is specified as a non-empty string.
2177 Prohibited otherwise. The default value is zero.
2178 .IP
2179 This option uses a Netronome OpenFlow extension which is only supported
2180 when using Open vSwitch 2.4 and later with OpenFlow 1.5 and later.
2181
2182 .IP \fBfields\fR=\fIfield\fR
2183 .IQ \fBfields(\fIfield\fR[\fB=\fImask\fR]\fR...\fB)\fR
2184 The field parameters to selection method selected by the
2185 \fBselection_method\fR field. The syntax is described in \fBFlow
2186 Syntax\fR with the additional restrictions that if a value is provided
2187 it is treated as a wildcard mask and wildcard masks following a slash
2188 are prohibited. The pre-requisites of fields must be provided by any
2189 flows that output to the group. The use of the fields is defined by
2190 the lower-layer that implements the \fBselection_method\fR. They are
2191 optional if the \fBselection_method\fR field is specified as ``hash',
2192 prohibited otherwise. The default is no fields.
2193 .IP
2194 This option will use a Netronome OpenFlow extension which is only supported
2195 when using Open vSwitch 2.4 and later with OpenFlow 1.5 and later.
2196
2197 .IP \fBbucket\fR=\fIbucket_parameters\fR
2198 The \fBadd-group\fR, \fBadd-groups\fR and \fBmod-group\fR commands
2199 require at least one bucket field. Bucket fields must appear after
2200 all other fields.
2201 .
2202 Multiple bucket fields to specify multiple buckets.
2203 The order in which buckets are specified corresponds to their order in
2204 the group. If the type of the group is "indirect" then only one group may
2205 be specified.
2206 .
2207 \fIbucket_parameters\fR consists of a list of \fIfield\fB=\fIvalue\fR
2208 assignments, separated by commas or white space followed by a
2209 comma-separated list of actions.
2210 The fields for \fIbucket_parameters\fR are:
2211 .
2212 .RS
2213 .IP \fBbucket_id=\fIid\fR
2214 The 32-bit integer group id of the bucket. Values greater than
2215 0xffffff00 are reserved.
2216 .
2217 This field was added in Open vSwitch 2.4 to conform with the OpenFlow
2218 1.5 specification. It is not supported when earlier versions
2219 of OpenFlow are used. Open vSwitch will automatically allocate bucket
2220 ids when they are not specified.
2221 .IP \fBactions=\fR[\fIaction\fR][\fB,\fIaction\fR...]\fR
2222 The syntax of actions are identical to the \fBactions=\fR field described in
2223 \fBFlow Syntax\fR above. Specifying \fBactions=\fR is optional, any unknown
2224 bucket parameter will be interpreted as an action.
2225 .IP \fBweight=\fIvalue\fR
2226 The relative weight of the bucket as an integer. This may be used by the switch
2227 during bucket select for groups whose \fBtype\fR is \fBselect\fR.
2228 .IP \fBwatch_port=\fIport\fR
2229 Port used to determine liveness of group.
2230 This or the \fBwatch_group\fR field is required
2231 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
2232 .IP \fBwatch_group=\fIgroup_id\fR
2233 Group identifier of group used to determine liveness of group.
2234 This or the \fBwatch_port\fR field is required
2235 for groups whose \fBtype\fR is \fBff\fR or \fBfast_failover\fR.
2236 .RE
2237 .
2238 .SS "Meter Syntax"
2239 .PP
2240 The meter table commands accept an argument that describes a meter.
2241 Such meter descriptions comprise a series \fIfield\fB=\fIvalue\fR
2242 assignments, separated by commas or white space.
2243 (Embedding spaces into a group description normally requires
2244 quoting to prevent the shell from breaking the description into
2245 multiple arguments.). Unless noted otherwise only the last instance
2246 of each field is honoured.
2247 .PP
2248 .IP \fBmeter=\fIid\fR
2249 The integer meter id of the meter.
2250 When this field is specified in \fBdel-meter\fR, \fBdump-meter\fR, or
2251 \fBmeter-stats\fR, the keyword "all" may be used to designate all meters.
2252 .
2253 This field is required, except for \fBmeter-stats\fR, which dumps all stats
2254 when this field is not specified.
2255
2256 .IP \fBkbps\fR
2257 .IQ \fBpktps\fR
2258 The unit for the meter band rate parameters, either kilobits per second, or
2259 packets per second, respectively. One of these must be specified. The burst
2260 size unit corresponds to the rate unit by dropping the "per second", i.e.,
2261 burst is in units of kilobits or packets, respectively.
2262
2263 .IP \fBburst\fR
2264 Specify burst size for all bands, or none of them, if this flag is not given.
2265
2266 .IP \fBstats\fR
2267 Collect meter and band statistics.
2268
2269 .IP \fBbands\fR=\fIband_parameters\fR
2270 The \fBadd-meter\fR and \fBmod-meter\fR commands require at least one
2271 band specification. Bands must appear after all other fields.
2272 .RS
2273 .IP \fBtype=\fItype\fR
2274 The type of the meter band. This keyword starts a new band specification.
2275 Each band specifies a rate above which the band is to take some action. The
2276 action depends on the band type. If multiple bands' rate is exceeded, then
2277 the band with the highest rate among the exceeded bands is selected.
2278 The following keywords designate the allowed
2279 meter band types:
2280 .RS
2281 .IP \fBdrop\fR
2282 Drop packets exceeding the band's rate limit.
2283 .RE
2284 .
2285 .IP "The other \fIband_parameters\fR are:"
2286 .IP \fBrate=\fIvalue\fR
2287 The relative rate limit for this band, in kilobits per second or packets per
2288 second, depending on the meter flags defined above.
2289 .IP \fBburst_size=\fIsize\fR
2290 The maximum burst allowed for the band. If \fBpktps\fR is specified,
2291 then \fIsize\fR is a packet count, otherwise it is in kilobits. If
2292 unspecified, the switch is free to select some reasonable value
2293 depending on its configuration.
2294 .RE
2295 .
2296 .SH OPTIONS
2297 .TP
2298 \fB\-\-strict\fR
2299 Uses strict matching when running flow modification commands.
2300 .
2301 .IP "\fB\-\-names\fR"
2302 .IQ "\fB\-\-no\-names\fR"
2303 Every OpenFlow port has a name and a number, and every OpenFlow flow
2304 table has a number and sometimes a name. By default, \fBovs\-ofctl\fR
2305 commands accept both port and table names and numbers, and they
2306 display port and table names if \fBovs\-ofctl\fR is running on an
2307 interactive console, numbers otherwise. With \fB\-\-names\fR,
2308 \fBovs\-ofctl\fR commands both accept and display port and table
2309 names; with \fB\-\-no\-names\fR, commands neither accept nor display
2310 port and table names.
2311 .IP
2312 If a port or table name contains special characters or might be
2313 confused with a keyword within a flow, it may be enclosed in double
2314 quotes (escaped from the shell). If necessary, JSON-style escape
2315 sequences may be used inside quotes, as specified in RFC 7159. When
2316 it displays port and table names, \fBovs\-ofctl\fR quotes any name
2317 that does not start with a letter followed by letters or digits.
2318 .IP
2319 Open vSwitch added support for port names and these options. Open
2320 vSwitch 2.10 added support for table names. Earlier versions always
2321 behaved as if \fB\-\-no\-names\fR were specified.
2322 .IP
2323 Open vSwitch does not place its own limit on the length of port names,
2324 but OpenFlow 1.0 to 1.5 limit port names to 15 bytes and OpenFlow 1.6
2325 limits them to 63 bytes. Because \fRovs\-ofctl\fR uses OpenFlow to
2326 retrieve the mapping between port names and numbers, names longer than
2327 this limit will be truncated for both display and acceptance.
2328 Truncation can also cause long names that are different to appear to
2329 be the same; when a switch has two ports with the same (truncated)
2330 name, \fBovs\-ofctl\fR refuses to display or accept the name, using
2331 the number instead.
2332 .IP
2333 OpenFlow and Open vSwitch limit table names to 32 bytes.
2334 .
2335 .IP "\fB\-\-stats\fR"
2336 .IQ "\fB\-\-no\-stats\fR"
2337 The \fBdump\-flows\fR command by default, or with \fB\-\-stats\fR,
2338 includes flow duration, packet and byte counts, and idle and hard age
2339 in its output. With \fB\-\-no\-stats\fR, it omits all of these, as
2340 well as cookie values and table IDs if they are zero.
2341 .
2342 .IP "\fB\-\-read-only\fR"
2343 Do not execute read/write commands.
2344 .
2345 .IP "\fB\-\-bundle\fR"
2346 Execute flow mods as an OpenFlow 1.4 atomic bundle transaction.
2347 .RS
2348 .IP \(bu
2349 Within a bundle, all flow mods are processed in the order they appear
2350 and as a single atomic transaction, meaning that if one of them fails,
2351 the whole transaction fails and none of the changes are made to the
2352 \fIswitch\fR's flow table, and that each given datapath packet
2353 traversing the OpenFlow tables sees the flow tables either as before
2354 the transaction, or after all the flow mods in the bundle have been
2355 successfully applied.
2356 .IP \(bu
2357 The beginning and the end of the flow table modification commands in a
2358 bundle are delimited with OpenFlow 1.4 bundle control messages, which
2359 makes it possible to stream the included commands without explicit
2360 OpenFlow barriers, which are otherwise used after each flow table
2361 modification command. This may make large modifications execute
2362 faster as a bundle.
2363 .IP \(bu
2364 Bundles require OpenFlow 1.4 or higher. An explicit \fB-O
2365 OpenFlow14\fR option is not needed, but you may need to enable
2366 OpenFlow 1.4 support for OVS by setting the OVSDB \fIprotocols\fR
2367 column in the \fIbridge\fR table.
2368 .RE
2369 .
2370 .so lib/ofp-version.man
2371 .
2372 .IP "\fB\-F \fIformat\fR[\fB,\fIformat\fR...]"
2373 .IQ "\fB\-\-flow\-format=\fIformat\fR[\fB,\fIformat\fR...]"
2374 \fBovs\-ofctl\fR supports the following individual flow formats, any
2375 number of which may be listed as \fIformat\fR:
2376 .RS
2377 .IP "\fBOpenFlow10\-table_id\fR"
2378 This is the standard OpenFlow 1.0 flow format. All OpenFlow switches
2379 and all versions of Open vSwitch support this flow format.
2380 .
2381 .IP "\fBOpenFlow10+table_id\fR"
2382 This is the standard OpenFlow 1.0 flow format plus a Nicira extension
2383 that allows \fBovs\-ofctl\fR to specify the flow table in which a
2384 particular flow should be placed. Open vSwitch 1.2 and later supports
2385 this flow format.
2386 .
2387 .IP "\fBNXM\-table_id\fR (Nicira Extended Match)"
2388 This Nicira extension to OpenFlow is flexible and extensible. It
2389 supports all of the Nicira flow extensions, such as \fBtun_id\fR and
2390 registers. Open vSwitch 1.1 and later supports this flow format.
2391 .
2392 .IP "\fBNXM+table_id\fR (Nicira Extended Match)"
2393 This combines Nicira Extended match with the ability to place a flow
2394 in a specific table. Open vSwitch 1.2 and later supports this flow
2395 format.
2396 .
2397 .IP "\fBOXM-OpenFlow12\fR"
2398 .IQ "\fBOXM-OpenFlow13\fR"
2399 .IQ "\fBOXM-OpenFlow14\fR"
2400 .IQ "\fBOXM-OpenFlow15\fR"
2401 .IQ "\fBOXM-OpenFlow16\fR"
2402 These are the standard OXM (OpenFlow Extensible Match) flow format in
2403 OpenFlow 1.2 and later.
2404 .RE
2405 .
2406 .IP
2407 \fBovs\-ofctl\fR also supports the following abbreviations for
2408 collections of flow formats:
2409 .RS
2410 .IP "\fBany\fR"
2411 Any supported flow format.
2412 .IP "\fBOpenFlow10\fR"
2413 \fBOpenFlow10\-table_id\fR or \fBOpenFlow10+table_id\fR.
2414 .IP "\fBNXM\fR"
2415 \fBNXM\-table_id\fR or \fBNXM+table_id\fR.
2416 .IP "\fBOXM\fR"
2417 \fBOXM-OpenFlow12\fR, \fBOXM-OpenFlow13\fR, or \fBOXM-OpenFlow14\fR.
2418 .RE
2419 .
2420 .IP
2421 For commands that modify the flow table, \fBovs\-ofctl\fR by default
2422 negotiates the most widely supported flow format that supports the
2423 flows being added. For commands that query the flow table,
2424 \fBovs\-ofctl\fR by default uses the most advanced format supported by
2425 the switch.
2426 .IP
2427 This option, where \fIformat\fR is a comma-separated list of one or
2428 more of the formats listed above, limits \fBovs\-ofctl\fR's choice of
2429 flow format. If a command cannot work as requested using one of the
2430 specified flow formats, \fBovs\-ofctl\fR will report a fatal error.
2431 .
2432 .IP "\fB\-P \fIformat\fR"
2433 .IQ "\fB\-\-packet\-in\-format=\fIformat\fR"
2434 \fBovs\-ofctl\fR supports the following ``packet-in'' formats, in order of
2435 increasing capability:
2436 .RS
2437 .IP "\fBstandard\fR"
2438 This uses the \fBOFPT_PACKET_IN\fR message, the standard ``packet-in''
2439 message for any given OpenFlow version. Every OpenFlow switch that
2440 supports a given OpenFlow version supports this format.
2441 .
2442 .IP "\fBnxt_packet_in\fR"
2443 This uses the \fBNXT_PACKET_IN\fR message, which adds many of the
2444 capabilities of the OpenFlow 1.1 and later ``packet-in'' messages
2445 before those OpenFlow versions were available in Open vSwitch. Open
2446 vSwitch 1.1 and later support this format. Only Open vSwitch 2.6 and
2447 later, however, support it for OpenFlow 1.1 and later (but there is
2448 little reason to use it with those versions of OpenFlow).
2449 .
2450 .IP "\fBnxt_packet_in2\fR"
2451 This uses the \fBNXT_PACKET_IN2\fR message, which is extensible and
2452 should avoid the need to define new formats later. In particular,
2453 this format supports passing arbitrary user-provided data to a
2454 controller using the \fBuserdata\fB option on the \fBcontroller\fR
2455 action. Open vSwitch 2.6 and later support this format.
2456 .
2457 .RE
2458 .IP
2459 Without this option, \fBovs\-ofctl\fR prefers \fBnxt_packet_in2\fR if
2460 the switch supports it. Otherwise, if OpenFlow 1.0 is in use,
2461 \fBovs\-ofctl\fR prefers \fBnxt_packet_in\fR if the switch supports
2462 it. Otherwise, \fBovs\-ofctl\fR falls back to the \fBstandard\fR
2463 packet-in format. When this option is specified, \fBovs\-ofctl\fR
2464 insists on the selected format. If the switch does not support the
2465 requested format, \fBovs\-ofctl\fR will report a fatal error.
2466 .IP
2467 Before version 2.6, Open vSwitch called \fBstandard\fR format
2468 \fBopenflow10\fR and \fBnxt_packet_in\fR format \fBnxm\fR, and
2469 \fBovs\-ofctl\fR still accepts these names as synonyms. (The name
2470 \fBopenflow10\fR was a misnomer because this format actually varies
2471 from one OpenFlow version to another; it is not consistently OpenFlow
2472 1.0 format. Similarly, when \fBnxt_packet_in2\fR was introduced, the
2473 name \fBnxm\fR became confusing because it also uses OXM/NXM.)
2474 .
2475 .IP
2476 This option affects only the \fBmonitor\fR command.
2477 .
2478 .IP "\fB\-\-timestamp\fR"
2479 Print a timestamp before each received packet. This option only
2480 affects the \fBmonitor\fR, \fBsnoop\fR, and \fBofp\-parse\-pcap\fR
2481 commands.
2482 .
2483 .IP "\fB\-m\fR"
2484 .IQ "\fB\-\-more\fR"
2485 Increases the verbosity of OpenFlow messages printed and logged by
2486 \fBovs\-ofctl\fR commands. Specify this option more than once to
2487 increase verbosity further.
2488 .
2489 .IP \fB\-\-sort\fR[\fB=\fIfield\fR]
2490 .IQ \fB\-\-rsort\fR[\fB=\fIfield\fR]
2491 Display output sorted by flow \fIfield\fR in ascending
2492 (\fB\-\-sort\fR) or descending (\fB\-\-rsort\fR) order, where
2493 \fIfield\fR is any of the fields that are allowed for matching or
2494 \fBpriority\fR to sort by priority. When \fIfield\fR is omitted, the
2495 output is sorted by priority. Specify these options multiple times to
2496 sort by multiple fields.
2497 .IP
2498 Any given flow will not necessarily specify a value for a given
2499 field. This requires special treatement:
2500 .RS
2501 .IP \(bu
2502 A flow that does not specify any part of a field that is used for sorting is
2503 sorted after all the flows that do specify the field. For example,
2504 \fB\-\-sort=tcp_src\fR will sort all the flows that specify a TCP
2505 source port in ascending order, followed by the flows that do not
2506 specify a TCP source port at all.
2507 .IP \(bu
2508 A flow that only specifies some bits in a field is sorted as if the
2509 wildcarded bits were zero. For example, \fB\-\-sort=nw_src\fR would
2510 sort a flow that specifies \fBnw_src=192.168.0.0/24\fR the same as
2511 \fBnw_src=192.168.0.0\fR.
2512 .RE
2513 .IP
2514 These options currently affect only \fBdump\-flows\fR output.
2515 .
2516 .SS "Daemon Options"
2517 .ds DD \
2518 \fBovs\-ofctl\fR detaches only when executing the \fBmonitor\fR or \
2519 \fBsnoop\fR commands.
2520 .so lib/daemon.man
2521 .so lib/unixctl.man
2522 .SS "Public Key Infrastructure Options"
2523 .so lib/ssl.man
2524 .so lib/vlog.man
2525 .so lib/colors.man
2526 .so lib/common.man
2527 .
2528 .SH "RUNTIME MANAGEMENT COMMANDS"
2529 \fBovs\-appctl\fR(8) can send commands to a running \fBovs\-ofctl\fR
2530 process. The supported commands are listed below.
2531 .
2532 .IP "\fBexit\fR"
2533 Causes \fBovs\-ofctl\fR to gracefully terminate. This command applies
2534 only when executing the \fBmonitor\fR or \fBsnoop\fR commands.
2535 .
2536 .IP "\fBofctl/set\-output\-file \fIfile\fR"
2537 Causes all subsequent output to go to \fIfile\fR instead of stderr.
2538 This command applies only when executing the \fBmonitor\fR or
2539 \fBsnoop\fR commands.
2540 .
2541 .IP "\fBofctl/send \fIofmsg\fR..."
2542 Sends each \fIofmsg\fR, specified as a sequence of hex digits that
2543 express an OpenFlow message, on the OpenFlow connection. This command
2544 is useful only when executing the \fBmonitor\fR command.
2545 .
2546 .IP "\fBofctl/packet\-out \fIpacket-out\fR"
2547 Sends an OpenFlow PACKET_OUT message specified in \fBPacket\-Out
2548 Syntax\fR, on the OpenFlow connection. See \fBPacket\-Out Syntax\fR
2549 section for more information. This command is useful only when
2550 executing the \fBmonitor\fR command.
2551 .
2552 .IP "\fBofctl/barrier\fR"
2553 Sends an OpenFlow barrier request on the OpenFlow connection and waits
2554 for a reply. This command is useful only for the \fBmonitor\fR
2555 command.
2556 .
2557 .SH EXAMPLES
2558 .
2559 The following examples assume that \fBovs\-vswitchd\fR has a bridge
2560 named \fBbr0\fR configured.
2561 .
2562 .TP
2563 \fBovs\-ofctl dump\-tables br0\fR
2564 Prints out the switch's table stats. (This is more interesting after
2565 some traffic has passed through.)
2566 .
2567 .TP
2568 \fBovs\-ofctl dump\-flows br0\fR
2569 Prints the flow entries in the switch.
2570 .
2571 .TP
2572 \fBovs\-ofctl add\-flow table=0 actions=learn(table=1,hard_timeout=10, NXM_OF_VLAN_TCI[0..11],output:NXM_OF_IN_PORT[]), resubmit(,1)\fR
2573 \fBovs\-ofctl add\-flow table=1 priority=0 actions=flood\fR
2574 Implements a level 2 MAC learning switch using the learn.
2575 .
2576 .TP
2577 \fBovs\-ofctl add\-flow br0 'table=0,priority=0 actions=load:3->NXM_NX_REG0[0..15],learn(table=0,priority=1,idle_timeout=10,NXM_OF_ETH_SRC[],NXM_OF_VLAN_TCI[0..11],output:NXM_NX_REG0[0..15]),output:2\fR
2578 In this use of a learn action, the first packet from each source MAC
2579 will be sent to port 2. Subsequent packets will be output to port 3,
2580 with an idle timeout of 10 seconds. NXM field names and match field
2581 names are both accepted, e.g. \fBNXM_NX_REG0\fR or \fBreg0\fR for the
2582 first register, and empty brackets may be omitted.
2583 .IP
2584 Additional examples may be found documented as part of related sections.
2585 .
2586 .SH "SEE ALSO"
2587 .
2588 .BR ovs\-fields (7),
2589 .BR ovs\-appctl (8),
2590 .BR ovs\-vswitchd (8),
2591 .BR ovs\-vswitchd.conf.db (8)