一种报文处理的方法和系统的制作方法

文档序号:7648345阅读:95来源:国知局
专利名称:一种报文处理的方法和系统的制作方法
技术领域
本发明涉及通信领域,尤其涉及一种报文处理的方法和系统。
背景技术
窄带网络,如拨号上网、DDN(Digital Data Network,数字数据网)专线等方式,曾经以方便和稳定从而获得客户的青睐。但是,窄带网络无法提供大量高速传递信息和媒体的通道,就像下水道被堵塞一样,无法给人们提供流畅、舒适、方便的生活。因此,随着互联网技术的发展,特别是宽带应用的迅速普及,原来的窄带方式在速度、费用方面的劣势已经越来越明显。同时,宽带网络的迅猛发展,新的应用层出不穷,使得原有最高处理能力的数据通讯设备面临了更高流量的压力,无法满足不断增加的更高线速要求。
数据设备的核心转发处理器件是由NP(Network Processor,网络处理器)或ASIC(Application Specific Integrated Circuit专用集成电路)来实现的,NP或ASIC等核心转发处理器件可以统称为PU(Processing Unit,处理单元)。为满足不断增加的更高线速要求,如果抛弃原来处理能力的PU,研发新的高性能PU无疑需要巨额的研发投资。并且在某种程度上是对现有资源的浪费。由此,人们提出了利用多片现有PU实现高性能转发处理的方案。图1是现有的转发处理单元示意图。多个这样的转发处理单元可以构成一个分布式的处理系统,如路由器。如图1所示,有上行(Ingress)和下行(egress)两个方向。其中,PU负责报文解析处理,TM(Traffic Manager流量控制器)负责流控调度,Fabric(交换网板)是多个接口板的连接部件,CP(Control Processor,控制处理器)是整个系统的控制中心,负责对各个部件进行配置管理,尤其要下发各种转发表项给PU,PU据此进行转发处理。
现有的技术方案中,PU的处理能力直接关系到前端接口模块的带宽。所以,前端接口模块带宽升级换代的过程中,PU也需要相应提高处理能力。因为PU承载了大量的软件和硬件投资,如果采用PU升级换代的方式来提高PU的处理能力,那么会造成大量既有投资的浪费,并且,开发新的PU需要时间成本、人力物力等。由此,业界提出了将一个接口的报文按流来拆分到不同的PU上,这里的“流”是具有共同特性的报文,可以很粗,譬如从中国到美国的报文可以视为一个流,也可以很细,譬如具有相同源地址和目的地址的报文被视为一个流。其方法为使用报文中的某些域,做HASH运算,来选择报文送入某个处理单元。采用这种方案,可以保证同一个流的报文被送入到一个固定的处理单元中,因此,不需要后续对报文流进行排序。但是,采用上述方案,按照流将一个接口的报文分配到不同的PU上,同一个流的报文送入到一个固定的处理单元中,会产生不均衡,因为有的流报文多,有的流报文少,没办法保证报文被均衡的分配到各个PU单元上,报文多的流所对应的PU,会处理不过来;而报文少的流所对应的PU,可能处于空闲中。所以,采用上述现有方案,所能够提供的接口带宽并不是各个PU单元能够处理的容量之和。

发明内容
基于上述分析,本发明的实施例提供一种报文处理的方法,包括接收报文流,为所述报文流中的报文添加序列号;将所述报文流中的报文均衡地分配到N个处理单元进行处理(N为大于1的自然数);
根据所述序列号对所述N个处理单元处理后的报文进行组序。
另外,本发明的实施例还提供一种报文处理的系统,包括报文分配模块,用于接收报文流,并为所述报文流中的报文添加序列号,将所述报文流中的报文均衡地分配给N个处理单元(N为大于1的自然数);N个处理单元,分别用于对接收到的报文进行处理;报文组序模块,用于根据所述序列号对所述N个处理单元处理后的报文进行组序。
本发明的实施例,对报文流中的报文均衡地分配到多个PU中进行处理,并通过对分配后的报文进行组序,来保证报文不会乱序。由此,可以在多个PU之间均衡地进行负载分担,所以,可以通过倍增PU来实现一个接口的带宽倍增。


