1ovn-sb(5)                     Open vSwitch Manual                    ovn-sb(5)
2
3
4

NAME

6       ovn-sb - OVN_Southbound database schema
7
8       This  database  holds  logical and physical configuration and state for
9       the Open Virtual  Network  (OVN)  system  to  support  virtual  network
10       abstraction.  For  an  introduction  to  OVN,  please see ovn-architec‐
11       ture(7).
12
13       The OVN Southbound database sits at the center of the OVN architecture.
14       It is the one component that speaks both southbound directly to all the
15       hypervisors and gateways, via  ovn-controller/ovn-controller-vtep,  and
16       northbound to the Cloud Management System, via ovn-northd:
17
18   Database Structure
19       The  OVN  Southbound  database  contains classes of data with different
20       properties, as described in the sections below.
21
22     Physical network
23
24       Physical network tables contain information about the chassis nodes  in
25       the  system.  This  contains  all the information necessary to wire the
26       overlay, such as IP addresses, supported  tunnel  types,  and  security
27       keys.
28
29       The  amount  of  physical  network data is small (O(n) in the number of
30       chassis) and it changes infrequently, so it can be replicated to  every
31       chassis.
32
33       The Chassis and Encap tables are the physical network tables.
34
35     Logical Network
36
37       Logical  network  tables  contain  the topology of logical switches and
38       routers, ACLs, firewall rules, and everything needed  to  describe  how
39       packets  traverse  a  logical  network, represented as logical datapath
40       flows (see Logical Datapath Flows, below).
41
42       Logical network data may be large (O(n) in the number of logical ports,
43       ACL rules, etc.). Thus, to improve scaling, each chassis should receive
44       only data related to logical networks in which  that  chassis  partici‐
45       pates.
46
47       The  logical network data is ultimately controlled by the cloud manage‐
48       ment system (CMS) running northbound of OVN. That  CMS  determines  the
49       entire OVN logical configuration and therefore the logical network data
50       at any given time is a deterministic function of the  CMS’s  configura‐
51       tion,  although that happens indirectly via the OVN_Northbound database
52       and ovn-northd.
53
54       Logical network data is likely to change  more  quickly  than  physical
55       network  data. This is especially true in a container environment where
56       containers are created  and  destroyed  (and  therefore  added  to  and
57       deleted from logical switches) quickly.
58
59       The   Logical_Flow,   Multicast_Group,   Address_Group,   DHCP_Options,
60       DHCPv6_Options, and DNS tables contain logical network data.
61
62     Logical-physical bindings
63
64       These tables link logical and physical components. They show  the  cur‐
65       rent  placement of logical components (such as VMs and VIFs) onto chas‐
66       sis, and map logical entities to the values that represent them in tun‐
67       nel encapsulations.
68
69       These  tables  change frequently, at least every time a VM powers up or
70       down or migrates, and especially quickly in  a  container  environment.
71       The amount of data per VM (or VIF) is small.
72
73       Each  chassis  is authoritative about the VMs and VIFs that it hosts at
74       any given time and can efficiently flood that state to a central  loca‐
75       tion, so the consistency needs are minimal.
76
77       The Port_Binding and Datapath_Binding tables contain binding data.
78
79     MAC bindings
80
81       The MAC_Binding table tracks the bindings from IP addresses to Ethernet
82       addresses that are dynamically discovered  using  ARP  (for  IPv4)  and
83       neighbor  discovery (for IPv6). Usually, IP-to-MAC bindings for virtual
84       machines are statically  populated  into  the  Port_Binding  table,  so
85       MAC_Binding  is  primarily  used  to discover bindings on physical net‐
86       works.
87
88   Common Columns
89       Some tables contain a special column named  external_ids.  This  column
90       has  the  same  form  and  purpose  each  place  that it appears, so we
91       describe it here to save space later.
92
93              external_ids: map of string-string pairs
94                     Key-value pairs for use by the software that manages  the
95                     OVN   Southbound   database   rather   than  by  ovn-con‐
96                     troller/ovn-controller-vtep.  In  particular,  ovn-northd
97                     can use key-value pairs in this column to relate entities
98                     in the southbound database to higher-level entities (such
99                     as  entities  in the OVN Northbound database). Individual
100                     key-value pairs in this column may be documented in  some
101                     cases  to  aid  in understanding and troubleshooting, but
102                     the reader should not mistake such documentation as  com‐
103                     prehensive.
104

TABLE SUMMARY

106       The  following list summarizes the purpose of each of the tables in the
107       OVN_Southbound database.  Each table is described in more detail  on  a
108       later page.
109
110       Table     Purpose
111       SB_Global Southbound configuration
112       Chassis   Physical Network Hypervisor and Gateway Information
113       Chassis_Private
114                 Chassis Private
115       Encap     Encapsulation Types
116       Address_Set
117                 Address Sets
118       Port_Group
119                 Port Groups
120       Logical_Flow
121                 Logical Network Flows
122       Logical_DP_Group
123                 Logical Datapath Groups
124       Multicast_Group
125                 Logical Port Multicast Groups
126       Meter     Meter entry
127       Meter_Band
128                 Band for meter entries
129       Datapath_Binding
130                 Physical-Logical Datapath Bindings
131       Port_Binding
132                 Physical-Logical Port Bindings
133       MAC_Binding
134                 IP to MAC bindings
135       DHCP_Options
136                 DHCP Options supported by native OVN DHCP
137       DHCPv6_Options
138                 DHCPv6 Options supported by native OVN DHCPv6
139       Connection
140                 OVSDB client connections.
141       SSL       SSL configuration.
142       DNS       Native DNS resolution
143       RBAC_Role RBAC_Role configuration.
144       RBAC_Permission
145                 RBAC_Permission configuration.
146       Gateway_Chassis
147                 Gateway_Chassis configuration.
148       HA_Chassis
149                 HA_Chassis configuration.
150       HA_Chassis_Group
151                 HA_Chassis_Group configuration.
152       Controller_Event
153                 Controller Event table
154       IP_Multicast
155                 IP_Multicast configuration.
156       IGMP_Group
157                 IGMP_Group configuration.
158       Service_Monitor
159                 Service_Monitor configuration.
160       Load_Balancer
161                 Load_Balancer configuration.
162       BFD       BFD configuration.
163

SB_Global TABLE

165       Southbound  configuration  for  an  OVN  system.  This  table must have
166       exactly one row.
167
168   Summary:
169       Status:
170         nb_cfg                      integer
171       Common Columns:
172         external_ids                map of string-string pairs
173         options                     map of string-string pairs
174       Common options:
175         options                     map of string-string pairs
176         Options for configuring BFD:
177            options : bfd-min-rx     optional string
178            options : bfd-decay-min-rx
179                                     optional string
180            options : bfd-min-tx     optional string
181            options : bfd-mult       optional string
182       Connection Options:
183         connections                 set of Connections
184         ssl                         optional SSL
185       Security Configurations:
186         ipsec                       boolean
187
188   Details:
189     Status:
190
191       This column allow a client to track the overall configuration state  of
192       the system.
193
194       nb_cfg: integer
195              Sequence  number  for the configuration. When a CMS or ovn-nbctl
196              updates the northbound database, it increments the nb_cfg column
197              in the NB_Global table in the northbound database. In turn, when
198              ovn-northd updates the southbound database to  bring  it  up  to
199              date  with  these  changes,  it  updates this column to the same
200              value.
201
202     Common Columns:
203
204       external_ids: map of string-string pairs
205              See External IDs at the beginning of this document.
206
207       options: map of string-string pairs
208
209     Common options:
210
211       options: map of string-string pairs
212              This column provides general key/value settings.  The  supported
213              options are described individually below.
214
215     Options for configuring BFD:
216
217       These  options  apply  when  ovn-controller  configures  BFD on tunnels
218       interfaces.
219
220       options : bfd-min-rx: optional string
221              BFD option min-rx value to use when configuring  BFD  on  tunnel
222              interfaces.
223
224       options : bfd-decay-min-rx: optional string
225              BFD  option  decay-min-rx  value  to use when configuring BFD on
226              tunnel interfaces.
227
228       options : bfd-min-tx: optional string
229              BFD option min-tx value to use when configuring  BFD  on  tunnel
230              interfaces.
231
232       options : bfd-mult: optional string
233              BFD  option  mult  value  to  use when configuring BFD on tunnel
234              interfaces.
235
236     Connection Options:
237
238       connections: set of Connections
239              Database clients to  which  the  Open  vSwitch  database  server
240              should  connect or on which it should listen, along with options
241              for how these connections should be configured. See the  Connec‐
242              tion table for more information.
243
244       ssl: optional SSL
245              Global SSL configuration.
246
247     Security Configurations:
248
249       ipsec: boolean
250              Tunnel  encryption  configuration.  If  this column is set to be
251              true, all OVN tunnels will be encrypted with IPsec.
252

Chassis TABLE

254       Each row in this table represents a hypervisor or gateway  (a  chassis)
255       in  the  physical  network.  Each  chassis, via ovn-controller/ovn-con‐
256       troller-vtep, adds and updates its own row, and keeps  a  copy  of  the
257       remaining rows to determine how to reach other hypervisors.
258
259       When  a  chassis  shuts  down gracefully, it should remove its own row.
260       (This is not critical because  resources  hosted  on  the  chassis  are
261       equally  unreachable  regardless  of  whether the row is present.) If a
262       chassis shuts down permanently without removing its row, some  kind  of
263       manual  or  automatic  cleanup  is  eventually  needed; we can devise a
264       process for that as necessary.
265
266   Summary:
267       name                          string (must be unique within table)
268       hostname                      string
269       nb_cfg                        integer
270       other_config : ovn-bridge-mappings
271                                     optional string
272       other_config : datapath-type  optional string
273       other_config : iface-types    optional string
274       other_config : ovn-cms-options
275                                     optional string
276       other_config : is-interconn   optional string
277       other_config : is-remote      optional string
278       transport_zones               set of strings
279       other_config : ovn-chassis-mac-mappings
280                                     optional string
281       other_config : port-up-notif  optional string
282       Common Columns:
283         external_ids                map of string-string pairs
284       Encapsulation Configuration:
285         encaps                      set of 1 or more Encaps
286       Gateway Configuration:
287         vtep_logical_switches       set of strings
288
289   Details:
290       name: string (must be unique within table)
291              OVN does not prescribe a particular format  for  chassis  names.
292              ovn-controller  populates this column using external_ids:system-
293              id in the Open_vSwitch database’s Open_vSwitch  table.  ovn-con‐
294              troller-vtep  populates  this  column  with  name  in  the hard‐
295              ware_vtep database’s Physical_Switch table.
296
297       hostname: string
298              The hostname of the chassis, if applicable. ovn-controller  will
299              populate this column with the hostname of the host it is running
300              on. ovn-controller-vtep will leave this column empty.
301
302       nb_cfg: integer
303              Deprecated. This column is replaced by the nb_cfg column of  the
304              Chassis_Private table.
305
306       other_config : ovn-bridge-mappings: optional string
307              ovn-controller  populates  this  key with the set of bridge map‐
308              pings it has been configured to use. Other  applications  should
309              treat  this  key  as  read-only.  See ovn-controller(8) for more
310              information.
311
312       other_config : datapath-type: optional string
313              ovn-controller populates this key with the datapath type config‐
314              ured  in the datapath_type column of the Open_vSwitch database’s
315              Bridge table. Other applications should treat this key as  read-
316              only. See ovn-controller(8) for more information.
317
318       other_config : iface-types: optional string
319              ovn-controller  populates this key with the interface types con‐
320              figured in the iface_types column of the Open_vSwitch database’s
321              Open_vSwitch  table. Other applications should treat this key as
322              read-only. See ovn-controller(8) for more information.
323
324       other_config : ovn-cms-options: optional string
325              ovn-controller populates this key with the set of  options  con‐
326              figured   in  the  external_ids:ovn-cms-options  column  of  the
327              Open_vSwitch  database’s  Open_vSwitch   table.   See   ovn-con‐
328              troller(8) for more information.
329
330       other_config : is-interconn: optional string
331              ovn-controller populates this key with the setting configured in
332              the external_ids:ovn-is-interconn  column  of  the  Open_vSwitch
333              database’s  Open_vSwitch  table.  If set to true, the chassis is
334              used as an interconnection gateway.  See  ovn-controller(8)  for
335              more information.
336
337       other_config : is-remote: optional string
338              ovn-ic  set  this key to true for remote interconnection gateway
339              chassises learned from the interconnection southbound  database.
340              See ovn-ic(8) for more information.
341
342       transport_zones: set of strings
343              ovn-controller  populates this key with the transport zones con‐
344              figured in the external_ids:ovn-transport-zones  column  of  the
345              Open_vSwitch   database’s   Open_vSwitch   table.  See  ovn-con‐
346              troller(8) for more information.
347
348       other_config : ovn-chassis-mac-mappings: optional string
349              ovn-controller populates this key with the set of  options  con‐
350              figured  in  the external_ids:ovn-chassis-mac-mappings column of
351              the Open_vSwitch database’s  Open_vSwitch  table.  See  ovn-con‐
352              troller(8) for more information.
353
354       other_config : port-up-notif: optional string
355              ovn-controller  populates  this  key  with true when it supports
356              Port_Binding.up.
357
358     Common Columns:
359
360       The overall purpose of these columns is described under Common  Columns
361       at the beginning of this document.
362
363       external_ids: map of string-string pairs
364
365     Encapsulation Configuration:
366
367       OVN  uses  encapsulation  to transmit logical dataplane packets between
368       chassis.
369
370       encaps: set of 1 or more Encaps
371              Points to supported  encapsulation  configurations  to  transmit
372              logical dataplane packets to this chassis. Each entry is a Encap
373              record that describes the configuration.
374
375     Gateway Configuration:
376
377       A gateway is a chassis that forwards traffic  between  the  OVN-managed
378       part of a logical network and a physical VLAN, extending a tunnel-based
379       logical network into a physical network. Gateways are  typically  dedi‐
380       cated  nodes  that  do  not host VMs and will be controlled by ovn-con‐
381       troller-vtep.
382
383       vtep_logical_switches: set of strings
384              Stores all VTEP logical switch names connected by  this  gateway
385              chassis.  The  Port_Binding table entry with options:vtep-physi‐
386              cal-switch equal Chassis name,  and  options:vtep-logical-switch
387              value  in Chassis vtep_logical_switches, will be associated with
388              this Chassis.
389

Chassis_Private TABLE

391       Each row in this table maintains per  chassis  private  data  that  are
392       accessed only by the owning chassis (write only) and ovn-northd, not by
393       any other chassis. These data are stored in this separate table instead
394       of  the  Chassis table for performance considerations: the rows in this
395       table can be conditionally monitored by chassises so that each  chassis
396       only  get  update  notifications  for its own row, to avoid unnecessary
397       chassis private data update flooding in a large scale deployment.
398
399   Summary:
400       name                          string (must be unique within table)
401       chassis                       optional weak reference to Chassis
402       nb_cfg                        integer
403       nb_cfg_timestamp              integer
404       Common Columns:
405         external_ids                map of string-string pairs
406
407   Details:
408       name: string (must be unique within table)
409              The name of the chassis that owns these chassis-private data.
410
411       chassis: optional weak reference to Chassis
412              The reference to Chassis table for the chassis that  owns  these
413              chassis-private data.
414
415       nb_cfg: integer
416              Sequence  number  for  the  configuration.  When  ovn-controller
417              updates the configuration of a chassis from the contents of  the
418              southbound  database,  it copies nb_cfg from the SB_Global table
419              into this column.
420
421       nb_cfg_timestamp: integer
422              The timestamp when ovn-controller finishes processing the change
423              corresponding to nb_cfg.
424
425     Common Columns:
426
427       The  overall purpose of these columns is described under Common Columns
428       at the beginning of this document.
429
430       external_ids: map of string-string pairs
431

Encap TABLE

