不给糖,给流量测试宝典!

文章导览

流量测试宝典之概要

DPDK 运行环境以及版本需求

用 Testpmd 做性能测试的拓扑设置示例

编译和运行

Iperf3 工具

听说万圣节死人会复活,来到人间抓小孩。

数据中心最近也是时常闹鬼,不是宕机就是服务器崩溃啥的。易小扬还只是一个纯真无辜的少年啊,想到这里也是心有戚戚焉。哦,那数据中心运维的哥哥姐姐们的日常是怎么样的呢?莫非是他们练就了什么金刚不坏的武林秘籍吗?

易小扬决定去自动化测试部门拜师学艺。学啥呢?易筋经还是太难了点,只好向老师求教了一套“流量测试宝典”。

流量测试宝典之概要

本宝典介绍如何用Testpmd在Linux环境下进行数据收发包流量测试,用实际代码演示操作过程以及测试上的一些功能指令的说明,并对比iperf3 工具的测试情况。

我们以测试易飞扬25G SFP28 AOC线缆为示例讲解Testpmd的安装过程和测试以太网端口之间的转发数据包的一个流量情况。通常,如果有专用的流量设备仪器,可以直接借助流量设备仪器进行数据流量包的测试,但如果在没有购买流量设备仪的情况下,也可以借助于网络上公开的相关工具进行一个模拟测试。

DPDK 运行环境以及版本需求

目前,我们选用了Intel推出的数据平面开发组件DPDK自带的一个测试工具Testpmd,可以看作是一个数据包分发的应用APP。在运用Testpmd之前需要在其DPDK官网上https://core.dpdk.org下载所需要安装的版本进行安装,本文,我们选用的版本是安装在Centos7.2系统上的DPDK 17.08.2。

DPDK所需要的OS系统为Linux系统,对于Linux的内核都有一定的要求。所有操作在Linux环境下进行。

用 Testpmd 做性能测试的拓扑设置示例

用Testpmd做性能测试的拓扑搭建一般可以分以下两大类:

一类是通过服务器NIC(Network Interface Card)卡与设备流量发生器搭建测试拓扑;

另一类是没有设备流量发生器的情况下,通过服务器NIC卡搭建环回拓扑测试。

目前,我们在没有购买设备流量仪器的情况下,测试相关光模块产品的收发包性能只能用NIC卡搭建回环拓扑进行测试。

在不使用流量设备仪的情况下,Testpmd应用程序把两个以太网端口连成环回模式,可以在一个服务器上插入两张NIC卡,各使用NIC卡的一个端口将DUT进行回环,也可以使用一张NIC卡的两个端口将DUT回环,还可以使用交换机进行桥连。这样用户可以在没有外部流量发生器的情况下检查网络设备的接收和传输功能。我们购买的是Intel XXV710-DA2的25G的以太网板卡,可传输的速率为1GbE/10GbE/25GbE。

Testpmd提供了CLI的人机交互模式,在运行Testpmd的时候,可以使用CLI对被测设备进行相应的配置。在进入DPDK的Testpmd的app后,配置如下命令进行Testpmd的启动,具体命令详解可参考DPDK官网对Testpmd的说明。

编译和运行

以下操作将以易飞扬SFP28 AOC为测试对象,详细讲解测试步骤:

操作步骤①

首先需要搭建如下图的测试环境,也可以选择两张板卡进行连接测试,通过DPDK的绑定端口的指令进行25G Intel XXV710-DA2的两个port进行绑定到DPDK应用上,只有被绑定后的NIC的port才可以进行相应的测试。

操作步骤②

将测试环境搭建好后,需要运行相应指令进入testpmd应用程序,进入到DPDK 17.08.2安装成功的app文件后,运行testpmd指令即可进入testpmd应用程序中,指令中的各个参数可以自行按照需要进行测试。

比如-i表示的是运行在交互模式下,--txd选项指设置Tx环中描述符的数目,--rxd选项指设置Rx环中描述符的数目,--max-pkt-len选项指设置最大包的大小等等需要了解更多参数含义的可自行参考官网说明并进行调整设置。

操作步骤③

当看到“testpmd>”后就表明程序已经进入了testpmd应用,此时可以使用testpmd的开始命令进行数据包的转发,可以用start或者start tx_first命令,同时会将端口流的信息详细的显示出来:

在数据包进行转发的时候,如果要检查端口之间是否有包正在转发,转发的情况如何,吞吐量如何,可以执行show port stats all命令来显示应用程序正在使用的所有端口的统计信息,也可以只执行显示单个端口的统计信息的命令。

此输出显示了Testpmd在运行后开始转发后的数据包的数量以及一个错误包的统计,包含了端口接收和发送的数据包数。吞吐率是以数据包每秒pps来显示的。在易飞扬SFP28 AOC的测试中,所有端口上接收到的包都以理论线速59.37Mpps往外转发。线速是指给定数据包大小和网络接口的最大速度。

操作步骤④

如果需要停止测试,则只需输入stop命令,Testpmd应用程序就会停止转发并给出端口的累计统计数据收发包情况以及一个总的概要。

以上就是测试易飞扬SFP28 AOC的数据包流量转发的一个完整的过程,通过测试结果,可以得出:我们在服务器板卡上进行数据包的转发中并没有数据包丢失。

Iperf3 工具

再简单介绍下iperf3工具,Iperf3通过服务端和客户端用于测试TCP带宽和UDP时延、丢包等,通过设置不同的指令参数来实现。

通过ESnet给出的100G的测试报告,对于搭建拓扑有很多种,且对于Iperf3的工具对于越高带宽的测试,需要的测试环境的配置要求很高,比如对应服务器和OS系统的要求等,CPU在“powersaver”和“performance”性能下,测试结果都会不一样的。

例如ESnet100G测试报告中提到CPU性能调节器设置不同的模式结果是不一样的,在“powersave”模式下可以到达57Gbps,将CPU性能调节器调节到“performance”模式下后可以达到79Gbps。

目前,能应用的Iperf3测试拓扑结构如下所示,用两台服务器和两张板卡上的端口接入光模块,一个服务器作为服务端,另一个则作为接收端进行数据流量测试。Iperf3使用-s表示服务端,-c表示客户端,服务端很客户端有一些通用的参数设置,还有各个单独的参数配置,具体参数设置和含义可参考官网介绍说明。

按照上述拓扑结构进行搭建后,对25G SFP28 AOC进行TCP带宽测试,结果如下表中所示,做测试之前需要将服务器设置为“performance”性能模式,并进行多次验证出一个最优的传输数据的窗口大小以及多线程的大小。在服务器端运行# iperf3 -s命令,启动iperf测试,在客户端运行# iperf3 -c serverIP -i 1 命令进行吞吐率的测试,其中 serverIP是指服务器的IP地址,客户端的命令可以再添加其他功能参数进行相应测试,具体参数含义和使用方法可以参照官网了解。

从测试数据可以看到测试25G的带宽在3线程同时进行的情况下,最大能达到22Gbit/s。Iperf3在完成测试后会给出一个统计结果,在所设定的时间内传输多少的数据量,以字节为单位显示的,如以下测试我司的25G AOC中在10s内以22Gbit/s的速率传输了25.6GBytes的数据,而testpmd是直接按照设备数据包的大小来进行流量测量的,最终显示的是一个接收端和发送端所传输的数据包的数量。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031G1LTCH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券