一种用于增量计算网络报文校验和的方法和装置的制作方法

文档序号:7974425阅读:305来源:国知局
专利名称:一种用于增量计算网络报文校验和的方法和装置的制作方法
技术领域
本发明涉及网络技术领域,尤其涉及一种用于增量计算网络报文校验和的方法和
直O
背景技术
在网络交换设备和网络安全设备(以下也简称为“网络设备”)中,经常需要对报文进行修改。比如,在报文经过路由器转发时,需要将IP Header中的TTL(Time-To-Live, 生存时间)减去1,这样就需要重新计算IP Header中的校验和;在做NAT (Network Address Translation,网络地址转换)操作时,需要修改IP地址,这时也需要重新计算IP Header 中的校验和,如果传输层是TCP (Transmission Control ftOtocol,传输控制协议)报文,还需要重新计算TCPHeader中的TCP校验和;在支持syn-cookie操作时,需要修改TCP中的标志位,甚至还需要插入MSS (Maximum Segment Size,最大分段大小)字段,这时也需要修改TCP Header中的标志位和长度信息,也需要重新计算TCP Header中的TCP校验和。总之,对于网络设备来说,经常需要对报文中的校验和进行重新计算。重新计算校验和,一般有两种方法1)直接计算,即用新的数据代替原始的数据, 然后对所有的数据重新计算出新的校验和;幻增量计算,即仅根据修改信息的原始值和新的修改值,再依赖原来的校验和,即可计算出新的校验和信息。对于IP校验和,由于仅需通过IP Header即可计算出IP检验和,所以,上述的两种方法在计算时间和消耗资源上区别不大。但对于TCP检验和、UDP^ser Datagram Protocol,用户数据包协议)校验和 ICMPanternet ControlMessage Protocol,因特网控制报文协议)检验和来说,由于它们都需要通过计算整个报文才能得到校验和信息,因此, 一般都采用增量计算的方法。如图1所示,在网络设备中,增量计算检验和的处理流程为网络设备接收到报文后,先对报文进行识别,通过以太网协议号可判别报文是不是IP报文。如果是IP报文,则需要提取出IP报文长度、源IP地址和目的IP地址,并通过 IP Header中的协议号可识别不同类型的报文,比如TCP报文、UDP报文或者ICMP报文,等等。根据不同的报文类型,提取出和计算校验和相关的参数,比如源端口号、目的端口号、请求序列号、回应序列号、TCP标志信息,等等。然后将这些参数送给后面的逻辑进行校验和计算,完成计算后得到新的校验和,再用新的校验和来替代报文中原来的校验和,从而实现了报文的校验和计算和修改。其中,将参数送给后面的逻辑进行校验和计算的算法,目前业界已经形成了一些标准算法,这些算法在RFC1071和RFC1141中进行了描述。其中,RFCl 141中给出了一种通行的增量计算方法,如公式1 C'= C+m+ m'公式 1在上面的公式1中C'表示新的校验和,实际上填充到报文中的新校验和值是 C';
C表示原来的校验和,实际上从报文中提取出来的旧校验和值是 C ;m表示需要修改的值,即修改信息的原来值;m'表示修改后的值。公式1中,符号 表示按位取反,符号+表示1的补码加,即完成逻辑加法后,如果有进位,还需要在加法结果上再加上进位值。由于校验和的位宽为16bit,因此,在实际使用公式1进行计算时,需要先将需要修改的值m和修改后的值m'按照16bit对齐,然后进行1的补码加。如果同时修改了多个值,可对多个值按照公式1计算新的校验和。然而,利用上述方案进行计算时,如果需要修改的字段较多,需要将每个修改字段的原始值和修改值按照公式1进行计算,这样就需要占用较多的系统资源,特别是在用硬件实现时,这个问题表现得尤其明显,这样不仅占用较多的逻辑资源,而且还需要较长的时间,从而降低了计算校验和的处理性能。

