VM 中的 Open vSwitch 网桥不通过端口发送流量
Open vSwitch bridge in VM does not send traffic over port
我正在尝试 运行 Pike 在 VM 中发布带有 Open vSwitch 的 OpenStack Kolla 作为测试/开发环境的一部分。我觉得我遗漏了一些明显的东西,但我只是弄明白了。
在 VM 中,在 docker 容器中打开 vSwitch。
VM 和主机中的版本均为:
openvswitch-switch/xenial-updates,now 2.8.1-0ubuntu0.17.10.2~cloud0 amd64 [installed]
我使用以下方法创建桥梁:
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex ens3
ip addr flush ens3
我运行 在裸机服务器上执行相同的命令,它工作得很好。在 VM 中,br-ex 的 MAC 地址与网卡的 MAC 不匹配。它们 MAC 在裸机实例上匹配。
如果我删除网桥 ovs-vsctl del-br
,那么流量会正常流经 ens3 接口。
当网桥处于活动状态时,ovs 系统被列为网卡上的一项功能。
ovs-vsctl show
<snip>
Bridge br-ex
Port "ens3"
Interface "ens3"
Port br-ex
Interface br-ex
type: internal
我能看到的主要区别是 VM 中的 ens3 使用的是 net-virtio 驱动程序。我不明白为什么这会有所作为。
Ubuntu 16.04.4 是主机和虚拟机的操作系统。使用典型的 KVM、QUEMU 和 libvirt 设置计算节点。
我仍然不知道为什么这在 VM 中的行为与在 bare-metal 中的行为不同。在网桥上设置 MAC 以匹配网络接口解决了这个问题。
ovs-vsctl add-br br-ex -- set bridge br-ex other-config:hwaddr=\"ff:ff:ff:ff:ff:ff\"'
非常感谢您的澄清,我自己也快疯了。
当您创建网桥时,它会分配一个与 ens3 拥有的地址不同的 MAC 地址,从那时起 dhclient 将无法工作,但听从您的建议,并将 ens3 MAC 分配给网桥 dhclient成功了,我能够让交通通过这座桥到达外面的世界。
sudo ovs-vsctl add-br br77 -- set bridge br77 other_config:hwaddr=ff:ff:ff:ff:ff:ff
我正在尝试 运行 Pike 在 VM 中发布带有 Open vSwitch 的 OpenStack Kolla 作为测试/开发环境的一部分。我觉得我遗漏了一些明显的东西,但我只是弄明白了。
在 VM 中,在 docker 容器中打开 vSwitch。
VM 和主机中的版本均为:
openvswitch-switch/xenial-updates,now 2.8.1-0ubuntu0.17.10.2~cloud0 amd64 [installed]
我使用以下方法创建桥梁:
ovs-vsctl add-br br-ex
ovs-vsctl add-port br-ex ens3
ip addr flush ens3
我运行 在裸机服务器上执行相同的命令,它工作得很好。在 VM 中,br-ex 的 MAC 地址与网卡的 MAC 不匹配。它们 MAC 在裸机实例上匹配。
如果我删除网桥 ovs-vsctl del-br
,那么流量会正常流经 ens3 接口。
当网桥处于活动状态时,ovs 系统被列为网卡上的一项功能。
ovs-vsctl show
<snip>
Bridge br-ex
Port "ens3"
Interface "ens3"
Port br-ex
Interface br-ex
type: internal
我能看到的主要区别是 VM 中的 ens3 使用的是 net-virtio 驱动程序。我不明白为什么这会有所作为。
Ubuntu 16.04.4 是主机和虚拟机的操作系统。使用典型的 KVM、QUEMU 和 libvirt 设置计算节点。
我仍然不知道为什么这在 VM 中的行为与在 bare-metal 中的行为不同。在网桥上设置 MAC 以匹配网络接口解决了这个问题。
ovs-vsctl add-br br-ex -- set bridge br-ex other-config:hwaddr=\"ff:ff:ff:ff:ff:ff\"'
非常感谢您的澄清,我自己也快疯了。 当您创建网桥时,它会分配一个与 ens3 拥有的地址不同的 MAC 地址,从那时起 dhclient 将无法工作,但听从您的建议,并将 ens3 MAC 分配给网桥 dhclient成功了,我能够让交通通过这座桥到达外面的世界。
sudo ovs-vsctl add-br br77 -- set bridge br77 other_config:hwaddr=ff:ff:ff:ff:ff:ff