433       The encaps column in the Chassis table refers to rows in this table  to
434       identify  how  OVN may transmit logical dataplane packets to this chas‐
435       sis. Each chassis,  via  ovn-controller(8)  or  ovn-controller-vtep(8),
436       adds and updates its own rows and keeps a copy of the remaining rows to
437       determine how to reach other chassis.
438
439   Summary:
440       type                          string, one of geneve, stt, or vxlan
441       options                       map of string-string pairs
442       options : csum                optional string, either true or false
443       options : dst_port            optional string, containing an integer
444       ip                            string
445       chassis_name                  string
446
447   Details:
448       type: string, one of geneve, stt, or vxlan
449              The encapsulation to use to transmit packets  to  this  chassis.
450              Hypervisors  must  use  either  geneve  or stt. Gateways may use
451              vxlan, geneve, or stt.
452
453       options: map of string-string pairs
454              Options for configuring the encapsulation,  which  may  be  type
455              specific.
456
457       options : csum: optional string, either true or false
458              csum  indicates  whether  this  chassis can transmit and receive
459              packets that include checksums with reasonable  performance.  It
460              hints  to  senders  transmitting  data to this chassis that they
461              should use checksums to  protect  OVN  metadata.  ovn-controller
462              populates  this  key with the value defined in external_ids:ovn-
463              encap-csum column of the  Open_vSwitch  database’s  Open_vSwitch
464              table.  Other  applications  should treat this key as read-only.
465              See ovn-controller(8) for more information.
466
467              In terms of  performance,  checksumming  actually  significantly
468              increases  throughput in most common cases when running on Linux
469              based hosts without NICs supporting encapsulation hardware  off‐
470              load (around 60% for bulk traffic). The reason is that generally
471              all NICs are capable  of  offloading  transmitted  and  received
472              TCP/UDP  checksums  (viewed  as ordinary data packets and not as
473              tunnels). The benefit comes on the receive side where the  vali‐
474              dated  outer  checksum  can  be used to additionally validate an
475              inner checksum (such as TCP), which in turn  allows  aggregation
476              of  packets  to  be  more efficiently handled by the rest of the
477              stack.
478
479              Not all devices see such a benefit. The most  notable  exception
480              is  hardware  VTEPs.  These  devices  are designed to not buffer
481              entire packets in their  switching  engines  and  are  therefore
482              unable to efficiently compute or validate full packet checksums.
483              In addition certain versions of the Linux kernel are not able to
484              fully  take advantage of encapsulation NIC offloads in the pres‐
485              ence of checksums. (This is actually a pretty narrow corner case
486              though:  earlier  versions  of Linux don’t support encapsulation
487              offloads at all and later versions  support  both  offloads  and
488              checksums well.)
489
490              csum defaults to false for hardware VTEPs and true for all other
491              cases.
492
493              This option applies to geneve and vxlan encapsulations.
494
495       options : dst_port: optional string, containing an integer
496              If set, overrides the UDP (for geneve and  vxlan)  or  TCP  (for
497              stt) destination port.
498
499       ip: string
500              The IPv4 address of the encapsulation tunnel endpoint.
501
502       chassis_name: string
503              The name of the chassis that created this encap.
504

Address_Set TABLE

506       This  table  contains address sets synced from the Address_Set table in
507       the  OVN_Northbound  database  and  address  sets  generated  from  the
508       Port_Group table in the OVN_Northbound database.
509
510       See the documentation for the Address_Set table and Port_Group table in
511       the OVN_Northbound database for details.
512
513   Summary:
514       name                          string (must be unique within table)
515       addresses                     set of strings
516
517   Details:
518       name: string (must be unique within table)
519
520       addresses: set of strings
521

Port_Group TABLE

523       This  table  contains  names  for  the  logical  switch  ports  in  the
524       OVN_Northbound  database that belongs to the same group that is defined
525       in Port_Group in the OVN_Northbound database.
526
527   Summary:
528       name                          string (must be unique within table)
529       ports                         set of strings
530
531   Details:
532       name: string (must be unique within table)
533
534       ports: set of strings
535

Logical_Flow TABLE

