SR-IOV(一)
SR-IOV是一项由PCI-SIG组织定义的规范,这个规范的完整名字叫《Single Root I/O Virtualization and SharingSpecification》,可以在SIG网站下载到。SR的意思是SingleRoot(单个根联合体,或者换句话讲,就是单个CPU,一个领导容易理解)。IOV即I/O virtualization,也就是I/O虚拟化。
当前,虚拟化技术是非常火热的一个技术方向,包括的内容也非常的多。
维基上对于虚拟化是这样定义的:
Incomputing, virtualization refers to the act of creating a virtual (rather thanactual) version of something, including virtual computer hardware platforms,storage devices, and computer network resources。
虚拟化技术又可分为基于硬件的虚拟化和基于软件的虚拟化。我们这里主要讨论的是基于硬件的虚拟化技术,特别是针对PCIe设备的硬件虚拟化技术。SR-IOV是这些虚拟化技术中的一种。
虚拟化技术中心需要解决的几个关键问题,一是安全,如果能够做到物理隔离是最好的。另一个是性能,软件模拟的终究会有天生的性能弱点,受制于CPU处理性能。
传统的虚拟化系统中,软件实现了一个管理硬件和虚拟机之间的中间层。通常称之为Superviso。它提供了硬件和虚拟机之间的接口,负责安全性,并确保虚拟机之间的隔离和安全。Supervisor必须通过为每个虚拟机模拟(实例化)一个虚拟的以太网控制器设备并支持VM来访问。显然,这样的系统很容易造成性能瓶颈。
而PCI SIG定义的SR-IOV,则是跟传统虚拟化完全不同的玩法。是一种不需要软件模拟就可以共享PCIe I/O设备的物理功能(PF: Physic Function)的方法。SR-IOV规范定义了可以创建PCIe设备物理端口的虚拟功能(VF:Virtual Function)。每个虚拟功能都可以被直接分配给一个虚拟机使用,每个虚拟机都可访问唯一的硬件资源。因此,SR-IOV实现了设备的单独分配和使用,且实现了虚拟机直接访问硬件,性能也得到极大的提升。
使用带有SR-IOV功能的设备,可以在硬件中实现虚拟设备。使用SR-IOV而不是更传统的网络虚拟化的好处是,在SR-IOV虚拟化中,VM通过直接内存访问(DMA)直接与硬件网络适配器通信。可以实现最佳的系统性能,提供接近“裸机”的性能。
大概了解IOV之后,我们再回头来看看SR的定义,SR就是Single Root,单根节点。PCI-SIG在定义SR-IOV之后,同样定义了另一套规范,叫MR-IOV(Multi-Root I/OVirtualization and SharingSpecification)。之所以叫MR,是为了和SR区分,因为MR-IOV支持多个根节点。
尝试简单对比一下SR-IOV和MR-IOV的逻辑框图。如下:
SR-IOV
MR-IOV
很明显,SR-IOV只支持一个Root Complex,而MR-IOV支持多个Root Complex,并且,需要特殊的支持MR-IOV的Switch才能够组网。MR-IOV的各种组合更加的复杂和多变。但归根结底,都是有SR-IOV演变的。因此,首先需要了解清楚SR-IOV。