專利名稱:一種用于增量計算網絡報文校驗和的方法和裝置的制作方法
技術領域:
本發明涉及網絡技術領域,尤其涉及一種用于增量計算網絡報文校驗和的方法和
直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日
發明者甘云慧 申請人:北京天融信科技有限公司