537       Each row in this table represents one logical  flow.  ovn-northd  popu‐
538       lates  this  table  with  logical  flows  that  implement the L2 and L3
539       topologies specified in the OVN_Northbound database.  Each  hypervisor,
540       via  ovn-controller,  translates  the logical flows into OpenFlow flows
541       specific to its hypervisor and installs them into Open vSwitch.
542
543       Logical flows are expressed in an OVN-specific format, described  here.
544       A  logical datapath flow is much like an OpenFlow flow, except that the
545       flows are written in terms  of  logical  ports  and  logical  datapaths
546       instead  of  physical ports and physical datapaths. Translation between
547       logical and physical flows helps to ensure  isolation  between  logical
548       datapaths.  (The  logical flow abstraction also allows the OVN central‐
549       ized components to do less work, since they do not have  to  separately
550       compute and push out physical flows to each chassis.)
551
552       The default action when no flow matches is to drop packets.
553
554       Architectural Logical Life Cycle of a Packet
555
556       This  following  description  focuses  on  the  life  cycle of a packet
557       through a logical datapath, ignoring physical details of the  implemen‐
558       tation.  Please  refer to Architectural Physical Life Cycle of a Packet
559       in ovn-architecture(7) for the physical information.
560
561       The description here is written as if OVN itself executes these  steps,
562       but  in  fact  OVN (that is, ovn-controller) programs Open vSwitch, via
563       OpenFlow and OVSDB, to execute them on its behalf.
564
565       At a high level, OVN passes each packet through the logical  datapath’s
566       logical  ingress  pipeline,  which may output the packet to one or more
567       logical port or logical multicast groups. For each such logical  output
568       port, OVN passes the packet through the datapath’s logical egress pipe‐
569       line, which may either drop the packet or deliver it  to  the  destina‐
570       tion.  Between  the  two pipelines, outputs to logical multicast groups
571       are expanded into logical ports, so that the egress pipeline only  pro‐
572       cesses  a  single  logical output port at a time. Between the two pipe‐
573       lines is also where, when necessary, OVN encapsulates  a  packet  in  a
574       tunnel (or tunnels) to transmit to remote hypervisors.
575
576       In more detail, to start, OVN searches the Logical_Flow table for a row
577       with correct logical_datapath or  a  logical_dp_group,  a  pipeline  of
578       ingress,  a  table_id of 0, and a match that is true for the packet. If
579       none is found, OVN drops the packet. If OVN finds  more  than  one,  it
580       chooses  the match with the highest priority. Then OVN executes each of
581       the actions specified in the row’s actions column, in the order  speci‐
582       fied.  Some actions, such as those to modify packet headers, require no
583       further details. The next and output actions are special.
584
585       The next action causes the above process to  be  repeated  recursively,
586       except that OVN searches for table_id of 1 instead of 0. Similarly, any
587       next action in a row found in that table would cause a  further  search
588       for  a  table_id  of 2, and so on. When recursive processing completes,
589       flow control returns to the action following next.
590
591       The output action also introduces recursion. Its effect depends on  the
592       current  value of the outport field. Suppose outport designates a logi‐
593       cal port. First, OVN compares inport to outport; if they are equal,  it
594       treats the output as a no-op by default. In the common case, where they
595       are different, the packet enters the egress pipeline.  This  transition
596       to  the  egress pipeline discards register data, e.g. reg0 ... reg9 and
597       connection tracking state, to achieve uniform  behavior  regardless  of
598       whether  the egress pipeline is on a different hypervisor (because reg‐
599       isters aren’t preserve across tunnel encapsulation).
600
601       To execute the egress pipeline, OVN again searches the Logical_Flow ta‐
602       ble  for  a  row with correct logical_datapath or a logical_dp_group, a
603       table_id of 0, a match that is true for the packet, but now looking for
604       a pipeline of egress. If no matching row is found, the output becomes a
605       no-op. Otherwise, OVN executes the actions for the matching flow (which
606       is chosen from multiple, if necessary, as already described).
607
608       In  the  egress  pipeline,  the  next action acts as already described,
609       except that it, of  course,  searches  for  egress  flows.  The  output
610       action,  however,  now  directly  outputs the packet to the output port
611       (which is now fixed, because outport is  read-only  within  the  egress
612       pipeline).
613
614       The  description  earlier  assumed  that  outport referred to a logical
615       port. If it instead designates a  logical  multicast  group,  then  the
616       description  above still applies, with the addition of fan-out from the
617       logical multicast group to each logical port in  the  group.  For  each
618       member  of  the  group, OVN executes the logical pipeline as described,
619       with the logical output port replaced by the group member.
620
621       Pipeline Stages
622
623       ovn-northd populates the Logical_Flow  table  with  the  logical  flows
624       described in detail in ovn-northd(8).
625
626   Summary:
627       logical_datapath              optional Datapath_Binding
628       logical_dp_group              optional Logical_DP_Group
629       pipeline                      string, either egress or ingress
630       table_id                      integer, in range 0 to 23
631       priority                      integer, in range 0 to 65,535
632       match                         string
633       actions                       string
634       external_ids : stage-name     optional string
635       external_ids : stage-hint     optional string, containing an uuid
636       external_ids : source         optional string
637       Common Columns:
638         external_ids                map of string-string pairs
639
640   Details:
641       logical_datapath: optional Datapath_Binding
642              The logical datapath to which the logical flow belongs.
643
644       logical_dp_group: optional Logical_DP_Group
645              The  group  of  logical  datapaths  to  which  the  logical flow
646              belongs. This means that the same logical flow  belongs  to  all
647              datapaths in a group.
648
649       pipeline: string, either egress or ingress
650              The  primary  flows  used for deciding on a packet’s destination
651              are the ingress flows. The egress flows implement ACLs. See Log‐
652              ical Life Cycle of a Packet, above, for details.
653
654       table_id: integer, in range 0 to 23
655              The  stage in the logical pipeline, analogous to an OpenFlow ta‐
656              ble number.
657
658       priority: integer, in range 0 to 65,535
659              The flow’s priority. Flows with numerically higher priority take
660              precedence  over those with lower. If two logical datapath flows
661              with the same priority both match, then the one actually applied
662              to the packet is undefined.
663
664       match: string
665              A  matching  expression.  OVN  provides  a  superset of OpenFlow
666              matching capabilities, using a syntax similar to Boolean expres‐
667              sions in a programming language.
668
669              The  most  important  components of match expression are compar‐
670              isons  between  symbols   and   constants,   e.g.   ip4.dst   ==
671              192.168.0.1,  ip.proto == 6, arp.op == 1, eth.type == 0x800. The
672              logical AND operator && and logical OR operator ||  can  combine
673              comparisons into a larger expression.
674
675              Matching  expressions also support parentheses for grouping, the
676              logical NOT prefix operator !, and literals 0 and 1  to  express
677              ``false’’  or  ``true,’’  respectively.  The latter is useful by
678              itself as a catch-all expression that matches every packet.
679
680              Match expressions also support a kind of  function  syntax.  The
681              following functions are supported:
682
683              is_chassis_resident(lport)
684                     Evaluates  to  true  on  a  chassis on which logical port
685                     lport (a quoted string) resides, and to false  elsewhere.
686                     This function was introduced in OVN 2.7.
687
688              Symbols
689
690              Type.  Symbols have integer or string type. Integer symbols have
691              a width in bits.
692
693              Kinds. There are three kinds of symbols:
694
695              ·      Fields. A field symbol  represents  a  packet  header  or
696                     metadata field. For example, a field named vlan.tci might
697                     represent the VLAN TCI field in a packet.
698
699                     A field symbol can have integer or string  type.  Integer
700                     fields  can  be nominal or ordinal (see Level of Measure‐
701                     ment, below).
702
703              ·      Subfields. A subfield represents a subset of bits from  a
704                     larger  field.  For  example,  a  field vlan.vid might be
705                     defined as an alias for  vlan.tci[0..11].  Subfields  are
706                     provided  for syntactic convenience, because it is always
707                     possible to instead refer to a  subset  of  bits  from  a
708                     field directly.
709
710                     Only ordinal fields (see Level of Measurement, below) may
711                     have subfields. Subfields are always ordinal.
712
713              ·      Predicates.  A  predicate  is  shorthand  for  a  Boolean
714                     expression.  Predicates  may  be  used  much  like  1-bit
715                     fields. For example, ip4  might  expand  to  eth.type  ==
716                     0x800. Predicates are provided for syntactic convenience,
717                     because it is always  possible  to  instead  specify  the
718                     underlying expression directly.
719
720                     A  predicate  whose expansion refers to any nominal field
721                     or predicate (see Level of Measurement, below)  is  nomi‐
722                     nal; other predicates have Boolean level of measurement.
723
724              Level              of              Measurement.              See
725              http://en.wikipedia.org/wiki/Level_of_measurement for  the  sta‐
726              tistical  concept  on  which this classification is based. There
727              are three levels:
728
729              ·      Ordinal. In statistics, ordinal values can be ordered  on
730                     a  scale. OVN considers a field (or subfield) to be ordi‐
731                     nal if its bits can be  examined  individually.  This  is
732                     true  for  the  OpenFlow  fields  that  OpenFlow  or Open
733                     vSwitch makes ``maskable.’’
734
735                     Any use of a ordinal field may specify a single bit or  a
736                     range  of  bits,  e.g. vlan.tci[13..15] refers to the PCP
737                     field within the VLAN TCI, and eth.dst[40] refers to  the
738                     multicast bit in the Ethernet destination address.
739
740                     OVN  supports all the usual arithmetic relations (==, !=,
741                     <, <=, >, and >=) on ordinal fields and their  subfields,
742                     because  OVN  can  implement  these  in OpenFlow and Open
743                     vSwitch as collections of bitwise tests.
744
745              ·      Nominal. In statistics, nominal values cannot be usefully
746                     compared  except  for  equality. This is true of OpenFlow
747                     port numbers, Ethernet types, and IP protocols are  exam‐
748                     ples:  all  of  these are just identifiers assigned arbi‐
749                     trarily with no deeper  meaning.  In  OpenFlow  and  Open
750                     vSwitch,  bits in these fields generally aren’t individu‐
751                     ally addressable.
752
753                     OVN only supports arithmetic tests for equality on  nomi‐
754                     nal  fields, because OpenFlow and Open vSwitch provide no
755                     way for a flow to efficiently implement other comparisons
756                     on  them. (A test for inequality can be sort of built out
757                     of two flows with different priorities, but OVN  matching
758                     expressions  always  generate  flows with a single prior‐
759                     ity.)
760
761                     String fields are always nominal.
762
763              ·      Boolean. A nominal field that has only two values, 0  and
764                     1,  is  somewhat exceptional, since it is easy to support
765                     both equality and  inequality  tests  on  such  a  field:
766                     either one can be implemented as a test for 0 or 1.
767
768                     Only  predicates (see above) have a Boolean level of mea‐
769                     surement.
770
771                     This isn’t a standard level of measurement.
772
773              Prerequisites. Any symbol  can  have  prerequisites,  which  are
774              additional condition implied by the use of the symbol. For exam‐
775              ple, For example,  icmp4.type  symbol  might  have  prerequisite
776              icmp4,  which  would  cause  an expression icmp4.type == 0 to be
777              interpreted as icmp4.type == 0 && icmp4,  which  would  in  turn
778              expand to icmp4.type == 0 && eth.type == 0x800 && ip4.proto == 1
779              (assuming icmp4 is a predicate defined as suggested under  Types
780              above).
781
782              Relational operators
783
784              All  of  the standard relational operators ==, !=, <, <=, >, and
785              >= are supported. Nominal fields support only  ==  and  !=,  and
786              only  in  a  positive sense when outer ! are taken into account,
787              e.g. given string field inport, inport == "eth0" and !(inport !=
788              "eth0") are acceptable, but not inport != "eth0".
789
790              The  implementation  of  ==  (or != when it is negated), is more
791              efficient than that of the other relational operators.
792
793              Constants
794
795              Integer constants may be expressed in decimal, hexadecimal  pre‐
796              fixed by 0x, or as dotted-quad IPv4 addresses, IPv6 addresses in
797              their standard forms, or Ethernet addresses  as  colon-separated
798              hex  digits. A constant in any of these forms may be followed by
799              a slash and a second constant (the mask) in the  same  form,  to
800              form  a  masked  constant.  IPv4  and IPv6 masks may be given as
801              integers, to express CIDR prefixes.
802
803              String constants have the same syntax as quoted strings in  JSON
804              (thus, they are Unicode strings).
805
806              Some  operators  support  sets of constants written inside curly
807              braces { ... }. Commas between elements of a set, and after  the
808              last  elements,  are  optional. With ==, ``field == { constant1,
809              constant2, ... }’’ is syntactic sugar for ``field  ==  constant1
810              || field == constant2 || .... Similarly, ``field != { constant1,
811              constant2, ... }’’ is equivalent  to  ``field  !=  constant1  &&
812              field != constant2 && ...’’.
813
814              You may refer to a set of IPv4, IPv6, or MAC addresses stored in
815              the Address_Set table by its name. An Address_Set with a name of
816              set1 can be referred to as $set1.
817
818              You  may  refer to a group of logical switch ports stored in the
819              Port_Group table by its name.  An  Port_Group  with  a  name  of
820              port_group1 can be referred to as @port_group1.
821
822              Additionally, you may refer to the set of addresses belonging to
823              a group of logical switch ports stored in the  Port_Group  table
824              by its name followed by a suffix ’_ip4’/’_ip6’. The IPv4 address
825              set of a Port_Group with a name of port_group1 can  be  referred
826              to  as  $port_group1_ip4,  and  the IPv6 address set of the same
827              Port_Group can be referred to as $port_group1_ip6
828
829              Miscellaneous
830
831              Comparisons may name the symbol  or  the  constant  first,  e.g.
832              tcp.src == 80 and 80 == tcp.src are both acceptable.
833
834              Tests  for  a range may be expressed using a syntax like 1024 <=
835              tcp.src <= 49151, which is equivalent  to  1024  <=  tcp.src  &&
836              tcp.src <= 49151.
837
838              For  a  one-bit  field  or  predicate,  a mention of its name is
839              equivalent to symobl == 1, e.g. vlan.present  is  equivalent  to
840              vlan.present  == 1. The same is true for one-bit subfields, e.g.
841              vlan.tci[12]. There is no technical limitation  to  implementing
842              the  same  for ordinal fields of all widths, but the implementa‐
843              tion is expensive enough that the syntax parser requires writing
844              an  explicit  comparison  against  zero  to  make  mistakes less
845              likely, e.g. in  tcp.src  !=  0  the  comparison  against  0  is
846              required.
847
848              Operator  precedence  is as shown below, from highest to lowest.
849              There are two exceptions where  parentheses  are  required  even
850              though  the  table  would  suggest  that they are not: && and ||
851              require parentheses when used together, and ! requires parenthe‐
852              ses  when applied to a relational expression. Thus, in (eth.type
853              == 0x800 || eth.type == 0x86dd) && ip.proto == 6 or !(arp.op  ==
854              1), the parentheses are mandatory.
855
856              ·      ()
857
858              ·      ==   !=   <   <=   >   >=
859
860              ·      !
861
862              ·      &&   ||
863
864              Comments may be introduced by //, which extends to the next new-
865              line. Comments within a line may be bracketed by /* and */. Mul‐
866              tiline comments are not supported.
867
868              Symbols
869
870              Most  of  the  symbols  below have integer type. Only inport and
871              outport have string type. inport names a logical port. Thus, its
872              value  is  a logical_port name from the Port_Binding table. out‐
873              port may name a logical port, as inport, or a logical  multicast
874              group  defined  in  the Multicast_Group table. For both symbols,
875              only names within the flow’s logical datapath may be used.
876
877              The regX symbols are 32-bit integers.  The  xxregX  symbols  are
878              128-bit  integers,  which  overlay four of the 32-bit registers:
879              xxreg0 overlays reg0 through reg3, with reg0 supplying the most-
880              significant bits of xxreg0 and reg3 the least-signficant. xxreg1
881              similarly overlays reg4 through reg7.
882
883              ·      reg0...reg9
884
885              ·      xxreg0 xxreg1
886
887              ·      inport outport
888
889              ·      flags.loopback
890
891              ·      pkt.mark
892
893              ·      eth.src eth.dst eth.type
894
895              ·      vlan.tci vlan.vid vlan.pcp vlan.present
896
897              ·      ip.proto ip.dscp ip.ecn ip.ttl ip.frag
898
899              ·      ip4.src ip4.dst
900
901              ·      ip6.src ip6.dst ip6.label
902
903              ·      arp.op arp.spa arp.tpa arp.sha arp.tha
904
905              ·      tcp.src tcp.dst tcp.flags
906
907              ·      udp.src udp.dst
908
909              ·      sctp.src sctp.dst
910
911              ·      icmp4.type icmp4.code
912
913              ·      icmp6.type icmp6.code
914
915              ·      nd.target nd.sll nd.tll
916
917              ·      ct_mark ct_label
918
919              ·      ct_state,  which  has  several  Boolean  subfields.   The
920                     ct_next action initializes the following subfields:
921
922                     ·      ct.trk:  Always set to true by ct_next to indicate
923                            that connection  tracking  has  taken  place.  All
924                            other ct subfields have ct.trk as a prerequisite.
925
926                     ·      ct.new: True for a new flow
927
928                     ·      ct.est: True for an established flow
929
930                     ·      ct.rel: True for a related flow
931
932                     ·      ct.rpl: True for a reply flow
933
934                     ·      ct.inv: True for a connection entry in a bad state
935
936                     The  ct_dnat,  ct_snat,  and ct_lb actions initialize the
937                     following subfields:
938
939                     ·      ct.dnat: True for a packet  whose  destination  IP
940                            address has been changed.
941
942                     ·      ct.snat: True for a packet whose source IP address
943                            has been changed.
944
945              The following predicates are supported:
946
947              ·      eth.bcast expands to eth.dst == ff:ff:ff:ff:ff:ff
948
949              ·      eth.mcast expands to eth.dst[40]
950
951              ·      vlan.present expands to vlan.tci[12]
952
953              ·      ip4 expands to eth.type == 0x800
954
955              ·      ip4.src_mcast expands to ip4.src[28..31] == 0xe
956
957              ·      ip4.mcast expands to ip4.dst[28..31] == 0xe
958
959              ·      ip6 expands to eth.type == 0x86dd
960
961              ·      ip expands to ip4 || ip6
962
963              ·      icmp4 expands to ip4 && ip.proto == 1
964
965              ·      icmp6 expands to ip6 && ip.proto == 58
966
967              ·      icmp expands to icmp4 || icmp6
968
969              ·      ip.is_frag expands to ip.frag[0]
970
971              ·      ip.later_frag expands to ip.frag[1]
972
973              ·      ip.first_frag expands to ip.is_frag && !ip.later_frag
974
975              ·      arp expands to eth.type == 0x806
976
977              ·      nd expands to icmp6.type == {135, 136} && icmp6.code == 0
978                     && ip.ttl == 255
979
980              ·      nd_ns  expands to icmp6.type == 135 && icmp6.code == 0 &&
981                     ip.ttl == 255
982
983              ·      nd_na expands to icmp6.type == 136 && icmp6.code == 0  &&
984                     ip.ttl == 255
985
986              ·      nd_rs  expands to icmp6.type == 133 && icmp6.code == 0 &&
987                     ip.ttl == 255
988
989              ·      nd_ra expands to icmp6.type == 134 && icmp6.code == 0  &&
990                     ip.ttl == 255
991
992              ·      tcp expands to ip.proto == 6
993
994              ·      udp expands to ip.proto == 17
995
996              ·      sctp expands to ip.proto == 132
997
998       actions: string
999              Logical  datapath  actions, to be executed when the logical flow
1000              represented by this row is the highest-priority match.
1001
1002              Actions share lexical syntax with the match column. An empty set
1003              of  actions (or one that contains just white space or comments),
1004              or a set of actions that consists  of  just  drop;,  causes  the
1005              matched packets to be dropped. Otherwise, the column should con‐
1006              tain a sequence of actions, each terminated by a semicolon.
1007
1008              The following actions are defined:
1009
1010              output;
1011                     In the ingress pipeline, this action executes the  egress
1012                     pipeline  as  a  subroutine.  If  outport names a logical
1013                     port, the egress pipeline executes once; if it is a  mul‐
1014                     ticast group, the egress pipeline runs once for each log‐
1015                     ical port in the group.
1016
1017                     In the egress pipeline, this action performs  the  actual
1018                     output  to the outport logical port. (In the egress pipe‐
1019                     line, outport never names a multicast group.)
1020
1021                     By default,  output  to  the  input  port  is  implicitly
1022                     dropped,  that  is,  output becomes a no-op if outport ==
1023                     inport. Occasionally it may be useful  to  override  this
1024                     behavior, e.g. to send an ARP reply to an ARP request; to
1025                     do so, use flags.loopback = 1  to  allow  the  packet  to
1026                     "hair-pin" back to the input port.
1027
1028              next;
1029              next(table);
1030              next(pipeline=pipeline, table=table);
1031                   Executes  the given logical datapath table in pipeline as a
1032                   subroutine. The default table is  just  after  the  current
1033                   one. If pipeline is specified, it may be ingress or egress;
1034                   the  default  pipeline  is  the  one  currently  executing.
1035                   Actions  in  the  both  ingress and egress pipeline can use
1036                   next to jump across the  other  pipeline.  Actions  in  the
1037                   ingress  pipeline should use next to jump into the specific
1038                   table of egress pipeline only if it  is  certain  that  the
1039                   packets  are local and not tunnelled and wants to skip cer‐
1040                   tain stages in the packet processing.
1041
1042              field = constant;
1043                   Sets data or metadata field field to  constant  value  con‐
1044                   stant,  e.g.  outport  =  "vif0"; to set the logical output
1045                   port. To set only a subset of bits in a  field,  specify  a
1046                   subfield  for  field or a masked constant, e.g. one may use
1047                   vlan.pcp[2] = 1; or vlan.pcp = 4/4; to set the most sigifi‐
1048                   cant bit of the VLAN PCP.
1049
1050                   Assigning  to  a  field  with prerequisites implicitly adds
1051                   those prerequisites to match; thus,  for  example,  a  flow
1052                   that  sets tcp.dst applies only to TCP flows, regardless of
1053                   whether its match mentions any TCP field.
1054
1055                   Not all fields are modifiable (e.g. eth.type  and  ip.proto
1056                   are  read-only),  and not all modifiable fields may be par‐
1057                   tially modified (e.g. ip.ttl must assigned as a whole). The
1058                   outport field is modifiable in the ingress pipeline but not
1059                   in the egress pipeline.
1060
1061              ovn_field = constant;
1062                   Sets OVN field ovn_field to constant value constant.
1063
1064                   OVN supports setting the values of certain fields which are
1065                   not yet supported in OpenFlow to set or modify them.
1066
1067                   Below are the supported OVN fields:
1068
1069                   ·      icmp4.frag_mtu icmp6.frag_mtu
1070
1071                          This  field  sets  the  low-order  16  bits  of  the
1072                          ICMP{4,6} header field that is labelled "unused"  in
1073                          the  ICMP  specification  as defined in the RFC 1191
1074                          with the value specified in constant.
1075
1076                          Eg. icmp4.frag_mtu = 1500;
1077
1078              field1 = field2;
1079                   Sets data or metadata field field1 to the value of data  or
1080                   metadata  field field2, e.g. reg0 = ip4.src; copies ip4.src
1081                   into reg0. To modify only a subset of a field’s bits, spec‐
1082                   ify  a subfield for field1 or field2 or both, e.g. vlan.pcp
1083                   = reg0[0..2]; copies the  least-significant  bits  of  reg0
1084                   into the VLAN PCP.
1085
1086                   field1 and field2 must be the same type, either both string
1087                   or both integer fields. If they are  both  integer  fields,
1088                   they must have the same width.
1089
1090                   If  field1  or  field2  has  prerequisites,  they are added
1091                   implicitly to match. It is possible to write an  assignment
1092                   with   contradictory   prerequisites,  such  as  ip4.src  =
1093                   ip6.src[0..31];, but the contradiction means that a logical
1094                   flow with such an assignment will never be matched.
1095
1096              field1 <-> field2;
1097                   Similar  to field1 = field2; except that the two values are
1098                   exchanged instead of copied. Both field1  and  field2  must
1099                   modifiable.
1100
1101              ip.ttl--;
1102                   Decrements the IPv4 or IPv6 TTL. If this would make the TTL
1103                   zero or negative, then processing of the packet  halts;  no
1104                   further  actions  are  processed.  (To properly handle such
1105                   cases, a higher-priority flow should match on ip.ttl == {0,
1106                   1};.)
1107
1108                   Prerequisite: ip
1109
1110              ct_next;
1111                   Apply   connection   tracking  to  the  flow,  initializing
1112                   ct_state for matching in later tables. Automatically  moves
1113                   on to the next table, as if followed by next.
1114
1115                   As  a  side  effect,  IP  fragments will be reassembled for
1116                   matching. If a fragmented packet is output, then it will be
1117                   sent  with  any overlapping fragments squashed. The connec‐
1118                   tion tracking state is scoped by the logical port when  the
1119                   action  is used in a flow for a logical switch, so overlap‐
1120                   ping addresses may be used. To allow traffic related to the
1121                   matched flow, execute ct_commit . Connection tracking state
1122                   is scoped by the logical topology when the action  is  used
1123                   in a flow for a router.
1124
1125                   It  is  possible  to  have actions follow ct_next, but they
1126                   will not have access to any of its side-effects and is  not
1127                   generally useful.
1128
1129              ct_commit { };
1130              ct_commit { ct_mark=value[/mask]; };
1131              ct_commit { ct_label=value[/mask]; };
1132              ct_commit { ct_mark=value[/mask]; ct_label=value[/mask]; };
1133                   Commit the flow to the connection tracking entry associated
1134                   with   it   by   a   previous   call   to   ct_next.   When
1135                   ct_mark=value[/mask]  and/or ct_label=value[/mask] are sup‐
1136                   plied, ct_mark and/or ct_label will be set  to  the  values
1137                   indicated by value[/mask] on the connection tracking entry.
1138                   ct_mark is a 32-bit field. ct_label is a 128-bit field. The
1139                   value[/mask] should be specified in hex string if more than
1140                   64bits are to be used. Registers and other named fields can
1141                   be  used  for  value.  ct_mark  and  ct_label  may  be sub-
1142                   addressed in order to have specific bits set.
1143
1144                   Note that if you want processing to continue  in  the  next
1145                   table,  you  must  execute the next action after ct_commit.
1146                   You may also leave out next which  will  commit  connection
1147                   tracking  state,  and  then  drop the packet. This could be
1148                   useful for setting ct_mark on a connection  tracking  entry
1149                   before dropping a packet, for example.
1150
1151              ct_dnat;
1152              ct_dnat(IP);
1153                   ct_dnat  sends  the packet through the DNAT zone in connec‐
1154                   tion tracking table to unDNAT any packet that was DNATed in
1155                   the  opposite  direction.  The packet is then automatically
1156                   sent to to the next tables as if followed by next;  action.
1157                   The  next  tables will see the changes in the packet caused
1158                   by the connection tracker.
1159
1160                   ct_dnat(IP) sends the  packet  through  the  DNAT  zone  to
1161                   change  the destination IP address of the packet to the one
1162                   provided inside the parentheses and commits the connection.
1163                   The packet is then automatically sent to the next tables as
1164                   if followed by next; action. The next tables will  see  the
1165                   changes in the packet caused by the connection tracker.
1166
1167              ct_snat;
1168              ct_snat(IP);
1169                   ct_snat  sends  the  packet through the SNAT zone to unSNAT
1170                   any packet that was SNATed in the opposite  direction.  The
1171                   packet  is automatically sent to the next tables as if fol‐
1172                   lowed by the next; action. The next  tables  will  see  the
1173                   changes in the packet caused by the connection tracker.
1174
1175                   ct_snat(IP)  sends  the  packet  through  the  SNAT zone to
1176                   change the source IP address of the packet to the one  pro‐
1177                   vided  inside  the  parenthesis and commits the connection.
1178                   The packet is then automatically sent to the next tables as
1179                   if  followed  by next; action. The next tables will see the
1180                   changes in the packet caused by the connection tracker.
1181
1182              ct_clear;
1183                   Clears connection tracking state.
1184
1185              clone { action; ... };
1186                   Makes a copy of the packet  being  processed  and  executes
1187                   each  action  on  the  copy.  Actions  following  the clone
1188                   action, if any, apply to the original,  unmodified  packet.
1189                   This  can  be  used  as  a  way to ``save and restore’’ the
1190                   packet around a set of  actions  that  may  modify  it  and
1191                   should not persist.
1192
1193              arp { action; ... };
1194                   Temporarily  replaces the IPv4 packet being processed by an
1195                   ARP packet and executes  each  nested  action  on  the  ARP
1196                   packet.  Actions following the arp action, if any, apply to
1197                   the original, unmodified packet.
1198
1199                   The ARP packet that this action operates on is  initialized
1200                   based on the IPv4 packet being processed, as follows. These
1201                   are default values that the nested  actions  will  probably
1202                   want to change:
1203
1204                   ·      eth.src unchanged
1205
1206                   ·      eth.dst unchanged
1207
1208                   ·      eth.type = 0x0806
1209
1210                   ·      arp.op = 1 (ARP request)
1211
1212                   ·      arp.sha copied from eth.src
1213
1214                   ·      arp.spa copied from ip4.src
1215
1216                   ·      arp.tha = 00:00:00:00:00:00
1217
1218                   ·      arp.tpa copied from ip4.dst
1219
1220                   The  ARP packet has the same VLAN header, if any, as the IP
1221                   packet it replaces.
1222
1223                   Prerequisite: ip4
1224
1225              get_arp(P, A);
1226                   Parameters: logical port string field P, 32-bit IP  address
1227                   field A.
1228
1229                   Looks  up A in P’s mac binding table. If an entry is found,
1230                   stores its Ethernet address in  eth.dst,  otherwise  stores
1231                   00:00:00:00:00:00 in eth.dst.
1232
1233                   Example: get_arp(outport, ip4.dst);
1234
1235              put_arp(P, A, E);
1236                   Parameters:  logical port string field P, 32-bit IP address
1237                   field A, 48-bit Ethernet address field E.
1238
1239                   Adds or updates the entry for IP address A in logical  port
1240                   P’s mac binding table, setting its Ethernet address to E.
1241
1242                   Example: put_arp(inport, arp.spa, arp.sha);
1243
1244              R = lookup_arp(P, A, M);
1245                   Parameters:  logical port string field P, 32-bit IP address
1246                   field A, 48-bit MAC address field M.
1247
1248                   Result: stored to a 1-bit subfield R.
1249
1250                   Looks up A and M in P’s mac binding table. If an  entry  is
1251                   found, stores 1 in the 1-bit subfield R, else 0.
1252
1253                   Example: reg0[0] = lookup_arp(inport, arp.spa, arp.sha);
1254
1255              R = lookup_arp_ip(P, A);
1256                   Parameters:  logical port string field P, 32-bit IP address
1257                   field A.
1258
1259                   Result: stored to a 1-bit subfield R.
1260
1261                   Looks up A in P’s mac binding table. If an entry is  found,
1262                   stores 1 in the 1-bit subfield R, else 0.
1263
1264                   Example: reg0[0] = lookup_arp_ip(inport, arp.spa);
1265
1266              nd_ns { action; ... };
1267                   Temporarily  replaces the IPv6 packet being processed by an
1268                   IPv6 Neighbor Solicitation packet and executes each  nested
1269                   action  on  the IPv6 NS packet. Actions following the nd_ns
1270                   action, if any, apply to the original, unmodified packet.
1271
1272                   The IPv6 NS packet that this action operates on is initial‐
1273                   ized  based on the IPv6 packet being processed, as follows.
1274                   These are default values that the nested actions will prob‐
1275                   ably want to change:
1276
1277                   ·      eth.src unchanged
1278
1279                   ·      eth.dst set to IPv6 multicast MAC address
1280
1281                   ·      eth.type = 0x86dd
1282
1283                   ·      ip6.src copied from ip6.src
1284
1285                   ·      ip6.dst set to IPv6 Solicited-Node multicast address
1286
1287                   ·      icmp6.type = 135 (Neighbor Solicitation)
1288
1289                   ·      nd.target copied from ip6.dst
1290
1291                   The IPv6 NS packet has the same VLAN header, if any, as the
1292                   IP packet it replaces.
1293
1294                   Prerequisite: ip6
1295
1296              nd_na { action; ... };
1297                   Temporarily replaces the IPv6 neighbor solicitation  packet
1298                   being  processed  by  an  IPv6  neighbor advertisement (NA)
1299                   packet and executes each nested action on  the  NA  packet.
1300                   Actions  following  the  nd_na action, if any, apply to the
1301                   original, unmodified packet.
1302
1303                   The NA packet that this action operates on  is  initialized
1304                   based on the IPv6 packet being processed, as follows. These
1305                   are default values that the nested  actions  will  probably
1306                   want to change:
1307
1308                   ·      eth.dst exchanged with eth.src
1309
1310                   ·      eth.type = 0x86dd
1311
1312                   ·      ip6.dst copied from ip6.src
1313
1314                   ·      ip6.src copied from nd.target
1315
1316                   ·      icmp6.type = 136 (Neighbor Advertisement)
1317
1318                   ·      nd.target unchanged
1319
1320                   ·      nd.sll = 00:00:00:00:00:00
1321
1322                   ·      nd.tll copied from eth.dst
1323
1324                   The ND packet has the same VLAN header, if any, as the IPv6
1325                   packet it replaces.
1326
1327                   Prerequisite: nd_ns
1328
1329              nd_na_router { action; ... };
1330                   Temporarily replaces the IPv6 neighbor solicitation  packet
1331                   being  processed  by  an  IPv6  neighbor advertisement (NA)
1332                   packet, sets ND_NSO_ROUTER in the RSO  flags  and  executes
1333                   each  nested action on the NA packet. Actions following the
1334                   nd_na_router action, if any, apply to the original, unmodi‐
1335                   fied packet.
1336
1337                   The  NA  packet that this action operates on is initialized
1338                   based on the IPv6 packet being processed, as follows. These
1339                   are  default  values  that the nested actions will probably
1340                   want to change:
1341
1342                   ·      eth.dst exchanged with eth.src
1343
1344                   ·      eth.type = 0x86dd
1345
1346                   ·      ip6.dst copied from ip6.src
1347
1348                   ·      ip6.src copied from nd.target
1349
1350                   ·      icmp6.type = 136 (Neighbor Advertisement)
1351
1352                   ·      nd.target unchanged
1353
1354                   ·      nd.sll = 00:00:00:00:00:00
1355
1356                   ·      nd.tll copied from eth.dst
1357
1358                   The ND packet has the same VLAN header, if any, as the IPv6
1359                   packet it replaces.
1360
1361                   Prerequisite: nd_ns
1362
1363              get_nd(P, A);
1364                   Parameters:  logical  port  string  field  P,  128-bit IPv6
1365                   address field A.
1366
1367                   Looks up A in P’s mac binding table. If an entry is  found,
1368                   stores  its  Ethernet  address in eth.dst, otherwise stores
1369                   00:00:00:00:00:00 in eth.dst.
1370
1371                   Example: get_nd(outport, ip6.dst);
1372
1373              put_nd(P, A, E);
1374                   Parameters: logical  port  string  field  P,  128-bit  IPv6
1375                   address field A, 48-bit Ethernet address field E.
1376
1377                   Adds  or  updates  the  entry for IPv6 address A in logical
1378                   port P’s mac binding table, setting its Ethernet address to
1379                   E.
1380
1381                   Example: put_nd(inport, nd.target, nd.tll);
1382
1383              R = lookup_nd(P, A, M);
1384                   Parameters: logical port string field P, 128-bit IP address
1385                   field A, 48-bit MAC address field M.
1386
1387                   Result: stored to a 1-bit subfield R.
1388
1389                   Looks up A and M in P’s mac binding table. If an  entry  is
1390                   found, stores 1 in the 1-bit subfield R, else 0.
1391
1392                   Example: reg0[0] = lookup_nd(inport, ip6.src, eth.src);
1393
1394              R = lookup_nd_ip(P, A);
1395                   Parameters: logical port string field P, 128-bit IP address
1396                   field A.
1397
1398                   Result: stored to a 1-bit subfield R.
1399
1400                   Looks up A in P’s mac binding table. If an entry is  found,
1401                   stores 1 in the 1-bit subfield R, else 0.
1402
1403                   Example: reg0[0] = lookup_nd_ip(inport, ip6.src);
1404
1405              R = put_dhcp_opts(D1 = V1, D2 = V2, ..., Dn = Vn);
1406                   Parameters: one or more DHCP option/value pairs, which must
1407                   include an offerip option (with code 0).
1408
1409                   Result: stored to a 1-bit subfield R.
1410
1411                   Valid only in the ingress pipeline.
1412
1413                   When this action  is  applied  to  a  DHCP  request  packet
1414                   (DHCPDISCOVER or DHCPREQUEST), it changes the packet into a
1415                   DHCP reply (DHCPOFFER or DHCPACK,  respectively),  replaces
1416                   the  options by those specified as parameters, and stores 1
1417                   in R.
1418
1419                   When this action is applied to a non-DHCP packet or a  DHCP
1420                   packet  that  is not DHCPDISCOVER or DHCPREQUEST, it leaves
1421                   the packet unchanged and stores 0 in R.
1422
1423                   The contents of the  DHCP_Option  table  control  the  DHCP
1424                   option names and values that this action supports.
1425
1426                   Example: reg0[0] = put_dhcp_opts(offerip = 10.0.0.2, router
1427                   = 10.0.0.1, netmask = 255.255.255.0, dns_server = {8.8.8.8,
1428                   7.7.7.7});
1429
1430              R = put_dhcpv6_opts(D1 = V1, D2 = V2, ..., Dn = Vn);
1431                   Parameters: one or more DHCPv6 option/value pairs.
1432
1433                   Result: stored to a 1-bit subfield R.
1434
1435                   Valid only in the ingress pipeline.
1436
1437                   When  this action is applied to a DHCPv6 request packet, it
1438                   changes the  packet  into  a  DHCPv6  reply,  replaces  the
1439                   options  by  those specified as parameters, and stores 1 in
1440                   R.
1441
1442                   When this action is applied to a non-DHCPv6  packet  or  an
1443                   invalid  DHCPv6  request  packet  ,  it  leaves  the packet
1444                   unchanged and stores 0 in R.
1445
1446                   The contents of the DHCPv6_Options table control the DHCPv6
1447                   option names and values that this action supports.
1448
1449                   Example:   reg0[3]  =  put_dhcpv6_opts(ia_addr  =  aef0::4,
1450                   server_id               =                00:00:00:00:10:02,
1451                   dns_server={ae70::1,ae70::2});
1452
1453              set_queue(queue_number);
1454                   Parameters:  Queue  number  queue_number, in the range 0 to
1455                   61440.
1456
1457                   This is a logical  equivalent  of  the  OpenFlow  set_queue
1458                   action. It affects packets that egress a hypervisor through
1459                   a physical interface. For nonzero queue_number, it  config‐
1460                   ures  packet  queuing  to match the settings configured for
1461                   the  Port_Binding  with   options:qdisc_queue_id   matching
1462                   queue_number.  When queue_number is zero, it resets queuing
1463                   to the default strategy.
1464
1465                   Example: set_queue(10);
1466
1467              ct_lb;
1468              ct_lb(ip[:port]...);
1469                   With one or more arguments, ct_lb commits the packet to the
1470                   connection  tracking  table and DNATs the packet’s destina‐
1471                   tion IP address (and port) to the IP address  or  addresses
1472                   (and  optional  ports) specified in the string. If multiple
1473                   comma-separated IP addresses are specified, each  is  given
1474                   equal weight for picking the DNAT address. Processing auto‐
1475                   matically moves on to the next  table,  as  if  next;  were
1476                   specified,  and  later tables act on the packet as modified
1477                   by the connection tracker.  Connection  tracking  state  is
1478                   scoped  by  the  logical  port when the action is used in a
1479                   flow for a logical switch, so overlapping addresses may  be
1480                   used.  Connection  tracking  state is scoped by the logical
1481                   topology when the action is used in a flow for a router.
1482
1483                   Without arguments, ct_lb sends the packet to the connection
1484                   tracking table to NAT the packets. If the packet is part of
1485                   an established connection that was previously committed  to
1486                   the  connection  tracker  via ct_lb(...), it will automati‐
1487                   cally get DNATed to the same IP address as the first packet
1488                   in that connection.
1489
1490              R = dns_lookup();
1491                   Parameters: No parameters.
1492
1493                   Result: stored to a 1-bit subfield R.
1494
1495                   Valid only in the ingress pipeline.
1496
1497                   When  this  action is applied to a valid DNS request (a UDP
1498                   packet typically directed  to  port  53),  it  attempts  to
1499                   resolve  the  query using the contents of the DNS table. If
1500                   it is successful, it changes the packet into  a  DNS  reply
1501                   and  stores  1  in R. If the action is applied to a non-DNS
1502                   packet, an invalid DNS  request  packet,  or  a  valid  DNS
1503                   request  for which the DNS table does not supply an answer,
1504                   it leaves the packet unchanged and stores 0 in R.
1505
1506                   Regardless of success, the action does not make any of  the
1507                   changes to the flow that are necessary to direct the packet
1508                   back to the requester. The logical pipeline  can  implement
1509                   this behavior with matches and actions in later tables.
1510
1511                   Example: reg0[3] = dns_lookup();
1512
1513                   Prerequisite: udp
1514
1515              R = put_nd_ra_opts(D1 = V1, D2 = V2, ..., Dn = Vn);
1516                   Parameters:  The  following  IPv6  ND  Router Advertisement
1517                   option/value pairs as defined in RFC 4861.
1518
1519                   ·      addr_mode
1520
1521                          Mandatory parameter which specifies the address mode
1522                          flag  to  be  set  in the RA flag options field. The
1523                          value of this option is a string and  the  following
1524                          values  can  be defined - "slaac", "dhcpv6_stateful"
1525                          and "dhcpv6_stateless".
1526
1527                   ·      slla
1528
1529                          Mandatory parameter which specifies  the  link-layer
1530                          address  of  the  interface  from  which  the Router
1531                          Advertisement is sent.
1532
1533                   ·      mtu
1534
1535                          Optional parameter which specifies the MTU.
1536
1537                   ·      prefix
1538
1539                          Optional parameter which should be specified if  the
1540                          addr_mode  is  "slaac"  or  "dhcpv6_stateless".  The
1541                          value should be an IPv6 prefix which  will  be  used
1542                          for   stateless  IPv6  address  configuration.  This
1543                          option can be defined multiple times.
1544
1545                   Result: stored to a 1-bit subfield R.
1546
1547                   Valid only in the ingress pipeline.
1548
1549                   When this action is applied to an IPv6 Router  solicitation
1550                   request  packet,  it changes the packet into an IPv6 Router
1551                   Advertisement reply and adds the options specified  in  the
1552                   parameters, and stores 1 in R.
1553
1554                   When  this action is applied to a non-IPv6 Router solicita‐
1555                   tion packet or an invalid IPv6 request packet ,  it  leaves
1556                   the packet unchanged and stores 0 in R.
1557
1558                   Example: reg0[3] = put_nd_ra_opts(addr_mode = "slaac", slla
1559                   = 00:00:00:00:10:02, prefix = aef0::/64, mtu = 1450);
1560
1561              set_meter(rate);
1562              set_meter(rate, burst);
1563                   Parameters: rate limit int field rate in kbps,  burst  rate
1564                   limits int field burst in kbps.
1565
1566                   This action sets the rate limit for a flow.
1567
1568                   Example: set_meter(100, 1000);
1569
1570              R = check_pkt_larger(L)
1571                   Parameters: packet length L to check for in bytes.
1572
1573                   Result: stored to a 1-bit subfield R.
1574
1575                   This    is   a   logical   equivalent   of   the   OpenFlow
1576                   check_pkt_larger action. If the packet is larger  than  the
1577                   length specified in L, it stores 1 in the subfield R.
1578
1579                   Example: reg0[6] = check_pkt_larger(1000);
1580
1581              log(key=value, ...);
1582                     Causes  ovn-controller  to  log the packet on the chassis
1583                     that processes it. Packet logging currently uses the same
1584                     logging mechanism as other Open vSwitch and OVN messages,
1585                     which means that whether and where  log  messages  appear
1586                     depends  on  the  local logging configuration that can be
1587                     configured with ovs-appctl, etc.
1588
1589                     The log action takes zero or more of the  following  key-
1590                     value pair arguments that control what is logged:
1591
1592                     name=string
1593                            An  optional  name for the ACL. The string is cur‐
1594                            rently limited to 64 bytes.
1595
1596                     severity=level
1597                            Indicates the severity of the event. The level  is
1598                            one  of  following  (from  more  to less serious):
1599                            alert, warning,  notice,  info,  or  debug.  If  a
1600                            severity is not provided, the default is info.
1601
1602                     verdict=value
1603                            The  verdict  for  packets  matching the flow. The
1604                            value must be one of allow, deny, or reject.
1605
1606                     meter=string
1607                            An optional rate-limiting meter to be  applied  to
1608                            the logs. The string should reference a name entry
1609                            from the Meter table. The only meter  action  that
1610                            is appropriate is drop.
1611
1612              fwd_group(liveness=bool, childports=port, ...);
1613                     Parameters:  optional  liveness,  either  true  or false,
1614                     defaulting to false; childports, a  comma-delimited  list
1615                     of strings denoting logical ports to load balance across.
1616
1617                     Load balance traffic to one or more child ports in a log‐
1618                     ical switch. ovn-controller translates the fwd_group into
1619                     an OpenFlow group with one bucket for each child port. If
1620                     liveness=true is specified, it also integrates the bucket
1621                     selection  with BFD status on the tunnel interface corre‐
1622                     sponding to child port.
1623
1624                     Example: fwd_group(liveness=true, childports="p1", "p2");
1625
1626              icmp4 { action; ... };
1627              icmp4_error { action; ... };
1628                   Temporarily replaces the IPv4 packet being processed by  an
1629                   ICMPv4 packet and executes each nested action on the ICMPv4
1630                   packet. Actions following these actions, if any,  apply  to
1631                   the original, unmodified packet.
1632
1633                   The  ICMPv4  packet  that these actions operates on is ini‐
1634                   tialized based on the IPv4 packet being processed, as  fol‐
1635                   lows. These are default values that the nested actions will
1636                   probably want to  change.  Ethernet  and  IPv4  fields  not
1637                   listed here are not changed:
1638
1639                   ·      ip.proto = 1 (ICMPv4)
1640
1641                   ·      ip.frag = 0 (not a fragment)
1642
1643                   ·      ip.ttl = 255
1644
1645                   ·      icmp4.type = 3 (destination unreachable)
1646
1647                   ·      icmp4.code = 1 (host unreachable)
1648
1649                   icmp4_error  action  is  expected to be used to generate an
1650                   ICMPv4 packet in  response  to  an  error  in  original  IP
1651                   packet.  When  this  action generates the ICMPv4 packet, it
1652                   also copies the original IP datagram following  the  ICMPv4
1653                   header as per RFC 1122: 3.2.2.
1654
1655                   Prerequisite: ip4
1656
1657              icmp6 { action; ... };
1658              icmp6_error { action; ... };
1659                   Temporarily  replaces the IPv6 packet being processed by an
1660                   ICMPv6 packet and executes each nested action on the ICMPv6
1661                   packet.  Actions  following the icmp6 action, if any, apply
1662                   to the original, unmodified packet.
1663
1664                   The ICMPv6 packet that this action operates on is  initial‐
1665                   ized  based on the IPv6 packet being processed, as follows.
1666                   These are default values that the nested actions will prob‐
1667                   ably  want  to  change. Ethernet and IPv6 fields not listed
1668                   here are not changed:
1669
1670                   ·      ip.proto = 58 (ICMPv6)
1671
1672                   ·      ip.ttl = 255
1673
1674                   ·      icmp6.type = 1 (destination unreachable)
1675
1676                   ·      icmp6.code = 1 (administratively prohibited)
1677
1678                   icmp6_error action is expected to be used  to  generate  an
1679                   ICMPv6  packet  in  response  to  an error in original IPv6
1680                   packet.
1681
1682                   Prerequisite: ip6
1683
1684              tcp_reset;
1685                   This action transforms the current TCP packet according  to
1686                   the following pseudocode:
1687
1688                   if (tcp.ack) {
1689                           tcp.seq = tcp.ack;
1690                   } else {
1691                           tcp.ack = tcp.seq + length(tcp.payload);
1692                           tcp.seq = 0;
1693                   }
1694                   tcp.flags = RST;
1695
1696                   Then,  the  action  drops all TCP options and payload data,
1697                   and updates the TCP checksum. IP ttl is set to 255.
1698
1699                   Prerequisite: tcp
1700
1701              reject { action; ... };
1702                   If the original packet is  IPv4  or  IPv6  TCP  packet,  it
1703                   replaces  it  with IPv4 or IPv6 TCP RST packet and executes
1704                   the inner actions. Otherwise it replaces it with an  ICMPv4
1705                   or ICMPv6 packet and executes the inner actions.
1706
1707                   The  inner  actions  should  not attempt to swap eth source
1708                   with eth destination and IP source with IP  destination  as
1709                   this action implicitly does that.
1710
1711              trigger_event;
1712                   This  action  is  used  to allow ovs-vswitchd to report CMS
1713                   related events writing them in Controller_Event  table.  It
1714                   is  possible  to associate a meter to a each event in order
1715                   to not overload pinctrl thread under heavy load; each meter
1716                   is identified though a defined naming convention. Supported
1717                   events:
1718
1719                   ·      empty_lb_backends.  This  event  is  raised   if   a
1720                          received  packet is destined for a load balancer VIP
1721                          that has no  configured  backend  destinations.  For
1722                          this  event,  the  event info includes the load bal‐
1723                          ancer VIP, the load balancer UUID, and the transport
1724                          protocol. Associated meter: event-elb
1725
1726              igmp;
1727                   This  action  sends the packet to ovn-controller for multi‐
1728                   cast snooping.
1729
1730                   Prerequisite: igmp
1731
1732              bind_vport(V, P);
1733                   Parameters: logical port string field V  of  type  virtual,
1734                   logical port string field P.
1735
1736                   Binds  the virtual logical port V and sets the chassis col‐
1737                   umn and virtual_parent  of  the  table  Port_Binding.  vir‐
1738                   tual_parent is set to P.
1739
1740              handle_svc_check(P);
1741                   Parameters: logical port string field P.
1742
1743                   Handles  the service monitor reply received from the VIF of
1744                   the logical port P. ovn-controller periodically  sends  out
1745                   the  service monitor packets for the services configured in
1746                   the Service_Monitor table and this action updates the  sta‐
1747                   tus of those services.
1748
1749                   Example: handle_svc_check(inport);
1750
1751              handle_dhcpv6_reply;
1752                   Handle DHCPv6 prefix delegation advertisements/replies from
1753                   a IPv6 delegation server. ovn-controller will add an  entry
1754                   ipv6_ra_pd_list  in  the  options  table  for  each  prefix
1755                   received from the delegation server
1756
1757              R = select(N1[=W1], N2[=W2], ...);
1758                   Parameters: Integer N1, N2..., with optional weight W1, W2,
1759                   ...
1760
1761                   Result: stored to a logical field or subfield R.
1762
1763                   Select  from  a list of integers N1, N2..., each within the
1764                   range 0 ~ 65535, and store the selected one in the field R.
1765                   There  must  be  2  or  more  integers listed, each with an
1766                   optional weight, which is an integer within the range  1  ~
1767                   65535.  If weight is not specified, it defaults to 100. The
1768                   selection method is based on the  5-tuple  hash  of  packet
1769                   header.
1770
1771                   Processing  automatically moves on to the next table, as if
1772                   next; were specified. The select action must be put as  the
1773                   last  action  of  the  logical flow when there are multiple
1774                   actions (actions put after select will not take effect).
1775
1776                   Example: reg8[16..31] = select(1=20, 2=30, 3=50);
1777
1778              handle_dhcpv6_reply;
1779                   This action is used to parse DHCPv6 replies from IPv6 Dele‐
1780                   gation  Router  and  managed  IPv6  Prefix delegation state
1781                   machine
1782
1783              R = chk_lb_hairpin();
1784                   This action checks if the packet  under  consideration  was
1785                   destined to a load balancer VIP and it is hairpinned, i.e.,
1786                   after load balancing the destination IP matches the  source
1787                   IP.  If  it is so, then the 1-bit destination register R is
1788                   set to 1.
1789
1790              R = chk_lb_hairpin_reply();
1791                   This action checks if the  packet  under  consideration  is
1792                   from  one  of the backend IP of a load balancer VIP and the
1793                   destination IP is the load balancer VIP. If it is so,  then
1794                   the 1-bit destination register R is set to 1.
1795
1796              R = ct_snat_to_vip;
1797                   This  action  sends  the  packet  through  the SNAT zone to
1798                   change the source IP address of the packet to the load bal‐
1799                   ancer  VIP if the original destination IP was load balancer
1800                   VIP and commits the connection. This  action  applies  suc‐
1801                   cessfully only for the hairpinned traffic i.e if the action
1802                   chk_lb_hairpin returned success. This action  doesn’t  take
1803                   any arguments and it determines the SNAT IP internally. The
1804                   packet is not automatically sent to  the  next  table.  The
1805                   caller  has  to  execute  the next; action explicitly after
1806                   this action to advance the packet to the next stage.
1807
1808       external_ids : stage-name: optional string
1809              Human-readable name for this flow’s stage in the pipeline.
1810
1811       external_ids : stage-hint: optional string, containing an uuid
1812              UUID of a OVN_Northbound record that caused this logical flow to
1813              be  created.  Currently used only for attribute of logical flows
1814              to northbound ACL records.
1815
1816       external_ids : source: optional string
1817              Source file and line number of the code that added this flow  to
1818              the pipeline.
1819
1820     Common Columns:
1821
1822       The  overall purpose of these columns is described under Common Columns
1823       at the beginning of this document.
1824
1825       external_ids: map of string-string pairs
1826

