基于会话初始协议的消息文本解码器的制作方法

文档序号:7611091阅读:165来源:国知局
专利名称:基于会话初始协议的消息文本解码器的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种基于会话初始协议的消息文本解码器。
背景技术
随着网络应用的急剧增长,服务器和路由器的负担越来越重,尤其是NGN(下一代网络)的快速发展,要求服务器或者媒体网关控制器能提供具有实时性要求业务的呼叫控制和连接控制功能。这就需要路由器能对网络协议进行快速的分析解码并做出相应的协议动作。作为NGN中的重要协议,SIP协议的应用越来越广泛。
目前,对SIP协议报文进行解码主要分为两部分(1)域值提取对接收到的ASCII(美国信息互换标准代码)码格式的SIP报文按照SIP协议的RFC(请求注释)定义进行分析,提取出协议上层处理所需要的域值部分,并组成解码结果;(2)合法性检查按照SIP协议的ABNF范式定义,对域值提取模块所得到的域值进行报文合法性检查。如果正确,则提交给协议上层处理;如果包含有非法字符,则丢弃整个报文,并返回给协议上层解码错误信息。
整个用ABNF范式描述的协议规则可以展开为一个语法树,树的节点是每个子规则,叶子就是描述协议的不可再分的终结符,如数字、字符和单个符号等。根据ABNF语法规则,可以将基本规则总结为如下四种连接规则rule=subrule1 subrule2;
选择规则rule=subrule|subrule2|subrule3;循环规则rule=*(subrule);可选规则rule=subrule1[subrule2]subrule3;其他各种复杂的范式定义都可以由这四种基本规则组合而成,只要实现这四种基本的结构,在其之上就可以组合构建其他各种复杂的结构。
目前,通常采用软件方式实现针对SIP协议的解码处理。例如,在服务器中所实现的SIP协议解码经常应用软件方式的实现,具体实现方式如下域值提取模块在SIP协议的RFC定义中,详细规定了SIP报文所应该具有的格式,需要提取域值的各个域都有特定的字符或字符串作为标志。在软件实现中,通过对这些标志字符串进行查找,来确定在一个报文中存在的域,并把这些域在原始报文中的位置记录下来,这样就达到了域值提取的目的;合法性检查模块在SIP协议的ABNF定义中,用ABNF范式规定了SIP协议的格式。对于需要检查的域值,可以根据相应部分的ABNF范式进行检查,如果所有域值都正确,则表示解码过程完成,把域值提取模块中所得到的结果提交给协议上层作进一步处理;否则,丢弃整个报文。
由此可以看出,在域值提取和合法性检查中,需要作大量的字符串查找和字符串匹配操作。但是由于软件实现中采用串行操作方式,导致了字符串查找和匹配的效率低下。因此,上述采用软件实现SIP协议解码的技术方案具有速度慢,效率低,耗费服务器CPU资源较多等缺点,因而,在用户请求报文较多的时候,严重限制了整个系统的吞吐量。

