Provided by: ovn-central_2.5.9-0ubuntu0.16.04.3_amd64 bug

NAME

       ovn-nb - OVN_Northbound database schema

       This  database is the interface between OVN and the cloud management system (CMS), such as
       OpenStack, running above it.  The CMS produces almost all of the contents of the database.
       The  ovn-northd  program monitors the database contents, transforms it, and stores it into
       the OVN_Southbound database.

       We generally speak of ``the’’ CMS, but one can imagine scenarios in which  multiple  CMSes
       manage different parts of an OVN deployment.

   External IDs
       Each  of  the tables in this database contains a special column, named external_ids.  This
       column has the same form and purpose each place it appears.

              external_ids: map of string-string pairs
                     Key-value pairs for use by the CMS.  The CMS might use  certain  pairs,  for
                     example,  to  identify  entities in its own configuration that correspond to
                     those in this database.

TABLE SUMMARY

       The following list summarizes the purpose of each of  the  tables  in  the  OVN_Northbound
       database.  Each table is described in more detail on a later page.

       Table     Purpose
       Logical_Switch
                 L2 logical switch
       Logical_Port
                 L2 logical switch port
       ACL       Access Control List (ACL) rule
       Logical_Router
                 L3 logical router
       Logical_Router_Port
                 L3 logical router port

Logical_Switch TABLE

       Each row represents one L2 logical switch.

   Summary:
       name                          string
       ports                         set of Logical_Ports
       acls                          set of ACLs
       Common Columns:
         external_ids                map of string-string pairs

   Details:
       name: string
              A  name  for the logical switch.  This name has no special meaning or purpose other
              than to provide convenience for human interaction with the ovn-nb database.   There
              is  no  requirement for the name to be unique.  The logical switch’s UUID should be
              used as the unique identifier.

       ports: set of Logical_Ports
              The logical ports connected to the logical switch.

              It is an error for multiple logical switches to include the same logical port.

       acls: set of ACLs
              Access control rules that apply to packets within the logical switch.

     Common Columns:

       external_ids: map of string-string pairs
              See External IDs at the beginning of this document.

