bridge: Also prohibit \ in bridge names.
[cascardo/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>