在之前的文章中介绍过,VEB是一种软件交换机,通过CPU模拟出的简单二层转发功能。它的优点是简单,成本低。缺点是,软件转发流量会消耗CPU资源;另外,虚拟机往往要求特殊的端口队列模型,而单一的物理网卡无法对上层多个虚拟化OS提供不同的队列服务。
因此,一些厂商提出了硬件VEB方案,又称为Hypervisor Bypass方案,也就是说虚机绕过软件交换机直接同网卡打交道,这样做的好处是一个虚机独享一个PCIe通道。但这样的缺点是,每一个PCIe插槽比较珍贵,涉及能耗、散热、空间支出、以及数量上限等问题。所以虚拟化网卡随即产生。
1. 虚拟化网卡
虚拟化网卡具有两大重要特性:虚拟接入和虚拟通道。虚拟接入是:对于服务器外部网络,VN-TAG/VEPA可以区分出不同虚机的流量,并在整个数据中心内部署有针对性的隔离和QoS策略。虚拟通道是:对于服务器内部,虚拟化网卡要在不破坏现有业务机制的前提下,为每个虚机提供一个模拟真实的网络通道,这个模拟出来的虚拟通道不仅仅要对虚机透明,而且要尽可能重现在飞虚拟化环境中的一切网络机制。
2.SR-IOV
SR-IOV由PCI-SIG制定。SR即Single Root,IOV为I/O Virtualization,合起来就是将单个PCIe设备--如一个以太网卡--对上层软件虚拟化为多个独立的PCIe设备。
SR-IOV虚拟出的通道分为两个类型:PF和VF。
- PF(Physical Function)。PF是一个完整的PCIe设备,包含了全面的管理、配置功能。当虚拟化软件平台Hypervisor识别出一块SR-IOV网卡后,会通过PF来管理和配置网卡的所有I/O资源。
- VF(Virtual Function)。VF是一个简单的PCIe设备,仅仅包含了I/O功能,无法通过VF对物理网卡进行管理,所有的VF都是通过PF衍生而来的,一块SR-IOV网卡最多可以生成256个VF,每个VF都好像物理网卡硬件资源的一个切片,对于虚拟化软件平台Hypervisor来说,这个VF同一块普通的PCIe网卡一模一样,安装相应的驱动就能够直接使用。假设一台服务器上安装了一个单端口SR-IOV网卡,这个端口生成了4个VF,则从Hypervisor角度来看,它就得到了4个以太网连接。
SR-IOV的实现依赖硬件和软件两部分,硬件方面,SR-IOV需要专门的网卡芯片和BIOS版本;软件方面,上层Hypervisor还需要安装相应的驱动,这是因为,只有通过PF才能够直接管理网卡的I/O资源和生成VF,而Hypervisor需具备区分PF和VF的能力,从而正确地对网卡进行配置。
在SR-IOV的基础上,通过进一步利用Intel VT-d或AMD IOMMU(内存收发管理单元),直接在虚机和VF之间做一对一的映射,在这个过程中,Hypervisor的软件交换机被完全绕开(Bypass)。同传统的VM DirectPath相比,这种方式既实现了虚机对VF硬件资源的直接访问,又无需随着虚机数量增加而增加物理网卡的数量。
Palo(也叫M81KR)是CISCO提出的网卡,它能够兼容SR-IOV的所有行为,但无需Hypervisor对SR-IOV的支持。
3. 更加彻底的虚拟化--MR-IOV
传统的网卡都安装在服务器内部,而在MR-IOV中,网卡被击中部署在一个特殊的外部机箱中,所有需要进行网络存储的服务器通过特殊的线缆连接到这个机箱击中收发流量。MR-IOV的诉求是进一步提高PCIe通道的利用率,对于网络流量不大的业务来说,一个机架可以只留一根对外的万兆链路,机架内部的服务器都经过一个击中的MR-IOV装置对外通信。该技术是未来发展的趋势。
参考
《腾云》