[ovs-discuss] question about creating Ethernet switches in VMs (on single physical machine)

Dong Jin jinanddong at gmail.com
Thu May 31 06:29:36 PDT 2012

Thanks for your quick response, Justin.

If I want to emulate 2 Ethernet switches, and each Ethernet switch
connects to an end-host, totally 4 nodes. Each node (Ethernet switch
or end host) is running inside a VM, similar to what mininet is doing.
I do not think running OVS in one VM is correct. It looks that there
should be only one OVS running within the single physical machine
regardless of how many VMs are running. but I am confused about what
to run inside for those VMs representing the Ethernet switches. Maybe
I am missing something here.

What I want to do is to extend our emulation testbed with openflow
support. The idea is somewhat similar to mininet, to emulate a medium
scale network with swtiches/routers/end hosts. In particular, I am
trying to run openvswitch within OpenVZ virtualization
(http://wiki.openvz.org/Main_Page) on Redhat 5. One setup is

VM1(eth0)            (eth0) VM2 (eth1)            (eth0)VM3(eth1)
     (eth0) VM4
   |                               |                    |
       |                 |                   |
 veth1.0   ------    veth2.0         veth2.1-----  veth3.0
veth3.1----- veth4.0

The hypervisor is called VE0 in OpenVZ. Within VE0, veth1.0 and
veth2.0 connect with vzbr using brctl; similar for veth2.1and veth3.0,
veth3.1 to veth4.0.
VM1 and VM4 are emulated end-hosts, and VM2 and VM3 are emulated
switches. The logical topology is

VM1(eth0)   ----------  (eth0) VM2 (eth1) -------  (eth0)VM3(eth1)
--------  (eth0) VM4

I am wondering how to setup the ovs-vswitchd for the above case?


On Thu, May 31, 2012 at 1:36 AM, Justin Pettit <jpettit at nicira.com> wrote:
> Based on your diagram, I'd think you'd want to run OVS inside VM2.  This would be configured as you described with those ovs-vsctl commands.
> However, this seems like a fairly non-standard setup.  Usually, the networking is managed in the hypervisor, so VM1 and VM3 would just be wired up to OVS running there.  But I may not understand what you're trying to do...
> --Justin
> On May 30, 2012, at 10:46 PM, Dong Jin wrote:
>> I am new to openvswitch and openflow. I setup the following scenario
>> on a single physical machine:
>> VM1(veth1.0)  -------  (veth2.0) VM2 (veth2.1)  --------- (veth3.0) VM3
>> VM1 and VM3 are two end-hosts. VM3 is to emulate an Ethernet switch.
>> VM2 should be controlled by ovs-vswitchd (possibly with the POX
>> controller later).
>> After going through the ovs-vswitchd.conf.db(5), here is my
>> understanding (correct me if I am wrong): The single ovs-vswitchd
>> manages a set of bridges (i.e. Ethernet switches), each bridge has a
>> set of ports (i.e. Ethernet interfaces).
>> It looks that ovs-vswitchd should run outside any VMs, and it creates
>> br0 which represents the Ethernet switch.
>> ovs-vsctl add-br br0
>> ovs-vsctl add-port br0 veth2.0
>> ovs-vsctl add-port br0 veth2.1
>> I am a little bit confused here. I original thought there should be a
>> program running  (or at least something stored) in VM2 so that VM2 can
>> emulate an Ethernet switch. It looks that the bridge representing the
>> switch is created outside VMs. So if I want to emulate 10 switches,
>> does that mean all the flow tables are stored and managed in a central
>> place outside VMs? If so, what is the usage of having VM2 here?
>> I know mininet uses openvswitch and VMs (they use linux container) are
>> created for Ethernet switch respectively. I think I probably
>> misunderstand something here. Could someone kindly advise?
>> thanks in advance.
>> kevin
>> _______________________________________________
>> discuss mailing list
>> discuss at openvswitch.org
>> http://openvswitch.org/mailman/listinfo/discuss

More information about the discuss mailing list