图1是现有的转发处理单元示意图;图2是本发明一个实施例中的系统示意图;图3是本发明另一个实施例中的系统示意图;图4是本发明的一个实施例中分配报文的示意图;图5是本发明的一个实施例中报文组序的示意图。
具体实施例方式
下面结合附图及具体实施例对本发明进行详细说明。
本发明的实施例提供了一种报文处理的方法,将报文流中的报文均衡地分配到多个PU上处理,由这些PU处理后,再次整合为一个报文流,并保证报文不会乱序。
本发明的实施例也提供了一种报文处理的系统,包括报文分配模块、多个PU和报文组序模块。报文分配模块接收报文流,并为报文添加序列号,然后将报文均衡地分配给多个PU;多个PU分别对接收到的报文进行处理,然后将报文送到报文组序模块;报文组序模块根据序列号进行报文组序。其中,从Ingress方向来看,报文分配模块可以位于物理接口,也可以使用逻辑器件来实现,譬如FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC等;而报文组序模块可以位于流量控制器,也可以使用逻辑器件来实现,譬如FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC等。相反地,Egress方向上,报文分配模块可以位于流量控制器,也可以使用逻辑器件来实现,譬如FPGA(Field ProgrammableGate Array,现场可编程门阵列)、ASIC等;而报文组序模块可以位于物理接口,也可以使用逻辑器件来实现,譬如FPGA(Field Programmable GateArray,现场可编程门阵列)、ASIC等。PU可以是网络处理器,也可以是专用集成电路,或者具有相同功能的其他器件。
下面采用一个具体的例子来说明。图2是本发明一个实施例中的系统示意图。图2所示的例子是以一个接口对应两个PU为例来进行说明的,当然,也可以使用更多的PU。图2所示系统的工作过程如下以Ingress方向为例,将来自一个Framer(物理接口)的报文流中的报文均衡地分配给两个PU,即PU1和PU2,由PU1和PU2分别对接收到的报文进行处理,处理之后输出到TM,由TM对报文进行组序,来保证报文不会乱序。其中,分配报文的工作由Framer完成。
相反的,Egress方向上,报文流的处理过程是TM将报文流中的报文均衡地分配给PU1和PU2这两个不同的处理单元进行处理,之后送到Framer进行报文组序,来保证报文不会乱序。
在上述实施例中,Ingress方向上,如果Framer没有分配报文的功能,那么可以添加一个FPGA(Field Programmable Gate Array,现场可编程门阵列)器件来完成分配报文的工作。同理,如果TM的功能不支持组序,那么,可以由一个FPGA器件来实现报文组序,这样,就需要如图3所示的系统,其中FPGA1分配报文,而FPGA2实现报文组序。对应地,Egress方向上,FPGA2分配报文,而FPGA1实现报文组序。
采用本发明实施例中的方法,为保证报文不会乱序,在分配报文时,报文分配模块为报文分配一个序列号,此序列号可以嵌在报文头部,也可以嵌在报文尾部。报文分配模块每分配一个报文,使用一个序列号,然后,将该序列号+1作为新的序列号嵌入到下一个报文中。经过PU处理的报文到达报文组序模块时,报文组序模块会根据每个报文所包含的序列号来进行报文组序。
图4是本发明的一个实施例中分配报文的示意图。如图4所示,有N(N为大于1的自然数)个FIFO(First in first out,先入先出队列),每个FIFO与一个PU相对应。通过Counter(累计器)分配报文序列号,将分配的报文号嵌入到报文中,将报文放入S-FIFO(缓存)中进行缓存,再分配到各个FIFO,由各个FIFO送到各自对应的PU中进行处理。
为实现均衡分配,可以通过Round robin,即轮询分配,将报文依次分配到N个FIFO中。优选地,在分配过程中,还可以判断各个FIFO的拥塞情况,对于拥塞的FIFO,不再向其分配报文。
当然,也可以通过其他的方式实现均衡分配,例如,对N个处理单元根据空闲程度进行优先级比较,越空闲的优先级越高,在分配报文时将报文分配给优先级高的处理单元。还可以有其他的方案,例如,对N个处理单元根据空闲程度进行优先级排序,越空闲的优先级越高,在分配报文时,按照处理单元优先级从高到底的顺序进行分配。上述这些分配方案只是用于举例说明,并不用于限制本发明。
图4中的S-FIFO是用于分配后报文的缓存,S-FIFO也可以不需要。
在图2和图3所示的系统中,不仅有从Framer到TM的报文或者从TM到Framer的报文,也可能有从CPU(Central Processing Unit,中央处理单元)到PU的报文,因为序列号只能由报文分配模块赋予,所以,从CPU的报文,不具有合法的序列号,为区分来自CPU的报文,可以将序列号中某些域指定为特殊标记域来进行标识。在特殊标记域的值为1(或0)时,表示这个报文是CPU来的。这种特殊报文到达报文组序模块时,不参加组序,直接通过。
相反地,从PU到CPU的报文,因为其带有序列号,所以需要在CPU软件中,增加组序的工作。
还有一种特殊的情形,就是PU在处理报文的过程中,可能对报文进行分片,而分片后的每个报文中都带有相同的序列号,当组序模块接收到相同序列号的报文时,一般只取一个报文,而丢弃其他的报文。针对这种情形,可以设置分片报文的标记域,当该域的值为1(或者0)时,表明报文是分片报文,组序模块接收到报文后,可以依据该标记域识别分片报文,将一系列的相同序列号的报文全部接收,视作一个报文。
下面举一个具体的例子来说明序列号的构成。
序列号总长为16bits,其中最高第15bit是特殊报文标记域,当此bit为1时,标记此报文来自CPU,不参与组序。
第14bit是分片报文的标记域,当此bit为1时,标记此报文为分片报文。
其余13~0这14个bit为一般序列号部分。
上面的例子仅仅是举例说明而已,不能用于限制本发明。譬如,序列号可以不采用16比特,或者,特殊报文标记域可以不设置在最高位。
报文经过各个PU处理后,输出到报文组序模块,报文组序模块的工作是根据序列号进行组序,将报文合成为一个报文流。
图5是本发明的一个实施例中组序模块的示意图。图5所示的组序模块中包含一个End-FIFO、N(N为大于1的自然数)个FIFO,每个FIFO与一个PU相对应。报文经过各个PU处理后,进入对应的FIFO,组序模块维护一个ESN(Expected Serial Number,期待序列号),存放期待序列号。如果有FIFO中有ESN报文,则将此报文送到END-FIFO,然后将ESN进行+1操作。其中End-FIFO的用途是缓存,当组序后出现很多报文时可以防止拥塞,当然,End-FIFO也可以没有。同理,还可以对应每个FIFO设置分片ESN寄存器,来接收分片报文,凡是符合分片ESN(分片期待序列号)的分片报文,都被正确送往END-FIFO。
结合图5所示的报文组序模块来说明报文组序的过程,包括步骤0如果具有特殊标记的报文,如来自CPU的报文,则将报文直接发送到End-FIFO,对于分片报文,组序模块根据分片报文的标记域来识别出分片报文,将序列号与分片期待序列号相同的分片报文发送到END-FIFO。
步骤1如果N个FIFO中报文的最低序列号低于当前ESN。将此最低序列号的报文丢弃;步骤2如果某个FIFO中内为首的报文中存在序列号与当前ESN相同的报文,则将此报文移送到END-FIFO,并将当前ESN加1为新的ESN。
步骤3如果N个FIFO中不存在序列号与当前ESN的报文,但N个FIFO都不为空,则选择N个FIFO内为首报文中序列号大于当前期待序列号且最接近当前期待序列号的报文移送到END-FIFO,并以此报文序列号+1为新的ESN。
步骤4如果N个FIFO中不存在当前ESN的报文,但有至少一个FIFO为空队列,则启动定时器进行等待。
步骤5如果在等待过程中,所有FIFO都不再为空,则退出定时器等待,回到步骤0。
步骤6如果在等待过程中,有FIFO发生拥塞,则退出定时器等待。将现有非空FIFO内为首报文中序列号大于当前期待序列号且最接近当前期待序列号的报文移送到END-FIFO,并将此序列号+1为新的ESN,回到步骤0。
步骤7如果定时器到时,则将现有非空FIFO内内为首报文中序列号大于所述当前期待序列号且最接近所述当前期待序列号的报文移送到END-FIFO,并将此序列号+1为新的ESN,回到步骤0。
当然,如果没有END-FIFO,则直接将报文送出即可。
本发明实施例中对应的软件可以存储在一个计算机可读取存储介质中。
本发明的实施例,采用均衡分配报文的方法,可以将一个报文流中的报文均衡地分配到多个PU中进行处理,并通过报文组序模块对分配后的报文进行组序,保证报文不会乱序。由此,可以在多个PU之间均衡地进行负载分担,所以,可以通过倍增PU来实现一个接口的带宽倍增。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
权利要求
1.一种报文处理的方法,其特征在于,包括接收报文流,为所述报文流中的报文添加序列号;将所述报文流中的报文均衡地分配到N个处理单元进行处理(N为大于1的自然数);根据所述序列号对所述N个处理单元处理后的报文进行组序。
2.如权利要求1所述的方法,其特征在于,所述将所述报文流中的的报文均衡地分配到N个处理单元进行处理,包括采用轮询方式,将所述报文流中的报文依次分配到所述N个处理单元进行处理。
3.如权利要求2所述的方法,其特征在于,所述将所述报文流中的报文均衡地分配到N个处理单元进行处理,还包括,对所述N个处理单元中拥塞的处理单元,不再分配报文。
4.如权利要求1所述的方法,其特征在于,所述将所述报文流中的报文均衡地分配到N个处理单元进行处理,包括对所述N个处理单元根据空闲程度进行优先级排序,越空闲的优先级越高,将所述报文流中的报文分配给优先级高的处理单元。
5.如权利要求1所述的方法,其特征在于,所述序列号标识所述报文流中的报文顺序。
6.如权利要求5所述的方法,其特征在于,所述序列号包括特殊标记域,用以标识来自CPU的报文。
7.如权利要求5所述的方法,其特征在于,所述序列号包括分片报文的标记域。
8.如权利要求6所述的方法,其特征在于,所述根据所述序列号对所述N个处理单元处理后的报文进行组序,包括使所述特殊标记域标记出的来自CPU的报文直接通过。
9.如权利要求7所述的方法,其特征在于,所述根据所述序列号对所述N个处理单元处理后的报文进行组序,包括将序列号与分片期待序列号相同的的分片报文送出。
10.如权利要求8或9所述的方法,其特征在于,所述根据所述序列号对所述N个处理单元处理后的报文进行组序,包括当对应所述N个处理单元的N个先入先出队列中报文的最低序列号低于当前期待序列号时,将所述最低序列号的报文丢弃;当所述N个先入先出队列内的为首报文中存在序列号与当前期待序列号相同的报文时,将所述与当前期待序列号相同的报文送出,并将当前期待序列号加1作为新的期待序列号;当所述N个先入先出队列中不存在序列号与当前期待序列号相同的报文,且所述N个先入先出队列都不为空时,选择所述先入先出队列内为首报文中序列号大于所述当前期待序列号且最接近所述当前期待序列号的报文送出,并将所述送出报文的序列号加1作为新的期待序列号;所述N个先入先出队列中不存在当前期待序列号的报文,且所述N个先入先出队列中至少一个是空队列时,启动定时器进行等待;在等待过程中,当所述N个先入先出队列都不再为空时,退出定时器等待,使所述特殊标记域标记出的来自CPU的报文直接通过,对于分片报文,将序列号与分片期待序列号相同的分片报文送出;或者,在等待过程中,当所述N个先入先出队列中有队列发生拥塞时,退出定时器等待,将所述先入先出队列内为首报文中序列号大于所述当前期待序列号且最接近所述当前期待序列号的报文送出,并将所述送出报文的序列号加1作为新的期待序列号,使所述特殊标记域标记出的来自CPU的报文直接通过,对于分片报文,将序列号与分片期待序列号相同的分片报文送出;或者,所述定时器到时后,将所述N个先入先出队列内为首报文中序列号大于所述当前期待序列号且最接近所述当前期待序列号的报文送出,并将所述送出报文的序列号加1作为新的期待序列号,使所述特殊标记域标记出的来自CPU的报文直接通过,对于分片报文,将序列号与分片期待序列号相同的分片报文送出。
11.一种报文处理的系统,其特征在于,包括报文分配模块,用于接收报文流,并为所述报文流中的报文添加序列号,将所述报文流中的报文均衡地分配给N个处理单元(N为大于1的自然数);N个处理单元,分别用于对接收到的报文进行处理;报文组序模块,用于根据所述序列号对所述N个处理单元处理后的报文进行组序。
12.如权利要求11所述的系统,其特征在于,所述报文分配模块位于物理接口,或者流量控制器,或者使用逻辑器件。
13.如权利要求11所述的系统,其特征在于,所述报文组序模块位于流量控制器,或者物理接口,或者使用逻辑器件。
14.如权利要求11所述的系统,其特征在于,所述处理单元是网络处理器,或者专用集成电路。
全文摘要
本发明公开了一种报文处理的方法,包括接收报文流,为报文流中的报文添加序列号;将报文流中的报文均衡地分配到N个处理单元进行处理(N为大于1的自然数);根据序列号对N个处理单元处理后的报文进行组序。本发明还公开了一种报文处理的系统。采用本发明中公开的技术方案,将报文流中的报文均衡地分配到多个处理中进行处理,并通过对分配后的报文进行组序来保证报文不会乱序。可以在多个PU之间均衡地进行负载分担,由此,可以通过倍增处理单元来实现一个接口的带宽倍增。
文档编号H04L12/24GK101072176SQ20071007392
公开日2007年11月14日 申请日期2007年4月2日 优先权日2007年4月2日
发明者李政, 陈珂, 梁冰, 张少松, 徐振华, 雷文阳, 黄韬, 王重阳 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1