在之前的文章中介绍过,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网卡一模一样,安装相应的驱动就能够直接使用。假设一台服务器上安装了一