VSPerf RFC 2544 吞吐量

应用说明

网络功能虚拟化(NFV)正在彻底改变我们设计、构建和运营网络的方式,并因其旨在实现容量的弹性扩展、资本支出的可预测性以及应用程序/服务的快速灵活部署,在业界引起了极大关注。作为 NFV 的关键组件之一,虚拟交换机(vSwitch)连接了运行应用程序的虚拟机,其性能已成为 NFV 部署成功的关键。Xena 正与 NFV 开放平台(OPNFV)社区紧密合作,共同推进 vSwitch 性能(VSPerf)项目,旨在建立一个通用且与架构无关的 vSwitch 性能基准测试框架。该框架将作为验证不同 vSwitch 实现方案在电信 NFV 部署环境中适用性的基础。

本应用说明介绍了如何在 VSPerf[1]项目下,利用 Xena2544 对电信网络功能虚拟化(NFV)用例中的虚拟交换机吞吐量性能进行基准测试和特性分析。

虚拟交换机性能基准测试

Xena2544 是一款免费的 PC 应用程序,可轻松创建、编辑和执行符合 RFC 2544 标准的测试配置。Xena2544 会随 XenaManager 自动安装,并可与一个或多个Xena 配合使用。采用现有的 RFC 标准旨在对虚拟交换机与物理交换机的性能进行公平比较。

RFC 2544 是 VSPerf 测试框架中引用的重要标准测试套件。它概述了网络互连设备的基准测试方法。该方法可得出吞吐量、延迟和帧丢失率等性能指标。

OPNFV VSPerf“电信NFV用例中vSwitch性能特征分析”项目(https://wiki.opnfv.org/display/vsperf/VSperf+Home)定义了三个测试场景:

  • 物理到物理(Phy2Phy)
  • VM 回环 (PVP)
  • 两个虚拟机环回(PVVP)

物理到物理(Phy2Phy)场景

该连接配置为物理端口 → vSwitch → 物理端口。vSwitch 运行在主机上。部署情况如图 1 所示:

Xena VSPerf

VM 回环(PVP)场景

该连接的配置为:物理端口 → vSwitch → VNF → vSwitch → 物理端口。vSwitch 运行在主机上。虚拟机运行 DPDK testpmd/L2fwd/Linux Bridge 来转发流量。流量由统一的 UDP 数据包组成。部署情况如图 2 所示。

图2. PVP场景

两个虚拟机环回(PVVP)场景

该连接的配置为:物理端口 → vSwitch → VNF → vSwitch → VNF → vSwitch → 物理端口。虚拟机运行 DPDK testpmd/L2fwd/Linux Bridge 来转发流量。流量由统一的 UDP 数据包组成。该部署示意图如图 3 所示。

图3. PVVP场景

物理测试设置

从测试人员的角度来看,这三个测试场景(Phy2Phy、PVP、PVVP)仅在内部实现上有所不同。因此,可以使用下图 4 所示的测试设置来构建这些场景。Teledyne LeCroy Xena 两个端口用于测试被测设备(DUT)。在此测试中,被测设备(DUT)是一个运行 vSwitch 的主机。

Xena2544
图4. 物理测试装置

如果您尚未在被测设备(DUT)上安装虚拟交换机,请访问http://openvswitch.org/download/并按照说明进行安装。本应用说明不涉及虚拟交换机的安装和配置演示。 您还可以在https://wiki.opnfv.org/display/vsperf/VSperf+Home 上找到有关如何部署 Phy2Phy、PVP 和 PVVP 的更多信息。

使用Teledyne LeCroy )Xena测试 VSPerf RFC2544 的三种方法

虚拟交换机的基准测试方法与物理交换机相比不应存在显著差异。从流量生成器的角度来看,在使用 RFC 2544 时,测试场景应保持一致,从而确保虚拟交换机的测试结果与物理交换机的结果具有可比性。

您可以通过以下三种方式使用 Xena2544 进行测试:

  • 您可以使用 VSPerf 框架中的 XenaDriver 和 XenaTrafficGenerator,或者
  • 您可以通过 Xena2544 图形用户界面(GUI)配置和运行测试,或者
  • 您可以通过 Xena2544 命令运行预配置的测试。

