The Route table will be used in the future to coordinate routing
information between northd and ovn-controller.
Northd will insert routes that should be advertised to the outside
fabric.
Ovn-controller will insert routes that have been learned from the
outside fabric.

Signed-off-by: Felix Huettner <[email protected]>
---
v2->v3:
  * refType is now strong
  * fixed typos
        

 ovn-sb.ovsschema | 29 ++++++++++++++++--
 ovn-sb.xml       | 80 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 107 insertions(+), 2 deletions(-)

diff --git a/ovn-sb.ovsschema b/ovn-sb.ovsschema
index 73abf2c8d..88763f429 100644
--- a/ovn-sb.ovsschema
+++ b/ovn-sb.ovsschema
@@ -1,7 +1,7 @@
 {
     "name": "OVN_Southbound",
-    "version": "20.37.0",
-    "cksum": "1950136776 31493",
+    "version": "20.38.0",
+    "cksum": "1392903395 32893",
     "tables": {
         "SB_Global": {
             "columns": {
@@ -617,6 +617,31 @@
                     "type": {"key": "string", "value": "string",
                              "min": 0, "max": "unlimited"}}},
             "indexes": [["chassis"]],
+            "isRoot": true},
+        "Route": {
+            "columns": {
+                "datapath":
+                    {"type": {"key": {"type": "uuid",
+                                      "refTable": "Datapath_Binding"}}},
+                "logical_port": {"type": {"key": {"type": "uuid",
+                                                  "refTable": "Port_Binding",
+                                                  "refType": "strong"}}},
+                "ip_prefix": {"type": "string"},
+                "nexthop": {"type": "string"},
+                "tracked_port": {"type": {"key": {"type": "uuid",
+                                                  "refTable": "Port_Binding",
+                                                  "refType": "strong"},
+                                          "min": 0,
+                                          "max": 1}},
+                "type": {"type": {"key": {"type": "string",
+                                          "enum": ["set", ["advertise",
+                                                           "receive"]]},
+                                    "min": 1, "max": 1}},
+                "external_ids": {
+                    "type": {"key": "string", "value": "string",
+                             "min": 0, "max": "unlimited"}}},
+            "indexes": [["datapath", "logical_port", "ip_prefix", "nexthop",
+                         "type"]],
             "isRoot": true}
     }
 }
diff --git a/ovn-sb.xml b/ovn-sb.xml
index ea4adc1c3..e435cf243 100644
--- a/ovn-sb.xml
+++ b/ovn-sb.xml
@@ -5217,4 +5217,84 @@ tcp.flags = RST;
       The set of variable values for a given chassis.
     </column>
   </table>
+
+  <table name="Route">
+    <p>
+      Each record represents a route that is exported from ovn or imported to
+      ovn using some dynamic routing logic outside of ovn.
+      It is populated on the one hand by <code>ovn-northd</code> based on the
+      addresses, routes and NAT Entries of a
+      <code>OVN_Northbound.Logical_Router_Port</code>.
+      On the other hand <code>ovn-controller</code> populates it with routes
+      learned from outside of OVN.
+    </p>
+
+    <column name="datapath">
+      The datapath belonging to the
+      <code>OVN_Northbound.Logical_Router</code> that this route is valid
+      for.
+    </column>
+
+    <column name="logical_port">
+      <p>
+        If the type is <code>advertise</code> then this is the logical_port
+        the router will send packets out.
+      </p>
+
+      <p>
+        If the type is <code>receive</code> then this is the logical_port
+        the route was learned on.
+      </p>
+    </column>
+
+    <column name="ip_prefix">
+      <p>
+        IP prefix of this route (e.g. 192.168.100.0/24).
+      </p>
+    </column>
+
+    <column name="nexthop">
+      <p>
+        If the type is <code>advertise</code> then this is empty.
+      </p>
+
+      <p>
+        If the type is <code>receive</code> then this is the nexthop ip we
+        from the outside.
+      </p>
+    </column>
+
+    <column name="tracked_port">
+      <p>
+        Only relevant for type <code>advertise</code>.
+
+        In combination with a host <code>ip_prefix</code> this tracks the port
+        OVN will forward the packets for this destination to.
+
+        An announcing chassis can use this information to check if this
+        destination is local and adjust the route priorities based on that.
+      </p>
+    </column>
+
+    <column name="type">
+      <p>
+        If the route is to be exported from OVN to the outside network or if
+        it is imported from the outside network.
+      </p>
+      <ul>
+        <li>
+          <code>advertise</code>: This route should be advertised to the
+          outside network.
+       </li>
+        <li>
+          <code>receive</code>: This route has been learned from the outside
+          network.
+        </li>
+      </ul>
+    </column>
+
+    <column name="external_ids">
+      See <em>External IDs</em> at the beginning of this document.
+    </column>
+  </table>
 </database>
-- 
2.47.0


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

Reply via email to