SR-IOV

SR-IOV 技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性

SR-IOV 标准允许在虚拟机之间高效共享 PCIe(Peripheral Component Interconnect Express,快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的 I/O 性能。SR-IOV 规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到 I/O 设备(SR-IOV 规范由 PCI-SIG 在 http://www.pcisig.com 上进行定义和维护)。单个 I/O 资源可由许多虚拟机共享。共享的设备将提供专用的资源,并且还使用共享的通用资源。这样,每个虚拟机都可访问唯一的资源。因此,启用了 SR-IOV 并且具有适当的硬件和 OS 支持的 PCIe 设备(例如以太网端口)可以显示为多个单独的物理设备,每个都具有自己的 PCIe 配置空间。

SR-IOV主要用于虚拟化中,当然也可以用于容器。

SR-IOV - 图1

SR-IOV配置

  1. modprobe ixgbevf
  2. lspci -Dvmm|grep -B 1 -A 4 Ethernet
  3. echo 2 > /sys/bus/pci/devices/0000:82:00.0/sriov_numvfs
  4. # check ifconfig -a. You should see a number of new interfaces created, starting with “eth”, e.g. eth4

docker sriov plugin

Intel给docker写了一个SR-IOV network plugin,源码位于https://github.com/clearcontainers/sriov,同时支持runc和clearcontainer。

CNI插件

Intel维护了一个SR-IOV的CNI插件,fork自hustcat/sriov-cni,并扩展了DPDK的支持。

项目主页见https://github.com/Intel-Corp/sriov-cni

优点

  • 性能好
  • 不占用计算资源

缺点

  • VF数量有限
  • 硬件绑定,不支持容器迁移

参考文档