[ovs-dev] [PATCH ovn v5 12/15] ovn: Constrain supported tunnel types.
Ben Pfaff
blp at nicira.com
Thu Apr 30 06:49:06 UTC 2015
From: Justin Pettit <jpettit at nicira.com>
Limit the supported tunnel types to Geneve and STT on hypervisors, and
VXLAN, Geneve, and STT on gateways. This commit adds "DESIGN.md" that
describes the reasoning.
Signed-off-by: Justin Pettit <jpettit at nicira.com>
Signed-off-by: Ben Pfaff <blp at nicira.com>
---
ovn/DESIGN.md | 45 +++++++++++++++++++++++++++++++++++++
ovn/TODO | 4 ----
ovn/automake.mk | 1 +
ovn/controller/ovn-controller.8.xml | 6 +++--
ovn/ovn-sb.ovsschema | 4 +++-
ovn/ovn-sb.xml | 5 +++--
tutorial/ovs-sandbox | 2 +-
7 files changed, 57 insertions(+), 10 deletions(-)
create mode 100644 ovn/DESIGN.md
diff --git a/ovn/DESIGN.md b/ovn/DESIGN.md
new file mode 100644
index 0000000..558d663
--- /dev/null
+++ b/ovn/DESIGN.md
@@ -0,0 +1,45 @@
+Design Decision in OVN
+======================
+
+This document describes design decisions that went into implementing
+OVN. While we believe these to be reasonable decisions, it is
+impossible to predict how OVN will be used in all environments.
+Understanding assumptions made by OVN is critical to a successful
+deployment. The end of this document contains contact information that
+can be used to let us know how we can make OVN more generally useful.
+
+Tunnel Encapsulations
+=====================
+
+For connecting hypervisors, the only supported tunnel encapsulations are
+Geneve and STT. We have limited support to these encapsulations for the
+following reasons:
+
+ - They support large amounts of metadata. In addition to specifying
+ the logical switch, we will likely want to indicate the logical
+ source port and where we are in the logical pipeline. Geneve
+ supports a 24-bit VNI field and TLV-based extensions. The header of
+ STT includes a 64-bit context id.
+
+ - They use randomized UDP or TCP source ports that allows efficient
+ distribution among multiple paths in environments that use ECMP in
+ their underlay.
+
+ - NICs are available that accelerate encapsulation and decapsulation.
+
+Due to its flexibility, the preferred encapsulation between hypervisors
+is Geneve. Some environments may want to use STT for performance
+reasons until the NICs they use support hardware offload of Geneve.
+
+For connecting to gateways, the only supported tunnel encapsulations are
+VXLAN, Geneve, and STT. While support for Geneve is becoming available
+for TOR (top-of-rack) switches, VXLAN is far more common. Currently,
+gateways have a feature set that matches the capabilities as defined by
+the VTEP schema, so fewer bits of metadata are necessary. In the
+future, gateways that do not support encapsulations with large amounts
+of metadata may continue to have a reduced feature set.
+
+Suggestions
+===========
+
+Suggestions to improve OVN are welcome at discuss at openvswitch.org.
diff --git a/ovn/TODO b/ovn/TODO
index 41f4d91..209a315 100644
--- a/ovn/TODO
+++ b/ovn/TODO
@@ -91,10 +91,6 @@
** ovn-controller parameters and configuration.
-*** Tunnel encapsulation to publish.
-
- Default: VXLAN? Geneve?
-
*** SSL configuration.
Can probably get this from Open_vSwitch database.
diff --git a/ovn/automake.mk b/ovn/automake.mk
index 4be5381..339018a 100644
--- a/ovn/automake.mk
+++ b/ovn/automake.mk
@@ -75,6 +75,7 @@ SUFFIXES += .xml
--version=$(VERSION) $< > $@.tmp && mv $@.tmp $@
EXTRA_DIST += \
+ ovn/DESIGN.md \
ovn/TODO \
ovn/CONTAINERS.OpenStack.md
diff --git a/ovn/controller/ovn-controller.8.xml b/ovn/controller/ovn-controller.8.xml
index 56900b9..c92227f 100644
--- a/ovn/controller/ovn-controller.8.xml
+++ b/ovn/controller/ovn-controller.8.xml
@@ -97,8 +97,10 @@
<p>
<code>external_ids:ovn-encap-type</code> specifies the
encapsulation type that a chassis should use to connect to
- this node. Examples include <code>geneve</code>,
- <code>vxlan</code>, and <code>stt</code>.
+ this node. Supported tunnel types for connecting
+ hypervisors are <code>geneve</code> and <code>stt</code>.
+ Gateways may use <code>geneve</code>, <code>vxlan</code>,
+ or <code>stt</code>.
</p>
</li>
<li>
diff --git a/ovn/ovn-sb.ovsschema b/ovn/ovn-sb.ovsschema
index db56211..a29e986 100644
--- a/ovn/ovn-sb.ovsschema
+++ b/ovn/ovn-sb.ovsschema
@@ -17,7 +17,9 @@
"indexes": [["name"]]},
"Encap": {
"columns": {
- "type": {"type": "string"},
+ "type": {"type": {"key": {
+ "type": "string",
+ "enum": ["set", ["geneve", "stt", "vxlan"]]}}},
"options": {"type": {"key": "string",
"value": "string",
"min": 0,
diff --git a/ovn/ovn-sb.xml b/ovn/ovn-sb.xml
index 127d4f1..7561990 100644
--- a/ovn/ovn-sb.xml
+++ b/ovn/ovn-sb.xml
@@ -166,8 +166,9 @@
<column name="type">
The encapsulation to use to transmit packets to this chassis.
- Examples include <code>geneve</code>, <code>vxlan</code>, and
- <code>stt</code>.
+ Hypervisors must use either <code>geneve</code> or
+ <code>stt</code>. Gateways may use <code>vxlan</code>,
+ <code>geneve</code>, or <code>stt</code>.
</column>
<column name="options">
diff --git a/tutorial/ovs-sandbox b/tutorial/ovs-sandbox
index 9a5a4fa..e8339f2 100755
--- a/tutorial/ovs-sandbox
+++ b/tutorial/ovs-sandbox
@@ -289,7 +289,7 @@ rungdb $gdb_vswitchd ovs-vswitchd --detach --no-chdir --pidfile -vconsole:off --
if $ovn; then
ovs-vsctl set open . external-ids:system-id=56b18105-5706-46ef-80c4-ff20979ab068
ovs-vsctl set open . external-ids:ovn-remote=unix:"$sandbox"/db.sock
- ovs-vsctl set open . external-ids:ovn-encap-type=vxlan
+ ovs-vsctl set open . external-ids:ovn-encap-type=geneve
ovs-vsctl set open . external-ids:ovn-encap-ip=127.0.0.1
ovs-vsctl add-br br-int \
-- set bridge br-int fail-mode=secure other-config:disable-in-band=true
--
2.1.3
More information about the dev
mailing list