H3C CAS 支持硬件 SR-IOV 操作指导书 Copyright © 2016 杭州华三通信技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。
H3C CAS 支持硬件 SR-IOV 操作指导书
Copyright © 2016 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,
并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。
i
目 录
1 简介 ······························································································································· 1
2 产品规格 ························································································································· 2
2.1 兼容性列表 ··················································································································· 2
2.2 注意事项 ······················································································································ 3
2.3 规格限制 ······················································································································ 3
3 配置前提 ························································································································· 4
4 配置环境 ························································································································· 4
4.1 服务器························································································································· 4
4.2 软件 ··························································································································· 4
5 组网需求 ························································································································· 5
6 测试步骤 ························································································································· 5
6.1 检查服务器硬件配置 ······································································································· 5
6.2 配置硬件 SR-IOV ··········································································································· 7
6.3 准备测试虚拟机 ············································································································· 9
6.4 虚拟机配置 SR-IOV 网卡 ································································································· 9
6.5 验证 SR-IOV 网卡的互通性 ···························································································· 13
6.6 验证 SR-IOV 和 Virtio 网卡 I/O 吞吐量 ·············································································· 14
6.7 对比验证结果 ·············································································································· 16
1
1 简介
本文档用于介绍 H3C CAS 支持硬件 SR-IOV 网卡的使用方法和操作步骤。
网络 I/O 虚拟化是服务器虚拟化技术的重要组成部分,在服务器虚拟化技术领域,计算虚拟化(如
CPU 和内存虚拟化)已经日趋成熟,但是,网络 I/O 虚拟化技术的发展相对比较滞后。当前,主流
的网络 I/O 虚拟化技术有三种:软件模拟、网卡直通和 SR-IOV。这三种虚拟化技术在不同程度上
实现了网络 I/O 设备的虚拟化功能。其中,软件模拟是通过虚拟化 Hypervisor 层模拟虚拟网卡,实
现与物理设备完全一样的接口,虚拟机操作系统无须修改就能直接驱动虚拟网卡,其最大的缺点是
性能相对较差;网卡直通支持虚拟机绕过 Hypervisor 层,直接访问物理 I/O 设备,具有最高的性能,
但是,在同一时刻,物理 I/O 设备只能被一个虚拟机独享;SR-IOV 是 Intel 在 2007 年提出的解决
虚拟化网络 I/O 的硬件技术方案,该技术不仅能够继承网卡直通的高性能优势,而且同时支持物理
I/O 设备的跨虚拟机共享,具有较好的应用前景。
2007 年 10 月,PCI-SIG 发布了 PCI-SIG Single Root I/O Virtualization(SR-IOV)规范,其中详
细阐述了硬件供应商在多个虚拟机中如何共享单个 I/O 设备硬件。
Host
VM0
Guest OS
App
App
App
…
VF Device Driver
VM1
Guest OS
App
App
App
…
VF Device Driver
VM2
Guest OS
App
App
App
…
vNIC Device Driver
VM3
Guest OS
App
App
App
…
vNIC Device Driver
H3C CAS CVKvSwitch
NIC Device Driver
SR-IOV Capable NIC
Port 0
Physical Function
Virtual Function
Port 1
Physical Function
Hypervisor Bypass
Intel VT-d
PCI Express
图1 硬件 SR-IOV 虚拟化技术原理图
SR-IOV 引入了两个新的功能类型:
2
PFs(Physical Functions,物理功能):物理网卡所支持的一项 PCI 功能,一个 PF 可以扩
展出若干个 VF。
VFs(Virtual Functions,虚拟功能):支持 SR-IOV 的物理网卡虚拟出来的实例,以一个独
立网卡的形式呈现,每个 VF 有独立的 PCI配置区域,并可以与其它 VF 共享同一个物理资源
(共用同一个物理网口)。
一旦在 PF 中启用了 SR-IOV,就可以通过 PF 的总线、设备和功能编号(路由 ID)访问各个 VF 的
PCIe 配置空间。每个 VF 都具有一个 PCIe 内存空间,用于映射其寄存器集。VF 设备驱动程序对寄
存器集进行操作以启用其功能,并且显示为实际存在的 PCIe 设备。创建 VF 后,可以直接将其指
定给 I/O 来宾域或各个应用程序。此功能使得虚拟功能可以共享物理设备,并在没有 CPU 和虚拟机
管理程序软件开销的情况下执行 I/O。
由此可见,SR-IOV 网卡通过将 SR-IOV 功能集成到物理网卡上,将单一的物理网卡虚拟成多个 VF
接口,每个 VF 接口都有单独的虚拟 PCIe 通道,这些虚拟的 PCIe 通道共用物理网卡的 PCIe 通道。
每个虚拟机可占用一个或多个 VF 接口,这样虚拟机就可以直接访问自己的 VF 接口,而不需要
Hypervisor 的协调干预,从而大幅提升网络吞吐性能。
需要注意的是,SR-IOV 作为一种新技术,目前仍不完善的地方:
单个物理网卡支持的虚拟机个数有限制;
SR-IOV 特性需要物理网卡硬件支持,并非所有的物理网卡都支持 SR-IOV 特性。
2 产品规格
2.1 兼容性列表
H3C CAS 云计算管理平台兼容多种支持硬件 SR-IOV 的网卡及虚拟机操作系统。下表为进行了详
细兼容性验证的硬件网卡类型及对应操作系统的版本,对于未在列表中的网卡和操作系统可能可以
支持,但在项目实施之前,需要进行适当的适配与验证工作。
物理网卡类型 虚拟机操作系统
Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection
网卡固件版本:0x800007c7
Windows Server 2008 R2 数据中心版 64 位
Red Hat Enterprise Linux Server 7.0 64 位
CentOS Release 7.0 64 位
CentOS Release 6.5 64 位
Intel Corporation 82599 10-Gigabit Dual Port Backplane Connection (rev 01)
网卡固件版本:0x800006d5
Windows Server 2008 R2 数据中心版 64 位
Red Hat Enterprise Linux Server 7.0 64 位
CentOS Release 7.0 64 位
CentOS Release 6.5 64 位
Broadcom Corporation NetXtreme II BCM57810 10 Gigabit Ethernet
网卡固件版本:7.10.10
Windows Server 2008 R2 数据中心版 64 位
Red Hat Enterprise Linux Server 7.0 64 位
CentOS Release 7.0 64 位
3
如果虚拟机操作系统为 Windows 类型,都必须在操作系统内安装 SR-IOV 网卡的 VF 驱动程序,
您可以联系服务器或网卡供应商获取相应的软件驱动安装文件。
如果虚拟机操作系统为 Linux 类型,对于 Intel 82599 网卡,只支持内核版本为 2.6 以上的 Linux
操作系统,对于 BCM57810 网卡,只支持内核版本为 3.9 以上的 Linux 操作系统。
2.2 注意事项
(1) 物理主机必须支持并开启 I/O 内存管理单元(IOMMU)功能。
(2) 物理主机必须支持 SR-IOV,并且在 BIOS 中启用了 SR-IOV。
(3) PF驱动程序必须安装在CVK虚拟化内核系统中。对于 Intel 82599和BCM57810等主流网卡,
H3C CAS CVK 虚拟化内核系统提供默认驱动程序。
(4) VF 驱动程序必须与物理网卡兼容,必须安装在虚拟机操作系统内。对于某些网卡,操作系统
版本中包含默认驱动程序(例如,内核版本高于 3.9 的 Red Hat Enterprise Linux Server 7.0
操作系统,默认自带 BCM57810 网卡的 VF 驱动程序),而对于其它网卡,则必须从网卡供
应商或主机供应商所提供的位置下载并安装驱动程序。
(5) 支持 SR-IOV 的网卡必须插在总线带宽 X8 以上的扩展槽中。以 HP ProLiant DL380p Gen8
服务器为例,该服务器的 3 个扩展槽的总线带宽是不一样的,2×10G 的网卡必须插在 X8 或
X16 的槽位,才能提供足够的带宽。插槽 1 提供 X16 总线带宽,插槽 2 提供 X8 总线带宽,插
槽 3 提供 X4 总线带宽,因此,插槽 3 不支持 SRIOV 网卡。
2.3 规格限制
对于配置了 SR-IOV 的虚拟机,以下功能将不可用:
虚拟机在线/离线迁移
存储在线迁移
HA
DRS
DPM
DRX
NetFlow
FT
虚拟机暂停和恢复
虚拟机快照
虚拟资源热添加
使用 SR-IOV 直通的虚拟网卡网络统计
4
如果在 H3C CAS CVM 虚拟化管理平台上尝试启用或配置使用 SR-IOV 的不受支持的功能,将导致
环境中出现异常行为。
3 配置前提
本文档中的配置均是在实验室环境下进行的配置和验证,配置前服务器和软件的所有参数均采用出
厂时的缺省配置。如果您已经对被测试对象进行了配置,为了保证配置效果,请确认现有配置和以
下举例中的配置不冲突。
4 配置环境
4.1 服务器
本文档不严格与具体硬件服务器型号对应,如果使用过程中与产品实际情况有差异,请参考相关产
品手册,或以设备实际情况为准。本文档使用的服务器型号与配置如下表所示,该环境不作为实际
部署时的强制环境或推荐环境,只需要服务器能够兼容 H3C CAS 云计算管理平台即可完成本配置。
配置项 说明
服务器 #0
(H3C CAS CVM虚拟化管理平台)
HP ProLiant DL380p Gen8
CPU:2 路 8 核,Intel Xeon E5-2650 0 @ 2.00GHz
内存:32 GB
服务器 #1
(H3C CAS CVK虚拟化内核系统)
HP ProLiant DL380p Gen8
CPU:2 路 6 核,Intel Xeon E5-2630 0 @ 2.30GHz
内存:96 GB
网卡:Broadcom NetXtreme BCM57810 10 Gigabit Ethernet
存储(共享存储设备) HP StoreVirtual 4730
4.2 软件
软件 版本
服务器虚拟化管理软件 H3C CAS-D0216(KVM Kernel 3.13.6)
虚拟机操作系统 Windows Server 2008 R2 数据中心版 64 位
Red Hat Enterprise Linux Server 7.0 64 位(内核版本:3.10.0-123.el7)
网络I/O加压工具 iperf 2.0.5(Windows 版本和 Linux 版本)
5
5 组网需求
服务器 #0
H3C CAS CVM虚拟化管理平台
服务器 #1
H3C CAS CVK虚拟化内核系统
管理网IP:192.168.20.26 管理网IP:192.168.20.32
VM #1
Windows Server 2008 R2
SR-IOV vNIC:192.168.100.101
Virtio vNIC:192.168.30.180
HP StoreVirtual 4730
192.168.0.40
LUN
500GB
VM #2
Red Hat Enterprise Linux Server 7
SR-IOV vNIC:192.168.100.102
Virtio vNIC:192.168.30.145
BCM57810万兆网卡
vSwitch
虚拟交换机转发流量
SR-IOV网卡转发流量
图2 硬件 SR-IOV 网卡逻辑组网图
(1) 服务器 #0 安装 H3C CAS CVM 虚拟化管理平台,服务器 #1 安装 H3C CAS CVK 虚拟化内核
系统。在 HP StoreVirtual P4730(iSCSI)存储设备上划分了一个 500GB 的 LUN,并将这个
LUN 作为 iSCSI 共享存储设备挂载给服务器 #1 使用。
(2) 在服务器 #1上创建 2个虚拟机,分别安装Windows Server 2008 R2数据中心版 64位和Red
Hat Enterprise Linux Server 7.0 64 位操作系统。
(3) 在服务器 #1 的 BCM57810 网卡上开启 SR-IOV 功能,并分别分配 1 个 VF 接口给 VM #1 和
VM #2。
主要验证项包括:
(1) VM #1 和 VM #2 操作系统内是否能看到分配的 SR-IOV 网卡。
(2) VM #1 和 VM #2 分别使用 Virtio 网卡和 SR-IOV 网卡进行网络流量压力测试,对比 Virtio 网卡
转发与 SR-IOV 网卡转发时的 I/O 吞吐量。
6 测试步骤
6.1 检查服务器硬件配置
步骤1 检查服务器的 CPU 是否启用了 VT-d 技术。
# 启动服务器 #1,在启动过程中,按[F9]键进入 BIOS 设置。
6
# 在 BIOS 设置中,依次选择“System Options”->“Processor Options”->“Intel(R) VT-d”,将
其值设置为“Enabled”,表示开启 CPU 的 VT-d 功能。
图3 在服务器 BIOS 中开启 Intel VT-d 技术
# 依次选择“Advanced Options”->“SR-IOV”,将其值设置为“Enabled”,表示开启物理网卡的
SR-IOV 功能。
图4 在服务器 BIOS 中开启 SR-IOV 功能
7
# 保存 BIOS 配置后,重启服务器。
6.2 配置硬件SR-IOV
步骤1 开启服务器 IOMMU 功能。
# 系统管理员登录 H3C CAS CVM 虚拟化管理平台,在导航菜单中选中被测试虚拟机所在的服务器
主机,在右侧配置窗口中点击“高级设置”标签页。
图5 服务器 IOMMU 配置
# 默认情况下,服务器主机的 IOMMU 状态为“禁用”。点击<修改>按钮,在弹出的“IOMMU 配置”
对话框中,修改“IOMMU 状态”为“启用”,并点击<确定>按钮。
图6 修改服务器 IOMMU 状态
# 将服务器主机进入维护模式,并重启服务器使 IOMMU 配置生效。
8
图7 重启服务器主机使 IOMMU 配置生效
在配置 IOMMU 之后,由于必须重新启动服务器生效,如果被测试服务器主机上已经存在虚拟机,
强烈建议:服务器主机进入维护模式,将处于运行状态的虚拟机在线迁移到其它服务器主机上,
然后再重启服务器主机,以最大程度规避因为主机重启而导致虚拟机数据丢失。
# 服务器主机启动完成之后,在 H3C CAS CVM 虚拟化管理平台上将服务器主机退出维护模式,检
查其 IOMMU 配置是否为“启用”状态。
图8 检查服务器 IOMMU 配置状态
9
6.3 准备测试虚拟机
步骤1 创建虚拟机。
# 在 H3C CAS CVK 虚拟化内核系统(服务器 #1)上创建 2 个新的虚拟机,两个虚拟机的虚拟硬件
资源配置相同,如下表所示。
资源 大小
vCPU 2核
vMem 4GB
vDisk 1 * 50GB(Virtio,位于共享存储,用于安装虚拟机操作系统)
vNIC 1(Virtio,关闭内核加速)
虚拟交换机 vSwitch0(管理口)
网络策略模板 Default
上述虚拟机资源配置仅为测试环境下的配置,不作为生产环境中业务虚拟机的推荐配置。生产环
境中的虚拟机配置应该根据业务本身对 CPU、内存、磁盘和网卡等资源的实际需求进行评估和
测试后最终确定。
步骤2 通过控制台(VNC),分别为两个虚拟机安装 Windows Server 2008 R2 数据中心版 64 位
操作系统和 Red Hat Enterprise Linux Server 7.0 64 位操作系统。
步骤3 【可选】在 H3C CAS CVM 虚拟化管理平台中,在线修改虚拟机,分别为两个虚拟机挂载
CAStools 工具,并在操作系统内安装 CAStools 工具。
步骤4 在操作系统内安全关闭虚拟机。
6.4 虚拟机配置SR-IOV网卡
步骤1 开启物理主机物理网卡 SR-IOV 功能。
# 在 H3C CAS CVM 虚拟化管理平台导航菜单中,选中被测试虚拟机所在的服务器主机,在右侧配
置窗口中点击“物理网卡”标签页。
# 在“物理网卡”列表中,选中支持 SR-IOV 功能的物理网卡(本文档以 Broadcom 公司的 NetXtreme
II BCM57810 万兆网卡为例),在“高级设置”中,点击“SR-IOV”标签页,修改“SR-IOV 状态”
为“启用”,输入“虚拟网卡个数”为“2”个,点击<保存>按钮。
10
图9 配置物理网卡的 SR-IOV 功能
步骤2 为 VM #1 和 VM #2 配置 SR-IOV 网卡。
# 在“修改虚拟机”界面中,点击<增加硬件>按钮,准备为虚拟机增加 SR-IOV 网卡。
# 在弹出的“增加新的虚拟机硬件”配置向导中,选择“硬件类型”为“网络”,点击<下一步>按
钮。
图10 为虚拟机增加虚拟硬件配置向导第一步 – 选择硬件类型
11
# 选择“设备型号”为“SR-IOV 直通网卡”,驱动类型为“VFIO”,点击“物理网卡”后的“ ”
按钮,选择支持 SR-IOV 功能的网卡,点击<下一步>按钮。
图11 为虚拟机增加虚拟硬件配置向导第二步 – 选择 SR-IOV 网卡
# 确认配置之后,点击<完成>按钮。
图12 为虚拟机增加虚拟硬件配置向导第三步 – 配置确认
12
KVM:基于 KVM 内核的 PCI 设备分配方式,是一种较老的 PCI 设备分配方式,在较老的 Linux
操作系统内核中支持。
VFIO(Virtual Function I/O,虚拟化功能输入输出):基于 VFIO 的 PCI 设备分配方式。VFIO 是
一套用户态驱动框架,在虚拟化场景下,可以用来在用户态实现 PCI 设备分配,与基于 KVM 内
核的 PCI 设备分配方式相比,具有更好的兼容性,在实际部署时,建议配置为 VFIO 类型分配方
式。
步骤3 从 HP 官网下载 BCM57810 网卡在 Windows 类型操作系统下的 VF 驱动程序,下载网址为
http://h20564.www2.hpe.com/hpsc/swd/public/detail?sp4ts.oid=5282673&swItemId=MTX
_06339e112ace404aaab82b2b0a&swEnvOid=4064。
仅 Windows 类型操作系统需要安装 VF 驱动程序,对于 BCM57810 网卡,Linux 内核版本 3.9
以上的操作系统都不需要安装 VF 驱动程序。
步骤4 启动虚拟机 VM #1,并在虚拟机操作系统内完成驱动程序的安装。驱动程序安装成功之后,
在 Windows 操作系统的“设备管理器”中,可以看到 SR-IOV 网卡已经被操作系统识别到。
图13 在 Windows Server 2008 R2 虚拟机上识别到的 SR-IOV 网卡
13
步骤5 在 VM #2 虚拟机上,无需安装 VF 驱动程序,Red Hat Enterprise Linux Server 7.0 操作系
统默认已经支持 BCM57810 的网卡驱动程序。在“Settings”->“Network”中,可以看到
被操作系统识别到的 SR-IOV 网卡。
图14 在 Red Hat Enterprise Linux Server 虚拟机上识别到的 SR-IOV 网卡
6.5 验证SR-IOV网卡的互通性
步骤1 配置虚拟机 SR-IOV 网卡 IP 地址。
# 在 Windows 虚拟机操作系统内,配置 SR-IOV 网卡 IP 地址为 192.168.100.101。
图15 配置 Windows Server 2008 R2 虚拟机 SR-IOV 网卡 IP 地址
# 在 Red Hat Enterprise Linux 虚拟机操作系统内,配置 SR-IOV 网卡 IP 地址为 192.168.100.102。
14
图16 配置 Red Hat Enterprise Linux 7.0 虚拟机 SR-IOV 网卡 IP 地址
# 在 VM #1 操作系统内命令行窗口,Ping VM #2 的 IP 地址,观察是否能 Ping 通。
图17 验证配置了 SR-IOV 网卡的虚拟机之间的 IP 互通性
6.6 验证SR-IOV和Virtio网卡I/O吞吐量
步骤1 从 iperf官方网站下载 Windows版本和 Linux版本的 iperf工具软件,并分别在 VM #1和 VM
#2 虚拟机操作系统内安装。下载网址为:https://iperf.fr,本文档使用 2.5.0 版本为例。
15
步骤2 以 VM #1(Windows Server 2008 R2)为服务端,VM #2(Red Hat Enterprise Linux Server
7.0)为客户端,两个虚拟机通过 SR-IOV 网卡进行网络吞吐量加压测试。为了防止偶然因
素影响测试结果,总共测试 5 次取均值,结果约为 2.13Gbps,下图为具体测试结果。
图18 SR-IOV 网卡性能测试结果
步骤3 两个虚拟机通过 Virtio 网卡(关闭内核加速)进行网络吞吐量加压测试,同样测试 5 次取均
值,结果约为 614Mbps,下图为具体测试结果。
图19 Virtio 网卡(关闭内核加速)性能测试结果
步骤4 两个虚拟机通过 Virtio 网卡(开启内核加速)进行网络吞吐量加压测试,同样测试 5 次取均
值,结果约为 2.3Gbps,下图为具体测试结果。
16
图20 Virtio 网卡(开启内核加速)性能测试结果
Virtio 类型虚拟网卡是通过软件来模拟的网络转发模型,在实际运行时,请性能与服务器的 CPU
性能、当前服务器物理 CPU 利用率、虚拟化内核软件处理效率都有关系。
6.7 对比验证结果
根据上述测试结果,可以看出,在给定的服务器 HP ProLiant DL380p Gen8(2 路 6 核,Intel Xeon
E5-2630 0 @ 2.30GHz)和物理 SR-IOV 网卡(Broadcom NetXtreme BCM57810 10 Gigabit
Ethernet)条件下,在不同的虚拟网卡配置情况下的网络 I/O 转发性能对比如下图所示。
图21 SR-IOV 与 Virtio 网卡 I/O 吞吐量性能对比
2.13
0.614
2.3
0
0.5
1
1.5
2
2.5
SR-IOV Virtio(without vHost) Virtio(with vHost)
虚拟网卡转发性能(Gbps)