该文档是 Red Hat 关于 Virtio-networking 首个系列博客的总结及 2020 年计划,先回顾了此前系列涵盖的核心内容,包括 vhost-net/virtio-net、vhost-user/virtio-pmd、vDPA 等多种 Virtio-networking 架构,以及 Virtio-networking 在虚拟机(VM)、容器(含混合云和云原生环境)中的应用,还提及 SRIOV、DPDK、VFIO 等相关技术;
接着明确 Virtio-networking 社区的目标是借助 Virtio 技术为混合虚拟 / 云原生环境及混合云中的 VM 和容器提供网络加速,长远目标是成为裸机通用标准网卡解决方案,且主张通过开放标准化方案实现,避免重复造轮子;最后列出 2020 年第二个 Virtio-networking 系列博客的计划主题,如深入解析 virtio 规范、Kubernetes vDPA 集成细节、AF_VIRTIO、Scalable IOV 以及 Virtio 作为裸机驱动的发展方向。

二、Virtio-networking 首个系列(2019)博客核心内容回顾
(一)核心架构与技术解析
-
vhost-net/virtio-net 架构
- 涵盖组件:KVM、QEMU、libvirt
- 相关技术点:简要涉及 virtio 规范(含设备 / 驱动)、vhost 协议
- 外部通信:介绍 Open vSwitch(OVS),用于实现与外部网络的通信
-
vhost-user/virtio-pmd 架构
- 核心工具与技术:DPDK(Data Plane Development Kit)、OVS-DPDK、DPDK 中的 vhost-user 库
- 设备访问支持:讲解 virtual function I/O(VFIO)、virtio-pmd 驱动、I/O memory management unit(IOMMU)和 vIOMMU,这些技术共同支持用户空间网络应用直接访问 NIC 设备
-
vDPA 与高性能网络实现
-
对比基础:先解释 SRIOV 的工作原理及其优势
-
核心技术:介绍 virtio 全硬件卸载和 virtual data path acceleration(vDPA),说明二者相较于 SR-IOV 的价值
-
构建块:探讨 mediator devices(MDEV),包括其与 VFIO 的连接,以及作为 vDPA 构建块的使用方式(如 virtio-mdev 和 vhost-mdev)
-
架构对比:通过表格形式对比不同 Virtio-networking 架构的特点
-
架构类型 | 关键特点 | 涉及核心技术 |
---|---|---|
vhost-net/virtio-net | 基础 Virtio 网络架构 | KVM、QEMU、libvirt、virtio 规范、vhost 协议、OVS |
vhost-user/virtio-pmd | 用户空间优化架构 | DPDK、OVS-DPDK、vhost-user 库、VFIO、virtio-pmd 驱动、IOMMU、vIOMMU |
virtio 全硬件卸载 | 硬件加速卸载 | virtio 技术、硬件卸载能力 |
vDPA | 数据路径加速 | SRIOV(对比基础)、MDEV(virtio-mdev、vhost-mdev)、VFIO |
(二)应用场景拓展:从虚拟机到容器
-
容器网络性能突破
- 技术路径:从虚拟机领域拓展至容器领域,探讨 vDPA 如何基于 Kubernetes 编排和 Multus CNI,为容器提供线速(wirespeed)/ 线延迟(wirelatency)的 L2 接口
- 实际演示:计划在 2019 年 11 月的 Kubecon NA 上展示相关演示
-
混合云环境下的加速容器
- 核心实现:关注在多云上运行的加速容器,展示单个带有次级加速接口(使用 Multus)的容器镜像,无需修改即可在多个云上运行
- 技术支撑:这一实现依赖多种 Virtio-networking 技术,包括 vDPA 和 virtio 全硬件卸载
- 实际演示:同样计划在 2019 年 11 月的 Kubecon NA 上展示相关演示
三、Virtio-networking 的发展方向与理念
(一)社区目标
- 短期目标:在混合虚拟 / 云原生环境以及混合云中,利用 virtio 技术为虚拟机(VM)和容器提供网络加速
- 长远愿景:virtio 技术可成为裸机的通用标准网卡解决方案
(二)核心理念
- 不重复造轮子,仅在能带来实际价值的领域进行创新
- 依托坚实基础:以负责规范的 virtio Oasis 社区,以及 virtio 所涉及的开源实现(如内核、QEMU、DPDK 等项目)为基础
- 避免厂商锁定:通过利用标准构建块进行创新,为用户带来切实价值,同时防止厂商锁定问题
四、2020 年 Virtio-networking 系列博客计划
(一)virtio 规范深入解析
- 现有不足:此前系列仅简要讨论 virtio 规范及不同的环形布局
- 计划内容:进一步探索规范,包括特性位与协商、通知机制、虚拟队列(拆分环和打包环布局)、设备初始化、传输选项,以及各类设备类型
- 目标价值:帮助读者快速掌握规范核心,无需阅读约 158 页的完整规范
(二)Kubernetes vDPA 集成细节
- 现有不足:此前仅从高层级解释 Kubernetes vDPA 集成,缺乏实际实现相关细节
- 计划内容:涵盖 vDPA 设备插件、vDPA CNI(可能是 SR-IOV 插件和 CNI 的配置附加组件)、初始化过程,以及与多个 Kubernetes 内部模型的连接
- 发展阶段:该架构和实现处于高级开发阶段,将在后续系列中详细描述
(三)AF_VIRTIO 技术探索
- 核心目标:简化 vDPA 接口的使用
- 技术路径:无需使用 DPDK 库来调用加速接口,而是采用 Linux 风格的套接字
- 优势平衡:在保持高速 / 低延迟特性的同时,大幅简化用户体验
- 当前阶段:处于初始概念化和设计阶段
(四)Scalable IOV 技术介绍
-
技术来源:由 Intel 开发的新技术
-
核心机制:为每个 PCI 事务添加名为 PASID(Process Address Space ID)的标识,实现资源与进程的细粒度关联(替代或补充 VF),并结合 IOMMU
-
关键优势:
- 突破限制:不再受 VF 数量对虚拟设备 / 连接数量的限制,支持的数量可提升一个数量级甚至更多
- 功能支持:支持 PRI(Page Request Interface),实现 CPU 与设备间的灵活协作
- 兼容扩展:vDPA 和 AF_VIRTIO 可利用该接口
- 高级特性:无需像当前那样固定内存页,支持 KSM(内核同页合并)、NUMA 平衡和透明大页;通过硬件实现 vIOMMU,支持客户机用户空间的 DPDK 应用和嵌套功能
-
后续计划:在未来博客中详细阐述该技术
(五)Virtio 作为裸机驱动的探索
- 目标愿景:打造一种单一网络驱动,可在任意硬件、任意 NIC 以及任意 OS 上使用(以存储领域的 NVMe 为示例参考)
- 当前进展:仍有较长的路要走,但目前已实现的 vDPA 驱动正为这一宏大方向奠定基础
4. 关键问题
问题 1:Virtio-networking 首个系列博客主要涵盖了哪些核心架构,各架构涉及哪些关键技术,且这些架构之间有何差异?
-
答案:首个系列博客主要涵盖 vhost-net/virtio-net、vhost-user/virtio-pmd、vDPA 及 virtio 全硬件卸载四大核心架构。
- vhost-net/virtio-net 架构:涉及 KVM、QEMU、libvirt 等组件,简要提及 virtio 规范(设备 / 驱动)、vhost 协议,还包括用于外部通信的 Open vSwitch(OVS),是基础的 Virtio 网络架构。
- vhost-user/virtio-pmd 架构:以 DPDK、OVS-DPDK、DPDK 中的 vhost-user 库为核心,搭配 VFIO、virtio-pmd 驱动、IOMMU 和 vIOMMU,支持用户空间网络应用直接访问 NIC 设备,属于用户空间优化架构。
- vDPA 架构:以 SRIOV 为对比基础,依托 MDEV(含 virtio-mdev、vhost-mdev)及 VFIO,结合 virtio 全硬件卸载技术,专注于为 VM 提供线速性能,属于数据路径加速架构。
- virtio 全硬件卸载架构:核心是借助硬件实现卸载能力,与 vDPA 一同相较于 SR-IOV 更具价值,侧重硬件加速卸载。
- 差异方面:从技术侧重看,vhost-net/virtio-net 偏向基础虚拟化组件协同,vhost-user/virtio-pmd 聚焦用户空间直接访问优化,vDPA 和 virtio 全硬件卸载则强调高性能与硬件加速;从应用场景看,前两者是基础架构,后两者更针对高性能需求场景(如 VM 线速性能)。
问题 2:Virtio-networking 社区的目标是什么,为实现该目标秉持怎样的理念,且 2020 年计划通过哪些技术方向推进目标达成?
-
答案:
-
社区目标:短期目标是在混合虚拟 / 云原生环境及混合云中,利用 virtio 技术为 VM 和容器提供网络加速;长远愿景是让 virtio 技术成为裸机的通用标准网卡解决方案。
-
秉持理念:一是不重复造轮子,仅在能带来实际价值的领域创新;二是以 virtio Oasis 社区(负责规范)和 virtio 相关开源实现(如内核、QEMU、DPDK 等)为坚实基础;三是通过利用标准构建块创新,为用户创造价值,避免厂商锁定。
-
2020 年推进方向:
- 深入解析 virtio 规范,涵盖特性位与协商、虚拟队列布局等核心内容,帮助用户快速掌握规范核心,无需阅读约 158 页完整规范。
- 详解 Kubernetes vDPA 集成细节,包括 vDPA 设备插件、vDPA CNI 等,该架构和实现处于高级开发阶段。
- 探索 AF_VIRTIO 技术,以 Linux 风格套接字替代 DPDK 库简化 vDPA 接口使用,平衡性能与用户体验,目前处于初始概念化和设计阶段。
- 介绍 Intel 的 Scalable IOV 技术,借助 PASID 突破 VF 数量限制,支持 PRI 及多种高级特性,且 vDPA 和 AF_VIRTIO 可利用该接口。
- 探索 Virtio 作为裸机驱动的方向,目标实现跨硬件、NIC、OS 的统一驱动,当前 vDPA 驱动已奠定基础。
-
问题 3:在容器应用场景中,Virtio-networking 技术如何发挥作用,有哪些实际应用案例支撑,且这些应用体现了该技术的哪些优势?
-
答案:
-
技术作用:在容器场景中,Virtio-networking 通过 vDPA 技术,结合 Kubernetes 编排和 Multus CNI,为容器提供线速(wirespeed)/ 线延迟(wirelatency)的 L2 接口,突破容器网络性能壁垒;同时,借助 Multus 实现的次级加速接口,结合 vDPA、virtio 全硬件卸载等技术,支持容器在混合云环境中灵活部署。
-
实际应用案例:在 2019 年 11 月的 Kubecon NA 上,有两个相关演示案例:一是基于 vDPA、Kubernetes 和 Multus CNI 为容器提供高性能 L2 接口的演示;二是展示单个带有次级加速接口的容器镜像,无需修改即可在多个云上运行的演示。
-
体现优势:
- 高性能:vDPA 技术为容器带来线速 / 线延迟的网络性能,满足高性能网络应用需求。
- 灵活性与兼容性:混合云场景下,容器镜像无需修改即可跨云运行,降低了部署复杂度,提升了应用在不同云环境中的兼容性和灵活性。
- 标准化与无锁定:基于 Virtio 开放标准技术,避免依赖特定厂商解决方案,防止厂商锁定,为用户提供更多选择空间。
-