文档目录

概述

SR-IOV(Single Root I/O Virtualization)是一种基于硬件的虚拟化解决方案,它允许多个云主机/VPC路由器/负载均衡实例高效共享PCIe设备,且同时获得与物理设备性能媲美的I/O性能,能有效提高性能和可伸缩性。

ZStack Cloud支持基于SR-IOV规范,将一张物理网卡虚拟化切割成多张VF类型网卡,直接分配给云主机/VPC路由器/负载均衡实例使用。实现弹性灵活使用资源的同时,提高资源利用率、节约成本。相比传统的vNIC虚拟化网卡,VF网卡具有以下功能优势:
  • VF网卡可直接分配给云主机/VPC路由器/负载均衡实例,越过虚拟化层,缩短数据传输路径,使云主机/VPC路由器/负载均衡实例获得接近物理设备的I/O性能。
  • 明显减少对物理机CPU资源的消耗,即使物理机CPU压力较大,也能有效减少网络丢包,提高传输效率。
图 1所示:
图 1. SR-IOV工作原理


注意事项

ZStack Cloud云平台使用SR-IOV功能需要注意以下情况:
  • 使用SR-IOV功能前须严格确保准备工作全部完成,否则此功能无法正常使用。详情请参考准备工作章节。
  • 若物理网卡已加入聚合网口,当聚合网口中的网卡数量大于1,将不能SR-IOV切割此物理网卡。
  • 若聚合网口中仅有1张物理网卡,且此物理网卡已被SR-IOV切割,则该聚合网口中无法再添加新物理网卡。
  • 若物理网卡已被SR-IOV切割,则该物理网卡不能再被添加进聚合网口。
  • 支持为云主机、VPC路由器、负载均衡实例加载VF网卡
    Note:
    • 云主机:支持为加载到云主机的三层网络开启SR-IOV,透传VF网卡
    • VPC路由器:支持为VPC路由器公有网络(需和管理网分离部署)、VPC网络开启SR-IOV,透传VF网卡
    • 负载均衡实例:支持为负载均衡实例前后端网卡开启SR-IOV,透传VF网卡
  • 使用启用SR-IOV功能的公有/扁平/VPC网络创建的云主机,其VF网卡不支持使用安全组网络服务。
  • 若VF网卡已分配给云主机/VPC路由器/负载均衡使用,请勿卸载物理网卡驱动,否则可能导致VF网卡强行回收。
  • VF网卡不支持QoS功能。
  • 支持云主机/VPC路由器/负载均衡实例带VF类型网卡热迁移。
    • 加载VF网卡的云主机需安装性能优化工具 (QGA)且性能优化工具处于运行状态,才能保障热迁移正常进行。
    • VPC路由器/负载均衡实例自带QGA工具,无需额外安装,即可实现带VF网卡热迁移。
    • 根据实际物理网络环境,带VF网卡迁移时可能发生短暂网络中断,业务敏感场景请谨慎操作。
    • 若云主机/VPC路由器/负载均衡实例内部驱动版本过低,可能导致VF网卡热迁移失败,请提前检查并按需更新驱动版本。
    • 公有网络、扁平网络、VPC网络下的云主机在带VF网卡热迁移后,其加载的虚拟IP、弹性IP网络服务可正常工作。
  • 停用云主机/VPC路由器/负载均衡实例将自动释放VF网卡;启用云主机时重新获取,若无可用VF网卡,将导致启用云主机/VPC路由器/负载均衡实例失败。

准备工作

