dpif-netlink: add GENEVE creation support
[cascardo/ovs.git] / vtep / vtep.xml
1 <?xml version="1.0" encoding="utf-8"?>
2 <database name="vtep" title="Hardware VTEP Database">
3   <p>
4     This schema specifies relations that a VTEP can use to integrate
5     physical ports into logical switches maintained by a network
6     virtualization controller such as NSX.
7   </p>
8
9   <p>Glossary:</p>
10
11   <dl>
12     <dt>VTEP</dt>
13     <dd>
14       VXLAN Tunnel End Point, an entity which originates and/or terminates
15       VXLAN tunnels.
16     </dd>
17
18     <dt>HSC</dt>
19     <dd>
20       Hardware Switch Controller.
21     </dd>
22
23     <dt>NVC</dt>
24     <dd>
25       Network Virtualization Controller, e.g. NSX.
26     </dd>
27
28     <dt>VRF</dt>
29     <dd>
30       Virtual Routing and Forwarding instance.
31     </dd>
32   </dl>
33
34   <h2>Common Column</h2>
35
36   <p>
37     Some tables contain a column, named <code>other_config</code>.
38     This column has the same form and purpose each place that it appears,
39     so we describe it here to save space later.
40   </p>
41
42   <dl>
43     <dt><code>other_config</code>: map of string-string pairs</dt>
44     <dd>
45       <p>
46         Key-value pairs for configuring rarely used or proprietary features.
47       </p>
48       <p>
49         Some tables do not have <code>other_config</code> column because no
50         key-value pairs have yet been defined for them.
51       </p>
52     </dd>
53   </dl>
54
55   <table name="Global" title="Top-level configuration.">
56     Top-level configuration for a hardware VTEP.  There must be
57     exactly one record in the <ref table="Global"/> table.
58
59     <column name="switches">
60       <p>
61         The physical switch or switches managed by the VTEP.
62       </p>
63
64       <p>
65         When a physical switch integrates support for this VTEP schema, which
66         is expected to be the most common case, this column should point to one
67         <ref table="Physical_Switch"/> record that represents the switch
68         itself.  In another possible implementation, a server or a VM presents
69         a VTEP schema front-end interface to one or more physical switches,
70         presumably communicating with those physical switches over a
71         proprietary protocol.  In that case, this column would point to one
72         <ref table="Physical_Switch"/> for each physical switch, and the set
73         might change over time as the front-end server comes to represent a
74         differing set of switches.
75       </p>
76     </column>
77
78     <group title="Database Configuration">
79       <p>
80         These columns primarily configure the database server
81         (<code>ovsdb-server</code>), not the hardware VTEP itself.
82       </p>
83
84       <column name="managers">
85         Database clients to which the database server should connect or
86         to which it should listen, along with options for how these
87         connection should be configured.  See the <ref table="Manager"/>
88         table for more information.
89       </column>
90     </group>
91
92     <group title="Common Column">
93       The overall purpose of this column is described under <code>Common
94       Column</code> at the beginning of this document.
95
96       <column name="other_config"/>
97     </group>
98
99   </table>
100
101   <table name="Manager" title="OVSDB management connection.">
102     <p>
103       Configuration for a database connection to an Open vSwitch Database
104       (OVSDB) client.
105     </p>
106
107     <p>
108       The database server can initiate and maintain active connections
109       to remote clients.  It can also listen for database connections.
110     </p>
111
112     <group title="Core Features">
113       <column name="target">
114         <p>Connection method for managers.</p>
115         <p>
116           The following connection methods are currently supported:
117         </p>
118         <dl>
119           <dt><code>ssl:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
120           <dd>
121             <p>
122               The specified SSL <var>port</var> (default: 6640) on the host at
123               the given <var>ip</var>, which must be expressed as an IP address
124               (not a DNS name).
125             </p>
126             <p>
127               SSL key and certificate configuration happens outside the
128               database.
129             </p>
130           </dd>
131
132           <dt><code>tcp:<var>ip</var></code>[<code>:<var>port</var></code>]</dt>
133           <dd>
134             The specified TCP <var>port</var> (default: 6640) on the host at
135             the given <var>ip</var>, which must be expressed as an IP address
136             (not a DNS name).
137           </dd>
138           <dt><code>pssl:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
139           <dd>
140             <p>
141               Listens for SSL connections on the specified TCP <var>port</var>
142               (default: 6640).  If <var>ip</var>, which must be expressed as an
143               IP address (not a DNS name), is specified, then connections are
144               restricted to the specified local IP address.
145             </p>
146           </dd>
147           <dt><code>ptcp:</code>[<var>port</var>][<code>:<var>ip</var></code>]</dt>
148           <dd>
149             Listens for connections on the specified TCP <var>port</var>
150             (default: 6640).  If <var>ip</var>, which must be expressed as an
151             IP address (not a DNS name), is specified, then connections are
152             restricted to the specified local IP address.
153           </dd>
154         </dl>
155       </column>
156     </group>
157
158     <group title="Client Failure Detection and Handling">
159       <column name="max_backoff">
160         Maximum number of milliseconds to wait between connection attempts.
161         Default is implementation-specific.
162       </column>
163
164       <column name="inactivity_probe">
165         Maximum number of milliseconds of idle time on connection to the
166         client before sending an inactivity probe message.  If the Open
167         vSwitch database does not communicate with the client for the
168         specified number of seconds, it will send a probe.  If a
169         response is not received for the same additional amount of time,
170         the database server assumes the connection has been broken
171         and attempts to reconnect.  Default is implementation-specific.
172         A value of 0 disables inactivity probes.
173       </column>
174     </group>
175
176     <group title="Status">
177       <column name="is_connected">
178         <code>true</code> if currently connected to this manager,
179         <code>false</code> otherwise.
180       </column>
181
182       <column name="status" key="last_error">
183         A human-readable description of the last error on the connection
184         to the manager; i.e. <code>strerror(errno)</code>.  This key
185         will exist only if an error has occurred.
186       </column>
187
188       <column name="status" key="state"
189               type='{"type": "string", "enum": ["set", ["VOID", "BACKOFF", "CONNECTING", "ACTIVE", "IDLE"]]}'>
190         <p>
191           The state of the connection to the manager:
192         </p>
193         <dl>
194           <dt><code>VOID</code></dt>
195           <dd>Connection is disabled.</dd>
196
197           <dt><code>BACKOFF</code></dt>
198           <dd>Attempting to reconnect at an increasing period.</dd>
199
200           <dt><code>CONNECTING</code></dt>
201           <dd>Attempting to connect.</dd>
202
203           <dt><code>ACTIVE</code></dt>
204           <dd>Connected, remote host responsive.</dd>
205
206           <dt><code>IDLE</code></dt>
207           <dd>Connection is idle.  Waiting for response to keep-alive.</dd>
208         </dl>
209         <p>
210           These values may change in the future.  They are provided only for
211           human consumption.
212         </p>
213       </column>
214
215       <column name="status" key="sec_since_connect"
216               type='{"type": "integer", "minInteger": 0}'>
217         The amount of time since this manager last successfully connected
218         to the database (in seconds). Value is empty if manager has never
219         successfully connected.
220       </column>
221
222       <column name="status" key="sec_since_disconnect"
223               type='{"type": "integer", "minInteger": 0}'>
224         The amount of time since this manager last disconnected from the
225         database (in seconds). Value is empty if manager has never
226         disconnected.
227       </column>
228
229       <column name="status" key="locks_held">
230         Space-separated list of the names of OVSDB locks that the connection
231         holds.  Omitted if the connection does not hold any locks.
232       </column>
233
234       <column name="status" key="locks_waiting">
235         Space-separated list of the names of OVSDB locks that the connection is
236         currently waiting to acquire.  Omitted if the connection is not waiting
237         for any locks.
238       </column>
239
240       <column name="status" key="locks_lost">
241         Space-separated list of the names of OVSDB locks that the connection
242         has had stolen by another OVSDB client.  Omitted if no locks have been
243         stolen from this connection.
244       </column>
245
246       <column name="status" key="n_connections"
247               type='{"type": "integer", "minInteger": 2}'>
248         <p>
249           When <ref column="target"/> specifies a connection method that
250           listens for inbound connections (e.g. <code>ptcp:</code> or
251           <code>pssl:</code>) and more than one connection is actually active,
252           the value is the number of active connections.  Otherwise, this
253           key-value pair is omitted.
254         </p>
255         <p>
256           When multiple connections are active, status columns and key-value
257           pairs (other than this one) report the status of one arbitrarily
258           chosen connection.
259         </p>
260       </column>
261     </group>
262
263     <group title="Connection Parameters">
264       <p>
265         Additional configuration for a connection between the manager
266         and the database server.
267       </p>
268
269       <column name="other_config" key="dscp"
270               type='{"type": "integer"}'>
271         The Differentiated Service Code Point (DSCP) is specified using 6 bits
272         in the Type of Service (TOS) field in the IP header. DSCP provides a
273         mechanism to classify the network traffic and provide Quality of
274         Service (QoS) on IP networks.
275
276         The DSCP value specified here is used when establishing the
277         connection between the manager and the database server.  If no
278         value is specified, a default value of 48 is chosen.  Valid DSCP
279         values must be in the range 0 to 63.
280       </column>
281     </group>
282   </table>
283
284   <table name="Physical_Switch" title="A physical switch.">
285     A physical switch that implements a VTEP.
286
287     <column name="ports">
288       The physical ports within the switch.
289     </column>
290
291     <column name="tunnels">
292       Tunnels created by this switch as instructed by the NVC.
293     </column>
294
295     <group title="Network Status">
296       <column name="management_ips">
297         IPv4 or IPv6 addresses at which the switch may be contacted
298         for management purposes.
299       </column>
300
301       <column name="tunnel_ips">
302         <p>
303           IPv4 or IPv6 addresses on which the switch may originate or
304           terminate tunnels.
305         </p>
306
307         <p>
308           This column is intended to allow a <ref table="Manager"/> to
309           determine the <ref table="Physical_Switch"/> that terminates
310           the tunnel represented by a <ref table="Physical_Locator"/>.
311         </p>
312       </column>
313     </group>
314
315     <group title="Identification">
316       <column name="name">
317         Symbolic name for the switch, such as its hostname.
318       </column>
319
320       <column name="description">
321         An extended description for the switch, such as its switch login
322         banner.
323       </column>
324     </group>
325     <group title="Error Notification">
326       <p>
327         An entry in this column indicates to the NVC that this switch
328         has encountered a fault. The switch must clear this column
329         when the fault has been cleared.
330       </p>
331
332       <column name="switch_fault_status" key="mac_table_exhaustion">
333         Indicates that the switch has been unable to process MAC
334         entries requested by the NVC due to lack of table resources.
335       </column>
336
337       <column name="switch_fault_status" key="tunnel_exhaustion">
338         Indicates that the switch has been unable to create tunnels
339         requested by the NVC due to lack of resources.
340       </column>
341
342       <column name="switch_fault_status" key="lr_switch_bindings_fault">
343         Indicates that the switch has been unable to create the logical router
344         interfaces requested by the NVC due to conflicting configurations or a
345         lack of hardware resources.
346       </column>
347
348       <column name="switch_fault_status" key="lr_static_routes_fault">
349         Indicates that the switch has been unable to create the static routes
350         requested by the NVC due to conflicting configurations or a lack of
351         hardware resources.
352       </column>
353
354       <column name="switch_fault_status" key="lr_creation_fault">
355         Indicates that the switch has been unable to create the logical router
356         requested by the NVC due to conflicting configurations or a lack of
357         hardware resources.
358       </column>
359
360       <column name="switch_fault_status" key="lr_support_fault">
361         Indicates that the switch does not support logical routing.
362       </column>
363
364       <column name="switch_fault_status" key="unspecified_fault">
365         Indicates that an error has occurred in the switch but that no
366         more specific information is available.
367       </column>
368
369       <column name="switch_fault_status"
370         key="unsupported_source_node_replication">
371         Indicates that the requested source node replication mode cannot be
372         supported by the physical switch;  this specifically means in this
373         context that the physical switch lacks the capability to support
374         source node replication mode.  This error occurs when a controller
375         attempts to set source node replication mode for one of the logical
376         switches that the physical switch is keeping context for.  An NVC
377         that observes this error should take appropriate action (for example
378         reverting the logical switch to service node replication mode).
379         It is recommended that an NVC be proactive and test for support of
380         source node replication by using a test logical switch on vtep
381         physical switch nodes and then trying to change the replication mode
382         to source node on this logical switch, checking for error.  The NVC
383         could remember this capability per vtep physical switch.  Using
384         mixed replication modes on a given logical switch is not recommended.
385         Service node replication mode is considered a basic requirement
386         since it only requires sending a packet to a single transport node,
387         hence it is not expected that a switch should report that service
388         node mode cannot be supported.
389       </column>
390     </group>
391
392     <group title="Common Column">
393       The overall purpose of this column is described under <code>Common
394       Column</code> at the beginning of this document.
395
396       <column name="other_config"/>
397     </group>
398
399   </table>
400
401   <table name="Tunnel" title="A tunnel created by a physical switch.">
402     A tunnel created by a <ref table="Physical_Switch"/>.
403
404     <column name="local">
405       Tunnel end-point local to the physical switch.
406     </column>
407
408     <column name="remote">
409       Tunnel end-point remote to the physical switch.
410     </column>
411
412     <group title="Bidirectional Forwarding Detection (BFD)">
413       <p>
414         BFD, defined in RFC 5880, allows point to point detection of
415         connectivity failures by occasional transmission of BFD control
416         messages. VTEPs are expected to implement BFD.
417       </p>
418
419       <p>
420         BFD operates by regularly transmitting BFD control messages at a
421         rate negotiated independently in each direction.  Each endpoint
422         specifies the rate at which it expects to receive control messages,
423         and the rate at which it's willing to transmit them.  An endpoint
424         which fails to receive BFD control messages for a period of three
425         times the expected reception rate will signal a connectivity
426         fault.  In the case of a unidirectional connectivity issue, the
427         system not receiving BFD control messages will signal the problem
428         to its peer in the messages it transmits.
429       </p>
430
431       <p>
432         A hardware VTEP is expected to use BFD to determine reachability of
433         devices at the end of the tunnels with which it exchanges data. This
434         can enable the VTEP to choose a functioning service node among a set of
435         service nodes providing high availability. It also enables the NVC to
436         report the health status of tunnels.
437       </p>
438
439       <p>
440         In many cases the BFD peer of a hardware VTEP will be an Open vSwitch
441         instance. The Open vSwitch implementation of BFD aims to comply
442         faithfully with the requirements put forth in RFC 5880.  Open vSwitch
443         does not implement the optional Authentication or ``Echo Mode''
444         features.
445       </p>
446
447       <group title="BFD Local Configuration">
448         <p>
449           The HSC writes the key-value pairs in the
450           <ref column="bfd_config_local"/> column to specify the local
451           configurations to be used for BFD sessions on this tunnel.
452         </p>
453
454         <column name="bfd_config_local" key="bfd_dst_mac">
455           Set to an Ethernet address in the form
456           <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
457           to set the MAC expected as destination for received BFD packets.
458           The default is <code>00:23:20:00:00:01</code>.
459         </column>
460
461         <column name="bfd_config_local" key="bfd_dst_ip">
462           Set to an IPv4 address to set the IP address that is expected as destination
463           for received BFD packets.  The default is <code>169.254.1.0</code>.
464         </column>
465
466       </group>
467
468       <group title="BFD Remote Configuration">
469         <p>
470           The <ref column="bfd_config_remote"/> column is the remote
471           counterpart of the <ref column="bfd_config_local"/> column.
472           The NVC writes the key-value pairs in this column.
473         </p>
474
475         <column name="bfd_config_remote" key="bfd_dst_mac">
476           Set to an Ethernet address in the form
477           <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
478           to set the destination MAC to be used for transmitted BFD packets.
479           The default is <code>00:23:20:00:00:01</code>.
480         </column>
481
482         <column name="bfd_config_remote" key="bfd_dst_ip">
483           Set to an IPv4 address to set the IP address used as destination
484           for transmitted BFD packets.  The default is <code>169.254.1.1</code>.
485         </column>
486
487       </group>
488
489       <group title="BFD Parameters">
490         <p>
491           The NVC sets up key-value pairs in the <ref column="bfd_params"/>
492           column to enable and configure BFD.
493         </p>
494
495         <column name="bfd_params" key="enable" type='{"type": "boolean"}'>
496           True to enable BFD on this <ref table="Tunnel"/>.  If not
497           specified, BFD will not be enabled by default.
498         </column>
499
500         <column name="bfd_params" key="min_rx"
501                 type='{"type": "integer", "minInteger": 1}'>
502           The shortest interval, in milliseconds, at which this BFD session
503           offers to receive BFD control messages.  The remote endpoint may
504           choose to send messages at a slower rate.  Defaults to
505           <code>1000</code>.
506         </column>
507
508         <column name="bfd_params" key="min_tx"
509                 type='{"type": "integer", "minInteger": 1}'>
510           The shortest interval, in milliseconds, at which this BFD session is
511           willing to transmit BFD control messages.  Messages will actually be
512           transmitted at a slower rate if the remote endpoint is not willing to
513           receive as quickly as specified.  Defaults to <code>100</code>.
514         </column>
515
516         <column name="bfd_params" key="decay_min_rx" type='{"type": "integer"}'>
517           An alternate receive interval, in milliseconds, that must be greater
518           than or equal to <ref column="bfd_params" key="min_rx"/>.  The
519           implementation should switch from <ref column="bfd_params" key="min_rx"/>
520           to <ref column="bfd_params" key="decay_min_rx"/> when there is no obvious
521           incoming data traffic at the tunnel, to reduce the CPU and bandwidth
522           cost of monitoring an idle tunnel.  This feature may be disabled by
523           setting a value of 0.  This feature is reset whenever
524           <ref column="bfd_params" key="decay_min_rx"/> or
525           <ref column="bfd_params" key="min_rx"/> changes.
526         </column>
527
528         <column name="bfd_params" key="forwarding_if_rx" type='{"type": "boolean"}'>
529           When <code>true</code>, traffic received on the <ref table="Tunnel"/>
530           is used to indicate the capability of packet I/O.
531           BFD control packets are still transmitted and received. At least one
532           BFD control packet must be received every
533           100 * <ref column="bfd_params" key="min_rx"/> amount of time.
534           Otherwise, even if traffic is received, the
535           <ref column="bfd_params" key="forwarding"/> will be <code>false</code>.
536         </column>
537
538         <column name="bfd_params" key="cpath_down" type='{"type": "boolean"}'>
539           Set to true to notify the remote endpoint that traffic should not be
540           forwarded to this system for some reason other than a connectivity
541           failure on the interface being monitored.  The typical underlying
542           reason is ``concatenated path down,'' that is, that connectivity
543           beyond the local system is down.  Defaults to false.
544         </column>
545
546         <column name="bfd_params" key="check_tnl_key" type='{"type": "boolean"}'>
547           Set to true to make BFD accept only control messages with a tunnel
548           key of zero.  By default, BFD accepts control messages with any
549           tunnel key.
550         </column>
551
552       </group>
553
554       <group title="BFD Status">
555         <p>
556           The VTEP sets key-value pairs in the <ref column="bfd_status"/>
557           column to report the status of BFD on this tunnel.  When BFD is
558           not enabled, with <ref column="bfd_params" key="enable"/>, the
559           HSC clears all key-value pairs from <ref column="bfd_status"/>.
560         </p>
561
562         <column name="bfd_status" key="enabled" type='{"type": "boolean"}'>
563           Set to true if the BFD session has been successfully enabled.
564           Set to false if the VTEP cannot support BFD or has insufficient
565           resources to enable BFD on this tunnel. The NVC will disable
566           the BFD monitoring on the other side of the tunnel once this
567           value is set to false.
568         </column>
569
570         <column name="bfd_status" key="state"
571                 type='{"type": "string",
572               "enum": ["set", ["admin_down", "down", "init", "up"]]}'>
573           Reports the state of the BFD session.  The BFD session is fully
574           healthy and negotiated if <code>UP</code>.
575         </column>
576
577         <column name="bfd_status" key="forwarding" type='{"type": "boolean"}'>
578           Reports whether the BFD session believes this  <ref table="Tunnel"/>
579           may be used to forward traffic.  Typically this means the local session
580           is signaling <code>UP</code>, and the remote system isn't signaling a
581           problem such as concatenated path down.
582         </column>
583
584         <column name="bfd_status" key="diagnostic">
585           A diagnostic code specifying the local system's reason for the
586           last change in session state. The error messages are defined in
587           section 4.1 of [RFC 5880].
588         </column>
589
590        <column name="bfd_status" key="remote_state"
591                 type='{"type": "string",
592               "enum": ["set", ["admin_down", "down", "init", "up"]]}'>
593           Reports the state of the remote endpoint's BFD session.
594         </column>
595
596         <column name="bfd_status" key="remote_diagnostic">
597           A diagnostic code specifying the remote system's reason for the
598           last change in session state. The error messages are defined in
599           section 4.1 of [RFC 5880].
600         </column>
601
602         <column name="bfd_status" key="info">
603           A short message providing further information about the BFD status
604           (possibly including reasons why BFD could not be enabled).
605         </column>
606       </group>
607     </group>
608   </table>
609
610   <table name="Physical_Port" title="A port within a physical switch.">
611     A port within a <ref table="Physical_Switch"/>.
612
613     <column name="vlan_bindings">
614       Identifies how VLANs on the physical port are bound to logical switches.
615       If, for example, the map contains a (VLAN, logical switch) pair, a packet
616       that arrives on the port in the VLAN is considered to belong to the
617       paired logical switch. A value of zero in the VLAN field means
618       that untagged traffic on the physical port is mapped to the
619       logical switch.
620     </column>
621
622     <column name="acl_bindings">
623       <p>
624         Attach Access Control Lists (ACLs) to the physical port. The
625         column consists of a map of VLAN tags to <ref table="ACL"/>s. If the value of
626         the VLAN tag in the map is 0, this means that the ACL is
627         associated with the entire physical port. Non-zero values mean
628         that the ACL is to be applied only on packets carrying that VLAN
629         tag value. Switches will not necessarily support matching on the
630         VLAN tag for all ACLs, and unsupported ACL bindings will cause
631         errors to be reported. The binding of an ACL to a specific
632         VLAN and the binding of an ACL to the entire physical port
633         should not be combined on a single physical port. That is, a
634         mix of zero and non-zero keys in the map is not recommended.
635       </p>
636     </column>
637
638     <column name="vlan_stats">
639       Statistics for VLANs bound to logical switches on the physical port.  An
640       implementation that fully supports such statistics would populate this
641       column with a mapping for every VLAN that is bound in <ref
642       column="vlan_bindings"/>.  An implementation that does not support such
643       statistics or only partially supports them would not populate this column
644       or partially populate it, respectively. A value of zero in the
645       VLAN field refers to untagged traffic on the physical port.
646     </column>
647
648     <group title="Identification">
649       <column name="name">
650         Symbolic name for the port.  The name ought to be unique within a given
651         <ref table="Physical_Switch"/>, but the database is not capable of
652         enforcing this.
653       </column>
654       
655       <column name="description">
656         An extended description for the port.
657       </column>
658     </group>
659     <group title="Error Notification">
660       <p>
661         An entry in this column indicates to the NVC that the physical port has
662         encountered a fault. The switch must clear this column when the error
663         has been cleared.
664       </p>
665       <column name="port_fault_status" key="invalid_vlan_map">
666         <p>
667           Indicates that a VLAN-to-logical-switch mapping requested by
668           the controller could not be instantiated by the switch
669           because of a conflict with local configuration.
670         </p>
671       </column>
672       <column name="port_fault_status" key="invalid_ACL_binding">
673         <p>
674           Indicates that an error has occurred in associating an ACL
675           with a port.
676         </p>
677       </column>
678       <column name="port_fault_status" key="unspecified_fault">
679         <p>
680           Indicates that an error has occurred on the port but that no
681           more specific information is available.
682         </p>
683       </column>
684     </group>
685
686     <group title="Common Column">
687       The overall purpose of this column is described under <code>Common
688       Column</code> at the beginning of this document.
689
690       <column name="other_config"/>
691     </group>
692
693   </table>
694
695   <table name="Logical_Binding_Stats" title="Statistics for a VLAN on a physical port bound to a logical network.">
696     Reports statistics for the <ref table="Logical_Switch"/> with which a VLAN
697     on a <ref table="Physical_Port"/> is associated.
698
699     <group title="Statistics">
700       These statistics count only packets to which the binding applies.
701
702       <column name="packets_from_local">
703         Number of packets sent by the <ref table="Physical_Switch"/>.
704       </column>
705
706       <column name="bytes_from_local">
707         Number of bytes in packets sent by the <ref table="Physical_Switch"/>.
708       </column>
709
710       <column name="packets_to_local">
711         Number of packets received by the <ref table="Physical_Switch"/>.
712       </column>
713
714       <column name="bytes_to_local">
715         Number of bytes in packets received by the <ref
716         table="Physical_Switch"/>.
717       </column>
718     </group>
719   </table>
720
721   <table name="Logical_Switch" title="A layer-2 domain.">
722     A logical Ethernet switch, whose implementation may span physical and
723     virtual media, possibly crossing L3 domains via tunnels; a logical layer-2
724     domain; an Ethernet broadcast domain.
725
726
727
728     <group title="Per Logical-Switch Tunnel Key">
729       <p>
730         Tunnel protocols tend to have a field that allows the tunnel
731         to be partitioned into sub-tunnels: VXLAN has a VNI, GRE and
732         STT have a key, CAPWAP has a WSI, and so on.  We call these
733         generically ``tunnel keys.''  Given that one needs to use a
734         tunnel key at all, there are at least two reasonable ways to
735         assign their values:
736       </p>
737
738       <ul>
739         <li>
740           <p>
741             Per <ref table="Logical_Switch"/>+<ref table="Physical_Locator"/>
742             pair.  That is, each logical switch may be assigned a different
743             tunnel key on every <ref table="Physical_Locator"/>.  This model is
744             especially flexible.
745           </p>
746
747           <p>
748             In this model, <ref table="Physical_Locator"/> carries the tunnel
749             key.  Therefore, one <ref table="Physical_Locator"/> record will
750             exist for each logical switch carried at a given IP destination.
751           </p>
752         </li>
753
754         <li>
755           <p>
756             Per <ref table="Logical_Switch"/>.  That is, every tunnel
757             associated with a particular logical switch carries the same tunnel
758             key, regardless of the <ref table="Physical_Locator"/> to which the
759             tunnel is addressed.  This model may ease switch implementation
760             because it imposes fewer requirements on the hardware datapath.
761           </p>
762
763           <p>
764             In this model, <ref table="Logical_Switch"/> carries the tunnel
765             key.  Therefore, one <ref table="Physical_Locator"/> record will
766             exist for each IP destination.
767           </p>
768         </li>
769       </ul>
770
771       <column name="tunnel_key">
772         <p>
773           This column is used only in the tunnel key per <ref
774           table="Logical_Switch"/> model (see above), because only in that
775           model is there a tunnel key associated with a logical switch.
776         </p>
777
778         <p>
779           For <code>vxlan_over_ipv4</code> encapsulation, when the tunnel key
780           per <ref table="Logical_Switch"/> model is in use, this column is the
781           VXLAN VNI that identifies a logical switch.  It must be in the range
782           0 to 16,777,215.
783         </p>
784       </column>
785     </group>
786
787     <group title="Replication Mode">
788       <p>
789         For handling L2 broadcast, multicast and unknown unicast traffic,
790         packets can be sent to all members of a logical switch referenced by
791         a physical switch.  There are different modes to replicate the
792         packets.  The default mode of replication is to send the traffic to
793         a service node, which can be a hypervisor, server or appliance, and
794         let the service node handle replication to other transport nodes
795         (hypervisors or other VTEP physical switches).  This mode is called
796         service node replication.  An alternate mode of replication, called
797         source node replication involves the source node sending to all
798         other transport nodes.  Hypervisors are always responsible for doing
799         their own replication for locally attached VMs in both modes.
800         Service node replication mode is the default and considered a
801         basic requirement because it only requires sending the packet to
802         a single transport node.
803       </p>
804
805       <column name="replication_mode">
806         <p>
807           This optional column defines the replication mode per
808           <ref table="Logical_Switch"/>.  There are 2 valid values,
809           <code>service_node</code> and <code>source_node</code>.  If the
810           column is not set, the replication mode defaults to service_node.
811         </p>
812
813       </column>
814     </group>
815
816     <group title="Identification">
817       <column name="name">
818         Symbolic name for the logical switch.
819       </column>
820
821       <column name="description">
822         An extended description for the logical switch, such as its switch
823         login banner.
824       </column>
825     </group>
826
827     <group title="Common Column">
828       The overall purpose of this column is described under <code>Common
829       Column</code> at the beginning of this document.
830
831       <column name="other_config"/>
832     </group>
833
834   </table>
835
836   <table name="Ucast_Macs_Local" title="Unicast MACs (local)">
837     <p>
838       Mapping of unicast MAC addresses to tunnels (physical
839       locators). This table is written by the HSC, so it contains the
840       MAC addresses that have been learned on physical ports by a
841       VTEP. 
842     </p>
843
844     <column name="MAC">
845       A MAC address that has been learned by the VTEP.
846     </column>
847
848     <column name="logical_switch">
849       The Logical switch to which this mapping applies.
850     </column>
851
852     <column name="locator">
853       The physical locator to be used to reach this MAC address. In
854       this table, the physical locator will be one of the tunnel IP
855       addresses of the appropriate VTEP.
856     </column>
857
858     <column name="ipaddr">
859       The IP address to which this MAC corresponds. Optional field for
860       the purpose of ARP supression.
861     </column>
862
863   </table>
864
865   <table name="Ucast_Macs_Remote" title="Unicast MACs (remote)">
866     <p>
867       Mapping of unicast MAC addresses to tunnels (physical
868       locators). This table is written by the NVC, so it contains the
869       MAC addresses that the NVC has learned. These include VM MAC
870       addresses, in which case the physical locators will be
871       hypervisor IP addresses. The NVC will also report MACs that it
872       has learned from other HSCs in the network, in which case the
873       physical locators will be tunnel IP addresses of the
874       corresponding VTEPs.
875     </p>
876
877     <column name="MAC">
878       A MAC address that has been learned by the NVC.
879     </column>
880
881     <column name="logical_switch">
882       The Logical switch to which this mapping applies.
883     </column>
884
885     <column name="locator">
886       The physical locator to be used to reach this MAC address. In
887       this table, the physical locator will be either a hypervisor IP
888       address or a tunnel IP addresses of another VTEP.
889     </column>
890
891     <column name="ipaddr">
892       The IP address to which this MAC corresponds. Optional field for
893       the purpose of ARP supression.
894     </column>
895
896   </table>
897
898   <table name="Mcast_Macs_Local" title="Multicast MACs (local)">
899     <p>
900       Mapping of multicast MAC addresses to tunnels (physical
901       locators). This table is written by the HSC, so it contains the
902       MAC addresses that have been learned on physical ports by a
903       VTEP. These may be learned by IGMP snooping, for example. This
904       table also specifies how to handle unknown unicast and broadcast packets.
905     </p>
906
907     <column name="MAC">
908       <p>
909         A MAC address that has been learned by the VTEP.
910       </p>
911       <p>
912         The keyword <code>unknown-dst</code> is used as a special
913         ``Ethernet address'' that indicates the locations to which
914         packets in a logical switch whose destination addresses do not
915         otherwise appear in <ref table="Ucast_Macs_Local"/> (for
916         unicast addresses) or <ref table="Mcast_Macs_Local"/> (for
917         multicast addresses) should be sent.
918       </p>
919     </column>
920
921     <column name="logical_switch">
922       The Logical switch to which this mapping applies.
923     </column>
924
925     <column name="locator_set">
926       The physical locator set to be used to reach this MAC address. In
927       this table, the physical locator set will be contain one or more tunnel IP
928       addresses of the appropriate VTEP(s).
929     </column>
930
931     <column name="ipaddr">
932       The IP address to which this MAC corresponds. Optional field for
933       the purpose of ARP supression.
934     </column>
935   </table>
936
937   <table name="Mcast_Macs_Remote" title="Multicast MACs (remote)">
938     <p>
939       Mapping of multicast MAC addresses to tunnels (physical
940       locators). This table is written by the NVC, so it contains the
941       MAC addresses that the NVC has learned. This
942       table also specifies how to handle unknown unicast and broadcast
943       packets.
944     </p>
945     <p>
946       Multicast packet replication may be handled by a service node,
947       in which case the physical locators will be IP addresses of
948       service nodes. If the VTEP supports replication onto multiple
949       tunnels, using source node replication, then this may be used to
950       replicate directly onto VTEP-hypervisor or VTEP-VTEP tunnels.
951     </p>
952
953     <column name="MAC">
954       <p>
955         A MAC address that has been learned by the NVC.
956       </p>
957       <p>
958         The keyword <code>unknown-dst</code> is used as a special
959         ``Ethernet address'' that indicates the locations to which
960         packets in a logical switch whose destination addresses do not
961         otherwise appear in <ref table="Ucast_Macs_Remote"/> (for
962         unicast addresses) or <ref table="Mcast_Macs_Remote"/> (for
963         multicast addresses) should be sent.
964       </p>
965     </column>
966
967     <column name="logical_switch">
968       The Logical switch to which this mapping applies.
969     </column>
970
971     <column name="locator_set">
972       The physical locator set to be used to reach this MAC address. In
973       this table, the physical locator set will be either a set of service
974       nodes when service node replication is used or the set of transport
975       nodes (defined as hypervisors or VTEPs) participating in the associated
976       logical switch, when source node replication is used. When service node
977       replication is used, the VTEP should send packets to one member of the
978       locator set that is known to be healthy and reachable, which could be
979       determined by BFD.  When source node replication is used, the VTEP
980       should send packets to all members of the locator set.
981     </column>
982
983     <column name="ipaddr">
984       The IP address to which this MAC corresponds. Optional field for
985       the purpose of ARP supression.
986     </column>
987
988   </table>
989
990   <table name="Logical_Router" title="A logical L3 router.">
991     <p>
992       A logical router, or VRF. A logical router may be connected to one or more
993       logical switches. Subnet addresses and interface addresses may be configured on the
994       interfaces.
995     </p>
996
997     <column name="switch_binding">
998       Maps from an IPv4 or IPv6 address prefix in CIDR notation to a
999       logical switch. Multiple prefixes may map to the same switch. By
1000       writing a 32-bit (or 128-bit for v6) address with a /N prefix
1001       length, both the router's interface address and the subnet
1002       prefix can be configured. For example, 192.68.1.1/24 creates a
1003       /24 subnet for the logical switch attached to the interface and
1004       assigns the address 192.68.1.1 to the router interface.
1005     </column>
1006
1007     <column name="static_routes">
1008       One or more static routes, mapping IP prefixes to next hop IP addresses.
1009     </column>
1010
1011     <column name="acl_binding">
1012       Maps ACLs to logical router interfaces. The router interfaces
1013       are indicated using IP address notation, and must be the same
1014       interfaces created in the <ref column="switch_binding"/>
1015       column. For example, an ACL could be associated with the logical
1016       router interface with an address of 192.68.1.1 as defined in the
1017       example above.
1018     </column>
1019
1020     <group title="Identification">
1021       <column name="name">
1022         Symbolic name for the logical router.
1023       </column>
1024       
1025       <column name="description">
1026         An extended description for the logical router.
1027       </column>
1028     </group>
1029
1030     <group title="Error Notification">
1031       <p>
1032         An entry in this column indicates to the NVC that the HSC has
1033         encountered a fault in configuring state related to the
1034         logical router.
1035       </p>
1036       <column name="LR_fault_status" key="invalid_ACL_binding">
1037         <p>
1038           Indicates that an error has occurred in associating an ACL
1039           with a logical router port.
1040         </p>
1041       </column>
1042       <column name="LR_fault_status" key="unspecified_fault">
1043         <p>
1044           Indicates that an error has occurred in configuring the
1045           logical router but that no
1046           more specific information is available.
1047         </p>
1048       </column>
1049     </group>
1050
1051     <group title="Common Column">
1052       The overall purpose of this column is described under <code>Common
1053       Column</code> at the beginning of this document.
1054
1055       <column name="other_config"/>
1056     </group>
1057
1058   </table>
1059
1060   <table name="Arp_Sources_Local" title="ARP source addresses for logical routers">
1061     <p>
1062       MAC address to be used when a VTEP issues ARP requests on behalf
1063       of a logical router.
1064     </p>
1065
1066     <p>
1067       A distributed logical router is implemented by a set of VTEPs
1068       (both hardware VTEPs and vswitches). In order for a given VTEP
1069       to populate the local ARP cache for a logical router, it issues
1070       ARP requests with a source MAC address that is unique to the VTEP. A
1071       single per-VTEP MAC can be re-used across all logical
1072       networks. This table contains the MACs that are used by the
1073       VTEPs of a given HSC. The table provides the mapping from MAC to
1074       physical locator for each VTEP so that replies to the ARP
1075       requests can be sent back to the correct VTEP using the
1076       appropriate physical locator.
1077     </p>
1078
1079     <column name="src_mac">
1080       The source MAC to be used by a given VTEP.
1081     </column>
1082
1083     <column name="locator">
1084       The <ref table="Physical_Locator"/> to use for replies to ARP
1085       requests from this MAC address.
1086     </column>
1087   </table>
1088
1089   <table name="Arp_Sources_Remote" title="ARP source addresses for logical routers">
1090     <p>
1091       MAC address to be used when a remote VTEP issues ARP requests on behalf
1092       of a logical router.
1093     </p>
1094
1095     <p>
1096       This table is the remote counterpart of <ref
1097       table="Arp_sources_local"/>. The NVC writes this table to notify
1098       the HSC of the MACs that will be used by remote VTEPs when they
1099       issue ARP requests on behalf of a distributed logical router.
1100     </p>
1101
1102     <column name="src_mac">
1103       The source MAC to be used by a given VTEP.
1104     </column>
1105
1106     <column name="locator">
1107       The <ref table="Physical_Locator"/> to use for replies to ARP
1108       requests from this MAC address.
1109     </column>
1110   </table>
1111
1112   <table name="Physical_Locator_Set">
1113     <p>
1114       A set of one or more <ref table="Physical_Locator"/>s.
1115     </p>
1116
1117     <p>
1118       This table exists only because OVSDB does not have a way to
1119       express the type ``map from string to one or more <ref
1120       table="Physical_Locator"/> records.''
1121     </p>
1122
1123     <column name="locators"/>
1124   </table>
1125
1126   <table name="Physical_Locator">
1127     <p>
1128       Identifies an endpoint to which logical switch traffic may be
1129       encapsulated and forwarded.
1130     </p>
1131
1132     <p>
1133       The <code>vxlan_over_ipv4</code> encapsulation, the only encapsulation
1134       defined so far, can use either tunnel key model described in the ``Per
1135       Logical-Switch Tunnel Key'' section in the <ref table="Logical_Switch"/>
1136       table.  When the tunnel key per <ref table="Logical_Switch"/> model is in
1137       use, the <ref table="Logical_Switch" column="tunnel_key"/> column in the
1138       <ref table="Logical_Switch"/> table is filled with a VNI and the <ref
1139       column="tunnel_key"/> column in this table is empty; in the
1140       key-per-tunnel model, the opposite is true.  The former model is older,
1141       and thus likely to be more widely supported.  See the ``Per
1142       Logical-Switch Tunnel Key'' section in the <ref table="Logical_Switch"/>
1143       table for further discussion of the model.
1144     </p>
1145
1146     <column name="encapsulation_type">
1147       The type of tunneling encapsulation.
1148     </column>
1149
1150     <column name="dst_ip">
1151       <p>
1152         For <code>vxlan_over_ipv4</code> encapsulation, the IPv4 address of the
1153         VXLAN tunnel endpoint.
1154       </p>
1155
1156       <p>
1157         We expect that this column could be used for IPv4 or IPv6 addresses in
1158         encapsulations to be introduced later.
1159       </p>
1160     </column>
1161
1162     <column name="tunnel_key">
1163       <p>
1164         This column is used only in the tunnel key per <ref
1165         table="Logical_Switch"/>+<ref table="Physical_Locator"/> model (see
1166         above).
1167       </p>
1168
1169       <p>
1170         For <code>vxlan_over_ipv4</code> encapsulation, when the <ref
1171         table="Logical_Switch"/>+<ref table="Physical_Locator"/> model is in
1172         use, this column is the VXLAN VNI.  It must be in the range 0 to
1173         16,777,215.
1174       </p>
1175     </column>
1176
1177   </table>
1178   <table name="ACL_entry">
1179     <p>
1180       Describes the individual entries that comprise an Access Control List.
1181     </p>
1182     <p>
1183       Each entry in the table is a single rule to match on certain
1184       header fields. While there are a large number of fields that can
1185       be matched on, most hardware cannot match on arbitrary
1186       combinations of fields. It is common to match on either L2
1187       fields (described below in the L2 group of columns) or L3/L4 fields
1188       (the L3/L4 group of columns) but not both. The hardware switch
1189       controller may log an error if an ACL entry requires it to match
1190       on an incompatible mixture of fields.
1191     </p>
1192     <column name="sequence">
1193       <p>
1194         The sequence number for the ACL entry for the purpose of
1195         ordering entries in an ACL. Lower numbered entries are matched
1196         before higher numbered entries.
1197       </p>
1198     </column>
1199     <group title="L2 fields">
1200       <column name="source_mac">
1201         <p>
1202           Source MAC address, in the form
1203           <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
1204         </p>
1205       </column>
1206       <column name="dest_mac">
1207         <p>
1208           Destination MAC address, in the form
1209           <var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>:<var>xx</var>
1210         </p>
1211       </column>
1212       <column name="ethertype">
1213         <p>
1214           Ethertype in hexadecimal, in the form
1215           <var>0xAAAA</var>
1216         </p>
1217       </column>
1218     </group>
1219     <group title="L3/L4 fields">
1220       <column name="source_ip">
1221         <p>
1222           Source IP address, in the form
1223           <var>xx.xx.xx.xx</var> for IPv4 or appropriate
1224           colon-separated hexadecimal notation for IPv6.
1225         </p>
1226       </column>
1227       <column name="source_mask">
1228         <p>
1229           Mask that determines which bits of source_ip to match on, in the form
1230           <var>xx.xx.xx.xx</var> for IPv4 or appropriate
1231           colon-separated hexadecimal notation for IPv6.
1232         </p>
1233       </column>
1234       <column name="dest_ip">
1235         <p>
1236           Destination IP address, in the form
1237           <var>xx.xx.xx.xx</var> for IPv4 or appropriate
1238           colon-separated hexadecimal notation for IPv6.
1239         </p>
1240       </column>
1241       <column name="dest_mask">
1242         <p>
1243           Mask that determines which bits of dest_ip to match on, in the form
1244           <var>xx.xx.xx.xx</var> for IPv4 or appropriate
1245           colon-separated hexadecimal notation for IPv6.
1246         </p>
1247       </column>
1248       <column name="protocol">
1249         <p>
1250           Protocol number in the IPv4 header, or value of the "next
1251           header" field in the IPv6 header.
1252         </p>
1253       </column>
1254       <column name="source_port_min">
1255         <p>
1256           Lower end of the range of source port values. The value
1257           specified is included in the range.
1258         </p>
1259       </column>
1260       <column name="source_port_max">
1261         <p>
1262           Upper end of the range of source port values. The value
1263           specified is included in the range.
1264         </p>
1265       </column>
1266       <column name="dest_port_min">
1267         <p>
1268           Lower end of the range of destination port values. The value
1269           specified is included in the range.
1270         </p>
1271       </column>
1272       <column name="dest_port_max">
1273         <p>
1274           Upper end of the range of destination port values. The value
1275           specified is included in the range.
1276         </p>
1277       </column>
1278       <column name="tcp_flags">
1279         <p>
1280           Integer representing the value of TCP flags to match. For
1281           example, the SYN flag is the second least significant bit in
1282           the TCP flags. Hence a value of 2 would indicate that the "SYN"
1283           flag should be set (assuming an appropriate mask).
1284         </p>
1285       </column>
1286       <column name="tcp_flags_mask">
1287         <p>
1288           Integer representing the mask to apply when matching TCP
1289           flags. For example, a value of 2 would imply that the "SYN"
1290           flag should be matched and all other flags ignored.
1291         </p>
1292       </column>
1293       <column name="icmp_type">
1294         <p>
1295           ICMP type to be matched.
1296         </p>
1297       </column>
1298       <column name="icmp_code">
1299         <p>
1300           ICMP code to be matched.
1301         </p>
1302       </column>
1303     </group>
1304     <column name="direction">
1305       <p>
1306         Direction of traffic to match on the specified port, either
1307         "ingress" (toward the logical switch or router) or "egress"
1308         (leaving the logical switch or router).
1309       </p>
1310     </column>
1311     <column name="action">
1312       <p>
1313         Action to take for this rule, either "permit" or "deny".
1314       </p>
1315     </column>
1316     <group title="Error Notification">
1317       <p>
1318         An entry in this column indicates to the NVC that the ACL
1319         could not be configured as requested. The switch must clear this column when the error
1320         has been cleared.
1321       </p>
1322       <column name="acle_fault_status" key="invalid_acl_entry">
1323         <p>
1324           Indicates that an ACL entry requested by
1325           the controller could not be instantiated by the switch,
1326           e.g. because it requires an unsupported combination of
1327           fields to be matched.
1328         </p>
1329       </column>
1330       <column name="acle_fault_status" key="unspecified_fault">
1331         <p>
1332           Indicates that an error has occurred in configuring the ACL
1333           entry but no
1334           more specific information is available.
1335         </p>
1336       </column>
1337     </group>
1338   </table>
1339   <table name="ACL">
1340     <p>
1341       Access Control List table. Each ACL is constructed as a set of
1342       entries from the <ref table="ACL_entry"/> table. Packets that
1343       are not matched by any entry in the ACL are allowed by default.
1344     </p>
1345     <column name="acl_entries">
1346       <p>
1347         A set of references to entries in the <ref table="ACL_entry"/> table.
1348       </p>
1349     </column>
1350     <column name="acl_name">
1351       <p>
1352         A human readable name for the ACL, which may (for example) be displayed on
1353         the switch CLI.
1354       </p>
1355     </column>
1356     <group title="Error Notification">
1357       <p>
1358         An entry in this column indicates to the NVC that the ACL
1359         could not be configured as requested. The switch must clear this column when the error
1360         has been cleared.
1361       </p>
1362       <column name="acl_fault_status" key="invalid_acl">
1363         <p>
1364           Indicates that an ACL requested by
1365           the controller could not be instantiated by the switch,
1366           e.g., because it requires an unsupported combination of
1367           fields to be matched.
1368         </p>
1369       </column>
1370       <column name="acl_fault_status" key="resource_shortage">
1371         <p>
1372           Indicates that an ACL requested by
1373           the controller could not be instantiated by the switch due
1374           to a shortage of resources (e.g. TCAM space).
1375         </p>
1376       </column>
1377       <column name="acl_fault_status" key="unspecified_fault">
1378         <p>
1379           Indicates that an error has occurred in configuring the ACL
1380           but no
1381           more specific information is available.
1382         </p>
1383       </column>
1384     </group>
1385   </table>
1386 </database>