H3C CAS 支持硬件 SR-IOV 操作指导书

18
H3C CAS 支持硬件 SR-IOV 操作指导书 Copyright © 2016 杭州华三通信技术有限公司 版权所有,保留一切权利。 非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部, 并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。

Transcript of H3C CAS 支持硬件 SR-IOV 操作指导书

Page 1: H3C CAS 支持硬件 SR-IOV 操作指导书

H3C CAS 支持硬件 SR-IOV 操作指导书

Copyright © 2016 杭州华三通信技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,

并不得以任何形式传播。本文档中的信息可能变动,恕不另行通知。

Page 2: H3C CAS 支持硬件 SR-IOV 操作指导书

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

Page 3: H3C CAS 支持硬件 SR-IOV 操作指导书

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 引入了两个新的功能类型:

Page 4: H3C CAS 支持硬件 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 位

Page 5: H3C CAS 支持硬件 SR-IOV 操作指导书

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 直通的虚拟网卡网络统计

Page 6: H3C CAS 支持硬件 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 版本)

Page 7: H3C CAS 支持硬件 SR-IOV 操作指导书

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 设置。

Page 8: H3C CAS 支持硬件 SR-IOV 操作指导书

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 功能

Page 9: H3C CAS 支持硬件 SR-IOV 操作指导书

7

# 保存 BIOS 配置后,重启服务器。

6.2 配置硬件SR-IOV

步骤1 开启服务器 IOMMU 功能。

# 系统管理员登录 H3C CAS CVM 虚拟化管理平台,在导航菜单中选中被测试虚拟机所在的服务器

主机,在右侧配置窗口中点击“高级设置”标签页。

图5 服务器 IOMMU 配置

# 默认情况下,服务器主机的 IOMMU 状态为“禁用”。点击<修改>按钮,在弹出的“IOMMU 配置”

对话框中,修改“IOMMU 状态”为“启用”,并点击<确定>按钮。

图6 修改服务器 IOMMU 状态

# 将服务器主机进入维护模式,并重启服务器使 IOMMU 配置生效。

Page 10: H3C CAS 支持硬件 SR-IOV 操作指导书

8

图7 重启服务器主机使 IOMMU 配置生效

在配置 IOMMU 之后,由于必须重新启动服务器生效,如果被测试服务器主机上已经存在虚拟机,

强烈建议:服务器主机进入维护模式,将处于运行状态的虚拟机在线迁移到其它服务器主机上,

然后再重启服务器主机,以最大程度规避因为主机重启而导致虚拟机数据丢失。

# 服务器主机启动完成之后,在 H3C CAS CVM 虚拟化管理平台上将服务器主机退出维护模式,检

查其 IOMMU 配置是否为“启用”状态。

图8 检查服务器 IOMMU 配置状态

Page 11: H3C CAS 支持硬件 SR-IOV 操作指导书

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”个,点击<保存>按钮。

Page 12: H3C CAS 支持硬件 SR-IOV 操作指导书

10

图9 配置物理网卡的 SR-IOV 功能

步骤2 为 VM #1 和 VM #2 配置 SR-IOV 网卡。

# 在“修改虚拟机”界面中,点击<增加硬件>按钮,准备为虚拟机增加 SR-IOV 网卡。

# 在弹出的“增加新的虚拟机硬件”配置向导中,选择“硬件类型”为“网络”,点击<下一步>按

钮。

图10 为虚拟机增加虚拟硬件配置向导第一步 – 选择硬件类型

Page 13: H3C CAS 支持硬件 SR-IOV 操作指导书

11

# 选择“设备型号”为“SR-IOV 直通网卡”,驱动类型为“VFIO”,点击“物理网卡”后的“ ”

按钮,选择支持 SR-IOV 功能的网卡,点击<下一步>按钮。

图11 为虚拟机增加虚拟硬件配置向导第二步 – 选择 SR-IOV 网卡

# 确认配置之后,点击<完成>按钮。

图12 为虚拟机增加虚拟硬件配置向导第三步 – 配置确认

Page 14: H3C CAS 支持硬件 SR-IOV 操作指导书

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 网卡

Page 15: H3C CAS 支持硬件 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。

Page 16: H3C CAS 支持硬件 SR-IOV 操作指导书

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 版本为例。

Page 17: H3C CAS 支持硬件 SR-IOV 操作指导书

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,下图为具体测试结果。

Page 18: H3C CAS 支持硬件 SR-IOV 操作指导书

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)