ZStack Cloud云平台使用SR-IOV功能需要准备以下工作:
  • 确保物理网卡支持SR-IOV功能,并安装到物理机主板。例如:支持SR-IOV功能的Intel网卡列表Intel官方文档
  • 确保该物理机BIOS已开启Intel VT-d / AMD IOMMU配置和SR-IOV配置。
  • 确保物理机已安装物理网卡(PF网卡)驱动;确保已获取到VF网卡对应的驱动。
    Note: 相关网卡驱动以及安装方法请联系网卡提供厂商获取帮助。
    • PF网卡驱动需安装到相关物理机,保证物理网卡可被物理机识别,且能正常进行SR-IOV切割。
    • VF网卡驱动需安装到相关云主机/VPC路由器/负载均衡实例,保证VF网卡被识别且正常工作。
  • 确保物理机CPU支持Interrupt Remapping。在物理机执行以下脚本,查看CPU是否支持Interrupt Remapping:
    [root@localhost ~]# cat interrupt_remapping_check.sh
    #!/bin/sh
    if [ $(dmesg | grep ecap | wc -l) -eq 0 ]; then
      echo "No interrupt remapping support found"
      exit 1
    fi
    
    for i in $(dmesg | grep ecap | awk '{print $NF}'); do
      if [ $(( (0x$i & 0xf) >> 3 )) -ne 1 ]; then
        echo "Interrupt remapping not supported"
        exit 1
      fi
    done
    若物理机CPU不支持Interrupt Remapping,须执行以下命令进行配置:
    [root@localhost ~]# echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

典型使用流程

背景信息

SR-IOV网卡虚拟化的典型使用流程如下:
  1. 物理机启用IOMMU设置。
  2. SR-IOV切割物理网卡。
  3. 部署启用SR-IOV的网络环境。
  4. 创建云主机并加载VF网卡。
  5. 为云主机安装VF网卡驱动。

使用SR-IOV网卡前,请务必确保所有准备工作已完成且准确无误。以下详细介绍SR-IOV功能的操作步骤:

操作步骤

  1. 物理机启用IOMMU设置。
    确保物理机BIOS已开启Intel VT-d / AMD IOMMU配置和SR-IOV配置的前提下,在ZStack Cloud云平台开启物理机IOMMU设置。
    • 新添加物理机:在资源中心 > 硬件设施 > 计算设施 > 物理机界面添加物理机过程,选择扫描物理机IOMMU设置配置,添加物理机的同时开启IOMMU设置。
      图 2所示:
      图 2. 新添加物理机并启用IOMMU设置


    • 已添加物理机:在物理机详情页,启用IOMMU启用状态配置,针对已添加物理机开启IOMMU设置,重启物理机生效。
      图 3所示:
      图 3. 已添加物理机启用IOMMU设置


    Note: 物理机开启IOMMU设置后,还需在物理机详情页确保IOMMU就绪状态为可用,否则也无法正常使用SR-IOV功能。若IOMMU启用状态为启用,但IOMMU就绪状态不可用,可能存在以下原因:
    • 开启IOMMU设置但未重启物理机,手动重启物理机即可。
    • 物理机配置错误,请进入物理机BIOS并开启Intel VT-d / AMD IOMMU配置。
  2. SR-IOV切割物理网卡。

    确保准备工作完成以及IOMMU状态正常时,即可在物理机详情页点击关联资源 > 物理网卡,选中某个可虚拟化的物理网卡,执行SR-IOV切割操作,将物理网卡切割成指定数量的VF网卡。

    图 4所示:
    图 4. SR-IOV切割


    物理网卡SR-IOV切割后,可在物理机下详情页查看使用情况。

    图 5所示:
    图 5. VF网卡使用情况


    Note: 点击SR-IOV还原按钮,支持将VF网卡还原成物理网卡。此时,当前物理网卡切割成的VF网卡正在被云主机使用,SR-IOV还原将同时从云主机卸载相关网卡,请谨慎操作。
  3. 部署SR-IOV的网络环境。

    确保二层网络使用的物理网卡支持SR-IOV且已被切割出可用的VF网卡资源,该物理网卡上的所有三层网络都可以直接使用SR-IOV功能。

  4. 创建云主机并加载VF网卡。

    SR-IOV的网络环境部署完成后,即可使用此三层网络创建云主机并加载VF网卡。

    图 6所示,创建云主机选择已SR-IOV切割的网卡上的三层网络,并选择启用SR-IOV按钮。
    图 6. 创建云主机


    Note: 创建加载VF网卡的云主机,需要注意以下情况:
    • 同一云主机支持加载多个VF网卡,且VF网卡和vNIC网卡支持互联互通。
    • 若SR-IOV按钮置灰,可能因为该三层网络所在的物理网卡未进行SR-IOV切割。
    • 若VF网卡数量不足,选择启用SR-IOV按钮,将导致创建云主机失败。
    • 已有云主机可通过加载网卡操作追加VF网卡,在云主机详情页的配置信息页面的网卡列加载网卡即可。
    • 停止状态的云主机支持将VF网卡切换为vNIC类型,在云主机详情页的配置信息页面的网卡列设置网卡类型即可。
    图 7所示,云主机详情页可查看网卡类型。
    图 7. 云主机详情页


  5. 为云主机安装VF网卡驱动。

    相关云主机须安装VF网卡驱动,才能保证VF网卡被云主机识别且正常工作。VF网卡驱动获取以及安装方法请联系网卡提供厂商获取帮助。