发明内容
鉴于上述现有技术所存在的问题,本发明的目的是提供一种基于会话初始协议的消息文本的解码器,提高字符串查找、域值的合法性检查的速度,并提高网络协议解码的速度,进而提高系统的吞吐量。
本发明的目的是通过以下技术方案实现的本发明提供了一种基于会话初始协议的消息文本解码器,包括域值提取模块采用基于流水线的并行字符串匹配结构对待解码的消息进行匹配查找处理,并输出匹配查找的解码结果给域值合法性检查模块;域值合法性检查模块根据域值提取模块输出的解码结果提取对应的域值,并对所述域值进行合法性检查,输出结果。
所述的域值提取模块与移位寄存器连接获取并行字符串。
所述的域值提取模块包括规则比较模块用于将输入的待解码的消息与相应规则对应的字符串进行匹配比较,并输出匹配结果;计算模块根据匹配结果计算出待解码的消息中存在的域及对应的域值在消息报文中的位置,并输出作为解码结果,所述的解码结果包括两组值,分别为各个域在消息报文中的开始位置和结束位置。
所述的域值提取模块中包括一组至少包括一个规则比较模块的规则比较模块组。
所述的规则比较模块由连接规则比较模块、选择规则比较模块、循环规则比较模块和/或可选规则比较模块组成。
所述的连接规则比较模块由至少两级子规则匹配模块组成,其中,上一级的子规则匹配模块利用上一级规则对输入数据进行匹配处理,当匹配处理输出有效时,则启动下一级子规则匹配模块利用下一级规则对输入数据进行匹配处理,并输出匹配处理结果。
所述的选择规则比较模块由至少两级子规则匹配模块组成,其中,各级子规则匹配模块分别利用相应的规则对输入数据进行匹配处理,当其中任意一级子规则匹配模块输出有效时,则选择规则比较模块输出有效信号。
所述的循环规则比较模块包括一级子规则匹配模块及循环输入模块,所述的一级子规则匹配模块的输出端与循环输入模块输入控制端相连,所述一级子规则匹配模块对输入数据进行匹配处理,当输出有效时控制循环输入模块继续向一级子规则匹配模块输入所述输入数据。
所述的可选规则比较模块由至少三级子规则匹配模块组成,第一级子规则匹配模块的输出控制第二级子规则匹配模块的输入,第一和第二级子规则匹配模块的输出通过选择输入模块输出控制第三级子规则匹配模块的输入,当第一子规则匹配模块对输入数据进行匹配处理有效,则第二、三级子规则匹配模块同时输入数据并开始匹配处理,当第二级子规则匹配模块输出有效时第三级子规则匹配模块再输入数据。
所述的合法性检查模块包括报文缓存模块接收移位寄存器输出的报文数据缓存,并在地址生成模块的控制下将相应地址保存的报文数据输出给检查模块;地址生成模块接收域值提取模块的输出的解码结果,并基于所述的解码结果生成相应的报文数据缓存于报文缓存模块中的存储地址,并控制报文缓存模块输出相应的数据给检查模块;检查模块接收报文缓存模块输出的报文数据,以及域提取模块输出的域类型信息,并根据域值类型信息对所述的报文数据进行合法性检查,输出检查结果。
所述的地址生成模块包括开始先进先出队列与域值提取模块相连,用于获取并缓存解码结果中的开始位置信息,并输出给计数器;结束先进先出队列与域值提取模块相连,用于获取并缓存解码结果中的结束位置信息,并输出给比较器;
计数器用于根据比较器的比较结果对域提取模块输出的开始位置信息进行统计,并输出统计结果给比较器;比较器用于比较计数器的输出与结束先进先出队列中的结束位置信息,根据比较结果及计数器的输出确定消息报文在报文缓存模块中的存储地址信息。
由上述本发明提供的技术方案可以看出,本发明采用多位字符串匹配结构对所有需要匹配的字符和字符串进行比较,比较过程为并行执行。因此,本发明所述的解码器不会随着被匹配的字符串的增多而导致整个系统的性能的降低,即在长度为n的字符流中查找长度为m的字符串只需要n个时钟周期。因此,在对SIP协议进行解码的系统中,采用这样的字符串匹配方法是非常合适的。
另外,本发明中由于采用了可以并行处理的硬件逻辑,提高了字符串查找的速度,并且由于用硬件逻辑结构实现了ABNF范式定义,同时提高了域值的合法性检查的速度。所以采用本发明可以极大的提高网络协议解码的速度,减轻服务器CPU(中央处理器)的负担,并可提高系统的吞吐量。


