8. 网络虚拟化技术
当越来越多不同性质的虚拟机运行在同一台物理机上时,它们的进出数据都不加区分地拥挤在一个 I/O 通道上显然是不合理的。上层业务对网络的需求除了基本的数据转发之外,还必须包括安全隔离和QoS(服务质量保证)。
实现这两点的关键在于要对数据流量进行清晰的区分,只有区分出不同的流量才能根据业务类型配以不同的保障等级。以物理机出口为界,我们可以将数据流过的路径划分为外部和内部两部分。
-
对于物理机外部网络,以Cisco为首的网络厂家提出了VN-Tag等解决方案。通过在全网部署 VN-Tag,不同虚拟机的流量能够被识别,从而在上联交换机上能够更好地实现QoS和安全隔离。这就是所谓的“虚拟接入”。
-
对于物理机内部,虚拟化网卡需要在不破坏现有业务机制的前提下,为每个虚拟机提供一个模拟真实的物理通道,每个通道具备独立的I/O 功能,可以重现在非虚拟化环境中的一切网络机制,并且对虚拟机透明。这就是所谓的“虚拟通道”。
虚拟化网卡的关键技术就是“虚拟接入”和“虚拟通道”。虚拟化网卡的基本原理如图2-18所示。  图2-18 虚拟化网卡的基本原理:
由图2-18可知,虚拟机产生的数据通过独立的通道进入网卡,然后被打上标签送往外部网络;同理,网卡接收到外部网络送来的带有标签的数据,然后根据标签将数据送往相应的虚拟机信道。于是,上层的业务丝毫感受不到 I/O的变化,所有的数据行为与运行在一台独立的物理机上没有区别。
-
“虚拟接入”是利用标签,在全网范围内区分出不同的虚拟机流量;
-
“虚拟通道”是在物理网卡上对上层软件系统虚拟出多个物理通道,每个通道具备独立的I/O功能。
本节将对SR-IOV—这个影响力最大的虚拟通道技术进行深入介绍。
SR-IOV(Single Root I/O Virtualization)是PCI-SIG推出的一项标准,它将单个 PCIe 设备对上层软件虚拟化为多个独立的 PCIe 设备。SR-IOV 网卡能对上层操作系统虚拟化出多个PCIe网卡,而且虚拟出的每个网卡都可以实现独立的I/O功能。独立的通道能够实现更强的安全隔离、更完善的QoS和更高的传输效率。SR-IOV目前支持在一块PCIe网卡上虚拟化出256个通道,其原理如图2-19所示。  图2-19 SR-IOV原理图:
SR-IOV 虚拟出的通道有两种:
- PF(Physical Function), PF是一个完整的PCIe设备,包含全面的管理、配置功能,Hypervisor往往通过PF来实现对网卡所有I/O资源的管理和配置
- 和 VF(Virtual Function), VF是一个简化的PCIe设备,仅仅包含了I/O功能,不能通过VF管理物理网卡。
所有的VF都是通过PF衍生而来的,一块SR-IOV网卡最多可以生成256个 VF。VF 可以理解为物理网卡硬件资源的一个切片,在虚拟化软件平台Hypervisor看来,VF与普通的 PCIe网卡一模一样,安装相应的驱动后就能直接使用。如果一台物理机上只有一个单端口的 SR-IOV 网卡,这个端口产生了6个VF,则Hypervisor就能得到6个以太网连接。
由于管理网卡的I/O资源和生成VF都需要使用PF,而且Hypervisor需要具备区分PF和VF的能力才能实现对网卡的正确配置。所以,SR-IOV的实现需要依赖硬件和软件两部分,即 SR-IOV 需要专门的网卡芯片和 BIOS 版本,也需要上层Hypervisor安装相应的驱动。
在SR-IOV的基础上,再结合Intel VT-d或AMD IOMMU技术,可以实现VM和VF的一对一映射,进而跳过Hypervisor的软件交换机使VM直接访问VF硬件资源。这样既能提高访问效率,又能提高网卡的利用率。