错误:无法获取“ovs-bridge”上的接口 MTU:没有此类设备

错误:无法获取“ovs-bridge”上的接口 MTU:没有此类设备

我找到的解决方案似乎都不起作用,因为我已经研究了好几天,所以我决定放弃并寻求帮助。

我使用 nmcli 创建了一个名为 ovs-bridge 的开放 vswitch。我创建了端口和接口,并插入了 eno1。一切正常,我创建了一个带有 VLAN 标记的端口,并且新接口从该 VLAN 中的 dhcp 服务器获取 IP 地址。

下一步是我需要 kvm guest 程序插入 vswitch 端口,无论是否带有 VLAN 标记。对于我的一生,我无法让它发挥作用。

ovs-vsctl 显示:

4511e03b-87b5-44a2-a16f-dac79b43cbf7
    Bridge ovs-bridge
        Port ovs-p99
            Interface eno1
                type: system
        Port ovs-p1
            tag: 50
            Interface ovs-int-p1
                type: internal
        Port ovs-p0
            Interface ovs-int-p0
                type: internal

nmcli 控制台显示:

NAME           UUID                                  TYPE           DEVICE
ovs-int-p0     c6d2243f-8a96-4647-887a-d2cdfb8ae878  ovs-interface  ovs-int-p0
virbr0         ad67349b-3e2b-45ed-b66d-b148c7d01d4d  bridge         virbr0
ovs-bridge     dbb6960e-ac13-4452-b4c2-44782bbc54ac  ovs-bridge     ovs-bridge
ovs-int-p1     1af100a3-b08d-41bd-ab1f-a5c3059807f3  ovs-interface  ovs-int-p1
ovs-int-p99    3d64f617-4c9b-47a0-b48c-44380ea7d2bb  ethernet       eno1
ovs-p0         6e3a5415-8756-4069-a788-d661da078d46  ovs-port       ovs-p0
ovs-p1-vlan50  62f4cfe7-0317-4ca8-96f9-d37ac771b308  ovs-port       ovs-p1
ovs-p99        0a9c184c-0246-4cb1-a5bf-7c7b186b40e5  ovs-port       ovs-p99
wired-dhcp     760eda5d-f092-3ee0-998d-d923ff8bf5ca  ethernet       --

nmcli 开发显示:

DEVICE      TYPE           STATE                   CONNECTION
virbr0      bridge         connected (externally)  virbr0
ovs-int-p0  ovs-interface  connected               ovs-int-p0
eno1        ethernet       connected               ovs-int-p99
ovs-bridge  ovs-bridge     connected               ovs-bridge
ovs-int-p1  ovs-interface  connected               ovs-int-p1
ovs-p0      ovs-port       connected               ovs-p0
ovs-p1      ovs-port       connected               ovs-p1-vlan50
ovs-p99     ovs-port       connected               ovs-p99
lo          loopback       unmanaged               --
virbr0-nic  tun            unmanaged               --

我定义了一个供 libvirt 使用的网络:

<network>
  <name>ovs-network</name>
  <uuid>03026f19-5615-4d23-a8f0-adf1064a796a</uuid>
  <forward mode='bridge'/>
  <bridge name='ovs-bridge'/>
  <virtualport type='openvswitch'/>
  <portgroup name='untagged' default='yes'>
  </portgroup>
  <portgroup name='vlan50'>
    <vlan>
      <tag id='50'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan60'>
    <vlan>
      <tag id='60'/>
    </vlan>
  </portgroup>
  <portgroup name='vlan-all'>
    <vlan trunk='yes'>
      <tag id='2'/>
      <tag id='3'/>
    </vlan>
  </portgroup>
</network>

当我在 virt-manager 中编辑 guest 虚拟机时,网络可见。我将访客网络定义如下:

<interface type="network">
  <mac address="52:54:00:a6:dc:48"/>
  <source network="ovs-network" portgroup="untagged"/>
  <model type="virtio"/>
  <address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</interface>

当我启动 guest 虚拟机时,它会返回以下内容: virsh start fed32srv:

error: Failed to start domain fed32srv
error: Cannot get interface MTU on 'ovs-bridge': No such device

于是我就查了很多资料:

有上百万份指南,其中大多数甚至都不起作用,所以我认为其中很多都已经过时了。

无论如何,我尝试在接口和内部接口上设置 MTU 大小,但这没有帮助。我重新启动了一切,甚至重新启动。

回到问题,如何设置 kvm guest 来插入 vswitch 端口,带或不带 vlan 标记(在 ovs 端口上)?

询问您是否需要更多信息。

谢谢您的帮助!

答案1

您的网桥缺少管理端口和接口:

4511e03b-87b5-44a2-a16f-dac79b43cbf7
    Bridge ovs-bridge
...
        Port ovs-bridge
            Interface ovs-bridge
                type: system
...

当您使用 ovs-vsctl 创建 ovs 网桥时,默认情况下两者都会存在。当你用NM创建它时,它不是......你需要显式地创建它们:

sudo nmcli con add type ovs-port conn.interface ovs-bridge master ovs-bridge con-name ovs-px
sudo nmcli con add type ovs-interface slave-type ovs-port conn.interface ovs-bridge master ovs-px con-name ovs-int-px

答案2

因此,当使用 nmcli 设置时,问题是可以重现的。使用 ovs-vsctl 命令设置网桥和接口时,一切都会按预期进行。

完成基本设置后,请执行以下操作: https://blog.scottlowe.org/2012/11/12/libvirt-ovs-integration-revisited/

一切顺利。

相关内容