一种用于数据处理通道缓冲匹配的属性标识方法

文档序号:8322235阅读:258来源:国知局
一种用于数据处理通道缓冲匹配的属性标识方法
【技术领域】
[0001]本发明涉及计算机软件应用层协议处理加速的技术领域,尤其是涉及一种用于数据处理通道缓冲匹配的属性标识方法。
【背景技术】
[0002]目前许多应用系统、网络安全系统的建设,必须深入分析、处理TCP/IP层之上的应用层协议。而应用层协议一般来说都比较复杂。在目前现有的技术架构下,在进行应用层协议处理时,需要先后使用多个各自独立的模块。这些模块之间的联接复杂,从而大大降低了系统的灵活性,并且各个模块对缓冲区的操作具有盲目性,当数据流经各个模块时,模块间的缓冲区匹配(我们把为实现模块连接而进行的缓冲区操作成为模块间的缓冲区匹配)需要进行大量的内存复制,这无形中增加了系统处理时间,进而加剧了网络安全系统处理能力不足与网络流量迅速增加的矛盾。
[0003]现在缓冲区优化工作主要集中在TCP/IP等底层协议上,优化对象包括I)减少协议处理中数据的复制;2)提高缓存区处理灵活性和效率;3)多协议的高效处理。针对减少协议处理中数据复制的问题,现在通常使用的方法为零拷贝技术,零拷贝技术通过减少或消除关键通信路径影响速率的操作,降低数据传输的操作系统开销和协议处理开销,从而有效提高通信性能,实现高速数据传输。针对提高缓存区处理灵活性和效率的问题,可以通过fast buffer的方法进行处理,fast buffer可以有效地实现数据在各个保护域间的流动,fast buffer主要强调了缓冲区自身的流动性、可组合性。为实现多层协议的高效处理,可采用ILP(Integrated Layer Processing)方法,通过将协议栈扁平化,有效减少了内存访问操作,可以有效地实现数据在多个保护域间的流动,提高了访问效率。
[0004]上述的技术方案优化缓冲区操作可以大大提高协议处理性能,但这些技术方案将更多的注意力放在TCP这样较为简单的底层协议上,不适合现有框架下的应用层协议处理,且现有技术中内存访问操作频繁,采用顺序查询的方式,缓存访问的效率低下。故此急需一种针对相对复杂的应用层协议,适合现有框架下的应用层协议处理,就可以完全在用户控件实现的技术方案。

【发明内容】

