Intel 网卡开启 SR-IOV,如何作为虚拟机之间互联使用(不插网线)?

2022-01-17 21:49:52 +08:00
 einsdisp

Linux 主机,使用 KVM/Qemu/Libvirt 运行虚拟机。

为了减少对主机 CPU 的占用及其他一些原因,虚拟机的网卡不使用 QEMU 的虚拟网卡(例如 e1000e 、virtio ),而是使用物理网卡开启 SR-IOV 之后的 VF ( virtual function ) 。主机的网卡为 PF ( physical function ),每个虚拟机分配一个 VF 网卡( virtual function ) 。然后主机与虚拟机、虚拟机与虚拟机之间使用 PF 、VF 直接进行连接。

目前使用一个闲置的 PCIe 四口千兆网卡( I350-T4 )作为测试,不连接任何网线,不需要接入其他物理设备,仅仅作为主机虚拟机之间互联使用。如果测试成功,最终目标是购买一张支持 SR-IOV 的 PCIe 接口的万兆(甚至 40G )网卡,作为虚拟机之间高速互联使用。

测试发现一个严重问题,网口必须插入网线,主机中的 PF 网卡、虚拟机中的 VF 网卡才为连同状态,此时主机与虚拟机之间、虚拟机与虚拟机之间可以相互连通。一旦拔出网线,网卡就为断开状态,无法相互通信。

如何在不插网线的情况下使用?

7698 次点击
所在节点    程序员
27 条回复
C0reFast
2022-01-18 22:01:03 +08:00
SR-IOV 的话,主机侧也是可以加载 VF 网卡的驱动的,然后给主机侧的 VF 也配置相同的 vlan ,配置和虚拟机相同网段的 IP 就直接可以和虚拟机通信。
msg7086
2022-01-18 23:43:56 +08:00
@geekvcn 但凡把上面的回复看一下也不至于这么说……
tempdban
2022-01-19 06:22:42 +08:00
@geekvcn 你这理解一看就是搞 docker
tempdban
2022-01-19 06:35:43 +08:00
插不插线还有一个很大的区别,就是 pf 的工作状态,简单的来说 就是在不插线的情况,你要手动把 pf 的状态置为 on: ifconfig eth0 up
82599 控制器的线卡 太久我记不清了 但是大概率是能成的。
如果你用的是 x710 x722 xl710(40g) 这些控制器 100%可以搞。
你如果是搞到了 cx3... 这个卡很难用,出什么问题都不奇怪…
tempdban
2022-01-19 06:38:38 +08:00
我现在就是拿 cx5 的 vf 做虚拟机连通。
另外 ip 命令,内核,网卡固件版本一定要新,对你配置 vf 有很大帮助。
tempdban
2022-01-19 06:40:30 +08:00
@yanqiyu 用 vf 反倒是比 virtio 省了一次拷贝
levinit
2022-01-19 08:29:03 +08:00
你说的这种需求是不同物理机上的虚拟机网络通信才有意义吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828856

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX