我想通过ovs bridge和VxLAN隧道连接位于两台不同机器上的虚拟机,假设拓扑如图所示,在主机A上的configuration是这样的(主机B上的configuration几乎相同,除了将remote_ip更改为主机A的地址“为eth0):
ovs-vsctl add-br ovs-br0 ovs-vsctl add-port ovs-br0 vtep -- set interface vtep type=vxlan options:remote_ip=172.168.1.200 options:key=5000
创buildtap0时会自动添加桥接ovs-br0,同时用qemu启动虚拟机,但是我无法从VM1 ping到VM2。
我也google了一些这样的链接: http ://networkstatic.net/configuring-vxlan-and-gre-tunnels-on-openvswitch/,这说我必须创build两个ovs桥,不幸的是,它不能告诉是否(以及如何)有必要将这两座桥连接在一起。
我很困惑,ovs-br0和eth0如何通信,内核TCP / IP堆栈是否帮助完成这项工作,或者我必须创build另一个ovs-bridge并将这两个桥连接到修补程序端口?
所以,如果我的拓扑结构或configuration不正确,请更正我的错误,并提前致谢。
我已经解决了这个问题。
我在vxlan隧道与ovs桥的configuration是正确的,我不能从VM1 ping到VM2的原因是安装ovs的错误步骤。 我忘了make modules_install将内置的.ko文件安装到内核libpath中。
一个ovs桥就足够build立ovs vxlan隧道,来自VMs的数据包将会在vtep端口被输出outter头,然后根据路由表进行路由并转发到物理端口eth0。 我们不需要明确的连接和物理端口,OS内核将帮助我们做到这一点。