System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及分组交换,具体涉及一种报文处理方法及系统。
技术介绍
1、在网络处理器的设计中,需要完成对报文的修改,那么整个报文或者部分报文必须对处理流水可见,并且报文的长度还有可能会改变,特别是在隧道运用的时候。而在完成报文的解析和转发之前,报文的长度是不可预测的。具体的,在网络处理器开始处理报文时,往往需要对报文的头部进行解析,而解析之后通常需要对报文进行减头、加头或者修改头部的操作,以致报文头长度发生改变。
2、其中,在进行报文头部添加时,会导致报文头长度变长,进而造成原来分配给报文头部的包缓存长度就不够了,以致无法实现头部变长部分的存储。相关技术中,通常会通过为报文头部缓存申请一个更大规格的包缓存来缓存经加头处理后的报文头;但在网络处理器的asic(application specific integrated circuit,专用集成电路)设计中,由于报文头部缓存需要贯穿于整个流水线内部,即从开始处理报文到报文编辑的结束,整个总线信号将从流水线头带至结束,以致会增加网络处理器的缓存消耗。
技术实现思路
1、本申请提供一种报文处理方法及系统,可以解决现有技术中存在的通过申请更大规格的包缓存来缓存经加头处理后的报文头而导致缓存消耗增加的技术问题。
2、第一方面,本申请实施例提供一种报文处理方法,所述报文处理方法包括以下步骤:
3、在对存储于目标包缓存中的目标报文头进行处理时,若检测到存在与所述目标报文头对应的加头报文,则基于所述加头报文对所述目
4、待完成对所述目标报文头的处理后,基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装。
5、结合第一方面,在一种实施方式中,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
6、当检测到所述更新后的目标包缓存的头部不存在修改后报文,则将所述更新后的目标包缓存的尾部所存储的加头报文与所述目标报文中的目标报文头进行拼接,以完成对所述目标报文的封装。
7、结合第一方面,在一种实施方式中,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
8、当检测到更新后的目标包缓存的头部存在修改后报文,则对所述修改后报文和所述更新后的目标包缓存的尾部所存储的加头报文进行拼接,以得到修改头;
9、基于所述修改头对所述目标报文中的目标报文头进行覆盖,以完成对所述目标报文的封装。
10、结合第一方面,在一种实施方式中,在所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装的步骤之前,还包括:
11、获取与所述目标包缓存对应的修改指针值,所述修改指针值用于表征目标报文头被修改的最深位置;
12、判断所述修改指针值是否大于0;
13、若是,则判定更新后的目标包缓存的头部存在修改后报文;
14、若否,则判定更新后的目标包缓存的头部不存在修改后报文。
15、结合第一方面,在一种实施方式中,在所述若检测到存在与所述目标报文头对应的加头报文的步骤之前,还包括:
16、获取与所述目标包缓存对应的位置指针值,所述位置指针值用于表征目标报文头的起始位置;
17、判断所述位置指针值是否小于0;
18、若是,则判定存在与所述目标报文头对应的加头报文;
19、若否,则判定不存在与所述目标报文头对应的加头报文。
20、第二方面,本申请实施例提供了一种报文处理系统,所述报文处理系统包括:
21、存储模块,其用于在对存储于目标包缓存中的目标报文头进行处理时,若检测到存在与所述目标报文头对应的加头报文,则基于所述加头报文对所述目标包缓存的尾部报文进行更新覆盖,得到更新后的目标包缓存,以完成所述加头报文的缓存;
22、处理模块,其用于待完成对所述目标报文头的处理后,基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装。
23、结合第二方面,在一种实施方式中,所述处理模块具体用于:
24、当检测到所述更新后的目标包缓存的头部不存在修改后报文,则将所述更新后的目标包缓存的尾部所存储的加头报文与所述目标报文中的目标报文头进行拼接,以完成对所述目标报文的封装。
25、结合第二方面,在一种实施方式中,所述处理模块具体还用于:
26、当检测到更新后的目标包缓存的头部存在修改后报文,则对所述修改后报文和所述更新后的目标包缓存的尾部所存储的加头报文进行拼接,以得到修改头;
27、基于所述修改头对所述目标报文中的目标报文头进行覆盖,以完成对所述目标报文的封装。
28、结合第二方面,在一种实施方式中,所述存储模块还用于:
29、获取与所述目标包缓存对应的修改指针值,所述修改指针值用于表征目标报文头被修改的最深位置;
30、判断所述修改指针值是否大于0;
31、若是,则判定更新后的目标包缓存的头部存在修改后报文;
32、若否,则判定更新后的目标包缓存的头部不存在修改后报文。
33、结合第二方面,在一种实施方式中,所述存储模块还用于:
34、获取与所述目标包缓存对应的位置指针值,所述位置指针值用于表征目标报文头的起始位置;
35、判断所述位置指针值是否小于0;
36、若是,则判定存在与所述目标报文头对应的加头报文;
37、若否,则判定不存在与所述目标报文头对应的加头报文。
38、本申请实施例提供的技术方案带来的有益效果至少包括:
39、通过利用包缓存的尾部可覆盖且并不影响实际报文修改的特性,将添加的头部报文卷入包缓存尾部,以实现对经加头处理后的报文头的缓存,也即基于加头报文对目标包缓存的尾部报文进行更新覆盖,得到更新后的目标包缓存,进而完成了加头报文的存储;然后再基于更新后的目标包缓存对目标报文进行封装,以实现在不增加包缓存大小的情况下完成隧道报文的头部添加过程,进而有效减少了芯片面积和缓存消耗,解决了相关技术中通过申请更大规格的包缓存来缓存经加头处理后的报文头而导致缓存消耗增加的技术问题。
本文档来自技高网...【技术保护点】
1.一种报文处理方法,其特征在于,所述报文处理方法包括以下步骤:
2.如权利要求1所述的报文处理方法,其特征在于,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
3.如权利要求1所述的报文处理方法,其特征在于,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
4.如权利要求2或3所述的报文处理方法,其特征在于,在所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装的步骤之前,还包括:
5.如权利要求1所述的报文处理方法,其特征在于,在所述若检测到存在与所述目标报文头对应的加头报文的步骤之前,还包括:
6.一种报文处理系统,其特征在于,所述报文处理系统包括:
7.如权利要求6所述的报文处理系统,其特征在于,所述处理模块具体用于:
8.如权利要求6所述的报文处理系统,其特征在于,所述处理模块具体还用于:
9.如权利要求7或8所述的报文处理系统,其特征在于,所述存储模块还用于:
10.如权利要求6所述
...【技术特征摘要】
1.一种报文处理方法,其特征在于,所述报文处理方法包括以下步骤:
2.如权利要求1所述的报文处理方法,其特征在于,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
3.如权利要求1所述的报文处理方法,其特征在于,所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装,包括:
4.如权利要求2或3所述的报文处理方法,其特征在于,在所述基于所述更新后的目标包缓存对与所述目标报文头对应的目标报文进行封装的步骤之前,还包括:
5.如...
【专利技术属性】
技术研发人员:陈永洲,邓作,
申请(专利权)人:烽火通信科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。