專利名稱:Ip報(bào)文的分片重組方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種IP報(bào)文的分片重組方法和裝置。
背景技術(shù):
互耳關(guān)網(wǎng)協(xié)議(Internet Protocol,簡(jiǎn)稱為IP)報(bào)文分片是網(wǎng)絡(luò)上傳輸 IP報(bào)文的一種常用的技術(shù)手段。IP協(xié)議在傳輸數(shù)據(jù)包時(shí),將數(shù)據(jù)報(bào)文分 為若干分片進(jìn)行傳輸,并在目標(biāo)系統(tǒng)中進(jìn)行重組。
報(bào)文的分片和重新組裝的過程對(duì)傳輸層是透明的,其原因是當(dāng)IP數(shù) 據(jù)報(bào)進(jìn)行分片之后,只有當(dāng)它到達(dá)目的站時(shí),才可進(jìn)行重新組裝,且它 是由目的端的IP層來完成的,并且,分片之后的數(shù)據(jù)報(bào)根據(jù)需要也可以 再次進(jìn)行分片。
目前,網(wǎng)絡(luò)上通常會(huì)由很多攻擊者,IP分片的傳輸通常也會(huì)遭到攻 擊。 一般來說,攻擊者會(huì)將攻擊IP包分為兩個(gè)分片,第一個(gè)分片中包含 包過濾設(shè)備允許的端口 (例如,http (TCP 80)等端口 ),在第二個(gè)分片 中會(huì)采用極小的偏移量使得第二個(gè)分片能夠覆蓋第一個(gè)分片的一部分內(nèi) 容,通常攻擊者會(huì)覆蓋包含端口內(nèi)容的部分。
在接收攻擊者發(fā)送的這兩個(gè)報(bào)文分片時(shí),由于在第一個(gè)分片中包含 防火墻中允許的端口,因此第一個(gè)分片將會(huì)被通過。而第二個(gè)分片中具 有允許通過的第一個(gè)分片的ID,因此也被允許通過。但是當(dāng)這兩個(gè)分片 到達(dá)目標(biāo)主機(jī)進(jìn)行重組之后,由于第一個(gè)分片的端口號(hào)被第二個(gè)分片的 端口號(hào)覆蓋,因此后續(xù)的訪問將會(huì)通過第二個(gè)分片中指定的端口進(jìn)行, 也就是說,繞過了防火墻訪問了未被授權(quán)的端口。
由于IP分片重組算法總會(huì)存在漏洞, 一些惡意程序利用這些已知公 開算法中的漏洞,設(shè)法避過網(wǎng)絡(luò)安全設(shè)備,進(jìn)而達(dá)到攻擊主機(jī)的目的。
目前所采用的報(bào)文分片重組技術(shù)大多需要CPU的介入,當(dāng)報(bào)文分片重組的工作量很大時(shí)會(huì)增加CPU的負(fù)擔(dān),降低整個(gè)系統(tǒng)的性能。盡管目 前已經(jīng)提出了一些將報(bào)文重組轉(zhuǎn)移至網(wǎng)絡(luò)處理設(shè)備進(jìn)行的方案,但是這 些方案往往較為復(fù)雜,不能夠?qū)崟r(shí)、快速地進(jìn)行報(bào)文分片的重組。
針對(duì)相關(guān)技術(shù)中報(bào)文重組實(shí)時(shí)性差、重組速度慢的問題,目前尚未 提出有效的解決方案。
發(fā)明內(nèi)容
針對(duì)相關(guān)技術(shù)中報(bào)文重組實(shí)時(shí)性差、重組速度慢的問題,本發(fā)明的 目的在于提供一種IP報(bào)文的分片重組方案,以解決上述問題中的至少之
為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種IP報(bào)文的分 片重組方法。
根據(jù)本發(fā)明的IP報(bào)文的分片重組方法包括
將接收到的屬于同一 IP報(bào)文的分片以及分片的控制信息存儲(chǔ)至第一 存儲(chǔ)分區(qū)中;
將與第 一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一 IP報(bào)文的 分片及該分片的控制信息存儲(chǔ)至與第 一存儲(chǔ)分區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);
對(duì)于第一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)中的每一個(gè),在其所對(duì)應(yīng)的IP報(bào) 文的所有分片均接收完畢的情況下,輸出該存儲(chǔ)分區(qū)中的所有分片。
其中,在第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)的處理具體可 以包括對(duì)于接收的每個(gè)分片,根據(jù)其控制信息確定該分片在所屬IP報(bào) 文中的位置;根據(jù)位置將該分片存儲(chǔ)至第一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)中 的相應(yīng)位置,并將該分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)或第二存儲(chǔ)分 區(qū)中預(yù)先劃分的特定存儲(chǔ)區(qū)的相應(yīng)位置。
并且,在向第二存儲(chǔ)分區(qū)進(jìn)行存儲(chǔ)之前,該方法還可以包括根據(jù) 分片的控制信息確定該分片與第 一 存儲(chǔ)分區(qū)中存儲(chǔ)的分片是否出現(xiàn)哈希 沖突;在判斷結(jié)果為是的情況下,判斷第二存儲(chǔ)分區(qū)中已存儲(chǔ)的分片與 該分片是否屬于同一 IP報(bào)文,并在判斷結(jié)果為是或第二存儲(chǔ)分區(qū)為空的 情況下將該分片存儲(chǔ)至第二存儲(chǔ)分區(qū)中。并且,在根據(jù)分片的控制信息確定該分片與第 一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)中存儲(chǔ)的分片屬于不同的IP報(bào)文且未出現(xiàn)哈希沖突的情況下,將該分片及其控制信息存儲(chǔ)至第三存儲(chǔ)分區(qū),并將與該分片屬于不同報(bào)文且出現(xiàn)哈希沖突的分片存儲(chǔ)至與第三存儲(chǔ)分區(qū)對(duì)應(yīng)的第四存儲(chǔ)分區(qū)。
優(yōu)選地,在第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)的處理還可以包括在第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)的特定存儲(chǔ)區(qū)中更新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前存儲(chǔ)分區(qū)與其他存儲(chǔ)分區(qū)之間的哈希沖突關(guān)系。
優(yōu)選地,上述控制信息可以包括四元組信息、IP頭長度、IP纟艮文長度、和分片標(biāo)識(shí)。
根據(jù)本發(fā)明的另 一方面,提供了 一種IP報(bào)文的分片重組裝置。根據(jù)本發(fā)明的IP報(bào)文的分片重組裝置包括提取模塊,用于從接收的分片中提取分片的控制信息;第一存儲(chǔ)模塊,用于存儲(chǔ)接收的分片;第二存儲(chǔ)模塊,用于存儲(chǔ)由提取模塊提取的控制信息;主控模塊,用于將第一存儲(chǔ)模塊存儲(chǔ)的屬于同一IP報(bào)文的分片以及第二存儲(chǔ)模塊存儲(chǔ)的相應(yīng)分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū);以及將與第 一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一 IP報(bào)文的分片及該分片的控制信息存儲(chǔ)至與第一存儲(chǔ)分區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);以及用于在第一存儲(chǔ)分區(qū)和/或第二存儲(chǔ)分區(qū)所對(duì)應(yīng)的IP報(bào)文的所有分片均接收完畢的情況下,通知重組輸出模塊輸出第一存儲(chǔ)分區(qū)和/或第二存儲(chǔ)分區(qū)中存儲(chǔ)的分片;
第一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū),用于在主控模塊的控制下進(jìn)行存儲(chǔ);
重組輸出模塊,用于在主控模塊的控制下輸出第 一存儲(chǔ)分區(qū)和/或第二存儲(chǔ)分區(qū)中的分片。
該裝置還可以包括哈希計(jì)算模塊,用于對(duì)第二存儲(chǔ)模塊中分片的控制信息進(jìn)行哈希計(jì)算,確定屬于同一IP報(bào)文的分片,以供主控模塊判斷是否出現(xiàn)哈希沖突并控制第 一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)進(jìn)行存儲(chǔ)。
其中,在主控模塊控制第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)時(shí),對(duì)于接收的每個(gè)分片,主控模塊根據(jù)其控制信息確定該分片在所屬 IP報(bào)文中的位置,根據(jù)位置將該分片存儲(chǔ)至第一存儲(chǔ)分區(qū)或第二存儲(chǔ)分 區(qū)中的相應(yīng)位置,并將該分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)或第二存 儲(chǔ)分區(qū)中預(yù)先劃分的特定存儲(chǔ)區(qū)的相應(yīng)位置。
并且,在主控模塊控制第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ) 時(shí),主控模塊還用于在第一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)的特定存儲(chǔ)區(qū)中更 新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前 存儲(chǔ)分區(qū)與其他存儲(chǔ)分區(qū)之間的哈希沖突關(guān)系。
借助本發(fā)明上述至少一個(gè)技術(shù)方案,通過以緩沖區(qū)組的方式存儲(chǔ)待 重組的IP分片,在IP報(bào)文的所有分片完全接收之后即完成了分片的重 組,不僅能夠?qū)崟r(shí)、快速地實(shí)現(xiàn)分片報(bào)文的重組,還能夠有效避免哈希 沖突,避免為CPU增加處理負(fù)擔(dān),因此有助于不同類型數(shù)據(jù)的維護(hù)。
圖1是根據(jù)本發(fā)明方法實(shí)施例一的IP報(bào)文的分片重組方法的流程
圖2是根據(jù)本發(fā)明方法實(shí)施例一的IP報(bào)文的分片重組方法所采用的
存儲(chǔ)分區(qū)的結(jié)構(gòu)示意圖3是根據(jù)本發(fā)明裝置實(shí)施例的IP報(bào)文的分片重組裝置的框圖; 圖4是根據(jù)本發(fā)明裝置實(shí)施例的IP報(bào)文的分片重組裝置的優(yōu)選結(jié)構(gòu)
的框圖。
具體實(shí)施例方式
功能概述
考慮到相關(guān)技術(shù)中報(bào)文重組實(shí)時(shí)性差、重組速度慢的問題,本發(fā)明 提出以緩沖區(qū)組的方式存儲(chǔ)待重組的分片,并在報(bào)文的所有分片完全接 收之后進(jìn)行分片重組,不僅能夠?qū)崟r(shí)、快速地實(shí)現(xiàn)分片報(bào)文的重組,還 能夠有效避免哈希沖突,避免為CPU增加處理負(fù)擔(dān)。
下面將結(jié)合附圖描述本發(fā)明的實(shí)施例。方法實(shí)施例一
在本實(shí)施例中,提供了一種IP報(bào)文的分片重組方法,其中,將第一 存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)作為一個(gè)緩沖區(qū)組,將第三存儲(chǔ)分區(qū)和第四存 儲(chǔ)分區(qū)作為一個(gè)緩沖區(qū)組。
圖1是根據(jù)本實(shí)施例的IP報(bào)文的分片重組方法的流程圖。如圖l所
示,根據(jù)本實(shí)施例的IP報(bào)文的分片重組方法包括
步驟S102,將接收到的屬于同一 IP報(bào)文的分片以及分片的控制信息 (優(yōu)選地,報(bào)文的控制信息可以至少包括四元組信息(包括源地址、 目的地址、ID、和協(xié)議))、IP頭長度、IP報(bào)文長度、和分片標(biāo)識(shí))存 儲(chǔ)至第一存儲(chǔ)分區(qū)中;
步驟S104,將與第一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突(在判斷 哈希沖突時(shí),可以首先根據(jù)分片的四元組信息計(jì)算哈希值,并判斷該哈 希值是否與根據(jù)之前存儲(chǔ)的分片的四元組信息得到的哈希值出現(xiàn)哈希沖 突)且屬于另一 IP報(bào)文的分片及該分片的控制信息存儲(chǔ)至與第一存儲(chǔ)分 區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);
步驟S106,對(duì)于第一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)中的每一個(gè),在其所 對(duì)應(yīng)的IP報(bào)文的所有分片均接收完畢的情況下,輸出該存儲(chǔ)分區(qū)中的所 有分片,例如,假設(shè)第一存儲(chǔ)分區(qū)接收的分片屬于IP報(bào)文1,則可以認(rèn) 為第一存儲(chǔ)分區(qū)對(duì)應(yīng)于IP報(bào)文1,在IP報(bào)文1的所有分片都存儲(chǔ)在第一 存儲(chǔ)分區(qū)中之后輸出第一存儲(chǔ)分區(qū)中存儲(chǔ)的所有分片(即,在重組完成 后進(jìn)行重組輸出)。
通過上述處理,能夠以緩沖區(qū)組(即,第一存儲(chǔ)分區(qū)、第二存儲(chǔ)分 區(qū))的方式存儲(chǔ)待重組的分片,在所有分片完全接收之后就相當(dāng)于實(shí)現(xiàn) 了IP分片的重組,不僅能夠?qū)崟r(shí)、快速地實(shí)現(xiàn)分片報(bào)文的重組,還能夠 有效避免哈希沖突,避免為CPU增加處理負(fù)擔(dān);此外,由于將分片以及 相應(yīng)的控制信息存儲(chǔ)在同一存儲(chǔ)分區(qū)中,因此有助于同時(shí)維護(hù)兩種不同 類型的數(shù)據(jù),同時(shí)能夠在哈希沖突鏈長度為2的情況下進(jìn)行分片重組。
優(yōu)選地,為了便于重組,在第一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)進(jìn)行分片 存儲(chǔ)時(shí),對(duì)于接收的每個(gè)分片,可以根據(jù)其控制信息確定該分片在所屬報(bào)文中的位置;之后就可以根據(jù)該確定的位置將該分片存儲(chǔ)至第一存儲(chǔ) 分區(qū)或第二存儲(chǔ)分區(qū)中的相應(yīng)位置,并將該分片的控制信息存儲(chǔ)至第一 存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)中預(yù)先劃分的特定存儲(chǔ)區(qū)(優(yōu)選地,特定存儲(chǔ) 區(qū)可以位于每個(gè)存儲(chǔ)分區(qū)的頭部)的相應(yīng)位置。例如,假設(shè)接收到一個(gè)IP分片,確定該分片在其所屬的IP報(bào)文中的 位置為第三個(gè)分片,且該報(bào)文中的其他分片已經(jīng)存儲(chǔ)在第一存儲(chǔ)分區(qū)中, 則根據(jù)當(dāng)前已知分片的長度將該分片存儲(chǔ)至第 一存儲(chǔ)分區(qū)中第三個(gè)分片 的位置,并將該分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)中的特定存儲(chǔ)區(qū)里 的第三個(gè)控制信息的位置,這樣存儲(chǔ)的過程就相當(dāng)于重組的過程。應(yīng)當(dāng)注意,在向第二存儲(chǔ)分區(qū)進(jìn)行存儲(chǔ)之前,還需要根據(jù)分片的控制信息確定該分片與第 一存儲(chǔ)分區(qū)中存儲(chǔ)的分片是否出現(xiàn)哈希沖突;在 判斷結(jié)果為是的情況下,判斷第二存儲(chǔ)分區(qū)中已存儲(chǔ)的分片與該分片是 否屬于同一 IP報(bào)文,并在判斷結(jié)果為是或第二存儲(chǔ)分區(qū)為空的情況下將 該分片存儲(chǔ)至第二存儲(chǔ)分區(qū)中。也就是說,如果接收到了一個(gè)分片,如果其與第一存儲(chǔ)分區(qū)中的其 他報(bào)文出現(xiàn)哈希沖突,則需要判斷該分片是否與第二存儲(chǔ)分區(qū)中已經(jīng)存 儲(chǔ)的分片屬于同一 IP報(bào)文,如果該分片與第二存儲(chǔ)分區(qū)中的分片屬于同 一 IP報(bào)文且未與第二存儲(chǔ)分區(qū)中的其他報(bào)文出現(xiàn)哈希沖突、或者此時(shí)第 二存儲(chǔ)分區(qū)為空,則可以將該分片存儲(chǔ)至第二存儲(chǔ)分區(qū)中第三個(gè)報(bào)文的 位置,并將該分片的控制信息存儲(chǔ)至第二存儲(chǔ)分區(qū)中特定存儲(chǔ)區(qū)的第三 個(gè)控制信息的位置。另外,在根據(jù)分片的控制信息確定該分片與第一存儲(chǔ)分區(qū)和第二存 儲(chǔ)分區(qū)中存儲(chǔ)的分片屬于不同的IP報(bào)文且未出現(xiàn)哈希沖突的情況下,則 需要將該分片及其控制信息存儲(chǔ)至第三存儲(chǔ)分區(qū),并將與該分片屬于不 同報(bào)文且出現(xiàn)哈希沖突的分片存儲(chǔ)至與第三存儲(chǔ)分區(qū)對(duì)應(yīng)的第四存儲(chǔ)分 區(qū)。優(yōu)選地,每次在第一存儲(chǔ)分區(qū)、第二存儲(chǔ)分區(qū)、第三存儲(chǔ)分區(qū)、和 第四存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)時(shí),還可以在第 一存儲(chǔ)分區(qū)或第二存儲(chǔ)分區(qū)的特定存儲(chǔ)區(qū)中更新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前存儲(chǔ)分區(qū)與其他存儲(chǔ)分區(qū)之間的哈希沖突關(guān)系。下面將結(jié)合圖2描述上述處理過程。圖2中示出了多組存儲(chǔ)空間,例如,IPData一0 (對(duì)應(yīng)于上述第一存儲(chǔ) 分區(qū))和IPData—0x (對(duì)應(yīng)于上述第二存儲(chǔ)分區(qū))為一組空間(即, 一個(gè) 緩沖區(qū)組),IPDataJ (對(duì)應(yīng)于上述第三存儲(chǔ)分區(qū))和IPData—lx (對(duì)應(yīng) 于上述第四存儲(chǔ)分區(qū))為一組空間,…,IPData—n和IPData—nx為一組空間?;趫D2所示的存儲(chǔ)分區(qū)結(jié)構(gòu),本發(fā)明的分片重組處理過程如下 首先,對(duì)輸入的IP數(shù)據(jù)報(bào)進(jìn)行是否分片的判斷并提取IP協(xié)議中的四 元組(源地址,目的地址,ID,協(xié)議)、IP報(bào)文長度、分片標(biāo)志;將提 取的控制信息(包括四元組、IP頭長度、IP報(bào)文長度、分片標(biāo)志)和待 處理的分片報(bào)文分別緩存;利用四元組進(jìn)行哈希運(yùn)算,計(jì)算出當(dāng)前分片 應(yīng)存儲(chǔ)到存儲(chǔ)分區(qū)(可以是片外DDR2SDRAM內(nèi)存)的首地址,通過在 判斷出IP分片的同時(shí)將分片所需信息提取,能夠有效避免處理過程中重 復(fù)根據(jù)IP數(shù)據(jù)流中的相關(guān)信息進(jìn)行處理的情況。IPData—0、 IPData—0x、 IPData—1 、 IPData—lx等的每個(gè)分區(qū)都劃分了 特定存儲(chǔ)區(qū)以存儲(chǔ)分片的控制信息以及相關(guān)的描述信息,該描述信息用 于描述當(dāng)前分區(qū)的分片存儲(chǔ)狀況、哈希沖突狀況以及與其他分區(qū)的哈希 沖突之間的關(guān)系。在存儲(chǔ)時(shí),如果判斷當(dāng)前數(shù)據(jù)為分片,首先可以將該分片存儲(chǔ)至 IPData一O,對(duì)于與IPDataJ)中存儲(chǔ)的分片出現(xiàn)哈希沖突的分片,需要將 其存儲(chǔ)至IPData—Ox(如果IPData—Ox為空、或者待存儲(chǔ)分片與IPData—Ox 中已經(jīng)存儲(chǔ)的分片屬于同一 IP報(bào)文則可以存儲(chǔ),并更新IPData—Ox的特 定存儲(chǔ)區(qū));進(jìn)行分片類型的判斷并計(jì)算出分片在IP分組中的準(zhǔn)確位置; 預(yù)讀取片外內(nèi)存中自定義重組空間頭部數(shù)據(jù)結(jié)構(gòu)的控制信息(即,讀取 特定存儲(chǔ)區(qū)中存儲(chǔ)的相關(guān)描述信息和控制信息);判斷并解決哈希沖突; 更新已處理的重組空間頭部數(shù)據(jù)結(jié)構(gòu)控制信息;根據(jù)已有信息判斷是否 完成重組;將原來緩存的分片報(bào)文數(shù)據(jù)加上更新后的控制信息存儲(chǔ)到片 外DDR2SDRAM中相應(yīng)的位置的處理過程就是分片重組的過程;重組完成后,釋放片外內(nèi)存對(duì)應(yīng)的存儲(chǔ)空間。 方法實(shí)施例二在方法實(shí)施例一中主要描述了出現(xiàn)一次哈希沖突的處理方法,即, 將出現(xiàn)哈希沖突的分片存儲(chǔ)至第二存儲(chǔ)分區(qū)或第四存儲(chǔ)分區(qū)。在實(shí)際應(yīng) 用當(dāng)中,出現(xiàn)哈希沖突的次數(shù)往往會(huì)比較多,此時(shí),可以增加每組緩沖 區(qū)中存儲(chǔ)分區(qū)的數(shù)量。例如,可以將存儲(chǔ)分區(qū)1、存儲(chǔ)分區(qū)2、存儲(chǔ)分區(qū)3三個(gè)存儲(chǔ)分區(qū)作 為一組空間,將存儲(chǔ)分區(qū)4、存儲(chǔ)分區(qū)5、存儲(chǔ)分區(qū)6三個(gè)存儲(chǔ)分區(qū)作為 另一組空間。此時(shí),可以將首先接收的分片存儲(chǔ)至存儲(chǔ)分區(qū)1,將之后 接收到的與存儲(chǔ)分區(qū)1中存儲(chǔ)的分片出現(xiàn)哈希沖突的分片存儲(chǔ)至存儲(chǔ)分 區(qū)2,將之后接收到的與存儲(chǔ)分區(qū)1和存儲(chǔ)分區(qū)2中存儲(chǔ)的分片出現(xiàn)哈 希沖突的分片存儲(chǔ)至存儲(chǔ)分區(qū)3中,如果之后繼續(xù)出現(xiàn)與存儲(chǔ)空間1、 存儲(chǔ)空間2、存儲(chǔ)空間3中存儲(chǔ)的分片出現(xiàn)哈希沖突的分片,則可以按 照預(yù)定的規(guī)則丟棄存儲(chǔ)空間1、存儲(chǔ)空間2、或存儲(chǔ)空間3中存儲(chǔ)的分片。對(duì)于未與存儲(chǔ)分區(qū)1、存儲(chǔ)分區(qū)2、存儲(chǔ)分區(qū)3中存儲(chǔ)的分片出現(xiàn)哈 希沖突、且屬于其他報(bào)文的分片,可以將其存儲(chǔ)至存儲(chǔ)分區(qū)4。類似地, 將之后接收到的與存儲(chǔ)分區(qū)4中存儲(chǔ)的分片出現(xiàn)哈希沖突的分片存儲(chǔ)至 存儲(chǔ)分區(qū)5,將之后接收到的與存儲(chǔ)分區(qū)4和存儲(chǔ)分區(qū)5中存儲(chǔ)的分片 出現(xiàn)哈希沖突的分片存儲(chǔ)至存儲(chǔ)分區(qū)6中。對(duì)于接收到的屬于其他報(bào)文且未出現(xiàn)哈希沖突的分片,則可以通過 類似方式存儲(chǔ)至其他緩沖區(qū)組中,從而能夠在哈希沖突鏈長度為3的情 況下進(jìn)行分片重組。優(yōu)選地,在每次進(jìn)行存儲(chǔ)時(shí),同樣可以更新當(dāng)前存儲(chǔ)分區(qū)的特定存 儲(chǔ)區(qū)中的相關(guān)描述信息。此外,除了之前所描述的緩沖區(qū)組中的存儲(chǔ)分區(qū)數(shù)量為2和3的情 況之外,還可以將緩沖區(qū)組中存儲(chǔ)分區(qū)的數(shù)量設(shè)置為4或者更多,從而 能夠在哈希沖突鏈更長的情況下進(jìn)行分片重組,本文不再——贅述。并且,在上述實(shí)施例中,所有存儲(chǔ)分區(qū)的大小均可根據(jù)設(shè)計(jì)需要進(jìn) 行調(diào)整,從而應(yīng)對(duì)不同大小的分片。裝置實(shí)施例
在本實(shí)施例中,提供了一種IP報(bào)文的分片重組裝置,該裝置可以設(shè) 置在網(wǎng)卡側(cè),這樣就能夠避免CPU介入分片的重組,提高系統(tǒng)的性能。
圖3是根據(jù)本實(shí)施例的IP報(bào)文的分片重組裝置的框圖。如圖3所示, 根據(jù)本實(shí)施例的ip報(bào)文的分片重組裝置包括
提取模塊l,用于從接收?qǐng)?bào)文隊(duì)列,并從IP報(bào)文的分片中提取分片 的控制信息;
第一存儲(chǔ)模塊2,連接至提取模塊l,用于存儲(chǔ)接收的分片,形成分 片的隊(duì)列;
第二存儲(chǔ)模塊3,連接至提取模塊1,用于存儲(chǔ)由提取模塊1提取的 控制信息,形成控制信息的隊(duì)列;
主控模塊4,用于將第一存儲(chǔ)模塊2存儲(chǔ)的屬于同一 IP報(bào)文的分片 以及第二存儲(chǔ)模塊3存儲(chǔ)的相應(yīng)分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)5; 以及將與第一存儲(chǔ)分區(qū)5中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一IP報(bào)文 的分片及該分片的控制信息存儲(chǔ)至與第一存儲(chǔ)分區(qū)5對(duì)應(yīng)的第二存儲(chǔ)分 區(qū)6;以及用于在第一存儲(chǔ)分區(qū)5和/或第二存儲(chǔ)分區(qū)6所對(duì)應(yīng)的IP報(bào)文 的所有分片均接收完畢的情況下,通知重組輸出模塊7輸出第一存儲(chǔ)分 區(qū)和/或第二存儲(chǔ)分區(qū)中存儲(chǔ)的分片;
第一存儲(chǔ)分區(qū)5和第二存儲(chǔ)分區(qū)6,其整體作為一個(gè)緩沖區(qū)組,用于 在主控模塊4的控制下進(jìn)行存儲(chǔ);
重組輸出模塊7,用于在主控模塊4的控制下輸出第一存儲(chǔ)分區(qū)5 和/或第二存儲(chǔ)分區(qū)6中的分片,輸出存儲(chǔ)的分片隊(duì)列,即,輸出重組后 的報(bào)文。
可選地,該裝置還可以包括哈希計(jì)算模塊8,連接在第二存儲(chǔ)模塊3 與主控模塊4之間,用于對(duì)第二存儲(chǔ)模塊3中存儲(chǔ)的分片的控制信息進(jìn) 行哈希計(jì)算,確定屬于同一IP報(bào)文的分片,以供主控模塊4判斷是否出 現(xiàn)哈希沖突并控制第一存儲(chǔ)分區(qū)5和第二存儲(chǔ)分區(qū)6進(jìn)行存儲(chǔ)。
在判斷哈希沖突時(shí),首先可以由哈希計(jì)算模塊8根據(jù)分片的控制信 息中的四元組信息計(jì)算哈希值,由主控模塊判斷該哈希值是否與根據(jù)之前存儲(chǔ)的分片的四元組信息得到的哈希值出現(xiàn)哈希沖突。
此外,在主控模塊4控制第一存儲(chǔ)分區(qū)5或第二存儲(chǔ)分區(qū)6進(jìn)行分 片存儲(chǔ)時(shí),對(duì)于接收的每個(gè)分片,主控模塊4可以根據(jù)其控制信息確定 該分片在所屬IP報(bào)文中的位置,根據(jù)確定的位置將該分片存儲(chǔ)至第一存 儲(chǔ)分區(qū)5或第二存儲(chǔ)分區(qū)6中的相應(yīng)位置,并將該分片的控制信息存儲(chǔ) 至第一存儲(chǔ)分區(qū)5或第二存儲(chǔ)分區(qū)6中預(yù)先劃分的特定存儲(chǔ)區(qū)的相應(yīng)位 置,這樣,存儲(chǔ)的過程就已經(jīng)實(shí)現(xiàn)了報(bào)文的重組。
在主控模塊4控制第一存儲(chǔ)分區(qū)5或第二存儲(chǔ)分區(qū)6進(jìn)行分片存儲(chǔ) 時(shí),主控模塊4還可以在第一存儲(chǔ)分區(qū)5或第二存儲(chǔ)分區(qū)6的特定存儲(chǔ) 區(qū)中更新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的相關(guān)描述信息,更新的具體內(nèi)容可 以包括分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前存儲(chǔ)分區(qū)與其他存儲(chǔ) 分區(qū)之間的哈希沖突關(guān)系。
根據(jù)本實(shí)施例的分片重組裝置在進(jìn)行分片存儲(chǔ)時(shí)可以采用圖2所示
的存儲(chǔ)區(qū)結(jié)構(gòu),其具體處理過程在之前已經(jīng)進(jìn)行了詳細(xì)的描述,這里不 再贅述。
類似地,圖3所示的裝置可以在哈希沖突鏈長度為2的情況下進(jìn)行 分片重組,如果需要處理更長的哈希鏈,則可以增加每個(gè)緩沖區(qū)組中存 儲(chǔ)分區(qū)的數(shù)量,并且還可以增加更多的緩沖區(qū)組,以并行重組更多的分 片,具體的處理方法之前已經(jīng)描述,這里不再贅述。
在實(shí)際應(yīng)用當(dāng)中,可以對(duì)根據(jù)本實(shí)施例的裝置進(jìn)行結(jié)構(gòu)的改變。 圖4是根據(jù)本實(shí)施例的IP報(bào)文的分片重組裝置的一個(gè)具體結(jié)構(gòu)實(shí)例。
如圖4所示,可以將圖3中第一存儲(chǔ)分區(qū)5和第二存儲(chǔ)分區(qū)6(或更 多的緩沖區(qū)組)整體設(shè)置為圖4所示的DDR2SDRAM。為了便于對(duì)重組 的報(bào)文進(jìn)行統(tǒng)計(jì),還可以設(shè)置統(tǒng)計(jì)模塊9,使其與主控模塊4相連接。 此外,還可以設(shè)置讀取控制才莫塊10,連接在主控模塊4與DDR2SDRAM 之間,專門用于在主控模塊4的控制下讀取DDR2SDRAM中存儲(chǔ)的分片。
本實(shí)施例中所描述的上述一個(gè)或多個(gè)模塊均可以通過FPGA來實(shí)現(xiàn), 如何進(jìn)行器件編程來實(shí)現(xiàn)相應(yīng)的功能是本領(lǐng)域的技術(shù)人員所公知的,本
14文不再詳細(xì)描述。
綜上所述,借助本發(fā)明上述至少一個(gè)技術(shù)方案,通過以緩沖區(qū)組的 方式存儲(chǔ)待重組的分片,在IP報(bào)文的所有分片完全接收之后即完成了分 片的重組,不僅能夠?qū)崟r(shí)、快速地實(shí)現(xiàn)分片報(bào)文的重組,還能夠有效避
免哈希沖突,避免為CPU增加處理負(fù)擔(dān),省去了復(fù)雜的內(nèi)存維護(hù);此外, 對(duì)于IP分片攻擊,通過采用本發(fā)明的處理方案,能夠直接將該攻擊打斷, 并清除已分配給該攻擊數(shù)據(jù)流的存儲(chǔ)空間,有效減少了 IP分片攻擊對(duì)主 機(jī)的影響;本發(fā)明的實(shí)現(xiàn)不需要額外的控制信息存儲(chǔ)空間,并且通過將 重組所需的控制信息和IP分片存儲(chǔ)在同 一 內(nèi)存區(qū)域的方式,能夠有助于 兩種數(shù)據(jù)的維護(hù)。
權(quán)利要求
1.一種IP報(bào)文的分片重組方法,其特征在于,包括將接收到的屬于同一IP報(bào)文的分片以及所述分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)中;將與所述第一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一IP報(bào)文的分片及該分片的控制信息存儲(chǔ)至與所述第一存儲(chǔ)分區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);對(duì)于所述第一存儲(chǔ)分區(qū)和所述第二存儲(chǔ)分區(qū)中的每一個(gè),在其所對(duì)應(yīng)的IP報(bào)文的所有分片均接收完畢的情況下,輸出該存儲(chǔ)分區(qū)中的所有分片。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)的處理具體包括對(duì)于接收的每個(gè)分片,根據(jù)其控制信息確定該分片在所屬IP報(bào)文中的位置;根據(jù)所述位置將該分片存儲(chǔ)至所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)中的相應(yīng)位置,并將該分片的控制信息存儲(chǔ)至所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)中預(yù)先劃分的特定存儲(chǔ)區(qū)的相應(yīng)位置。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,在向所述第二存儲(chǔ)分區(qū)進(jìn)行存儲(chǔ)之前,所述方法還包括根據(jù)分片的控制信息確定該分片與所述第一存儲(chǔ)分區(qū)中存儲(chǔ)的分片是否出現(xiàn)哈希沖突;在判斷結(jié)果為是的情況下,判斷所述第二存儲(chǔ)分區(qū)中已存儲(chǔ)的分片與該分片是否屬于同一 IP報(bào)文,并在判斷結(jié)果為是或所述第二存儲(chǔ)分區(qū)為空的情況下將該分片存儲(chǔ)至所述第二存儲(chǔ)分區(qū)中。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,在根據(jù)分片的控制信息確定該分片與所述第一存儲(chǔ)分區(qū)和所述第二存儲(chǔ)分區(qū)中存儲(chǔ)的分片屬于不同的IP報(bào)文且未出現(xiàn)哈希沖突的情況下,將該分片及其控制信息存儲(chǔ)至第三存儲(chǔ)分區(qū),并將與該分片屬于不同IP報(bào)文且出現(xiàn)哈希沖突的分片存儲(chǔ)至與所述第三存儲(chǔ)分區(qū)對(duì)應(yīng)的第四存儲(chǔ)分區(qū)。
5. 根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的方法,其特征在于,在所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)的處理還包括在所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)的特定存儲(chǔ)區(qū)中更新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前存儲(chǔ)分區(qū)與其他存儲(chǔ)分區(qū)之間的哈希沖突關(guān)系。
6. 根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的方法,其特征在于,分片的控制信息包括四元組信息、IP頭長度、IP報(bào)文長度、和分片標(biāo)識(shí)。
7. —種IP報(bào)文的分片重組裝置,其特征在于,所述裝置包括提取模塊,用于從接收的分片中提取所述分片的控制信息;第一存儲(chǔ)模塊,用于存儲(chǔ)接收的分片;第二存儲(chǔ)模塊,用于存儲(chǔ)由提取模塊提取的控制信息;主控模塊,用于將所述第一存儲(chǔ)模塊存儲(chǔ)的屬于同一 IP報(bào)文的分片以及所述第二存儲(chǔ)模塊存儲(chǔ)的相應(yīng)分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū);以及將與所述第一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一 IP報(bào)文的分片及該分片的控制信息存儲(chǔ)至與所述第 一存儲(chǔ)分區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);以及用于在所述第一存儲(chǔ)分區(qū)和/或所述第二存儲(chǔ)分區(qū)所對(duì)應(yīng)的IP報(bào)文的所有分片均接收完畢的情況下,通知重組輸出模塊輸出所述第一存儲(chǔ)分區(qū)和/或所述第二存儲(chǔ)分區(qū)中存儲(chǔ)的分片;所述第一存儲(chǔ)分區(qū)和所述第二存儲(chǔ)分區(qū),用于在所述主控模塊的控制下進(jìn)行存儲(chǔ);重組輸出模塊,用于在所述主控模塊的控制下輸出所述第一存儲(chǔ)分區(qū)和/或所述第二存儲(chǔ)分區(qū)中的分片。
8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括哈希計(jì)算模塊,用于對(duì)所述第二存儲(chǔ)模塊中分片的控制信息進(jìn)行哈希計(jì)算,確定屬于同一 IP報(bào)文的分片,以供所述主控模塊判斷是否出現(xiàn)哈希沖突并控制所述第一存儲(chǔ)分區(qū)和所述第二存儲(chǔ)分區(qū)進(jìn)行存儲(chǔ)。
9. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,在所述主控模塊控制所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)時(shí),對(duì)于接收的每個(gè)分片,所述主控模塊根據(jù)其控制信息確定該分片在所屬報(bào)文中的位置,根據(jù)所述位置將該分片存儲(chǔ)至所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)中的相應(yīng)位置,并將該分片的控制信息存儲(chǔ)至所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)中預(yù)先劃分的特定存儲(chǔ)區(qū)的相應(yīng)位置。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,在所述主控模塊控制所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)進(jìn)行分片存儲(chǔ)時(shí),所述主控模塊還用于在所述第一存儲(chǔ)分區(qū)或所述第二存儲(chǔ)分區(qū)的特定存儲(chǔ)區(qū)中更新當(dāng)前存儲(chǔ)分區(qū)所對(duì)應(yīng)報(bào)文的分片存儲(chǔ)狀況、哈希沖突狀況、以及當(dāng)前存儲(chǔ)分區(qū)與其他存儲(chǔ)分區(qū)之間的哈希沖突關(guān)系。
全文摘要
本發(fā)明提供一種IP報(bào)文的分片重組方法和裝置,其中,該方法包括將接收到的屬于同一IP報(bào)文的分片以及分片的控制信息存儲(chǔ)至第一存儲(chǔ)分區(qū)中;將與第一存儲(chǔ)分區(qū)中存儲(chǔ)的分片出現(xiàn)哈希沖突且屬于另一IP報(bào)文的分片及該分片的控制信息存儲(chǔ)至與第一存儲(chǔ)分區(qū)對(duì)應(yīng)的第二存儲(chǔ)分區(qū);對(duì)于第一存儲(chǔ)分區(qū)和第二存儲(chǔ)分區(qū)中的每一個(gè),在其所對(duì)應(yīng)的IP報(bào)文的所有分片均接收完畢的情況下,輸出該存儲(chǔ)分區(qū)中的所有分片。通過使用本發(fā)明,能夠?qū)崟r(shí)、快速地實(shí)現(xiàn)分片報(bào)文的重組,有效應(yīng)對(duì)分片的攻擊,避免哈希沖突,避免為CPU增加處理負(fù)擔(dān)。
文檔編號(hào)H04L12/56GK101674234SQ20091009105
公開日2010年3月17日 申請(qǐng)日期2009年8月21日 優(yōu)先權(quán)日2009年8月21日
發(fā)明者軍 歷, 張英文, 華 聶, 邵宗有 申請(qǐng)人:曙光信息產(chǎn)業(yè)(北京)有限公司