基于DPDK的流量测试平台设计

2020-06-29 07:16朱星宇张倩武曹炳尧
微型电脑应用 2020年5期
关键词:高性能

朱星宇 张倩武 曹炳尧

摘 要:随着网络需求的不断发展,网络中的用户越来越多,对于网络的需求也越来越重度。对于服务商来说,保障大用户规模下的网络服务质量和稳定性显得格外重要,需要一个高性能的流量测试平台,能够模拟大规模用户的访问请求,并且能够高效率的解析模拟流量,以此便可以测试自己本身平台的服务质量和应对高并发的能力。针对这种测试需求,设计了一个基于DPDK的流量测试平台,能够实现大规模网络数据流量的发送,高性能的解析,并且将解析后流量数据收入进数据库,进行后续的分析。

关键词:流量测试;DPDK;高性能;数据解析

Abstract:With the continuous development of network requirements, the network contains more and more users, and the demand for the network is growing rapidly. For service providers, it is particularly important to ensure the quality and stability of network services under the scale of large users. A high-performance traffic test platform is needed to simulate large-scale user access requests and to efficiently analyze analog traffic. This allows you to test the quality of your own platform and the ability to cope with high concurrency. This platform is designed for this test demand. We designed a DPDK-based traffic test platform, which can achieve large-scale network data traffic transmission, high-performance analysis, and the parsed traffic data into the database for subsequent detailed analysis.

Key words:traffic test;DPDK;high-performance;data analysis

0 引言

隨着互联网的飞速发展,互联网每日的活跃流量正在飞速增长着,其中包括了使用用户和使用场景的不断增加,自然而然,使用者对于网络服务的要求和标准也在不断提升。为了保证网络的顺畅,提供高质量的服务,流量测试环节自然是重中之重,好的测试方案可以通过数据比对,找到系统服务的缺陷和不足之处,保障服务的质量和稳定。

针对企业级服务器的测试平台方案就显得至关重要。测试平台首先性能要好,可以模拟超大规模用户的使用场景,其次是要应用性强,可以灵活搭建测试场景,满足测试需求。最后是要价格合理,叠加硬件和软件模块分开售卖是目前测试仪器厂家普遍使用的营销手段,为达到合适效果,企业往往付出相当高的成本,而且实际测试仪性能和功能都会产生冗余[1]。 所以本文设计了一个能发挥高性能的高性价比的流量测试平台。

1 测试平台设计

本项目也是基于DPDK套件的二次开发应用,以DPDK的框架为核心,将本身的测试需求和大数据库和数据分析平台相结合,建立一个可以多处应用和自定义数据分析的相对价格低性能高的流量测试平台,如图1所示。

本平台用建立在服务器的Linux系统上,在输入方面采用Pktgen作为高性能发包工具,或者是自定义的流量回放作为输入,DPDK进行解析,并且将关键数据的解析结果实时计算显示到输出。最后将解析后的流量数据转发至Elasticsearch数据库(ES库)进行管理和后续操作。

1.1 基于DPDK的网络流量解析

DPDK(Data Plane Development Kit)是一个在数据平面应用中为快速的数据包处理提供一个高效而完善的架构,对比于传统的内核控制进行的网络数据处理,对从内核层到用户层的网络数据流程进行了重大突破,同时发挥硬件最大性能,从而提高网络数据流量处理效率和性能[2]。

DPDK解决方案需要在英特尔处理器的支持下,结合英特尔和其他公司的硬件,重新改写其驱动程序。由于英特尔公司在服务器硬件平台的强大产品生态,使得它不需要同Linux系统那样,以通用性设计为目的。

传统的基于OS内核的数据传输解析过程,如图2所示。

在目前的高性能需求下显现出一些弊端。首先是CPU的中断机制在处理大量数据包到来时,会产生频繁的高优先级的硬件中断请求,打断之前较低优先级的软中断或者系统调用的执行过程,将会产生较高的性能开销。其次,频繁被打断切换进程,也会产生大量的进程上下文的切换开销。锁竞争的损耗也是不容忽视的一大开销。包括包文的内容在内存中不断被一层一层的拷贝到用户态,非常耗时。同时,内存的分页大小仅为4 KB,不能满足高流量下的映射需求。

综上所述,可以看出内核本身就是一个非常大的瓶颈所在。很明显解决方案就是想办法绕过内核。DPDK就是绕过了Linux内核协议栈对数据包的处理过程,在用户空间实现了一套数据平面来进行数据包的收发与处理。在内核看来,DPDK就是一个普通的用户态进程,它的编译、连接和加载方式和普通程序没有什么两样。

DPDK可以绕过内核协议栈,直接控制硬件来处理,最根本的原因在于UIO技术。通过UIO能够拦截中断,并且重设中断回调行为,使之可以绕过内核协议栈后续的处理流程,如图3所示。

UIO设备的实现机制其实是对用户空间暴露文件接口,当注册一个UIO的设备uioX,就会出现文件/dev/uioX,对该文件的读写就是对设备内存的读写。除此之外,对设备的控制还可以通过/sys/class/uio目录下的各个文件的读写来完成。