图5对此进行了清晰的说明。以下各节将指导您Teledyne LeCroy Xena进行VSPerf RFC 2544吞吐量测试。

图 5. 使用Teledyne LeCroy Xena对 VSPerf RFC2544 进行测试的三种方法

Xena VSPerf 脚本框架Xena 使用Teledyne LeCroy Xena

Red Hat 与Teledyne LeCroy Xena 合作Xena Teledyne LeCroy Xena 与 OPNVF 的 VSPerfXena 。开源项目Teledyne LeCroy Xena 可在以下地址找到:

https://github.com/ctrautma/Xena-VSPerf

XenaDriver 的开发旨在为用户提供一套 API,用于与Teledyne LeCroy Xena 进行通信。Teledyne LeCroy Xena 流量生成器)类旨在提供用于生成流量的 API。两者均采用 Python 编写。VSPerf 设计文档可查阅:

http://artifacts.opnfv.org/vswitchperf/docs/design/vswitchperf_design.html

步骤 1:下载项目

请访问Xena下载该项目。还应相应地下载并安装所需依赖项。

在下图所示的目录中,有四个用于 VSPerf 测试的重要文件:

  1. 该可执行文件提供了 RFC 2544 测试框架,
  2. py 为Teledyne LeCroy Xena 提供了通信 API,
  3. py 是一个流量生成器,用于在 XenaDriver.py 和 Xena2544.exe 的基础上启动/停止测试流量
  4. py 将 Xena2544 配置文件 .v2544 转换为 JSON 格式。

xena

——–人物简介/

——–Xena2544.exe

——–XenaDriver.py

——xena.py

——xena.py

在 /profiles 目录中存储了 Xena2544 的测试配置文件(.v2544)。您也可以将您的 v2544 文件存储在此处。

v2544 文件是一种 JSON 格式的文件,用于描述 Xena2544 测试的详细配置,例如包含哪些端口、拓扑结构、流量模式、数据包头、应执行的测试、输出报告格式等。

当您通过图形用户界面(GUI)保存测试时,Xena2544 会自动生成一个 v2544 文件。在“测试步骤——使用 Xena2544 GUI”一节中,您可以了解如何通过 Xena2544 GUI 配置测试并生成自己的 v2544 文件。请注意,如果您决定使用自己的 .v2544 文件,则需要相应地修改xena.py 文件。

步骤 2:配置

测试仪配置文件(*.conf)位于Xena 包中。您可以定义Teledyne LeCroy Xena IP 地址,例如指定要使用的端口和模块,以及数据包大小,如下例所示。您还可以在该文件中启用或禁用其他厂商的测试仪。

#Xena 生成器连接信息

TRAFFICGEN_XENA_IP = ‘10.19.15.19’

TRAFFICGEN_XENA_PORT1 = ‘0’

TRAFFICGEN_XENA_PORT2 = ‘1’

TRAFFICGEN_XENA_USER = ‘vsperf’

TRAFFICGEN_XENA_PASSWORD =xena

TRAFFICGEN_XENA_MODULE1 = ‘3’

TRAFFICGEN_XENA_MODULE2 = ‘3’

TEST_PARAMS = {‘packet_sizes’:’64’}

该配置文件还提供了一个设置对象,用于公开所有这些设置。这些设置不会在组件之间传递,而是当所有组件导入 conf 包后,即可全局访问。

from conf import settings

...

log_file = settings.getValue('LOG_FILE_DEFAULT')

步骤 3:将Teledyne LeCroy Xena 导入您的项目

要使用Teledyne LeCroy Xena (流量生成器),您需要导入以下模块:

from tools.pkt_gen.xena.xena Xena

from tools.pkt_gen.trafficgen.trafficgenhelper import TRAFFIC_DEFAULTS

Xena 提供了以下 API:

1: [XENA.send_rfc2544_throughput],

