返回
ZStack实践汇 | SR-IOV实践指南
2020-12-22 22:58

第一章 SR-IOV介绍

1.1 概述

SR-IOV(Single Root I/O Virtualization)是一种基于硬件的虚拟化解决方案,它允许多个云主机高效共享PCIe设备,且同时获得与物理设备性能媲美的I/O性能,能有效提高性能和可伸缩性。可适用于网络NFV、云游戏、视频流(UDP)等对网络性能、传输速度要求极高的应用场景。本文将以型号为Mellanox Technologies MT27710 Family [ConnectX-4 Lx]的物理网卡为例,详细介绍ZStack SR-IOV在Linux系统和Windows系统中的安装使用,以及带SR-IOV的VF云主机网络性能和普通虚拟机网卡网络性能之间的对比。


1.2 SR-IOV原理介绍

ZStack支持基于SR-IOV规范,通过硬件技术,将物理网卡(PF)虚拟化切割成多张虚拟(VF)类型网卡,直接分配给云主机使用的功能。与传统的KVM里数据包传输过程相比,VF网卡可越过虚拟化层,缩短数据传输路径,使云主机获得接近物理设备的I/O性能,明显减少数据传输对物理机CPU资源的消耗,即使物理机CPU压力较大,也能有效减少网络丢包,提高传输效率,如下图所示:

01.png

SR-IOV属于VT-d技术的一个分支,VT-d 的性能非常好,但是它的物理设备只能分配给一个虚拟机使用。为了实现多个虚拟机共享一个物理设备,并且达到直接分配的目的, SR-IOV以原生地支持实现多个客户机共享一个设备的效果,广泛应用在网卡上。


SR-IOV引入了两种功能类型:

1)物理功能(Physical Function,PF)

用于支持 SR-IOV 功能中的 PCI 功能,如 SR-IOV 规范定义。PF 包含 SR-IOV 功能结构,用于管理 SR-IOV 功能。PF 是全功能的 PCIe 功能,可以像其他任何 PCIe 设备一样对数据进行发现、管理和处理。PF 拥有完全的配置资源,可以用于配置或控制 PCIe 设备。

2虚拟功能(Virtual Function,VF)

与物理功能关联的一种功能。VF 是一种轻量级 PCIe 功能,可以与物理功能以及同一物理功能关联的其他 VF 共享一个或多个物理资源。VF仅允许拥有用于其自身行为的配置资源。

每个SR-IOV设备都可有一个PF,并且每个PF有其关联的VF。PF可以通过寄存器创建VF,这些寄存器设计有专用于此目的的属性。

在PF中启用了SR-IOV,就可以通过PF的总线、设备和功能编号,访问各个VF的PCI配置空间,实现弹性灵活使用资源的同时,提高资源利用率、节约成本。如下图所示:

03.png



第二章 SR-IOV使用流程

2.1 准备工作

说明:本文档采用ZStack3.9.0版本,服务器网卡以Mellanox Technologies MT27710 Family [ConnectX-4 Lx]为例

1)配置物理机BIOS,打开SR-IOV功能,并打开Intel(R) VT。不同服务器的BIOS中启动IOMMU的方法有差别,可根据实际情况配置。

640.png

lALPGoGu-6JAmc16zQFF_325_122.png


2)请确保物理网卡支持SR-IOV,并开启SR-IOV,如下图所示:


05.png


3)可在System setup中Number of virtual functions设置物理网卡的最大切割数,例如:假设该物理网卡可支持切割64个VF,在Number of virtual functions中,设置该物理网卡最大切割数为8,那么在平台中,对于该网卡最多支持切割8个VF网卡。

06.png


4)执行命令lspci |grep -i eth检查当前服务器pci插槽号、网卡型号和网卡数量,执行命令lspci -s 3b:00.1 -v显示3b:00.1设备上的功能块信息,检查该网卡是否开启SR-IOV。


07.png


5)上述参数修改完成后,重启服务器,重启之后进入系统执行以下脚本,检查Interrupt Remapping功能是否开启;


微信图片_20201222223946.png


输出"No interrupt remapping support found"或"Interrupt remapping not supported"表示CPU不支持Interrupt Remapping,无输出则表示CPU支持Interrupt Remapping。

如果不支持则必须执行以下框架内的配置才可做VF透传,否则会报错:failed to set iommu for container: Operation not permitted

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

注:如果物理机Linux没有自带的PF驱动,需要手动安装PF驱动;如果云主机Linux/Windows没有自带的VF驱动,需要手动安装VF驱动,对应的网卡驱动需找到其官方网站进行下载。