Logical_DP_Group TABLE

1828       Each row in this table represents a group of logical  datapaths  refer‐
1829       enced by the logical_dp_group column in the Logical_Flow table.
1830
1831   Summary:
1832       datapaths                     set  of  weak reference to Datapath_Bind‐
1833                                     ings
1834
1835   Details:
1836       datapaths: set of weak reference to Datapath_Bindings
1837              List of Datapath_Binding entries.
1838

Multicast_Group TABLE

1840       The rows in this table define multicast groups of logical ports. Multi‐
1841       cast groups allow a single packet transmitted over a tunnel to a hyper‐
1842       visor to be delivered to multiple VMs on that  hypervisor,  which  uses
1843       bandwidth more efficiently.
1844
1845       Each  row in this table defines a logical multicast group numbered tun‐
1846       nel_key within datapath, whose logical ports are listed  in  the  ports
1847       column.
1848
1849   Summary:
1850       datapath                      Datapath_Binding
1851       tunnel_key                    integer, in range 32,768 to 65,535
1852       name                          string
1853       ports                         set  of  1  or  more  weak  reference  to
1854                                     Port_Bindings
1855
1856   Details:
1857       datapath: Datapath_Binding
1858              The logical datapath in which the multicast group resides.
1859
1860       tunnel_key: integer, in range 32,768 to 65,535
1861              The value used to designate this logical egress port  in  tunnel
1862              encapsulations.  An index forces the key to be unique within the
1863              datapath. The unusual range ensures that multicast group IDs  do
1864              not overlap with logical port IDs.
1865
1866       name: string
1867              The  logical multicast group’s name. An index forces the name to
1868              be unique within the datapath.  Logical  flows  in  the  ingress
1869              pipeline  may output to the group just as for individual logical
1870              ports, by assigning the group’s name to outport and executing an
1871              output action.
1872
1873              Multicast  group  names  and  logical  port names share a single
1874              namespace and thus should not overlap (but the  database  schema
1875              cannot enforce this). To try to avoid conflicts, ovn-northd uses
1876              names that begin with _MC_.
1877
1878       ports: set of 1 or more weak reference to Port_Bindings
1879              The logical ports included in the multicast group. All of  these
1880              ports must be in the datapath logical datapath (but the database
1881              schema cannot enforce this).
1882

