我想用 ovs bridge 和 VxLAN 隧道连接位于两台不同机器上的虚拟机,假设拓扑如图所示拓扑显示,我在主机 A 上的配置如下(主机 B 上的配置几乎相同,只是将 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
在使用 qemu 启动虚拟机时,tap0 已创建并自动添加到网桥 ovs-br0,但我无法从 VM1 ping 到 VM2。
我也在 Google 上搜索了一些这样的链接:http://networkstatic.net/configuring-vxlan-and-gre-tunnels-on-openvswitch/,它说我必须创建两个 ovs-bridge,不幸的是,它没有告诉我是否(以及如何)有必要将这两个桥连接在一起。
我很困惑,ovs-br0 和 eth0 如何通信,内核 TCP/IP 堆栈是否有助于完成这项工作,或者我必须创建另一个 ovs-bridge 并使用补丁端口连接这两个网桥?
因此,如果我的拓扑或配置不正确,请纠正我,提前谢谢您。
答案1
我已经解决了这个问题。
我对带有 ovs 桥接器的 vxlan 隧道的配置是正确的,我无法从 VM1 ping 通 VM2 的原因是安装 ovs 的步骤错误。我忘记使用 make modules_install 将构建的 .ko 文件安装到内核库路径。
一个 ovs 网桥就足以构建 ovs vxlan 隧道,来自虚拟机的数据包将在 vtep 端口上封装外部报头,然后根据路由表进行路由并转发到物理端口 eth0。我们不需要明确连接物理端口,OS 内核会帮我们完成这项工作。