]> git.proxmox.com Git - mirror_ovs.git/commitdiff
ovn: Add logical_datapath concept to schema.
authorBen Pfaff <blp@nicira.com>
Mon, 20 Apr 2015 21:47:31 +0000 (14:47 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 20 Apr 2015 22:18:12 +0000 (15:18 -0700)
It's possible that we could implement all of the OVN concepts as a single
collection of flow tables, but it makes more sense to me if we instead
represent each logical switch and logical router separately.  This also
fits the model described in T. Koponen et al., "Network Virtualization in
Multi-tenant Data Centers," NSDI '14, the model that OVN aspires to
imitate.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
Acked-by: Justin Pettit <jpettit@nicira.com>
ovn/ovn-architecture.7.xml
ovn/ovn-sb.ovsschema
ovn/ovn-sb.xml

index 9ed162b3bd7b4f965e64155e550a6d85a2915a24..ef5e5f4de118c33ac076db165ddc6edc13b30fe8 100644 (file)
     another name may be used.
   </p>
 
+  <h2>Logical Networks</h2>
+
+  <p>
+    A <dfn>logical network</dfn> implements the same concepts as physical
+    networks, but they are insulated from the physical network with tunnels or
+    other encapsulations.  This allows logical networks to have separate IP and
+    other address spaces that overlap, without conflicting, with those used for
+    physical networks.  Logical network topologies can be arranged without
+    regard for the topologies of the physical networks on which they run.
+  </p>
+
+  <p>
+    Logical network concepts in OVN include:
+  </p>
+
+  <ul>
+    <li>
+      <dfn>Logical switches</dfn>, the logical version of Ethernet switches.
+    </li>
+
+    <li>
+      <dfn>Logical routers</dfn>, the logical version of IP routers.  Logical
+      switches and routers can be connected into sophisticated topologies.
+    </li>
+
+    <li>
+      <dfn>Logical datapaths</dfn> are the logical version of an OpenFlow
+      switch.  Logical switches and routers are both implemented as logical
+      datapaths.
+    </li>
+  </ul>
+
   <h2>Life Cycle of a VIF</h2>
 
   <p>
index 98662b8259d41de8843bbf56f8631b011fa0181a..5f2d1a4b9b205594981d384ef842010ef8039685 100644 (file)
@@ -33,6 +33,7 @@
                                               "max": "unlimited"}}}},
         "Pipeline": {
             "columns": {
+                "logical_datapath": {"type": "uuid"},
                 "table_id": {"type": {"key": {"type": "integer",
                                               "minInteger": 0,
                                               "maxInteger": 127}}},
@@ -44,6 +45,7 @@
             "isRoot": true},
         "Bindings": {
             "columns": {
+                "logical_datapath": {"type": "uuid"},
                 "logical_port": {"type": "string"},
                 "parent_port": {"type": {"key": "string", "min": 0, "max": 1}},
                 "tag": {
index e305622cace0a6965d1928f8fac4feecb3dbdf46..c623cff6795e59d644ce017e737c862242b7c947 100644 (file)
       The default action when no flow matches is to drop packets.
     </p>
 
+    <column name="logical_datapath">
+      The logical datapath to which the logical port belongs.  A logical
+      datapath implements a logical pipeline among the ports in the <ref
+      table="Bindings"/> table associated with it.  (No table represents a
+      logical datapath.)  In practice, the pipeline in a given logical datapath
+      implements either a logical switch or a logical router, and
+      <code>ovn-northd</code> reuses the UUIDs for those logical entities from
+      the <code>OVN_Northbound</code> for logical datapaths.
+    </column>
+
     <column name="table_id">
       The stage in the logical pipeline, analogous to an OpenFlow table number.
     </column>
         they are Unicode strings).  String constants are used for naming
         logical ports.  Thus, the useful values are <ref
         column="logical_port"/> names from the <ref column="Bindings"/> and
-        <ref column="Gateway"/> table.
+        <ref column="Gateway"/> table in a logical flow's <ref
+       column="logical_datapath"/>.
       </p>
 
       <p>
       <code>chassis</code> column with new information.
     </p>
 
+    <column name="logical_datapath">
+      The logical datapath to which the logical port belongs.  A logical
+      datapath implements a logical pipeline via logical flows in the <ref
+      table="Pipeline"/> table.  (No table represents a logical datapath.)
+    </column>
+
     <column name="logical_port">
       A logical port, taken from <ref table="Logical_Port" column="name"
       db="OVN_Northbound"/> in the OVN_Northbound database's