图1为本发明所述的解析器的原理示意图;图2和图3分别为多位匹配处理的原理示意图;图4为连接规则的实现原理示意图;图5为选择规则的实现原理示意图;图6为循环规则的实现原理示意图;图7为可选规则的实现原理示意图;图8为ABNF规则的实现原理示意图;图9为图1中的合法性检查模块的结构原理示意图;
图10为图9中的地址生成模块的结构原理示意图。
具体实施例方式
本发明的核心是针对SIP协议解码的特点采用并行方式对待解码的消息报文进行标志字符的匹配处理,并且解码器采用硬件方式实现,因而保证了本发明提供的解码器具有良好的解码性能。
本发明所述的基于SIP协议的消息文本解码器由域值提取模块和域值合法性检查模块组成,如图1所示,其中所述的域值提取模块,为采用基于流水线的高速并行字符串匹配结构进行标志字符串的匹配查找操作,以便于确定需要提取的域值,该模块实质是通过输出域在消息报文中的位置信息,然后,由合法性检查模块利用所述的位置信息提取消息报文中规则匹配通过的域值,并进行合法性检查;所述的合法性检查模块,则为采用硬件逻辑实现了需要检查的域的ABNF范式,并在此基础上进行高速的域值合法性检查,该模块根据域提取模块输出的解码结果提取相应的域值,并进行合法性检查。
如图1所示,输入的报文数据首先进入一组移位寄存器再缓存到一块存贮器中,并同时与域值提取模块的多个存于规则比较模块(即图1中的规则1、规则2......及规则n)中的标志字符进行并行匹配比较,以便于确定相应的域;所述的域值提取模块即为图1中的标志字符匹配结构部分;然后利用域提取模块中的计算模块根据各规则比较模块比较得出的匹配信号可以计算出在协议报文中存在的域,以及相应的域值在报文中的位置,计算模块输出解码结果,所述的解码结果是由两组值组成,这两组值分别代表了各个域在原始报文中的开始位置和结束位置。
计算模块在输出解码结果的同时,还将解码结果送到合法性检查模块中的地址生成模块,所述的地址模块用于根据计算模块计算出的域值的位置产生消息报文在报文缓存模块中的存储地址信息,用于将相应的域值再次提取出来便于检查报文的合法性,提取出的域值输入到合法性检查模块中的检查模块,所述检查模块根据协议的ABNF范式构造了合法性检查的硬件逻辑,通过检查模块对域值进行检查之后,就可以输出整个报文的合法性信息。
本发明所述的域值提取模块中使用了一组移位寄存器来实现高效率的字符串匹配,以匹配字符串“SIP”为例,所述域值提取模块的结构如图2所示,8位的数据在时钟的驱动下依次进入移位寄存器,每一个时钟周期,便会有一个字符进入到移位寄存器中;当四个字符均进入到移位寄存器中后,则在第一个时钟周期,移位寄存器中的字符会输入到8位比较器中分别与字符‘S’、‘I’、‘P’、‘’进行比较,产生四个匹配信号;在第二个时钟周期,所述的四个匹配信号分别输入到两个与门中,执行AND(与)操作,产生两个匹配信号;在第三个时钟周期,所述的两个匹配信号再执行AND操作,产生最后的匹配信号;这样,经过相应的时钟周期之后,就可以得到当前输入的数据与字符串“SIP”是否匹配的信息。
为了提高整个解码器的性能,并且与32位的PCI接口进行匹配,本发明还可以将数据总线扩展为32位,同样以匹配字符串“SIP”为例,扩展数据总线的域值提取模块的结构如图3所示,32位的数据在时钟的驱动下进入32位移位寄存器,此时,每一个时钟周期里,会有4个字符进入寄存器中;在图3中,利用了4个32位的比较单元,每一个比较单元都是用来匹配一个字符串“SIP”,相邻两个比较单元相对于输入字符串都有8位的偏移,这样随着数据总线的扩展,整个系统的吞吐量提高到了原来的4倍。
当然,根据实际需要,本发明也可以采用其他位数的域值提取模块,如16位、24位、......等等,但核心处理思想都是一样的,故在此不再详述。
下面再对本发明中域值提取模块包含的各个规则比较模块的具体实现方式进行说明,在ABNF中,通常包括连接规则、选择规则、循环规则和可选规则四种,后面将分别说明各种规则的具体实现方式,图1中基于SIP协议的规则1、规则2、......、规则n便为基于所述四种规则实现。
ABNF连接规则连接规则的硬件逻辑结构如图4所示,当输入有效时,子规则1匹配模块被启动,模块对输入的数据以子规则1进行匹配,匹配成功后,o1有效,并启动子规则2匹配模块被,开始对子规则2进行匹配,当匹配成功后,输出给出有效信号;ABNF选择规则选择规则的硬件逻辑结构如图5所示,当输入有效时,子规则1匹配模块和子规则2匹配模块将被同时被启动,两个匹配模块分别对输入的数据以子规则1和子规则2的规则同时进行匹配,若其中一个匹配成功,输出就会给出有效信号,即输入i1、i2分别与子规则1和子规则2中的规则匹配,如匹配,则对应的输出o1、o2有效,只要o1或o2中的一个有效,则输出有效信号;ABNF循环规则循环规则的硬件逻辑结构如图6所示,当输入有效时,子规则1匹配模块被启动,模块对输入的数据以子规则1进行匹配,匹配成功后,o1有效,此时,通过循环输入模块又可以启动子规则1匹配模块,进行循环匹配,则输出有效信号;ABNF可选规则可选规则的硬件逻辑结构如图7所示,当输入有效时,子规则1匹配模块被启动,模块对输入的数据以子规则1规则进行匹配,匹配成功后,o1有效,则通过选择输入模块使得子规则2匹配模块和子规则3匹配模块同时被启动,子规则2匹配成功后,子规则3匹配模块又通过选择输入模块被启动,这样,输出便可以给出有效信号;基于上述四种基本规则的实现结构,可以实现各种复杂的ABNF范式定义,例如,规则用户名username=*(unreserved|escaped|other_char),则可以用上述硬件逻辑实现,具体的实现方式如图8所示,图中包括了上述的循环规则和选择规则的实现结构;在此基础之上,就可以根据每个域的ABNF规范构造相应的检查逻辑并构成一组集合;当需要对域值作检查时,可以根据输入域值的类型启动相应的合法性检查模块进行域值合法性检查。
所述合法性检查模块的结构如图9所示,包括地址生成模块、报文缓存模块和检查模块;缓存报文数据的报文缓存模块(即存贮器)接收当前正在解析的报文数据;地址生成模块接收域值提取模块输出的数据,即解码结果,并根据所述解码结果生成报文数据在报文缓存模块中的存储地址;检查模块在地址生成模块的控制下从报文缓存模块中获取相应的报文数据,同时,检查模块还接收域值提取模块输出的域值类型信号,用于使能特定域值的检查结构,并且根据地址生成模块输出的开始信号开始进行检查,最后检查模块输出合法性信号作为检查结果。
所述的地址生成模块的具体实现结构如图10所示,开始位置和结束位置分别是域值提取模块连续输出的对报文的解码结果;为了生成读取存贮器的地址,首先用start_fifo(开始先进先出队列)和end_fifo(结束先进先出队列)将这两路数据缓存,其中,start_fifo用于缓存开始位置信息,end_fifo用于缓存开始位置信息;图10中,带load(载荷)信号的计数器用来生成地址数据,首先计数器读入start_fifo中的第一个值,开始统计计数,并逐渐递增;同时,还将计数器的输出值(即统计计数值)与end_fifo中的第一个值(即结束位置对应的数值)进行比较,如果不相等,计数器就逐渐加1,继续读入start_fifo中的值,如果相等,则从start_fifo和end_fifo中读取下一个数据,并通过计数器递增之后进行比较,直到start_fifo和end_fifo都为空,这样,计数器的输出值就可以作为读取存贮器(报文缓存模块)的地址,同时比较器输出的alb(小于)信号也可以作为存贮器的读信号本发明通过采用基于流水线的并行字符串匹配和基于ABNF范式定义的域值合法性检查构造出高速的SIP协议解码器,从而提高SIP协议解码的速度,提高系统的吞吐量。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种基于会话初始协议的消息文本解码器,其特征在于,包括域值提取模块采用基于流水线的并行字符串匹配结构对待解码的消息进行匹配查找处理,并输出匹配查找的解码结果给域值合法性检查模块;域值合法性检查模块根据域值提取模块输出的解码结果提取对应的域值,并对所述域值进行合法性检查,输出结果。
2.根据权利要求1所述的基于会话初始协议的消息文本解码器,其特征在于,所述的域值提取模块与移位寄存器连接获取并行字符串。
3.根据权利要求1或2所述的基于会话初始协议的消息文本解码器,其特征在于,所述的域值提取模块包括规则比较模块用于将输入的待解码的消息与相应规则对应的字符串进行匹配比较,并输出匹配结果;计算模块根据匹配结果计算出待解码的消息中存在的域及对应的域值在消息报文中的位置,并输出作为解码结果,所述的解码结果包括两组值,分别为各个域在消息报文中的开始位置和结束位置。
4.根据权利要求3所述的基于会话初始协议的消息文本解码器,其特征在于,所述的域值提取模块中包括一组至少包括一个规则比较模块的规则比较模块组。
5.根据权利要求3所述的基于会话初始协议的消息文本解码器,其特征在于,所述的规则比较模块由连接规则比较模块、选择规则比较模块、循环规则比较模块和/或可选规则比较模块组成。
6.根据权利要求5所述的基于会话初始协议的消息文本解码器,其特征在于,所述的连接规则比较模块由至少两级子规则匹配模块组成,其中,上一级的子规则匹配模块利用上一级规则对输入数据进行匹配处理,当匹配处理输出有效时,则启动下一级子规则匹配模块利用下一级规则对输入数据进行匹配处理,并输出匹配处理结果。
7.根据权利要求5所述的基于会话初始协议的消息文本解码器,其特征在于,所述的选择规则比较模块由至少两级子规则匹配模块组成,其中,各级子规则匹配模块分别利用相应的规则对输入数据进行匹配处理,当其中任意一级子规则匹配模块输出有效时,则选择规则比较模块输出有效信号。
8.根据权利要求5所述的基于会话初始协议的消息文本解码器,其特征在于,所述的循环规则比较模块包括一级子规则匹配模块及循环输入模块,所述的一级子规则匹配模块的输出端与循环输入模块输入控制端相连,所述一级子规则匹配模块对输入数据进行匹配处理,当输出有效时控制循环输入模块继续向一级子规则匹配模块输入所述输入数据。
9.根据权利要求5所述的基于会话初始协议的消息文本解码器,其特征在于,所述的可选规则比较模块由至少三级子规则匹配模块组成,第一级子规则匹配模块的输出控制第二级子规则匹配模块的输入,第一和第二级子规则匹配模块的输出通过选择输入模块输出控制第三级子规则匹配模块的输入,当第一子规则匹配模块对输入数据进行匹配处理有效,则第二、三级子规则匹配模块同时输入数据并开始匹配处理,当第二级子规则匹配模块输出有效时第三级子规则匹配模块再输入数据。
10.根据权利要求3所述的基于会话初始协议的消息文本解码器,其特征在于,所述的合法性检查模块包括报文缓存模块接收移位寄存器输出的报文数据缓存,并在地址生成模块的控制下将相应地址保存的报文数据输出给检查模块;地址生成模块接收域值提取模块的输出的解码结果,并基于所述的解码结果生成相应的报文数据缓存于报文缓存模块中的存储地址,并控制报文缓存模块输出相应的数据给检查模块;检查模块接收报文缓存模块输出的报文数据,以及域提取模块输出的域类型信息,并根据域值类型信息对所述的报文数据进行合法性检查,输出检查结果。
11.根据权利要求10所述的基于会话初始协议的消息文本解码器,其特征在于,所述的地址生成模块包括开始先进先出队列与域值提取模块相连,用于获取并缓存解码结果中的开始位置信息,并输出给计数器;结束先进先出队列与域值提取模块相连,用于获取并缓存解码结果中的结束位置信息,并输出给比较器;计数器用于根据比较器的比较结果对域提取模块输出的开始位置信息进行统计,并输出统计结果给比较器;比较器用于比较计数器的输出与结束先进先出队列中的结束位置信息,根据比较结果及计数器的输出确定消息报文在报文缓存模块中的存储地址信息。
全文摘要
本发明采用多位字符串匹配结构,对所有需要匹配的字符和字符串的比较均为并行执行的。因此,本发明提供的技术方案不会随着被匹配的字符串的增多而导致整个系统的性能的降低,即在长度为n的字符流中查找长度为m的字符串只需要n个时钟周期。因此,在对SIP协议进行解码的系统中,采用这样的字符串匹配方法是非常合适的。另外,本发明中由于采用了可以并行处理的硬件逻辑,提高了字符串查找的速度,并且由于用硬件逻辑结构实现了ABNF范式定义,同时提高了域值的合法性检查的速度。所以采用本发明可以极大的提高网络协议解码的速度,减轻服务器CPU的负担,并提高系统的吞吐量。
文档编号H04L29/06GK1809054SQ20051000255
公开日2006年7月26日 申请日期2005年1月21日 优先权日2005年1月21日
发明者赵宝华, 屈玉贵, 周颢, 田野, 王烁, 李奇越, 吕超, 靳志伟 申请人:华为技术有限公司, 中国科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1