• SR-IOV
    • SR-IOV配置
    • docker sriov plugin
    • CNI插件
    • 优点
    • 缺点

    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数量有限
    • 硬件绑定,不支持容器迁移

    参考文档

    • http://blog.scottlowe.org/2009/12/02/what-is-sr-iov/
    • https://github.com/clearcontainers/sriov
    • https://software.intel.com/en-us/articles/single-root-inputoutput-virtualization-sr-iov-with-linux-containers
    • http://jason.digitalinertia.net/exposing-docker-containers-with-sr-iov/