2.2 SR-IOV网卡切割

基于ZStack平台SR-IOV功能切分

平台物理机网卡切割方式如下:

前提条件:

a. 请确保此物理网卡支持SR-IOV切割;

b. 请确保待切割物理网卡所在物理机的BIOS中已开启Intel VT-d/AMD IOMMU和SR-IOV功能;

c. 请确保云平台中添加的物理机IOMMU状态为“可用”。


网卡切割:

1)点击物理机名称,外接设备,勾选要切割的物理网卡,再点击操作,即可对该物理网卡进行SR-IOV切割,如下图所示:

10.png


2)根据物理网卡所设置的最大切割数,可自定义设置该物理网卡所切割的VF类型的网卡数量,VF切割数量越多,性能越差;对已切割的物理网卡,不支持动态修改已切割值,即“已虚拟化”状态不支持切割,“可虚拟化”状态才支持切割,如下图所示:

11.png


3)物理网卡切割完成后可查看当前VF虚拟网卡可用量及总量,如下图所示:

12.png




第三章 场景实践

在ZStack平台中为云主机分配的SR-IOV_VF网卡IP地址配置可采用:DHCP动态分配或手动静态配置两种模式;手动静态配置IP地址的方法可参考对应系统静态IP配置方法,Windows系统IP地址较为简单可以直接在图形界面配置即可;如果云主机系统为Linux发行版本,则需要遵守各发行版本IP配置方法进行配置;本次示例以DHCP模式举例说明。


3.1 Linux系统分配VF网卡

物理机相关准备工作完成后,请登录云平台,对物理机网卡进行切割,请参考2.2 SR-IOV网卡切割使用vf网卡创建云主机,详情请参考如下文所示:

1)创建二层网络,勾选启用SR-IOV

13.png


2)创建三层网络选用勾选了SR-IOV功能的二层网络。

14.png


3)创建云主机,选择三层网络,勾选启用SR-IOV。

13.png


4)检查云主机网卡类型为VF,正常打开云主机控制台,检查网络是否可正常连通。

16.png



3.2 Windows系统分配VF网卡

说明:对于Windows客户机系统,有少数的最新Windows系统(如Windows 8、Windows10)默认带有网卡驱动,而多数的Windows系统 (如Windows 7、Windows 2008 Server、windows2012 Server等)都没有默认带有相关的驱动,需要自行下载和安装。本次示例以Window2012R2为例,举例说明,仅供参考。

1)上传一个Window ISO,本文以Windows 2012R2为例,镜像格式选择iso平台,再选择Windows,如下图所示:


640 (1).png


2)根据物理网卡型号,在对应的官网下载网卡驱动到本地,本次示例网卡型号为:Mellanox Technologies MT27710 Family [ConnectX-4 Lx],对应的网卡驱动下载地址为:https://cn.mellanox.com/products/adapter-software/ethernet/windows/winof-2

下载windows server 2012 R2对应的驱动,如下图所示:

23.png

注:由于平台支持上传镜像格式为iso,故需将该exe程序,制作成iso格式,加载给云主机提供驱动,本次示例以UItraISO工具转换为例,如下图所示:

24.png


进行保存,为ISO重新命名,如下图所示:

25.png


3)上传网卡驱动到云平台,镜像格式选择iso,平台推荐选择other。创建云主机,选择Windows2012R镜像,选择SR-IOV三层网络,勾选启用SR-IOV,点击高级>创建更多光驱>加载ISO添加网卡驱动,如下图所示:

27.png


28.png


4)安装Windows 2012R2系统。找到网卡驱动,双击打开驱动,双击运行网卡驱动程序,如下图所示:

31.png


5)如果出现“欢迎”界面,则点击下一步,如果出现如下显示,则表示/Windows/System32目录中缺少文件,需要在微软官网去下载相应的补丁,Windows server 2012 R2安装KB2999226前还需安装KB2919442、KB2919355两个补丁才可成功安装KB2999226补丁

33.png


6)下载KB2919442、KB2919355、KB2999226补丁并上传到Windows server 2012 R2系统中。本次测试笔者采用的是USB透传,将相应的补丁上传到Windows server 2012 R2系统中;另外也可采用将KB文件制作成ISO的方式,上传到Windows系统内。方法不限,仅做参考,对应的链接如下:

KB2919442:https://www.microsoft.com/zh-cn/download/details.aspx?id=42153

