English日本語

功能

SR-IOV 网络

能得到什么

VF 像整块设备一样直通给虚拟机,虚拟机用自己的驱动直接和网卡打交道,速度接近线速。一块卡可以同时服务好几台虚拟机。

  • 虚拟机可以指定 VF 编号,也可以写 auto:启动时自动挑一个空闲的。调整 VF 数量时不用改虚拟机的配置。
  • VF 重建后 MAC 地址不变。
  • 在网页里只要选网络和接入方式:虚拟网卡、VF 或整个网口。网络页上能看到哪个 VF 给了哪台虚拟机、在哪个网络。
  • 网卡没法把 VF 放到网络所在的 VLAN 上时,虚拟机不启动并说明原因,不会悄悄换一种接法。

网卡

Intel X710 的 VF 用 FreeBSD 自带的驱动。常见的 Intel I350,FreeBSD 只有虚拟机里用的 VF 驱动,没有宿主这一侧。keelOS 自己写了宿主侧的驱动:约 700 行,照 Intel 数据手册写,开机时加载,不用换内核。每个口最多 7 个 VF,有邮箱通信、VF 复位、MAC 防伪造和端口 VLAN。已经在真机 I350-T2 上验证:两个口都测了收发和线速。

测了什么

SR-IOV 最容易在异常情况下出问题,所以列了 13 项:VF 不够、两台虚拟机抢同一个 VF、运行中调整 VF 数量、网卡坏了或换了、宿主那边的端口断了、宿主重启等。大多数已在真机上通过;还有两项要人在机器旁边才能测(真的拔网线,以及 VF 创建失败后的恢复)。

限制

  • 带 VF 的虚拟机在宿主重启时目前仍是关机再开,VF 按原来的 MAC 重建。让它不停机的做法(重建 VF,由虚拟机里的驱动自己恢复)代码已写好,正在测试。
  • FreeBSD 自己的 VF 驱动发现不了复位,要在虚拟机里把网卡 down/up 一次;Linux 会自己恢复。
  • 要网络一点不断,可以把整个网口直通给虚拟机,这在宿主重启时已经能不停。

阅读文章 →

← 全部功能