多核架构下的应用层协议并行处理方法

文档序号:6440220阅读:166来源:国知局
专利名称:多核架构下的应用层协议并行处理方法
技术领域
本发明涉及一种应用层协议并行处理方法,尤其涉及一种多核架构下的应用层协议并行处理方法。
背景技术
OSI (Open System hterconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了 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和P0P3。其中,超文本传输协议(HTTP, HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。传统的加速方法是建立一个多线程池(thread pool),一个线程处理一个TCP的连接。但这样的做法使得可以并行的规模受限于多线程池的数目,达不到处理1百万TCP流(flows)的实际要求。
由上可知,网络应用层协议分析是建立在TCP/IP协议基础上的一种对报文深度分析的技术(DPI),其应用层协议的分析是在协议识别、确认后,再调用相应的协议解析器 (Parser)来完成的。在协议解析器的框架下,添加应用的特定逻辑,就能对应用层的关联问题进行处理了。现有的协议分析只能进行串行化处理,严重影响了应用层的处理效率。
目前已有一些用来辅助开发解析器的工具,但这些工具大都采用一种抽象语言来描述和生成解析器,且生成的解析器的速度只能到达几百Mbps。Snort是一种开源的网络防范和监测侵入的软件,也被移植到多核架构上。它可以在数据包负载中匹配一些特殊的字符串模式,但是它无法通过分析应用层消息的结构来识别出每一个请求和响应。因此 Snort无法完成某些任务,例如通过比较一个请求和它对应的响应来测量延迟的时间。目前也有一些应用多核架构来进行路由、协议识别和深度包检测技术的报导,但是这些工作都远远达不到mbps的速度或者无法处理应用层的复杂情况,因此,有必要提供多核架构下的应用层协议并行处理方法。发明内容
本发明所要解决的技术问题是提供一种多核架构下的应用层协议并行处理方法, 大大提高应用层的处理效率,且实现简单,易于扩展。
本发明为解决上述技术问题而采用的技术方案是提供一种多核架构下的应用层协议并行处理方法,包括如下步骤a)端口收包模块IP接收以太网口数据包;b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后把分析结果发送给输出模块0P。
上述的多核架构下的应用层协议并行处理方法,其中,所述端口收包模块IP通过无锁FIFO队列向应用层处理模块AP发送报文;所述应用层处理模块AP通过无锁FIFO队列将分析结果发送给输出模块0P。
上述的多核架构下的应用层协议并行处理方法,其中,所述负载平衡模块利用对称的哈希将属于同一 TCP流的报文影射到同一个物理核来处理应用层协议。
上述的多核架构下的应用层协议并行处理方法,其中,所述应用层处理模块AP进行数据包的识别及后续处理包括TCP/IP数据包处理及应用层数据包处理,应用层协议包括 HTTP、FTP、TELNET、DNS、SMTP 禾口 P0P3。
上述的多核架构下的应用层协议并行处理方法,其中,所述应用层处理模块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 和P0P3等。
本系统的特点如下
·提出了一个完整的基于多条流水线的网络多层协议的处理方法;
采用编译的源源变换技术,对顺序程序进行等价的变换已达到并行化的目的。
·用基于FLEX的描述性语言来处理众多的应用层协议的描述和并行化工作。
下面对源源变换技术进行详细的描述。首先本发明的并行模型如下
1.内存模型采用共享性,即所有的核可以共享一个内存。
2.每个核上跑得是特殊的顺序程序,用执行到底(Rim-To-Completion)的运行方式。
3. IP和AP之间、AP和OP之间用无锁队列(lock-free FIFO)连接,形成三个流水线段。也就是说,假如只用三个核,无锁队列的使用已经把一个顺序程序并行化了。
4. AP核之间不通讯
a.每一个TCP流和HTTP连接都有自己的私有结构,转换后的顺序程序只能用指向 TCP流的指针(HTTP连接的指针)间接读写该结构。
b.每个AP核保留自己的统计数据和分析结果,必要时由OP核完成统计汇总工作。
5. IP上的负载平衡器保证把属于同一个TCP流的报文影射到同一个核上。
其中,第三、四点和第五点是针对多层网络协议分析设计的,这也是网络协议分析可以并行化的基石。一般来说,如果顺序程序使用了全局变量,上述假定四就不满足了。所以要对顺序程序中的全局变量进行等价的转化就能使原用的顺序程序在这个模型下并行化。
程序中对全局变量的存取有两种
1.对全局变量的直接读写如χ = 1把1赋予全局变量χ
2.通过指针对全局变量的间接读写如*ptr = 1把1赋予指针ptr所指向的全局变量。
本发明的源源变换就是要程序中的所有全局变量变成满足条件4的程序,下面以一个具体的例子来说明处理过程
1static int timenow = 0; /* timenow cannot be used in parallelized code directly. */2static int jiffies() {3if( timenow )4return timenow;5timenow =...;6 7return timenow; }
表1顺序程序;
Table1给出了一个顺序程序的例子,其中timenow是一个全局变量。它的出现使得该程序不能在多核上并行执行。根据本发明的并行模型的条件4,每一个TCP流有自己的私有数据结构,用指针Ptr指向该结构。然后,对该程序做入下变换。
·函数的参数中,增加一个新的参数,指针ptr ;
·所有对timenow的直接存取变成对ptr- > timenow的间接存取。
转化后的可以并行执行的程序如表2所示。转换后的程序没有对全局变量的读写,它是可以并行执行的。
ι1static int jiffies(IP_THREAD_LOCAL_P ptr) { /* timenow is a private data */23if ( ptr->timenow )4return ptr->timenow;5ptr->timenow =6return ptr->timenow;7}
表2并行程序
所有的全局变量,将要放在一个新的结构中,如表3所示。在新的结构当中,原来的每一个全局变量,变成是该结构中的一个域。
权利要求
1.一种多核架构下的应用层协议并行处理方法,其特征在于,包括如下步骤a)端口收包模块IP接收以太网口数据包;b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后发送给分析结果输出模块0P。
2.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述端口收包模块IP通过无锁FIFO队列向应用层处理模块AP发送报文;所述应用层处理模块AP 通过无锁FIFO队列将分析结果发送给输出模块0P。
3.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述负载平衡模块利用对称的哈希将属于同一 TCP流的报文影射到同一个应用 层处理模块AP上。
4.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述应用层处理模块AP进行数据包的识别及后续处理包括TCP/IP数据包处理及应用层数据包处理,应用层协议包括 HTTP、FTP、TELNET、DNS、SMTP 和 P0P3。
5.如权利要求1所述的多核架构下的应用层协议并行处理方法,其特征在于,所述应用层处理模块AP在专用的并行模型的指导下,通过编译的源源变换方法,对程序进行两遍扫描,消除全局变量的使用,使数据包的深度处理、应用层协议的分析可以并行化。全文摘要
本发明公开了一种多核架构下的应用层协议并行处理方法,包括如下步骤a)端口收包模块IP接收以太网口数据包;b)将以太网口数据包通过负载平衡模块发往不同的应用层处理模块AP,不同的应用层处理模块AP映射到多个物理核上进行并行化处理;c)每个应用层处理模块AP独立进行数据包的识别及后续处理,最后发送给分析结果输出模块OP。本发明提供的多核架构下的应用层协议并行处理方法,应用层处理模块AP影射到多个物理核上,组成多条流水线并行处理;在端口收包模块IP和应用层处理模块AP之间新设一个负载平衡处理过程,把报文尽量均匀地分发给不同的应用层处理模块AP;大大提高应用层的处理效率。
文档编号G06F9/38GK102523208SQ201110401890
公开日2012年6月27日 申请日期2011年12月6日 优先权日2011年12月6日
发明者周文君, 陈峥 申请人:无锡聚云科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1