发明内容
本发明提供一种用于增量计算网络报文校验和的方法和装置,用以解决现有技术中当修改的报文字段较多时,计算校验和占用系统资源多且计算效率低下的问题。为了解决上述技术问题,本发明采用的技术方案如下一方面,本发明提供一种用于增量计算网络报文校验和的方法,包括网络设备解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;网络设备获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;网络设备利用所述报文中携带的原始校验和以及计算得到的所述变化值和/或增加的参数值计算得到新的校验和。进一步地,本发明所述方法中,所述网络设备获取到的所述报文字段为多个时,将计算得到的各报文字段的变化值和/或参数值进行合并计算。进一步地,本发明所述方法中,所述仅是位置交换的报文字段包括仅是交换IP地址以及仅是交换端口号的报文字段。进一步地,本发明所述方法中,所述更改后报文字段的变化值以及增加的报文字段的参数值均通过16位2进制的方式表示;所述新的校验和 C'= [ ( C)+16’ h(更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加。进一步地,本发明所述方法还包括所述网络设备将计算得到的新的校验和添加到处理后的报文中,并将该报文输
出ο另一方面,本发明还提供一种用于增量计算网络报文校验和的装置,包括解析模块,用于解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;计算模块,用于获取处理后更改和/或增加的报文字段,计算更改后报文字段的
4变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;校验和获取模块,用于利用所述报文中携带的原始校验和以及所述计算模块得到的所述变化值和/或增加的参数值计算得到新的校验和。进一步地,本发明所述装置中,所述计算模块,还用于当获取到的所述报文字段为多个时,将计算得到的各报文字段的变化值和/或参数值进行合并计算。进一步地,本发明所述装置中,所述计算模块中仅是位置交换的报文字段包括仅是交换IP地址以及仅是交换端口号的报文字段。进一步地,本发明所述装置中所述计算模块中更改后报文字段的变化值以及增加的报文字段的参数值均通过 16位2进制的方式表示;所述校验和获取模块获取的新的校验和 C'= [ ( C)+16’ h(更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加。进一步地,本发明所述装置还包括报文输出模块,用于将计算得到的新的校验和添加到处理后的报文中,并将该报文输出。与现有技术相比,本发明有益效果如下本发明根据网络设备实际应用中常用的操作,充分结合已有算法的本质,在已有算法的基础上进行优化,减少了参与计算的参数的数量,进而减少了算法逻辑占用的资源, 特别是在硬件实现时,降低了算法的处理时间,提高了处理性能。