典型应用场景

ZStack Cloud云平台凭借简单、健壮、弹性、智能的优势,帮助用户快速上云。但受传统虚拟化系统技术限制,Hypervisor或VMM软件层面消耗了大量资源和时间,导致PCIe设备的性能优势无法彻底发挥。

为了消除这一软件瓶颈,ZStack Cloud支持SR-IOV功能,多个云主机可以高效共享物理网卡设备,获得与物理设备性能媲美的I/O性能,同时又能减少对物理机CPU资源的消耗。可适用于网络NFV、云游戏、视频流(UDP)等典型应用场景。

网络功能虚拟化(NFV)

随着云计算、虚拟化等技术逐渐成熟,电信行业也对传统网络领域的架构进行了虚拟化变革,采用NFV设备加速完成软件化转变,方便网络设备中的应用程序可以进行大规模虚拟化部署,以节省成本并提高灵活性,有效提升竞争力。

但这些应用程序对网络的吞吐、转发、数据包处理等能力有极高要求,需要使用高性能的虚拟网络才能发挥作用。因此,具备SR-IOV功能的网卡凭借其成熟性、可虚拟化等特点在NFV设备中得到大量应用,使得数据中心能够以较低的成本获得高性能、易伸缩的弹性网络管理能力。

云游戏

随着宽带网络的发展,以及移动终端设备的普及,将游戏计算至于云端,客户端仅仅负责显示与控制的游戏模式也悄然开始流行。对于一些实时性能要求较高的游戏来说,网络包转发、瞬间吞吐能力、延迟稳定性等网络性能能必不可少,否则可能出现画面掉帧、操作延时等情况,严重影响游戏体验。

这种云游戏模式下,可以借助物理网卡稳定的网络性能,通过SR-IOV技术将VF直接分配给云主机使用。云主机虚拟网卡的流量直接发送给VF,减去中间的桥接网卡或openswitch等软交换机,明显减少网卡包量的损耗,为用户提供更好的游戏体验。

视频流

随着Internet的发展,多媒体信息在网上的传输越来越重要,为了保证传输速度,基于UDP协议的视频流被广泛使用。对于一些需要实时传输视频的场景(直播、视频会议等),网络包转发、瞬间吞吐能力、延迟稳定性等网络性能能必不可少,否则可能出现画面卡顿、视频分辨率降低等情况,严重影响视频观感。

众所周知,UDP协议虽然能提高传输速度、极大缩短传输时间,但无法保证数据可靠性。网络波动、网络丢包等直接影响视频质量,欲速则不达。具备SR-IOV功能的网卡凭借其成熟性、可虚拟化等特点在实时视频场景能够发挥独特优势,保证网络性能的同时,还能降低CPU压力,有效减少网络丢包,提高传输效率,完美弥补UDP协议可靠性问题,可谓相当契合。

SR-IOV网卡虚拟化使用教程 | 5.4.12 | ZStack Cloud · ZCF | ZStack 资源中心