返回
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网卡,将导致启用云主机失败。

升级提醒

若您选择升级至4.0.0及之后版本,请注意以下功能调整:

1. 云路由器全面升级为VPC路由器,云路由网络全面升级为VPC网络,不再单独设云路由器页面。升级全程无感知,相关业务不受任何影响。

2. 企业管理账号体系取代用户组与用户,不再单独设用户/用户组页面,不可再使用用户/用户组账号登录云平台。升级前,请先将“用户组与用户”纳管的账号数据妥善迁移至“企业管理”纳管,再执行升级操作。注意:对于admin创建并具备admin权限的用户账号同步取消,如有需要,可使用企业管理账号体系中的平台管理员实现相同功能。

3. 调整AD/LDAP与账户的对接管理方式,统一由企业管理纳管,不再单独设AD/LDAP页面。升级前,请先将“账户”对接纳管的AD/LDAP账号数据妥善迁移至“企业管理”纳管,再执行升级操作。

如对上述升级提醒有任何疑问或需要升级帮助,请联系ZStack官方技术支持

我已阅读并知晓上述升级提醒。
下载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 Cloud 企业版
ZStack Ceph企业版
ZStack Cloud 混合云版
ZStack Cube 超融合一体机
ZStack Cloud 基础版
ZStack Mini 边缘计算一体机
ZStack Cloud 标准版
ZStack CMP 多云管理平台
ZStack 信创云平台
ZStack Zaku 容器云平台
请填写您的基本信息
姓名应该不少于两个字符
手机号格式错误
验证码填写错误 获取短信验证码 60 秒后可重发
公司名称不应该少于4个字符
邮箱格式错误

商务咨询:

400-962-2212 转 1

售后咨询:

400-962-2212 转 2

商务联系:

sales@zstack.io

成功提交申请。

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

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