[ovs-dev] [PATCH] ovn-architecture: Start describing how to connect to physical networks.
Ben Pfaff
blp at nicira.com
Thu Oct 22 16:28:51 UTC 2015
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
ovn/ovn-architecture.7.xml | 83 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/ovn/ovn-architecture.7.xml b/ovn/ovn-architecture.7.xml
index 318555b..8ae148e 100644
--- a/ovn/ovn-architecture.7.xml
+++ b/ovn/ovn-architecture.7.xml
@@ -309,6 +309,89 @@
</li>
</ul>
+ <h2>Connecting Logical Networks to Physical Networks</h2>
+
+ <p>
+ Logical networks can be useful by themselves for use within a cloud, but
+ ordinarily at least some part of a cloud deployment will need to connect to
+ external physical networks. OVN supports multiple ways to connect to
+ physical networks. These methods can be classified along two axes.
+ </p>
+
+ <p>
+ The first axis is the <dfn>connection point</dfn>. Physical networks can
+ be <em>connected at hypervisors</em>. To access a physical network in this
+ fashion, a VM must run on a hypervisor that is directly connected to that
+ network, that is, its hypervisor must be on the physical network's subnet.
+ Alternatively, physical networks can be <em>centrally connected</em>, with
+ packets passing through a tunnel to a central point. This model does not
+ require hypervisors to have a direct connection to the physical network,
+ but it does require setting up and maintaining a central gateway.
+ </p>
+
+ <p>
+ The second axis is the <dfn>degree of NAT</dfn> (network address
+ translation). The lowest level of NAT is <em>no NAT</em>, in which VMs are
+ directly assigned physical network IP addresses. The next level is <em>IP
+ address translation</em>, which translates IP addresses. This allows
+ physical and logical IP addresses to be separately allocated. Finally,
+ <em>(full) NAT</em> translates IP addresses and transport port numbers.
+ Only full NAT allows multiple VMs to share a public IP address.
+ </p>
+
+ <p>
+ These axes are independent. Each pairing yields a different design:
+ </p>
+
+ <dl>
+ <dt>No NAT, connected at hypervisors</dt>
+ <dd>
+ <p>
+ This design extends external IP addresses directly into VMs. A CMS can
+ implement this design with OVN using <code>localnet</code> ports. VLAN
+ tagging is optional.
+ </p>
+
+ <p>
+ OVN doesn't add any value to this kind of physical network
+ connectivity, because plugging the VM's interface directly into a
+ physical network bridge works just as well. OVN provides this option
+ for use by CMSes (e.g. OpenStack Neutron) that require all of the
+ network connectivity on a hypervisor to go through a single networking
+ provider (i.e. OVN).
+ </p>
+ </dd>
+
+ <dt>IP address translation, connected at hypervisors</dt>
+ <dd>
+ <p>
+ This design uses separate ranges of external and internal IP addresses
+ and translates addresses in IP and ARP packets that cross in either
+ direction.
+ </p>
+
+ <p>
+ OVN will implement direct support for this case. For now, one can
+ implement it with an <code>localnet</code> port that patches to an
+ isolated bridge. Configure the desired public IP address on the
+ bridge, plus the private IP address's gateway IP. Then use
+ <code>iptables</code> rules to translate addresses. For example, with
+ private IP <code>$PRV</code> and public IP <code>$PUB</code> that is
+ routed to physical network device <code>$ETH</code>:
+ </p>
+
+ <pre>
+iptables -t nat -A POSTROUTING -s $PRV -o $ETH -j SNAT --to-source $PUB
+iptables -t nat -A PREROUTING -d $PUB -i $ETH -j DNAT --to-destination $PRV
+ </pre>
+ </dd>
+
+ <dt>Other pairings</dt>
+ <dd>
+ OVN will implement support for other pairings as well. Details TBD.
+ </dd>
+ </dl>
+
<h2>Life Cycle of a VIF</h2>
<p>
--
2.1.3
More information about the dev
mailing list