The controller reference described legacy patch-port ownership
and only a subset of the Southbound state maintained by current
controllers.  Align the database overview with current ownership
while leaving detailed column semantics in the schema reference.

Assisted-by: GPT-5.6-Luna, OpenCode
Signed-off-by: Ales Musil <[email protected]>
---
 controller/ovn-controller.8.xml | 201 ++++++++++++++++++++++++--------
 1 file changed, 155 insertions(+), 46 deletions(-)

diff --git a/controller/ovn-controller.8.xml b/controller/ovn-controller.8.xml
index 8b3307050..3c33654ff 100644
--- a/controller/ovn-controller.8.xml
+++ b/controller/ovn-controller.8.xml
@@ -447,9 +447,24 @@
 
       <dt><code>external_ids:ovn-cleanup-on-exit</code></dt>
       <dd>
-        The boolean flag indicates if ovn-controller should perform cleanup on
-        exit. In order to keep backward compatibility the
-        <code>--restart</code> exit flag has priority over this flag.
+        <p>
+          A boolean value that controls whether <code>ovn-controller</code>
+          releases this chassis's logical port bindings and removes its
+          <ref table="Chassis" db="OVN_Southbound"/>,
+          <ref table="Chassis_Private" db="OVN_Southbound"/>,
+          <ref table="Encap" db="OVN_Southbound"/>, and
+          <ref table="IGMP_Group" db="OVN_Southbound"/> rows when it terminates
+          through the <code>exit</code> runtime command.  The default value is
+          <code>true</code>.
+        </p>
+        <p>
+          If set to <code>false</code>, cleanup is skipped as if
+          <code>exit --restart</code> had been used.
+          The <code>--restart</code> argument always skips cleanup, regardless
+          of this setting.  The chassis-specific form,
+          <code>external_ids:ovn-cleanup-on-exit-[chassis]</code>, is also
+          supported as described below.
+        </p>
       </dd>
 
       <dt><code>external_ids:ovn-evpn-vxlan-ports</code></dt>
@@ -514,7 +529,7 @@
       <dt><code>iface-types</code> from <ref table="Open_vSwitch" 
db="Open_vSwitch"/> table</dt>
       <dd>
         This value is populated in <ref key="iface-types" table="Chassis"
-        column="external_ids" db="OVN_Southbound"/> of the
+        column="other_config" db="OVN_Southbound"/> of the
         <ref table="Chassis" db="OVN_Southbound"/> table in the OVN_Southbound
         database.
       </dd>
@@ -623,37 +638,37 @@
       </dd>
 
       <dt>
-        <code>external-ids:ovn-l3gateway-port</code> in the <code>Port</code>
+        <code>external_ids:ovn-l3gateway-port</code> in the <code>Port</code>
         table
       </dt>
 
       <dd>
         <p>
-          This key identifies a patch port as one created by
-          <code>ovn-controller</code> to implement a <code>l3gateway</code>
-          logical port. Its value is the name of the logical port with type
-          set to <code>l3gateway</code>. This patch port is similar to
-          the OVN logical patch port, except that <code>l3gateway</code>
-          port can only be bound to a particular chassis.
+          Older versions of <code>ovn-controller</code> used this key on patch
+          ports.  Current versions do not create or use such ports.  During
+          normal operation after the startup delay, they remove obsolete
+          patch-port pairs discovered through a port with this key on the
+          integration bridge.
         </p>
       </dd>
 
       <dt>
-        <code>external-ids:ovn-logical-patch-port</code> in the
+        <code>external_ids:ovn-logical-patch-port</code> in the
         <code>Port</code> table
       </dt>
 
       <dd>
         <p>
-          This key identifies a patch port as one created by
-          <code>ovn-controller</code> to implement an OVN logical patch port
-          within the integration bridge.  Its value is the name of the OVN
-          logical patch port that it implements.
+          Older versions of <code>ovn-controller</code> used this key on patch
+          ports.  Current versions do not create or use such ports.  During
+          normal operation after the startup delay, they remove obsolete
+          patch-port pairs discovered through a port with this key on the
+          integration bridge.
         </p>
       </dd>
 
       <dt>
-        <code>external-ids:ovn-startup-ts</code> in the <code>Bridge</code>
+        <code>external_ids:ovn-startup-ts</code> in the <code>Bridge</code>
         table
       </dt>
 
@@ -665,7 +680,7 @@
       </dd>
 
       <dt>
-        <code>external-ids:ovn-nb-cfg</code> in the <code>Bridge</code> table
+        <code>external_ids:ovn-nb-cfg</code> in the <code>Bridge</code> table
       </dt>
 
       <dd>
