CN102523208A - 多核架构下的应用层协议并行处理方法 - Google Patents
多核架构下的应用层协议并行处理方法 Download PDFInfo
- Publication number
- CN102523208A CN102523208A CN2011104018903A CN201110401890A CN102523208A CN 102523208 A CN102523208 A CN 102523208A CN 2011104018903 A CN2011104018903 A CN 2011104018903A CN 201110401890 A CN201110401890 A CN 201110401890A CN 102523208 A CN102523208 A CN 102523208A
- Authority
- CN
- China
- Prior art keywords
- application layer
- layer protocol
- parallel processing
- process modules
- aps
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种多核架构下的应用层协议并行处理方法,包括如下步骤:a)端口收包模块IP接收以太网口数据包;b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后发送给分析结果输出模块OP。本发明提供的多核架构下的应用层协议并行处理方法,应用层处理模块AP影射到多个物理核上,组成多条流水线并行处理;在端口收包模块IP和应用层处理模块AP之间新设一个负载平衡处理过程,把报文尽量均匀地分发给不同的应用层处理模块AP;大大提高应用层的处理效率。
Description
技术领域
本发明涉及一种应用层协议并行处理方法,尤其涉及一种多核架构下的应用层协议并行处理方法。
背景技术
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能就是帮助不同类型的主机实现数据传输。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。从下而上,OSI参考模型的七层依次为:物理层(Physical Layer)、数据链路层(Datalink Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)和应用层(Application Layer)。
实际常用的TCP/IP通讯协议采用了4层的层级结构,包括网络接口层、网络层、传输层、应用层,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现有序、有保障的传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台通讯实体规定一个地址,按目的地址逐点转发。
网络应用层协议有成千上万种,每种协议实现中的数据结构和编码都不同,常用的应用层协议包括HTTP、FTP、TELNET、DNS、SMTP和POP3。其中,超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。传统的加速方法是建立一个多线程池(thread pool),一个线程处理一个TCP的连接。但这样的做法使得可以并行的规模受限于多线程池的数目,达不到处理1百万TCP流(flows)的实际要求。
由上可知,网络应用层协议分析是建立在TCP/IP协议基础上的一种对报文深度分析的技术(DPI),其应用层协议的分析是在协议识别、确认后,再调用相应的协议解析器(Parser)来完成的。在协议解析器的框架下,添加应用的特定逻辑,就能对应用层的关联问题进行处理了。现有的协议分析只能进行串行化处理,严重影响了应用层的处理效率。
目前已有一些用来辅助开发解析器的工具,但这些工具大都采用一种抽象语言来描述和生成解析器,且生成的解析器的速度只能到达几百Mbps。Snort是一种开源的网络防范和监测侵入的软件,也被移植到多核架构上。它可以在数据包负载中匹配一些特殊的字符串模式,但是它无法通过分析应用层消息的结构来识别出每一个请求和响应。因此Snort无法完成某些任务,例如通过比较一个请求和它对应的响应来测量延迟的时间。目前也有一些应用多核架构来进行路由、协议识别和深度包检测技术的报导,但是这些工作都远远达不到1Gbps的速度或者无法处理应用层的复杂情况,因此,有必要提供多核架构下的应用层协议并行处理方法。
发明内容
本发明所要解决的技术问题是提供一种多核架构下的应用层协议并行处理方法,大大提高应用层的处理效率,且实现简单,易于扩展。
本发明为解决上述技术问题而采用的技术方案是提供一种多核架构下的应用层协议并行处理方法,包括如下步骤:a)端口收包模块IP接收以太网口数据包;b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后把分析结果发送给输出模块OP。
上述的多核架构下的应用层协议并行处理方法,其中,所述端口收包模块IP通过无锁FIFO队列向应用层处理模块AP发送报文;所述应用层处理模块AP通过无锁FIFO队列将分析结果发送给输出模块OP。
上述的多核架构下的应用层协议并行处理方法,其中,所述负载平衡模块利用对称的哈希将属于同一TCP流的报文影射到同一个物理核来处理应用层协议。
上述的多核架构下的应用层协议并行处理方法,其中,所述应用层处理模块AP进行数据包的识别及后续处理包括TCP/IP数据包处理及应用层数据包处理,应用层协议包括HTTP、FTP、TELNET、DNS、SMTP和POP3。
上述的多核架构下的应用层协议并行处理方法,其中,所述应用层处理模块AP在专用的并行模型的指导下,通过编译的源源变换方法,对程序进行两遍扫描,消除全局变量的使用,使数据包的深度处理、应用层协议的分析可以并行化。
本发明对比现有技术有如下的有益效果:本发明提供的多核架构下的应用层协议并行处理方法,应用层处理模块AP映射到多个物理核上,组成多条流水线并行处理;在端口收包模块IP和应用层处理模块AP之间新设一个负载平衡处理过程,把报文尽量均匀地分发给不同的应用层处理模块AP,大大提高应用层的处理效率。
附图说明
图1为现有单核架构下的应用层协议串行处理方法示意图;
图2为本发明多核架构下的应用层协议并行处理方法示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图2为本发明多核架构下的应用层协议并行处理方法示意图。
1.IP处理器的主要工作是基于网卡(NIC)把报文快速的从内核态传到用户态。主要用到的技术是:
a.修改内核态的驱动程序,绕过传统的TCP/IP的处理,把报文直接从内核态送到用户态。
b.充分利用缓存预取功能,在处理当前报文的时候,预取下几个报文,使得报文尽早地进入缓存。
c.报文的处理是按批处理的方式进行的,以减少PCIe总线的压力。
d.引入可对称的哈希函数,使得属于同一TCP流的报文总是被映射到同一个核上,即:
hash(源IP地址,目的IP地址,源端口,目的端口)等于
hash(目的IP地址,源IP地址,目的端口,源端口)
2.AP处理器的主要工作是对报文进行协议的处理。这主要分成两大部分:
a.二层(Ethernet)、三层(IP)、四层(TCP)的处理用手工写的C程序来完成。
b.七层(HTTP)用LEX(FLEX)描述语言来完成。LEX生成的C程序和上面手工开发的C程序组成一个完整的从二层到七层的网络协议分析器。
无论是LEX生成的C程序还是手工开发的C程序都不能在多核上并行执行。本发明的核心技术就是用编译的源源变换技术,对顺序程序进行合理、有效、等价的变换,使得转换后的程序可以在多核上并行执行。
3.OP处理器主要是收集AP分析的结果,把有用的结果输出。
综上所述,本发明多核架构下的应用层协议并行处理方法具体优点如下:
●AP上的数据包处理过程还是顺序的。既在每个AP上,IP碎片处理,TCP处理,端口无关的协议识别,应用层协议的处理是按照顺序程序的逻辑来实现的。这样做的好处是原有的顺序程序很容易被并行化。
●提供了一套完整的应用层协议的并行化解决方案。很多应用层协议的并行化方案往往忽略了或者割裂了TCP/IP层的处理,整体性能受限于没有被并行化的处理部分。本发明提供了一个从端口收包,经过二层、三层、四层、七层处理的完整的应用层协议的并行化解决方案。
●提出了一个用描述性语言来实现应用层协议的解析,使得应用层协议程序的开发非常容易。通过源源变换技术再把描述性语言的输出(C程序)变成可并行执行的多核程序。上述的多核架构下的应用层协议并行处理方法,可处理HTTP、FTP、TELNET、DNS、SMTP和POP3等。
本系统的特点如下:
·提出了一个完整的基于多条流水线的网络多层协议的处理方法;
·采用编译的源源变换技术,对顺序程序进行等价的变换已达到并行化的目的。
·用基于FLEX的描述性语言来处理众多的应用层协议的描述和并行化工作。
下面对源源变换技术进行详细的描述。首先本发明的并行模型如下:
1.内存模型采用共享性,即所有的核可以共享一个内存。
2.每个核上跑得是特殊的顺序程序,用执行到底(Run-To-Completion)的运行方式。
3.IP和AP之间、AP和OP之间用无锁队列(lock-free FIFO)连接,形成三个流水线段。也就是说,假如只用三个核,无锁队列的使用已经把一个顺序程序并行化了。
4.AP核之间不通讯:
a.每一个TCP流和HTTP连接都有自己的私有结构,转换后的顺序程序只能用指向TCP流的指针(HTTP连接的指针)间接读写该结构。
b.每个AP核保留自己的统计数据和分析结果,必要时由OP核完成统计汇总工作。
5.IP上的负载平衡器保证把属于同一个TCP流的报文影射到同一个核上。
其中,第三、四点和第五点是针对多层网络协议分析设计的,这也是网络协议分析可以并行化的基石。一般来说,如果顺序程序使用了全局变量,上述假定四就不满足了。所以要对顺序程序中的全局变量进行等价的转化就能使原用的顺序程序在这个模型下并行化。
程序中对全局变量的存取有两种:
1.对全局变量的直接读写:如x=1把1赋予全局变量x
2.通过指针对全局变量的间接读写:如*ptr=1把1赋予指针ptr所指向的全局变量。
本发明的源源变换就是要程序中的所有全局变量变成满足条件4的程序,下面以一个具体的例子来说明处理过程:
表1顺序程序;
Table1给出了一个顺序程序的例子,其中timenow是一个全局变量。它的出现使得该程序不能在多核上并行执行。根据本发明的并行模型的条件4,每一个TCP流有自己的私有数据结构,用指针ptr指向该结构。然后,对该程序做入下变换。
·函数的参数中,增加一个新的参数,指针ptr;
·所有对timenow的直接存取变成对ptr->timenow的间接存取。
转化后的可以并行执行的程序如表2所示。转换后的程序没有对全局变量的读写,它是可以并行执行的。
表2并行程序
所有的全局变量,将要放在一个新的结构中,如表3所示。在新的结构当中,原来的每一个全局变量,变成是该结构中的一个域。
表3全局变量汇总到一个结构当中
要完成以上的源源变换技术要对程序进行两遍扫描。
第一遍:收集全局变量相关信息,处理过程示意如下:
第二遍根据收集到全局变量,对含有全局变量的函数做变换,处理过程示意如下:
应用层协议有成千上万种。下面介绍用LEX(FLEX)来描述HTPP协议.
·充分利用LEX所提供的模式匹配功能,区分出请求、回答协议中的两个部分。
·在回答的部分,引入子状态:《ML》、《TE》、《LEN》等来识别不同的响应行。
·LEX所产生的C程序是一个顺序的HTPP协议的分析器。同样要经过上面描述的源源变换后,就是一个并行的HTTP的分析器了。
综上所述,本发明提供的多核架构下的应用层协议并行处理方法,建立了一个多核网络程序并行化的模型,奠定了网络程序并行化的基石;开发了一套编译的源源变换技术,使得顺序程序在该并行模型下,能够并行化;用基于模式匹配的LEX说明性的语言来描述网络协议,使得应用层网络协议变得易于描述和并行化。关于网络端口相关协议可以参考如下文献,在此不再一一展开详述。
参考文献:
[1]″Tcpdump,″″http://www.tcpdump.org/″.
[2]″Ethereal,″″http://www.ethereal.com/″.
[3]″Snort,″″http://www.snort.org/″.
[4]R.Pang,V.Paxson,R.Sommer,and L.Peterson,″A yacc for writing application protocolparsers,″in IMC′06,2006,pp.289-300.
[5]N.Borisov,D.Brumley,H.J.Wang,and C.Guo,″Generic application-level protocol analyzer andits language,″in Network and Distributed System Security Symposium,2007.
[6]Sangjin Han and Keon Jang and KyoungSoo Park and Sue Moon,″Packetshader:Agpu-accelerated software router,″in SIGCOMM′l0,2010.
[7]Mihai Dobrescu and Norbert Egi and Katerina Argyraki and Byung-Gon Chun and Kevin Falland Gianluca Iannaccone and Allan Knies and Maziar Manesh and Sylvia Ratnasamy,″Routebricks:Exploiting parallelism to scale software routers,″in SOSP′09,2009.
[8]Junchang Wang and Haipeng Cheng and Bei Hua and X-inan Tang,″Practice of parallelizingnetwork application-s on multi-core architectures,″in ICS′09:Proceedings of the 23rd internationalconference on Supercomputing,2009,pp.204-213.
[9]Intel Corporation,″Supra-linear packet processing performance with intel multi-core processorswhite paper,″2006,″http://www.intel.com/technology/advanced_comm/311566.htm″.
[10]L.Foschini,A.Thapliyal,L.Cavallaro,C.Kruegel,and G.Vigna,″A parallel architecture forstateful,high-speed intrusion detection,″in Proc.oflCISS,2008.
[11]P.P.C.Lee,T.Bu,and G.Chandranmenon,″A lock-free,cache-efficient multi-coresynchronization mechanism for line-rate network traffic monitoring,″in IPDPS′10,2010.
[12]X.Tang,R.Ghiya,L.J.Hendren,and G.R.Gao,″Heap analysis and optimizations for threadedprograms,″in Proc.of PACT97,1997.
[13]″Libnids,″″http://libnids.sourceforge.net/″.
[14]Guangdeng Liao and Xia Zhu and Laxmi N.Bhuyan,″A new server i/o architecture for highspeed networks,″in HPCA′ll,2011.
[15]QUALCOMM,″UIO-IXGBE,″″https://opensource.qualcomm.com/wiki/UIO-IXGBE″.
[16]D.L.Schuff,Y.R.Choe,and V.S.Pai,″Conservative vs.optimistic parallelization of statefulnetwork intrusion detection,″in the 12th ACMSIGPLAN symposium on Principles and practice of parallelprogramming,2007.
[17]A.Kunze,S.Goglin,and E.Johnson,″Symerton-using virtualization to accelerate packetprocessing,″in ANCS′06,2006.
[18]D.Guo,G.Liao,L.N.Bhuyan,B.Liu,and J.J.Ding,″A scalable multithreaded 17-fllter designfor multi-core servers,″in Proc.ofANCS′08,2008.
[19]J.Verdu,M.Nemirovsky,and M.Valero,″Multilayer processing-an execution model forparallel stetful packet procesing,″in Proc.ofANCS′08,2008.
[20]M.Kulkami,P.Carribault,and e.K.Pingali,″Scheduling strategies for optimistic parallelexecution of irregular programs,″in SPAA′08.2008.
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
Claims (5)
1.一种多核架构下的应用层协议并行处理方法,其特征在于,包括如下步骤:
a)端口收包模块IP接收以太网口数据包;
b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;
c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后发送给分析结果输出模块OP。
2.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述端口收包模块IP通过无锁FIFO队列向应用层处理模块AP发送报文;所述应用层处理模块AP通过无锁FIFO队列将分析结果发送给输出模块OP。
3.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述负载平衡模块利用对称的哈希将属于同一TCP流的报文影射到同一个应用层处理模块AP上。
4.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述应用层处理模块AP进行数据包的识别及后续处理包括TCP/IP数据包处理及应用层数据包处理,应用层协议包括HTTP、FTP、TELNET、DNS、SMTP和POP3。
5.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述应用层处理模块AP在专用的并行模型的指导下,通过编译的源源变换方法,对程序进行两遍扫描,消除全局变量的使用,使数据包的深度处理、应用层协议的分析可以并行化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104018903A CN102523208A (zh) | 2011-12-06 | 2011-12-06 | 多核架构下的应用层协议并行处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104018903A CN102523208A (zh) | 2011-12-06 | 2011-12-06 | 多核架构下的应用层协议并行处理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102523208A true CN102523208A (zh) | 2012-06-27 |
Family
ID=46294000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104018903A Pending CN102523208A (zh) | 2011-12-06 | 2011-12-06 | 多核架构下的应用层协议并行处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102523208A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179116A (zh) * | 2013-01-18 | 2013-06-26 | 厦门市美亚柏科信息股份有限公司 | 一种万兆协议解析方法及系统 |
US10069947B2 (en) | 2014-01-29 | 2018-09-04 | Huawei Technologies Co., Ltd. | Method and apparatus for processing data packet based on parallel protocol stack instances |
US10218820B2 (en) | 2014-01-29 | 2019-02-26 | Huawei Technologies Co., Ltd. | Method and apparatus for processing data packet based on parallel protocol stack instances |
CN112543237A (zh) * | 2020-11-27 | 2021-03-23 | 互联网域名系统北京市工程研究中心有限公司 | 无锁dns缓存方法和dns服务器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217520A (zh) * | 2007-12-29 | 2008-07-09 | 华为技术有限公司 | 无线分组域网关性能自适应的方法及装置 |
US20100121975A1 (en) * | 2008-11-12 | 2010-05-13 | Rajiv Sinha | Systems and Methods For Application Fluency Policies |
CN101795230A (zh) * | 2010-02-23 | 2010-08-04 | 西安交通大学 | 一种网络流量还原方法 |
-
2011
- 2011-12-06 CN CN2011104018903A patent/CN102523208A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217520A (zh) * | 2007-12-29 | 2008-07-09 | 华为技术有限公司 | 无线分组域网关性能自适应的方法及装置 |
US20100121975A1 (en) * | 2008-11-12 | 2010-05-13 | Rajiv Sinha | Systems and Methods For Application Fluency Policies |
CN101795230A (zh) * | 2010-02-23 | 2010-08-04 | 西安交通大学 | 一种网络流量还原方法 |
Non-Patent Citations (2)
Title |
---|
JUNCHANG WANG ET AL: ""Practice of Parallelizing Network Applications on Multi-core Architectures"", 《ICS’09:PROCEEDINGS OF THE 23RD INTERNATIONAL CONFERENCE ON SUPERCOMPUTING》 * |
夏高 等: ""用于高速网络入侵检测系统的并行TCP/IP协议栈"", 《清华大学学报(自然科学版)》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179116A (zh) * | 2013-01-18 | 2013-06-26 | 厦门市美亚柏科信息股份有限公司 | 一种万兆协议解析方法及系统 |
CN103179116B (zh) * | 2013-01-18 | 2016-02-03 | 厦门市美亚柏科信息股份有限公司 | 一种万兆协议解析方法及系统 |
US10069947B2 (en) | 2014-01-29 | 2018-09-04 | Huawei Technologies Co., Ltd. | Method and apparatus for processing data packet based on parallel protocol stack instances |
US10218820B2 (en) | 2014-01-29 | 2019-02-26 | Huawei Technologies Co., Ltd. | Method and apparatus for processing data packet based on parallel protocol stack instances |
CN112543237A (zh) * | 2020-11-27 | 2021-03-23 | 互联网域名系统北京市工程研究中心有限公司 | 无锁dns缓存方法和dns服务器 |
CN112543237B (zh) * | 2020-11-27 | 2023-07-11 | 互联网域名系统北京市工程研究中心有限公司 | 无锁dns缓存方法和dns服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Høiland-Jørgensen et al. | The express data path: Fast programmable packet processing in the operating system kernel | |
Bertin | XDP in practice: integrating XDP into our DDoS mitigation pipeline | |
Miano et al. | Securing Linux with a faster and scalable iptables | |
Santiago del Rio et al. | Wire-speed statistical classification of network traffic on commodity hardware | |
Kalia et al. | Raising the Bar for Using {GPUs} in Software Packet Processing | |
Antonello et al. | Deep packet inspection tools and techniques in commodity platforms: Challenges and trends | |
Vasiliadis et al. | MIDeA: a multi-parallel intrusion detection architecture | |
CN112558948B (zh) | 一种海量流量下报文识别的方法和装置 | |
Moreno et al. | Commodity packet capture engines: Tutorial, cookbook and applicability | |
CN1750485A (zh) | 网络仿真测试系统及方法 | |
CN104821924B (zh) | 一种网络数据包处理方法、装置和网络处理设备 | |
US20230208721A1 (en) | Determining network topology based on packet traffic | |
CN102523208A (zh) | 多核架构下的应用层协议并行处理方法 | |
Yang et al. | FAST: Enabling fast software/hardware prototype for network experimentation | |
Zhang et al. | Building high-performance application protocol parsers on multi-core architectures | |
Yi et al. | FlowShader: A generalized framework for GPU-accelerated VNF flow processing | |
CN110300085A (zh) | 网络攻击的取证方法、装置、系统、统计集群和计算集群 | |
Araújo et al. | Accelerating VNF-based Deep Packet Inspection with the use of GPUs | |
Hang et al. | Interleaved sketch: Toward consistent network telemetry for commodity programmable switches | |
Yan et al. | UniSec: a unified security framework with SmartNIC acceleration in public cloud | |
Shao et al. | Emilie: Enhance the power of traffic identification | |
Accardi et al. | Network processor acceleration for a linux* netfilter firewall | |
De Sensi et al. | Dpi over commodity hardware: implementation of a scalable framework using fastflow | |
Zhao et al. | Research on the Speed and Accuracy of Full Port Scanning | |
Michel | Packet-Level Network Telemetry and Analytics |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120627 |