图1为现有技术中网络设备增量计算检验和的处理流程示意图;图2为本发明提供的一种用于增量计算网络报文校验和的方法的流程图;图3为现有技术中网络设备接收报文后的处理流程图;图4为实施例一中采用现有技术算法的处理流程示意图;图5为实施例一中采用本发明所述算法的处理流程示意图;图6为实施例二中采用现有技术算法的处理流程示意图;图7为实施例二中采用本发明所述算法的处理流程示意图;图8为本发明提供的一种用于增量计算网络报文校验和的装置的结构示意图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了解决现有技术中存在的问题,本发明实施例提供一种用于增量计算网络报文校验和的方法和装置,所述方法根据网络设备实际应用中常用的操作,并充分结合已有算法的本质,在已有算法的基础上进行优化,减少了参与计算的参数的数量,进而减少了算法逻辑占用的资源,特别是在硬件实现时,降低了算法的处理时间,提高了处理性能。如图2所示,本发明提供的一种用于增量计算网络报文校验和的方法,具体包括步骤S201、网络设备解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;该步骤中,报文的解析过程以及报文的处理过程与传统意义上网络设备对接收到的报文的处理方式相同,对于其处理过程根据不同的报文类型有不同的处理,这对本领域技术人员来说属于公知常识,所以对其处理过程在此不做赘述。步骤S202、网络设备获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;确切地说,该步骤中,网络设备考虑到计算校验和时存在的一些固有情况,基于这些固有情况,本发明对已有算法进行优化,计算校验和时当存在如下几种情况时,可以减少校验和求取的计算量,其中,几种情况具体为(1)如果两个宽度相同的字段仅仅发生位置交换,则这两个字段都可以不参与计算;例如交换IP地址,IP地址可以不参与计算;交换端口号时,端口号可以不参与计算;(2)对某个字段进行简单的修改时,比如简单的增加某个数值,仅需要将变化值纳入计算即可,不必对该字段的原始值进行计算;(3)当需要插入新的字段时,将新插入的字段按16bit分割,每16bit作为一个参数,直接进行计算;(4)当多个字段变化时(字段修改或者增加字段),可将这些字段的变化值合并为一个值,利用这个合并值进行后续计算即可,不必对这些字段的原始值进行计算。步骤S203、网络设备利用所述报文中携带的原始校验和以及计算得到的所述变化值和/或增加的参数值计算得到新的校验和。其中,新的校验和 C'= [ ( C)+16’h (更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加;16’ h表更改后的变化值或者增加后的参数值为16位宽2进制的值。通过步骤S203得到新的校验和后,将计算得到的新的校验和添加到处理后的报文中,并将该报文输出。为了更清楚的阐述本发明所述方法的具体实现过程,下面根据图3 图7给出本发明一个较佳的实施例,并结合对实施例的描述,进一步给出本发明的技术细节。为了计算的方便,本发明实施例中对已有的增量计算公式1进行简单的变换,得至Ij C'= C+m+ m'= [ ( C)+ m+m']公式2基于上述变换后的公式,下面给出几个具体实施例,下述实施例为了更充分说明本发明的优越性,将现有技术采用的算法和本发明采用的算法的进行比对介绍。本实施例中,设网络设备支持syn-cookie功能,网络设备接收报文后的处理流程 (该处理过程为现有技术),如图3所示,包括步骤1,网络设备接收报文;
6
步骤2,对报文进行识别和解析;步骤3,判断报文是否为携带SYN标志的TCP报文,若否,转发报文;若是,执行步骤4 ;步骤4,判断是否需要回应syn-cookie报文,若否,转发报文;若是,执行步骤5 ;步骤5,交换MAC地址、IP地址、TCP端口号,将TCP标志中的ACK标志置1 ;步骤6,计算请求序列号和回应序列号;步骤7,判断是否需要插入MSS字段,若是,执行步骤8 ;否则,执行步骤9 ;步骤8,插入MSS字段,并将TCP Header长度加1、IP报文长度加4,执行步骤9 ;步骤9,增加计算TCP校验和;步骤10,用新计算的TCP校验和替代报文中原始的校验和;步骤11,转发报文。由上述处理流程可知,网络设备进行报文处理时,对报文的修改包括以下两种情况,第一,交换IP地址和端口号,将SYN标志修改为SYN+ACK标志;或者,第二,交换IP地址和端口号,将SYN标志修改为SYN+ACK标志,并增加MSS字段(当增加MSS字段后,TCP Header长度增加1,IP报文长度增加4)。下面就分别对上述两种情况下计算校验和的过程进行说明实施例一,对应上述第一种情况一,采用已有校验和算法,按所述公式2,实现方式如下 C'= [ ( C)+ SIP+SIP ‘ + DIP+DIP ‘ + SP0RT+SP0RT ‘ + DP0RT+DP0RT' + Flags+Flags ‘]公式 3其中, C'表示新的校验和, C表示原来的校验和;SIP表示原来的源IP地址,SIP'表示新的源IP地址;DIP表示原来的目的IP地址,DIP'表示新的目的IP地址;SPORT表示原来的源端口,SPORT'表示新的源端口号;DPORT表示原来的目的端口,DPORT ‘表示新的目的端口号;Flags表示原来的标志位值,Flags'表示新的标志位值。公式3中,符号 表示按位取反,符号+表示1的补码加,即完成逻辑加法后,如果有进位,还需要在加法结果上再加上进位值。按照现有技术的方案,增量计算校验和的技术方案如图4所示。二,采用本发明的校验和算法,有 C'= [ ( 0+16,h0010]公式 4具体地,由于IP地址和端口号只是进行了位置交换,因此,根据本实施例中的交换位置时参数可不参与计算的原则,IP地址和端口号都不必参加计算。另外,对于标志位值来说,仅是将原来的SYN标志修改为SYN+ACK标志,相当于仅增加了一个ACK标志,因此, 只需在原来的基础上加上16’ h0010即可。这样,就将公式3简化成了公式4 ;增量计算校验和的技术方案如图5所示。由上述比对,可知公式3中需要对11个参数进行计算,而在公式4中仅需对2个参数进行计算,极大的减少了计算量。实施例二,对应上述第二种情况
—,采用已有校验和算法,按所述公式2,实现方式如下 C'= [ ( C)+ SIP+SIP ‘ + DIP+DIP ‘ + SP0RT+SP0RT ‘ + DP0RT+DP0RT‘ + TCP_Len+TCP_Len‘ + Flags+Flags‘ +MSS+ IP_Len+IP_Len‘] 公式5其中, C'表示新的校验和, C表示原来的校验和;SIP表示原来的源IP地址,SIP'表示新的源IP地址;DIP表示原来的目的IP地址,DIP'表示新的目的IP地址;SPORT表示原来的源端口,SPORT'表示新的源端口号;DPORT表示原来的目的端口,DPORT'表示新的目的端口号;TCP_Len表示原来的TCP报文长度,TCP_Len'表示新的报文长度;Flags表示原来的TCP Header长度和标志位值,Flags‘表示新的TCP Header长度和标志位值;MSS表示插入的MSS值;IP_Len表示原来的IP报文长度,IP_Len'表示新的IP报文长度。按照现有技术的方案,增量计算校验和的技术方案如图6所示。二,采用本发明的校验和算法,有 C'= [ ( C)+MSS+16,hl014]公式 6具体地,由于IP地址和端口号只是进行了位置交换,因此,根据本发明中的交换位置时参数可不参与计算的原则,IP地址和端口号都不必参加计算。另外,对于标志位值来说,仅是将原来的SYN标志修改为SYN+ACK标志,相当于仅增加了一个ACK标志,因此,只需在原来的基础上加上16’ h0010即可;对于TCP报文长度来说,在原来的长度基础上增加了 1,因此,在重新计算校验和时,需加上数值16’ hlOOO ;而对于整个IP报文来说,IP报文长度增加了 4,在计算TCP校验和时也要考虑这个变化,因此,还需要加上数值16’ h0004。 这样,就可将这3个变化合并到一个参数上,即16’ hl014。于是就将公式5简化成了公式 6 ;增量计算校验和的技术方案如图7所示。需要说明的是,对于16’hl014这个数值,前面的16表示宽度为16 (指2进制数字的个数),’ h表示后面的数字是16进制的,这样,后面的1表示2进制的0001,0表示2进制的0000,4表示2进制的0100。16’ hl014这个数值如果用标准的2进制表述,应该写成16’b0001_0000_0001_0100,这里的b表示后面的数字为2进制。由上述比对,可知公式5中需要对16个参数进行计算,而在公式6中仅需对3个参数进行计算,极大的减少了计算量。综上所述,可见本发明所述方法充分结合已有算法的本质,在已有算法的基础上进行优化,减少了参与计算的参数的数量,进而减少了算法逻辑占用的资源,特别是在硬件实现时,降低了算法的处理时间,提高了处理性能。如图8所示,本发明还提供一种用于增量计算网络报文校验和的装置,包括解析模块810,用于解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;计算模块820,用于获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;校验和获取模块830,用于利用所述报文中携带的原始校验和以及所述计算模块得到的所述变化值和/或增加的参数值计算得到新的校验和。基于上述装置结构,下面对上述装置中的各模块进行进一步说明。优选地,计算模块820,还用于当获取到的所述报文字段为多个时,将计算得到的各报文字段的变化值和/或参数值进行合并计算。优选地,计算模块820中仅是位置交换的报文字段包括仅是交换IP地址以及仅是交换端口号的报文字段;且计算模块820中更改后报文字段的变化值以及增加的报文字段的参数值均通过16位2进制的方式表示;校验和获取模块830获取的新的校验和 C'= [ ( 0+16’ h(更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加。进一步地,所述装置还包括报文输出模块840,用于将计算得到的新的校验和添加到处理后的报文中,并将该报文输出。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种用于增量计算网络报文校验和的方法,其特征在于,包括网络设备解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;网络设备获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和 /或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;网络设备利用所述报文中携带的原始校验和以及计算得到的所述变化值和/或增加的参数值计算得到新的校验和。
2.如权利要求1所述的方法,其特征在于,所述网络设备获取到的所述报文字段为多个时,将计算得到的各报文字段的变化值和/或参数值进行合并计算。
3.如权利要求1所述的方法,其特征在于,所述仅是位置交换的报文字段包括仅是交换IP地址以及仅是交换端口号的报文字段。
4.如权利要求1或2所述的方法,其特征在于,所述更改后报文字段的变化值以及增加的报文字段的参数值均通过16位2进制的方式表不;所述新的校验和 C'= [ ( C)+16’ h(更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加。
5.如权利要求1所述的方法,其特征在于,所述方法还包括所述网络设备将计算得到的新的校验和添加到处理后的报文中,并将该报文输出。
6.一种用于增量计算网络报文校验和的装置,其特征在于,包括解析模块,用于解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;计算模块,用于获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;校验和获取模块,用于利用所述报文中携带的原始校验和以及所述计算模块得到的所述变化值和/或增加的参数值计算得到新的校验和。
7.如权利要求6所述的装置,其特征在于,所述计算模块,还用于当获取到的所述报文字段为多个时,将计算得到的各报文字段的变化值和/或参数值进行合并计算。
8.如权利要求6所述的装置,其特征在于,所述计算模块中仅是位置交换的报文字段包括仅是交换IP地址以及仅是交换端口号的报文字段。
9.如权利要求6或7所述的装置,其特征在于,所述计算模块中更改后报文字段的变化值以及增加的报文字段的参数值均通过16位 2进制的方式表示;所述校验和获取模块获取的新的校验和 C'= [ ( C)+16’ h(更改后的变化值和/或增加后的参数值)];其中, C为原始校验和、 表示按位取反、+表示1的补码加。
10.如权利要求6所述的装置,其特征在于,所述装置还包括报文输出模块,用于将计算得到的新的校验和添加到处理后的报文中,并将该报文输出ο
全文摘要
本发明公开了一种用于增量计算网络报文校验和的方法和装置,所述方法包括网络设备解析数据发送端发送的报文,并根据解析得到的报文类型,按照协议对所述报文进行处理;网络设备获取处理后更改和/或增加的报文字段,计算更改后报文字段的变化值和/或增加的报文字段的参数值;其中,所述更改的报文字段不包括仅是位置交换的报文字段;网络设备利用所述报文中携带的原始校验和以及计算得到的所述变化值和/或增加的参数值计算得到新的校验和。本发明所述的校验和算法较已有算法减少了算法逻辑占用的资源,特别是在硬件实现时,降低了算法的处理时间,提高了处理性能。
文档编号H04L12/56GK102404210SQ20111036202
公开日2012年4月4日 申请日期2011年11月15日 优先权日2011年11月15日
发明者甘云慧 申请人:北京天融信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1