专利名称:一种报文处理方法及系统的制作方法
技术领域:
本发明属于数据处理领域,尤其涉及通过通用CPU处理器对IP报文进行处理的方法及系统。
背景技术:
目前,网络设备对IP(Internet Protocol,网际协议)报文的转发可以采用专用的ASIC(Application Specific Integrated Circuit,专用集成电路)、网络处理器或者通用CPU(Central Processing Unit,中央处理器)处理器。
在大流量的网关设备上,由于对处理能力的要求比较高,一般都采用专用的ASIC或网络处理器,以便能获得高流量的转发性能。但随着通用CPU处理器技术的进一步发展,其处理能力也越来越强大,能达到使用的要求。特别是在业务越来越丰富,出现新业务越来越快的情况下,专用ASIC和网络处理器都不能很好的适应业务的快速发展。但通用CPU处理器却能灵活的增加业务类型,在很短时间内通过升级或新开发推出支持新业务的设备,从而在市场上占有领先优势。
如图1所示,在现有技术中,输入报文流在通用CPU处理器内按照接收到的先后顺序,依次经过若干处理阶段,在每个处理阶段,利用上个处理阶段得到的表格的指针,从该指针指示的表格中获得配置参数进行报文处理,并计算出下个处理阶段处理报文需要的表格的指针,经过所有处理阶段后完成报文的处理。
由于对报文进行顺序处理,当前处理阶段的报文处理需要依赖于上个处理阶段的结果,当大流量情况下,在访问报文与表格时,因为通用CPU处理器的Cache(高速缓冲存储器)是有限的,必定会出现Cache miss(高速缓冲存储器丢失)的现象,CPU需要从外部存储器中读取信息,从而限制了报文的处理能力,不能充分发挥通用CPU中Cache的作用,间接增加了设备成本。
发明内容
本发明的目的在于解决现有技术中存在的对报文进行顺序处理,导致报文处理效率低,设备成本增加的问题。
为了实现发明目的,本发明提供了一种报文处理方法,通过通用CPU处理器对输入报文流进行多个处理阶段的处理,当前处理阶段利用上个处理阶段得到的表格的指针,从所述指针指示的表格中获得配置参数对报文进行处理,所述方法包括对输入报文流进行多级流水线并行处理,每一级流水线对应一个处理阶段;在得到下一处理阶段的表格的指针时,预先提取下一个处理阶段的表格存入所述通用CPU处理器的高速缓冲存储器中。
所述对输入报文流进行多级流水线并行处理的步骤进一步包括将所述输入报文流进行初始化;对初始化后的输入报文流进行多级流水线并行处理,当前处理阶段对输入报文处理完毕后,将输入报文送交下一个处理阶段继续处理,同时接收上一个处理阶段发送过来的输入报文,继续当前处理阶段的处理。
所述将所述输入报文流进行初始化的步骤进一步包括选择输入报文流的前n-1个报文;对所述n-1个报文进行前n-m个处理阶段的处理;其中,m、n为自然数,m<n,n为处理阶段个数,m为所述前n-1个报文中的第m个报文。
所述方法进一步包括在得到下一处理阶段的表格的指针时,将下一个处理阶段准备处理的报文预先提取存入所述通用CPU处理器的高速缓冲存储器中。
为了更好地实现发明目的,本发明进一步提供了一种报文处理系统,通过通用CPU处理器对输入报文流进行多个处理阶段的处理,当前处理阶段利用上个处理阶段得到的表格的指针,从所述指针指示的表格中获得配置参数对报文进行处理,所述系统包括报文处理单元,用于对输入报文流进行多级流水线并行处理,每一级流水线对应一个处理阶段;内容预取单元,用于在得到下一处理阶段的表格的指针时,预先提取下一个处理阶段的表格存入所述通用CPU处理器的高速缓冲存储器中。
所述报文处理单元进一步包括初始化单元,将所述输入报文流进行初始化;多个并行报文处理模块,每个报文处理模块对应一个处理阶段;所述多个并行报文处理模块对初始化后的输入报文流进行多级流水线并行处理,当前报文处理模块对输入报文处理完毕后,将输入报文送交下一个报文处理模块继续处理,同时接收上一个报文处理模块发送过来的输入报文,继续当前处理阶段的处理。
所述初始化单元进一步用于选择输入报文流的前n-1个报文,对所述n-1个报文进行前n-m个处理阶段的处理;其中,m、n为自然数,m<n,n为处理阶段个数,m为所述前n-1个报文中的第m个报文。
所述内容预取单元进一步用于在得到下一处理阶段的表格的指针时,将下一个处理阶段准备处理的报文预先提取存入所述通用CPU处理器的高速缓冲存储器中。
利用本发明对输入报文流进行转发处理时,可以极大的减少访问报文内容与表格内容出现的Cache miss情况,提高报文的转发能力,间接降低设备的成本。
图1是现有技术中的报文处理实现流程图;图2是本发明提供采用三级流水线对报文进行处理的示例图;图3是本发明提供的报文转发处理系统的结构图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
由于报文处理需要访问报文内容与控制面配置的表格内容,因此报文的处理能力在很大程度上依赖于对这两种数据的访问速度。本发明在使用通用CPU处理器进行报文的转发处理时,克服访问报文与表格时出现的Cache miss,提高通用CPU处理器的报文转发能力,从而间接降低设备成本。
在本发明中,采用多级流水线并行处理的方法对输入的报文进行转发处理,每个一个处理阶段对应一级流水线。当前处理阶段对输入报文处理完毕后,将输入报文送交下一个处理阶段继续处理,同时接收上一个处理阶段发送过来的输入报文,对下一个输入报文继续当前处理阶段的处理。
同时,在得到上一个处理阶段获得的下一个处理阶段的表格的指针后,使用下个表格前,将指针指示的下一个处理阶段的表格预先提取存入cache中,然后根据表格中的配置参数对报文进行处理,避免Cache miss的出现,大大提高通用CPU处理器的报文处理速度。
以下以三级流水线为例进行详细描述,如图2所示i表示第i个报文,j表示第j个处理阶段,proc[i,j]表示第i个报文的第j个处理阶段,pref[i,i+1]表示预取第i个报文的第i+1个表格,则流水线上某个时间点的操作如下在第k个时间点
proc[i,3],pref[i+3,1];proc[i+1,2],pref[i+1,3];proc[i+2,1],pref[i+2,2];在第k+1个时间点proc[i+1,3],pref[i+4,1];proc[i+2,2];pref[i+2,3];proc[i+3,1];pref[i+3,2];……由上可知,在启动流水线处理时,第1个报文处于第3个处理阶段,第2个报文处于第2个处理阶段,因此在启动流水线前,需要将最前面2个报文的流水线处理进行初始化,使其能够通过完整的3个处理阶段的报文处理proc[1,1],pref[1,2];proc[1,2],pref[1,3];proc[2,1],pref[2,2];初始化后,按照上述流程启动对报文的流水线处理proc[1,3],pref[4,1];proc[2,2],pref[2,3];proc[3,1],pref[3,2];proc[2,3],pref[5,1];proc[3,2],pref[3,3];proc[4,1],pref[4,2];……在实际应用中,流水线的具体深度可以根据处理报文需要的处理阶段来进行设置。
作为本发明的另一个实施例,在对表格进行预先提取存入cache的基础上,可以在得到下一个处理阶段的表格的指针时,将下一个处理阶段准备处理的报文内容预先提取存入cache中,通过并行处理,报文处理的效率会进一步提高。
图3示出了本发明提供的报文转发处理系统的结构,报文处理单元301包括多个并行报文处理模块301.1……301.i……301.n,其中,每个报文处理模块对应一个报文处理阶段,根据报文内容和参数信息对输入报文流进行转发处理。
内容预取单元302在接收到报文处理单元输出的表格的指针后,预先从外部存储器100中提取出表格的指针所指示的表格内容,存储到cache200中,以备下一个报文处理单元进行报文转发处理时使用。在本发明的另一个实施例中,内容预取单元302还可以将下个处理阶段准备处理的报文内容预先提取存入cache200中,通过并行处理,进一步提高报文处理的效率。
当报文处理单元301对报文进行转发处理时,可以从cache200中读取对应的表格,获得报文转发处理的配置参数信息。
在对报文流进行流水线处理前,初始化单元303根据输入的报文内容和参数信息对输入到报文转发处理系统中的前n-1个报文进行初始化,使前n-1个报文能够通过完整的n个处理阶段的报文处理。即选择输入报文流的前n-1个报文,对这前n-1个报文进行前n-m个处理阶段的处理,其中,m、n为自然数,m<n,n为处理阶段个数,m为前n-1个报文中的第m个报文。
经过初始化单元303进行初始化处理后的报文,通过报文处理模块301.1……301.i……301.n进行并行转发处理。当前报文处理模块对输入报文处理完毕后,将输入报文送交下一个报文处理模块继续处理,同时接收上一个报文处理模块发送过来的输入报文,对下一个输入报文继续当前处理阶段的处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种报文处理方法,通过通用CPU处理器对输入报文流进行多个处理阶段的处理,当前处理阶段利用上个处理阶段得到的表格的指针,从所述指针指示的表格中获得配置参数对报文进行处理,其特征在于,所述方法包括对输入报文流进行多级流水线并行处理,每一级流水线对应一个处理阶段;在得到下一处理阶段的表格的指针时,预先提取下一个处理阶段的表格存入所述通用CPU处理器的高速缓冲存储器中。
2.如权利要求1所述的报文处理方法,其特征在于,所述对输入报文流进行多级流水线并行处理的步骤进一步包括将所述输入报文流进行初始化;对初始化后的输入报文流进行多级流水线并行处理,当前处理阶段对输入报文处理完毕后,将输入报文送交下一个处理阶段继续处理,同时接收上一个处理阶段发送过来的输入报文,继续当前处理阶段的处理。
3.如权利要求2所述的报文处理方法,其特征在于,所述将所述输入报文流进行初始化的步骤进一步包括选择输入报文流的前n-1个报文;对所述n-1个报文进行前n-m个处理阶段的处理;其中,m、n为自然数,m<n,n为处理阶段个数,m为所述前n-1个报文中的第m个报文。
4.如权利要求1、2或3所述的报文处理方法,其特征在于,所述方法进一步包括在得到下一处理阶段的表格的指针时,将下一个处理阶段准备处理的报文预先提取存入所述通用CPU处理器的高速缓冲存储器中。
5.一种报文处理系统,通过通用CPU处理器对输入报文流进行多个处理阶段的处理,当前处理阶段利用上个处理阶段得到的表格的指针,从所述指针指示的表格中获得配置参数对报文进行处理,其特征在于,所述系统包括报文处理单元,用于对输入报文流进行多级流水线并行处理,每一级流水线对应一个处理阶段;内容预取单元,用于在得到下一处理阶段的表格的指针时,预先提取下一个处理阶段的表格存入所述通用CPU处理器的高速缓冲存储器中。
6.如权利要求4所述的报文处理系统,其特征在于,所述报文处理单元进一步包括初始化单元,将所述输入报文流进行初始化;多个并行报文处理模块,每个报文处理模块对应一个处理阶段;所述多个并行报文处理模块对初始化后的输入报文流进行多级流水线并行处理,当前报文处理模块对输入报文处理完毕后,将输入报文送交下一个报文处理模块继续处理,同时接收上一个报文处理模块发送过来的输入报文,继续当前处理阶段的处理。
7.如权利要求6所述的报文处理系统,其特征在于,所述初始化单元进一步用于选择输入报文流的前n-1个报文,对所述n-1个报文进行前n-m个处理阶段的处理;其中,m、n为自然数,m<n,n为处理阶段个数,m为所述前n-1个报文中的第m个报文。
8.如权利要求5、6或7所述的报文处理系统,其特征在于,所述内容预取单元进一步用于在得到下一处理阶段的表格的指针时,将下一个处理阶段准备处理的报文预先提取存入所述通用CPU处理器的高速缓冲存储器中。
全文摘要
本发明适用于数据处理领域,提供了一种报文处理方法及系统,通过通用CPU处理器对输入报文流进行多个处理阶段的处理,当前处理阶段利用上个处理阶段得到的表格的指针,从所述指针指示的表格中获得配置参数对报文进行处理,所述方法包括对输入报文流进行多级流水线并行处理,每一级流水线对应一个处理阶段;在得到下一处理阶段的表格的指针时,预先提取下一个处理阶段的表格存入所述通用CPU处理器的高速缓冲存储器中。利用本发明对输入报文流进行转发处理时,可以极大的减少访问报文内容与表格内容出现的Cache miss情况,提高报文的转发能力,间接降低设备的成本。
文档编号H04L12/56GK1941735SQ20051010608
公开日2007年4月4日 申请日期2005年9月29日 优先权日2005年9月29日
发明者李珲 申请人:华为技术有限公司