常用的 I/O 虚拟化有三种形式:
- 虚拟网卡:通过软件模拟物理网卡的功能,使得虚拟机可以与外部网络互联。
- PCI 网卡直通:将主机上的网卡作为 PCI 直通网卡透传给虚拟机使用,该网卡由这台虚拟机独占。
- SR-IOV 直通:将一个支持 SR-IOV 的物理网卡虚拟化出多个 VF (Virtual Function),作为 SR-IOV 直通网卡直接挂载给虚拟机使用,可实现多个虚拟机共享同一个物理网卡的通信能力。
部分背景信息: 超融合虚拟化下的网络 I/O 虚拟化技术。
个人的需求其实很简单,就是把全部的虚拟机都桥接到宿主机的物理网络下,这样所有的设备都在拨号路由器下属的同一子网内,省去了很多的麻烦。
实践方面遇到了一些问题:
- 虚拟网卡:性能很差,无论是 vmware workstation 那种 vmnet0 的直通,还是 hyper-v 建立外部交换机进行桥接(无论是宿主机通过网桥,还是虚拟机通过外部交换机,千兆的公网 1000mbps 下行都只能跑 100 多 mbps),性能很难让人满意
- PCIE 网卡直通,这是网络上比较常用的方法,各路 PVE ,ikuai ,黑群晖用这个方法是最多的,但是也有缺陷,PCIE x4 槽也就能出 4 口,而且口子还必须连接到上行交换机,网口和网卡很多。
- SR-IOV 直通,这个资料比较少,大致就是一个物理网卡可以虚拟化为多个 VF ,然后再将 VF 直通给虚拟机,无论多少个 VF ,只要插一根网线就可以了,所有这些 VF 共享单个物理网卡的带宽。
在我看来,SR-IOV 显然是技术上最佳的方案,比如说单个万兆口可以分为 10 个 VF ,10 个 VF 单独都是万兆,10 个 VF 共享了万兆的总带宽,线路管理和扩展上限都很方便。似乎困难在于需要主板、网卡和系统的支持。
不知道个人对相关内容的认知是否正确,为什么现在类似畅网的软路由 mini 主机,都是选择方案 2 ;个人的 all in boom 也是方案 2 ,其背后的原因是什么。
万能的水友们,有相关的网卡产品和技术方案推荐吗,还请不吝赐教。
