Skip to content

Commit

Permalink
ovn-sb: Remove the "Gateway" table from the ovn-sb schema.
Browse files Browse the repository at this point in the history
In a gateway like the VTEP L2 gateway, physical vlans belonging to
the same logical network form a "logical switch".  Each logical switch
has a dedicated tunnel key and will keep records of all MACs learned
from the owned vlans.  So user can just send packet to a "logical
switch" and the gateway will figure out the output port and vlan tag
automatically.

Therefore, it is really not necessary to keep record of the vlan map
for each gateway physical port in the OVN_Southbound database using
"gateway_ports" and to map each vlan to a unique ovn logical port.
Instead, we should simply map each logical switch to a ovn logical
port.

Thusly, this commit removes the "Gateway" table from the OVN_Southbound
database.  In the "Chassis" table, the "gateway_ports" column is replaced
by "vtep_logical_switches" column which stores all vtep logical switch
names.  The use of this column will be documented in later commit.

Signed-off-by: Alex Wang <[email protected]>
Acked-by: Russell Bryant <[email protected]>
  • Loading branch information
yew011 committed Aug 8, 2015
1 parent 3e1c86d commit 62fdd81
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 48 deletions.
16 changes: 3 additions & 13 deletions ovn/ovn-sb.ovsschema
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,9 @@
"encaps": {"type": {"key": {"type": "uuid",
"refTable": "Encap"},
"min": 1, "max": "unlimited"}},
"gateway_ports": {"type": {"key": "string",
"value": {"type": "uuid",
"refTable": "Gateway",
"refType": "strong"},
"min": 0,
"max": "unlimited"}}},
"vtep_logical_switches" : {"type": {"key": "string",
"min": 0,
"max": "unlimited"}}},
"isRoot": true,
"indexes": [["name"]]},
"Encap": {
Expand All @@ -25,13 +22,6 @@
"min": 0,
"max": "unlimited"}},
"ip": {"type": "string"}}},
"Gateway": {
"columns": {"vlan_map": {"type": {"key": {"type": "integer",
"minInteger": 0,
"maxInteger": 4095},
"value": {"type": "string"},
"min": 0,
"max": "unlimited"}}}},
"Logical_Flow": {
"columns": {
"logical_datapath": {"type": {"key": {"type": "uuid",
Expand Down
50 changes: 15 additions & 35 deletions ovn/ovn-sb.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,7 @@
</p>

<p>
The <ref table="Chassis"/> and <ref table="Gateway"/> tables comprise the
PN tables.
The <ref table="Chassis"/> table comprises the PN tables.
</p>

<h3>Logical Network (LN) data</h3>
Expand Down Expand Up @@ -163,20 +162,19 @@
</column>
</group>

<group title="Gateway Configuration">
<p>
A <dfn>gateway</dfn> is a chassis that forwards traffic between a
logical network and a physical VLAN. Gateways are typically dedicated
nodes that do not host VMs.
<group title="Gateway Configuration">
<p>
A <dfn>gateway</dfn> is a chassis that forwards traffic between the
OVN-managed part of a logical network and a physical VLAN, extending a
tunnel-based logical network into a physical network. Gateways are
typically dedicated nodes that do not host VMs.
</p>

<column name="gateway_ports">
Maps from the name of a port attached to the OVN integration bridge
(typically a physical port or an Open vSwitch patch port) to a <ref
table="Gateway"/> record that describes the details of the gatewaying
function.
<column name="vtep_logical_switches">
Stores all vtep logical switch names connected by this gateway
chassis.
</column>
</group>
</group>
</table>

<table name="Encap" title="Encapsulation Types">
Expand Down Expand Up @@ -206,23 +204,6 @@
</column>
</table>

<table name="Gateway" title="Physical Network Gateway Ports">
<p>
The <ref column="gateway_ports" table="Chassis"/> column in the <ref
table="Chassis"/> table refers to rows in this table to connect a chassis
port to a gateway function. Each row in this table describes the logical
networks to which a gateway port is attached. Each chassis, via
<code>ovn-controller</code>(8), adds and updates its own rows, if any
(since most chassis are not gateways), and keeps a copy of the remaining
rows to determine how to reach other chassis.
</p>

<column name="vlan_map">
Maps from a VLAN ID to a logical port name. Thus, each named logical
port corresponds to one VLAN on the gateway port.
</column>
</table>

<table name="Logical_Flow" title="Logical Network Flows">
<p>
Each row in this table represents one logical flow. The cloud management
Expand Down Expand Up @@ -642,11 +623,10 @@
Most of the symbols below have integer type. Only <code>inport</code>
and <code>outport</code> have string type. <code>inport</code> names a
logical port. Thus, its value is a <ref column="logical_port"/> name
from the <ref table="Port_Binding"/> or <ref table="Gateway"/> tables.
<code>outport</code> may name a logical port, as <code>inport</code>,
or a logical multicast group defined in the <ref
table="Multicast_Group"/> table. For both symbols, only names within
the flow's logical datapath may be used.
from the <ref table="Port_Binding"/> table. <code>outport</code> may
name a logical port, as <code>inport</code>, or a logical multicast
group defined in the <ref table="Multicast_Group"/> table. For both
symbols, only names within the flow's logical datapath may be used.
</p>

<ul>
Expand Down

0 comments on commit 62fdd81

Please sign in to comment.