代码之家  ›  专栏  ›  技术社区  ›  RandyMartini

VM中打开的vSwitch网桥不通过端口发送流量

  •  0
  • RandyMartini  · 技术社区  · 8 年前

    作为测试/开发环境的一部分,我正在尝试在VM中使用Open vSwitch运行Pike版本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地址与NIC的MAC地址不匹配。它们在裸机实例上匹配。

    如果我删除桥 ovs-vsctl del-br 然后,流量正常通过ens3接口。

    当网桥处于活动状态时,ovs系统被列为nic上的一项功能。

    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设置计算节点。

    2 回复  |  直到 8 年前
        1
  •  0
  •   RandyMartini    8 年前

    我仍然不知道为什么这在VM中的行为与在裸机上的不同。将网桥上的MAC设置为与网络接口匹配解决了此问题。

    ovs-vsctl add-br br-ex -- set bridge br-ex other-config:hwaddr=\"ff:ff:ff:ff:ff:ff\"'
    
        2
  •  0
  •   Javierfh    4 年前

    非常感谢你的澄清,我自己也快疯了。 当你创建网桥时,它会分配一个不同于ens3的MAC地址,从那一刻起,dhclient就不工作了,但按照你的建议,并将ens3 MAC分配给网桥,dhclient工作了,我能够让流量通过网桥到达外部世界。

    sudo ovs-vsctl add-br br77 -- set bridge br77 other_config:hwaddr=ff:ff:ff:ff:ff:ff

    推荐文章