[ovs-dev] [PATCH v2] ovs-vtep: Clarifications on the README

Gurucharan Shetty shettyg at nicira.com
Thu Aug 14 20:05:43 UTC 2014

From: Mark Maglana <mmaglana at gmail.com>

The README was not clear on whether the steps are for attaching physical
or virtual machines to the emulated VTEP. This adds more detail to the
README so that readers will know what to do if they want to attach physical
machines or otherwise.

Signed-off-by: Mark Maglana <mmaglana at gmail.com>
Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
 AUTHORS              |    1 +
 vtep/README.ovs-vtep |  119 ++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 97 insertions(+), 23 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 8c5940d..2a63450 100644
@@ -90,6 +90,7 @@ Lorand Jakab            lojakab at cisco.com
 Luca Giraudo            lgiraudo at nicira.com
 Luigi Rizzo             rizzo at iet.unipi.it
 Mark Hamilton           mhamilton at nicira.com
+Mark Maglana            mmaglana at gmail.com
 Martin Casado           casado at nicira.com
 Maryam Tahhan           maryam.tahhan at intel.com
 Mehak Mahajan           mmahajan at nicira.com
diff --git a/vtep/README.ovs-vtep b/vtep/README.ovs-vtep
index 79e1538..60b39b7 100644
--- a/vtep/README.ovs-vtep
+++ b/vtep/README.ovs-vtep
@@ -2,15 +2,89 @@
 This document explains how to use ovs-vtep, a VTEP emulator that uses
-Open vSwitch for forwarding.  The emulator is a Python script that
-invokes calls to vtep-ctl and various OVS commands, so these commands
-will need to be available in the emulator's path.
+Open vSwitch for forwarding.
+The VTEP emulator is a Python script that invokes calls to tools like
+vtep-ctl and ovs-vsctl and is useful only when OVS daemons like ovsdb-server
+and ovs-vswitchd are running. So those components should be installed. This
+can be done by either of the following methods.
+1. Follow the instructions in the INSTALL file of the Open vSwitch repository
+(don't start any daemons yet).
+2. Follow the instructions in INSTALL.Debian file and then install the
+"openvswitch-vtep" package (if operating on a debian based machine). This
+will automatically start the daemons.
+At the end of this process, you should have the following setup:
+      +---------------------------------------------------+
+      | Host Machine                                      |
+      |                                                   |
+      |                                                   |
+      |       +---------+ +---------+                     |
+      |       |         | |         |                     |
+      |       |   VM1   | |   VM2   |                     |
+      |       |         | |         |                     |
+      |       +----o----+ +----o----+                     |
+      |            |           |                          |
+      | br0 +------o-----------o--------------------o--+  |
+      |            p0          p1                  br0    |
+      |                                                   |
+      |                                                   |
+      |                              +------+   +------+  |
+      +------------------------------| eth0 |---| eth1 |--+
+                                     +------+   +------+
+                        MANAGEMENT      |          |
+                      +-----------------o----+     |
+                                                   |
+                                   DATA/TUNNEL     |
+                                 +-----------------o---+
+1. We will use Open vSwitch to create our "physical" switch labeled br0
+2. Our "physical" switch br0 will have one internal port also named br0
+   and two "physical" ports, namely p0 and p1.
+3. The host machine may have two external interfaces. We will use eth0
+   for management traffic and eth1 for tunnel traffic (One can use
+   a single interface to achieve both). Please take note of their IP
+   addresses in the diagram. You do not have to use exactly
+   the same IP addresses. Just know that the above will be used in the
+   steps below.
+4. You can optionally connect physical machines instead of virtual
+   machines to switch br0. In that case:
+   4.1. Make sure you have two extra physical interfaces in your host
+        machine, eth2 and eth3.
+   4.2. In the rest of this doc, replace p0 with eth2 and p1 with eth3.
+5. In addition to implementing p0 and p1 as physical interfaces, you can
+   also optionally implement them as standalone TAP devices, or VM
+   interfaces for simulation.
+6. Creating and attaching the VMs is outside the scope of this document
+   and is included in the diagram for reference purposes only.
 These instructions describe how to run with a single ovsdb-server
-instance that handles both the OVS and VTEP schema.
+instance that handles both the OVS and VTEP schema. You can skip
+steps 1-3 if you installed using the debian packages as mentioned in
+step 2 of the "Requirements" section.
 1. Create the initial OVS and VTEP schemas:
@@ -28,37 +102,36 @@ instance that handles both the OVS and VTEP schema.
     ovs-vswitchd --log-file --detach --pidfile \
-4. Create a "physical" switch in OVS:
+4. Create a "physical" switch and its ports in OVS:
     ovs-vsctl add-br br0
-    ovs-vsctl add-port br0 eth0
+    ovs-vsctl add-port br0 p0
+    ovs-vsctl add-port br0 p1
 5. Configure the physical switch in the VTEP database:
     vtep-ctl add-ps br0
-    vtep-ctl add-port br0 eth0
-    vtep-ctl set Physical_Switch br0 tunnel_ips=
+    vtep-ctl set Physical_Switch br0 tunnel_ips=
-6. Start the VTEP emulator:
+6. Start the VTEP emulator. If you installed the components by reading the
+   INSTALL file, run the following from the same directory as this README:
-    ovs-vtep --log-file=/var/log/openvswitch/ovs-vtep.log \
+    ./ovs-vtep --log-file=/var/log/openvswitch/ovs-vtep.log \
       --pidfile=/var/run/openvswitch/ovs-vtep.pid \
       --detach br0
-7. Configure the VTEP database's manager to point at a NVC:
+    If the installation was done by installing the openvswitch-vtep
+    package, you can find ovs-vtep at /usr/share/openvswitch/scripts.
-    vtep-ctl set-manager tcp:
+7. Configure the VTEP database's manager to point at an NVC:
-The example provided creates a physical switch with a single physical
-port attached to it.  If more than one physical port is needed, it would
-be added to "br0" to both the OVS and VTEP databases:
+    vtep-ctl set-manager tcp:<CONTROLLER IP>:6632
-    ovs-vsctl add-port br0 eth1
-    vtep-ctl add-port br0 eth1
+   Where CONTROLLER IP is your controller's IP address that is accessible
+   via the Host Machine's eth0 interface.
-Simulating a NVC
+Simulating an NVC
 A VTEP implementation expects to be driven by a Network Virtualization
 Controller (NVC), such as NSX.  If one does not exist, it's possible to
@@ -70,13 +143,13 @@ use vtep-ctl to simulate one:
 2. Bind the logical switch to a port:
-    vtep-ctl bind-ls br0 eth0 0 ls0
+    vtep-ctl bind-ls br0 p0 0 ls0
     vtep-ctl set Logical_Switch ls0 tunnel_key=33
 3. Direct unknown destinations out a tunnel:
-    vtep-ctl add-mcast-remote ls0 unknown-dst
+    vtep-ctl add-mcast-remote ls0 unknown-dst
 4. Direct unicast destinations out a different tunnel:
-    vtep-ctl add-ucast-remote ls0 11:22:33:44:55:66
+    vtep-ctl add-ucast-remote ls0 11:22:33:44:55:66

More information about the dev mailing list