写点什么

四种主要网络 IO 虚拟化模型

用户头像
hanaper
关注
发布于: 2021 年 09 月 29 日
四种主要网络IO虚拟化模型

网络 I/O 不但是物理服务器最容易出现的瓶颈,也是现在虚拟化技术最大的硬伤。随着硬件虚拟化对网络 I/O 的支持,虚拟化的网络 I/O 模型也不断的进化,虚拟化的 I/O 性能也不断提升。

现在给大家分享 VMware、Redhat、Citrix、Microsoft 主流虚拟化解决方案采用的 4 种主流网络 I/O 模型,主要包括模型原理、模型优点、模型缺点、模型对虚拟化迁移的支持。


500篇关于虚拟化的经典资料,含CPU虚拟化,磁盘虚拟化,内存虚拟化,io虚拟化。


主流的 4 个网络 I/O 模型分别是:

1. Emulation

原理:

仿真(emulation)是一个完全通过软件程序来模拟硬件的技术。早期虚拟化都才采用这种方案来虚拟网络设备。常见仿真软件有 QEMU、VMware WorkStation、VirtualBox。Emulation 网络模型图如下:

不同虚拟化厂商的虚拟网卡产品都不尽相同。

VMware Emulation 类型网卡有:E1000(仿真 intel 82545M 千兆网卡)、Flexible、Vlance(仿真 AMC 79C970 PCnet32 LANCE 10M 网卡)、VMXNET(VMXNET 一共有 3 个版本,分别是 VMXNET、VMXNET2、VMXNET3;暂时没有找到 VMware 的明确资料对这三个版本进行分类。个人暂把 VMXNET 定为 emulation、VMXNET2 和 VMXNET3 定义为 para-virtualization 类型。 VMXNET3 也支持部分 SR-IOV 功能)。

Redhat 的 KVM 和 Citrix 的 XEN 这类型网卡都是采用 QEMU 实现,在 KVM 和 XEN 上面可用的 emulation 网卡有:RTL8139(仿真 RealTek Link 8139 100M 网卡)、E1000(仿真 intel 82545M 千兆网卡)。

Microsoft Hyper-V Emulation 类型网卡有:Intel/DEC 21140 100M 网卡

优点:

软件模拟不需要硬件支持,通过 CPU 计算来模拟,跟宿主机物理网卡隔离,没有平台要求。

虚拟机操作系统不需要修改,模拟的都是常见网卡(比如:Intel E1000、RTL8139 等),主流操作系统都已经自带这些驱动,因此默认情况下虚拟机不需要再安装驱动。

缺点:

CPU 资源消耗大,尤其当虚拟机数量多的时候。网卡性能一般,由于是软件模拟,只能模拟常见的、功能比较简单的网卡。

虚拟机迁移支持:

剥离了硬件要求,使用这类型可迁移性强。由于 XEN 和 KVM 都是使用 qemu 仿真,所以这类型虚拟机在 XEN 和 KVM 之间混合迁移实现难度也不大。

2. para-virtualization

原理:

Para-virtualization 又称半虚拟化,最早由 Citrix 的 Xen 提出使用。在半虚拟化模型中,物理硬件资源统一由 Hypervisor 管理,由 Hypervisor 提供资源调用接口。虚拟子机通过特定的调用接口与 Hypervisor 通信,然后完整 I/O 资源控制操 作。Para-virtualization 模型图如下:

Para-virtualization 又称半虚拟化,最开始由 XEN 提出的,XEN 本身就是从虚拟化起家的。Para- virtualization 模型下,虚拟子机的网卡驱动只能有 Hypervisor 厂商来开发,Redhat、VMware、Citrix、 Microsoft 这几大虚拟厂商都有各自的 para-virtualization 驱动。比如 Redhat 的 KVM 就叫 virtio,VMware 的有 VMXNET2、VMXNET 3,Citrix 的 XEN 叫 xen-pv,Mircrosoft 暂时没有找到(欢迎朋友们补充)。

优点:

个人认为是一种改进版的 emulation 模型,但是由于子机和 Hypervisor 之间通信,性能比 emulation 要很多。

缺点:

需要修改虚拟子机操作系统内核,添加不同 Hypervisor 厂商的网络驱动。比如 Linux(Redhat 和 Novell)就在发行版里面 添加了 Mircosoft 的 para-virtualizaiton 网络驱动,同样 Microsoft 也在自己发行版里面添加对 KVM 的 virtio 和 xen-pv 驱动支持。

虚拟机迁移支持:

虽然不同虚拟化厂商的 para-virtualization 方案都不相同,由于主流操作系统都同时提供对这些方案的支持;所以这类型虚拟子机可迁移性也比较容易实现。

3. pass-through

原理:

Hypervisor 将一个 PCI 设备(可以是网卡、USB、光驱)直接分配给指定虚拟子机单独访问。为了安全和稳定性考虑,pass-through 使用通常结合 intel VT-D(AMD 也有类似技术)来使用,通过 iommu 保证虚拟子机之间内存访问不冲突。这种技术在 VMware 上叫 VMDirectPath I/O,其他方案中没有找到相关专门名词。

优点:

性能好。单独 PCI 设备分配给虚拟子机,虚拟子机直接跟物理设备通信。

缺点:

设备只能被一个虚拟子机使用,配置也比较复杂,首先需要在 hypervisor 将指定设备通过 PCI id 方式分配给指定虚拟子机,然后虚拟子机识别到设备再安装驱动来使用。

迁移性:

迁移性方面待研究,有兴趣的朋友可以补充完善。

4. SR-IOV

背景:

pass-through 模型让虚拟子机直接使用物理设备,这样使得虚拟子机的网络性能达到最优。SR-IOV 主要用来解决 pass- through 只能被一台虚拟子机访问的问题。SR-IOV 标准由 PCI-SIG,这个标准实现需要 CPU、芯片组和 PCI 设备(主要是网卡等 I/O 资 源)协同在硬件层面实现,SR-IOV 被很多人认为是解决了虚拟化最后一公里的问题。模型图如下:

原理:

SR-IOV 需要网卡硬件支持,支持 SR-IOV 功能的网卡可以在 Hypervior 里面注册成多个网卡(每个网卡都独立的中断 ID、收发队列、QOS 管理机制)。每个设备可以通过 pass-through 方式分配给虚拟子机。

产品:

常见就是基于 intel 82599 和 82598 芯片组的 10Gb 网卡。VMware、Redhat、Citrix 和 Microsoft 都已经或者正在 Hypervisor 里面添 加这个功能的支持。

下面是一篇基于 KVM 的 SR-IOV 性能测试报告。

(404 Not Found Hat/RHEL6_SR-IOV_DB0111.pdf)

不同厂商虚拟化方案都不尽相同。

优点:

优点不用说,X86 虚拟化最新的 IO 虚拟化模型;虚拟机不但性能好,而且结合硬件功能,为虚拟机 IO 管理提出了一个新方案。

缺点:

待定

迁移性:

SR-IOV 同时需要硬件和软件两个层面支持,虚拟子机在相同网卡主机之间迁移时理论上不会有问题。具体还要看虚拟化厂商实现。

用户头像

hanaper

关注

还未添加个人签名 2018.05.07 加入

还未添加个人简介

评论

发布
暂无评论
四种主要网络IO虚拟化模型