目标就是在一台物理机上运行>=2个的虚拟机,每一个虚拟机中都运行openvswitch或是直接用brctl-utils工具。
在每一个虚拟机中再起若干个ttylinux虚拟机,这样就可以组成了一个网络,由多个bridge组成。
虚拟机用qemu来创建。实现这个环境的难点就在于多个网卡的创建,并能正确的工作,经过摸索和搜索资料,终于知道了如何让NICs正常工作了。
创建两个网卡很简单:qemu ... -net nic -net tap,ifname=tap0 -net nic -net tap,ifname=tap1
然后将tap0,tap1加到bridge上去,我试过将它们分别加到不同的bridge上去,当然这些bridge都是在同一台物理主机上的,但是仍然不可以,会发现这种现象:ping一次后发现网络中不断的看到arp消息,似乎永无止境。
最后的解决办法就是加vlan:
qemu .. -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
将tap0和tap1加入到相同的bridge上都不会有问题。
用上面的办法在物理机上创建两个虚拟机, VM1,VM2,对应的tap为:
tap10,tap11
tap20,tap21
将它们加入bridge.
brctl addif br0 tap10
brctl addif br0 tap11
brctl addif br0 tap20
brctl addif br0 tap21
当然可以用脚本的方式来自动将tap加入到bridge中:-net tap,script=./up.sh
在VM1中再创建一个bridge:br01
VM1中有两个网卡 :eth0,eth1
eth0是用VM之间进行通信的,eth1是用来接入 br01的。
brctl addif br01 eth1
在 VM1中再创建两个虚拟机 :ttyvm11,ttyvm12,对应的 tap为:tap101,tap102.将tap加入bridge:
brctl addif br01 tap101
brctl addif br01 tap102
对于VM2按照 VM1的方式也创建两个虚拟机:ttyvm21,ttyvm22....
假设ttyvm11的ip为:1.1.1.2
ttyvm21的ip为:1.1.1.3
那么现在ttyvm11应该是可以ping通ttyvm21了。
利用这种方式就可以在一台机器上来搭建测试多ovs 运行的状况了。