On Thu, Sep 27, 2012 at 04:29:12PM +0200, r po wrote:
> I test ovs since few weeks, and I notice a strange thing (maybe it's normal
> but it's seems wrong to me )
>
> this is my ovs's config
>
> Bridge PROD
> Port "virt1_eth0"
> tag: 10
> Interface "virt1_eth0"
> Port "prod1"
> tag: 10
> Interface "prod1"
> type: internal
> Port PROD
> Interface PROD
> type: internal
> Port "prod2"
> tag: 20
> Interface "prod2"
> type: internal
> Port "virt2_eth0"
> tag: 20
> Interface "virt2_eth0"
> Port "bond0"
> Interface "eth0"
> Interface "eth1"
> ovs_version: "1.4.0+build0"
>
> all work. it's fine. Now i would add a new physical interface to a specific
> vlan on bridge PROD.
>
> ovs-vsctl add-port PROD eth2 tag=300
>
> then, I lost connection for few minutes before it will work again.
This sounds like a FAQ.
Q: I created a bridge and added a couple of Ethernet ports to it,
using commands like these:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
and now my network seems to have melted: connectivity is unreliable
(even connectivity that doesn't go through Open vSwitch), all the
LEDs on my physical switches are blinking, wireshark shows
duplicated packets, and CPU usage is very high.
A: More than likely, you've looped your network. Probably, eth0 and
eth1 are connected to the same physical Ethernet switch. This
yields a scenario where OVS receives a broadcast packet on eth0 and
sends it out on eth1, then the physical switch connected to eth1
sends the packet back on eth0, and so on forever. More complicated
scenarios, involving a loop through multiple switches, are possible
too.
The solution depends on what you are trying to do:
- If you added eth0 and eth1 to get higher bandwidth or higher
reliability between OVS and your physical Ethernet switch,
use a bond. The following commands create br0 and then add
eth0 and eth1 as a bond:
ovs-vsctl add-br br0
ovs-vsctl add-bond br0 bond0 eth0 eth1
Bonds have tons of configuration options. Please read the
documentation on the Port table in ovs-vswitchd.conf.db(5)
for all the details.
- Perhaps you don't actually need eth0 and eth1 to be on the
same bridge. For example, if you simply want to be able to
connect each of them to virtual machines, then you can put
each of them on a bridge of its own:
ovs-vsctl add-br br0
ovs-vsctl add-port br0 eth0
ovs-vsctl add-br br1
ovs-vsctl add-port br1 eth1
and then connect VMs to br0 and br1. (A potential
disadvantage is that traffic cannot directly pass between br0
and br1. Instead, it will go out eth0 and come back in eth1,
or vice versa.)
- If you have a redundant or complex network topology and you
want to prevent loops, turn on spanning tree protocol (STP).
The following commands create br0, enable STP, and add eth0
and eth1 to the bridge. The order is important because you
don't want have to have a loop in your network even
transiently:
ovs-vsctl add-br br0
ovs-vsctl set bridge br0 stp_enable=true
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port br0 eth1
The Open vSwitch implementation of STP is not well tested.
Please report any bugs you observe, but if you'd rather avoid
acting as a beta tester then another option might be your
best shot.
_______________________________________________
discuss mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/discuss