Logical_Port TABLE

       A port within an L2 logical switch.

   Summary:
       Core Features:
         name                        string (must be unique within table)
         type                        string
       Options:
         options                     map of string-string pairs
         Options for router ports:
            options : router-port    optional string
         Options for localnet ports:
            options : network_name   optional string
         Options for vtep ports:
            options : vtep-physical-switch
                                     optional string
            options : vtep-logical-switch
                                     optional string
       Containers:
         parent_name                 optional string
         tag                         optional integer, in range 1 to 4,095
       Port State:
         up                          optional boolean
         enabled                     optional boolean
       Addressing:
         addresses                   set of strings
         port_security               set of strings
       Common Columns:
         external_ids                map of string-string pairs

   Details:
     Core Features:

       name: string (must be unique within table)
              The logical port name.

              For entities (VMs or containers) that are spawned in the hypervisor, the name  used
              here  must  match  those  used  in  the  external_ids:iface-id  in the Open_vSwitch
              database’s Interface table, because  hypervisors  use  external_ids:iface-id  as  a
              lookup key to identify the network interface of that entity.

              For containers that share a VIF within a VM, the name can be any unique identifier.
              See Containers, below, for more information.

       type: string
              Specify a type for this logical port.  Logical ports can be  used  to  model  other
              types of connectivity into an OVN logical switch.  The following types are defined:

              (empty string)
                     A VM (or VIF) interface.

              router A connection to a logical router.

              localnet
                     A  connection  to  a  locally  accessible  network  from each ovn-controller
                     instance.  A logical switch can only have a single  localnet  port  attached
                     and  at  most  one  regular  logical  port.   This  is  used to model direct
                     connectivity to an existing network.

              vtep   A port to a logical switch on a VTEP gateway.

     Options:

       options: map of string-string pairs
              This column provides key/value settings specific to the  logical  port  type.   The
              type-specific options are described individually below.

     Options for router ports:
       These options apply when type is router.

       If  a  given  logical  switch has multiple router ports, the Logical_Router_Port rows that
       they reference must be all on the same Logical_Router (for different subnets).

       options : router-port: optional string
              Required.  The name of the Logical_Router_Port to which this logical switch port is
              connected.

     Options for localnet ports:
       These options apply when type is localnet.

       options : network_name: optional string
              Required.   The  name of the network to which the localnet port is connected.  Each
              hypervisor, via ovn-controller, uses its local configuration to  determine  exactly
              how to connect to this locally accessible network.

     Options for vtep ports:
       These options apply when type is vtep.

       options : vtep-physical-switch: optional string
              Required.  The name of the VTEP gateway.

       options : vtep-logical-switch: optional string
              Required.  A logical switch name connected by the VTEP gateway.

     Containers:
       When  a  large  number  of  containers  are nested within a VM, it may be too expensive to
       dedicate a VIF to each container.  OVN can use VLAN tags  to  support  such  cases.   Each
       container is assigned a VLAN ID and each packet that passes between the hypervisor and the
       VM is tagged with the appropriate ID for the container.  Such VLAN IDs never appear  on  a
       physical  wire,  even  inside  a  tunnel,  so they need not be unique except relative to a
       single VM on a hypervisor.

       These columns are used for VIFs that represent nested containers using shared  VIFs.   For
       VMs and for containers that have dedicated VIFs, they are empty.

       parent_name: optional string
              The  VM  interface  through  which  the nested container sends its network traffic.
              This must match the name column for some other Logical_Port.

       tag: optional integer, in range 1 to 4,095
              The VLAN  tag  in  the  network  traffic  associated  with  a  container’s  network
              interface.

              When  type is set to localnet, this can be set to indicate that the port represents
              a connection to a specific VLAN on a locally accessible network.  The  VLAN  ID  is
              used to match incoming traffic and is also added to outgoing traffic.

     Port State:

       up: optional boolean
              This column is populated by ovn-northd, rather than by the CMS plugin as is most of
              this database.  When a logical port is bound to a  physical  location  in  the  OVN
              Southbound  database Binding table, ovn-northd sets this column to true; otherwise,
              or if the port becomes unbound later, it sets it to false.  This allows the CMS  to
              wait  for  a VM’s (or container’s) networking to become active before it allows the
              VM (or container) to start.

       enabled: optional boolean
              This column is used to administratively set port state.  If this column is empty or
              is  set  to true, the port is enabled.  If this column is set to false, the port is
              disabled.  A disabled port has all ingress and egress traffic dropped.

     Addressing:

       addresses: set of strings
              Addresses owned by the logical port.

              Each element in the set must take one of the following forms:

              xx:xx:xx:xx:xx:xx
                     An Ethernet address owned by the logical port.   Like  a  physical  Ethernet
                     NIC, a logical port ordinarily has a single fixed Ethernet address.

                     When  a  OVN  logical  switch  processes  a  unicast  Ethernet  frame  whose
                     destination MAC address is in a logical port’s addresses column, it delivers
                     it  only  to  that  port,  as if a MAC learning process had learned that MAC
                     address on the port.

              xx:xx:xx:xx:xx:xx a.b.c.d
                     This form has all the effects of the previous form.  It also indicates  that
                     the logical port owns the given IPv4 address.

                     The  OVN logical switch uses this information to synthesize responses to ARP
                     requests without traversing the physical network.  The  OVN  logical  router
                     connected  to  the  logical  switch,  if any, uses this information to avoid
                     issuing ARP requests for logical switch ports.

                     Note that the order here is important. The Ethernet address must  be  listed
                     before the IP address.

              unknown
                     This  indicates  that  the  logical  port  has  an  unknown  set of Ethernet
                     addresses.  When an OVN logical switch processes a  unicast  Ethernet  frame
                     whose destination MAC address is not in any logical port’s addresses column,
                     it delivers it to the  port  (or  ports)  whose  addresses  columns  include
                     unknown.

       port_security: set of strings
              A  set  of  L2  (Ethernet) addresses from which the logical port is allowed to send
              packets and to which it is allowed to receive packets.  If this  column  is  empty,
              all  addresses  are permitted.  Logical ports are always allowed to receive packets
              addressed to multicast and broadcast addresses.

              Each member of the set is an Ethernet address in the form xx:xx:xx:xx:xx:xx.

              This specification will be extended to support L3 port security.

     Common Columns:

       external_ids: map of string-string pairs
              See External IDs at the beginning of this document.