2: [XENA.start_rfc2544_throughput,

[XENA.wait_rfc2544_throughput],

3: [XENA.send_burst_traffic],

4: [XENA.send_cont_traffic],

5: [XENA.start_cont_traffic,XENA.stop_cont_traffic],

6: [XENA.send_rfc2544_back2back],

7: [XENA.start_rfc2544_back2back,

[XENA.wait_rfc2544_back2back],

第 4 步:执行测试或自行构建

现在,您可以在根目录下执行 xenatest.py 来尝试运行测试。您还可以使用 XenaDrive 和Xena 编写自己的脚本。

使用 Xena2544 图形用户界面

以下各节将通过一个示例配置,介绍如何使用 Xena2544 执行 VSPerf 测试。在开始配置Teledyne LeCroy Xena RFC 2544 吞吐量测试之前,请确保您已安装用于测试的虚拟交换机,并已对其进行正确配置。

步骤 1:选择模块和端口。

选择连接到被测设备(DUT)的两个端口。您可以立即预留这些端口,或者由应用程序在测试开始时释放其他用户占用的选定端口并为您预留。图 6 展示了一个为测试选择两个端口的示例。建议始终确认连接到被测设备(vSwitch)的两个端口显示为绿色。如果不是,则需要检查连接问题。

Xena2544
图 6. 选择测试模块卡和端口。

步骤 2:定义测试拓扑和帧内容

如下图 7 所示,在窗口右侧,您可以选择多个面板。请转到“测试配置”面板。

“测试配置”面板包含用于控制测试执行的属性。这些属性分为以下子面板:

  • “拓扑与帧内容”面板用于控制测试流量的拓扑结构和方向,以及生成的测试帧的内容。
  • “测试执行控制”面板用于控制整体测试属性,无论测试类型如何。
  • “测试类型配置”面板用于控制您要执行的测试类型,并允许您为每种测试配置各种属性。

选择“拓扑和帧内容”面板。在“总体测试拓扑”部分,选择“拓扑”“成对”,并选择“方向”为“双向”,以进行双向流量测试。还应测试单向流量,因为仅测试双向流量可能无法发现某些问题。除了流量方向外,还应使用不同大小的数据包对 vSwitch 进行测试,因为数据包大小会极大影响性能。 将帧大小分别设置为 64 和 1500 字节,以检验 vSwitch 在小包和大包条件下的性能。Xena2544 将执行两次测试,分别针对这两种包大小。

图 7. 定义测试拓扑和帧内容。

步骤 3:定义测试执行控制

可在下图 8 所示的“测试执行控制”面板中配置测试执行控制。本示例采用默认配置,即每次试验均启用 MAC 学习模式。基于流的流量生成允许从一个物理端口生成多个数据流,而基于修饰符的生成方式则仅允许生成一个。端口同步功能允许端口同时向 vSwitch 发送流量。否则,端口将各自按照自己的节奏单独发送流量。

图 8. 定义测试执行控制

第 4 步:配置测试类型

RFC 2544 测试套件包含四项测试:吞吐量、延迟与抖动、帧丢失率以及背靠背测试。请选择“吞吐量测试”进行 测试。吞吐量测试用于测量被测设备(DUT)在不丢弃任何发送帧时的最大传输速率。在第 2 步中,可使用不同大小的帧来执行该测试。

图 9. 将测试类型配置为吞吐量测试

步骤 5:分配端口组和端口对

如图 10 所示,转到“已选端口”面板。将第一个端口分配给“东”组,另一个端口分配给“西”组。然后,为每个端口分配一个对等端口。在下图 10 所示的示例中,端口 0 属于“西”组,其对等端口 1 属于“东”组。之后,选择“协议段配置文件”。本示例中使用了以太网报头配置文件。

图 10. 分配端口组和端口对

第 6 步:编辑分段标头配置文件

如图 11 所示,请转到“协议分段配置文件” 面板,查看 您在第 5 步中选择的协议分段配置文件。用户计数显示有两个端口正在使用该配置文件。您还可以编辑或创建分段头配置文件。

图 11. 编辑/创建路段标头剖面

第 7 步:配置多流

如图 12 所示,转到“多流配置”面板。启用“多流”选项。为每个端口创建 32 个数据流。示例如图 12 所示。这 32 个数据流均从同一物理端口生成,具有不同的源和目标 MAC 地址,并传输至另一个端口,反之亦然。由于流量是双向的,因此数据流的总数为 64 个。

图 12. 配置多流

第 8 步:执行测试并生成报告

保存您的配置。Xena2544 配置文件的扩展名为v2544。如果您希望以自动化方式执行测试,此配置文件至关重要,相关内容将在下一节中进行说明和演示。

如图 13 所示,您可以选择 Xena2544 来生成不同类型的报告,例如 PDF、XML 或 CSV。如果您希望对测试结果进行一些后处理自动化操作,选择 XML 或 CSV 格式会非常有用。

点击“开始”按钮,测试即会开始运行。如前所述,如果您尚未预留端口,Xena2544 会为您测试预留这些端口。

图 13. 选择报表格式

使用 Xena2544 命令

除了使用 Xena2544 图形用户界面 (GUI) 来配置和运行测试外Teledyne LeCroy Xena 出色的命令行界面,用于执行预配置的测试。借助此功能,您可以使用自定义脚本实现测试流程的自动化。

步骤 1:查找您的 V2544 配置文件

找到您之前保存的 v2544 文件。您可以点击“浏览Teledyne LeCroy Xena 目录”(如图 14 所示)来找到该文件。

示例中的文件路径是:

C:\Users\me\Documents\Xena\Xena2544-2G\VSPerf-RFC2544.v2544

并在以下各节中均以此称呼。

图 14. 查找您的 v2544 配置文件

步骤 2:从命令行执行测试

进入命令行目录 C:\Program Files (x86)\Xena \L2-3\L23Tools,如图 15 所示。在此目录中,Xena2544.exe 就是我们将要执行的命令,用于运行 v2544 文件中配置的测试。如图 15 所示,该命令提供了一些可用选项。

图 15. 查找您的 Xena2544 命令目录

在当前目录下运行图 16 所示的命令以执行测试。

Xena2544.exe -c -e 或

Xena2544.exe –config –execute

图 16. 使用Valkyrie2544 执行测试

使用Teledyne LeCroy Xena在Red Hat上获得的VSPerf测试结果

作为 OPNFV 的成员之一,Red Hat 正在使用Teledyne LeCroy Xena VSPerfXena 。以下是 PHY2PHY_TPUT 的测试报告。如需了解 VSPerf 所使用的不同测试 ID,请阅读Teledyne LeCroy Xena白皮书《虚拟交换机性能基准测试》。

测试 ID:PHY2PHY_TPUT

————————–

测试环境

~~~~~~~~~~~~~~~~

以下是进行测试的环境:

* 操作系统:Red Hat 7.3 Maipo

* 内核版本:3.10.0-470.el7.x86_64

* 网卡:

* 英特尔公司 10G 以太网 2 端口 X520 适配器(修订版 01)

* 英特尔公司 10G 以太网 2 端口 X520 适配器(修订版 01)

* 主板:戴尔公司 0599V5 [2 个插槽]

* CPU:Intel(R) Xeon(R) CPU E5-2637 v3 @ 3.50GHz

* CPU 核心数:16

* 内存:65759124 kB

* 虚拟交换机配置:点对点

* vswitchperf:GIT 标签:07bab38905cf10cad6987bb9c5b302bbff2c6013

* 流量生成器:XXena,版本:Xena2544 v2.43,GIT 标签:无

* vSwitch:OvsDpdkVhost,版本:无,GIT 标签:无

* DPDK 版本:2.2.0,GIT 标签:无

以下是测试详情:

* 测试 ID:phy2phy_tput

* 描述:LTD.吞吐量.RFC2544.丢包率

* 部署:点对点

* 流量类型:rfc2544

* 双向:True

数据包大小测试结果:64

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

主要结果的详细概述如下。

收集到的结果/指标

^^^^^^^^^^^^^^^^^^^^^^^^^

以下是本次测试中获得的指标:

========================== ==================================

指标 结果

========================== ==================================

throughput_rx_fps 23115618.5733333

接收吞吐量(Mbps) 15533.695681279998

接收吞吐量百分比 77.1484375

tx_rate_fps 23115618.5733333

tx_rate_mbps 15533.69568128

tx_rate_percent 77.1484375

min_latency_ns 4487.0

max_latency_ns 51071.0

平均延迟(纳秒) 8352.0

类型 rfc2544

数据包大小 64

流量类型 UDP

测试执行时间 01:33:30

========================== ==================================

已收集的统计数据

^^^^^^^^^^^^^^^^^^^^

在测试用例执行期间收集到了以下系统统计信息:

========================== ==================================

进程:ovs-vswitchd

————————————————————-

统计量 值

========================== ==================================

UID 0

PID 6870

%usr 100.00

%system 2.01

%guest 0.00

%CPU 100.00

CPU –

minflt/s 25.24

majflt/s 0.00

VSZ 3292824

RSS 30509

%MEM 0.05

kB/s 0.00

kB/s 0.00

kB·°C·W·s 0.00

========================== ==================================

========================== ==================================

进程:ovsdb-server

————————————————————-

统计量 值

========================== ==================================

UID 0

PID 6863

%usr 0.01

%system 0.00

%guest 0.00

%CPU 0.01

CPU –

minflt/s 0.00

majflt/s 0.00

VSZ 43728

RSS 3260

%MEM 0.00

kB/s 0.00

kB/s 0.00

kB·°C·W·s 0.00

========================== ==================================

数据包大小测试结果:1500

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

主要结果的详细概述如下。

收集到的结果/指标

^^^^^^^^^^^^^^^^^^^^^^^^^

以下是本次测试中获得的指标:

========================== ==================================

指标 结果

========================== ==================================

throughput_rx_fps 1644717.9500000002

接收吞吐量(Mbps) 19999.770272

接收吞吐量百分比 99.99890255943811

tx_rate_fps 1644736

tx_rate_mbps 19999.98976

tx_rate_percent 100

min_latency_ns 8135.0

max_latency_ns 2584233.0

平均延迟(纳秒) 2018627.0

类型 rfc2544

数据包大小 1500

流量类型 UDP

测试执行时间 01:33:30

========================== ==================================

已收集的统计数据

^^^^^^^^^^^^^^^^^^^^

在测试用例执行期间收集到了以下系统统计信息:

========================== ==================================

进程:ovs-vswitchd

————————————————————-

统计量 值

========================== ==================================

UID 0

PID 6870

%usr 100.00

%system 2.01

%guest 0.00

%CPU 100.00

CPU –

minflt/s 25.24

majflt/s 0.00

VSZ 3292824

RSS 30509

%MEM 0.05

kB/s 0.00

kB/s 0.00

kB·°C·W·s 0.00

========================== ==================================

========================== ==================================

进程:ovsdb-server

————————————————————-

统计量 值

========================== ==================================

UID 0

PID 6863

%usr 0.01

%system 0.00

%guest 0.00

%CPU 0.01

CPU –

minflt/s 0.00

majflt/s 0.00

VSZ 43728

RSS 3260

%MEM 0.00

kB/s 0.00

kB/s 0.00

kB·°C·W·s 0.00

========================== ==================================

异常现象

~~~~~~~~~~

在本次测试过程中未发现任何异常。

测试活动/事件

~~~~~~~~~~~~~~~~~~~~~~~~~

pidstat 用于收集进程统计信息,因此某些值(如 %CPU 和 %USER)可能会超过 100%,因为这些值是跨多个核心求和得出的。有关 pidstat 的更多信息,请参阅:http://linux.die.net/man/1/pidstat

已知问题:部分报告的指标显示为“未知”。这些值被标记为未知,是因为它们并非从外部测试器(流量生成器)获取的数值。它们是通过基于数据包大小的假设错误推导出来的,因此已在 vsperf 中被废弃并标记为未知。该问题将在下一个版本中得到解决。

.. 周围必须留有空行,以确保格式正确。

 

 

 

试用我们的Live Demo

您知道吗?现在就可以试用Xena 实时体验!您只需一台电脑(最低运行 Windows XP 系统)。开始使用,只需访问:https://xenanetworks.com/try-demo/

访问我们的网站了解更多信息

请访问我们网站上的以下页面,了解有关本应用说明中提及的产品的更多信息:

价格信息

如需了解价格详情,请联系xena

预约咨询

立即预约与Xena 进行简短通话,了解Xena 平台是否能满足您的需求:https://xenanetworks.com/discovery-call-booking/

[1]https://wiki.opnfv.org/display/vsperf/VSperf+Home