同时,为了解决内核處理中所述的弊端,DPDK也在这几个方面进行了着重的改进[3]。

(1) CPU亲和性:DPDK首先将CPU的工作方式由中断模式改为轮询模式,同时利用CPU的亲和性将一个线程或多个线程绑定到一个或多个CPU上,这样在线程执行过程中,CPU只负责被绑定的线程而不参与服务器本身其他功能的控制和计算,也就不会被随意调度和分配,一方面减少了线程间的频繁切换带来的开销,另一方面避免了CPU缓存的局部失效性,增加了 CPU缓存的命中率。

(2) 内存池技术:在用户空间上实现了一套精巧的内存池技术,内核空间和用户空间的内存交互并不进行二次拷贝,只做控制权转移。因此,当收发数据包时,就省去了内存拷贝迁移的开销。

(3) 大页内存管理:DPDK将内存分页从4 KB变成2 MB,实现了一套大页使用和释放的API,上层应用可以很方便使用API申请使用大页内存,同时也兼容普通的内存申请。

(4) NUMA:非统一内存访问,根据/proc提供的内存物理信息,使CPU核心尽量使用靠近其所在节点的内存,不跨CPU节点去调用内存,避免了跨NUMA节点远程访问内存的性能问题。

(5) 多核调度框架:DPDK是基于多核架构,通常来说有主从核之分,可以设定。主核来负责完成各个模块的初始化,从核则负责具体的业务处理,如图4所示。

使用DPDK可以处理器核心数量,主频频率和机器缓存有限的情况下,尽可能的发挥硬件的性能,极大的提升在解析方面的效率,创造一个容量和速率更大的测试环境。

DPDK的部署需要配置环境变量

同时识别服务器上的千兆万兆网口,并从Linux的OS内核中解除占用,如图5所示。

1.2 Pktgen发包工具

Pktgen是一个位于Linux内核层的高性能网络测试工具,主要用来测试网络驱动与网卡设备,支持多线程,能够产生随机MAC地址、IP地址、UDP端口号的数据包[4]。

目前常见的服务器平台的发包工具,由于其本身的技术依然是建立在Linux系统内核之上的,所以依旧存在性能上的瓶颈。在指定网口发包的时候,对于网络数据包的长度十分敏感。若是以64字节长度的包来进行流量回放发送,则会因为包上下切换开销太大,甚至无法在千兆网口满速发送。

而随着发送数据包长度变长,包切换的开销变小,发包速度会慢慢上升至千兆网口满速,但是仍然无法达到万兆网口的速度标准。且在发包过程中CPU长时间处于极高的使用负荷状态,发送包的效率依然不足以支撑服务器平台的测试需求。

Pktgen优势在于使用和DPDK相同的技术架构和框架,也可以通过指定某几个CPU处理器在不同的PCI总线和选定的千兆和万兆以太网卡绑定。Pktgen的表现当然也会依赖于CPU处理速率、内存延时、PCI总线速率等硬件参数,但是由于更有效率的技术架构和CPU绑定规则,其发送数据速率能够一直维持在相当高速率,甚至可以大于10 GBit/s。可见是可以满足大多数的服务器级别的网卡的测试需求。

而和其他硬件的发包测试仪相比,服务器本身的强大硬件性能就胜过市面上大部分的中端测试器本身硬件性能。而构架方面的优势更能够发挥服务器的硬件性能,使得Pktgen的发包性能比拟中高端的测试仪器的发包性能,同时大幅度减少支出开销。

由于Pktgen是基于DPDK框架,其安装使用在DPDK部署后,只需将从Linux内核解绑的网口按需绑定,DPDK的Igb_uio驱动。设置大页,CPU和网口的控制关系后即可。

1.3 ELK大数据平台

测试平台本身的发送解析性能是一个方面,而对于测试数据本身的关注则是另外一方面。在测试过程中开发者可能只专注于一个或者两个的重点性能数据指标,而网络流其他的数据则被忽略。

通过在后端添加一个数据库,使得所有网络流量在最终解析完成后,所有的参数都能变成索引标签入库,能够保存完整的整个测试的所有数据信息。方便进行测试的回溯,查看更多更全面的测试数据[5]。同时根据参数索引入库,能够方便的进行查找和筛选数据,有助于数据分析。两个结合,能够更好的了解测试性能,挖掘到一些被忽略的问题,如图6所示。

平台采用Elasticserach&Logstash&Kibana的大数据平台。Elasticsearch作为数据库收录解析后的流量数据,Logstash为数据收集管道,Kibana则为数据查询和聚合的前端,以WEB形式呈现。三者结合,便可以实现数据定向收集,快速存储,索引检索,可视化分析。

部署ELK平台,设定ES库为本机IP,开机自启动服务。配置Logstash,使其以Netflow V5的格式[6]解析接收DPDK解析的数据,转发至本机的ES库中,并且建立以日期为分隔的索引,并且转发至ES库,如图7所示。

2 平台测试

2.1 发包测试