KB2919355:https://www.microsoft.com/en-us/download/details.aspx?id=42334

KB2999226:https://www.microsoft.com/zh-CN/download/details.aspx?id=49063

7)在Windows系统中找到上传的KB2919442补丁,双击运行安装KB2919442,安装完成后,重启系统生效。安装步骤如下图所示:


35.png

36.png

41.png


8)同样的方法,在Windows系统中,双击KB2919355,安装补丁,安装完成后重启生效,最后安装KB2999226,安装步骤参考第7)。


9)找到网卡驱动位置,双击运行安装,如下图所示:

45.png


10)本次以自定义安装为例,点击下一步。

49.png


11)选择要安装的功能:

  • 性能工具-安装用于衡量用户环境中的性能的性能工具

  • 文档-包含用户手册和发行说明

  • 管理工具-用于管理的安装工具,例如mlxstat

  • 诊断工具-用于诊断的安装工具,例如mlx5cmd

本次安装需安装性能工具,故以性能工具为例,点击下一步。

50.png


12)点击Install开始安装。驱动安装好后,网络即可连接,点击“是”,连接网络。

53.png


13)点击Finish完成网卡驱动的安装,如下图所示:

54.png


14)在PowerShell中查看网络连通是否正常,如下图所示:

55.png




第四章 性能对比测试

4.1 网络性能对比 

前面我们有提到,VF网卡与普通vNIC网卡相比较,性能更好,通过以下性能测试,来进行比较与证明。

  注:本次测试采用跨物理机测试对比,具体参数如下:

f0b0189f4d076c5c3145bc36e024b0e.png


基于vNIC网卡和vf网卡性能测试对比如下:

d7ef7fbf9d4e1a316f31b042e1d1632.png


结: 从以上数据不难看出,使用带SR-IOV的VF云主机网络性能,比虚拟化网卡网络,延迟和带宽性能都更好。


第五章 注意事项

ZStack云平台使用SR-IOV功能需注意以下情况:

1)使用SR-IOV功能前,须严格确保准备工作全部完成,否则此功能无法正常使用。

2)若VF网卡已分配给云主机使用,请勿卸载物理网卡驱动,否则可能导致VF网卡被强行回收。

3)若物理网卡已配置bond,则继续使用SR-IOV功能,可能导致VF与vNIC网卡相互通信受影响,推荐使用方式如下:

  • 针对单个物理网卡配置bond,并继续使用SR-IOV功能;

  • 多个物理网卡配置bond时,仅对其中一个物理网卡进行SR-IOV切割。

4)VF网卡不支持QoS功能。

5)启用SR-IOV功能的三层网络创建的云主机,暂时不支持使用以下网络服务:

  • 公有网络/扁平网络创建的云主机,其VF网卡不支持使用安全组和弹性IP网络服务。

  • 云路由网络/VPC网络创建的云主机,其VF网卡不支持使用安全组网络服务。

6)运行状态且加载VF网卡的云主机,不支持数据的存储迁移操作,须停用云主机或卸载VF网卡,才能执行这类操作。

7)停用云主机,将自动释放VF网卡;启用云主机时则重新获取。若无可用VF网卡,将导致启用云主机失败。

下载ZStack企业版

您已填写过基本信息?点击这里

姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

下载链接将会通过邮件形式发送至您的邮箱,请谨慎填写。

下载ZStack企业版

还未填写过基本信息?点击这里

邮箱或手机号码格式错误
验证手机号
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
登录观看培训视频
仅对注册用户开放,请 登录 或 填写资料 观看培训视频
填写资料

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io
ZStack认证培训咨询
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

商务联系:

channel@zstack.io
申请ZStack多机版
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。 当您收到电子邮件后,请点击 URL 链接,以完成下载。

下载链接已发送至您的邮箱。

如未收到,请查看您的垃圾邮件、订阅邮件、广告邮件。
或点击下方URL链接 (IE内核浏览器请右键另存为), 完成下载:

感谢您使用 ZStack 产品和服务。

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。

立即体验

联系我们

商务咨询
400-962-2212 转 1
售后咨询
400-962-2212 转 2

回到顶部

产品试用申请
请选择您要试用的产品
ZStack企业版
ZStack混合云版
ZStack信创云平台
ZStack Ceph企业版
ZStack Mini 边缘计算一体机
ZStack CMP 多云管理平台
请填写您的基本信息
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

成功提交申请。

我们将安排工作人员尽快与您取得联系。

感谢您使用 ZStack 产品和服务。