Skip to content

Commit

Permalink
ovs-vtep: Clarifications on the README.
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Gurucharan Shetty <[email protected]>
  • Loading branch information
relaxdiego authored and shettyg committed Aug 18, 2014
1 parent 8b7ea2d commit bd68040
Show file tree
Hide file tree
Showing 2 changed files with 97 additions and 23 deletions.
1 change: 1 addition & 0 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,7 @@ Lorand Jakab [email protected]
Luca Giraudo [email protected]
Luigi Rizzo [email protected]
Mark Hamilton [email protected]
Mark Maglana [email protected]
Martin Casado [email protected]
Maryam Tahhan [email protected]
Mehak Mahajan [email protected]
Expand Down
119 changes: 96 additions & 23 deletions vtep/README.ovs-vtep
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Requirements
============

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.

Design
======

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 |--+
+------+ +------+
10.1.1.1 10.2.2.1
MANAGEMENT | |
+-----------------o----+ |
|
DATA/TUNNEL |
+-----------------o---+

Notes:

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.

Startup
=======

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:

Expand All @@ -28,37 +102,36 @@ instance that handles both the OVS and VTEP schema.
ovs-vswitchd --log-file --detach --pidfile \
unix:/var/run/openvswitch/db.sock

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=192.168.0.3
vtep-ctl set Physical_Switch br0 tunnel_ips=10.2.2.1

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:192.168.0.99:6632
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
Expand All @@ -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 192.168.1.34
vtep-ctl add-mcast-remote ls0 unknown-dst 10.2.2.2

4. Direct unicast destinations out a different tunnel:

vtep-ctl add-ucast-remote ls0 11:22:33:44:55:66 192.168.1.33
vtep-ctl add-ucast-remote ls0 11:22:33:44:55:66 10.2.2.3

0 comments on commit bd68040

Please sign in to comment.