@@ -677,7 +692,7 @@
       </dd>
 
       <dt>
-        <code>external-ids:ovn-nb-cfg-ts</code> in the <code>Bridge</code>
+        <code>external_ids:ovn-nb-cfg-ts</code> in the <code>Bridge</code>
         table
       </dt>
 
@@ -690,7 +705,7 @@
       </dd>
 
       <dt>
-        <code>external-ids:ovn-nb-cfg-sb-ts</code> in the <code>Bridge</code>
+        <code>external_ids:ovn-nb-cfg-sb-ts</code> in the <code>Bridge</code>
         table
       </dt>
 
@@ -749,41 +764,135 @@
     </p>
 
     <dl>
-      <dt><code>Chassis</code></dt>
-      <dd>
-        Upon startup, <code>ovn-controller</code> creates a row in this table
-        to represent its own chassis.  Upon graceful termination, e.g. with
-        <code>ovn-appctl -t ovn-controller exit</code> (but not
-        <code>SIGTERM</code>), <code>ovn-controller</code> removes its row.
+      <dt><ref table="Chassis" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> creates and maintains the row that
+        represents its chassis.  It writes the <ref table="Chassis"
+        column="name" db="OVN_Southbound"/>, <ref table="Chassis"
+        column="hostname" db="OVN_Southbound"/>, <ref table="Chassis"
+        column="encaps" db="OVN_Southbound"/>, <ref table="Chassis"
+        column="other_config" db="OVN_Southbound"/>, and
+        <ref table="Chassis" column="transport_zones"
+        db="OVN_Southbound"/> columns.  It removes the row during exit cleanup.
       </dd>
 
-      <dt><code>Encap</code></dt>
+      <dt><ref table="Chassis_Private" db="OVN_Southbound"/></dt>
       <dd>
-        Upon startup, <code>ovn-controller</code> creates a row or rows in this
-        table that represent the tunnel encapsulations by which its chassis can
-        be reached, and points its <code>Chassis</code> row to them.  Upon
-        graceful termination, <code>ovn-controller</code> removes these rows.
+        <code>ovn-controller</code> creates and maintains the private row for
+        its chassis.  It writes the <ref table="Chassis_Private" column="name"
+        db="OVN_Southbound"/>, <ref table="Chassis_Private" column="chassis"
+        db="OVN_Southbound"/>, <ref table="Chassis_Private" column="nb_cfg"
+        db="OVN_Southbound"/>, and <ref table="Chassis_Private"
+        column="nb_cfg_timestamp" db="OVN_Southbound"/> columns.  It removes
+        the row during exit cleanup.
       </dd>
 
-      <dt><code>Port_Binding</code></dt>
+      <dt><ref table="Encap" db="OVN_Southbound"/></dt>
       <dd>