Meter TABLE

1884       Each row in this table represents a meter that can be used for  QoS  or
1885       rate-limiting.
1886
1887   Summary:
1888       name                          string (must be unique within table)
1889       unit                          string, either kbps or pktps
1890       bands                         set of 1 or more Meter_Bands
1891
1892   Details:
1893       name: string (must be unique within table)
1894              A name for this meter.
1895
1896              Names  that  begin  with "__" (two underscores) are reserved for
1897              OVN internal use and should not be added manually.
1898
1899       unit: string, either kbps or pktps
1900              The unit for rate and burst_rate parameters in the bands  entry.
1901              kbps  specifies kilobits per second, and pktps specifies packets
1902              per second.
1903
1904       bands: set of 1 or more Meter_Bands
1905              The bands associated with this meter. Each band specifies a rate
1906              above  which  the band is to take the action action. If multiple
1907              bands’ rates are exceeded, then the band with the  highest  rate
1908              among the exceeded bands is selected.
1909

Meter_Band TABLE

1911       Each row in this table represents a meter band which specifies the rate
1912       above which the configured action should be applied.  These  bands  are
1913       referenced by the bands column in the Meter table.
1914
1915   Summary:
1916       action                        string, must be drop
1917       rate                          integer, in range 1 to 4,294,967,295
1918       burst_size                    integer, in range 0 to 4,294,967,295
1919
1920   Details:
1921       action: string, must be drop
1922              The action to execute when this band matches. The only supported
1923              action is drop.
1924
1925       rate: integer, in range 1 to 4,294,967,295
1926              The rate limit for this band, in kilobits per second or bits per
1927              second,  depending on whether the parent Meter entry’s unit col‐
1928              umn specified kbps or pktps.
1929
1930       burst_size: integer, in range 0 to 4,294,967,295
1931              The maximum burst allowed for the band in kilobits  or  packets,
1932              depending  on  whether  kbps or pktps was selected in the parent
1933              Meter entry’s unit column. If the size is zero,  the  switch  is
1934              free to select some reasonable value depending on its configura‐
1935              tion.
1936

Datapath_Binding TABLE

1938       Each row in this table represents a logical datapath, which  implements
1939       a logical pipeline among the ports in the Port_Binding table associated
1940       with it. In practice, the pipeline in a given logical  datapath  imple‐
1941       ments either a logical switch or a logical router.
1942
1943       The  main  purpose of a row in this table is provide a physical binding
1944       for a logical datapath. A logical datapath does  not  have  a  physical
1945       location,  so  its  physical  binding information is limited: just tun‐
1946       nel_key. The rest of the data in this table does not affect packet for‐
1947       warding.
1948
1949   Summary:
1950       tunnel_key                    integer,  in  range 1 to 16,777,215 (must
1951                                     be unique within table)
1952       load_balancers                set of weak reference to Load_Balancers
1953       OVN_Northbound Relationship:
1954         external_ids : logical-switch
1955                                     optional string, containing an uuid
1956         external_ids : logical-router
1957                                     optional string, containing an uuid
1958         external_ids : interconn-ts
1959                                     optional string
1960         Naming:
1961            external_ids : name      optional string
1962            external_ids : name2     optional string
1963       Common Columns:
1964         external_ids                map of string-string pairs
1965
1966   Details:
1967       tunnel_key: integer, in range 1 to 16,777,215 (must  be  unique  within
1968       table)
1969              The tunnel key value to which the logical datapath is bound. The
1970              Tunnel Encapsulation section  in  ovn-architecture(7)  describes
1971              how  tunnel  keys  are constructed for each supported encapsula‐
1972              tion.
1973
1974       load_balancers: set of weak reference to Load_Balancers
1975              Load balancers associated with the datapath.
1976
1977     OVN_Northbound Relationship:
1978
1979       Each row in Datapath_Binding is associated with some logical  datapath.
1980       ovn-northd  uses these keys to track the association of a logical data‐
1981       path with concepts in the OVN_Northbound database.
1982
1983       external_ids : logical-switch: optional string, containing an uuid
1984              For  a  logical  datapath  that  represents  a  logical  switch,
1985              ovn-northd stores in this key the UUID of the corresponding Log‐
1986              ical_Switch row in the OVN_Northbound database.
1987
1988       external_ids : logical-router: optional string, containing an uuid
1989              For  a  logical  datapath  that  represents  a  logical  router,
1990              ovn-northd stores in this key the UUID of the corresponding Log‐
1991              ical_Router row in the OVN_Northbound database.
1992
1993       external_ids : interconn-ts: optional string
1994              For a logical datapath that represents  a  logical  switch  that
1995              represents  a  transit  switch  for  interconnection, ovn-northd
1996              stores in this key the value of the same interconn-ts key of the
1997              external_ids  column  of the corresponding Logical_Switch row in
1998              the OVN_Northbound database.
1999
2000     Naming:
2001
2002       ovn-northd copies these from the  name  fields  in  the  OVN_Northbound
2003       database,  either from name and external_ids:neutron:router_name in the
2004       Logical_Router table or from name and external_ids:neutron:network_name
2005       in the Logical_Switch table.
2006
2007       external_ids : name: optional string
2008              A name for the logical datapath.
2009
2010       external_ids : name2: optional string
2011              Another name for the logical datapath.
2012
2013     Common Columns:
2014
2015       The  overall purpose of these columns is described under Common Columns
2016       at the beginning of this document.
2017
2018       external_ids: map of string-string pairs
2019

Port_Binding TABLE

