summaryrefslogtreecommitdiff
path: root/ovn/ovn-sb.xml
diff options
context:
space:
mode:
authorRussell Bryant <russell@ovn.org>2016-03-28 19:05:40 -0400
committerRussell Bryant <russell@ovn.org>2016-07-01 16:59:27 -0400
commit184bc3cae8c8c63e6d5d1634f71ea24414ac7ea2 (patch)
tree8d3008476e5da5165e72dcf1695116c22bace0f1 /ovn/ovn-sb.xml
parent39a6542bb429d5d636c235ec552a7d6d198ccfc7 (diff)
downloadopenvswitch-184bc3cae8c8c63e6d5d1634f71ea24414ac7ea2.tar.gz
ovn: Add software l2 gateway.
This patch implements one approach to using ovn-controller to implement a software l2 gateway between logical and physical networks. A new logical port type called "l2gateway" is introduced here. It is very close to how localnet ports work, with the following exception: - A localnet port makes OVN use the physical network as the transport between hypervisors instead of tunnels. An l2gateway port still uses tunnels between all hypervisors, and packets only go to/from the specified physical network as needed via the chassis the l2gateway port is bound to. - An l2gateway port also gets bound to a chassis while a localnet port does not. This binding is not done by ovn-controller. It is left as an administrative function. In the case of OpenStack, the Neutron plugin will do this. Signed-off-by: Russell Bryant <russell@ovn.org> Acked-by: Ryan Moats <rmoats@us.ibm.com> Acked-by: Ben Pfaff <blp@ovn.org> Acked-by: Justin Pettit <jpettit@ovn.org>
Diffstat (limited to 'ovn/ovn-sb.xml')
-rw-r--r--ovn/ovn-sb.xml88
1 files changed, 82 insertions, 6 deletions
diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
index 3db846f25..4814b0a6c 100644
--- a/ovn/ovn-sb.xml
+++ b/ovn/ovn-sb.xml
@@ -1356,10 +1356,47 @@ tcp.flags = RST;
</column>
<column name="chassis">
- The physical location of the logical port. To successfully identify a
- chassis, this column must be a <ref table="Chassis"/> record. This is
- populated by
- <code>ovn-controller</code>/<code>ovn-controller-vtep</code>.
+ The meaning of this column depends on the value of the <ref column="type"/>
+ column. This is the meaning for each <ref column="type"/>
+
+ <dl>
+ <dt>(empty string)</dt>
+ <dd>
+ The physical location of the logical port. To successfully identify a
+ chassis, this column must be a <ref table="Chassis"/> record. This is
+ populated by <code>ovn-controller</code>.
+ </dd>
+
+ <dt>vtep</dt>
+ <dd>
+ The physical location of the hardware_vtep gateway. To successfully
+ identify a chassis, this column must be a <ref table="Chassis"/> record.
+ This is populated by <code>ovn-controller-vtep</code>.
+ </dd>
+
+ <dt>localnet</dt>
+ <dd>
+ Always empty. A localnet port is realized on every chassis that has
+ connectivity to the corresponding physical network.
+ </dd>
+
+ <dt>gateway</dt>
+ <dd>
+ The physical location of the L3 gateway. To successfully identify a
+ chassis, this column must be a <ref table="Chassis"/> record. This is
+ populated by <code>ovn-controller</code> based on the value of
+ the <code>options:gateway-chassis</code> column in this table.
+ </dd>
+
+ <dt>l2gateway</dt>
+ <dd>
+ The physical location of this L2 gateway. To successfully identify a
+ chassis, this column must be a <ref table="Chassis"/> record.
+ This is populated by an entity external to OVN, either manually or by
+ a CMS.
+ </dd>
+ </dl>
+
</column>
<column name="tunnel_key">
@@ -1423,6 +1460,14 @@ tcp.flags = RST;
to model direct connectivity to an existing network.
</dd>
+ <dt><code>l2gateway</code></dt>
+ <dd>
+ An L2 connection to a physical network. The chassis this
+ <ref table="Port_Binding"/> is bound to will serve as
+ an L2 gateway to the network named by
+ <ref column="options" table="Port_Binding"/>:<code>network_name</code>.
+ </dd>
+
<dt><code>vtep</code></dt>
<dd>
A port to a logical switch on a VTEP gateway chassis. In order to
@@ -1453,7 +1498,7 @@ tcp.flags = RST;
</column>
</group>
- <group title="Gateway Options">
+ <group title="L3 Gateway Options">
<p>
These options apply to logical ports with <ref column="type"/> of
<code>gateway</code>.
@@ -1505,6 +1550,36 @@ tcp.flags = RST;
</column>
</group>
+ <group title="L2 Gateway Options">
+ <p>
+ These options apply to logical ports with <ref column="type"/> of
+ <code>l2gateway</code>.
+ </p>
+
+ <column name="options" key="network_name">
+ Required. <code>ovn-controller</code> uses the configuration entry
+ <code>ovn-bridge-mappings</code> to determine how to connect to this
+ network. <code>ovn-bridge-mappings</code> is a list of network names
+ mapped to a local OVS bridge that provides access to that network. An
+ example of configuring <code>ovn-bridge-mappings</code> would be:
+
+ <pre>$ ovs-vsctl set open . external-ids:ovn-bridge-mappings=physnet1:br-eth0,physnet2:br-eth1</pre>
+
+ <p>
+ When a logical switch has a <code>l2gateway</code> port attached,
+ the chassis that the <code>l2gateway</code> port is bound to
+ must have a bridge mapping configured to reach the network
+ identified by <code>network_name</code>.
+ </p>
+ </column>
+
+ <column name="tag">
+ If set, indicates that the gateway is connected to a specific
+ VLAN on the physical network. The VLAN ID is used to match
+ incoming traffic and is also added to outgoing traffic.
+ </column>
+ </group>
+
<group title="VTEP Options">
<p>
These options apply to logical ports with <ref column="type"/> of
@@ -1562,7 +1637,8 @@ tcp.flags = RST;
<p>
This column is used for a different purpose when <ref column="type"/>
- is <code>localnet</code> (see <code>Localnet Options</code>, above).
+ is <code>localnet</code> (see <code>Localnet Options</code>, above)
+ or <code>l2gateway</code> (see <code>L2 Gateway Options</code>, above).
</p>
</column>
</group>