[0005]本发明的目的在于设计一种用于数据处理通道缓冲匹配的属性标识方法,解决上述问题。
[0006]为了实现上述目的,本发明采用的技术方案如下:
[0007]一种用于数据处理通道缓冲匹配的属性标识方法,包括如下步骤:
[0008]在应用数据包流经处理通道时,定义缓存属性;
[0009]在输入或输出缓冲区中设定当前应用数据包的所述缓存属性;
[0010]采用当前应用数据包的所述缓存属性与缓冲区中的在前或在后应用数据包的所述缓存属性进行匹配;
[0011]若匹配成功,则通过在前或在后应用数据包的所述缓存属性调用所述缓冲区中的在前或在后应用数据包作为缓存输出;
[0012]若匹配失败,则将当前应用数据包新增到所述缓冲区中,并采用当前应用数据包作为缓存输出。
[0013]优选的,所述缓存属性包括可写属性、可读属性、释放缓存属性、内存分配属性、缓冲时间属性、缓冲路径属性、缓冲区有效空间属性和缓冲区剩余空间属性中的一种或多种。
[0014]优选的,所述处理通道为采用在线动态链接建立的处理通道。
[0015]优选的,采用当前应用数据包的所述缓存属性与缓冲区中的在前或在后应用数据包的所述缓存属性进行匹配的具体方法为:
[0016]将当前应用数据包的所述缓存属性与在前或在后应用数据包的所述缓存属性进行对比;
[0017]若当前应用数据包的所述缓存属性与在前或在后应用数据包的所述缓存属性一致,则将不同的所述缓存属性存放到所述缓冲区中;
[0018]若当前应用数据包的所述缓存属性与在前或在后应用数据包的所述缓存属性不一致,则不进行处理。
[0019]优选的,将当前应用数据包的所述缓存属性与在前或在后应用数据包的所述缓存属性进行对比的具体方法为:
[0020]判断当前应用数据包的所述缓存属性与所述缓冲区中的所述缓存属性是否一致;
[0021]若一致时,则判断为当前应用数据包的所述缓存属性对输入到所述缓冲区中的所述缓存属性不进行修改;
[0022]若不一致时,则判断为当前应用数据包的所述缓存属性对输入到所述缓冲区中的所述缓存属性进行修改;
[0023]对所述缓存属性进行修改时,判断是否在所述缓冲区中新增所述缓存属性;
[0024]若当前应用数据包的所述缓存属性包括所述缓冲区中的所述缓存属性时,则不进行新增所述缓存属性;
[0025]若当前应用数据包的所述缓存属性包括所述缓冲区中不存在的所述缓存属性时,则判断新增所述缓存属性。
[0026]本发明的有益效果可以总结如下:
[0027]通过本发明采用在线动态联接的方法建立处理通道。这样在分析应用层协议时,可以根据每个具体数据流的协议及其选项,在线为数据流建立最适当的处理通路,有效地提高了系统的灵活性,而又不增加额外的开销。通过本发明增加了数据处理的精准度,进而实现模块间的灵活组合。通过本发明可有效减少内存读写操作,提高应用层数据包在流经各模块时处理的效率。
【附图说明】
[0028]图1为本发明具体示例中HTTP协议的处理通道结构示意图;
[0029]图2为本发明中用于数据处理通道缓冲匹配的属性标识方法的流程示意图;
[0030]图3为本发明中输入输出缓冲属性进行缓冲区操作的流程示意图;
[0031]图4为本发明中输入输出缓冲属性进行缓冲区操作的改进示意图。
【具体实施方式】
[0032]为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0033]应用层协议数据要先后使用多个基本独立的模块进行处理,为标识某个具体应用协议数据流的处理过程,我们将这个过程中所使用的模块及其联接方式,称为该应用层数据流的处理通道。由于协议及其选项的不同,每一种应用层协议的每一次具体联接都可能使用不同的处理通道。在协议处理过程中,数据将依次流经通道中的各个模块。当数据从一个模块进入到下一个模块时,为了从前一个模块的输出缓冲区得到满足后一个模块需要的输入缓冲区,需要进行缓冲区匹配。以HTTP协议的某个具体连接为例,它需要使用gzip解码、HTTP格式分析,字符串转换、规则匹配等处理模块,它的处理通道如图1所示,HTTP协议的联接所使用的功能模块及其联接方式称为一个通道。在这个通道中,HTTP数据包需要经历gzip、HTTP格式分析、字符集转换、规则匹配等4个处理模块,从数据包从gzip模块的输出缓冲区进入到HTTP格式分析模块的输入缓冲区的过程中,需要进行缓冲区匹配;同样数据包从HTTP格式分析模块的输出缓冲区进入到字符集转换模块的输入缓冲区,以及字符集转换模块的输出缓冲区进入到规则匹配模块的输入缓冲区时,同样都需要进行缓冲区匹配。在实际系统中,由于功能模块众多,其相应的处理通道也非常多,为了降低复杂度,通常的做法是简化缓冲区操作,即不考虑各个模块对输入输出缓冲区的需求,只是按自己方便的方式操作缓冲区,在数据输入输出模块时,使用内存复制等方法进行缓冲区匹配。这种方法没有从根本上提高系统的灵活性,仍然使用硬编码方式(指将可变变量用一个固定值来代替的方法)确定模块的连接方法。并且这种方法对缓冲区操作具有盲目性,极大地增加了数据复制量。由于网络速速与DRAM (Dynamic Random Access Memory,即动态随机存取存储器,最为常见的系统内存)访问速度逐渐接近,以及DRAM与CPU(中央处理器)速度差距逐步增大,这些内存复制的方式大大降低了系统的处理效率。
[0034]如图2所示一种用于数据处理通道缓冲匹配的属性标识方法,包括如下步骤:
[0035]在应用数据包流经处理通道时,定义缓存属性;缓存属性包括可写属性、可读属性、释放缓存属性、内存分配属性、缓冲时间属性、缓冲路径属性、缓冲区有效空间属性和缓冲区剩余空间属性中的一种或多种;处理通道为在线动态链接建立的处理通道;
[0036]在输入或输出缓冲区中设定当前应用数据包的所述缓存属性;
[0037]采用当前应用数据包的所述缓存属性与缓冲区中的在前或在后应用数据包的所述缓存属性进行匹配;
[0038]若匹配成功,则通过在前或在后应用数据包的所述缓存属性调用所述缓冲区中的在前或在后应用数据包作为缓存输出;
[0039]若匹配失败,则将当前应用数据包新增到所述缓冲区中,并采用当前应用数据包作为缓存输出。
[0040]采用当前应用数据包的缓存属性与缓冲区中的在前或在后应用数据包的缓存属性进行匹配的具体方法为:
[0041]将当前应用数据包的缓存属性与在前或在后应用数据包的缓存属性进行对比;
[0042]若当前应用数据包的缓存属性与在前或在后应用数据包的缓存属性一致,则将不同的缓存属性存放到缓冲区中;
[0043]若当前应用数据包的缓存属性与在前或在后应用数据包的缓存属性不一致,则不进行处理。
[0044]优选的,将当前应用数据包的缓存属性与在前或在后应用数据包的缓存属性进行对比的具体方法为:
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1