2021       Each row in this table binds a logical port to a realization. For  most
2022       logical  ports, this means binding to some physical location, for exam‐
2023       ple by binding a logical port to a VIF that belongs to a VM running  on
2024       a  particular  hypervisor.  Other  logical ports, such as logical patch
2025       ports, can be realized without a specific physical location, but  their
2026       bindings are still expressed through rows in this table.
2027
2028       For   every  Logical_Switch_Port  record  in  OVN_Northbound  database,
2029       ovn-northd creates a record in this  table.  ovn-northd  populates  and
2030       maintains  every  column except the chassis and virtual_parent columns,
2031       which it leaves empty in new records.
2032
2033       ovn-controller/ovn-controller-vtep populates the chassis column for the
2034       records  that identify the logical ports that are located on its hyper‐
2035       visor/gateway, which ovn-controller/ovn-controller-vtep in  turn  finds
2036       out  by  monitoring the local hypervisor’s Open_vSwitch database, which
2037       identifies logical ports via  the  conventions  described  in  Integra‐
2038       tionGuide.rst.  (The  exceptions are for Port_Binding records with type
2039       of l3gateway, whose locations are  identified  by  ovn-northd  via  the
2040       options:l3gateway-chassis column in this table. ovn-controller is still
2041       responsible to populate the chassis column.)
2042
2043       ovn-controller also populates  the  virtual_parent  column  of  records
2044       whose type is virtual.
2045
2046       When  a  chassis  shuts down gracefully, it should clean up the chassis
2047       column that it previously had populated. (This is not critical  because
2048       resources  hosted  on the chassis are equally unreachable regardless of
2049       whether their rows are present.) To handle the case where a VM is  shut
2050       down abruptly on one chassis, then brought up again on a different one,
2051       ovn-controller/ovn-controller-vtep must overwrite  the  chassis  column
2052       with new information.
2053
2054   Summary:
2055       Core Features:
2056         datapath                    Datapath_Binding
2057         logical_port                string (must be unique within table)
2058         encap                       optional weak reference to Encap
2059         chassis                     optional weak reference to Chassis
2060         gateway_chassis             set of Gateway_Chassises
2061         ha_chassis_group            optional HA_Chassis_Group
2062         up                          optional boolean
2063         tunnel_key                  integer, in range 1 to 32,767
2064         mac                         set of strings
2065         type                        string
2066       Patch Options:
2067         options : peer              optional string
2068         nat_addresses               set of strings
2069       L3 Gateway Options:
2070         options : peer              optional string
2071         options : l3gateway-chassis
2072                                     optional string
2073         options : nat-addresses     optional string
2074         nat_addresses               set of strings
2075       Localnet Options:
2076         options : network_name      optional string
2077         tag                         optional integer, in range 1 to 4,095
2078       L2 Gateway Options:
2079         options : network_name      optional string
2080         options : l2gateway-chassis
2081                                     optional string
2082         tag                         optional integer, in range 1 to 4,095
2083       VTEP Options:
2084         options : vtep-physical-switch
2085                                     optional string
2086         options : vtep-logical-switch
2087                                     optional string
2088       VMI (or VIF) Options:
2089         options : requested-chassis
2090                                     optional string
2091         options : qos_max_rate      optional string
2092         options : qos_burst         optional string
2093         options : qdisc_queue_id    optional  string,  containing an integer,
2094                                     in range 1 to 61,440
2095       Chassis Redirect Options:
2096         options : distributed-port  optional string
2097       Nested Containers:
2098         parent_port                 optional string
2099         tag                         optional integer, in range 1 to 4,095
2100       Virtual ports:
2101         virtual_parent              optional string
2102       Naming:
2103         external_ids : name         optional string
2104       Common Columns:
2105         external_ids                map of string-string pairs
2106
2107   Details:
2108     Core Features:
2109
2110       datapath: Datapath_Binding
2111              The logical datapath to which the logical port belongs.
2112
2113       logical_port: string (must be unique within table)
2114              A logical port. For a logical switch port, this  is  taken  from
2115              name in the OVN_Northbound database’s Logical_Switch_Port table.
2116              For a logical router port,  this  is  taken  from  name  in  the
2117              OVN_Northbound database’s Logical_Router_port table. (This means
2118              that logical switch ports and router port names must share names
2119              in  an OVN deployment.) OVN does not prescribe a particular for‐
2120              mat for the logical port ID.
2121
2122       encap: optional weak reference to Encap
2123              Points to supported  encapsulation  configurations  to  transmit
2124              logical dataplane packets to this chassis. Each entry is a Encap
2125              record that describes the configuration.
2126
2127       chassis: optional weak reference to Chassis
2128              The meaning of this column depends on the value of the type col‐
2129              umn. This is the meaning for each type
2130
2131              (empty string)
2132                     The  physical  location  of the logical port. To success‐
2133                     fully identify a chassis, this column must be  a  Chassis
2134                     record. This is populated by ovn-controller.
2135
2136              vtep   The  physical  location  of the hardware_vtep gateway. To
2137                     successfully identify a chassis, this column  must  be  a
2138                     Chassis record. This is populated by ovn-controller-vtep.
2139
2140              localnet
2141                     Always  empty. A localnet port is realized on every chas‐
2142                     sis that has connectivity to the  corresponding  physical
2143                     network.
2144
2145              localport
2146                     Always  empty. A localport port is present on every chas‐
2147                     sis.
2148
2149              l3gateway
2150                     The physical location of the L3 gateway. To  successfully
2151                     identify a chassis, this column must be a Chassis record.
2152                     This is populated by ovn-controller based on the value of
2153                     the options:l3gateway-chassis column in this table.
2154
2155              l2gateway
2156                     The physical location of this L2 gateway. To successfully
2157                     identify a chassis, this column must be a Chassis record.
2158                     This is populated by ovn-controller based on the value of
2159                     the options:l2gateway-chassis column in this table.
2160
2161       gateway_chassis: set of Gateway_Chassises
2162              A list of Gateway_Chassis.
2163
2164              This should only be populated for ports with type set  to  chas‐
2165              sisredirect.  This  column  defines  the list of chassis used as
2166              gateways where traffic will be redirected through.
2167
2168       ha_chassis_group: optional HA_Chassis_Group
2169              This should only be populated for ports with type set  to  chas‐
2170              sisredirect.  This  column  defines  the HA chassis group with a
2171              list of HA chassis used as gateways where traffic will be  redi‐
2172              rected through.
2173
2174       up: optional boolean
2175              This  is  set  to  true  whenever all OVS flows required by this
2176              Port_Binding have been installed. This is populated by  ovn-con‐
2177              troller.
2178
2179       tunnel_key: integer, in range 1 to 32,767
2180              A  number  that represents the logical port in the key (e.g. STT
2181              key or Geneve TLV) field carried within tunnel protocol packets.
2182
2183              The tunnel ID must be unique within the scope of a logical data‐
2184              path.
2185
2186       mac: set of strings
2187              The  Ethernet  address  or addresses used as a source address on
2188              the logical port, each in the form xx:xx:xx:xx:xx:xx. The string
2189              unknown is also allowed to indicate that the logical port has an
2190              unknown set of (additional) source addresses.
2191
2192              A VM interface would ordinarily have a single Ethernet  address.
2193              A  gateway  port might initially only have unknown, and then add
2194              MAC addresses to the set as it learns new source addresses.
2195
2196       type: string
2197              A type for this logical port. Logical ports can be used to model
2198              other types of connectivity into an OVN logical switch. The fol‐
2199              lowing types are defined:
2200
2201              (empty string)
2202                     VM (or VIF) interface.
2203
2204              patch  One of a pair of logical ports that act as  if  connected
2205                     by a patch cable. Useful for connecting two logical data‐
2206                     paths, e.g. to connect a  logical  router  to  a  logical
2207                     switch or to another logical router.
2208
2209              l3gateway
2210                     One  of  a pair of logical ports that act as if connected
2211                     by a patch cable across multiple chassis. Useful for con‐
2212                     necting  a logical switch with a Gateway router (which is
2213                     only resident on a particular chassis).
2214
2215              localnet
2216                     A  connection  to  a  locally  accessible  network   from
2217                     ovn-controller instances that have a corresponding bridge
2218                     mapping. A logical  switch  can  have  multiple  localnet
2219                     ports attached. This type is used to model direct connec‐
2220                     tivity to existing networks. In this case,  each  chassis
2221                     should  have  a  mapping for one of the physical networks
2222                     only. Note: nothing said above  implies  that  a  chassis
2223                     cannot  be  plugged to multiple physical networks as long
2224                     as they belong to different switches.
2225
2226              localport
2227                     A connection to a local VIF. Traffic that  arrives  on  a
2228                     localport  is  never  forwarded  over a tunnel to another
2229                     chassis. These ports are present  on  every  chassis  and
2230                     have  the  same  address  in all of them. This is used to
2231                     model connectivity to local services that  run  on  every
2232                     hypervisor.
2233
2234              l2gateway
2235                     An  L2 connection to a physical network. The chassis this
2236                     Port_Binding is bound to will serve as an L2  gateway  to
2237                     the network named by options:network_name.
2238
2239              vtep   A  port to a logical switch on a VTEP gateway chassis. In
2240                     order to get this port correctly recognized  by  the  OVN
2241                     controller,    the    options:vtep-physical-switch    and
2242                     options:vtep-logical-switch must also be defined.
2243
2244              chassisredirect
2245                     A logical port that  represents  a  particular  instance,
2246                     bound  to a specific chassis, of an otherwise distributed
2247                     parent port (e.g. of type patch). A chassisredirect  port
2248                     should  never be used as an inport. When an ingress pipe‐
2249                     line sets the outport, it may set the value to a  logical
2250                     port  of type chassisredirect. This will cause the packet
2251                     to be directed to a specific chassis  to  carry  out  the
2252                     egress pipeline. At the beginning of the egress pipeline,
2253                     the outport will be reset to the value of the distributed
2254                     port.
2255
2256              virtual
2257                     Represents  a  logical port with an virtual ip. This vir‐
2258                     tual ip can be configured on a  logical  port  (which  is
2259                     refered as virtual parent).
2260
2261     Patch Options:
2262
2263       These options apply to logical ports with type of patch.
2264
2265       options : peer: optional string
2266              The  logical_port  in the Port_Binding record for the other side
2267              of the patch. The named logical_port  must  specify  this  logi‐
2268              cal_port  in its own peer option. That is, the two patch logical
2269              ports must have reversed logical_port and peer values.
2270
2271       nat_addresses: set of strings
2272              MAC address followed by a list of  SNAT  and  DNAT  external  IP
2273              addresses, followed by is_chassis_resident("lport"), where lport
2274              is the name of a logical port on the same chassis where the cor‐
2275              responding  NAT  rules  are applied. This is used to send gratu‐
2276              itous ARPs for SNAT and DNAT external IP addresses via localnet,
2277              from the chassis where lport resides. Example: 80:fa:5b:06:72:b7
2278              158.36.44.22  158.36.44.24   is_chassis_resident("foo1").   This
2279              would  result  in generation of gratuitous ARPs for IP addresses
2280              158.36.44.22  and   158.36.44.24   with   a   MAC   address   of
2281              80:fa:5b:06:72:b7 from the chassis where the logical port "foo1"
2282              resides.
2283
2284     L3 Gateway Options:
2285
2286       These options apply to logical ports with type of l3gateway.
2287
2288       options : peer: optional string
2289              The logical_port in the Port_Binding record for the  other  side
2290              of  the  ’l3gateway’  port.  The named logical_port must specify
2291              this logical_port in its own  peer  option.  That  is,  the  two
2292              ’l3gateway’  logical  ports  must have reversed logical_port and
2293              peer values.
2294
2295       options : l3gateway-chassis: optional string
2296              The chassis in which the port resides.
2297
2298       options : nat-addresses: optional string
2299              MAC address of the l3gateway port followed by a list of SNAT and
2300              DNAT external IP addresses. This is used to send gratuitous ARPs
2301              for SNAT and DNAT external IP addresses via  localnet.  Example:
2302              80:fa:5b:06:72:b7  158.36.44.22  158.36.44.24. This would result
2303              in generation of gratuitous ARPs for IP  addresses  158.36.44.22
2304              and  158.36.44.24  with a MAC address of 80:fa:5b:06:72:b7. This
2305              is used in OVS versions prior to 2.8.
2306
2307       nat_addresses: set of strings
2308              MAC address of the l3gateway port followed by a list of SNAT and
2309              DNAT external IP addresses. This is used to send gratuitous ARPs
2310              for SNAT and DNAT external IP addresses via  localnet.  Example:
2311              80:fa:5b:06:72:b7  158.36.44.22  158.36.44.24. This would result
2312              in generation of gratuitous ARPs for IP  addresses  158.36.44.22
2313              and  158.36.44.24  with a MAC address of 80:fa:5b:06:72:b7. This
2314              is used in OVS version 2.8 and later versions.
2315
2316     Localnet Options:
2317
2318       These options apply to logical ports with type of localnet.
2319
2320       options : network_name: optional string
2321              Required.   ovn-controller   uses   the   configuration    entry
2322              ovn-bridge-mappings to determine how to connect to this network.
2323              ovn-bridge-mappings is a list of network names mapped to a local
2324              OVS  bridge  that provides access to that network. An example of
2325              configuring ovn-bridge-mappings would be: .IP
2326              $ ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth0,physnet2:br-eth1
2327
2328              When a logical switch has a localnet port attached, every  chas‐
2329              sis  that  may  have a local vif attached to that logical switch
2330              must have a bridge mapping configured to  reach  that  localnet.
2331              Traffic  that arrives on a localnet port is never forwarded over
2332              a tunnel to another chassis.  If  there  are  multiple  localnet
2333              ports  in a logical switch, each chassis should only have a sin‐
2334              gle bridge mapping for one of the physical  networks.  Note:  In
2335              case  of  multiple  localnet ports, to provide interconnectivity
2336              between all VIFs located on  different  chassis  with  different
2337              fabric  connectivity,  the  fabric should implement some form of
2338              routing between the segments.
2339
2340       tag: optional integer, in range 1 to 4,095
2341              If set, indicates that the port represents  a  connection  to  a
2342              specific  VLAN  on  a locally accessible network. The VLAN ID is
2343              used to match incoming traffic and is  also  added  to  outgoing
2344              traffic.
2345
2346     L2 Gateway Options:
2347
2348       These options apply to logical ports with type of l2gateway.
2349
2350       options : network_name: optional string
2351              Required.    ovn-controller   uses   the   configuration   entry
2352              ovn-bridge-mappings to determine how to connect to this network.
2353              ovn-bridge-mappings is a list of network names mapped to a local
2354              OVS bridge that provides access to that network. An  example  of
2355              configuring ovn-bridge-mappings would be: .IP
2356              $ ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth0,physnet2:br-eth1
2357
2358              When a logical switch has a l2gateway port attached, the chassis
2359              that the l2gateway port is bound to must have a  bridge  mapping
2360              configured to reach the network identified by network_name.
2361
2362       options : l2gateway-chassis: optional string
2363              Required. The chassis in which the port resides.
2364
2365       tag: optional integer, in range 1 to 4,095
2366              If  set,  indicates  that the gateway is connected to a specific
2367              VLAN on the physical network. The  VLAN  ID  is  used  to  match
2368              incoming traffic and is also added to outgoing traffic.
2369
2370     VTEP Options:
2371
2372       These options apply to logical ports with type of vtep.
2373
2374       options : vtep-physical-switch: optional string
2375              Required. The name of the VTEP gateway.
2376
2377       options : vtep-logical-switch: optional string
2378              Required.  A  logical switch name connected by the VTEP gateway.
2379              Must be set when type is vtep.
2380
2381     VMI (or VIF) Options:
2382
2383       These options apply to logical ports with type having (empty string)
2384
2385       options : requested-chassis: optional string
2386              If set, identifies a specific chassis (by name or hostname) that
2387              is  allowed  to  bind  this port. Using this option will prevent
2388              thrashing between two chassis trying to bind the same port  dur‐
2389              ing  a live migration. It can also prevent similar thrashing due
2390              to a mis-configuration, if a port  is  accidentally  created  on
2391              more than one chassis.
2392
2393       options : qos_max_rate: optional string
2394              If  set,  indicates  the  maximum  rate  for data sent from this
2395              interface, in bit/s. The traffic will  be  shaped  according  to
2396              this limit.
2397
2398       options : qos_burst: optional string
2399              If set, indicates the maximum burst size for data sent from this
2400              interface, in bits.
2401
2402       options : qdisc_queue_id: optional string, containing  an  integer,  in
2403       range 1 to 61,440
2404              Indicates  the queue number on the physical device. This is same
2405              as the queue_id used in OpenFlow in struct ofp_action_enqueue.
2406
2407     Chassis Redirect Options:
2408
2409       These options apply to logical ports with type of chassisredirect.
2410
2411       options : distributed-port: optional string
2412              The name of the distributed port for which this  chassisredirect
2413              port represents a particular instance.
2414
2415     Nested Containers:
2416
2417       These columns support containers nested within a VM. Specifically, they
2418       are used when type is empty and logical_port identifies  the  interface
2419       of  a  container  spawned inside a VM. They are empty for containers or
2420       VMs that run directly on a hypervisor.
2421
2422       parent_port: optional string
2423              This is taken from parent_name in the OVN_Northbound  database’s
2424              Logical_Switch_Port table.
2425
2426       tag: optional integer, in range 1 to 4,095
2427              Identifies  the  VLAN tag in the network traffic associated with
2428              that container’s network interface.
2429
2430              This column is used for a different purpose when type is  local‐
2431              net  (see  Localnet Options, above) or l2gateway (see L2 Gateway
2432              Options, above).
2433
2434     Virtual ports:
2435
2436       virtual_parent: optional string
2437              This column is set by ovn-controller with one of the value  from
2438              the  options:virtual-parents  in  the  OVN_Northbound database’s
2439              Logical_Switch_Port table when the OVN action bind_vport is exe‐
2440              cuted.  ovn-controller also sets the chassis column when it exe‐
2441              cutes this action with its chassis id.
2442
2443              ovn-controller sets this column only if the type is "virtual".
2444
2445     Naming:
2446
2447       external_ids : name: optional string
2448              For a logical switch port, ovn-northd copies  this  from  exter‐
2449              nal_ids:neutron:port_name  in  the  Logical_Switch_Port table in
2450              the OVN_Northbound database, if it is a nonempty string.
2451
2452              For a logical switch port, ovn-northd  does  not  currently  set
2453              this key.
2454
2455     Common Columns:
2456
2457       external_ids: map of string-string pairs
2458              See External IDs at the beginning of this document.
2459
2460              The  ovn-northd  program  populates this column with all entries
2461              into the external_ids column of the Logical_Switch_Port table of
2462              the OVN_Northbound database.
2463

MAC_Binding TABLE

2465       Each  row  in  this  table specifies a binding from an IP address to an
2466       Ethernet address that has been discovered through  ARP  (for  IPv4)  or
2467       neighbor discovery (for IPv6). This table is primarily used to discover
2468       bindings on physical networks, because IP-to-MAC bindings  for  virtual
2469       machines are usually populated statically into the Port_Binding table.
2470
2471       This  table  expresses  a  functional  relationship:  MAC_Binding(logi‐
2472       cal_port, ip) = mac.
2473
2474       In outline, the lifetime of a logical router’s MAC binding  looks  like
2475       this:
2476
2477              1.  On  hypervisor  1, a logical router determines that a packet
2478                  should be forwarded to IP address A on  one  of  its  router
2479                  ports.  It  uses  its logical flow table to determine that A
2480                  lacks a static IP-to-MAC binding and the get_arp  action  to
2481                  determine that it lacks a dynamic IP-to-MAC binding.
2482
2483              2.  Using  an  OVN logical arp action, the logical router gener‐
2484                  ates and sends a broadcast ARP request to the  router  port.
2485                  It drops the IP packet.
2486
2487              3.  The  logical switch attached to the router port delivers the
2488                  ARP request to all of its ports. (It  might  make  sense  to
2489                  deliver it only to ports that have no static IP-to-MAC bind‐
2490                  ings, but this could also be surprising behavior.)
2491
2492              4.  A host or VM on hypervisor 2 (which might  be  the  same  as
2493                  hypervisor  1)  attached  to  the logical switch owns the IP
2494                  address in question. It composes an ARP reply  and  unicasts
2495                  it to the logical router port’s Ethernet address.
2496
2497              5.  The  logical  switch  delivers  the ARP reply to the logical
2498                  router port.
2499
2500              6.  The logical router flow table executes a put_arp action.  To
2501                  record  the  IP-to-MAC binding, ovn-controller adds a row to
2502                  the MAC_Binding table.
2503
2504              7.  On  hypervisor  1,  ovn-controller  receives   the   updated
2505                  MAC_Binding table from the OVN southbound database. The next
2506                  packet destined to A through  the  logical  router  is  sent
2507                  directly to the bound Ethernet address.
2508
2509   Summary:
2510       logical_port                  string
2511       ip                            string
2512       mac                           string
2513       datapath                      Datapath_Binding
2514
2515   Details:
2516       logical_port: string
2517              The logical port on which the binding was discovered.
2518
2519       ip: string
2520              The bound IP address.
2521
2522       mac: string
2523              The Ethernet address to which the IP is bound.
2524
2525       datapath: Datapath_Binding
2526              The logical datapath to which the logical port belongs.
2527

