王 伟,黄 海,李军政
(国家数字交换系统工程技术研究中心 河南 郑州450002)
基于DPDK技术的VoIP流量识别研究与实现
王 伟,黄 海,李军政
(国家数字交换系统工程技术研究中心 河南 郑州450002)
作为广泛应用和发展的VoIP技术,其流量识别和有效监控仍然受到各类运营商的关注。针对当前互联网海量流量的网络形式,实现VoIP流量高效识别的目的,本文采用基于DPDK技术的VOIP流量识别方法,将受限于网卡和带宽的传统服务器离散式框架整合至一个扩展性更高且更简单的单个网络流量识别框构。最后通过DPDK平台的VoIP流量识别试验,试验得出DPDK方案以64 byte小包识别率是基于Linux内核的5~10倍,验证了该方案对VoIP流量识别的提升作用。
高速网络;DPDK;VoIP流量识别;识别框架
互联网的迅速发展,使VoIP业务得到迅速推广和广泛应用。研究高速有效的VoIP流量识别技术,提供网络业务管理和应用,当下仍然是运营商关注的焦点。面对大量高速高吞吐量的网络环境,高速有效的数据包处理性能至关重要。在新的网络形势下,基于通用硬件平台的流量识别技术不再满足业务需求。数据包收发过程中,通用服务器和网卡同样面临着严重的性能瓶颈。传统流量识别方案调用内核网络协议栈,导致大量的资源浪费和网络开销。因此新形势下的VoIP流量识别方法需要提出扩展性更高更简单的解决办法。
在X86服务器和多核技术的发展对对数据包性能提升的基础上,文中首先介绍了DPDK技术,随后提出了基于DPDK开源技术的VoIP流量识别方法,旨在当前主流技术的基础上,实现更高性能的VoIP流量识别。最后试验验证了方案对VoIP流量识别的提升能力,为DPDK技术推广提升了新的思路。
当前高速海量的网络形式,网络流量的识别性能,一部分取决于流量识别方法的效率和准确度,一部分取决于来自服务器内部的收发性能。
1.1 主流的VoIP流量识别方法
面对当前的网络环境,数据流量多样化。传统的协议识别方法,例如端口识别,虽然能够达到一定的准确度,但却不适用于识别基于动态端口的数据流量。传统的包流量识别,仅分析网络层包头中的“五元组”,即IP数据包的源地址,目的地址,协议类型,源端口,目的端口,不能够真正实现流量识别[1],有很大的局限性。
DPI(Deep Packet Inspection)技术,在传统包流量识别基础上,增加应用层分析。当数据包、TCP、UDP数据流经过DPI技术的网络设备时,DPI引擎通过深入读取IP数据包载荷的内容来对OSI7层协议中的应用信息进行重组,从而识别出IP包的应用层协议[2]。
针对 DPI进行关键字扫描,由此识别VoIP数据流,可以大大提高数据流识别的效率,也会获得较高的准确率。
1.2 流量识别性能影响因素
本节我们将要对数据转发影响因素进行讨论,分析研究VoIP流量识别性能的优化问题。数据包转发能力是影响流量识别性能的关键因素之一。对当前传统服务器而言,网络流量收发问题是流量识别的主要瓶颈,在通用服务器内部,流量的收发要经过服务器I/O通道(网卡或虚拟网卡)、物理网卡驱动、内核协议栈等多个复杂转发流程[3],通用网卡性能低,另外报文复制,内核上下文切换等一系列问题会占用大量资源。同时造成CPU周期消耗。
因此,提升数据流量识别性能需要从以下几点考虑:
1)减少网卡频繁中断
网卡在接收到报文后,会直接写入内存。面对海量的网络流量,CPU就会长时间处于硬中断状态,无法满足服务需求,因此网卡性能提升关键是要减少中断,减少开销。
2)减少内核协议栈资源占用问题
以Linux系统为例,数据包转发时需要系统调用套接字。系统调用使用的内核协议栈,会产生大量的内核上下文切换及内核与进程间的报文复制。不可避免的造成CPU周期消耗和占用。
综上:提高数据包转发性能是流量识别的关键因素之一,而提升数据包转发功能面临的困难在于如何减少网卡中断,弃用内核协议栈。
针对上述问题,解决网络框架的瓶颈问题至关重要,当前以Intel提出DPDK开源技术提供了解决方法的新思路。
本节我们将对DPDK技术背景及原理进行简要介绍(详细了解请参考文献[4]程序员指南)。
2.1 DPDK技术背景及组成
DPDK正是在这一环境下,DPDK以其出色的快速有效的数据包性能优化能力,以及与通用计算平台的完美契合度,使之成为数据包处理关键技术。同时也成为产业界共同关注的数据平台热点技术。当前针对DPDK开源技术的研究工作已经有了一定的基础。
2.2 DPDK技术原理
DPDK(Data Plane Development Kit,数据平面开发套件)是基于X86平台为数据处理提供低开销和高性能的运行环境。DPDK包含报文快速处理的库和驱动的集合,以此最大限度的提升数据包的处理性能。DPDK技术使用UIO机制使网卡驱动程序运行在用户态,绕开内核网络协议栈,直接从网卡上读取数据,并组织成数据块进行处理。相当于LINUX的设备无关IO接口。采用轮询(PMD,Poll Mode Driver)和零拷贝方式从网卡收取报文,提高收发报文的性能,并且使用Hugepage和CPU affinity机制提高应用程序处理报文的性能[5]。由此可以节约开销,达到提升数据包处理性能的要求。对比前面提到的Linux系统中关于网络流量转发的瓶颈问题[6],DPDK提供了有效的解决方案。
DPDK还包含了优化和高效的库文件,核心模块的一系列库对高性能包处理程序提供了所有必须的接口。
图1为核心模块结构图。
图1 DPDK核心模块结构
DPDK性能非常高,以Intel官方系统测试为例,处理一个包80时钟周期,以一个3.6 GHz的单核双线程至强,64字节小包,纯转发能力是普通Linux内核协议栈的5~10倍[7]。
本节基于对流量识别性能的研究和DPDK开源技术对流量转发性能的优化问题认知的基础上,提出基于DPDK的性能优化框架,并结合部门现有成熟的技术(DPI技术),进一步实现VoIP流量识别模块到DPDK平台的移植,从而提出基于DPDK的VoIP流量识别方案。
3.1 基于DPDK开源技术的性能优化框构
根据上面的分析,我们知道DPDK技术具有更良好、更有效的数据包转发性能。DPDK技术绕开内核网络协议栈[8],直接从网卡上读取数据,并组织成数据块进行处理。由此进行DPDK平台的搭建[9]。
如图2所示,系统基于DPDK优越的数据包转化性能,旁路内核协议栈,减少开销和网卡中断、内核复制[10],进一步提高数据包转发的效率和准确性。为此本文提出基于X86服务器的串行网络框架[11]。
图2 基于DPDK的流量识别框架
基于DPDK平台的数据收发过程如图3所示:
图3 数据收发过程图
I/O RX core以轮询的方式从网卡收包,将数据报文放入内存。然后以轮询的方式从Worker core的TX队列中对要发送的报文进行接收,再通过网卡将数据发出[12]。随后对数据包进行解包,解析出源IP、目的IP地址、源端口、目的端口等信息。
3.2 基于DPDK平台的数据识别方案
前面已经提到在新的网络框架上加载 DPDK模块及VoIP流量识别模块。就可以实现对数据包的高效转发和识别。结合部门现有的VoIP流量识别技术,能够实现数据包的高效识别。
如图4所示,为VoIP流量识别方法的移植方案。
图4 基于DPDK平台的数据识别方案
下面进行基于DPDK技术的VoIP流量识别实验。实验目的是在DPDK技术和传统情况的VoIP流量识别性能比较为了实验结果的清晰性[13],不考虑多核环境,只在单机条件下进行实验。
实现的系统平台为Linux Ubuntu2015,在虚拟机上面装有DPDK版本2.1.0,并虚拟两个1 000 M网卡,利用DPDK对数据包的处理调用VoIP流量识别模块来完成识别实验[14]。实验通过以下步骤进行:
实验进行Linux内核与DPDK版本2.1.0的数据包识别性能的对比 ,主要比较识别流量基于DPDK平台和基于Linux内核的传统方法与实际VoIP流量的接近程度。
实现过程:首先Linux系统利用Libpacp工具获取网络中的数据包[15],在加载DPDK模块后,API调用VoIP流量识别程序,实验比较两种识别方案。
实验结果如图5所示。
实验结果:以10 Gbit/s高速率发送数据包时,基于Linux内核协议栈和基于DPDK技术的识别方案差别很大,基于DPDK方案以64 byte小包来看识别率是基于Linux内核的5~10倍。如图5所示,基于DPDK的流量识别方案较Linux内核方案有了很大提升。
图5 两种方案对比图
文中结合当前的网络形式,针对通用服务器和网卡的性能瓶颈,文中介绍了DPDK开源方法对数据包转发的性能提升作用。在DPDK技术的基础上,利用部门成熟的流量识别技术,提出一个扩展性更高更简单的系统框架,实现了VoIP流量的高效识别。最后通过对比实验,验证了基于DPDK开源方法流量识别方案的高效性。
[1]毕夏安,张大方,谢鲲,等.基于H.323协议的VoIP语音流量识别[J].计算机应用,2008,28(9):2204-2206.
[2]张婧婧,陈福文.互联网流量分析技术及部署方案[J].移动通信,2013(19):71-75.
[3]唐宏,欧亮.网络功能虚拟化中的网络转发性能优化技术研究[J].电信科学,2014,30(11):135-139.
[4]Intel DPDK Programmers Guide[EB/OL].2012
[5]英特尔携手合作伙伴举办2015中国DPDK开发者大会[EB/OL].(2015).http://data.tsci.com.cn/News/HTM/20150427/ 1000102996.html.
[6]唐宏,罗雨佳.NFV业务链资源分配技术[J].电信科学,2015,31(11):143-148.
[7]聂瑞华,黄伟强,吴仕毅,等.基于 DPI技术的校园网络带宽管理[J].计算机技术与发展,2009,19(4):250-252.
[8]韩耀明.基于DPI技术的 VoIP流量检测系统的设计与实现[D].北京:北京邮电大学,2010.
[9]程斌,魏国强,何光营.基于应用层的校园网网络流量监测与分析[J].上海电力学院学报,2010(1):75-78.
[10]桑寅,孟少卿,鹿凯宁.基于DPI和机器学习方法传输层检测的P2P流量识别模型[J].电子测量技术,2011,34(10):45-48.
[11]郭虹,杨白薇,兰巨龙,等.AS级 Internet拓扑层次性分析与建模[J].通信学报,2011,32(9):182-190.
[12]李仲刚.基于DPI的WLAN网络业务深度设计与实现[J].魅力中国,2013(10):357.
[13]李宏达,林嘉燕.P2P流量识别技术研究[J].软件工程师,2010(12):41-43.
[14]王刚,张曦煌.基于IPv6流标签的服务质量研究[J].微计算机信息,2010(15):129-131.
[15]李洪波.网络安全事件预警系统方法研究[J].科技信息,2012(33):105-106.
VoIP traffic identification and implementation based on DPDK technology
WANG Wei,HUANG Hai,LI Jun-zheng
(China National Digital Switching System Engineering&Technological R&D Center,Zhengzhou 450002,China)
As a broad application and development of VoIP technology,its traffic identification and effective monitoring has been on the focus of concern of all types of operators.we use VOIP traffic identification method DPDK technology,Faced with the current network in the form of massive Internet traffic,this paper based on VoIP traffic identification program DPDK technology,the card will be limited to traditional server and bandwidth discrete integrated into the framework of a more scalable and easier identification of network traffic of a single frame.Finally,VoIP traffic recognition test DPDK platform,the test results DPDK programs to 64byte packet recognition rate is based on the Linux kernel 5~10 times to verify the effect of the program to enhance the identification of VoIP traffic.
high-speed network;DPDK;VoIP traffic identification;recognition framework
TN0
A
1674-6236(2016)23-0004-03
2016-03-15稿件编号:201603192
国家科技支撑计划项目(61521003)
王 伟(1992—),女,河南新乡人,硕士。研究方向:智能信息处理。