在搭建完成后,以此启动DPDK,Pktgen,和ELK平台。开始测试,本次测试平台模拟普通中端测试仪性能,硬件参数如表1所示。

针对平台进行各项测试,采用是功能性测试和性能测试,验证设计功能是否一一达到设计要求,以白盒测试为主要测试方法。

发包性能测试,首先进行Pktgen工具的发包性能测试,编译DPDK运行Pktgen,设定CPU一物理核只绑定单一网口,大页为1 024*2M。发送报文最小包为64字节包长,之后每次测试递增,逐渐递增至1 448字节包长。每次测试时间均维持30分钟,取稳定平均速率。测试数据如表2所示。

可以看到,64字节包长度情况下,是包文开销比较大,理论性能比较低的情况,依然做到了几乎满足率的发包,速率为9 989 MB/s,并且十分稳定,速录没有起伏,达到了理论性能的99.3%。而随着包长度的不断增大,包处理开销的不断减少,可以做到满速率发送。说明单个CPU承载单个网口的收发任务是游刃有余的。

所以为提高利用率,增加CPU负荷,测试一核绑定多网口时的发包效率。我们将CPU绑定同一个PCI-e总线上的多个网口。根据目前PCI-e总线的数据规格,服务器普遍使用的主流PCI-e 2.0 x8上至多有4个万兆网口,如图8所示。

从图8中可以看出,当多个网口绑定使用同一个CPU同时进行高速发包时,因为CPU性能和负载有上限,势必会产生影响,从而使得每个网口的发送速率比单个网口发送的速率产生下降。不同包长情况下,包处理开销不同,影响也不同。

由测试数据可知,两个网口同时绑定一个CPU的情况是比较理想的,速度下降十分微小,基本与之前的测试速率维持在同一水平线,同时对于CPU的使用效率比较高,适合单一场景的高性能发包测试[7]。

2.2 解析转发测试

若使用已有的流量,进行网络流量镜像回放,那DPDK的解析性能也十分关键。于是进行3层转发吞吐量测试。包长从64字节到1 448字节。测试数据如表3所示。

可以看到在解析方面的性能十分优秀。64字节有着百分之90的速率,而从128字节开始就能稳定保持几乎满速率的解析和转发。满足进行流量回放的测试性能要求。

2.3 ELK入库功能测试

而经过解析的网络流量,也已经通过多个线程支持的Logstash管道收入进ES库中,通过Kibana的Web前端进行查看,如图9所示。

流量經过解析并且被依照解析的字段标签建立索引,可依照索引查看数据。录入格式选择Netflow V5的流量格式,含有的信息比较多。

3 总结

本文提出了一个基于DPDK架构的流量测试平台。从上述的测试结果和数据来看,这个平台给予了服务器级别网络流量测试的一种新的可能性,性能测试达到设计预期水平,功能性上也给予了性能测试,流量回放,流量解析,数据分析这个方面。

同时由于直接可以搭建在服务器平台上,在使用服务器极高的硬件性能的同时,顾不需要额外的高费用去购买测试仪和测试软件,省去了大笔研究成本和时间开销[8]。

并且基于最广为使用的英特尔硬件改写的驱动,也保障了其能够更好的发挥硬件的高性能和软件的高效率,使得性能测试的硬件门槛进一步的下降。

本平台效果达到设计预期,同时也容易推广,方便以后扩展测试场景使用。

参考文献

[1] 窦长江,王宇.流量分析仪在网络测试中的应用.国外电子测量技术,2001(3):34-36.

[2] 朱河清,梁存铭,胡雪. 深入浅出DPDK[M]. 北京:机械工业出版社,2016.

[3] 赵宁, 谢淑翠. 基于DPDK的高效数据包捕获技术分析与应用[J].计算机工程与科学,2016,38(11):2209-2215.

[4] Li G, Zhang D, Li Y, et al. Toward energy-efficiency optimization of pktgen-DPDK for green network testbeds[J]. China Communications, 2018, 15(11):199-207.

[5] Yang S, Zhang X, Xi L, et al. The network test tools based on SDN[J]. Chinese Optics Letters,2014,121s 25-2.

[6] 陈亮,龚俭.基于NetFlow记录的高速应用流量分类方法[J].通信学报,2012,33(1):145-152.

[7] 唐宏,柴桌原,任平,等.DPDK应用基础[J].电信科学,2017(S1):268.

[8] 张棣兴.下一代网络业务流量识别与控制的研究[J].电信网技术,2006(11):12-15.

(收稿日期:2019.09.22)

猜你喜欢
高性能
高性能沥青混凝土路面施工质量控制与管理
Polestar 2
面向反应堆设计的高性能计算中心建设及应用
高性能混凝土不同配合比下的性能研究
电脑报自营店国庆特惠购
中复神鹰西宁公司年产2万吨高性能碳纤维项目正式动工
高性能混凝土开裂成因及控制要点
《2018年中国高性能计算机TOP100排行榜》发布
中国E级高性能计算机原型系统正式进入研制阶段
2500亿次 个人高性能计算机成功应用