-        At runtime, <code>ovn-controller</code> sets the <code>chassis</code>
-        columns of ports that are resident on its chassis to point to its
-        <code>Chassis</code> row, and, conversely, clears the
-        <code>chassis</code> column of ports that point to its
-        <code>Chassis</code> row but are no longer resident on its chassis.
-        The <code>chassis</code> column has a weak reference type, so when
-        <code>ovn-controller</code> gracefully exits and removes its
-        <code>Chassis</code> row, the database server automatically clears any
-        remaining references to that row.
+        <code>ovn-controller</code> creates and maintains rows for the tunnel
+        encapsulations by which its chassis can be reached.  It writes the
+        <ref table="Encap" column="type" db="OVN_Southbound"/>,
+        <ref table="Encap" column="ip" db="OVN_Southbound"/>,
+        <ref table="Encap" column="options" db="OVN_Southbound"/>, and
+        <ref table="Encap" column="chassis_name" db="OVN_Southbound"/>
+        columns.  These non-root rows are removed with their owning
+        <ref table="Chassis" db="OVN_Southbound"/> row during exit cleanup.
+      </dd>
+
+      <dt><ref table="Port_Binding" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> claims and releases logical ports by
+        updating the <ref table="Port_Binding" column="chassis"
+        db="OVN_Southbound"/> and <ref table="Port_Binding"
+        column="additional_chassis" db="OVN_Southbound"/> columns.  It also
+        updates the <ref table="Port_Binding" column="up"
+        db="OVN_Southbound"/>, <ref table="Port_Binding" column="encap"
+        db="OVN_Southbound"/>, <ref table="Port_Binding"
+        column="additional_encap" db="OVN_Southbound"/>,
+        <ref table="Port_Binding" column="virtual_parent"
+        db="OVN_Southbound"/>, and <ref table="Port_Binding" column="options"
+        db="OVN_Southbound"/> columns when required by the corresponding port
+        behavior.  Exit cleanup releases bindings owned by this chassis.
+      </dd>
+
+      <dt><ref table="MAC_Binding" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> creates and updates rows as instructed by
+        <code>put_arp</code> and <code>put_nd</code> logical actions, while
+        simulating GARPs on peer router datapaths, and when synchronizing EVPN
+        neighbors.  It also refreshes timestamps for active bindings.  It
+        writes the <ref table="MAC_Binding" column="logical_port"
+        db="OVN_Southbound"/>,
+        <ref table="MAC_Binding" column="ip" db="OVN_Southbound"/>,
+        <ref table="MAC_Binding" column="mac" db="OVN_Southbound"/>,
+        <ref table="MAC_Binding" column="datapath" db="OVN_Southbound"/>, and
+        <ref table="MAC_Binding" column="timestamp" db="OVN_Southbound"/>
+        columns.  These changes persist beyond the lifetime of
+        <code>ovn-controller</code>, except that EVPN-synchronized rows are
+        removed when their corresponding neighbors become stale.
+      </dd>
+
+      <dt><ref table="Controller_Event" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> inserts events generated by controller
+        actions.  It writes the <ref table="Controller_Event"
+        column="event_type" db="OVN_Southbound"/>,
+        <ref table="Controller_Event" column="event_info"
+        db="OVN_Southbound"/>, <ref table="Controller_Event" column="chassis"
+        db="OVN_Southbound"/>, and <ref table="Controller_Event"
+        column="seq_num" db="OVN_Southbound"/> columns.
+      </dd>
+
+      <dt><ref table="IGMP_Group" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> creates, updates, and removes rows for
+        multicast groups learned on its chassis.  It writes the
+        <ref table="IGMP_Group" column="address" db="OVN_Southbound"/>,
+        <ref table="IGMP_Group" column="protocol" db="OVN_Southbound"/>,
+        <ref table="IGMP_Group" column="datapath" db="OVN_Southbound"/>,
+        <ref table="IGMP_Group" column="chassis" db="OVN_Southbound"/>,
+        <ref table="IGMP_Group" column="ports" db="OVN_Southbound"/>, and
+        <ref table="IGMP_Group" column="chassis_name"
+        db="OVN_Southbound"/> columns.  It removes rows owned by this chassis
+        during exit cleanup.
+      </dd>
+
+      <dt><ref table="Service_Monitor" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> writes the <ref table="Service_Monitor"
+        column="status" db="OVN_Southbound"/> column with the result of each
+        service health check.  See <code>ovn-sb</code>(5) for the status
+        values.
+      </dd>
+
+      <dt><ref table="BFD" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> writes the <ref table="BFD" column="status"
+        db="OVN_Southbound"/> column as BFD sessions change state.  See
+        <code>ovn-sb</code>(5) for the state values.
+      </dd>
+
+      <dt><ref table="FDB" db="OVN_Southbound"/></dt>
+      <dd>
+        <code>ovn-controller</code> creates and updates forwarding database
+        entries as instructed by the <code>put_fdb</code> logical action.  It
+        also refreshes timestamps for active entries.  It writes the
+        <ref table="FDB" column="mac" db="OVN_Southbound"/>,
+        <ref table="FDB" column="dp_key" db="OVN_Southbound"/>,
+        <ref table="FDB" column="port_key" db="OVN_Southbound"/>, and
+        <ref table="FDB" column="timestamp" db="OVN_Southbound"/> columns.
       </dd>
 
-      <dt><code>MAC_Binding</code></dt>
+      <dt><ref table="Learned_Route" db="OVN_Southbound"/></dt>
       <dd>
-        At runtime, <code>ovn-controller</code> updates the
-        <code>MAC_Binding</code> table as instructed by <code>put_arp</code>
-        and <code>put_nd</code> logical actions.  These changes persist beyond
-        the lifetime of <code>ovn-controller</code>.
+        When built with Linux Netlink support (<code>HAVE_NETLINK</code>),
+        <code>ovn-controller</code> synchronizes routes learned from the host
+        routing table.  It creates and removes rows and writes the
+        <ref table="Learned_Route" column="datapath" db="OVN_Southbound"/>,
+        <ref table="Learned_Route" column="logical_port"
+        db="OVN_Southbound"/>, <ref table="Learned_Route" column="ip_prefix"
+        db="OVN_Southbound"/>, and <ref table="Learned_Route" column="nexthop"
+        db="OVN_Southbound"/> columns.
       </dd>
     </dl>
 
-- 
2.55.0

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to