DHCP_Options TABLE

2529       Each  row in this table stores the DHCP Options supported by native OVN
2530       DHCP. ovn-northd populates this table with the supported DHCP  options.
2531       ovn-controller  looks  up  this table to get the DHCP codes of the DHCP
2532       options defined in the "put_dhcp_opts" action. Please refer to the  RFC
2533       2132  "https://tools.ietf.org/html/rfc2132"  for  the  possible list of
2534       DHCP options that can be defined here.
2535
2536   Summary:
2537       name                          string
2538       code                          integer, in range 0 to 254
2539       type                          string, one of  bool,  domains,  host_id,
2540                                     ipv4, static_routes, str, uint16, uint32,
2541                                     or uint8
2542
2543   Details:
2544       name: string
2545              Name of the DHCP option.
2546
2547              Example. name="router"
2548
2549       code: integer, in range 0 to 254
2550              DHCP option code for the DHCP option as defined in the RFC 2132.
2551
2552              Example. code=3
2553
2554       type: string, one of bool, domains, host_id, ipv4, static_routes,  str,
2555       uint16, uint32, or uint8
2556              Data type of the DHCP option code.
2557
2558              value: bool
2559                     This  indicates  that  the  value of the DHCP option is a
2560                     bool.
2561
2562                     Example.       "name=ip_forward_enable",       "code=19",
2563                     "type=bool".
2564
2565                     put_dhcp_opts(..., ip_forward_enable = 1,...)
2566
2567              value: uint8
2568                     This  indicates  that  the value of the DHCP option is an
2569                     unsigned int8 (8 bits)
2570
2571                     Example. "name=default_ttl", "code=23", "type=uint8".
2572
2573                     put_dhcp_opts(..., default_ttl = 50,...)
2574
2575              value: uint16
2576                     This indicates that the value of the DHCP  option  is  an
2577                     unsigned int16 (16 bits).
2578
2579                     Example. "name=mtu", "code=26", "type=uint16".
2580
2581                     put_dhcp_opts(..., mtu = 1450,...)
2582
2583              value: uint32
2584                     This  indicates  that  the value of the DHCP option is an
2585                     unsigned int32 (32 bits).
2586
2587                     Example. "name=lease_time", "code=51", "type=uint32".
2588
2589                     put_dhcp_opts(..., lease_time = 86400,...)
2590
2591              value: ipv4
2592                     This indicates that the value of the DHCP  option  is  an
2593                     IPv4 address or addresses.
2594
2595                     Example. "name=router", "code=3", "type=ipv4".
2596
2597                     put_dhcp_opts(..., router = 10.0.0.1,...)
2598
2599                     Example. "name=dns_server", "code=6", "type=ipv4".
2600
2601                     put_dhcp_opts(..., dns_server = {8.8.8.8 7.7.7.7},...)
2602
2603              value: static_routes
2604                     This indicates that the value of the DHCP option contains
2605                     a pair of IPv4 route and next hop addresses.
2606
2607                     Example.    "name=classless_static_route",    "code=121",
2608                     "type=static_routes".
2609
2610                     put_dhcp_opts(...,        classless_static_route        =
2611                     {30.0.0.0/24,10.0.0.4,0.0.0.0/0,10.0.0.1}...)
2612
2613              value: str
2614                     This indicates that the value of the  DHCP  option  is  a
2615                     string.
2616
2617                     Example. "name=host_name", "code=12", "type=str".
2618
2619              value: host_id
2620                     This  indicates  that  the  value of the DHCP option is a
2621                     host_id. It can either be a host_name or an IP address.
2622
2623                     Example. "name=tftp_server", "code=66", "type=host_id".
2624
2625              value: domains
2626                     This indicates that the value of the  DHCP  option  is  a
2627                     domain name or a comma separated list of domain names.
2628
2629                     Example.      "name=domain_search_list",      "code=119",
2630                     "type=domains".
2631

DHCPv6_Options TABLE

2633       Each row in this table stores the DHCPv6 Options  supported  by  native
2634       OVN  DHCPv6.  ovn-northd populates this table with the supported DHCPv6
2635       options. ovn-controller looks up this table to get the DHCPv6 codes  of
2636       the  DHCPv6 options defined in the put_dhcpv6_opts action. Please refer
2637       to RFC 3315 and RFC 3646 for the list of DHCPv6  options  that  can  be
2638       defined here.
2639
2640   Summary:
2641       name                          string
2642       code                          integer, in range 0 to 254
2643       type                          string, one of ipv6, mac, or str
2644
2645   Details:
2646       name: string
2647              Name of the DHCPv6 option.
2648
2649              Example. name="ia_addr"
2650
2651       code: integer, in range 0 to 254
2652              DHCPv6  option  code  for  the  DHCPv6  option as defined in the
2653              appropriate RFC.
2654
2655              Example. code=3
2656
2657       type: string, one of ipv6, mac, or str
2658              Data type of the DHCPv6 option code.
2659
2660              value: ipv6
2661                     This indicates that the value of the DHCPv6 option is  an
2662                     IPv6 address(es).
2663
2664                     Example. "name=ia_addr", "code=5", "type=ipv6".
2665
2666                     put_dhcpv6_opts(..., ia_addr = ae70::4,...)
2667
2668              value: str
2669                     This  indicates  that the value of the DHCPv6 option is a
2670                     string.
2671
2672                     Example. "name=domain_search", "code=24", "type=str".
2673
2674                     put_dhcpv6_opts(..., domain_search = ovn.domain,...)
2675
2676              value: mac
2677                     This indicates that the value of the DHCPv6 option  is  a
2678                     MAC address.
2679
2680                     Example. "name=server_id", "code=2", "type=mac".
2681
2682                     put_dhcpv6_opts(..., server_id = 01:02:03:04L05:06,...)
2683

Connection TABLE

2685       Configuration  for  a  database  connection to an Open vSwitch database
2686       (OVSDB) client.
2687
2688       This table  primarily  configures  the  Open  vSwitch  database  server
2689       (ovsdb-server).
2690
2691       The  Open vSwitch database server can initiate and maintain active con‐
2692       nections to remote clients. It can also  listen  for  database  connec‐
2693       tions.
2694
2695   Summary:
2696       Core Features:
2697         target                      string (must be unique within table)
2698         read_only                   boolean
2699         role                        string
2700       Client Failure Detection and Handling:
2701         max_backoff                 optional integer, at least 1,000
2702         inactivity_probe            optional integer
2703       Status:
2704         is_connected                boolean
2705         status : last_error         optional string
2706         status : state              optional  string, one of ACTIVE, BACKOFF,
2707                                     CONNECTING, IDLE, or VOID
2708         status : sec_since_connect  optional string, containing  an  integer,
2709                                     at least 0
2710         status : sec_since_disconnect
2711                                     optional  string,  containing an integer,
2712                                     at least 0
2713         status : locks_held         optional string
2714         status : locks_waiting      optional string
2715         status : locks_lost         optional string
2716         status : n_connections      optional string, containing  an  integer,
2717                                     at least 2
2718         status : bound_port         optional string, containing an integer
2719       Common Columns:
2720         external_ids                map of string-string pairs
2721         other_config                map of string-string pairs
2722
2723   Details:
2724     Core Features:
2725
2726       target: string (must be unique within table)
2727              Connection methods for clients.
2728
2729              The following connection methods are currently supported:
2730
2731              ssl:host[:port]
2732                     The  specified  SSL  port  on  the  given host, which can
2733                     either be a DNS name (if built with unbound  library)  or
2734                     an IP address. A valid SSL configuration must be provided
2735                     when this form is used, this configuration can be  speci‐
2736                     fied via command-line options or the SSL table.
2737
2738                     If port is not specified, it defaults to 6640.
2739
2740                     SSL  support  is  an  optional feature that is not always
2741                     built as part of Open vSwitch.
2742
2743              tcp:host[:port]
2744                     The specified TCP port  on  the  given  host,  which  can
2745                     either  be  a DNS name (if built with unbound library) or
2746                     an IP address (IPv4 or IPv6). If host is an IPv6 address,
2747                     wrap it in square brackets, e.g. tcp:[::1]:6640.
2748
2749                     If port is not specified, it defaults to 6640.
2750
2751              pssl:[port][:host]
2752                     Listens  for  SSL  connections on the specified TCP port.
2753                     Specify 0 for  port  to  have  the  kernel  automatically
2754                     choose  an available port. If host, which can either be a
2755                     DNS name  (if  built  with  unbound  library)  or  an  IP
2756                     address, is specified, then connections are restricted to
2757                     the resolved or specified local IP address  (either  IPv4
2758                     or  IPv6  address).  If  host is an IPv6 address, wrap in
2759                     square brackets, e.g. pssl:6640:[::1].  If  host  is  not
2760                     specified  then  it  listens  only on IPv4 (but not IPv6)
2761                     addresses. A valid SSL  configuration  must  be  provided
2762                     when  this form is used, this can be specified either via
2763                     command-line options or the SSL table.
2764
2765                     If port is not specified, it defaults to 6640.
2766
2767                     SSL support is an optional feature  that  is  not  always
2768                     built as part of Open vSwitch.
2769
2770              ptcp:[port][:host]
2771                     Listens  for connections on the specified TCP port. Spec‐
2772                     ify 0 for port to have the kernel automatically choose an
2773                     available  port.  If host, which can either be a DNS name
2774                     (if built with unbound library)  or  an  IP  address,  is
2775                     specified,   then   connections  are  restricted  to  the
2776                     resolved or specified local IP address  (either  IPv4  or
2777                     IPv6  address).  If  host  is an IPv6 address, wrap it in
2778                     square brackets, e.g. ptcp:6640:[::1].  If  host  is  not
2779                     specified then it listens only on IPv4 addresses.
2780
2781                     If port is not specified, it defaults to 6640.
2782
2783              When  multiple clients are configured, the target values must be
2784              unique. Duplicate target values yield unspecified results.
2785
2786       read_only: boolean
2787              true to restrict these connections  to  read-only  transactions,
2788              false to allow them to modify the database.
2789
2790       role: string
2791              String containing role name for this connection entry.
2792
2793     Client Failure Detection and Handling:
2794
2795       max_backoff: optional integer, at least 1,000
2796              Maximum  number  of  milliseconds  to  wait  between  connection
2797              attempts. Default is implementation-specific.
2798
2799       inactivity_probe: optional integer
2800              Maximum number of milliseconds of idle time on connection to the
2801              client  before  sending  an  inactivity  probe  message. If Open
2802              vSwitch does not communicate with the client for  the  specified
2803              number  of  seconds,  it will send a probe. If a response is not
2804              received for the same additional amount of  time,  Open  vSwitch
2805              assumes  the  connection  has been broken and attempts to recon‐
2806              nect. Default is implementation-specific. A value of 0  disables
2807              inactivity probes.
2808
2809     Status:
2810
2811       Key-value pair of is_connected is always updated. Other key-value pairs
2812       in the status columns may be updated depends on the target type.
2813
2814       When target specifies a connection method that listens for inbound con‐
2815       nections  (e.g.  ptcp:  or punix:), both n_connections and is_connected
2816       may also be updated while the remaining key-value pairs are omitted.
2817
2818       On the other hand, when target specifies an  outbound  connection,  all
2819       key-value  pairs  may  be  updated, except the above-mentioned two key-
2820       value pairs associated with inbound connection targets. They are  omit‐
2821       ted.
2822
2823       is_connected: boolean
2824              true if currently connected to this client, false otherwise.
2825
2826       status : last_error: optional string
2827              A human-readable description of the last error on the connection
2828              to the manager; i.e. strerror(errno). This key will  exist  only
2829              if an error has occurred.
2830
2831       status  :  state:  optional string, one of ACTIVE, BACKOFF, CONNECTING,
2832       IDLE, or VOID
2833              The state of the connection to the manager:
2834
2835              VOID   Connection is disabled.
2836
2837              BACKOFF
2838                     Attempting to reconnect at an increasing period.
2839
2840              CONNECTING
2841                     Attempting to connect.
2842
2843              ACTIVE Connected, remote host responsive.
2844
2845              IDLE   Connection is idle. Waiting for response to keep-alive.
2846
2847              These values may change in the future. They  are  provided  only
2848              for human consumption.
2849
2850       status  : sec_since_connect: optional string, containing an integer, at
2851       least 0
2852              The amount of time since this client last successfully connected
2853              to the database (in seconds). Value is empty if client has never
2854              successfully been connected.
2855
2856       status : sec_since_disconnect: optional string, containing an  integer,
2857       at least 0
2858              The  amount of time since this client last disconnected from the
2859              database (in seconds). Value is empty if client has  never  dis‐
2860              connected.
2861
2862       status : locks_held: optional string
2863              Space-separated  list  of the names of OVSDB locks that the con‐
2864              nection holds. Omitted if  the  connection  does  not  hold  any
2865              locks.
2866
2867       status : locks_waiting: optional string
2868              Space-separated  list  of the names of OVSDB locks that the con‐
2869              nection is currently waiting to acquire. Omitted if the  connec‐
2870              tion is not waiting for any locks.
2871
2872       status : locks_lost: optional string
2873              Space-separated  list  of the names of OVSDB locks that the con‐
2874              nection has had stolen by another OVSDB client.  Omitted  if  no
2875              locks have been stolen from this connection.
2876
2877       status  :  n_connections:  optional  string,  containing an integer, at
2878       least 2
2879              When target specifies  a  connection  method  that  listens  for
2880              inbound connections (e.g. ptcp: or pssl:) and more than one con‐
2881              nection is actually active, the value is the  number  of  active
2882              connections. Otherwise, this key-value pair is omitted.
2883
2884       status : bound_port: optional string, containing an integer
2885              When target is ptcp: or pssl:, this is the TCP port on which the
2886              OVSDB server is listening. (This  is  particularly  useful  when
2887              target  specifies a port of 0, allowing the kernel to choose any
2888              available port.)
2889
2890     Common Columns:
2891
2892       The overall purpose of these columns is described under Common  Columns
2893       at the beginning of this document.
2894
2895       external_ids: map of string-string pairs
2896
2897       other_config: map of string-string pairs
2898

SSL TABLE

2900       SSL configuration for ovn-sb database access.
2901
2902   Summary:
2903       private_key                   string
2904       certificate                   string
2905       ca_cert                       string
2906       bootstrap_ca_cert             boolean
2907       ssl_protocols                 string
2908       ssl_ciphers                   string
2909       Common Columns:
2910         external_ids                map of string-string pairs
2911
2912   Details:
2913       private_key: string
2914              Name  of  a  PEM  file  containing  the  private key used as the
2915              switch’s identity for SSL connections to the controller.
2916
2917       certificate: string
2918              Name of a PEM file containing a certificate, signed by the  cer‐
2919              tificate authority (CA) used by the controller and manager, that
2920              certifies the switch’s private key,  identifying  a  trustworthy
2921              switch.
2922
2923       ca_cert: string
2924              Name  of a PEM file containing the CA certificate used to verify
2925              that the switch is connected to a trustworthy controller.
2926
2927       bootstrap_ca_cert: boolean
2928              If set to true, then Open vSwitch will attempt to obtain the  CA
2929              certificate  from the controller on its first SSL connection and
2930              save it to the named PEM file. If  it  is  successful,  it  will
2931              immediately  drop the connection and reconnect, and from then on
2932              all SSL connections  must  be  authenticated  by  a  certificate
2933              signed  by the CA certificate thus obtained. This option exposes
2934              the SSL connection to a man-in-the-middle attack  obtaining  the
2935              initial  CA  certificate.  It may still be useful for bootstrap‐
2936              ping.
2937
2938       ssl_protocols: string
2939              List of SSL protocols to be enabled  for  SSL  connections.  The
2940              default when this option is omitted is TLSv1,TLSv1.1,TLSv1.2.
2941
2942       ssl_ciphers: string
2943              List  of  ciphers  (in  OpenSSL cipher string format) to be sup‐
2944              ported for SSL connections. The  default  when  this  option  is
2945              omitted is HIGH:!aNULL:!MD5.
2946
2947     Common Columns:
2948
2949       The  overall purpose of these columns is described under Common Columns
2950       at the beginning of this document.
2951
2952       external_ids: map of string-string pairs
2953

DNS TABLE

