Virtio-networking: 2019 总结 2020展望

该文档是 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)博客核心内容回顾

(一)核心架构与技术解析

  1. vhost-net/virtio-net 架构

    • 涵盖组件:KVM、QEMU、libvirt
    • 相关技术点:简要涉及 virtio 规范(含设备 / 驱动)、vhost 协议
    • 外部通信:介绍 Open vSwitch(OVS),用于实现与外部网络的通信
  2. 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 设备
  3. 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

(二)应用场景拓展:从虚拟机到容器

  1. 容器网络性能突破

    • 技术路径:从虚拟机领域拓展至容器领域,探讨 vDPA 如何基于 Kubernetes 编排和 Multus CNI,为容器提供线速(wirespeed)/ 线延迟(wirelatency)的 L2 接口
    • 实际演示:计划在 2019 年 11 月的 Kubecon NA 上展示相关演示
  2. 混合云环境下的加速容器

    • 核心实现:关注在多云上运行的加速容器,展示单个带有次级加速接口(使用 Multus)的容器镜像,无需修改即可在多个云上运行
    • 技术支撑:这一实现依赖多种 Virtio-networking 技术,包括 vDPA 和 virtio 全硬件卸载
    • 实际演示:同样计划在 2019 年 11 月的 Kubecon NA 上展示相关演示

三、Virtio-networking 的发展方向与理念

(一)社区目标

  • 短期目标:在混合虚拟 / 云原生环境以及混合云中,利用 virtio 技术为虚拟机(VM)和容器提供网络加速
  • 长远愿景:virtio 技术可成为裸机的通用标准网卡解决方案

(二)核心理念

  1. 不重复造轮子,仅在能带来实际价值的领域进行创新
  2. 依托坚实基础:以负责规范的 virtio Oasis 社区,以及 virtio 所涉及的开源实现(如内核、QEMU、DPDK 等项目)为基础
  3. 避免厂商锁定:通过利用标准构建块进行创新,为用户带来切实价值,同时防止厂商锁定问题

四、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 年推进方向

      1. 深入解析 virtio 规范,涵盖特性位与协商、虚拟队列布局等核心内容,帮助用户快速掌握规范核心,无需阅读约 158 页完整规范。
      2. 详解 Kubernetes vDPA 集成细节,包括 vDPA 设备插件、vDPA CNI 等,该架构和实现处于高级开发阶段。
      3. 探索 AF_VIRTIO 技术,以 Linux 风格套接字替代 DPDK 库简化 vDPA 接口使用,平衡性能与用户体验,目前处于初始概念化和设计阶段。
      4. 介绍 Intel 的 Scalable IOV 技术,借助 PASID 突破 VF 数量限制,支持 PRI 及多种高级特性,且 vDPA 和 AF_VIRTIO 可利用该接口。
      5. 探索 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 接口的演示;二是展示单个带有次级加速接口的容器镜像,无需修改即可在多个云上运行的演示。

    • 体现优势

      1. 高性能:vDPA 技术为容器带来线速 / 线延迟的网络性能,满足高性能网络应用需求。
      2. 灵活性与兼容性:混合云场景下,容器镜像无需修改即可跨云运行,降低了部署复杂度,提升了应用在不同云环境中的兼容性和灵活性。
      3. 标准化与无锁定:基于 Virtio 开放标准技术,避免依赖特定厂商解决方案,防止厂商锁定,为用户提供更多选择空间。

参考

  1. www.redhat.com/en/blog/vir...
相关推荐
AntBlack6 小时前
每周学点 AI : 在 Modal 上面搭建一下大模型应用
后端
G探险者6 小时前
常见线程池的创建方式及应用场景
后端
bobz9656 小时前
virtio-networking 4: 介绍 vDPA 1
后端
柏油7 小时前
MySQL InnoDB 架构
数据库·后端·mysql
一个热爱生活的普通人8 小时前
Golang time 库深度解析:从入门到精通
后端·go
一只叫煤球的猫8 小时前
怎么这么多StringUtils——Apache、Spring、Hutool全面对比
java·后端·性能优化
MrHuang9658 小时前
保姆级教程 | 在Ubuntu上部署Claude Code Plan Mode全过程
后端
紫穹8 小时前
008.LangChain 输出解析器
后端
苏三说技术9 小时前
Token,Session,Cookie,JWT,Oauth2傻傻分不清楚
后端