I have been doing some experiments on ovs these days. I have 2 physical machines with openstack running on it, and GRE tunnel is configured. I add 2 internal ports on br-int (integration bridge) of each machine and assign them to different namespace(ns1, ns2, ns3, ns4) and ip from same subnet(172.16.0.200,172.16.0.201,172.16.0.202,172.16.0.203). After configuration is done, VM(in same subnet)<-> virtual ports , virtual port <->virtual port on same/different nodes are all reachable(Use ping to test). However, weird thing shows up: I have used iperf to test the bandwidth, testing result shows as following:
- Physical node<-> Physical node: 1GB/s
- VM<->VM on same machine: 10GB/s
- VM<->VM on different machines: 1GB/s
- VM<->Virtual port same machine: 10GB/s
- VM<->Virtual port different machines: 1GB/s
- Virtual port<->Virtual port same machine: 16GB/s
- Virtual port<->Virtual port different machines: 100~200kb/s (WEIRD!)
I have tried replace internal port with veth pairs, same behavior shows up. As I expect, the veth pair should behave similar to a VM because they both have separate namespace , and openstack VM uses same way (Veth pairs) to connect to br-int. But the experiment shows that the VM(node1) -> Virtual port(node2) has 1GB/s bandwidth but Virtual port(node1) -> Virtual port(node2) only has 100kb/s ? Anybody has any idea?
Thanks for your help.