2955       Each row  in  this  table  stores  the  DNS  records.  The  OVN  action
2956       dns_lookup uses this table for DNS resolution.
2957
2958   Summary:
2959       records                       map of string-string pairs
2960       datapaths                     set of 1 or more Datapath_Bindings
2961       Common Columns:
2962         external_ids                map of string-string pairs
2963
2964   Details:
2965       records: map of string-string pairs
2966              Key-value pair of DNS records with DNS query name as the key and
2967              a string of IP address(es) separated by comma or  space  as  the
2968              value.  ovn-northd stores the DNS query name in all lowercase in
2969              order to facilitate case-insensitive lookups.
2970
2971              Example:  "vm1.ovn.org" = "10.0.0.4 aef0::4"
2972
2973       datapaths: set of 1 or more Datapath_Bindings
2974              The DNS records defined in the column records  will  be  applied
2975              only  to  the DNS queries originating from the datapaths defined
2976              in this column.
2977
2978     Common Columns:
2979
2980       external_ids: map of string-string pairs
2981              See External IDs at the beginning of this document.
2982

RBAC_Role TABLE

2984       Role table for role-based access controls.
2985
2986   Summary:
2987       name                          string
2988       permissions                   map of string-weak reference to RBAC_Per‐
2989                                     mission pairs
2990
2991   Details:
2992       name: string
2993              The  role  name, corresponding to the role column in the Connec‐
2994              tion table.
2995
2996       permissions: map of string-weak reference to RBAC_Permission pairs
2997              A mapping of table names to rows in the RBAC_Permission table.
2998

RBAC_Permission TABLE

3000       Permissions table for role-based access controls.
3001
3002   Summary:
3003       table                         string
3004       authorization                 set of strings
3005       insert_delete                 boolean
3006       update                        set of strings
3007
3008   Details:
3009       table: string
3010              Name of table to which this row applies.
3011
3012       authorization: set of strings
3013              Set of strings identifying columns and column:key  pairs  to  be
3014              compared with client ID. At least one match is required in order
3015              to be authorized. A zero-length string is treated as  a  special
3016              value indicating all clients should be considered authorized.
3017
3018       insert_delete: boolean
3019              When  "true",  row  insertions  and authorized row deletions are
3020              permitted.
3021
3022       update: set of strings
3023              Set of strings identifying columns  and  column:key  pairs  that
3024              authorized clients are allowed to modify.
3025

Gateway_Chassis TABLE

3027       Association  of Port_Binding rows of type chassisredirect to a Chassis.
3028       The traffic going out through a specific chassisredirect port  will  be
3029       redirected to a chassis, or a set of them in high availability configu‐
3030       rations.
3031
3032   Summary:
3033       name                          string (must be unique within table)
3034       chassis                       optional weak reference to Chassis
3035       priority                      integer, in range 0 to 32,767
3036       options                       map of string-string pairs
3037       Common Columns:
3038         external_ids                map of string-string pairs
3039
3040   Details:
3041       name: string (must be unique within table)
3042              Name of the Gateway_Chassis.
3043
3044              A   suggested,   but   not   required   naming   convention   is
3045              ${port_name}_${chassis_name}.
3046
3047       chassis: optional weak reference to Chassis
3048              The Chassis to which we send the traffic.
3049
3050       priority: integer, in range 0 to 32,767
3051              This  is  the  priority  the  specific  Chassis  among all Gate‐
3052              way_Chassis belonging to the same Port_Binding.
3053
3054       options: map of string-string pairs
3055              Reserved for future use.
3056
3057     Common Columns:
3058
3059       The overall purpose of these columns is described under Common  Columns
3060       at the beginning of this document.
3061
3062       external_ids: map of string-string pairs
3063

HA_Chassis TABLE

3065   Summary:
3066       chassis                       optional weak reference to Chassis
3067       priority                      integer, in range 0 to 32,767
3068       Common Columns:
3069         external_ids                map of string-string pairs
3070
3071   Details:
3072       chassis: optional weak reference to Chassis
3073              The Chassis which provides the HA functionality.
3074
3075       priority: integer, in range 0 to 32,767
3076              Priority  of  the HA chassis. Chassis with highest priority will
3077              be the master in the HA chassis group.
3078
3079     Common Columns:
3080
3081       external_ids: map of string-string pairs
3082              See External IDs at the beginning of this document.
3083

HA_Chassis_Group TABLE

3085       Table representing a group of chassis which can provide High availabil‐
3086       ity  services.  Each  chassis  in the group is represented by the table
3087       HA_Chassis. The HA chassis with highest priority will be the master  of
3088       this  group. If the master chassis failover is detected, the HA chassis
3089       with the next higher priority takes over the responsibility of  provid‐
3090       ing the HA. If ha_chassis_group column of the table Port_Binding refer‐
3091       ences this table, then this HA chassis group provides the gateway func‐
3092       tionality  and  redirects  the  gateway  traffic  to the master of this
3093       group.
3094
3095   Summary:
3096       name                          string (must be unique within table)
3097       ha_chassis                    set of HA_Chassises
3098       ref_chassis                   set of weak reference to Chassis
3099       Common Columns:
3100         external_ids                map of string-string pairs
3101
3102   Details:
3103       name: string (must be unique within table)
3104              Name of the HA_Chassis_Group. Name should be unique.
3105
3106       ha_chassis: set of HA_Chassises
3107              A list of HA_Chassis which belongs to this group.
3108
3109       ref_chassis: set of weak reference to Chassis
3110              The set of Chassis that reference  this  HA  chassis  group.  To
3111              determine  the  correct  Chassis,  find the chassisredirect type
3112              Port_Binding  that  references   this   HA_Chassis_Group.   This
3113              Port_Binding  is  derived  from  some particular logical router.
3114              Starting from that LR, find the set of all logical switches  and
3115              routers  connected  to it, directly or indirectly, across router
3116              ports that link one LRP to another or to a LSP. For each LSP  in
3117              these  logical switches, find the corresponding Port_Binding and
3118              add its bound Chassis (if any) to ref_chassis.
3119
3120     Common Columns:
3121
3122       external_ids: map of string-string pairs
3123              See External IDs at the beginning of this document.
3124

Controller_Event TABLE

3126       Database table used by ovn-controller to  report  CMS  related  events.
3127       Please note there is no guarantee a given event is written exactly once
3128       in the db. It is CMS responsibility to squash duplicated  lines  or  to
3129       filter out duplicated events
3130
3131   Summary:
3132       event_type                    string, must be empty_lb_backends
3133       event_info                    map of string-string pairs
3134       chassis                       optional weak reference to Chassis
3135       seq_num                       integer
3136
3137   Details:
3138       event_type: string, must be empty_lb_backends
3139              Event type occurred
3140
3141       event_info: map of string-string pairs
3142              Key-value  pairs used to specify event info to the CMS. Possible
3143              values are:
3144
3145              ·      vip: VIP reported for the empty_lb_backends event
3146
3147              ·      protocol:   Transport   protocol   reported    for    the
3148                     empty_lb_backends event
3149
3150              ·      load_balancer: UUID of the load balancer reported for the
3151                     empty_lb_backends event
3152
3153       chassis: optional weak reference to Chassis
3154              This column is a Chassis record to identify the chassis that has
3155              managed a given event.
3156
3157       seq_num: integer
3158              Event  sequence  number. Global counter for controller generated
3159              events. It can be used by the CMS to detect possible duplication
3160              of the same event.
3161

IP_Multicast TABLE

3163       IP Multicast configuration options. For now only applicable to IGMP.
3164
3165   Summary:
3166       datapath                      weak  reference to Datapath_Binding (must
3167                                     be unique within table)
3168       enabled                       optional boolean
3169       querier                       optional boolean
3170       table_size                    optional integer
3171       idle_timeout                  optional integer
3172       query_interval                optional integer
3173       seq_no                        integer
3174       Querier configuration options:
3175         eth_src                     string
3176         ip4_src                     string
3177         ip6_src                     string
3178         query_max_resp              optional integer
3179
3180   Details:
3181       datapath: weak reference to Datapath_Binding (must be unique within ta‐
3182       ble)
3183              Datapath_Binding entry for which these configuration options are
3184              defined.
3185
3186       enabled: optional boolean
3187              Enables/disables multicast snooping. Default: disabled.
3188
3189       querier: optional boolean
3190              Enables/disables multicast querying. If enabled  then  multicast
3191              querying is enabled by default.
3192
3193       table_size: optional integer
3194              Limits  the  number  of  multicast  groups  that can be learned.
3195              Default: 2048 groups per datapath.
3196
3197       idle_timeout: optional integer
3198              Configures the idle timeout (in seconds) for IP multicast groups
3199              if multicast snooping is enabled. Default: 300 seconds.
3200
3201       query_interval: optional integer
3202              Configures  the  interval  (in  seconds)  for  sending multicast
3203              queries if snooping and querier are enabled. Default: idle_time‐
3204              out/2 seconds.
3205
3206       seq_no: integer
3207              ovn-controller  reads  this value and flushes all learned multi‐
3208              cast groups when it detects that seq_no was changed.
3209
3210     Querier configuration options:
3211
3212       The ovn-controller process that runs on OVN hypervisor nodes  uses  the
3213       following columns to determine field values in IGMP/MLD queries that it
3214       originates:
3215
3216       eth_src: string
3217              Source Ethernet address.
3218
3219       ip4_src: string
3220              Source IPv4 address.
3221
3222       ip6_src: string
3223              Source IPv6 address.
3224
3225       query_max_resp: optional integer
3226              Value (in seconds) to be used as "max-response" field in  multi‐
3227              cast queries. Default: 1 second.
3228

IGMP_Group TABLE

3230       Contains learned IGMP groups indexed by address/datapath/chassis.
3231
3232   Summary:
3233       address                       string
3234       datapath                      optional weak reference to Datapath_Bind‐
3235                                     ing
3236       chassis                       optional weak reference to Chassis
3237       ports                         set of weak reference to Port_Bindings
3238
3239   Details:
3240       address: string
3241              Destination IPv4 address for the IGMP group.
3242
3243       datapath: optional weak reference to Datapath_Binding
3244              Datapath to which this IGMP group belongs.
3245
3246       chassis: optional weak reference to Chassis
3247              Chassis to which this IGMP group belongs.
3248
3249       ports: set of weak reference to Port_Bindings
3250              The destination port bindings for this IGMP group.
3251

Service_Monitor TABLE

3253       Each row in this table configures monitoring a service  for  its  live‐
3254       ness.  The  service  can  be an IPv4 TCP or UDP service. ovn-controller
3255       periodically sends out service monitor packets and updates  the  status
3256       of the service. Service monitoring for IPv6 services is not supported.
3257
3258       ovn-northd  uses  this  feature  to  implement the load balancer health
3259       check feature offered to the CMS through the northbound database.
3260
3261   Summary:
3262       Configuration:
3263         ip                          string
3264         protocol                    optional string, either tcp or udp
3265         port                        integer, in range 0 to 32,767
3266         logical_port                string
3267         src_mac                     string
3268         src_ip                      string
3269         options : interval          optional string, containing an integer
3270         options : timeout           optional string, containing an integer
3271         options : success_count     optional string, containing an integer
3272         options : failure_count     optional string, containing an integer
3273       Status Reporting:
3274         status                      optional string, one of  error,  offline,
3275                                     or online
3276       Common Columns:
3277         external_ids                map of string-string pairs
3278
3279   Details:
3280     Configuration:
3281
3282       ovn-northd sets these columns and values to configure the service moni‐
3283       tor.
3284
3285       ip: string
3286              IP of the service to be monitored. Only IPv4 is supported.
3287
3288       protocol: optional string, either tcp or udp
3289              The protocol of the service.
3290
3291       port: integer, in range 0 to 32,767
3292              The TCP or UDP port of the service.
3293
3294       logical_port: string
3295              The VIF of the logical port on which the service is running. The
3296              ovn-controller that binds this logical_port monitors the service
3297              by sending periodic monitor packets.
3298
3299       src_mac: string
3300              Source Ethernet address to use in the service monitor packet.
3301
3302       src_ip: string
3303              Source IPv4 address to use in the service monitor packet.
3304
3305       options : interval: optional string, containing an integer
3306              The interval, in seconds, between service monitor checks.
3307
3308       options : timeout: optional string, containing an integer
3309              The time, in seconds, after  which  the  service  monitor  check
3310              times out.
3311
3312       options : success_count: optional string, containing an integer
3313              The  number of successful checks after which the service is con‐
3314              sidered online.
3315
3316       options : failure_count: optional string, containing an integer
3317              The number of failure checks after which the service is  consid‐
3318              ered offline.
3319
3320     Status Reporting:
3321
3322       The  ovn-controller  on the chassis that hosts the logical_port updates
3323       this column to report the service’s status.
3324
3325       status: optional string, one of error, offline, or online
3326              For TCP service, ovn-controller sends a SYN to the  service  and
3327              expects an ACK response to consider the service to be online.
3328
3329              For  UDP  service, ovn-controller sends a UDP packet to the ser‐
3330              vice and doesn’t expect any reply. If it receives an ICMP reply,
3331              then it considers the service to be offline.
3332
3333     Common Columns:
3334
3335       external_ids: map of string-string pairs
3336              See External IDs at the beginning of this document.
3337

Load_Balancer TABLE

3339       Each row represents a load balancer.
3340
3341   Summary:
3342       name                          string
3343       vips                          map of string-string pairs
3344       protocol                      optional string, one of sctp, tcp, or udp
3345       datapaths                     set of Datapath_Bindings
3346       Load_Balancer options:
3347         options : hairpin_snat_ip   optional string
3348       Common Columns:
3349         external_ids                map of string-string pairs
3350
3351   Details:
3352       name: string
3353              A  name  for the load balancer. This name has no special meaning
3354              or purpose other than to provide convenience for human  interac‐
3355              tion with the ovn-nb database.
3356
3357       vips: map of string-string pairs
3358              A  map of virtual IP addresses (and an optional port number with
3359              : as a separator) associated with this load balancer  and  their
3360              corresponding  endpoint  IP addresses (and optional port numbers
3361              with : as separators) separated by commas.
3362
3363       protocol: optional string, one of sctp, tcp, or udp
3364              Valid protocols are tcp, udp, or sctp.  This  column  is  useful
3365              when  a  port  number is provided as part of the vips column. If
3366              this column is empty and a port number is provided  as  part  of
3367              vips column, OVN assumes the protocol to be tcp.
3368
3369       datapaths: set of Datapath_Bindings
3370              Datapaths to which this load balancer applies to.
3371
3372     Load_Balancer options:
3373
3374       options : hairpin_snat_ip: optional string
3375              IP  to  be  used  as  source IP for packets that have been hair-
3376              pinned after load balancing. This value is  automatically  popu‐
3377              lated by ovn-northd.
3378
3379     Common Columns:
3380
3381       external_ids: map of string-string pairs
3382              See External IDs at the beginning of this document.
3383

BFD TABLE

3385       Contains BFD parameter for ovn-controller bfd configuration.
3386
3387   Summary:
3388       Configuration:
3389         src_port                    integer, in range 49,152 to 65,535
3390         disc                        integer
3391         logical_port                string
3392         dst_ip                      string
3393         min_tx                      integer
3394         min_rx                      integer
3395         detect_mult                 integer
3396         options                     map of string-string pairs
3397         external_ids                map of string-string pairs
3398       Status Reporting:
3399         status                      string, one of admin_down, down, init, or
3400                                     up
3401
3402   Details:
3403     Configuration:
3404
3405       src_port: integer, in range 49,152 to 65,535
3406              udp source port used in bfd control  packets.  The  source  port
3407              MUST be in the range 49152 through 65535 (RFC5881 section 4).
3408
3409       disc: integer
3410              A unique, nonzero discriminator value generated by the transmit‐
3411              ting system, used to demultiplex multiple BFD  sessions  between
3412              the same pair of systems.
3413
3414       logical_port: string
3415              OVN logical port when BFD engine is running.
3416
3417       dst_ip: string
3418              BFD peer IP address.
3419
3420       min_tx: integer
3421              This  is  the  minimum interval, in milliseconds, that the local
3422              system would like to use when transmitting BFD Control  packets,
3423              less any jitter applied. The value zero is reserved.
3424
3425       min_rx: integer
3426              This  is the minimum interval, in milliseconds, between received
3427              BFD Control packets that this system is capable  of  supporting,
3428              less  any  jitter  applied by the sender. If this value is zero,
3429              the transmitting system does not want the remote system to  send
3430              any periodic BFD Control packets.
3431
3432       detect_mult: integer
3433              Detection  time  multiplier.  The  negotiated transmit interval,
3434              multiplied by this value, provides the Detection  Time  for  the
3435              receiving system in Asynchronous mode.
3436
3437       options: map of string-string pairs
3438              Reserved for future use.
3439
3440       external_ids: map of string-string pairs
3441              See External IDs at the beginning of this document.
3442
3443     Status Reporting:
3444
3445       status: string, one of admin_down, down, init, or up
3446              BFD port logical states. Possible values are:
3447
3448              ·      admin_down
3449
3450              ·      down
3451
3452              ·      init
3453
3454              ·      up
3455
3456
3457
3458Open vSwitch 20.12.0           DB Schema 20.15.0                     ovn-sb(5)
Impressum