]> git.proxmox.com Git - ovs.git/blob - vswitchd/vswitch.xml
bridge: Also prohibit \ in bridge names.
[ovs.git] / vswitchd / vswitch.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <database name="ovs-vswitchd.conf.db" title="Open vSwitch Configuration Database">
3 <p>
4 A database with this schema holds the configuration for one Open
5 vSwitch daemon. The top-level configuration for the daemon is the
6 <ref table="Open_vSwitch"/> table, which must have exactly one
7 record. Records in other tables are significant only when they
8 can be reached directly or indirectly from the <ref
9 table="Open_vSwitch"/> table. Records that are not reachable from
10 the <ref table="Open_vSwitch"/> table are automatically deleted
11 from the database, except for records in a few distinguished
12 ``root set'' tables.
13 </p>
14
15 <h2>Common Columns</h2>
16
17 <p>
18 Most tables contain two special columns, named <code>other_config</code>
19 and <code>external_ids</code>. These columns have the same form and
20 purpose each place that they appear, so we describe them here to save space
21 later.
22 </p>
23
24 <dl>
25 <dt><code>other_config</code>: map of string-string pairs</dt>
26 <dd>
27 <p>
28 Key-value pairs for configuring rarely used features. Supported keys,
29 along with the forms taken by their values, are documented individually
30 for each table.
31 </p>
32 <p>
33 A few tables do not have <code>other_config</code> columns because no
34 key-value pairs have yet been defined for them.
35 </p>
36 </dd>
37
38 <dt><code>external_ids</code>: map of string-string pairs</dt>
39 <dd>
40 Key-value pairs for use by external frameworks that integrate with Open
41 vSwitch, rather than by Open vSwitch itself. System integrators should
42 either use the Open vSwitch development mailing list to coordinate on
43 common key-value definitions, or choose key names that are likely to be
44 unique. In some cases, where key-value pairs have been defined that are
45 likely to be widely useful, they are documented individually for each
46 table.
47 </dd>
48 </dl>
49
50 <table name="Open_vSwitch" title="Open vSwitch configuration.">
51 Configuration for an Open vSwitch daemon. There must be exactly
52 one record in the <ref table="Open_vSwitch"/> table.
53
54 <group title="Configuration">
55 <column name="bridges">
56 Set of bridges managed by the daemon.
57 </column>
58
59 <column name="ssl">
60 SSL used globally by the daemon.
61 </column>
62
63 <column name="external_ids" key="system-id">
64 A unique identifier for the Open vSwitch's physical host.
65 The form of the identifier depends on the type of the host.
66 On a Citrix XenServer, this will likely be the same as
67 <ref column="external_ids" key="xs-system-uuid"/>.
68 </column>
69
70 <column name="external_ids" key="xs-system-uuid">
71 The Citrix XenServer universally unique identifier for the physical
72 host as displayed by <code>xe host-list</code>.
73 </column>
74
75 <column name="other_config" key="stats-update-interval"
76 type='{"type": "integer", "minInteger": 5000}'>
77 <p>
78 Interval for updating statistics to the database, in milliseconds.
79 This option will affect the update of the <code>statistics</code>
80 column in the following tables: <code>Port</code>, <code>Interface
81 </code>, <code>Mirror</code>.
82 </p>
83 <p>
84 Default value is 5000 ms.
85 </p>
86 <p>
87 Getting statistics more frequently can be achieved via OpenFlow.
88 </p>
89 </column>
90
91 <column name="other_config" key="flow-restore-wait"
92 type='{"type": "boolean"}'>
93 <p>
94 When <code>ovs-vswitchd</code> starts up, it has an empty flow table
95 and therefore it handles all arriving packets in its default fashion
96 according to its configuration, by dropping them or sending them to
97 an OpenFlow controller or switching them as a standalone switch.
98 This behavior is ordinarily desirable. However, if
99 <code>ovs-vswitchd</code> is restarting as part of a ``hot-upgrade,''
100 then this leads to a relatively long period during which packets are
101 mishandled.
102 </p>
103 <p>
104 This option allows for improvement. When <code>ovs-vswitchd</code>
105 starts with this value set as <code>true</code>, it will neither
106 flush or expire previously set datapath flows nor will it send and
107 receive any packets to or from the datapath. When this value is
108 later set to <code>false</code>, <code>ovs-vswitchd</code> will
109 start receiving packets from the datapath and re-setup the flows.
110 </p>
111 <p>
112 Thus, with this option, the procedure for a hot-upgrade of
113 <code>ovs-vswitchd</code> becomes roughly the following:
114 </p>
115 <ol>
116 <li>
117 Stop <code>ovs-vswitchd</code>.
118 </li>
119 <li>
120 Set <ref column="other_config" key="flow-restore-wait"/>
121 to <code>true</code>.
122 </li>
123 <li>
124 Start <code>ovs-vswitchd</code>.
125 </li>
126 <li>
127 Use <code>ovs-ofctl</code> (or some other program, such as an
128 OpenFlow controller) to restore the OpenFlow flow table
129 to the desired state.
130 </li>
131 <li>
132 Set <ref column="other_config" key="flow-restore-wait"/>
133 to <code>false</code> (or remove it entirely from the database).
134 </li>
135 </ol>
136 <p>
137 The <code>ovs-ctl</code>'s ``restart'' and ``force-reload-kmod''
138 functions use the above config option during hot upgrades.
139 </p>
140 </column>
141
142 <column name="other_config" key="flow-limit"
143 type='{"type": "integer", "minInteger": 0}'>
144 <p>
145 The maximum
146 number of flows allowed in the datapath flow table. Internally OVS
147 will choose a flow limit which will likely be lower than this number,
148 based on real time network conditions. Tweaking this value is
149 discouraged unless you know exactly what you're doing.
150 </p>
151 <p>
152 The default is 200000.
153 </p>
154 </column>
155
156 <column name="other_config" key="max-idle"
157 type='{"type": "integer", "minInteger": 500}'>
158 <p>
159 The maximum time (in ms) that idle flows will remain cached in the
160 datapath. Internally OVS will check the validity and activity for
161 datapath flows regularly and may expire flows quicker than this
162 number, based on real time network conditions. Tweaking this
163 value is discouraged unless you know exactly what you're doing.
164 </p>
165 <p>
166 The default is 10000.
167 </p>
168 </column>
169
170 <column name="other_config" key="n-dpdk-rxqs"
171 type='{"type": "integer", "minInteger": 1}'>
172 <p>
173 Specifies the maximum number of rx queues to be created for each dpdk
174 interface. If not specified or specified to 0, one rx queue will
175 be created for each dpdk interface by default.
176 </p>
177 </column>
178
179 <column name="other_config" key="pmd-cpu-mask">
180 <p>
181 Specifies CPU mask for setting the cpu affinity of PMD (Poll
182 Mode Driver) threads. Value should be in the form of hex string,
183 similar to the dpdk EAL '-c COREMASK' option input or the 'taskset'
184 mask input.
185 </p>
186 <p>
187 The lowest order bit corresponds to the first CPU core. A set bit
188 means the corresponding core is available and a pmd thread will be
189 created and pinned to it. If the input does not cover all cores,
190 those uncovered cores are considered not set.
191 </p>
192 <p>
193 If not specified, one pmd thread will be created for each numa node
194 and pinned to any available core on the numa node by default.
195 </p>
196 </column>
197
198 <column name="other_config" key="n-handler-threads"
199 type='{"type": "integer", "minInteger": 1}'>
200 <p>
201 Specifies the number of threads for software datapaths to use for
202 handling new flows. The default the number of online CPU cores minus
203 the number of revalidators.
204 </p>
205 <p>
206 This configuration is per datapath. If you have more than one
207 software datapath (e.g. some <code>system</code> bridges and some
208 <code>netdev</code> bridges), then the total number of threads is
209 <code>n-handler-threads</code> times the number of software
210 datapaths.
211 </p>
212 </column>
213
214 <column name="other_config" key="n-revalidator-threads"
215 type='{"type": "integer", "minInteger": 1}'>
216 <p>
217 Specifies the number of threads for software datapaths to use for
218 revalidating flows in the datapath. Typically, there is a direct
219 correlation between the number of revalidator threads, and the number
220 of flows allowed in the datapath. The default is the number of cpu
221 cores divided by four plus one. If <code>n-handler-threads</code> is
222 set, the default changes to the number of cpu cores minus the number
223 of handler threads.
224 </p>
225 <p>
226 This configuration is per datapath. If you have more than one
227 software datapath (e.g. some <code>system</code> bridges and some
228 <code>netdev</code> bridges), then the total number of threads is
229 <code>n-handler-threads</code> times the number of software
230 datapaths.
231 </p>
232 </column>
233 </group>
234
235 <group title="Status">
236 <column name="next_cfg">
237 Sequence number for client to increment. When a client modifies
238 any part of the database configuration and wishes to wait for
239 Open vSwitch to finish applying the changes, it may increment
240 this sequence number.
241 </column>
242
243 <column name="cur_cfg">
244 Sequence number that Open vSwitch sets to the current value of
245 <ref column="next_cfg"/> after it finishes applying a set of
246 configuration changes.
247 </column>
248
249 <group title="Statistics">
250 <p>
251 The <code>statistics</code> column contains key-value pairs that
252 report statistics about a system running an Open vSwitch. These are
253 updated periodically (currently, every 5 seconds). Key-value pairs
254 that cannot be determined or that do not apply to a platform are
255 omitted.
256 </p>
257
258 <column name="other_config" key="enable-statistics"
259 type='{"type": "boolean"}'>
260 Statistics are disabled by default to avoid overhead in the common
261 case when statistics gathering is not useful. Set this value to
262 <code>true</code> to enable populating the <ref column="statistics"/>
263 column or to <code>false</code> to explicitly disable it.
264 </column>
265
266 <column name="statistics" key="cpu"
267 type='{"type": "integer", "minInteger": 1}'>
268 <p>
269 Number of CPU processors, threads, or cores currently online and
270 available to the operating system on which Open vSwitch is running,
271 as an integer. This may be less than the number installed, if some
272 are not online or if they are not available to the operating
273 system.
274 </p>
275 <p>
276 Open vSwitch userspace processes are not multithreaded, but the
277 Linux kernel-based datapath is.
278 </p>
279 </column>
280
281 <column name="statistics" key="load_average">
282 A comma-separated list of three floating-point numbers,
283 representing the system load average over the last 1, 5, and 15
284 minutes, respectively.
285 </column>
286
287 <column name="statistics" key="memory">
288 <p>
289 A comma-separated list of integers, each of which represents a
290 quantity of memory in kilobytes that describes the operating
291 system on which Open vSwitch is running. In respective order,
292 these values are:
293 </p>
294
295 <ol>
296 <li>Total amount of RAM allocated to the OS.</li>
297 <li>RAM allocated to the OS that is in use.</li>
298 <li>RAM that can be flushed out to disk or otherwise discarded
299 if that space is needed for another purpose. This number is
300 necessarily less than or equal to the previous value.</li>
301 <li>Total disk space allocated for swap.</li>
302 <li>Swap space currently in use.</li>
303 </ol>
304
305 <p>
306 On Linux, all five values can be determined and are included. On
307 other operating systems, only the first two values can be
308 determined, so the list will only have two values.
309 </p>
310 </column>
311
312 <column name="statistics" key="process_NAME">
313 <p>
314 One such key-value pair, with <code>NAME</code> replaced by
315 a process name, will exist for each running Open vSwitch
316 daemon process, with <var>name</var> replaced by the
317 daemon's name (e.g. <code>process_ovs-vswitchd</code>). The
318 value is a comma-separated list of integers. The integers
319 represent the following, with memory measured in kilobytes
320 and durations in milliseconds:
321 </p>
322
323 <ol>
324 <li>The process's virtual memory size.</li>
325 <li>The process's resident set size.</li>
326 <li>The amount of user and system CPU time consumed by the
327 process.</li>
328 <li>The number of times that the process has crashed and been
329 automatically restarted by the monitor.</li>
330 <li>The duration since the process was started.</li>
331 <li>The duration for which the process has been running.</li>
332 </ol>
333
334 <p>
335 The interpretation of some of these values depends on whether the
336 process was started with the <option>--monitor</option>. If it
337 was not, then the crash count will always be 0 and the two
338 durations will always be the same. If <option>--monitor</option>
339 was given, then the crash count may be positive; if it is, the
340 latter duration is the amount of time since the most recent crash
341 and restart.
342 </p>
343
344 <p>
345 There will be one key-value pair for each file in Open vSwitch's
346 ``run directory'' (usually <code>/var/run/openvswitch</code>)
347 whose name ends in <code>.pid</code>, whose contents are a
348 process ID, and which is locked by a running process. The
349 <var>name</var> is taken from the pidfile's name.
350 </p>
351
352 <p>
353 Currently Open vSwitch is only able to obtain all of the above
354 detail on Linux systems. On other systems, the same key-value
355 pairs will be present but the values will always be the empty
356 string.
357 </p>
358 </column>
359
360 <column name="statistics" key="file_systems">
361 <p>
362 A space-separated list of information on local, writable file
363 systems. Each item in the list describes one file system and
364 consists in turn of a comma-separated list of the following:
365 </p>
366
367 <ol>
368 <li>Mount point, e.g. <code>/</code> or <code>/var/log</code>.
369 Any spaces or commas in the mount point are replaced by
370 underscores.</li>
371 <li>Total size, in kilobytes, as an integer.</li>
372 <li>Amount of storage in use, in kilobytes, as an integer.</li>
373 </ol>
374
375 <p>
376 This key-value pair is omitted if there are no local, writable
377 file systems or if Open vSwitch cannot obtain the needed
378 information.
379 </p>
380 </column>
381 </group>
382 </group>
383
384 <group title="Version Reporting">
385 <p>
386 These columns report the types and versions of the hardware and
387 software running Open vSwitch. We recommend in general that software
388 should test whether specific features are supported instead of relying
389 on version number checks. These values are primarily intended for
390 reporting to human administrators.
391 </p>
392
393 <column name="ovs_version">
394 The Open vSwitch version number, e.g. <code>1.1.0</code>.
395 </column>
396
397 <column name="db_version">
398 <p>
399 The database schema version number in the form
400 <code><var>major</var>.<var>minor</var>.<var>tweak</var></code>,
401 e.g. <code>1.2.3</code>. Whenever the database schema is changed in
402 a non-backward compatible way (e.g. deleting a column or a table),
403 <var>major</var> is incremented. When the database schema is changed
404 in a backward compatible way (e.g. adding a new column),
405 <var>minor</var> is incremented. When the database schema is changed
406 cosmetically (e.g. reindenting its syntax), <var>tweak</var> is
407 incremented.
408 </p>
409
410 <p>
411 The schema version is part of the database schema, so it can also be
412 retrieved by fetching the schema using the Open vSwitch database
413 protocol.
414 </p>
415 </column>
416
417 <column name="system_type">
418 <p>
419 An identifier for the type of system on top of which Open vSwitch
420 runs, e.g. <code>XenServer</code> or <code>KVM</code>.
421 </p>
422 <p>
423 System integrators are responsible for choosing and setting an
424 appropriate value for this column.
425 </p>
426 </column>
427
428 <column name="system_version">
429 <p>
430 The version of the system identified by <ref column="system_type"/>,
431 e.g. <code>5.6.100-39265p</code> on XenServer 5.6.100 build 39265.
432 </p>
433 <p>
434 System integrators are responsible for choosing and setting an
435 appropriate value for this column.
436 </p>
437 </column>
438
439 </group>
440
441 <group title="Capabilities">
442 <p>
443 These columns report capabilities of the Open vSwitch instance.
444 </p>
445 <column name="datapath_types">
446 <p>
447 This column reports the different dpifs registered with the system.
448 These are the values that this instance supports in the <ref
449 column="datapath_type" table="Bridge"/> column of the <ref
450 table="Bridge"/> table.
451 </p>
452 </column>
453 <column name="iface_types">
454 <p>
455 This column reports the different netdevs registered with the system.
456 These are the values that this instance supports in the <ref
457 column="type" table="Interface"/> column of the <ref
458 table="Interface"/> table.
459 </p>
460 </column>
461 </group>
462
463 <group title="Database Configuration">
464 <p>
465 These columns primarily configure the Open vSwitch database
466 (<code>ovsdb-server</code>), not the Open vSwitch switch
467 (<code>ovs-vswitchd</code>). The OVSDB database also uses the <ref
468 column="ssl"/> settings.
469 </p>
470
471 <p>
472 The Open vSwitch switch does read the database configuration to
473 determine remote IP addresses to which in-band control should apply.
474 </p>
475
476 <column name="manager_options">
477 Database clients to which the Open vSwitch database server should
478 connect or to which it should listen, along with options for how these
479 connection should be configured. See the <ref table="Manager"/> table
480 for more information.
481 </column>
482 </group>
483
484 <group title="Common Columns">
485 The overall purpose of these columns is described under <code>Common
486 Columns</code> at the beginning of this document.
487
488 <column name="other_config"/>
489 <column name="external_ids"/>
490 </group>
491 </table>
492
493 <table name="Bridge">
494 <p>
495 Configuration for a bridge within an
496 <ref table="Open_vSwitch"/>.
497 </p>
498 <p>
499 A <ref table="Bridge"/> record represents an Ethernet switch with one or
500 more ``ports,'' which are the <ref table="Port"/> records pointed to by
501 the <ref table="Bridge"/>'s <ref column="ports"/> column.
502 </p>
503
504 <group title="Core Features">
505 <column name="name">
506 <p>
507 Bridge identifier. Should be alphanumeric and no more than about 8
508 bytes long. Must be unique among the names of ports, interfaces, and
509 bridges on a host.
510 </p>
511
512 <p>
513 Forward and backward slashes are prohibited in bridge names.
514 </p>
515 </column>
516
517 <column name="ports">
518 Ports included in the bridge.
519 </column>
520
521 <column name="mirrors">
522 Port mirroring configuration.
523 </column>
524
525 <column name="netflow">
526 NetFlow configuration.
527 </column>
528
529 <column name="sflow">
530 sFlow(R) configuration.
531 </column>
532
533 <column name="ipfix">
534 IPFIX configuration.
535 </column>
536
537 <column name="flood_vlans">
538 <p>
539 VLAN IDs of VLANs on which MAC address learning should be disabled,
540 so that packets are flooded instead of being sent to specific ports
541 that are believed to contain packets' destination MACs. This should
542 ordinarily be used to disable MAC learning on VLANs used for
543 mirroring (RSPAN VLANs). It may also be useful for debugging.
544 </p>
545 <p>
546 SLB bonding (see the <ref table="Port" column="bond_mode"/> column in
547 the <ref table="Port"/> table) is incompatible with
548 <code>flood_vlans</code>. Consider using another bonding mode or
549 a different type of mirror instead.
550 </p>
551 </column>
552
553 <column name="auto_attach">
554 Auto Attach configuration.
555 </column>
556 </group>
557
558 <group title="OpenFlow Configuration">
559 <column name="controller">
560 <p>
561 OpenFlow controller set. If unset, then no OpenFlow controllers
562 will be used.
563 </p>
564
565 <p>
566 If there are primary controllers, removing all of them clears the
567 flow table. If there are no primary controllers, adding one also
568 clears the flow table. Other changes to the set of controllers, such
569 as adding or removing a service controller, adding another primary
570 controller to supplement an existing primary controller, or removing
571 only one of two primary controllers, have no effect on the flow
572 table.
573 </p>
574 </column>
575
576 <column name="flow_tables">
577 Configuration for OpenFlow tables. Each pair maps from an OpenFlow
578 table ID to configuration for that table.
579 </column>
580
581 <column name="fail_mode">
582 <p>When a controller is configured, it is, ordinarily, responsible
583 for setting up all flows on the switch. Thus, if the connection to
584 the controller fails, no new network connections can be set up.
585 If the connection to the controller stays down long enough,
586 no packets can pass through the switch at all. This setting
587 determines the switch's response to such a situation. It may be set
588 to one of the following:
589 <dl>
590 <dt><code>standalone</code></dt>
591 <dd>If no message is received from the controller for three
592 times the inactivity probe interval
593 (see <ref column="inactivity_probe"/>), then Open vSwitch
594 will take over responsibility for setting up flows. In
595 this mode, Open vSwitch causes the bridge to act like an
596 ordinary MAC-learning switch. Open vSwitch will continue
597 to retry connecting to the controller in the background
598 and, when the connection succeeds, it will discontinue its
599 standalone behavior.</dd>
600 <dt><code>secure</code></dt>
601 <dd>Open vSwitch will not set up flows on its own when the
602 controller connection fails or when no controllers are
603 defined. The bridge will continue to retry connecting to
604 any defined controllers forever.</dd>
605 </dl>
606 </p>
607 <p>
608 The default is <code>standalone</code> if the value is unset, but
609 future versions of Open vSwitch may change the default.
610 </p>
611 <p>
612 The <code>standalone</code> mode can create forwarding loops on a
613 bridge that has more than one uplink port unless STP is enabled. To
614 avoid loops on such a bridge, configure <code>secure</code> mode or
615 enable STP (see <ref column="stp_enable"/>).
616 </p>
617 <p>When more than one controller is configured,
618 <ref column="fail_mode"/> is considered only when none of the
619 configured controllers can be contacted.</p>
620 <p>
621 Changing <ref column="fail_mode"/> when no primary controllers are
622 configured clears the flow table.
623 </p>
624 </column>
625
626 <column name="datapath_id">
627 Reports the OpenFlow datapath ID in use. Exactly 16 hex digits.
628 (Setting this column has no useful effect. Set <ref
629 column="other-config" key="datapath-id"/> instead.)
630 </column>
631
632 <column name="datapath_version">
633 <p>
634 Reports the version number of the Open vSwitch datapath in use.
635 This allows management software to detect and report discrepancies
636 between Open vSwitch userspace and datapath versions. (The <ref
637 column="ovs_version" table="Open_vSwitch"/> column in the <ref
638 table="Open_vSwitch"/> reports the Open vSwitch userspace version.)
639 The version reported depends on the datapath in use:
640 </p>
641
642 <ul>
643 <li>
644 When the kernel module included in the Open vSwitch source tree is
645 used, this column reports the Open vSwitch version from which the
646 module was taken.
647 </li>
648
649 <li>
650 When the kernel module that is part of the upstream Linux kernel is
651 used, this column reports <code>&lt;unknown&gt;</code>.
652 </li>
653
654 <li>
655 When the datapath is built into the <code>ovs-vswitchd</code>
656 binary, this column reports <code>&lt;built-in&gt;</code>. A
657 built-in datapath is by definition the same version as the rest of
658 the Open VSwitch userspace.
659 </li>
660
661 <li>
662 Other datapaths (such as the Hyper-V kernel datapath) currently
663 report <code>&lt;unknown&gt;</code>.
664 </li>
665 </ul>
666
667 <p>
668 A version discrepancy between <code>ovs-vswitchd</code> and the
669 datapath in use is not normally cause for alarm. The Open vSwitch
670 kernel datapaths for Linux and Hyper-V, in particular, are designed
671 for maximum inter-version compatibility: any userspace version works
672 with with any kernel version. Some reasons do exist to insist on
673 particular user/kernel pairings. First, newer kernel versions add
674 new features, that can only be used by new-enough userspace, e.g.
675 VXLAN tunneling requires certain minimal userspace and kernel
676 versions. Second, as an extension to the first reason, some newer
677 kernel versions add new features for enhancing performance that only
678 new-enough userspace versions can take advantage of.
679 </p>
680 </column>
681
682 <column name="other_config" key="datapath-id">
683 Exactly 16 hex digits to set the OpenFlow datapath ID to a specific
684 value. May not be all-zero.
685 </column>
686
687 <column name="other_config" key="dp-desc">
688 Human readable description of datapath. It it a maximum 256
689 byte-long free-form string to describe the datapath for
690 debugging purposes, e.g. <code>switch3 in room 3120</code>.
691 </column>
692
693 <column name="other_config" key="disable-in-band"
694 type='{"type": "boolean"}'>
695 If set to <code>true</code>, disable in-band control on the bridge
696 regardless of controller and manager settings.
697 </column>
698
699 <column name="other_config" key="in-band-queue"
700 type='{"type": "integer", "minInteger": 0, "maxInteger": 4294967295}'>
701 A queue ID as a nonnegative integer. This sets the OpenFlow queue ID
702 that will be used by flows set up by in-band control on this bridge.
703 If unset, or if the port used by an in-band control flow does not have
704 QoS configured, or if the port does not have a queue with the specified
705 ID, the default queue is used instead.
706 </column>
707
708 <column name="protocols">
709 <p>
710 List of OpenFlow protocols that may be used when negotiating
711 a connection with a controller. OpenFlow 1.0, 1.1, 1.2, and
712 1.3 are enabled by default if this column is empty.
713 </p>
714
715 <p>
716 OpenFlow 1.4 is not enabled by default because its implementation is
717 missing features.
718 </p>
719
720 <p>
721 OpenFlow 1.5 has the same risks as OpenFlow 1.4, but it is even more
722 experimental because the OpenFlow 1.5 specification is still under
723 development and thus subject to change. Pass
724 <code>--enable-of15</code> to <code>ovs-vswitchd</code> to allow
725 OpenFlow 1.5 to be enabled.
726 </p>
727 </column>
728 </group>
729
730 <group title="Spanning Tree Configuration">
731 <p>
732 The IEEE 802.1D Spanning Tree Protocol (STP) is a network protocol
733 that ensures loop-free topologies. It allows redundant links to
734 be included in the network to provide automatic backup paths if
735 the active links fails.
736 </p>
737
738 <p>
739 These settings configure the slower-to-converge but still widely
740 supported version of Spanning Tree Protocol, sometimes known as
741 802.1D-1998. Open vSwitch also supports the newer Rapid Spanning Tree
742 Protocol (RSTP), documented later in the section titled <code>Rapid
743 Spanning Tree Configuration</code>.
744 </p>
745
746 <group title="STP Configuration">
747 <column name="stp_enable" type='{"type": "boolean"}'>
748 <p>
749 Enable spanning tree on the bridge. By default, STP is disabled
750 on bridges. Bond, internal, and mirror ports are not supported
751 and will not participate in the spanning tree.
752 </p>
753
754 <p>
755 STP and RSTP are mutually exclusive. If both are enabled, RSTP
756 will be used.
757 </p>
758 </column>
759
760 <column name="other_config" key="stp-system-id">
761 The bridge's STP identifier (the lower 48 bits of the bridge-id)
762 in the form
763 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>.
764 By default, the identifier is the MAC address of the bridge.
765 </column>
766
767 <column name="other_config" key="stp-priority"
768 type='{"type": "integer", "minInteger": 0, "maxInteger": 65535}'>
769 The bridge's relative priority value for determining the root
770 bridge (the upper 16 bits of the bridge-id). A bridge with the
771 lowest bridge-id is elected the root. By default, the priority
772 is 0x8000.
773 </column>
774
775 <column name="other_config" key="stp-hello-time"
776 type='{"type": "integer", "minInteger": 1, "maxInteger": 10}'>
777 The interval between transmissions of hello messages by
778 designated ports, in seconds. By default the hello interval is
779 2 seconds.
780 </column>
781
782 <column name="other_config" key="stp-max-age"
783 type='{"type": "integer", "minInteger": 6, "maxInteger": 40}'>
784 The maximum age of the information transmitted by the bridge
785 when it is the root bridge, in seconds. By default, the maximum
786 age is 20 seconds.
787 </column>
788
789 <column name="other_config" key="stp-forward-delay"
790 type='{"type": "integer", "minInteger": 4, "maxInteger": 30}'>
791 The delay to wait between transitioning root and designated
792 ports to <code>forwarding</code>, in seconds. By default, the
793 forwarding delay is 15 seconds.
794 </column>
795
796 <column name="other_config" key="mcast-snooping-aging-time"
797 type='{"type": "integer", "minInteger": 1}'>
798 <p>
799 The maximum number of seconds to retain a multicast snooping entry for
800 which no packets have been seen. The default is currently 300
801 seconds (5 minutes). The value, if specified, is forced into a
802 reasonable range, currently 15 to 3600 seconds.
803 </p>
804 </column>
805
806 <column name="other_config" key="mcast-snooping-table-size"
807 type='{"type": "integer", "minInteger": 1}'>
808 <p>
809 The maximum number of multicast snooping addresses to learn. The
810 default is currently 2048. The value, if specified, is forced into
811 a reasonable range, currently 10 to 1,000,000.
812 </p>
813 </column>
814 <column name="other_config" key="mcast-snooping-disable-flood-unregistered"
815 type='{"type": "boolean"}'>
816 <p>
817 If set to <code>false</code>, unregistered multicast packets are forwarded
818 to all ports.
819 If set to <code>true</code>, unregistered multicast packets are forwarded
820 to ports connected to multicast routers.
821 </p>
822 </column>
823 </group>
824
825 <group title="STP Status">
826 <p>
827 These key-value pairs report the status of 802.1D-1998. They are
828 present only if STP is enabled (via the <ref column="stp_enable"/>
829 column).
830 </p>
831 <column name="status" key="stp_bridge_id">
832 The bridge ID used in spanning tree advertisements, in the form
833 <var>xxxx</var>.<var>yyyyyyyyyyyy</var> where the <var>x</var>s are
834 the STP priority, the <var>y</var>s are the STP system ID, and each
835 <var>x</var> and <var>y</var> is a hex digit.
836 </column>
837 <column name="status" key="stp_designated_root">
838 The designated root for this spanning tree, in the same form as <ref
839 column="status" key="stp_bridge_id"/>. If this bridge is the root,
840 this will have the same value as <ref column="status"
841 key="stp_bridge_id"/>, otherwise it will differ.
842 </column>
843 <column name="status" key="stp_root_path_cost">
844 The path cost of reaching the designated bridge. A lower number is
845 better. The value is 0 if this bridge is the root, otherwise it is
846 higher.
847 </column>
848 </group>
849 </group>
850
851 <group title="Rapid Spanning Tree">
852 <p>
853 Rapid Spanning Tree Protocol (RSTP), like STP, is a network protocol
854 that ensures loop-free topologies. RSTP superseded STP with the
855 publication of 802.1D-2004. Compared to STP, RSTP converges more
856 quickly and recovers more quickly from failures.
857 </p>
858
859 <group title="RSTP Configuration">
860 <column name="rstp_enable" type='{"type": "boolean"}'>
861 <p>
862 Enable Rapid Spanning Tree on the bridge. By default, RSTP is disabled
863 on bridges. Bond, internal, and mirror ports are not supported
864 and will not participate in the spanning tree.
865 </p>
866
867 <p>
868 STP and RSTP are mutually exclusive. If both are enabled, RSTP
869 will be used.
870 </p>
871 </column>
872
873 <column name="other_config" key="rstp-address">
874 The bridge's RSTP address (the lower 48 bits of the bridge-id)
875 in the form
876 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>.
877 By default, the address is the MAC address of the bridge.
878 </column>
879
880 <column name="other_config" key="rstp-priority"
881 type='{"type": "integer", "minInteger": 0, "maxInteger": 61440}'>
882 The bridge's relative priority value for determining the root
883 bridge (the upper 16 bits of the bridge-id). A bridge with the
884 lowest bridge-id is elected the root. By default, the priority
885 is 0x8000 (32768). This value needs to be a multiple of 4096,
886 otherwise it's rounded to the nearest inferior one.
887 </column>
888
889 <column name="other_config" key="rstp-ageing-time"
890 type='{"type": "integer", "minInteger": 10, "maxInteger": 1000000}'>
891 The Ageing Time parameter for the Bridge. The default value
892 is 300 seconds.
893 </column>
894
895 <column name="other_config" key="rstp-force-protocol-version"
896 type='{"type": "integer"}'>
897 The Force Protocol Version parameter for the Bridge. This
898 can take the value 0 (STP Compatibility mode) or 2
899 (the default, normal operation).
900 </column>
901
902 <column name="other_config" key="rstp-max-age"
903 type='{"type": "integer", "minInteger": 6, "maxInteger": 40}'>
904 The maximum age of the information transmitted by the Bridge
905 when it is the Root Bridge. The default value is 20.
906 </column>
907
908 <column name="other_config" key="rstp-forward-delay"
909 type='{"type": "integer", "minInteger": 4, "maxInteger": 30}'>
910 The delay used by STP Bridges to transition Root and Designated
911 Ports to Forwarding. The default value is 15.
912 </column>
913
914 <column name="other_config" key="rstp-transmit-hold-count"
915 type='{"type": "integer", "minInteger": 1, "maxInteger": 10}'>
916 The Transmit Hold Count used by the Port Transmit state machine
917 to limit transmission rate. The default value is 6.
918 </column>
919 </group>
920
921 <group title="RSTP Status">
922 <p>
923 These key-value pairs report the status of 802.1D-2004. They are
924 present only if RSTP is enabled (via the <ref column="rstp_enable"/>
925 column).
926 </p>
927 <column name="rstp_status" key="rstp_bridge_id">
928 The bridge ID used in rapid spanning tree advertisements, in the form
929 <var>x</var>.<var>yyy</var>.<var>zzzzzzzzzzzz</var> where
930 <var>x</var> is the RSTP priority, the <var>y</var>s are a locally
931 assigned system ID extension, the <var>z</var>s are the STP system
932 ID, and each <var>x</var>, <var>y</var>, or <var>z</var> is a hex
933 digit.
934 </column>
935 <column name="rstp_status" key="rstp_root_id">
936 The root of this spanning tree, in the same form as <ref
937 column="rstp_status" key="rstp_bridge_id"/>. If this bridge is the
938 root, this will have the same value as <ref column="rstp_status"
939 key="rstp_bridge_id"/>, otherwise it will differ.
940 </column>
941 <column name="rstp_status" key="rstp_root_path_cost"
942 type='{"type": "integer", "minInteger": 0}'>
943 The path cost of reaching the root. A lower number is better. The
944 value is 0 if this bridge is the root, otherwise it is higher.
945 </column>
946 <column name="rstp_status" key="rstp_designated_id">
947 The RSTP designated ID, in the same form as <ref column="rstp_status"
948 key="rstp_bridge_id"/>.
949 </column>
950 <column name="rstp_status" key="rstp_designated_port_id">
951 The RSTP designated port ID, as a 4-digit hex number.
952 </column>
953 <column name="rstp_status" key="rstp_bridge_port_id">
954 The RSTP bridge port ID, as a 4-digit hex number.
955 </column>
956 </group>
957 </group>
958
959 <group title="Multicast Snooping Configuration">
960 Multicast snooping (RFC 4541) monitors the Internet Group Management
961 Protocol (IGMP) and Multicast Listener Discovery traffic between hosts
962 and multicast routers. The switch uses what IGMP and MLD snooping
963 learns to forward multicast traffic only to interfaces that are connected
964 to interested receivers. Currently it supports IGMPv1, IGMPv2, IGMPv3,
965 MLDv1 and MLDv2 protocols.
966
967 <column name="mcast_snooping_enable">
968 Enable multicast snooping on the bridge. For now, the default
969 is disabled.
970 </column>
971 </group>
972
973 <group title="Other Features">
974 <column name="datapath_type">
975 Name of datapath provider. The kernel datapath has type
976 <code>system</code>. The userspace datapath has type
977 <code>netdev</code>. A manager may refer to the <ref
978 table="Open_vSwitch" column="datapath_types"/> column of the <ref
979 table="Open_vSwitch"/> table for a list of the types accepted by this
980 Open vSwitch instance.
981 </column>
982
983 <column name="external_ids" key="bridge-id">
984 A unique identifier of the bridge. On Citrix XenServer this will
985 commonly be the same as
986 <ref column="external_ids" key="xs-network-uuids"/>.
987 </column>
988
989 <column name="external_ids" key="xs-network-uuids">
990 Semicolon-delimited set of universally unique identifier(s) for the
991 network with which this bridge is associated on a Citrix XenServer
992 host. The network identifiers are RFC 4122 UUIDs as displayed by,
993 e.g., <code>xe network-list</code>.
994 </column>
995
996 <column name="other_config" key="hwaddr">
997 An Ethernet address in the form
998 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
999 to set the hardware address of the local port and influence the
1000 datapath ID.
1001 </column>
1002
1003 <column name="other_config" key="forward-bpdu"
1004 type='{"type": "boolean"}'>
1005
1006 <p>
1007 Controls forwarding of BPDUs and other network control frames when
1008 NORMAL action is invoked. When this option is <code>false</code> or
1009 unset, frames with reserved Ethernet addresses (see table below) will
1010 not be forwarded. When this option is <code>true</code>, such frames
1011 will not be treated specially.
1012 </p>
1013
1014 <p>
1015 The above general rule has the following exceptions:
1016 </p>
1017
1018 <ul>
1019 <li>
1020 If STP is enabled on the bridge (see the <ref column="stp_enable"
1021 table="Bridge"/> column in the <ref table="Bridge"/> table), the
1022 bridge processes all received STP packets and never passes them to
1023 OpenFlow or forwards them. This is true even if STP is disabled on
1024 an individual port.
1025 </li>
1026
1027 <li>
1028 If LLDP is enabled on an interface (see the <ref column="lldp"
1029 table="Interface"/> column in the <ref table="Interface"/> table),
1030 the interface processes received LLDP packets and never passes them
1031 to OpenFlow or forwards them.
1032 </li>
1033 </ul>
1034
1035 <p>
1036 Set this option to <code>true</code> if the Open vSwitch bridge
1037 connects different Ethernet networks and is not configured to
1038 participate in STP.
1039 </p>
1040
1041 <p>
1042 This option affects packets with the following destination MAC
1043 addresses:
1044 </p>
1045
1046 <dl>
1047 <dt><code>01:80:c2:00:00:00</code></dt>
1048 <dd>IEEE 802.1D Spanning Tree Protocol (STP).</dd>
1049
1050 <dt><code>01:80:c2:00:00:01</code></dt>
1051 <dd>IEEE Pause frame.</dd>
1052
1053 <dt><code>01:80:c2:00:00:0<var>x</var></code></dt>
1054 <dd>Other reserved protocols.</dd>
1055
1056 <dt><code>00:e0:2b:00:00:00</code></dt>
1057 <dd>Extreme Discovery Protocol (EDP).</dd>
1058
1059 <dt>
1060 <code>00:e0:2b:00:00:04</code> and <code>00:e0:2b:00:00:06</code>
1061 </dt>
1062 <dd>Ethernet Automatic Protection Switching (EAPS).</dd>
1063
1064 <dt><code>01:00:0c:cc:cc:cc</code></dt>
1065 <dd>
1066 Cisco Discovery Protocol (CDP), VLAN Trunking Protocol (VTP),
1067 Dynamic Trunking Protocol (DTP), Port Aggregation Protocol (PAgP),
1068 and others.
1069 </dd>
1070
1071 <dt><code>01:00:0c:cc:cc:cd</code></dt>
1072 <dd>Cisco Shared Spanning Tree Protocol PVSTP+.</dd>
1073
1074 <dt><code>01:00:0c:cd:cd:cd</code></dt>
1075 <dd>Cisco STP Uplink Fast.</dd>
1076
1077 <dt><code>01:00:0c:00:00:00</code></dt>
1078 <dd>Cisco Inter Switch Link.</dd>
1079
1080 <dt><code>01:00:0c:cc:cc:c<var>x</var></code></dt>
1081 <dd>Cisco CFM.</dd>
1082 </dl>
1083 </column>
1084
1085 <column name="other_config" key="mac-aging-time"
1086 type='{"type": "integer", "minInteger": 1}'>
1087 <p>
1088 The maximum number of seconds to retain a MAC learning entry for
1089 which no packets have been seen. The default is currently 300
1090 seconds (5 minutes). The value, if specified, is forced into a
1091 reasonable range, currently 15 to 3600 seconds.
1092 </p>
1093
1094 <p>
1095 A short MAC aging time allows a network to more quickly detect that a
1096 host is no longer connected to a switch port. However, it also makes
1097 it more likely that packets will be flooded unnecessarily, when they
1098 are addressed to a connected host that rarely transmits packets. To
1099 reduce the incidence of unnecessary flooding, use a MAC aging time
1100 longer than the maximum interval at which a host will ordinarily
1101 transmit packets.
1102 </p>
1103 </column>
1104
1105 <column name="other_config" key="mac-table-size"
1106 type='{"type": "integer", "minInteger": 1}'>
1107 <p>
1108 The maximum number of MAC addresses to learn. The default is
1109 currently 2048. The value, if specified, is forced into a reasonable
1110 range, currently 10 to 1,000,000.
1111 </p>
1112 </column>
1113 </group>
1114
1115 <group title="Common Columns">
1116 The overall purpose of these columns is described under <code>Common
1117 Columns</code> at the beginning of this document.
1118
1119 <column name="other_config"/>
1120 <column name="external_ids"/>
1121 </group>
1122 </table>
1123
1124 <table name="Port" table="Port or bond configuration.">
1125 <p>A port within a <ref table="Bridge"/>.</p>
1126 <p>Most commonly, a port has exactly one ``interface,'' pointed to by its
1127 <ref column="interfaces"/> column. Such a port logically
1128 corresponds to a port on a physical Ethernet switch. A port
1129 with more than one interface is a ``bonded port'' (see
1130 <ref group="Bonding Configuration"/>).</p>
1131 <p>Some properties that one might think as belonging to a port are actually
1132 part of the port's <ref table="Interface"/> members.</p>
1133
1134 <column name="name">
1135 Port name. Should be alphanumeric and no more than about 8
1136 bytes long. May be the same as the interface name, for
1137 non-bonded ports. Must otherwise be unique among the names of
1138 ports, interfaces, and bridges on a host.
1139 </column>
1140
1141 <column name="interfaces">
1142 The port's interfaces. If there is more than one, this is a
1143 bonded Port.
1144 </column>
1145
1146 <group title="VLAN Configuration">
1147 <p>Bridge ports support the following types of VLAN configuration:</p>
1148 <dl>
1149 <dt>trunk</dt>
1150 <dd>
1151 <p>
1152 A trunk port carries packets on one or more specified VLANs
1153 specified in the <ref column="trunks"/> column (often, on every
1154 VLAN). A packet that ingresses on a trunk port is in the VLAN
1155 specified in its 802.1Q header, or VLAN 0 if the packet has no
1156 802.1Q header. A packet that egresses through a trunk port will
1157 have an 802.1Q header if it has a nonzero VLAN ID.
1158 </p>
1159
1160 <p>
1161 Any packet that ingresses on a trunk port tagged with a VLAN that
1162 the port does not trunk is dropped.
1163 </p>
1164 </dd>
1165
1166 <dt>access</dt>
1167 <dd>
1168 <p>
1169 An access port carries packets on exactly one VLAN specified in the
1170 <ref column="tag"/> column. Packets egressing on an access port
1171 have no 802.1Q header.
1172 </p>
1173
1174 <p>
1175 Any packet with an 802.1Q header with a nonzero VLAN ID that
1176 ingresses on an access port is dropped, regardless of whether the
1177 VLAN ID in the header is the access port's VLAN ID.
1178 </p>
1179 </dd>
1180
1181 <dt>native-tagged</dt>
1182 <dd>
1183 A native-tagged port resembles a trunk port, with the exception that
1184 a packet without an 802.1Q header that ingresses on a native-tagged
1185 port is in the ``native VLAN'' (specified in the <ref column="tag"/>
1186 column).
1187 </dd>
1188
1189 <dt>native-untagged</dt>
1190 <dd>
1191 A native-untagged port resembles a native-tagged port, with the
1192 exception that a packet that egresses on a native-untagged port in
1193 the native VLAN will not have an 802.1Q header.
1194 </dd>
1195 </dl>
1196 <p>
1197 A packet will only egress through bridge ports that carry the VLAN of
1198 the packet, as described by the rules above.
1199 </p>
1200
1201 <column name="vlan_mode">
1202 <p>
1203 The VLAN mode of the port, as described above. When this column is
1204 empty, a default mode is selected as follows:
1205 </p>
1206 <ul>
1207 <li>
1208 If <ref column="tag"/> contains a value, the port is an access
1209 port. The <ref column="trunks"/> column should be empty.
1210 </li>
1211 <li>
1212 Otherwise, the port is a trunk port. The <ref column="trunks"/>
1213 column value is honored if it is present.
1214 </li>
1215 </ul>
1216 </column>
1217
1218 <column name="tag">
1219 <p>
1220 For an access port, the port's implicitly tagged VLAN. For a
1221 native-tagged or native-untagged port, the port's native VLAN. Must
1222 be empty if this is a trunk port.
1223 </p>
1224 </column>
1225
1226 <column name="trunks">
1227 <p>
1228 For a trunk, native-tagged, or native-untagged port, the 802.1Q VLAN
1229 or VLANs that this port trunks; if it is empty, then the port trunks
1230 all VLANs. Must be empty if this is an access port.
1231 </p>
1232 <p>
1233 A native-tagged or native-untagged port always trunks its native
1234 VLAN, regardless of whether <ref column="trunks"/> includes that
1235 VLAN.
1236 </p>
1237 </column>
1238
1239 <column name="other_config" key="priority-tags"
1240 type='{"type": "boolean"}'>
1241 <p>
1242 An 802.1Q header contains two important pieces of information: a VLAN
1243 ID and a priority. A frame with a zero VLAN ID, called a
1244 ``priority-tagged'' frame, is supposed to be treated the same way as
1245 a frame without an 802.1Q header at all (except for the priority).
1246 </p>
1247
1248 <p>
1249 However, some network elements ignore any frame that has 802.1Q
1250 header at all, even when the VLAN ID is zero. Therefore, by default
1251 Open vSwitch does not output priority-tagged frames, instead omitting
1252 the 802.1Q header entirely if the VLAN ID is zero. Set this key to
1253 <code>true</code> to enable priority-tagged frames on a port.
1254 </p>
1255
1256 <p>
1257 Regardless of this setting, Open vSwitch omits the 802.1Q header on
1258 output if both the VLAN ID and priority would be zero.
1259 </p>
1260
1261 <p>
1262 All frames output to native-tagged ports have a nonzero VLAN ID, so
1263 this setting is not meaningful on native-tagged ports.
1264 </p>
1265 </column>
1266 </group>
1267
1268 <group title="Bonding Configuration">
1269 <p>A port that has more than one interface is a ``bonded port.'' Bonding
1270 allows for load balancing and fail-over.</p>
1271
1272 <p>
1273 The following types of bonding will work with any kind of upstream
1274 switch. On the upstream switch, do not configure the interfaces as a
1275 bond:
1276 </p>
1277
1278 <dl>
1279 <dt><code>balance-slb</code></dt>
1280 <dd>
1281 Balances flows among slaves based on source MAC address and output
1282 VLAN, with periodic rebalancing as traffic patterns change.
1283 </dd>
1284
1285 <dt><code>active-backup</code></dt>
1286 <dd>
1287 Assigns all flows to one slave, failing over to a backup slave when
1288 the active slave is disabled. This is the only bonding mode in which
1289 interfaces may be plugged into different upstream switches.
1290 </dd>
1291 </dl>
1292
1293 <p>
1294 The following modes require the upstream switch to support 802.3ad with
1295 successful LACP negotiation. If LACP negotiation fails and
1296 other-config:lacp-fallback-ab is true, then <code>active-backup</code>
1297 mode is used:
1298 </p>
1299
1300 <dl>
1301 <dt><code>balance-tcp</code></dt>
1302 <dd>
1303 Balances flows among slaves based on L2, L3, and L4 protocol
1304 information such as destination MAC address, IP address, and TCP
1305 port.
1306 </dd>
1307 </dl>
1308
1309 <p>These columns apply only to bonded ports. Their values are
1310 otherwise ignored.</p>
1311
1312 <column name="bond_mode">
1313 <p>The type of bonding used for a bonded port. Defaults to
1314 <code>active-backup</code> if unset.
1315 </p>
1316 </column>
1317
1318 <column name="other_config" key="bond-hash-basis"
1319 type='{"type": "integer"}'>
1320 An integer hashed along with flows when choosing output slaves in load
1321 balanced bonds. When changed, all flows will be assigned different
1322 hash values possibly causing slave selection decisions to change. Does
1323 not affect bonding modes which do not employ load balancing such as
1324 <code>active-backup</code>.
1325 </column>
1326
1327 <group title="Link Failure Detection">
1328 <p>
1329 An important part of link bonding is detecting that links are down so
1330 that they may be disabled. These settings determine how Open vSwitch
1331 detects link failure.
1332 </p>
1333
1334 <column name="other_config" key="bond-detect-mode"
1335 type='{"type": "string", "enum": ["set", ["carrier", "miimon"]]}'>
1336 The means used to detect link failures. Defaults to
1337 <code>carrier</code> which uses each interface's carrier to detect
1338 failures. When set to <code>miimon</code>, will check for failures
1339 by polling each interface's MII.
1340 </column>
1341
1342 <column name="other_config" key="bond-miimon-interval"
1343 type='{"type": "integer"}'>
1344 The interval, in milliseconds, between successive attempts to poll
1345 each interface's MII. Relevant only when <ref column="other_config"
1346 key="bond-detect-mode"/> is <code>miimon</code>.
1347 </column>
1348
1349 <column name="bond_updelay">
1350 <p>
1351 The number of milliseconds for which the link must stay up on an
1352 interface before the interface is considered to be up. Specify
1353 <code>0</code> to enable the interface immediately.
1354 </p>
1355
1356 <p>
1357 This setting is honored only when at least one bonded interface is
1358 already enabled. When no interfaces are enabled, then the first
1359 bond interface to come up is enabled immediately.
1360 </p>
1361 </column>
1362
1363 <column name="bond_downdelay">
1364 The number of milliseconds for which the link must stay down on an
1365 interface before the interface is considered to be down. Specify
1366 <code>0</code> to disable the interface immediately.
1367 </column>
1368 </group>
1369
1370 <group title="LACP Configuration">
1371 <p>
1372 LACP, the Link Aggregation Control Protocol, is an IEEE standard that
1373 allows switches to automatically detect that they are connected by
1374 multiple links and aggregate across those links. These settings
1375 control LACP behavior.
1376 </p>
1377
1378 <column name="lacp">
1379 Configures LACP on this port. LACP allows directly connected
1380 switches to negotiate which links may be bonded. LACP may be enabled
1381 on non-bonded ports for the benefit of any switches they may be
1382 connected to. <code>active</code> ports are allowed to initiate LACP
1383 negotiations. <code>passive</code> ports are allowed to participate
1384 in LACP negotiations initiated by a remote switch, but not allowed to
1385 initiate such negotiations themselves. If LACP is enabled on a port
1386 whose partner switch does not support LACP, the bond will be
1387 disabled, unless other-config:lacp-fallback-ab is set to true.
1388 Defaults to <code>off</code> if unset.
1389 </column>
1390
1391 <column name="other_config" key="lacp-system-id">
1392 The LACP system ID of this <ref table="Port"/>. The system ID of a
1393 LACP bond is used to identify itself to its partners. Must be a
1394 nonzero MAC address. Defaults to the bridge Ethernet address if
1395 unset.
1396 </column>
1397
1398 <column name="other_config" key="lacp-system-priority"
1399 type='{"type": "integer", "minInteger": 1, "maxInteger": 65535}'>
1400 The LACP system priority of this <ref table="Port"/>. In LACP
1401 negotiations, link status decisions are made by the system with the
1402 numerically lower priority.
1403 </column>
1404
1405 <column name="other_config" key="lacp-time"
1406 type='{"type": "string", "enum": ["set", ["fast", "slow"]]}'>
1407 <p>
1408 The LACP timing which should be used on this <ref table="Port"/>.
1409 By default <code>slow</code> is used. When configured to be
1410 <code>fast</code> LACP heartbeats are requested at a rate of once
1411 per second causing connectivity problems to be detected more
1412 quickly. In <code>slow</code> mode, heartbeats are requested at a
1413 rate of once every 30 seconds.
1414 </p>
1415 </column>
1416
1417 <column name="other_config" key="lacp-fallback-ab"
1418 type='{"type": "boolean"}'>
1419 <p>
1420 Determines the behavior of openvswitch bond in LACP mode. If
1421 the partner switch does not support LACP, setting this option
1422 to <code>true</code> allows openvswitch to fallback to
1423 active-backup. If the option is set to <code>false</code>, the
1424 bond will be disabled. In both the cases, once the partner switch
1425 is configured to LACP mode, the bond will use LACP.
1426 </p>
1427 </column>
1428 </group>
1429
1430 <group title="Rebalancing Configuration">
1431 <p>
1432 These settings control behavior when a bond is in
1433 <code>balance-slb</code> or <code>balance-tcp</code> mode.
1434 </p>
1435
1436 <column name="other_config" key="bond-rebalance-interval"
1437 type='{"type": "integer", "minInteger": 0, "maxInteger": 10000}'>
1438 For a load balanced bonded port, the number of milliseconds between
1439 successive attempts to rebalance the bond, that is, to move flows
1440 from one interface on the bond to another in an attempt to keep usage
1441 of each interface roughly equal. If zero, load balancing is disabled
1442 on the bond (link failure still cause flows to move). If
1443 less than 1000ms, the rebalance interval will be 1000ms.
1444 </column>
1445 </group>
1446
1447 <column name="bond_fake_iface">
1448 For a bonded port, whether to create a fake internal interface with the
1449 name of the port. Use only for compatibility with legacy software that
1450 requires this.
1451 </column>
1452 </group>
1453
1454 <group title="Spanning Tree Protocol">
1455 <p>
1456 The configuration here is only meaningful, and the status is only
1457 populated, when 802.1D-1998 Spanning Tree Protocol is enabled on the
1458 port's <ref column="Bridge"/> with its <ref column="stp_enable"/>
1459 column.
1460 </p>
1461
1462 <group title="STP Configuration">
1463 <column name="other_config" key="stp-enable"
1464 type='{"type": "boolean"}'>
1465 When STP is enabled on a bridge, it is enabled by default on all of
1466 the bridge's ports except bond, internal, and mirror ports (which do
1467 not work with STP). If this column's value is <code>false</code>,
1468 STP is disabled on the port.
1469 </column>
1470
1471 <column name="other_config" key="stp-port-num"
1472 type='{"type": "integer", "minInteger": 1, "maxInteger": 255}'>
1473 The port number used for the lower 8 bits of the port-id. By
1474 default, the numbers will be assigned automatically. If any
1475 port's number is manually configured on a bridge, then they
1476 must all be.
1477 </column>
1478
1479 <column name="other_config" key="stp-port-priority"
1480 type='{"type": "integer", "minInteger": 0, "maxInteger": 255}'>
1481 The port's relative priority value for determining the root
1482 port (the upper 8 bits of the port-id). A port with a lower
1483 port-id will be chosen as the root port. By default, the
1484 priority is 0x80.
1485 </column>
1486
1487 <column name="other_config" key="stp-path-cost"
1488 type='{"type": "integer", "minInteger": 0, "maxInteger": 65535}'>
1489 Spanning tree path cost for the port. A lower number indicates
1490 a faster link. By default, the cost is based on the maximum
1491 speed of the link.
1492 </column>
1493 </group>
1494
1495 <group title="STP Status">
1496 <column name="status" key="stp_port_id">
1497 The port ID used in spanning tree advertisements for this port, as 4
1498 hex digits. Configuring the port ID is described in the
1499 <code>stp-port-num</code> and <code>stp-port-priority</code> keys of
1500 the <code>other_config</code> section earlier.
1501 </column>
1502 <column name="status" key="stp_state"
1503 type='{"type": "string", "enum": ["set",
1504 ["disabled", "listening", "learning",
1505 "forwarding", "blocking"]]}'>
1506 STP state of the port.
1507 </column>
1508 <column name="status" key="stp_sec_in_state"
1509 type='{"type": "integer", "minInteger": 0}'>
1510 The amount of time this port has been in the current STP state, in
1511 seconds.
1512 </column>
1513 <column name="status" key="stp_role"
1514 type='{"type": "string", "enum": ["set",
1515 ["root", "designated", "alternate"]]}'>
1516 STP role of the port.
1517 </column>
1518 </group>
1519 </group>
1520
1521 <group title="Rapid Spanning Tree Protocol">
1522 <p>
1523 The configuration here is only meaningful, and the status and
1524 statistics are only populated, when 802.1D-1998 Spanning Tree Protocol
1525 is enabled on the port's <ref column="Bridge"/> with its <ref
1526 column="stp_enable"/> column.
1527 </p>
1528
1529 <group title="RSTP Configuration">
1530 <column name="other_config" key="rstp-enable"
1531 type='{"type": "boolean"}'>
1532 When RSTP is enabled on a bridge, it is enabled by default on all of
1533 the bridge's ports except bond, internal, and mirror ports (which do
1534 not work with RSTP). If this column's value is <code>false</code>,
1535 RSTP is disabled on the port.
1536 </column>
1537
1538 <column name="other_config" key="rstp-port-priority"
1539 type='{"type": "integer", "minInteger": 0, "maxInteger": 240}'>
1540 The port's relative priority value for determining the root port, in
1541 multiples of 16. By default, the port priority is 0x80 (128). Any
1542 value in the lower 4 bits is rounded off. The significant upper 4
1543 bits become the upper 4 bits of the port-id. A port with the lowest
1544 port-id is elected as the root.
1545 </column>
1546
1547 <column name="other_config" key="rstp-port-num"
1548 type='{"type": "integer", "minInteger": 1, "maxInteger": 4095}'>
1549 The local RSTP port number, used as the lower 12 bits of the port-id.
1550 By default the port numbers are assigned automatically, and typically
1551 may not correspond to the OpenFlow port numbers. A port with the
1552 lowest port-id is elected as the root.
1553 </column>
1554
1555 <column name="other_config" key="rstp-port-path-cost"
1556 type='{"type": "integer"}'>
1557 The port path cost. The Port's contribution, when it is
1558 the Root Port, to the Root Path Cost for the Bridge. By default the
1559 cost is automatically calculated from the port's speed.
1560 </column>
1561
1562 <column name="other_config" key="rstp-port-admin-edge"
1563 type='{"type": "boolean"}'>
1564 The admin edge port parameter for the Port. Default is
1565 <code>false</code>.
1566 </column>
1567
1568 <column name="other_config" key="rstp-port-auto-edge"
1569 type='{"type": "boolean"}'>
1570 The auto edge port parameter for the Port. Default is
1571 <code>true</code>.
1572 </column>
1573
1574 <column name="other_config" key="rstp-port-mcheck"
1575 type='{"type": "boolean"}'>
1576 <p>
1577 The mcheck port parameter for the Port. Default is
1578 <code>false</code>. May be set to force the Port Protocol
1579 Migration state machine to transmit RST BPDUs for a
1580 MigrateTime period, to test whether all STP Bridges on the
1581 attached LAN have been removed and the Port can continue to
1582 transmit RSTP BPDUs. Setting mcheck has no effect if the
1583 Bridge is operating in STP Compatibility mode.
1584 </p>
1585 <p>
1586 Changing the value from <code>true</code> to
1587 <code>false</code> has no effect, but needs to be done if
1588 this behavior is to be triggered again by subsequently
1589 changing the value from <code>false</code> to
1590 <code>true</code>.
1591 </p>
1592 </column>
1593 </group>
1594
1595 <group title="RSTP Status">
1596 <column name="rstp_status" key="rstp_port_id">
1597 The port ID used in spanning tree advertisements for this port, as 4
1598 hex digits. Configuring the port ID is described in the
1599 <code>rstp-port-num</code> and <code>rstp-port-priority</code> keys
1600 of the <code>other_config</code> section earlier.
1601 </column>
1602 <column name="rstp_status" key="rstp_port_role"
1603 type='{"type": "string", "enum": ["set",
1604 ["Root", "Designated", "Alternate", "Backup", "Disabled"]]}'>
1605 RSTP role of the port.
1606 </column>
1607 <column name="rstp_status" key="rstp_port_state"
1608 type='{"type": "string", "enum": ["set",
1609 ["Disabled", "Learning", "Forwarding", "Discarding"]]}'>
1610 RSTP state of the port.
1611 </column>
1612 <column name="rstp_status" key="rstp_designated_bridge_id">
1613 The port's RSTP designated bridge ID, in the same form as <ref
1614 column="rstp_status" key="rstp_bridge_id"/> in the <ref
1615 table="Bridge"/> table.
1616 </column>
1617 <column name="rstp_status" key="rstp_designated_port_id">
1618 The port's RSTP designated port ID, as 4 hex digits.
1619 </column>
1620 <column name="rstp_status" key="rstp_designated_path_cost"
1621 type='{"type": "integer"}'>
1622 The port's RSTP designated path cost. Lower is better.
1623 </column>
1624 </group>
1625
1626 <group title="RSTP Statistics">
1627 <column name="rstp_statistics" key="rstp_tx_count">
1628 Number of RSTP BPDUs transmitted through this port.
1629 </column>
1630 <column name="rstp_statistics" key="rstp_rx_count">
1631 Number of valid RSTP BPDUs received by this port.
1632 </column>
1633 <column name="rstp_statistics" key="rstp_error_count">
1634 Number of invalid RSTP BPDUs received by this port.
1635 </column>
1636 <column name="rstp_statistics" key="rstp_uptime">
1637 The duration covered by the other RSTP statistics, in seconds.
1638 </column>
1639 </group>
1640 </group>
1641
1642 <group title="Multicast Snooping">
1643 <column name="other_config" key="mcast-snooping-flood"
1644 type='{"type": "boolean"}'>
1645 <p>
1646 If set to <code>true</code>, multicast packets (except Reports) are
1647 unconditionally forwarded to the specific port.
1648 </p>
1649 </column>
1650 <column name="other_config" key="mcast-snooping-flood-reports"
1651 type='{"type": "boolean"}'>
1652 <p>
1653 If set to <code>true</code>, multicast Reports are unconditionally
1654 forwarded to the specific port.
1655 </p>
1656 </column>
1657 </group>
1658
1659 <group title="Other Features">
1660 <column name="qos">
1661 Quality of Service configuration for this port.
1662 </column>
1663
1664 <column name="mac">
1665 The MAC address to use for this port for the purpose of choosing the
1666 bridge's MAC address. This column does not necessarily reflect the
1667 port's actual MAC address, nor will setting it change the port's actual
1668 MAC address.
1669 </column>
1670
1671 <column name="fake_bridge">
1672 Does this port represent a sub-bridge for its tagged VLAN within the
1673 Bridge? See ovs-vsctl(8) for more information.
1674 </column>
1675
1676 <column name="external_ids" key="fake-bridge-id-*">
1677 External IDs for a fake bridge (see the <ref column="fake_bridge"/>
1678 column) are defined by prefixing a <ref table="Bridge"/> <ref
1679 table="Bridge" column="external_ids"/> key with
1680 <code>fake-bridge-</code>,
1681 e.g. <code>fake-bridge-xs-network-uuids</code>.
1682 </column>
1683
1684 <column name="other_config" key="transient"
1685 type='{"type": "boolean"}'>
1686 <p>
1687 If set to <code>true</code>, the port will be removed when
1688 <code>ovs-ctl start --delete-transient-ports</code> is used.
1689 </p>
1690 </column>
1691 </group>
1692
1693 <column name="bond_active_slave">
1694 For a bonded port, record the mac address of the current active slave.
1695 </column>
1696
1697 <group title="Port Statistics">
1698 <p>
1699 Key-value pairs that report port statistics. The update period
1700 is controlled by <ref column="other_config"
1701 key="stats-update-interval"/> in the <code>Open_vSwitch</code> table.
1702 </p>
1703 <group title="Statistics: STP transmit and receive counters">
1704 <column name="statistics" key="stp_tx_count">
1705 Number of STP BPDUs sent on this port by the spanning
1706 tree library.
1707 </column>
1708 <column name="statistics" key="stp_rx_count">
1709 Number of STP BPDUs received on this port and accepted by the
1710 spanning tree library.
1711 </column>
1712 <column name="statistics" key="stp_error_count">
1713 Number of bad STP BPDUs received on this port. Bad BPDUs
1714 include runt packets and those with an unexpected protocol ID.
1715 </column>
1716 </group>
1717 </group>
1718
1719 <group title="Common Columns">
1720 The overall purpose of these columns is described under <code>Common
1721 Columns</code> at the beginning of this document.
1722
1723 <column name="other_config"/>
1724 <column name="external_ids"/>
1725 </group>
1726 </table>
1727
1728 <table name="Interface" title="One physical network device in a Port.">
1729 An interface within a <ref table="Port"/>.
1730
1731 <group title="Core Features">
1732 <column name="name">
1733 Interface name. Should be alphanumeric and no more than about 8 bytes
1734 long. May be the same as the port name, for non-bonded ports. Must
1735 otherwise be unique among the names of ports, interfaces, and bridges
1736 on a host.
1737 </column>
1738
1739 <column name="ifindex">
1740 A positive interface index as defined for SNMP MIB-II in RFCs 1213 and
1741 2863, if the interface has one, otherwise 0. The ifindex is useful for
1742 seamless integration with protocols such as SNMP and sFlow.
1743 </column>
1744
1745 <column name="mac_in_use">
1746 The MAC address in use by this interface.
1747 </column>
1748
1749 <column name="mac">
1750 <p>Ethernet address to set for this interface. If unset then the
1751 default MAC address is used:</p>
1752 <ul>
1753 <li>For the local interface, the default is the lowest-numbered MAC
1754 address among the other bridge ports, either the value of the
1755 <ref table="Port" column="mac"/> in its <ref table="Port"/> record,
1756 if set, or its actual MAC (for bonded ports, the MAC of its slave
1757 whose name is first in alphabetical order). Internal ports and
1758 bridge ports that are used as port mirroring destinations (see the
1759 <ref table="Mirror"/> table) are ignored.</li>
1760 <li>For other internal interfaces, the default MAC is randomly
1761 generated.</li>
1762 <li>External interfaces typically have a MAC address associated with
1763 their hardware.</li>
1764 </ul>
1765 <p>Some interfaces may not have a software-controllable MAC
1766 address.</p>
1767 </column>
1768
1769 <column name="error">
1770 If the configuration of the port failed, as indicated by -1 in <ref
1771 column="ofport"/>, Open vSwitch sets this column to an error
1772 description in human readable form. Otherwise, Open vSwitch clears
1773 this column.
1774 </column>
1775
1776 <group title="OpenFlow Port Number">
1777 <p>
1778 When a client adds a new interface, Open vSwitch chooses an OpenFlow
1779 port number for the new port. If the client that adds the port fills
1780 in <ref column="ofport_request"/>, then Open vSwitch tries to use its
1781 value as the OpenFlow port number. Otherwise, or if the requested
1782 port number is already in use or cannot be used for another reason,
1783 Open vSwitch automatically assigns a free port number. Regardless of
1784 how the port number was obtained, Open vSwitch then reports in <ref
1785 column="ofport"/> the port number actually assigned.
1786 </p>
1787
1788 <p>
1789 Open vSwitch limits the port numbers that it automatically assigns to
1790 the range 1 through 32,767, inclusive. Controllers therefore have
1791 free use of ports 32,768 and up.
1792 </p>
1793
1794 <column name="ofport">
1795 <p>
1796 OpenFlow port number for this interface. Open vSwitch sets this
1797 column's value, so other clients should treat it as read-only.
1798 </p>
1799 <p>
1800 The OpenFlow ``local'' port (<code>OFPP_LOCAL</code>) is 65,534.
1801 The other valid port numbers are in the range 1 to 65,279,
1802 inclusive. Value -1 indicates an error adding the interface.
1803 </p>
1804 </column>
1805
1806 <column name="ofport_request"
1807 type='{"type": "integer", "minInteger": 1, "maxInteger": 65279}'>
1808 <p>
1809 Requested OpenFlow port number for this interface.
1810 </p>
1811
1812 <p>
1813 A client should ideally set this column's value in the same
1814 database transaction that it uses to create the interface. Open
1815 vSwitch version 2.1 and later will honor a later request for a
1816 specific port number, althuogh it might confuse some controllers:
1817 OpenFlow does not have a way to announce a port number change, so
1818 Open vSwitch represents it over OpenFlow as a port deletion
1819 followed immediately by a port addition.
1820 </p>
1821
1822 <p>
1823 If <ref column="ofport_request"/> is set or changed to some other
1824 port's automatically assigned port number, Open vSwitch chooses a
1825 new port number for the latter port.
1826 </p>
1827 </column>
1828 </group>
1829 </group>
1830
1831 <group title="System-Specific Details">
1832 <column name="type">
1833 <p>
1834 The interface type. The types supported by a particular instance of
1835 Open vSwitch are listed in the <ref table="Open_vSwitch"
1836 column="iface_types"/> column in the <ref table="Open_vSwitch"/>
1837 table. The following types are defined:
1838 </p>
1839
1840 <dl>
1841 <dt><code>system</code></dt>
1842 <dd>An ordinary network device, e.g. <code>eth0</code> on Linux.
1843 Sometimes referred to as ``external interfaces'' since they are
1844 generally connected to hardware external to that on which the Open
1845 vSwitch is running. The empty string is a synonym for
1846 <code>system</code>.</dd>
1847
1848 <dt><code>internal</code></dt>
1849 <dd>A simulated network device that sends and receives traffic. An
1850 internal interface whose <ref column="name"/> is the same as its
1851 bridge's <ref table="Open_vSwitch" column="name"/> is called the
1852 ``local interface.'' It does not make sense to bond an internal
1853 interface, so the terms ``port'' and ``interface'' are often used
1854 imprecisely for internal interfaces.</dd>
1855
1856 <dt><code>tap</code></dt>
1857 <dd>A TUN/TAP device managed by Open vSwitch.</dd>
1858
1859 <dt><code>geneve</code></dt>
1860 <dd>
1861 An Ethernet over Geneve (<code>http://tools.ietf.org/html/draft-ietf-nvo3-geneve-00</code>)
1862 IPv4 tunnel.
1863
1864 A description of how to match and set Geneve options can be found
1865 in the <code>ovs-ofctl</code> manual page.
1866 </dd>
1867
1868 <dt><code>gre</code></dt>
1869 <dd>
1870 An Ethernet over RFC 2890 Generic Routing Encapsulation over IPv4
1871 tunnel.
1872 </dd>
1873
1874 <dt><code>ipsec_gre</code></dt>
1875 <dd>
1876 An Ethernet over RFC 2890 Generic Routing Encapsulation over IPv4
1877 IPsec tunnel.
1878 </dd>
1879
1880 <dt><code>vxlan</code></dt>
1881 <dd>
1882 <p>
1883 An Ethernet tunnel over the UDP-based VXLAN protocol described in
1884 RFC 7348.
1885 </p>
1886 <p>
1887 Open vSwitch uses UDP destination port 4789. The source port used for
1888 VXLAN traffic varies on a per-flow basis and is in the ephemeral port
1889 range.
1890 </p>
1891 </dd>
1892
1893 <dt><code>lisp</code></dt>
1894 <dd>
1895 <p>
1896 A layer 3 tunnel over the experimental, UDP-based Locator/ID
1897 Separation Protocol (RFC 6830).
1898 </p>
1899 <p>
1900 Only IPv4 and IPv6 packets are supported by the protocol, and
1901 they are sent and received without an Ethernet header. Traffic
1902 to/from LISP ports is expected to be configured explicitly, and
1903 the ports are not intended to participate in learning based
1904 switching. As such, they are always excluded from packet
1905 flooding.
1906 </p>
1907 </dd>
1908
1909 <dt><code>stt</code></dt>
1910 <dd>
1911 The Stateless TCP Tunnel (STT) is particularly useful when tunnel
1912 endpoints are in end-systems, as it utilizes the capabilities of
1913 standard network interface cards to improve performance. STT utilizes
1914 a TCP-like header inside the IP header. It is stateless, i.e., there is
1915 no TCP connection state of any kind associated with the tunnel. The
1916 TCP-like header is used to leverage the capabilities of existing
1917 network interface cards, but should not be interpreted as implying
1918 any sort of connection state between endpoints.
1919 Since the STT protocol does not engage in the usual TCP 3-way handshake,
1920 so it will have difficulty traversing stateful firewalls.
1921 The protocol is documented at
1922 http://www.ietf.org/archive/id/draft-davie-stt-06.txt
1923
1924 All traffic uses a default destination port of 7471. STT is only
1925 available in kernel datapath on kernel 3.5 or newer.
1926 </dd>
1927
1928 <dt><code>patch</code></dt>
1929 <dd>
1930 A pair of virtual devices that act as a patch cable.
1931 </dd>
1932
1933 <dt><code>null</code></dt>
1934 <dd>An ignored interface. Deprecated and slated for removal in
1935 February 2013.</dd>
1936 </dl>
1937 </column>
1938 </group>
1939
1940 <group title="Tunnel Options">
1941 <p>
1942 These options apply to interfaces with <ref column="type"/> of
1943 <code>geneve</code>, <code>gre</code>, <code>ipsec_gre</code>,
1944 <code>vxlan</code>, <code>lisp</code> and <code>stt</code>.
1945 </p>
1946
1947 <p>
1948 Each tunnel must be uniquely identified by the combination of <ref
1949 column="type"/>, <ref column="options" key="remote_ip"/>, <ref
1950 column="options" key="local_ip"/>, and <ref column="options"
1951 key="in_key"/>. If two ports are defined that are the same except one
1952 has an optional identifier and the other does not, the more specific
1953 one is matched first. <ref column="options" key="in_key"/> is
1954 considered more specific than <ref column="options" key="local_ip"/> if
1955 a port defines one and another port defines the other.
1956 </p>
1957
1958 <column name="options" key="remote_ip">
1959 <p>Required. The remote tunnel endpoint, one of:</p>
1960
1961 <ul>
1962 <li>
1963 An IPv4 address (not a DNS name), e.g. <code>192.168.0.123</code>.
1964 Only unicast endpoints are supported.
1965 </li>
1966 <li>
1967 The word <code>flow</code>. The tunnel accepts packets from any
1968 remote tunnel endpoint. To process only packets from a specific
1969 remote tunnel endpoint, the flow entries may match on the
1970 <code>tun_src</code> field. When sending packets to a
1971 <code>remote_ip=flow</code> tunnel, the flow actions must
1972 explicitly set the <code>tun_dst</code> field to the IP address of
1973 the desired remote tunnel endpoint, e.g. with a
1974 <code>set_field</code> action.
1975 </li>
1976 </ul>
1977
1978 <p>
1979 The remote tunnel endpoint for any packet received from a tunnel
1980 is available in the <code>tun_src</code> field for matching in the
1981 flow table.
1982 </p>
1983 </column>
1984
1985 <column name="options" key="local_ip">
1986 <p>
1987 Optional. The tunnel destination IP that received packets must
1988 match. Default is to match all addresses. If specified, may be one
1989 of:
1990 </p>
1991
1992 <ul>
1993 <li>
1994 An IPv4 address (not a DNS name), e.g. <code>192.168.12.3</code>.
1995 </li>
1996 <li>
1997 The word <code>flow</code>. The tunnel accepts packets sent to any
1998 of the local IP addresses of the system running OVS. To process
1999 only packets sent to a specific IP address, the flow entries may
2000 match on the <code>tun_dst</code> field. When sending packets to a
2001 <code>local_ip=flow</code> tunnel, the flow actions may
2002 explicitly set the <code>tun_src</code> field to the desired IP
2003 address, e.g. with a <code>set_field</code> action. However, while
2004 routing the tunneled packet out, the local system may override the
2005 specified address with the local IP address configured for the
2006 outgoing system interface.
2007
2008 <p>
2009 This option is valid only for tunnels also configured with the
2010 <code>remote_ip=flow</code> option.
2011 </p>
2012 </li>
2013 </ul>
2014
2015 <p>
2016 The tunnel destination IP address for any packet received from a
2017 tunnel is available in the <code>tun_dst</code> field for matching in
2018 the flow table.
2019 </p>
2020 </column>
2021
2022 <column name="options" key="in_key">
2023 <p>Optional. The key that received packets must contain, one of:</p>
2024
2025 <ul>
2026 <li>
2027 <code>0</code>. The tunnel receives packets with no key or with a
2028 key of 0. This is equivalent to specifying no <ref column="options"
2029 key="in_key"/> at all.
2030 </li>
2031 <li>
2032 A positive 24-bit (for Geneve, VXLAN, and LISP), 32-bit (for GRE)
2033 or 64-bit (for STT) number. The tunnel receives only
2034 packets with the specified key.
2035 </li>
2036 <li>
2037 The word <code>flow</code>. The tunnel accepts packets with any
2038 key. The key will be placed in the <code>tun_id</code> field for
2039 matching in the flow table. The <code>ovs-ofctl</code> manual page
2040 contains additional information about matching fields in OpenFlow
2041 flows.
2042 </li>
2043 </ul>
2044
2045 <p>
2046 </p>
2047 </column>
2048
2049 <column name="options" key="out_key">
2050 <p>Optional. The key to be set on outgoing packets, one of:</p>
2051
2052 <ul>
2053 <li>
2054 <code>0</code>. Packets sent through the tunnel will have no key.
2055 This is equivalent to specifying no <ref column="options"
2056 key="out_key"/> at all.
2057 </li>
2058 <li>
2059 A positive 24-bit (for Geneve, VXLAN and LISP), 32-bit (for GRE) or
2060 64-bit (for STT) number. Packets sent through the tunnel
2061 will have the specified key.
2062 </li>
2063 <li>
2064 The word <code>flow</code>. Packets sent through the tunnel will
2065 have the key set using the <code>set_tunnel</code> Nicira OpenFlow
2066 vendor extension (0 is used in the absence of an action). The
2067 <code>ovs-ofctl</code> manual page contains additional information
2068 about the Nicira OpenFlow vendor extensions.
2069 </li>
2070 </ul>
2071 </column>
2072
2073 <column name="options" key="key">
2074 Optional. Shorthand to set <code>in_key</code> and
2075 <code>out_key</code> at the same time.
2076 </column>
2077
2078 <column name="options" key="tos">
2079 Optional. The value of the ToS bits to be set on the encapsulating
2080 packet. ToS is interpreted as DSCP and ECN bits, ECN part must be
2081 zero. It may also be the word <code>inherit</code>, in which case
2082 the ToS will be copied from the inner packet if it is IPv4 or IPv6
2083 (otherwise it will be 0). The ECN fields are always inherited.
2084 Default is 0.
2085 </column>
2086
2087 <column name="options" key="ttl">
2088 Optional. The TTL to be set on the encapsulating packet. It may also
2089 be the word <code>inherit</code>, in which case the TTL will be copied
2090 from the inner packet if it is IPv4 or IPv6 (otherwise it will be the
2091 system default, typically 64). Default is the system default TTL.
2092 </column>
2093
2094 <column name="options" key="df_default"
2095 type='{"type": "boolean"}'>
2096 Optional. If enabled, the Don't Fragment bit will be set on tunnel
2097 outer headers to allow path MTU discovery. Default is enabled; set
2098 to <code>false</code> to disable.
2099 </column>
2100
2101 <group title="Tunnel Options: vxlan only">
2102
2103 <column name="options" key="exts">
2104 <p>Optional. Comma separated list of optional VXLAN extensions to
2105 enable. The following extensions are supported:</p>
2106
2107 <ul>
2108 <li>
2109 <code>gbp</code>: VXLAN-GBP allows to transport the group policy
2110 context of a packet across the VXLAN tunnel to other network
2111 peers. See the field description of <code>tun_gbp_id</code> and
2112 <code>tun_gbp_flags</code> in ovs-ofctl(8) for additional
2113 information.
2114 (<code>https://tools.ietf.org/html/draft-smith-vxlan-group-policy</code>)
2115 </li>
2116 </ul>
2117 </column>
2118
2119 </group>
2120
2121 <group title="Tunnel Options: gre, ipsec_gre, geneve, and vxlan">
2122 <p>
2123 <code>gre</code>, <code>ipsec_gre</code>, <code>geneve</code>, and
2124 <code>vxlan</code> interfaces support these options.
2125 </p>
2126
2127 <column name="options" key="csum" type='{"type": "boolean"}'>
2128 <p>
2129 Optional. Compute encapsulation header (either GRE or UDP)
2130 checksums on outgoing packets. Default is disabled, set to
2131 <code>true</code> to enable. Checksums present on incoming
2132 packets will be validated regardless of this setting.
2133 </p>
2134
2135 <p>
2136 When using the upstream Linux kernel module, computation of
2137 checksums for <code>geneve</code> and <code>vxlan</code> requires
2138 Linux kernel version 4.0 or higher. <code>gre</code> supports
2139 checksums for all versions of Open vSwitch that support GRE.
2140 The out of tree kernel module distributed as part of OVS
2141 can compute all tunnel checksums on any kernel version that it
2142 is compatible with.
2143 </p>
2144
2145 <p>
2146 This option is supported for <code>ipsec_gre</code>, but not useful
2147 because GRE checksums are weaker than, and redundant with, IPsec
2148 payload authentication.
2149 </p>
2150 </column>
2151 </group>
2152
2153 <group title="Tunnel Options: ipsec_gre only">
2154 <p>
2155 Only <code>ipsec_gre</code> interfaces support these options.
2156 </p>
2157
2158 <column name="options" key="peer_cert">
2159 Required for certificate authentication. A string containing the
2160 peer's certificate in PEM format. Additionally the host's
2161 certificate must be specified with the <code>certificate</code>
2162 option.
2163 </column>
2164
2165 <column name="options" key="certificate">
2166 Required for certificate authentication. The name of a PEM file
2167 containing a certificate that will be presented to the peer during
2168 authentication.
2169 </column>
2170
2171 <column name="options" key="private_key">
2172 Optional for certificate authentication. The name of a PEM file
2173 containing the private key associated with <code>certificate</code>.
2174 If <code>certificate</code> contains the private key, this option may
2175 be omitted.
2176 </column>
2177
2178 <column name="options" key="psk">
2179 Required for pre-shared key authentication. Specifies a pre-shared
2180 key for authentication that must be identical on both sides of the
2181 tunnel.
2182 </column>
2183 </group>
2184 </group>
2185
2186 <group title="Patch Options">
2187 <p>
2188 Only <code>patch</code> interfaces support these options.
2189 </p>
2190
2191 <column name="options" key="peer">
2192 The <ref column="name"/> of the <ref table="Interface"/> for the other
2193 side of the patch. The named <ref table="Interface"/>'s own
2194 <code>peer</code> option must specify this <ref table="Interface"/>'s
2195 name. That is, the two patch interfaces must have reversed <ref
2196 column="name"/> and <code>peer</code> values.
2197 </column>
2198 </group>
2199
2200 <group title="Interface Status">
2201 <p>
2202 Status information about interfaces attached to bridges, updated every
2203 5 seconds. Not all interfaces have all of these properties; virtual
2204 interfaces don't have a link speed, for example. Non-applicable
2205 columns will have empty values.
2206 </p>
2207 <column name="admin_state">
2208 <p>
2209 The administrative state of the physical network link.
2210 </p>
2211 </column>
2212
2213 <column name="link_state">
2214 <p>
2215 The observed state of the physical network link. This is ordinarily
2216 the link's carrier status. If the interface's <ref table="Port"/> is
2217 a bond configured for miimon monitoring, it is instead the network
2218 link's miimon status.
2219 </p>
2220 </column>
2221
2222 <column name="link_resets">
2223 <p>
2224 The number of times Open vSwitch has observed the
2225 <ref column="link_state"/> of this <ref table="Interface"/> change.
2226 </p>
2227 </column>
2228
2229 <column name="link_speed">
2230 <p>
2231 The negotiated speed of the physical network link.
2232 Valid values are positive integers greater than 0.
2233 </p>
2234 </column>
2235
2236 <column name="duplex">
2237 <p>
2238 The duplex mode of the physical network link.
2239 </p>
2240 </column>
2241
2242 <column name="mtu">
2243 <p>
2244 The MTU (maximum transmission unit); i.e. the largest
2245 amount of data that can fit into a single Ethernet frame.
2246 The standard Ethernet MTU is 1500 bytes. Some physical media
2247 and many kinds of virtual interfaces can be configured with
2248 higher MTUs.
2249 </p>
2250 <p>
2251 This column will be empty for an interface that does not
2252 have an MTU as, for example, some kinds of tunnels do not.
2253 </p>
2254 </column>
2255
2256 <column name="lacp_current">
2257 Boolean value indicating LACP status for this interface. If true, this
2258 interface has current LACP information about its LACP partner. This
2259 information may be used to monitor the health of interfaces in a LACP
2260 enabled port. This column will be empty if LACP is not enabled.
2261 </column>
2262
2263 <column name="status">
2264 Key-value pairs that report port status. Supported status values are
2265 <ref column="type"/>-dependent; some interfaces may not have a valid
2266 <ref column="status" key="driver_name"/>, for example.
2267 </column>
2268
2269 <column name="status" key="driver_name">
2270 The name of the device driver controlling the network adapter.
2271 </column>
2272
2273 <column name="status" key="driver_version">
2274 The version string of the device driver controlling the network
2275 adapter.
2276 </column>
2277
2278 <column name="status" key="firmware_version">
2279 The version string of the network adapter's firmware, if available.
2280 </column>
2281
2282 <column name="status" key="source_ip">
2283 The source IP address used for an IPv4 tunnel end-point, such as
2284 <code>gre</code>.
2285 </column>
2286
2287 <column name="status" key="tunnel_egress_iface">
2288 Egress interface for tunnels. Currently only relevant for tunnels
2289 on Linux systems, this column will show the name of the interface
2290 which is responsible for routing traffic destined for the configured
2291 <ref column="options" key="remote_ip"/>. This could be an internal
2292 interface such as a bridge port.
2293 </column>
2294
2295 <column name="status" key="tunnel_egress_iface_carrier"
2296 type='{"type": "string", "enum": ["set", ["down", "up"]]}'>
2297 Whether carrier is detected on <ref column="status"
2298 key="tunnel_egress_iface"/>.
2299 </column>
2300 </group>
2301
2302 <group title="Statistics">
2303 <p>
2304 Key-value pairs that report interface statistics. The current
2305 implementation updates these counters periodically. The update period
2306 is controlled by <ref column="other_config"
2307 key="stats-update-interval"/> in the <code>Open_vSwitch</code> table.
2308 Future implementations may update them when an interface is created,
2309 when they are queried (e.g. using an OVSDB <code>select</code>
2310 operation), and just before an interface is deleted due to virtual
2311 interface hot-unplug or VM shutdown, and perhaps at other times, but
2312 not on any regular periodic basis.
2313 </p>
2314 <p>
2315 These are the same statistics reported by OpenFlow in its <code>struct
2316 ofp_port_stats</code> structure. If an interface does not support a
2317 given statistic, then that pair is omitted.
2318 </p>
2319 <group title="Statistics: Successful transmit and receive counters">
2320 <column name="statistics" key="rx_packets">
2321 Number of received packets.
2322 </column>
2323 <column name="statistics" key="rx_bytes">
2324 Number of received bytes.
2325 </column>
2326 <column name="statistics" key="tx_packets">
2327 Number of transmitted packets.
2328 </column>
2329 <column name="statistics" key="tx_bytes">
2330 Number of transmitted bytes.
2331 </column>
2332 </group>
2333 <group title="Statistics: Receive errors">
2334 <column name="statistics" key="rx_dropped">
2335 Number of packets dropped by RX.
2336 </column>
2337 <column name="statistics" key="rx_frame_err">
2338 Number of frame alignment errors.
2339 </column>
2340 <column name="statistics" key="rx_over_err">
2341 Number of packets with RX overrun.
2342 </column>
2343 <column name="statistics" key="rx_crc_err">
2344 Number of CRC errors.
2345 </column>
2346 <column name="statistics" key="rx_errors">
2347 Total number of receive errors, greater than or equal to the sum of
2348 the above.
2349 </column>
2350 </group>
2351 <group title="Statistics: Transmit errors">
2352 <column name="statistics" key="tx_dropped">
2353 Number of packets dropped by TX.
2354 </column>
2355 <column name="statistics" key="collisions">
2356 Number of collisions.
2357 </column>
2358 <column name="statistics" key="tx_errors">
2359 Total number of transmit errors, greater than or equal to the sum of
2360 the above.
2361 </column>
2362 </group>
2363 </group>
2364
2365 <group title="Ingress Policing">
2366 <p>
2367 These settings control ingress policing for packets received on this
2368 interface. On a physical interface, this limits the rate at which
2369 traffic is allowed into the system from the outside; on a virtual
2370 interface (one connected to a virtual machine), this limits the rate at
2371 which the VM is able to transmit.
2372 </p>
2373 <p>
2374 Policing is a simple form of quality-of-service that simply drops
2375 packets received in excess of the configured rate. Due to its
2376 simplicity, policing is usually less accurate and less effective than
2377 egress QoS (which is configured using the <ref table="QoS"/> and <ref
2378 table="Queue"/> tables).
2379 </p>
2380 <p>
2381 Policing is currently implemented only on Linux. The Linux
2382 implementation uses a simple ``token bucket'' approach:
2383 </p>
2384 <ul>
2385 <li>
2386 The size of the bucket corresponds to <ref
2387 column="ingress_policing_burst"/>. Initially the bucket is full.
2388 </li>
2389 <li>
2390 Whenever a packet is received, its size (converted to tokens) is
2391 compared to the number of tokens currently in the bucket. If the
2392 required number of tokens are available, they are removed and the
2393 packet is forwarded. Otherwise, the packet is dropped.
2394 </li>
2395 <li>
2396 Whenever it is not full, the bucket is refilled with tokens at the
2397 rate specified by <ref column="ingress_policing_rate"/>.
2398 </li>
2399 </ul>
2400 <p>
2401 Policing interacts badly with some network protocols, and especially
2402 with fragmented IP packets. Suppose that there is enough network
2403 activity to keep the bucket nearly empty all the time. Then this token
2404 bucket algorithm will forward a single packet every so often, with the
2405 period depending on packet size and on the configured rate. All of the
2406 fragments of an IP packets are normally transmitted back-to-back, as a
2407 group. In such a situation, therefore, only one of these fragments
2408 will be forwarded and the rest will be dropped. IP does not provide
2409 any way for the intended recipient to ask for only the remaining
2410 fragments. In such a case there are two likely possibilities for what
2411 will happen next: either all of the fragments will eventually be
2412 retransmitted (as TCP will do), in which case the same problem will
2413 recur, or the sender will not realize that its packet has been dropped
2414 and data will simply be lost (as some UDP-based protocols will do).
2415 Either way, it is possible that no forward progress will ever occur.
2416 </p>
2417 <column name="ingress_policing_rate">
2418 <p>
2419 Maximum rate for data received on this interface, in kbps. Data
2420 received faster than this rate is dropped. Set to <code>0</code>
2421 (the default) to disable policing.
2422 </p>
2423 </column>
2424
2425 <column name="ingress_policing_burst">
2426 <p>Maximum burst size for data received on this interface, in kb. The
2427 default burst size if set to <code>0</code> is 1000 kb. This value
2428 has no effect if <ref column="ingress_policing_rate"/>
2429 is <code>0</code>.</p>
2430 <p>
2431 Specifying a larger burst size lets the algorithm be more forgiving,
2432 which is important for protocols like TCP that react severely to
2433 dropped packets. The burst size should be at least the size of the
2434 interface's MTU. Specifying a value that is numerically at least as
2435 large as 10% of <ref column="ingress_policing_rate"/> helps TCP come
2436 closer to achieving the full rate.
2437 </p>
2438 </column>
2439 </group>
2440
2441 <group title="Bidirectional Forwarding Detection (BFD)">
2442 <p>
2443 BFD, defined in RFC 5880 and RFC 5881, allows point-to-point
2444 detection of connectivity failures by occasional transmission of
2445 BFD control messages. Open vSwitch implements BFD to serve
2446 as a more popular and standards compliant alternative to CFM.
2447 </p>
2448
2449 <p>
2450 BFD operates by regularly transmitting BFD control messages at a rate
2451 negotiated independently in each direction. Each endpoint specifies
2452 the rate at which it expects to receive control messages, and the rate
2453 at which it is willing to transmit them. Open vSwitch uses a detection
2454 multiplier of three, meaning that an endpoint signals a connectivity
2455 fault if three consecutive BFD control messages fail to arrive. In the
2456 case of a unidirectional connectivity issue, the system not receiving
2457 BFD control messages signals the problem to its peer in the messages it
2458 transmits.
2459 </p>
2460
2461 <p>
2462 The Open vSwitch implementation of BFD aims to comply faithfully
2463 with RFC 5880 requirements. Open vSwitch does not implement the
2464 optional Authentication or ``Echo Mode'' features.
2465 </p>
2466
2467 <group title="BFD Configuration">
2468 <p>
2469 A controller sets up key-value pairs in the <ref column="bfd"/>
2470 column to enable and configure BFD.
2471 </p>
2472
2473 <column name="bfd" key="enable" type='{"type": "boolean"}'>
2474 True to enable BFD on this <ref table="Interface"/>. If not
2475 specified, BFD will not be enabled by default.
2476 </column>
2477
2478 <column name="bfd" key="min_rx"
2479 type='{"type": "integer", "minInteger": 1}'>
2480 The shortest interval, in milliseconds, at which this BFD session
2481 offers to receive BFD control messages. The remote endpoint may
2482 choose to send messages at a slower rate. Defaults to
2483 <code>1000</code>.
2484 </column>
2485
2486 <column name="bfd" key="min_tx"
2487 type='{"type": "integer", "minInteger": 1}'>
2488 The shortest interval, in milliseconds, at which this BFD session is
2489 willing to transmit BFD control messages. Messages will actually be
2490 transmitted at a slower rate if the remote endpoint is not willing to
2491 receive as quickly as specified. Defaults to <code>100</code>.
2492 </column>
2493
2494 <column name="bfd" key="decay_min_rx" type='{"type": "integer"}'>
2495 An alternate receive interval, in milliseconds, that must be greater
2496 than or equal to <ref column="bfd" key="min_rx"/>. The
2497 implementation switches from <ref column="bfd" key="min_rx"/> to <ref
2498 column="bfd" key="decay_min_rx"/> when there is no obvious incoming
2499 data traffic at the interface, to reduce the CPU and bandwidth cost
2500 of monitoring an idle interface. This feature may be disabled by
2501 setting a value of 0. This feature is reset whenever <ref
2502 column="bfd" key="decay_min_rx"/> or <ref column="bfd" key="min_rx"/>
2503 changes.
2504 </column>
2505
2506 <column name="bfd" key="forwarding_if_rx" type='{"type": "boolean"}'>
2507 When <code>true</code>, traffic received on the
2508 <ref table="Interface"/> is used to indicate the capability of packet
2509 I/O. BFD control packets are still transmitted and received. At
2510 least one BFD control packet must be received every 100 * <ref
2511 column="bfd" key="min_rx"/> amount of time. Otherwise, even if
2512 traffic are received, the <ref column="bfd" key="forwarding"/>
2513 will be <code>false</code>.
2514 </column>
2515
2516 <column name="bfd" key="cpath_down" type='{"type": "boolean"}'>
2517 Set to true to notify the remote endpoint that traffic should not be
2518 forwarded to this system for some reason other than a connectivty
2519 failure on the interface being monitored. The typical underlying
2520 reason is ``concatenated path down,'' that is, that connectivity
2521 beyond the local system is down. Defaults to false.
2522 </column>
2523
2524 <column name="bfd" key="check_tnl_key" type='{"type": "boolean"}'>
2525 Set to true to make BFD accept only control messages with a tunnel
2526 key of zero. By default, BFD accepts control messages with any
2527 tunnel key.
2528 </column>
2529
2530 <column name="bfd" key="bfd_local_src_mac">
2531 Set to an Ethernet address in the form
2532 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
2533 to set the MAC used as source for transmitted BFD packets. The
2534 default is the mac address of the BFD enabled interface.
2535 </column>
2536
2537 <column name="bfd" key="bfd_local_dst_mac">
2538 Set to an Ethernet address in the form
2539 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
2540 to set the MAC used as destination for transmitted BFD packets. The
2541 default is <code>00:23:20:00:00:01</code>.
2542 </column>
2543
2544 <column name="bfd" key="bfd_remote_dst_mac">
2545 Set to an Ethernet address in the form
2546 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
2547 to set the MAC used for checking the destination of received BFD packets.
2548 Packets with different destination MAC will not be considered as BFD packets.
2549 If not specified the destination MAC address of received BFD packets
2550 are not checked.
2551 </column>
2552
2553 <column name="bfd" key="bfd_src_ip">
2554 Set to an IPv4 address to set the IP address used as source for
2555 transmitted BFD packets. The default is <code>169.254.1.1</code>.
2556 </column>
2557
2558 <column name="bfd" key="bfd_dst_ip">
2559 Set to an IPv4 address to set the IP address used as destination
2560 for transmitted BFD packets. The default is <code>169.254.1.0</code>.
2561 </column>
2562 </group>
2563
2564 <group title="BFD Status">
2565 <p>
2566 The switch sets key-value pairs in the <ref column="bfd_status"/>
2567 column to report the status of BFD on this interface. When BFD is
2568 not enabled, with <ref column="bfd" key="enable"/>, the switch clears
2569 all key-value pairs from <ref column="bfd_status"/>.
2570 </p>
2571
2572 <column name="bfd_status" key="state"
2573 type='{"type": "string",
2574 "enum": ["set", ["admin_down", "down", "init", "up"]]}'>
2575 Reports the state of the BFD session. The BFD session is fully
2576 healthy and negotiated if <code>UP</code>.
2577 </column>
2578
2579 <column name="bfd_status" key="forwarding" type='{"type": "boolean"}'>
2580 Reports whether the BFD session believes this <ref
2581 table="Interface"/> may be used to forward traffic. Typically this
2582 means the local session is signaling <code>UP</code>, and the remote
2583 system isn't signaling a problem such as concatenated path down.
2584 </column>
2585
2586 <column name="bfd_status" key="diagnostic">
2587 A diagnostic code specifying the local system's reason for the
2588 last change in session state. The error messages are defined in
2589 section 4.1 of [RFC 5880].
2590 </column>
2591
2592 <column name="bfd_status" key="remote_state"
2593 type='{"type": "string",
2594 "enum": ["set", ["admin_down", "down", "init", "up"]]}'>
2595 Reports the state of the remote endpoint's BFD session.
2596 </column>
2597
2598 <column name="bfd_status" key="remote_diagnostic">
2599 A diagnostic code specifying the remote system's reason for the
2600 last change in session state. The error messages are defined in
2601 section 4.1 of [RFC 5880].
2602 </column>
2603
2604 <column name="bfd_status" key="flap_count"
2605 type='{"type": "integer", "minInteger": 0}'>
2606 Counts the number of <ref column="bfd_status" key="forwarding" />
2607 flaps since start. A flap is considered as a change of the
2608 <ref column="bfd_status" key="forwarding" /> value.
2609 </column>
2610 </group>
2611 </group>
2612
2613 <group title="Connectivity Fault Management">
2614 <p>
2615 802.1ag Connectivity Fault Management (CFM) allows a group of
2616 Maintenance Points (MPs) called a Maintenance Association (MA) to
2617 detect connectivity problems with each other. MPs within a MA should
2618 have complete and exclusive interconnectivity. This is verified by
2619 occasionally broadcasting Continuity Check Messages (CCMs) at a
2620 configurable transmission interval.
2621 </p>
2622
2623 <p>
2624 According to the 802.1ag specification, each Maintenance Point should
2625 be configured out-of-band with a list of Remote Maintenance Points it
2626 should have connectivity to. Open vSwitch differs from the
2627 specification in this area. It simply assumes the link is faulted if
2628 no Remote Maintenance Points are reachable, and considers it not
2629 faulted otherwise.
2630 </p>
2631
2632 <p>
2633 When operating over tunnels which have no <code>in_key</code>, or an
2634 <code>in_key</code> of <code>flow</code>. CFM will only accept CCMs
2635 with a tunnel key of zero.
2636 </p>
2637
2638 <column name="cfm_mpid">
2639 <p>
2640 A Maintenance Point ID (MPID) uniquely identifies each endpoint
2641 within a Maintenance Association. The MPID is used to identify this
2642 endpoint to other Maintenance Points in the MA. Each end of a link
2643 being monitored should have a different MPID. Must be configured to
2644 enable CFM on this <ref table="Interface"/>.
2645 </p>
2646 <p>
2647 According to the 802.1ag specification, MPIDs can only range between
2648 [1, 8191]. However, extended mode (see <ref column="other_config"
2649 key="cfm_extended"/>) supports eight byte MPIDs.
2650 </p>
2651 </column>
2652
2653 <column name="cfm_flap_count">
2654 Counts the number of cfm fault flapps since boot. A flap is
2655 considered to be a change of the <ref column="cfm_fault"/> value.
2656 </column>
2657
2658 <column name="cfm_fault">
2659 <p>
2660 Indicates a connectivity fault triggered by an inability to receive
2661 heartbeats from any remote endpoint. When a fault is triggered on
2662 <ref table="Interface"/>s participating in bonds, they will be
2663 disabled.
2664 </p>
2665 <p>
2666 Faults can be triggered for several reasons. Most importantly they
2667 are triggered when no CCMs are received for a period of 3.5 times the
2668 transmission interval. Faults are also triggered when any CCMs
2669 indicate that a Remote Maintenance Point is not receiving CCMs but
2670 able to send them. Finally, a fault is triggered if a CCM is
2671 received which indicates unexpected configuration. Notably, this
2672 case arises when a CCM is received which advertises the local MPID.
2673 </p>
2674 </column>
2675
2676 <column name="cfm_fault_status" key="recv">
2677 Indicates a CFM fault was triggered due to a lack of CCMs received on
2678 the <ref table="Interface"/>.
2679 </column>
2680
2681 <column name="cfm_fault_status" key="rdi">
2682 Indicates a CFM fault was triggered due to the reception of a CCM with
2683 the RDI bit flagged. Endpoints set the RDI bit in their CCMs when they
2684 are not receiving CCMs themselves. This typically indicates a
2685 unidirectional connectivity failure.
2686 </column>
2687
2688 <column name="cfm_fault_status" key="maid">
2689 Indicates a CFM fault was triggered due to the reception of a CCM with
2690 a MAID other than the one Open vSwitch uses. CFM broadcasts are tagged
2691 with an identification number in addition to the MPID called the MAID.
2692 Open vSwitch only supports receiving CCM broadcasts tagged with the
2693 MAID it uses internally.
2694 </column>
2695
2696 <column name="cfm_fault_status" key="loopback">
2697 Indicates a CFM fault was triggered due to the reception of a CCM
2698 advertising the same MPID configured in the <ref column="cfm_mpid"/>
2699 column of this <ref table="Interface"/>. This may indicate a loop in
2700 the network.
2701 </column>
2702
2703 <column name="cfm_fault_status" key="overflow">
2704 Indicates a CFM fault was triggered because the CFM module received
2705 CCMs from more remote endpoints than it can keep track of.
2706 </column>
2707
2708 <column name="cfm_fault_status" key="override">
2709 Indicates a CFM fault was manually triggered by an administrator using
2710 an <code>ovs-appctl</code> command.
2711 </column>
2712
2713 <column name="cfm_fault_status" key="interval">
2714 Indicates a CFM fault was triggered due to the reception of a CCM
2715 frame having an invalid interval.
2716 </column>
2717
2718 <column name="cfm_remote_opstate">
2719 <p>When in extended mode, indicates the operational state of the
2720 remote endpoint as either <code>up</code> or <code>down</code>. See
2721 <ref column="other_config" key="cfm_opstate"/>.
2722 </p>
2723 </column>
2724
2725 <column name="cfm_health">
2726 <p>
2727 Indicates the health of the interface as a percentage of CCM frames
2728 received over 21 <ref column="other_config" key="cfm_interval"/>s.
2729 The health of an interface is undefined if it is communicating with
2730 more than one <ref column="cfm_remote_mpids"/>. It reduces if
2731 healthy heartbeats are not received at the expected rate, and
2732 gradually improves as healthy heartbeats are received at the desired
2733 rate. Every 21 <ref column="other_config" key="cfm_interval"/>s, the
2734 health of the interface is refreshed.
2735 </p>
2736 <p>
2737 As mentioned above, the faults can be triggered for several reasons.
2738 The link health will deteriorate even if heartbeats are received but
2739 they are reported to be unhealthy. An unhealthy heartbeat in this
2740 context is a heartbeat for which either some fault is set or is out
2741 of sequence. The interface health can be 100 only on receiving
2742 healthy heartbeats at the desired rate.
2743 </p>
2744 </column>
2745
2746 <column name="cfm_remote_mpids">
2747 When CFM is properly configured, Open vSwitch will occasionally
2748 receive CCM broadcasts. These broadcasts contain the MPID of the
2749 sending Maintenance Point. The list of MPIDs from which this
2750 <ref table="Interface"/> is receiving broadcasts from is regularly
2751 collected and written to this column.
2752 </column>
2753
2754 <column name="other_config" key="cfm_interval"
2755 type='{"type": "integer"}'>
2756 <p>
2757 The interval, in milliseconds, between transmissions of CFM
2758 heartbeats. Three missed heartbeat receptions indicate a
2759 connectivity fault.
2760 </p>
2761
2762 <p>
2763 In standard operation only intervals of 3, 10, 100, 1,000, 10,000,
2764 60,000, or 600,000 ms are supported. Other values will be rounded
2765 down to the nearest value on the list. Extended mode (see <ref
2766 column="other_config" key="cfm_extended"/>) supports any interval up
2767 to 65,535 ms. In either mode, the default is 1000 ms.
2768 </p>
2769
2770 <p>We do not recommend using intervals less than 100 ms.</p>
2771 </column>
2772
2773 <column name="other_config" key="cfm_extended"
2774 type='{"type": "boolean"}'>
2775 When <code>true</code>, the CFM module operates in extended mode. This
2776 causes it to use a nonstandard destination address to avoid conflicting
2777 with compliant implementations which may be running concurrently on the
2778 network. Furthermore, extended mode increases the accuracy of the
2779 <code>cfm_interval</code> configuration parameter by breaking wire
2780 compatibility with 802.1ag compliant implementations. And extended
2781 mode allows eight byte MPIDs. Defaults to <code>false</code>.
2782 </column>
2783
2784 <column name="other_config" key="cfm_demand" type='{"type": "boolean"}'>
2785 <p>
2786 When <code>true</code>, and
2787 <ref column="other_config" key="cfm_extended"/> is true, the CFM
2788 module operates in demand mode. When in demand mode, traffic
2789 received on the <ref table="Interface"/> is used to indicate
2790 liveness. CCMs are still transmitted and received. At least one
2791 CCM must be received every 100 * <ref column="other_config"
2792 key="cfm_interval"/> amount of time. Otherwise, even if traffic
2793 are received, the CFM module will raise the connectivity fault.
2794 </p>
2795
2796 <p>
2797 Demand mode has a couple of caveats:
2798 <ul>
2799 <li>
2800 To ensure that ovs-vswitchd has enough time to pull statistics
2801 from the datapath, the fault detection interval is set to
2802 3.5 * MAX(<ref column="other_config" key="cfm_interval"/>, 500)
2803 ms.
2804 </li>
2805
2806 <li>
2807 To avoid ambiguity, demand mode disables itself when there are
2808 multiple remote maintenance points.
2809 </li>
2810
2811 <li>
2812 If the <ref table="Interface"/> is heavily congested, CCMs
2813 containing the <ref column="other_config" key="cfm_opstate"/>
2814 status may be dropped causing changes in the operational state to
2815 be delayed. Similarly, if CCMs containing the RDI bit are not
2816 received, unidirectional link failures may not be detected.
2817 </li>
2818 </ul>
2819 </p>
2820 </column>
2821
2822 <column name="other_config" key="cfm_opstate"
2823 type='{"type": "string", "enum": ["set", ["down", "up"]]}'>
2824 When <code>down</code>, the CFM module marks all CCMs it generates as
2825 operationally down without triggering a fault. This allows remote
2826 maintenance points to choose not to forward traffic to the
2827 <ref table="Interface"/> on which this CFM module is running.
2828 Currently, in Open vSwitch, the opdown bit of CCMs affects
2829 <ref table="Interface"/>s participating in bonds, and the bundle
2830 OpenFlow action. This setting is ignored when CFM is not in extended
2831 mode. Defaults to <code>up</code>.
2832 </column>
2833
2834 <column name="other_config" key="cfm_ccm_vlan"
2835 type='{"type": "integer", "minInteger": 1, "maxInteger": 4095}'>
2836 When set, the CFM module will apply a VLAN tag to all CCMs it generates
2837 with the given value. May be the string <code>random</code> in which
2838 case each CCM will be tagged with a different randomly generated VLAN.
2839 </column>
2840
2841 <column name="other_config" key="cfm_ccm_pcp"
2842 type='{"type": "integer", "minInteger": 1, "maxInteger": 7}'>
2843 When set, the CFM module will apply a VLAN tag to all CCMs it generates
2844 with the given PCP value, the VLAN ID of the tag is governed by the
2845 value of <ref column="other_config" key="cfm_ccm_vlan"/>. If
2846 <ref column="other_config" key="cfm_ccm_vlan"/> is unset, a VLAN ID of
2847 zero is used.
2848 </column>
2849
2850 </group>
2851
2852 <group title="Bonding Configuration">
2853 <column name="other_config" key="lacp-port-id"
2854 type='{"type": "integer", "minInteger": 1, "maxInteger": 65535}'>
2855 The LACP port ID of this <ref table="Interface"/>. Port IDs are
2856 used in LACP negotiations to identify individual ports
2857 participating in a bond.
2858 </column>
2859
2860 <column name="other_config" key="lacp-port-priority"
2861 type='{"type": "integer", "minInteger": 1, "maxInteger": 65535}'>
2862 The LACP port priority of this <ref table="Interface"/>. In LACP
2863 negotiations <ref table="Interface"/>s with numerically lower
2864 priorities are preferred for aggregation.
2865 </column>
2866
2867 <column name="other_config" key="lacp-aggregation-key"
2868 type='{"type": "integer", "minInteger": 1, "maxInteger": 65535}'>
2869 The LACP aggregation key of this <ref table="Interface"/>. <ref
2870 table="Interface"/>s with different aggregation keys may not be active
2871 within a given <ref table="Port"/> at the same time.
2872 </column>
2873 </group>
2874
2875 <group title="Virtual Machine Identifiers">
2876 <p>
2877 These key-value pairs specifically apply to an interface that
2878 represents a virtual Ethernet interface connected to a virtual
2879 machine. These key-value pairs should not be present for other types
2880 of interfaces. Keys whose names end in <code>-uuid</code> have
2881 values that uniquely identify the entity in question. For a Citrix
2882 XenServer hypervisor, these values are UUIDs in RFC 4122 format.
2883 Other hypervisors may use other formats.
2884 </p>
2885
2886 <column name="external_ids" key="attached-mac">
2887 The MAC address programmed into the ``virtual hardware'' for this
2888 interface, in the form
2889 <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>.
2890 For Citrix XenServer, this is the value of the <code>MAC</code> field
2891 in the VIF record for this interface.
2892 </column>
2893
2894 <column name="external_ids" key="iface-id">
2895 A system-unique identifier for the interface. On XenServer, this will
2896 commonly be the same as <ref column="external_ids" key="xs-vif-uuid"/>.
2897 </column>
2898
2899 <column name="external_ids" key="iface-status"
2900 type='{"type": "string",
2901 "enum": ["set", ["active", "inactive"]]}'>
2902 <p>
2903 Hypervisors may sometimes have more than one interface associated
2904 with a given <ref column="external_ids" key="iface-id"/>, only one of
2905 which is actually in use at a given time. For example, in some
2906 circumstances XenServer has both a ``tap'' and a ``vif'' interface
2907 for a single <ref column="external_ids" key="iface-id"/>, but only
2908 uses one of them at a time. A hypervisor that behaves this way must
2909 mark the currently in use interface <code>active</code> and the
2910 others <code>inactive</code>. A hypervisor that never has more than
2911 one interface for a given <ref column="external_ids" key="iface-id"/>
2912 may mark that interface <code>active</code> or omit <ref
2913 column="external_ids" key="iface-status"/> entirely.
2914 </p>
2915
2916 <p>
2917 During VM migration, a given <ref column="external_ids"
2918 key="iface-id"/> might transiently be marked <code>active</code> on
2919 two different hypervisors. That is, <code>active</code> means that
2920 this <ref column="external_ids" key="iface-id"/> is the active
2921 instance within a single hypervisor, not in a broader scope.
2922 There is one exception: some hypervisors support ``migration'' from a
2923 given hypervisor to itself (most often for test purposes). During
2924 such a ``migration,'' two instances of a single <ref
2925 column="external_ids" key="iface-id"/> might both be briefly marked
2926 <code>active</code> on a single hypervisor.
2927 </p>
2928 </column>
2929
2930 <column name="external_ids" key="xs-vif-uuid">
2931 The virtual interface associated with this interface.
2932 </column>
2933
2934 <column name="external_ids" key="xs-network-uuid">
2935 The virtual network to which this interface is attached.
2936 </column>
2937
2938 <column name="external_ids" key="vm-id">
2939 The VM to which this interface belongs. On XenServer, this will be the
2940 same as <ref column="external_ids" key="xs-vm-uuid"/>.
2941 </column>
2942
2943 <column name="external_ids" key="xs-vm-uuid">
2944 The VM to which this interface belongs.
2945 </column>
2946 </group>
2947
2948 <group title="VLAN Splinters">
2949 <p>
2950 The ``VLAN splinters'' feature increases Open vSwitch compatibility
2951 with buggy network drivers in old versions of Linux that do not
2952 properly support VLANs when VLAN devices are not used, at some cost
2953 in memory and performance.
2954 </p>
2955
2956 <p>
2957 When VLAN splinters are enabled on a particular interface, Open vSwitch
2958 creates a VLAN device for each in-use VLAN. For sending traffic tagged
2959 with a VLAN on the interface, it substitutes the VLAN device. Traffic
2960 received on the VLAN device is treated as if it had been received on
2961 the interface on the particular VLAN.
2962 </p>
2963
2964 <p>
2965 VLAN splinters consider a VLAN to be in use if:
2966 </p>
2967
2968 <ul>
2969 <li>
2970 The VLAN is the <ref table="Port" column="tag"/> value in any <ref
2971 table="Port"/> record.
2972 </li>
2973
2974 <li>
2975 The VLAN is listed within the <ref table="Port" column="trunks"/>
2976 column of the <ref table="Port"/> record of an interface on which
2977 VLAN splinters are enabled.
2978
2979 An empty <ref table="Port" column="trunks"/> does not influence the
2980 in-use VLANs: creating 4,096 VLAN devices is impractical because it
2981 will exceed the current 1,024 port per datapath limit.
2982 </li>
2983
2984 <li>
2985 An OpenFlow flow within any bridge matches the VLAN.
2986 </li>
2987 </ul>
2988
2989 <p>
2990 The same set of in-use VLANs applies to every interface on which VLAN
2991 splinters are enabled. That is, the set is not chosen separately for
2992 each interface but selected once as the union of all in-use VLANs based
2993 on the rules above.
2994 </p>
2995
2996 <p>
2997 It does not make sense to enable VLAN splinters on an interface for an
2998 access port, or on an interface that is not a physical port.
2999 </p>
3000
3001 <p>
3002 VLAN splinters are deprecated. When broken device drivers are no
3003 longer in widespread use, we will delete this feature.
3004 </p>
3005
3006 <column name="other_config" key="enable-vlan-splinters"
3007 type='{"type": "boolean"}'>
3008 <p>
3009 Set to <code>true</code> to enable VLAN splinters on this interface.
3010 Defaults to <code>false</code>.
3011 </p>
3012
3013 <p>
3014 VLAN splinters increase kernel and userspace memory overhead, so do
3015 not use them unless they are needed.
3016 </p>
3017
3018 <p>
3019 VLAN splinters do not support 802.1p priority tags. Received
3020 priorities will appear to be 0, regardless of their actual values,
3021 and priorities on transmitted packets will also be cleared to 0.
3022 </p>
3023 </column>
3024 </group>
3025
3026 <group title="Auto Attach Configuration">
3027 <p>
3028 Auto Attach configuration for a particular interface.
3029 </p>
3030
3031 <column name="lldp" key="enable" type='{"type": "boolean"}'>
3032 True to enable LLDP on this <ref table="Interface"/>. If not
3033 specified, LLDP will be disabled by default.
3034 </column>
3035 </group>
3036
3037 <group title="Common Columns">
3038 The overall purpose of these columns is described under <code>Common
3039 Columns</code> at the beginning of this document.
3040
3041 <column name="other_config"/>
3042 <column name="external_ids"/>
3043 </group>
3044 </table>
3045
3046 <table name="Flow_Table" title="OpenFlow table configuration">
3047 <p>Configuration for a particular OpenFlow table.</p>
3048
3049 <column name="name">
3050 The table's name. Set this column to change the name that controllers
3051 will receive when they request table statistics, e.g. <code>ovs-ofctl
3052 dump-tables</code>. The name does not affect switch behavior.
3053 </column>
3054
3055 <group title="Eviction Policy">
3056 <p>
3057 Open vSwitch supports limiting the number of flows that may be
3058 installed in a flow table, via the <ref column="flow_limit"/> column.
3059 When adding a flow would exceed this limit, by default Open vSwitch
3060 reports an error, but there are two ways to configure Open vSwitch to
3061 instead delete (``evict'') a flow to make room for the new one:
3062 </p>
3063
3064 <ul>
3065 <li>
3066 Set the <ref column="overflow_policy"/> column to <code>evict</code>.
3067 </li>
3068
3069 <li>
3070 Send an OpenFlow 1.4+ ``table mod request'' to enable eviction for
3071 the flow table (e.g. <code>ovs-ofctl -O OpenFlow14 mod-table br0 0
3072 evict</code> to enable eviction on flow table 0 of bridge
3073 <code>br0</code>).
3074 </li>
3075 </ul>
3076
3077 <p>
3078 When a flow must be evicted due to overflow, the flow to evict is
3079 chosen through an approximation of the following algorithm. This
3080 algorithm is used regardless of how eviction was enabled:
3081 </p>
3082
3083 <ol>
3084 <li>
3085 Divide the flows in the table into groups based on the values of the
3086 fields or subfields specified in the <ref column="groups"/> column,
3087 so that all of the flows in a given group have the same values for
3088 those fields. If a flow does not specify a given field, that field's
3089 value is treated as 0. If <ref column="groups"/> is empty, then all
3090 of the flows in the flow table are treated as a single group.
3091 </li>
3092
3093 <li>
3094 Consider the flows in the largest group, that is, the group that
3095 contains the greatest number of flows. If two or more groups all
3096 have the same largest number of flows, consider the flows in all of
3097 those groups.
3098 </li>
3099
3100 <li>
3101 If the flows under consideration have different importance values,
3102 eliminate from consideration any flows except those with the lowest
3103 importance. (``Importance,'' a 16-bit integer value attached to each
3104 flow, was introduced in OpenFlow 1.4. Flows inserted with older
3105 versions of OpenFlow always have an importance of 0.)
3106 </li>
3107
3108 <li>
3109 Among the flows under consideration, choose the flow that expires
3110 soonest for eviction.
3111 </li>
3112 </ol>
3113
3114 <p>
3115 The eviction process only considers flows that have an idle timeout
3116 or a hard timeout. That is, eviction never deletes permanent flows.
3117 (Permanent flows do count against <ref column="flow_limit"/>.)
3118 </p>
3119
3120 <column name="flow_limit">
3121 If set, limits the number of flows that may be added to the table.
3122 Open vSwitch may limit the number of flows in a table for other
3123 reasons, e.g. due to hardware limitations or for resource availability
3124 or performance reasons.
3125 </column>
3126
3127 <column name="overflow_policy">
3128 <p>
3129 Controls the switch's behavior when an OpenFlow flow table
3130 modification request would add flows in excess of <ref
3131 column="flow_limit"/>. The supported values are:
3132 </p>
3133
3134 <dl>
3135 <dt><code>refuse</code></dt>
3136 <dd>
3137 Refuse to add the flow or flows. This is also the default policy
3138 when <ref column="overflow_policy"/> is unset.
3139 </dd>
3140
3141 <dt><code>evict</code></dt>
3142 <dd>
3143 Delete a flow chosen according to the algorithm described above.
3144 </dd>
3145 </dl>
3146 </column>
3147
3148 <column name="groups">
3149 <p>
3150 When <ref column="overflow_policy"/> is <code>evict</code>, this
3151 controls how flows are chosen for eviction when the flow table would
3152 otherwise exceed <ref column="flow_limit"/> flows. Its value is a
3153 set of NXM fields or sub-fields, each of which takes one of the forms
3154 <code><var>field</var>[]</code> or
3155 <code><var>field</var>[<var>start</var>..<var>end</var>]</code>,
3156 e.g. <code>NXM_OF_IN_PORT[]</code>. Please see
3157 <code>nicira-ext.h</code> for a complete list of NXM field names.
3158 </p>
3159
3160 <p>
3161 Open vSwitch ignores any invalid or unknown field specifications.
3162 </p>
3163
3164 <p>
3165 When eviction is not enabled, via <ref column="overflow_policy"/> or
3166 an OpenFlow 1.4+ ``table mod,'' this column has no effect.
3167 </p>
3168 </column>
3169 </group>
3170
3171 <group title="Classifier Optimization">
3172 <column name="prefixes">
3173 <p>
3174 This string set specifies which fields should be used for
3175 address prefix tracking. Prefix tracking allows the
3176 classifier to skip rules with longer than necessary prefixes,
3177 resulting in better wildcarding for datapath flows.
3178 </p>
3179 <p>
3180 Prefix tracking may be beneficial when a flow table contains
3181 matches on IP address fields with different prefix lengths.
3182 For example, when a flow table contains IP address matches on
3183 both full addresses and proper prefixes, the full address
3184 matches will typically cause the datapath flow to un-wildcard
3185 the whole address field (depending on flow entry priorities).
3186 In this case each packet with a different address gets handed
3187 to the userspace for flow processing and generates its own
3188 datapath flow. With prefix tracking enabled for the address
3189 field in question packets with addresses matching shorter
3190 prefixes would generate datapath flows where the irrelevant
3191 address bits are wildcarded, allowing the same datapath flow
3192 to handle all the packets within the prefix in question. In
3193 this case many userspace upcalls can be avoided and the
3194 overall performance can be better.
3195 </p>
3196 <p>
3197 This is a performance optimization only, so packets will
3198 receive the same treatment with or without prefix tracking.
3199 </p>
3200 <p>
3201 The supported fields are: <code>tun_id</code>,
3202 <code>tun_src</code>, <code>tun_dst</code>,
3203 <code>nw_src</code>, <code>nw_dst</code> (or aliases
3204 <code>ip_src</code> and <code>ip_dst</code>),
3205 <code>ipv6_src</code>, and <code>ipv6_dst</code>. (Using this
3206 feature for <code>tun_id</code> would only make sense if the
3207 tunnel IDs have prefix structure similar to IP addresses.)
3208 </p>
3209
3210 <p>
3211 By default, the <code>prefixes=ip_dst,ip_src</code> are used
3212 on each flow table. This instructs the flow classifier to
3213 track the IP destination and source addresses used by the
3214 rules in this specific flow table.
3215 </p>
3216
3217 <p>
3218 The keyword <code>none</code> is recognized as an explicit
3219 override of the default values, causing no prefix fields to be
3220 tracked.
3221 </p>
3222
3223 <p>
3224 To set the prefix fields, the flow table record needs to
3225 exist:
3226 </p>
3227
3228 <dl>
3229 <dt><code>ovs-vsctl set Bridge br0 flow_tables:0=@N1 -- --id=@N1 create Flow_Table name=table0</code></dt>
3230 <dd>
3231 Creates a flow table record for the OpenFlow table number 0.
3232 </dd>
3233
3234 <dt><code>ovs-vsctl set Flow_Table table0 prefixes=ip_dst,ip_src</code></dt>
3235 <dd>
3236 Enables prefix tracking for IP source and destination
3237 address fields.
3238 </dd>
3239 </dl>
3240
3241 <p>
3242 There is a maximum number of fields that can be enabled for any
3243 one flow table. Currently this limit is 3.
3244 </p>
3245 </column>
3246 </group>
3247
3248 <group title="Common Columns">
3249 The overall purpose of these columns is described under <code>Common
3250 Columns</code> at the beginning of this document.
3251
3252 <column name="external_ids"/>
3253 </group>
3254 </table>
3255
3256 <table name="QoS" title="Quality of Service configuration">
3257 <p>Quality of Service (QoS) configuration for each Port that
3258 references it.</p>
3259
3260 <column name="type">
3261 <p>The type of QoS to implement. The currently defined types are
3262 listed below:</p>
3263 <dl>
3264 <dt><code>linux-htb</code></dt>
3265 <dd>
3266 Linux ``hierarchy token bucket'' classifier. See tc-htb(8) (also at
3267 <code>http://linux.die.net/man/8/tc-htb</code>) and the HTB manual
3268 (<code>http://luxik.cdi.cz/~devik/qos/htb/manual/userg.htm</code>)
3269 for information on how this classifier works and how to configure it.
3270 </dd>
3271 </dl>
3272 <dl>
3273 <dt><code>linux-hfsc</code></dt>
3274 <dd>
3275 Linux "Hierarchical Fair Service Curve" classifier.
3276 See <code>http://linux-ip.net/articles/hfsc.en/</code> for
3277 information on how this classifier works.
3278 </dd>
3279 </dl>
3280 <dl>
3281 <dt><code>linux-sfq</code></dt>
3282 <dd>
3283 Linux ``Stochastic Fairness Queueing'' classifier. See
3284 <code>tc-sfq</code>(8) (also at
3285 <code>http://linux.die.net/man/8/tc-sfq</code>) for information on
3286 how this classifier works.
3287 </dd>
3288 </dl>
3289 <dl>
3290 <dt><code>linux-codel</code></dt>
3291 <dd>
3292 Linux ``Controlled Delay'' classifier. See <code>tc-codel</code>(8)
3293 (also at
3294 <code>http://man7.org/linux/man-pages/man8/tc-codel.8.html</code>)
3295 for information on how this classifier works.
3296 </dd>
3297 </dl>
3298 <dl>
3299 <dt><code>linux-fq_codel</code></dt>
3300 <dd>
3301 Linux ``Fair Queuing with Controlled Delay'' classifier. See
3302 <code>tc-fq_codel</code>(8) (also at
3303 <code>http://man7.org/linux/man-pages/man8/tc-fq_codel.8.html</code>)
3304 for information on how this classifier works.
3305 </dd>
3306 </dl>
3307 </column>
3308
3309 <column name="queues">
3310 <p>A map from queue numbers to <ref table="Queue"/> records. The
3311 supported range of queue numbers depend on <ref column="type"/>. The
3312 queue numbers are the same as the <code>queue_id</code> used in
3313 OpenFlow in <code>struct ofp_action_enqueue</code> and other
3314 structures.</p>
3315
3316 <p>
3317 Queue 0 is the ``default queue.'' It is used by OpenFlow output
3318 actions when no specific queue has been set. When no configuration for
3319 queue 0 is present, it is automatically configured as if a <ref
3320 table="Queue"/> record with empty <ref table="Queue" column="dscp"/>
3321 and <ref table="Queue" column="other_config"/> columns had been
3322 specified.
3323 (Before version 1.6, Open vSwitch would leave queue 0 unconfigured in
3324 this case. With some queuing disciplines, this dropped all packets
3325 destined for the default queue.)
3326 </p>
3327 </column>
3328
3329 <group title="Configuration for linux-htb and linux-hfsc">
3330 <p>
3331 The <code>linux-htb</code> and <code>linux-hfsc</code> classes support
3332 the following key-value pair:
3333 </p>
3334
3335 <column name="other_config" key="max-rate" type='{"type": "integer"}'>
3336 Maximum rate shared by all queued traffic, in bit/s. Optional. If not
3337 specified, for physical interfaces, the default is the link rate. For
3338 other interfaces or if the link rate cannot be determined, the default
3339 is currently 100 Mbps.
3340 </column>
3341 </group>
3342
3343 <group title="Common Columns">
3344 The overall purpose of these columns is described under <code>Common
3345 Columns</code> at the beginning of this document.
3346
3347 <column name="other_config"/>
3348 <column name="external_ids"/>
3349 </group>
3350 </table>
3351
3352 <table name="Queue" title="QoS output queue.">
3353 <p>A configuration for a port output queue, used in configuring Quality of
3354 Service (QoS) features. May be referenced by <ref column="queues"
3355 table="QoS"/> column in <ref table="QoS"/> table.</p>
3356
3357 <column name="dscp">
3358 If set, Open vSwitch will mark all traffic egressing this
3359 <ref table="Queue"/> with the given DSCP bits. Traffic egressing the
3360 default <ref table="Queue"/> is only marked if it was explicitly selected
3361 as the <ref table="Queue"/> at the time the packet was output. If unset,
3362 the DSCP bits of traffic egressing this <ref table="Queue"/> will remain
3363 unchanged.
3364 </column>
3365
3366 <group title="Configuration for linux-htb QoS">
3367 <p>
3368 <ref table="QoS"/> <ref table="QoS" column="type"/>
3369 <code>linux-htb</code> may use <code>queue_id</code>s less than 61440.
3370 It has the following key-value pairs defined.
3371 </p>
3372
3373 <column name="other_config" key="min-rate"
3374 type='{"type": "integer", "minInteger": 1}'>
3375 Minimum guaranteed bandwidth, in bit/s.
3376 </column>
3377
3378 <column name="other_config" key="max-rate"
3379 type='{"type": "integer", "minInteger": 1}'>
3380 Maximum allowed bandwidth, in bit/s. Optional. If specified, the
3381 queue's rate will not be allowed to exceed the specified value, even
3382 if excess bandwidth is available. If unspecified, defaults to no
3383 limit.
3384 </column>
3385
3386 <column name="other_config" key="burst"
3387 type='{"type": "integer", "minInteger": 1}'>
3388 Burst size, in bits. This is the maximum amount of ``credits'' that a
3389 queue can accumulate while it is idle. Optional. Details of the
3390 <code>linux-htb</code> implementation require a minimum burst size, so
3391 a too-small <code>burst</code> will be silently ignored.
3392 </column>
3393
3394 <column name="other_config" key="priority"
3395 type='{"type": "integer", "minInteger": 0, "maxInteger": 4294967295}'>
3396 A queue with a smaller <code>priority</code> will receive all the
3397 excess bandwidth that it can use before a queue with a larger value
3398 receives any. Specific priority values are unimportant; only relative
3399 ordering matters. Defaults to 0 if unspecified.
3400 </column>
3401 </group>
3402
3403 <group title="Configuration for linux-hfsc QoS">
3404 <p>
3405 <ref table="QoS"/> <ref table="QoS" column="type"/>
3406 <code>linux-hfsc</code> may use <code>queue_id</code>s less than 61440.
3407 It has the following key-value pairs defined.
3408 </p>
3409
3410 <column name="other_config" key="min-rate"
3411 type='{"type": "integer", "minInteger": 1}'>
3412 Minimum guaranteed bandwidth, in bit/s.
3413 </column>
3414
3415 <column name="other_config" key="max-rate"
3416 type='{"type": "integer", "minInteger": 1}'>
3417 Maximum allowed bandwidth, in bit/s. Optional. If specified, the
3418 queue's rate will not be allowed to exceed the specified value, even if
3419 excess bandwidth is available. If unspecified, defaults to no
3420 limit.
3421 </column>
3422 </group>
3423
3424 <group title="Common Columns">
3425 The overall purpose of these columns is described under <code>Common
3426 Columns</code> at the beginning of this document.
3427
3428 <column name="other_config"/>
3429 <column name="external_ids"/>
3430 </group>
3431 </table>
3432
3433 <table name="Mirror" title="Port mirroring.">
3434 <p>A port mirror within a <ref table="Bridge"/>.</p>
3435 <p>A port mirror configures a bridge to send selected frames to special
3436 ``mirrored'' ports, in addition to their normal destinations. Mirroring
3437 traffic may also be referred to as SPAN or RSPAN, depending on how
3438 the mirrored traffic is sent.</p>
3439
3440 <p>
3441 When a packet enters an Open vSwitch bridge, it becomes eligible for
3442 mirroring based on its ingress port and VLAN. As the packet travels
3443 through the flow tables, each time it is output to a port, it becomes
3444 eligible for mirroring based on the egress port and VLAN. In Open
3445 vSwitch 2.5 and later, mirroring occurs just after a packet first becomes
3446 eligible, using the packet as it exists at that point; in Open vSwitch
3447 2.4 and earlier, mirroring occurs only after a packet has traversed all
3448 the flow tables, using the original packet as it entered the bridge.
3449 This makes a difference only when the flow table modifies the packet: in
3450 Open vSwitch 2.4, the modifications are never visible to mirrors, whereas
3451 in Open vSwitch 2.5 and later modifications made before the first output
3452 that makes it eligible for mirroring to a particular destination are
3453 visible.
3454 </p>
3455
3456 <p>
3457 A packet that enters an Open vSwitch bridge is mirrored to a particular
3458 destination only once, even if it is eligible for multiple reasons. For
3459 example, a packet would be mirrored to a particular <ref
3460 column="output_port"/> only once, even if it is selected for mirroring to
3461 that port by <ref column="select_dst_port"/> and <ref
3462 column="select_src_port"/> in the same or different <ref table="Mirror"/>
3463 records.
3464 </p>
3465
3466 <column name="name">
3467 Arbitrary identifier for the <ref table="Mirror"/>.
3468 </column>
3469
3470 <group title="Selecting Packets for Mirroring">
3471 <p>
3472 To be selected for mirroring, a given packet must enter or leave the
3473 bridge through a selected port and it must also be in one of the
3474 selected VLANs.
3475 </p>
3476
3477 <column name="select_all">
3478 If true, every packet arriving or departing on any port is
3479 selected for mirroring.
3480 </column>
3481
3482 <column name="select_dst_port">
3483 Ports on which departing packets are selected for mirroring.
3484 </column>
3485
3486 <column name="select_src_port">
3487 Ports on which arriving packets are selected for mirroring.
3488 </column>
3489
3490 <column name="select_vlan">
3491 VLANs on which packets are selected for mirroring. An empty set
3492 selects packets on all VLANs.
3493 </column>
3494 </group>
3495
3496 <group title="Mirroring Destination Configuration">
3497 <p>
3498 These columns are mutually exclusive. Exactly one of them must be
3499 nonempty.
3500 </p>
3501
3502 <column name="output_port">
3503 <p>Output port for selected packets, if nonempty.</p>
3504 <p>Specifying a port for mirror output reserves that port exclusively
3505 for mirroring. No frames other than those selected for mirroring
3506 via this column
3507 will be forwarded to the port, and any frames received on the port
3508 will be discarded.</p>
3509 <p>
3510 The output port may be any kind of port supported by Open vSwitch.
3511 It may be, for example, a physical port (sometimes called SPAN) or a
3512 GRE tunnel.
3513 </p>
3514 </column>
3515
3516 <column name="output_vlan">
3517 <p>Output VLAN for selected packets, if nonempty.</p>
3518 <p>The frames will be sent out all ports that trunk
3519 <ref column="output_vlan"/>, as well as any ports with implicit VLAN
3520 <ref column="output_vlan"/>. When a mirrored frame is sent out a
3521 trunk port, the frame's VLAN tag will be set to
3522 <ref column="output_vlan"/>, replacing any existing tag; when it is
3523 sent out an implicit VLAN port, the frame will not be tagged. This
3524 type of mirroring is sometimes called RSPAN.</p>
3525 <p>
3526 See the documentation for
3527 <ref column="other_config" key="forward-bpdu"/> in the
3528 <ref table="Interface"/> table for a list of destination MAC
3529 addresses which will not be mirrored to a VLAN to avoid confusing
3530 switches that interpret the protocols that they represent.
3531 </p>
3532 <p><em>Please note:</em> Mirroring to a VLAN can disrupt a network that
3533 contains unmanaged switches. Consider an unmanaged physical switch
3534 with two ports: port 1, connected to an end host, and port 2,
3535 connected to an Open vSwitch configured to mirror received packets
3536 into VLAN 123 on port 2. Suppose that the end host sends a packet on
3537 port 1 that the physical switch forwards to port 2. The Open vSwitch
3538 forwards this packet to its destination and then reflects it back on
3539 port 2 in VLAN 123. This reflected packet causes the unmanaged
3540 physical switch to replace the MAC learning table entry, which
3541 correctly pointed to port 1, with one that incorrectly points to port
3542 2. Afterward, the physical switch will direct packets destined for
3543 the end host to the Open vSwitch on port 2, instead of to the end
3544 host on port 1, disrupting connectivity. If mirroring to a VLAN is
3545 desired in this scenario, then the physical switch must be replaced
3546 by one that learns Ethernet addresses on a per-VLAN basis. In
3547 addition, learning should be disabled on the VLAN containing mirrored
3548 traffic. If this is not done then intermediate switches will learn
3549 the MAC address of each end host from the mirrored traffic. If
3550 packets being sent to that end host are also mirrored, then they will
3551 be dropped since the switch will attempt to send them out the input
3552 port. Disabling learning for the VLAN will cause the switch to
3553 correctly send the packet out all ports configured for that VLAN. If
3554 Open vSwitch is being used as an intermediate switch, learning can be
3555 disabled by adding the mirrored VLAN to <ref column="flood_vlans"/>
3556 in the appropriate <ref table="Bridge"/> table or tables.</p>
3557 <p>
3558 Mirroring to a GRE tunnel has fewer caveats than mirroring to a
3559 VLAN and should generally be preferred.
3560 </p>
3561 </column>
3562 </group>
3563
3564 <group title="Statistics: Mirror counters">
3565 <p>
3566 Key-value pairs that report mirror statistics. The update period
3567 is controlled by <ref column="other_config"
3568 key="stats-update-interval"/> in the <code>Open_vSwitch</code> table.
3569 </p>
3570 <column name="statistics" key="tx_packets">
3571 Number of packets transmitted through this mirror.
3572 </column>
3573 <column name="statistics" key="tx_bytes">
3574 Number of bytes transmitted through this mirror.
3575 </column>
3576 </group>
3577
3578 <group title="Common Columns">
3579 The overall purpose of these columns is described under <code>Common
3580 Columns</code> at the beginning of this document.
3581
3582 <column name="external_ids"/>
3583 </group>
3584 </table>
3585
3586 <table name="Controller" title="OpenFlow controller configuration.">
3587 <p>An OpenFlow controller.</p>
3588
3589 <p>
3590 Open vSwitch supports two kinds of OpenFlow controllers:
3591 </p>
3592
3593 <dl>
3594 <dt>Primary controllers</dt>
3595 <dd>
3596 <p>
3597 This is the kind of controller envisioned by the OpenFlow 1.0
3598 specification. Usually, a primary controller implements a network
3599 policy by taking charge of the switch's flow table.
3600 </p>
3601
3602 <p>
3603 Open vSwitch initiates and maintains persistent connections to
3604 primary controllers, retrying the connection each time it fails or
3605 drops. The <ref table="Bridge" column="fail_mode"/> column in the
3606 <ref table="Bridge"/> table applies to primary controllers.
3607 </p>
3608
3609 <p>
3610 Open vSwitch permits a bridge to have any number of primary
3611 controllers. When multiple controllers are configured, Open
3612 vSwitch connects to all of them simultaneously. Because
3613 OpenFlow 1.0 does not specify how multiple controllers
3614 coordinate in interacting with a single switch, more than
3615 one primary controller should be specified only if the
3616 controllers are themselves designed to coordinate with each
3617 other. (The Nicira-defined <code>NXT_ROLE</code> OpenFlow
3618 vendor extension may be useful for this.)
3619 </p>
3620 </dd>
3621 <dt>Service controllers</dt>
3622 <dd>
3623 <p>
3624 These kinds of OpenFlow controller connections are intended for
3625 occasional support and maintenance use, e.g. with
3626 <code>ovs-ofctl</code>. Usually a service controller connects only
3627 briefly to inspect or modify some of a switch's state.
3628 </p>
3629
3630 <p>
3631 Open vSwitch listens for incoming connections from service
3632 controllers. The service controllers initiate and, if necessary,
3633 maintain the connections from their end. The <ref table="Bridge"
3634 column="fail_mode"/> column in the <ref table="Bridge"/> table does
3635 not apply to service controllers.
3636 </p>
3637
3638 <p>
3639 Open vSwitch supports configuring any number of service controllers.
3640 </p>
3641 </dd>
3642 </dl>
3643
3644 <p>
3645 The <ref column="target"/> determines the type of controller.
3646 </p>
3647
3648 <group title="Core Features">
3649 <column name="target">
3650 <p>Connection method for controller.</p>
3651 <p>
3652 The following connection methods are currently supported for primary
3653 controllers:
3654 </p>
3655 <dl>
3656 <dt><code>ssl:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
3657 <dd>
3658 <p>The specified SSL <var>port</var> on the host at the
3659 given <var>ip</var>, which must be expressed as an IP
3660 address (not a DNS name). The <ref table="Open_vSwitch"
3661 column="ssl"/> column in the <ref table="Open_vSwitch"/>
3662 table must point to a valid SSL configuration when this form
3663 is used.</p>
3664 <p>If <var>port</var> is not specified, it defaults to 6653.</p>
3665 <p>SSL support is an optional feature that is not always built as
3666 part of Open vSwitch.</p>
3667 </dd>
3668 <dt><code>tcp:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
3669 <dd>
3670 <p>
3671 The specified TCP <var>port</var> on the host at the given
3672 <var>ip</var>, which must be expressed as an IP address (not a
3673 DNS name), where <var>ip</var> can be IPv4 or IPv6 address. If
3674 <var>ip</var> is an IPv6 address, wrap it in square brackets,
3675 e.g. <code>tcp:[::1]:6653</code>.
3676 </p>
3677 <p>
3678 If <var>port</var> is not specified, it defaults to 6653.
3679 </p>
3680 </dd>
3681 </dl>
3682 <p>
3683 The following connection methods are currently supported for service
3684 controllers:
3685 </p>
3686 <dl>
3687 <dt><code>pssl:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
3688 <dd>
3689 <p>
3690 Listens for SSL connections on the specified TCP <var>port</var>.
3691 If <var>ip</var>, which must be expressed as an IP address (not a
3692 DNS name), is specified, then connections are restricted to the
3693 specified local IP address (either IPv4 or IPv6). If
3694 <var>ip</var> is an IPv6 address, wrap it in square brackets,
3695 e.g. <code>pssl:6653:[::1]</code>.
3696 </p>
3697 <p>
3698 If <var>port</var> is not specified, it defaults to
3699 6653. If <var>ip</var> is not specified then it listens only on
3700 IPv4 (but not IPv6) addresses. The
3701 <ref table="Open_vSwitch" column="ssl"/>
3702 column in the <ref table="Open_vSwitch"/> table must point to a
3703 valid SSL configuration when this form is used.
3704 </p>
3705 <p>
3706 If <var>port</var> is not specified, it currently to 6653.
3707 </p>
3708 <p>
3709 SSL support is an optional feature that is not always built as
3710 part of Open vSwitch.
3711 </p>
3712 </dd>
3713 <dt><code>ptcp:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
3714 <dd>
3715 <p>
3716 Listens for connections on the specified TCP <var>port</var>. If
3717 <var>ip</var>, which must be expressed as an IP address (not a
3718 DNS name), is specified, then connections are restricted to the
3719 specified local IP address (either IPv4 or IPv6). If
3720 <var>ip</var> is an IPv6 address, wrap it in square brackets,
3721 e.g. <code>ptcp:6653:[::1]</code>. If <var>ip</var> is not
3722 specified then it listens only on IPv4 addresses.
3723 </p>
3724 <p>
3725 If <var>port</var> is not specified, it defaults to 6653.
3726 </p>
3727 </dd>
3728 </dl>
3729 <p>When multiple controllers are configured for a single bridge, the
3730 <ref column="target"/> values must be unique. Duplicate
3731 <ref column="target"/> values yield unspecified results.</p>
3732 </column>
3733
3734 <column name="connection_mode">
3735 <p>If it is specified, this setting must be one of the following
3736 strings that describes how Open vSwitch contacts this OpenFlow
3737 controller over the network:</p>
3738
3739 <dl>
3740 <dt><code>in-band</code></dt>
3741 <dd>In this mode, this controller's OpenFlow traffic travels over the
3742 bridge associated with the controller. With this setting, Open
3743 vSwitch allows traffic to and from the controller regardless of the
3744 contents of the OpenFlow flow table. (Otherwise, Open vSwitch
3745 would never be able to connect to the controller, because it did
3746 not have a flow to enable it.) This is the most common connection
3747 mode because it is not necessary to maintain two independent
3748 networks.</dd>
3749 <dt><code>out-of-band</code></dt>
3750 <dd>In this mode, OpenFlow traffic uses a control network separate
3751 from the bridge associated with this controller, that is, the
3752 bridge does not use any of its own network devices to communicate
3753 with the controller. The control network must be configured
3754 separately, before or after <code>ovs-vswitchd</code> is started.
3755 </dd>
3756 </dl>
3757
3758 <p>If not specified, the default is implementation-specific.</p>
3759 </column>
3760 </group>
3761
3762 <group title="Controller Failure Detection and Handling">
3763 <column name="max_backoff">
3764 Maximum number of milliseconds to wait between connection attempts.
3765 Default is implementation-specific.
3766 </column>
3767
3768 <column name="inactivity_probe">
3769 Maximum number of milliseconds of idle time on connection to
3770 controller before sending an inactivity probe message. If Open
3771 vSwitch does not communicate with the controller for the specified
3772 number of seconds, it will send a probe. If a response is not
3773 received for the same additional amount of time, Open vSwitch
3774 assumes the connection has been broken and attempts to reconnect.
3775 Default is implementation-specific. A value of 0 disables
3776 inactivity probes.
3777 </column>
3778 </group>
3779
3780 <group title="Asynchronous Messages">
3781 <p>
3782 OpenFlow switches send certain messages to controllers spontanenously,
3783 that is, not in response to any request from the controller. These
3784 messages are called ``asynchronous messages.'' These columns allow
3785 asynchronous messages to be limited or disabled to ensure the best use
3786 of network resources.
3787 </p>
3788
3789 <column name="enable_async_messages">
3790 The OpenFlow protocol enables asynchronous messages at time of
3791 connection establishment, which means that a controller can receive
3792 asynchronous messages, potentially many of them, even if it turns them
3793 off immediately after connecting. Set this column to
3794 <code>false</code> to change Open vSwitch behavior to disable, by
3795 default, all asynchronous messages. The controller can use the
3796 <code>NXT_SET_ASYNC_CONFIG</code> Nicira extension to OpenFlow to turn
3797 on any messages that it does want to receive, if any.
3798 </column>
3799
3800 <group title="Controller Rate Limiting">
3801 <p>
3802 A switch can forward packets to a controller over the OpenFlow
3803 protocol. Forwarding packets this way at too high a rate can
3804 overwhelm a controller, frustrate use of the OpenFlow connection for
3805 other purposes, increase the latency of flow setup, and use an
3806 unreasonable amount of bandwidth. Therefore, Open vSwitch supports
3807 limiting the rate of packet forwarding to a controller.
3808 </p>
3809
3810 <p>
3811 There are two main reasons in OpenFlow for a packet to be sent to a
3812 controller: either the packet ``misses'' in the flow table, that is,
3813 there is no matching flow, or a flow table action says to send the
3814 packet to the controller. Open vSwitch limits the rate of each kind
3815 of packet separately at the configured rate. Therefore, the actual
3816 rate that packets are sent to the controller can be up to twice the
3817 configured rate, when packets are sent for both reasons.
3818 </p>
3819
3820 <p>
3821 This feature is specific to forwarding packets over an OpenFlow
3822 connection. It is not general-purpose QoS. See the <ref
3823 table="QoS"/> table for quality of service configuration, and <ref
3824 column="ingress_policing_rate" table="Interface"/> in the <ref
3825 table="Interface"/> table for ingress policing configuration.
3826 </p>
3827
3828 <column name="controller_rate_limit">
3829 <p>
3830 The maximum rate at which the switch will forward packets to the
3831 OpenFlow controller, in packets per second. If no value is
3832 specified, rate limiting is disabled.
3833 </p>
3834 </column>
3835
3836 <column name="controller_burst_limit">
3837 <p>
3838 When a high rate triggers rate-limiting, Open vSwitch queues
3839 packets to the controller for each port and transmits them to the
3840 controller at the configured rate. This value limits the number of
3841 queued packets. Ports on a bridge share the packet queue fairly.
3842 </p>
3843
3844 <p>
3845 This value has no effect unless <ref
3846 column="controller_rate_limit"/> is configured. The current
3847 default when this value is not specified is one-quarter of <ref
3848 column="controller_rate_limit"/>, meaning that queuing can delay
3849 forwarding a packet to the controller by up to 250 ms.
3850 </p>
3851 </column>
3852
3853 <group title="Controller Rate Limiting Statistics">
3854 <p>
3855 These values report the effects of rate limiting. Their values are
3856 relative to establishment of the most recent OpenFlow connection,
3857 or since rate limiting was enabled, whichever happened more
3858 recently. Each consists of two values, one with <code>TYPE</code>
3859 replaced by <code>miss</code> for rate limiting flow table misses,
3860 and the other with <code>TYPE</code> replaced by
3861 <code>action</code> for rate limiting packets sent by OpenFlow
3862 actions.
3863 </p>
3864
3865 <p>
3866 These statistics are reported only when controller rate limiting is
3867 enabled.
3868 </p>
3869
3870 <column name="status" key="packet-in-TYPE-bypassed"
3871 type='{"type": "integer", "minInteger": 0}'>
3872 Number of packets sent directly to the controller, without queuing,
3873 because the rate did not exceed the configured maximum.
3874 </column>
3875
3876 <column name="status" key="packet-in-TYPE-queued"
3877 type='{"type": "integer", "minInteger": 0}'>
3878 Number of packets added to the queue to send later.
3879 </column>
3880
3881 <column name="status" key="packet-in-TYPE-dropped"
3882 type='{"type": "integer", "minInteger": 0}'>
3883 Number of packets added to the queue that were later dropped due to
3884 overflow. This value is less than or equal to <ref column="status"
3885 key="packet-in-TYPE-queued"/>.
3886 </column>
3887
3888 <column name="status" key="packet-in-TYPE-backlog"
3889 type='{"type": "integer", "minInteger": 0}'>
3890 Number of packets currently queued. The other statistics increase
3891 monotonically, but this one fluctuates between 0 and the <ref
3892 column="controller_burst_limit"/> as conditions change.
3893 </column>
3894 </group>
3895 </group>
3896 </group>
3897
3898 <group title="Additional In-Band Configuration">
3899 <p>These values are considered only in in-band control mode (see
3900 <ref column="connection_mode"/>).</p>
3901
3902 <p>When multiple controllers are configured on a single bridge, there
3903 should be only one set of unique values in these columns. If different
3904 values are set for these columns in different controllers, the effect
3905 is unspecified.</p>
3906
3907 <column name="local_ip">
3908 The IP address to configure on the local port,
3909 e.g. <code>192.168.0.123</code>. If this value is unset, then
3910 <ref column="local_netmask"/> and <ref column="local_gateway"/> are
3911 ignored.
3912 </column>
3913
3914 <column name="local_netmask">
3915 The IP netmask to configure on the local port,
3916 e.g. <code>255.255.255.0</code>. If <ref column="local_ip"/> is set
3917 but this value is unset, then the default is chosen based on whether
3918 the IP address is class A, B, or C.
3919 </column>
3920
3921 <column name="local_gateway">
3922 The IP address of the gateway to configure on the local port, as a
3923 string, e.g. <code>192.168.0.1</code>. Leave this column unset if
3924 this network has no gateway.
3925 </column>
3926 </group>
3927
3928 <group title="Controller Status">
3929 <column name="is_connected">
3930 <code>true</code> if currently connected to this controller,
3931 <code>false</code> otherwise.
3932 </column>
3933
3934 <column name="role"
3935 type='{"type": "string", "enum": ["set", ["other", "master", "slave"]]}'>
3936 <p>The level of authority this controller has on the associated
3937 bridge. Possible values are:</p>
3938 <dl>
3939 <dt><code>other</code></dt>
3940 <dd>Allows the controller access to all OpenFlow features.</dd>
3941 <dt><code>master</code></dt>
3942 <dd>Equivalent to <code>other</code>, except that there may be at
3943 most one master controller at a time. When a controller configures
3944 itself as <code>master</code>, any existing master is demoted to
3945 the <code>slave</code> role.</dd>
3946 <dt><code>slave</code></dt>
3947 <dd>Allows the controller read-only access to OpenFlow features.
3948 Attempts to modify the flow table will be rejected with an
3949 error. Slave controllers do not receive OFPT_PACKET_IN or
3950 OFPT_FLOW_REMOVED messages, but they do receive OFPT_PORT_STATUS
3951 messages.</dd>
3952 </dl>
3953 </column>
3954
3955 <column name="status" key="last_error">
3956 A human-readable description of the last error on the connection
3957 to the controller; i.e. <code>strerror(errno)</code>. This key
3958 will exist only if an error has occurred.
3959 </column>
3960
3961 <column name="status" key="state"
3962 type='{"type": "string", "enum": ["set", ["VOID", "BACKOFF", "CONNECTING", "ACTIVE", "IDLE"]]}'>
3963 <p>
3964 The state of the connection to the controller:
3965 </p>
3966 <dl>
3967 <dt><code>VOID</code></dt>
3968 <dd>Connection is disabled.</dd>
3969
3970 <dt><code>BACKOFF</code></dt>
3971 <dd>Attempting to reconnect at an increasing period.</dd>
3972
3973 <dt><code>CONNECTING</code></dt>
3974 <dd>Attempting to connect.</dd>
3975
3976 <dt><code>ACTIVE</code></dt>
3977 <dd>Connected, remote host responsive.</dd>
3978
3979 <dt><code>IDLE</code></dt>
3980 <dd>Connection is idle. Waiting for response to keep-alive.</dd>
3981 </dl>
3982 <p>
3983 These values may change in the future. They are provided only for
3984 human consumption.
3985 </p>
3986 </column>
3987
3988 <column name="status" key="sec_since_connect"
3989 type='{"type": "integer", "minInteger": 0}'>
3990 The amount of time since this controller last successfully connected to
3991 the switch (in seconds). Value is empty if controller has never
3992 successfully connected.
3993 </column>
3994
3995 <column name="status" key="sec_since_disconnect"
3996 type='{"type": "integer", "minInteger": 1}'>
3997 The amount of time since this controller last disconnected from
3998 the switch (in seconds). Value is empty if controller has never
3999 disconnected.
4000 </column>
4001 </group>
4002
4003 <group title="Connection Parameters">
4004 <p>
4005 Additional configuration for a connection between the controller
4006 and the Open vSwitch.
4007 </p>
4008
4009 <column name="other_config" key="dscp"
4010 type='{"type": "integer"}'>
4011 The Differentiated Service Code Point (DSCP) is specified using 6 bits
4012 in the Type of Service (TOS) field in the IP header. DSCP provides a
4013 mechanism to classify the network traffic and provide Quality of
4014 Service (QoS) on IP networks.
4015
4016 The DSCP value specified here is used when establishing the connection
4017 between the controller and the Open vSwitch. If no value is specified,
4018 a default value of 48 is chosen. Valid DSCP values must be in the
4019 range 0 to 63.
4020 </column>
4021 </group>
4022
4023
4024 <group title="Common Columns">
4025 The overall purpose of these columns is described under <code>Common
4026 Columns</code> at the beginning of this document.
4027
4028 <column name="external_ids"/>
4029 <column name="other_config"/>
4030 </group>
4031 </table>
4032
4033 <table name="Manager" title="OVSDB management connection.">
4034 <p>
4035 Configuration for a database connection to an Open vSwitch database
4036 (OVSDB) client.
4037 </p>
4038
4039 <p>
4040 This table primarily configures the Open vSwitch database
4041 (<code>ovsdb-server</code>), not the Open vSwitch switch
4042 (<code>ovs-vswitchd</code>). The switch does read the table to determine
4043 what connections should be treated as in-band.
4044 </p>
4045
4046 <p>
4047 The Open vSwitch database server can initiate and maintain active
4048 connections to remote clients. It can also listen for database
4049 connections.
4050 </p>
4051
4052 <group title="Core Features">
4053 <column name="target">
4054 <p>Connection method for managers.</p>
4055 <p>
4056 The following connection methods are currently supported:
4057 </p>
4058 <dl>
4059 <dt><code>ssl:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
4060 <dd>
4061 <p>
4062 The specified SSL <var>port</var> on the host at the given
4063 <var>ip</var>, which must be expressed as an IP address
4064 (not a DNS name). The <ref table="Open_vSwitch"
4065 column="ssl"/> column in the <ref table="Open_vSwitch"/>
4066 table must point to a valid SSL configuration when this
4067 form is used.
4068 </p>
4069 <p>
4070 If <var>port</var> is not specified, it defaults to 6640.
4071 </p>
4072 <p>
4073 SSL support is an optional feature that is not always
4074 built as part of Open vSwitch.
4075 </p>
4076 </dd>
4077
4078 <dt><code>tcp:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
4079 <dd>
4080 <p>
4081 The specified TCP <var>port</var> on the host at the given
4082 <var>ip</var>, which must be expressed as an IP address (not a
4083 DNS name), where <var>ip</var> can be IPv4 or IPv6 address. If
4084 <var>ip</var> is an IPv6 address, wrap it in square brackets,
4085 e.g. <code>tcp:[::1]:6640</code>.
4086 </p>
4087 <p>
4088 If <var>port</var> is not specified, it defaults to 6640.
4089 </p>
4090 </dd>
4091 <dt><code>pssl:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
4092 <dd>
4093 <p>
4094 Listens for SSL connections on the specified TCP <var>port</var>.
4095 Specify 0 for <var>port</var> to have the kernel automatically
4096 choose an available port. If <var>ip</var>, which must be
4097 expressed as an IP address (not a DNS name), is specified, then
4098 connections are restricted to the specified local IP address
4099 (either IPv4 or IPv6 address). If <var>ip</var> is an IPv6
4100 address, wrap in square brackets,
4101 e.g. <code>pssl:6640:[::1]</code>. If <var>ip</var> is not
4102 specified then it listens only on IPv4 (but not IPv6) addresses.
4103 The <ref table="Open_vSwitch" column="ssl"/> column in the <ref
4104 table="Open_vSwitch"/> table must point to a valid SSL
4105 configuration when this form is used.
4106 </p>
4107 <p>
4108 If <var>port</var> is not specified, it defaults to 6640.
4109 </p>
4110 <p>
4111 SSL support is an optional feature that is not always built as
4112 part of Open vSwitch.
4113 </p>
4114 </dd>
4115 <dt><code>ptcp:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
4116 <dd>
4117 <p>
4118 Listens for connections on the specified TCP <var>port</var>.
4119 Specify 0 for <var>port</var> to have the kernel automatically
4120 choose an available port. If <var>ip</var>, which must be
4121 expressed as an IP address (not a DNS name), is specified, then
4122 connections are restricted to the specified local IP address
4123 (either IPv4 or IPv6 address). If <var>ip</var> is an IPv6
4124 address, wrap it in square brackets,
4125 e.g. <code>ptcp:6640:[::1]</code>. If <var>ip</var> is not
4126 specified then it listens only on IPv4 addresses.
4127 </p>
4128 <p>
4129 If <var>port</var> is not specified, it defaults to 6640.
4130 </p>
4131 </dd>
4132 </dl>
4133 <p>When multiple managers are configured, the <ref column="target"/>
4134 values must be unique. Duplicate <ref column="target"/> values yield
4135 unspecified results.</p>
4136 </column>
4137
4138 <column name="connection_mode">
4139 <p>
4140 If it is specified, this setting must be one of the following strings
4141 that describes how Open vSwitch contacts this OVSDB client over the
4142 network:
4143 </p>
4144
4145 <dl>
4146 <dt><code>in-band</code></dt>
4147 <dd>
4148 In this mode, this connection's traffic travels over a bridge
4149 managed by Open vSwitch. With this setting, Open vSwitch allows
4150 traffic to and from the client regardless of the contents of the
4151 OpenFlow flow table. (Otherwise, Open vSwitch would never be able
4152 to connect to the client, because it did not have a flow to enable
4153 it.) This is the most common connection mode because it is not
4154 necessary to maintain two independent networks.
4155 </dd>
4156 <dt><code>out-of-band</code></dt>
4157 <dd>
4158 In this mode, the client's traffic uses a control network separate
4159 from that managed by Open vSwitch, that is, Open vSwitch does not
4160 use any of its own network devices to communicate with the client.
4161 The control network must be configured separately, before or after
4162 <code>ovs-vswitchd</code> is started.
4163 </dd>
4164 </dl>
4165
4166 <p>
4167 If not specified, the default is implementation-specific.
4168 </p>
4169 </column>
4170 </group>
4171
4172 <group title="Client Failure Detection and Handling">
4173 <column name="max_backoff">
4174 Maximum number of milliseconds to wait between connection attempts.
4175 Default is implementation-specific.
4176 </column>
4177
4178 <column name="inactivity_probe">
4179 Maximum number of milliseconds of idle time on connection to the client
4180 before sending an inactivity probe message. If Open vSwitch does not
4181 communicate with the client for the specified number of seconds, it
4182 will send a probe. If a response is not received for the same
4183 additional amount of time, Open vSwitch assumes the connection has been
4184 broken and attempts to reconnect. Default is implementation-specific.
4185 A value of 0 disables inactivity probes.
4186 </column>
4187 </group>
4188
4189 <group title="Status">
4190 <column name="is_connected">
4191 <code>true</code> if currently connected to this manager,
4192 <code>false</code> otherwise.
4193 </column>
4194
4195 <column name="status" key="last_error">
4196 A human-readable description of the last error on the connection
4197 to the manager; i.e. <code>strerror(errno)</code>. This key
4198 will exist only if an error has occurred.
4199 </column>
4200
4201 <column name="status" key="state"
4202 type='{"type": "string", "enum": ["set", ["VOID", "BACKOFF", "CONNECTING", "ACTIVE", "IDLE"]]}'>
4203 <p>
4204 The state of the connection to the manager:
4205 </p>
4206 <dl>
4207 <dt><code>VOID</code></dt>
4208 <dd>Connection is disabled.</dd>
4209
4210 <dt><code>BACKOFF</code></dt>
4211 <dd>Attempting to reconnect at an increasing period.</dd>
4212
4213 <dt><code>CONNECTING</code></dt>
4214 <dd>Attempting to connect.</dd>
4215
4216 <dt><code>ACTIVE</code></dt>
4217 <dd>Connected, remote host responsive.</dd>
4218
4219 <dt><code>IDLE</code></dt>
4220 <dd>Connection is idle. Waiting for response to keep-alive.</dd>
4221 </dl>
4222 <p>
4223 These values may change in the future. They are provided only for
4224 human consumption.
4225 </p>
4226 </column>
4227
4228 <column name="status" key="sec_since_connect"
4229 type='{"type": "integer", "minInteger": 0}'>
4230 The amount of time since this manager last successfully connected
4231 to the database (in seconds). Value is empty if manager has never
4232 successfully connected.
4233 </column>
4234
4235 <column name="status" key="sec_since_disconnect"
4236 type='{"type": "integer", "minInteger": 0}'>
4237 The amount of time since this manager last disconnected from the
4238 database (in seconds). Value is empty if manager has never
4239 disconnected.
4240 </column>
4241
4242 <column name="status" key="locks_held">
4243 Space-separated list of the names of OVSDB locks that the connection
4244 holds. Omitted if the connection does not hold any locks.
4245 </column>
4246
4247 <column name="status" key="locks_waiting">
4248 Space-separated list of the names of OVSDB locks that the connection is
4249 currently waiting to acquire. Omitted if the connection is not waiting
4250 for any locks.
4251 </column>
4252
4253 <column name="status" key="locks_lost">
4254 Space-separated list of the names of OVSDB locks that the connection
4255 has had stolen by another OVSDB client. Omitted if no locks have been
4256 stolen from this connection.
4257 </column>
4258
4259 <column name="status" key="n_connections"
4260 type='{"type": "integer", "minInteger": 2}'>
4261 <p>
4262 When <ref column="target"/> specifies a connection method that
4263 listens for inbound connections (e.g. <code>ptcp:</code> or
4264 <code>pssl:</code>) and more than one connection is actually active,
4265 the value is the number of active connections. Otherwise, this
4266 key-value pair is omitted.
4267 </p>
4268 <p>
4269 When multiple connections are active, status columns and key-value
4270 pairs (other than this one) report the status of one arbitrarily
4271 chosen connection.
4272 </p>
4273 </column>
4274
4275 <column name="status" key="bound_port" type='{"type": "integer"}'>
4276 When <ref column="target"/> is <code>ptcp:</code> or
4277 <code>pssl:</code>, this is the TCP port on which the OVSDB server is
4278 listening. (This is is particularly useful when <ref
4279 column="target"/> specifies a port of 0, allowing the kernel to
4280 choose any available port.)
4281 </column>
4282 </group>
4283
4284 <group title="Connection Parameters">
4285 <p>
4286 Additional configuration for a connection between the manager
4287 and the Open vSwitch Database.
4288 </p>
4289
4290 <column name="other_config" key="dscp"
4291 type='{"type": "integer"}'>
4292 The Differentiated Service Code Point (DSCP) is specified using 6 bits
4293 in the Type of Service (TOS) field in the IP header. DSCP provides a
4294 mechanism to classify the network traffic and provide Quality of
4295 Service (QoS) on IP networks.
4296
4297 The DSCP value specified here is used when establishing the connection
4298 between the manager and the Open vSwitch. If no value is specified, a
4299 default value of 48 is chosen. Valid DSCP values must be in the range
4300 0 to 63.
4301 </column>
4302 </group>
4303
4304 <group title="Common Columns">
4305 The overall purpose of these columns is described under <code>Common
4306 Columns</code> at the beginning of this document.
4307
4308 <column name="external_ids"/>
4309 <column name="other_config"/>
4310 </group>
4311 </table>
4312
4313 <table name="NetFlow">
4314 A NetFlow target. NetFlow is a protocol that exports a number of
4315 details about terminating IP flows, such as the principals involved
4316 and duration.
4317
4318 <column name="targets">
4319 NetFlow targets in the form
4320 <code><var>ip</var>:<var>port</var></code>. The <var>ip</var>
4321 must be specified numerically, not as a DNS name.
4322 </column>
4323
4324 <column name="engine_id">
4325 Engine ID to use in NetFlow messages. Defaults to datapath index
4326 if not specified.
4327 </column>
4328
4329 <column name="engine_type">
4330 Engine type to use in NetFlow messages. Defaults to datapath
4331 index if not specified.
4332 </column>
4333
4334 <column name="active_timeout">
4335 <p>
4336 The interval at which NetFlow records are sent for flows that
4337 are still active, in seconds. A value of <code>0</code>
4338 requests the default timeout (currently 600 seconds); a value
4339 of <code>-1</code> disables active timeouts.
4340 </p>
4341
4342 <p>
4343 The NetFlow passive timeout, for flows that become inactive,
4344 is not configurable. It will vary depending on the Open
4345 vSwitch version, the forms and contents of the OpenFlow flow
4346 tables, CPU and memory usage, and network activity. A typical
4347 passive timeout is about a second.
4348 </p>
4349 </column>
4350
4351 <column name="add_id_to_interface">
4352 <p>If this column's value is <code>false</code>, the ingress and egress
4353 interface fields of NetFlow flow records are derived from OpenFlow port
4354 numbers. When it is <code>true</code>, the 7 most significant bits of
4355 these fields will be replaced by the least significant 7 bits of the
4356 engine id. This is useful because many NetFlow collectors do not
4357 expect multiple switches to be sending messages from the same host, so
4358 they do not store the engine information which could be used to
4359 disambiguate the traffic.</p>
4360 <p>When this option is enabled, a maximum of 508 ports are supported.</p>
4361 </column>
4362
4363 <group title="Common Columns">
4364 The overall purpose of these columns is described under <code>Common
4365 Columns</code> at the beginning of this document.
4366
4367 <column name="external_ids"/>
4368 </group>
4369 </table>
4370
4371 <table name="SSL">
4372 SSL configuration for an Open_vSwitch.
4373
4374 <column name="private_key">
4375 Name of a PEM file containing the private key used as the switch's
4376 identity for SSL connections to the controller.
4377 </column>
4378
4379 <column name="certificate">
4380 Name of a PEM file containing a certificate, signed by the
4381 certificate authority (CA) used by the controller and manager,
4382 that certifies the switch's private key, identifying a trustworthy
4383 switch.
4384 </column>
4385
4386 <column name="ca_cert">
4387 Name of a PEM file containing the CA certificate used to verify
4388 that the switch is connected to a trustworthy controller.
4389 </column>
4390
4391 <column name="bootstrap_ca_cert">
4392 If set to <code>true</code>, then Open vSwitch will attempt to
4393 obtain the CA certificate from the controller on its first SSL
4394 connection and save it to the named PEM file. If it is successful,
4395 it will immediately drop the connection and reconnect, and from then
4396 on all SSL connections must be authenticated by a certificate signed
4397 by the CA certificate thus obtained. <em>This option exposes the
4398 SSL connection to a man-in-the-middle attack obtaining the initial
4399 CA certificate.</em> It may still be useful for bootstrapping.
4400 </column>
4401
4402 <group title="Common Columns">
4403 The overall purpose of these columns is described under <code>Common
4404 Columns</code> at the beginning of this document.
4405
4406 <column name="external_ids"/>
4407 </group>
4408 </table>
4409
4410 <table name="sFlow">
4411 <p>A set of sFlow(R) targets. sFlow is a protocol for remote
4412 monitoring of switches.</p>
4413
4414 <column name="agent">
4415 Name of the network device whose IP address should be reported as the
4416 ``agent address'' to collectors. If not specified, the agent device is
4417 figured from the first target address and the routing table. If the
4418 routing table does not contain a route to the target, the IP address
4419 defaults to the <ref table="Controller" column="local_ip"/> in the
4420 collector's <ref table="Controller"/>. If an agent IP address cannot be
4421 determined any of these ways, sFlow is disabled.
4422 </column>
4423
4424 <column name="header">
4425 Number of bytes of a sampled packet to send to the collector.
4426 If not specified, the default is 128 bytes.
4427 </column>
4428
4429 <column name="polling">
4430 Polling rate in seconds to send port statistics to the collector.
4431 If not specified, defaults to 30 seconds.
4432 </column>
4433
4434 <column name="sampling">
4435 Rate at which packets should be sampled and sent to the collector.
4436 If not specified, defaults to 400, which means one out of 400
4437 packets, on average, will be sent to the collector.
4438 </column>
4439
4440 <column name="targets">
4441 sFlow targets in the form
4442 <code><var>ip</var>:<var>port</var></code>.
4443 </column>
4444
4445 <group title="Common Columns">
4446 The overall purpose of these columns is described under <code>Common
4447 Columns</code> at the beginning of this document.
4448
4449 <column name="external_ids"/>
4450 </group>
4451 </table>
4452
4453 <table name="IPFIX">
4454 <p>Configuration for sending packets to IPFIX collectors.</p>
4455
4456 <p>
4457 IPFIX is a protocol that exports a number of details about flows. The
4458 IPFIX implementation in Open vSwitch samples packets at a configurable
4459 rate, extracts flow information from those packets, optionally caches and
4460 aggregates the flow information, and sends the result to one or more
4461 collectors.
4462 </p>
4463
4464 <p>
4465 IPFIX in Open vSwitch can be configured two different ways:
4466 </p>
4467
4468 <ul>
4469 <li>
4470 With <em>per-bridge sampling</em>, Open vSwitch performs IPFIX sampling
4471 automatically on all packets that pass through a bridge. To configure
4472 per-bridge sampling, create an <ref table="IPFIX"/> record and point a
4473 <ref table="Bridge"/> table's <ref table="Bridge" column="ipfix"/>
4474 column to it. The <ref table="Flow_Sample_Collector_Set"/> table is
4475 not used for per-bridge sampling.
4476 </li>
4477
4478 <li>
4479 <p>
4480 With <em>flow-based sampling</em>, <code>sample</code> actions in the
4481 OpenFlow flow table drive IPFIX sampling. See
4482 <code>ovs-ofctl</code>(8) for a description of the
4483 <code>sample</code> action.
4484 </p>
4485
4486 <p>
4487 Flow-based sampling also requires database configuration: create a
4488 <ref table="IPFIX"/> record that describes the IPFIX configuration
4489 and a <ref table="Flow_Sample_Collector_Set"/> record that points to
4490 the <ref table="Bridge"/> whose flow table holds the
4491 <code>sample</code> actions and to <ref table="IPFIX"/> record. The
4492 <ref table="Bridge" column="ipfix"/> in the <ref table="Bridge"/>
4493 table is not used for flow-based sampling.
4494 </p>
4495 </li>
4496 </ul>
4497
4498 <column name="targets">
4499 IPFIX target collectors in the form
4500 <code><var>ip</var>:<var>port</var></code>.
4501 </column>
4502
4503 <column name="cache_active_timeout">
4504 The maximum period in seconds for which an IPFIX flow record is
4505 cached and aggregated before being sent. If not specified,
4506 defaults to 0. If 0, caching is disabled.
4507 </column>
4508
4509 <column name="cache_max_flows">
4510 The maximum number of IPFIX flow records that can be cached at a
4511 time. If not specified, defaults to 0. If 0, caching is
4512 disabled.
4513 </column>
4514
4515 <group title="Per-Bridge Sampling">
4516 <p>
4517 These values affect only per-bridge sampling. See above for a
4518 description of the differences between per-bridge and flow-based
4519 sampling.
4520 </p>
4521
4522 <column name="sampling">
4523 The rate at which packets should be sampled and sent to each target
4524 collector. If not specified, defaults to 400, which means one out of
4525 400 packets, on average, will be sent to each target collector.
4526 </column>
4527
4528 <column name="obs_domain_id">
4529 The IPFIX Observation Domain ID sent in each IPFIX packet. If not
4530 specified, defaults to 0.
4531 </column>
4532
4533 <column name="obs_point_id">
4534 The IPFIX Observation Point ID sent in each IPFIX flow record. If not
4535 specified, defaults to 0.
4536 </column>
4537
4538 <column name="other_config" key="enable-tunnel-sampling"
4539 type='{"type": "boolean"}'>
4540 <p>
4541 Set to <code>true</code> to enable sampling and reporting tunnel
4542 header 7-tuples in IPFIX flow records. Tunnel sampling is disabled
4543 by default.
4544 </p>
4545
4546 <p>
4547 The following enterprise entities report the sampled tunnel info:
4548 </p>
4549
4550 <dl>
4551 <dt>tunnelType:</dt>
4552 <dd>
4553 <p>ID: 891, and enterprise ID 6876 (VMware).</p>
4554 <p>type: unsigned 8-bit integer.</p>
4555 <p>data type semantics: identifier.</p>
4556 <p>description: Identifier of the layer 2 network overlay network
4557 encapsulation type: 0x01 VxLAN, 0x02 GRE, 0x03 LISP, 0x05 IPsec+GRE,
4558 0x07 GENEVE.</p>
4559 </dd>
4560 <dt>tunnelKey:</dt>
4561 <dd>
4562 <p>ID: 892, and enterprise ID 6876 (VMware).</p>
4563 <p>type: variable-length octetarray.</p>
4564 <p>data type semantics: identifier.</p>
4565 <p>description: Key which is used for identifying an individual
4566 traffic flow within a VxLAN (24-bit VNI), GENEVE (24-bit VNI),
4567 GRE (32-bit key), or LISP (24-bit instance ID) tunnel. The
4568 key is encoded in this octetarray as a 3-, 4-, or 8-byte integer
4569 ID in network byte order.</p>
4570 </dd>
4571 <dt>tunnelSourceIPv4Address:</dt>
4572 <dd>
4573 <p>ID: 893, and enterprise ID 6876 (VMware).</p>
4574 <p>type: unsigned 32-bit integer.</p>
4575 <p>data type semantics: identifier.</p>
4576 <p>description: The IPv4 source address in the tunnel IP packet
4577 header.</p>
4578 </dd>
4579 <dt>tunnelDestinationIPv4Address:</dt>
4580 <dd>
4581 <p>ID: 894, and enterprise ID 6876 (VMware).</p>
4582 <p>type: unsigned 32-bit integer.</p>
4583 <p>data type semantics: identifier.</p>
4584 <p>description: The IPv4 destination address in the tunnel IP
4585 packet header.</p>
4586 </dd>
4587 <dt>tunnelProtocolIdentifier:</dt>
4588 <dd>
4589 <p>ID: 895, and enterprise ID 6876 (VMware).</p>
4590 <p>type: unsigned 8-bit integer.</p>
4591 <p>data type semantics: identifier.</p>
4592 <p>description: The value of the protocol number in the tunnel
4593 IP packet header. The protocol number identifies the tunnel IP
4594 packet payload type.</p>
4595 </dd>
4596 <dt>tunnelSourceTransportPort:</dt>
4597 <dd>
4598 <p>ID: 896, and enterprise ID 6876 (VMware).</p>
4599 <p>type: unsigned 16-bit integer.</p>
4600 <p>data type semantics: identifier.</p>
4601 <p>description: The source port identifier in the tunnel transport
4602 header. For the transport protocols UDP, TCP, and SCTP, this is
4603 the source port number given in the respective header.</p>
4604 </dd>
4605 <dt>tunnelDestinationTransportPort:</dt>
4606 <dd>
4607 <p>ID: 897, and enterprise ID 6876 (VMware).</p>
4608 <p>type: unsigned 16-bit integer.</p>
4609 <p>data type semantics: identifier.</p>
4610 <p>description: The destination port identifier in the tunnel
4611 transport header. For the transport protocols UDP, TCP, and SCTP,
4612 this is the destination port number given in the respective header.
4613 </p>
4614 </dd>
4615 </dl>
4616 </column>
4617
4618 <column name="other_config" key="enable-input-sampling"
4619 type='{"type": "boolean"}'>
4620 By default, Open vSwitch samples and reports flows at bridge port input
4621 in IPFIX flow records. Set this column to <code>false</code> to
4622 disable input sampling.
4623 </column>
4624
4625 <column name="other_config" key="enable-output-sampling"
4626 type='{"type": "boolean"}'>
4627 By default, Open vSwitch samples and reports flows at bridge port
4628 output in IPFIX flow records. Set this column to <code>false</code> to
4629 disable output sampling.
4630 </column>
4631 </group>
4632
4633 <group title="Common Columns">
4634 The overall purpose of these columns is described under <code>Common
4635 Columns</code> at the beginning of this document.
4636
4637 <column name="external_ids"/>
4638 </group>
4639 </table>
4640
4641 <table name="Flow_Sample_Collector_Set">
4642 <p>
4643 A set of IPFIX collectors of packet samples generated by OpenFlow
4644 <code>sample</code> actions. This table is used only for IPFIX
4645 flow-based sampling, not for per-bridge sampling (see the <ref
4646 table="IPFIX"/> table for a description of the two forms).
4647 </p>
4648
4649 <column name="id">
4650 The ID of this collector set, unique among the bridge's
4651 collector sets, to be used as the <code>collector_set_id</code>
4652 in OpenFlow <code>sample</code> actions.
4653 </column>
4654
4655 <column name="bridge">
4656 The bridge into which OpenFlow <code>sample</code> actions can
4657 be added to send packet samples to this set of IPFIX collectors.
4658 </column>
4659
4660 <column name="ipfix">
4661 Configuration of the set of IPFIX collectors to send one flow
4662 record per sampled packet to.
4663 </column>
4664
4665 <group title="Common Columns">
4666 The overall purpose of these columns is described under <code>Common
4667 Columns</code> at the beginning of this document.
4668
4669 <column name="external_ids"/>
4670 </group>
4671 </table>
4672
4673 <table name="AutoAttach">
4674 <p>
4675 Auto Attach configuration within a bridge. The IETF Auto-Attach SPBM
4676 draft standard describes a compact method of using IEEE 802.1AB Link
4677 Layer Discovery Protocol (LLDP) together with a IEEE 802.1aq Shortest
4678 Path Bridging (SPB) network to automatically attach network devices
4679 to individual services in a SPB network. The intent here is to allow
4680 network applications and devices using OVS to be able to easily take
4681 advantage of features offered by industry standard SPB networks.
4682 </p>
4683
4684 <p>
4685 Auto Attach (AA) uses LLDP to communicate between a directly connected
4686 Auto Attach Client (AAC) and Auto Attach Server (AAS). The LLDP protocol
4687 is extended to add two new Type-Length-Value tuples (TLVs). The first
4688 new TLV supports the ongoing discovery of directly connected AA
4689 correspondents. Auto Attach operates by regularly transmitting AA
4690 discovery TLVs between the AA client and AA server. By exchanging these
4691 discovery messages, both the AAC and AAS learn the system name and
4692 system description of their peer. In the OVS context, OVS operates as
4693 the AA client and the AA server resides on a switch at the edge of the
4694 SPB network.
4695 </p>
4696
4697 <p>
4698 Once AA discovery has been completed the AAC then uses the second new TLV
4699 to deliver identifier mappings from the AAC to the AAS. A primary feature
4700 of Auto Attach is to facilitate the mapping of VLANs defined outside the
4701 SPB network onto service ids (ISIDs) defined within the SPM network. By
4702 doing so individual external VLANs can be mapped onto specific SPB
4703 network services. These VLAN id to ISID mappings can be configured and
4704 managed locally using new options added to the ovs-vsctl command.
4705 </p>
4706
4707 <p>
4708 The Auto Attach OVS feature does not provide a full implementation of
4709 the LLDP protocol. Support for the mandatory TLVs as defined by the LLDP
4710 standard and support for the AA TLV extensions is provided. LLDP
4711 protocol support in OVS can be enabled or disabled on a port by port
4712 basis. LLDP support is disabled by default.
4713 </p>
4714
4715 <column name="system_name">
4716 The system_name string is exported in LLDP messages. It should uniquely
4717 identify the bridge in the network.
4718 </column>
4719
4720 <column name="system_description">
4721 The system_description string is exported in LLDP messages. It should
4722 describe the type of software and hardware.
4723 </column>
4724
4725 <column name="mappings">
4726 A mapping from SPB network Individual Service Identifier (ISID) to VLAN
4727 id.
4728 </column>
4729 </table>
4730 </database>