首页 > 其他分享 >KVM环境SRIOV子卡同宿主机bridge网卡无法相互通信问题的解决办法

KVM环境SRIOV子卡同宿主机bridge网卡无法相互通信问题的解决办法

时间:2022-11-01 21:01:58浏览次数:114  
标签:bridge 虚拟机 宿主机 dev 网卡 mac sriov

一.SRIOV是啥。

请百度。

二.怎么配置。

建议看intel官方文档. 

https://www.intel.com/content/www/us/en/developer/articles/technical/configure-sr-iov-network-virtual-functions-in-linux-kvm.html

简单来说,大概步骤如下:

1.BIOS里开启vt-d,与sriov

2.启动项添加iommu支持

3.通过 直通、macvtap或网络池模式将sriov硬件虚拟出来的子卡添加到虚拟机。

建议使用网络池模式,方便迁移。

三、遇到的问题。

当同一台宿主机上同时存在sriov网卡,与通过bridge桥接的虚拟网卡时,它们将无法通信。

同宿主上的两块SRIOV之间,或者两块桥接bridge的网卡之间,均可以正常通信。

经过外网查找,该原因是因为sriov会硬件虚拟出来一个网桥,与linux内核的软网桥,无法互相i学习mac地址表造成的。同一个网段的两个IP不会经过路由中转,但交换机无法通过ARP广播找到MAC地址,所以无法通信。

可能理解有误,供参考。

四、解决办法。

目前找到的一个办法是将桥接到bridge的虚拟网卡的mac地址,手动绑定到物理网卡上。

bridge fdb add 52:54:00:f9:88:bf dev em1

52:54:00:f9:88:bf为网桥上虚拟网卡的mac地址。

em1为提供sriov的物理网卡。

存在的问题:

1、宿主机重启后需要重新绑定。

2、虚拟机多的话,手动维护麻烦。

 

五、智能化点的解决办法。

思路是用脚本解决,比如/etc/rc.d/rc.local。

我是用/etc/libvirt/hooks/qemu 脚本。该脚本是libvirt对虚拟机进行启动、关机等操作时会调用的脚本。

启动虚拟机->调用脚本->获取该虚拟机上桥接网卡的mac地址->获取sriov网络池的PF网卡->绑定mac地址。

关于/etc/libvirt/hooks/qemu:

这个脚本有两个参数,$1是虚拟机名称,$2是事件操作(start,stop,prepare等)。

这个脚本不能再调用libvirt操作,如virsh命令,否则会死锁。

脚本如下,供参考。

#!/bin/bash
if [[ "${2}" = "start" ]]; then
    for brnet_mac in $(cat /etc/libvirt/qemu/${1}.xml|grep -A 1 'interface.*bridge'|awk -F'\047' '/mac address/{print $2}')
    do
        if [[ $(bridge fdb show|grep "${brnet_mac} dev ${pf_dev}"|wc -l) = 0 ]];then
            for net_pool in $(ls /etc/libvirt/qemu/networks/*.xml)
            do
                pf_dev=$(awk -F'\047' '/pf.*dev/{print $2}' ${net_pool})
                if [[ "${pf_dev}" != "" ]]; then
                    bridge fdb add ${brnet_mac} dev ${pf_dev} >&2
                fi
            done
        fi
    done
fi

 

标签:bridge,虚拟机,宿主机,dev,网卡,mac,sriov
From: https://www.cnblogs.com/wzKeno/p/16849127.html

相关文章

  • Docker容器和宿主机文件互传
    #从容器里面拷文件到宿主机前:容器文件路径后:宿主机路径dockercp容器ID/容器名:容器文件路径宿主机文件路径#从宿主机拷文件到容器里面前:宿主机文件路径后:容......
  • WSL 中搭建 hadoop/hive 环境后,在 windows 宿主机下连接 hive 被拒绝
    报错只有:java.net.ConnectException:Connectionrefused这样简短的几行。其真实原因是(在windows11下),WSL有自己的(内部)IP地址。在WSL下执行ipaddr,然后在cmd下......
  • UDP发广播给所有网卡(包含虚拟网卡)
    //给所有网卡发广播QList<QNetworkInterface>networkinterfaces=QNetworkInterface::allInterfaces();foreach(QNetworkInterfaceinterface,networkinterfaces){......
  • 服务器双网卡网关配置注意
    前提:服务器两块网卡,一块内网网卡,一块外网网卡,因为只能有一个默认网关,所以外网网卡配置网关,而内网网卡不能配置网关,否则会造成过段时间外网上不了,内网网关通过配置默认路由解......
  • 装有docker的虚拟机环境ping宿主机失败
    当我用dockernetworkcreate创建了一个网络后[root@localhost~]#dockernetworkcreatekong-net5c035564f9b4649b318b61697dad164f390d8b6a9a82e1819fdd5fe1d15481d......
  • 以太网卡、IB网卡的详细介绍以及区别分析
    网卡(NIC)全称为网络接口控制器,也被称为网络适配器或网络接口卡,多用于计算机和服务器上,可通过网络连接线(双绞线、光纤线缆等),与交换机、存储设备、服务器、工作站等设备进行互......
  • ESXI安装usb网卡补丁
    安装好esxi之后,进入图形化界面按ait+f2,输入账号密码打开ssh用finalshell或者其他工具连接ssh下载补丁:https://flings.vmware.com/usb-network-native-driver-for-esxi......
  • 解决CentOS添加新网卡后找不到网卡配置文件
    使用VMwareWorkstation虚拟机安装好CentOS7虚拟机后,添加网卡后CentOS7无网卡配置文件的问题,添加第二块网卡以后,进入CentOS7系统后,看不到网卡配置文件。进入CentOS7系统......
  • Oracle RAC调整网卡MTU值
    ---原文https://cloud.tencent.com/developer/article/1658019在OracleRAC的环境中,如果我们发现OSW监控数据显示包重组失败率过高,就需要引起足够的重视,因为这很可能会引......
  • 单网卡设置多IP时Windows下的IP优先级排序问题!(只能做服务器环境):
    本策略只能接收辅助IP收到的包,而无法通过辅助IP发送包,因此只能作为服务器时使用。     局域网下同时单网卡可以设置多IP,同时访问不同网段设备,但普遍而言Windows并......