ACL TABLE

       Each row in this table represents one ACL rule for a logical  switch  that  points  to  it
       through  its acls column.  The action column for the highest-priority matching row in this
       table determines a packet’s treatment.  If no row matches, packets are allowed by default.
       (Default-deny  treatment  is possible: add a rule with priority 0, 0 as match, and deny as
       action.)

   Summary:
       priority                      integer, in range 0 to 32,767
       direction                     string, either to-lport or from-lport
       match                         string
       action                        string, one of allow-related, drop, allow, or reject
       log                           boolean
       Common Columns:
         external_ids                map of string-string pairs

   Details:
       priority: integer, in range 0 to 32,767
              The ACL rule’s priority.  Rules with numerically higher  priority  take  precedence
              over  those  with  lower.  If two ACL rules with the same priority both match, then
              the one actually applied to a packet is undefined.

              Return traffic from an allow-related flow is always allowed and cannot  be  changed
              through an ACL.

       direction: string, either to-lport or from-lport
              Direction of the traffic to which this rule should apply:

              •      from-lport:  Used  to  implement  filters on traffic arriving from a logical
                     port.  These rules are applied to the logical switch’s ingress pipeline.

              •      to-lport: Used to implement filters on traffic forwarded to a logical  port.
                     These rules are applied to the logical switch’s egress pipeline.

       match: string
              The packets that the ACL should match, in the same expression language used for the
              match column in the OVN Southbound  database’s  Logical_Flow  table.   The  outport
              logical  port  is only available in the to-lport direction (the inport is available
              in both directions).

              By default all traffic is allowed.  When writing a more restrictive policy,  it  is
              important  to  remember  to  allow  flows  such  as ARP and IPv6 neighbor discovery
              packets.

              Note that you can not create an ACL matching on a port with type=router.

       action: string, one of allow-related, drop, allow, or reject
              The action to take when the ACL rule matches:

              •      allow: Forward the packet.

              •      allow-related: Forward the packet and related traffic (e.g. inbound  replies
                     to an outbound connection).

              •      drop: Silently drop the packet.

              •      reject:  Drop  the  packet,  replying with a RST for TCP or ICMP unreachable
                     message for other IP-based protocols.  Not implemented--currently treated as
                     drop

       log: boolean
              If  set  to  true,  packets  that  match  the ACL will trigger a log message on the
              transport node or nodes that perform ACL processing.  Logging may be combined  with
              any action.

              Logging is not yet implemented.

     Common Columns:

       external_ids: map of string-string pairs
              See External IDs at the beginning of this document.

Logical_Router TABLE

       Each row represents one L3 logical router.

   Summary:
       name                          string
       ports                         set of Logical_Router_Ports
       default_gw                    optional string
       Common Columns:
         external_ids                map of string-string pairs

   Details:
       name: string
              A  name  for the logical router.  This name has no special meaning or purpose other
              than to provide convenience for human interaction with the ovn-nb database.   There
              is  no  requirement for the name to be unique.  The logical router’s UUID should be
              used as the unique identifier.

       ports: set of Logical_Router_Ports
              The router’s ports.

       default_gw: optional string
              IP address to use as default gateway, if any.

     Common Columns:

       external_ids: map of string-string pairs
              See External IDs at the beginning of this document.

Logical_Router_Port TABLE

       A port within an L3 logical router.

       Exactly one Logical_Router row must reference a given logical router port.

   Summary:
       name                          string (must be unique within table)
       network                       string
       mac                           string
       enabled                       optional boolean
       Attachment:
         peer                        optional Logical_Router_Port
       Common Columns:
         external_ids                map of string-string pairs

   Details:
       name: string (must be unique within table)
              A name for the logical router port.

              In addition to provide convenience for human interaction with the ovn-nb  database,
              this  column  is  used  as  reference  by its patch port in Logical_Port or another
              logical router port in Logical_Router_Port.

       network: string
              The IP address  of  the  router  and  the  netmask.   For  example,  192.168.0.1/24
              indicates  that the router’s IP address is 192.168.0.1 and that packets destined to
              192.168.0.x should be routed to this port.

       mac: string
              The Ethernet address that belongs to this router port.

       enabled: optional boolean
              This column is used to administratively set port state.  If this column is empty or
              is  set  to true, the port is enabled.  If this column is set to false, the port is
              disabled.  A disabled port has all ingress and egress traffic dropped.

     Attachment:
       A given router port serves one of two purposes:

              •      To attach a logical switch to a logical router.  A logical  router  port  of
                     this  type  is  referenced  by exactly one Logical_Port of type router.  The
                     value of name is set as router-port in column options of  Logical_Port.   In
                     this case peer column is empty.

              •      To  connect  one logical router to another.  This requires a pair of logical
                     router ports, each connected to a different router.  Each router port in the
                     pair  specifies  the  other in its peer column.  No Logical_Switch refers to
                     the router port.

       peer: optional Logical_Router_Port
              For a router port used to connect two logical routers, this  identifies  the  other
              router port in the pair by name.

              For a router port attached to a logical switch, this column is empty.

     Common Columns:

       external_ids: map of string-string pairs
              See External IDs at the beginning of this document.