本人目前就职于烽火集成,从事云计算产品架构设计相关工作,长期专注于内核、虚拟化、分布式、云计算等方向。
技术交流请联系:xiaoding@fiberhome.com
前言
最近在做NFV相关的优化工作。在进行优化过程中需要对优化结果进行实时测试,以来确定优化手段是否有效果。由于公司并没有专业的发包机。而传统的netperf/iperf在10G场景下,64的小包很难发到限速。所以转而寻找其他工具来进行代替。刚好遇到了DPDK-Pktgen这个工具,完美的解决了我遇到的问题。
DPDK-Pktgen的安装
DPDK-Pktgen其实就是DPDK的一个应用,它类似于linux原生的pktgen,通过自己构造数据包,然后发送。而DPDK-Pktgen做的更强大,他可以通过用lua脚本或者json编辑自己的测试过程,同时输出自己关心的数据,比如发送,接收的数据包数量,流量带宽等等。
这里先简单介绍下安装DPDK-Pktgen
DPDK-Pktgen的安装和DPDK的其他应用其实是一样的。
首先需要安装DPDK。这个就不在赘述了。
然后
这样就编译完成了,在目录app/build/pktgen 就是编译出来的程序。
DPDK-Pktgen的使用
DPDK-Pktgen可以自己定义数据包的发送方式
下面就是使用的一个实例,
这里对于数据包的发送就是在set_seq.lua中进行描述的。
可以看到lua文件中就是描述了 要如何发送数据包,包括IP,mac,协议等等。其实就是对pktgen的命令进行了一系列编排。
RFC2544
在我们的工作中,主要是测试虚拟机中的转发性能。测试模型如下:
这里标准的发包机中都有一个rfc2544的测试套,他就是专门来进行这种转发模型的测试。
DPDK-Pktgen也提供了这个测试方法,在scripts/rfc2544.lua中就定义了这种测试方法。
我们刚好就采用了这一方式来进行测试。
简单描述下rfc2544的测试方式。比如我们测试10G的网络。首先使用64字节的包以5G的带宽进行发送,判断发送的包-接收到的包,如果丢包率超过我们设置的值,则带宽减半,使用2.5G的发送。如果丢包率少于我们设置的值,则使用7.5G进行发送来测试。这样使用2分法,最终得到我们在丢包率允许的情况下,我们的带宽。
在使用中直接使用这个文件会有一些问题,所以还是需要根据实际情况进行修改。
下面把这个文件 简答的解释下
测试方式
启动虚拟机,主要是创建如下网卡。这里mac地址和我们rfc2544中配置要对应起来。
在发包机上执行
作者简介
- 肖丁
烽火云计算高级虚拟化设计师,多年从事云计算产品的架构设计、软件开发与技术方案编制等工作。长期专注于内核、虚拟化、云计算、容器、分布式等方向的研究,尤其对KVM和XEN虚拟化等产品有较深研究。