启用SR-IOV后虚拟机网络不可达 2021-10-02 网络 暂无评论 3748 次阅读 #[问题描述] 环境是带有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`‘。 ![sriov_topo.png](https://blog.moper.net/usr/uploads/2021/10/167457452.png) #【测试结果】 以下是测试结果的总结。 1. 两个虚拟机都使用VF,可以相互通信。 2. 两个虚拟机都使用桥接接口,可以相互通信。 3. 如果一个VM使用VF而另一个使用网桥接口(VF和网桥来自同一个PF),那么VM就不能彼此通信。 4. 对于第3项,如果VF和bridge来自不同的PF,则vm可以相互通信。 5. 两个VM都使用DHCP,在上述4种场景中,VM可以从DHCP服务器获得IP地址并访问外部网络,说明VM的网卡工作正常。 #【故障原因】 经与Intel确认,SR-IOV Virtual Functions不能发送或接收同一物理端口上的虚拟nic之间的流量,也不能在Linux软件桥接器上的模拟连接和使用SR-IOV VFs的连接之间发送或接收流量。要解决此问题可以使用支持802.1Qbg (VEPA)的外部交换机设备。 转自https://www.kclouder.cn/sriov-vm/ 标签: sr-iov 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。