嘘~ 正在从服务器偷取页面 . . .

启用SR-IOV后虚拟机网络不可达


[问题描述]

环境是带有openvswitch的KVM, VMs和openvswitch部署在同一台服务器上,使用的INTEL网卡。一个vm使用VF,另一个vm使用virtio, VF和网桥都是由同一个PF创建的,VMs网络不可访问,不能相互通信。下面是简要的配置方法和拓扑。

1,启用虚拟化,在x710的端口1上创建VF,并将VF附加到VM1。

2,使用“systemctl”命令检查OvS正在运行,并使用命令“OvS -vsctl add-br br0”创建OvS桥接器。

3,使用以下命令将x710的端口1添加到桥上:“ov -vsctl Add -port br0 port_name”

4,使用命令’ vs-vsctl show ‘或’ vs-vsctl列表-ports br0 ‘检查配置。

5,使用虚拟机管理器GUI在虚拟机的“虚拟硬件细节”窗口中将桥接接口作为虚拟网络接口附加到VM2。从“网络源”下拉菜单中选择OvS网桥,并指定“源模式”网桥。‘设备模型’应该是virtio。”

6,应用配置并启动这两个虚拟机。

7,在每个VM中,将已连接的接口(VF或网桥)设置为“up”。向每个接口添加一个ip。如VM1: ‘ ip link set dev ens9 up ‘,后面跟着’ ip地址add 10.10.10.1/24 ‘。例如VM2: ‘ ip link set dev eth0 up ‘后面跟着’ ip地址add 10.10.10.2/24 ‘。

[测试结果]

以下是测试结果的总结。

  1. 两个虚拟机都使用VF,可以相互通信。

  2. 两个虚拟机都使用桥接接口,可以相互通信。

3.如果一个VM使用VF而另一个使用网桥接口(VF和网桥来自同一个PF),那么VM就不能彼此通信。

  1. 对于第3项,如果VF和bridge来自不同的PF,则vm可以相互通信。

  2. 两个VM都使用DHCP,在上述4种场景中,VM可以从DHCP服务器获得IP地址并访问外部网络,说明VM的网卡工作正常。

[故障原因]

经与Intel确认,SR-IOV Virtual Functions不能发送或接收同一物理端口上的虚拟nic之间的流量,也不能在Linux软件桥接器上的模拟连接和使用SR-IOV VFs的连接之间发送或接收流量。要解决此问题可以使用支持802.1Qbg (VEPA)的外部交换机设备。


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录