專利名稱:基于網絡處理器實現ip報文分片重組的方法
技術領域:
本發明涉及一種IP(Internet Protocol,即網際協議)分片報文重組的方法,尤其涉及采用網絡處理器實現IP分片報文重組的方法。
背景技術:
網絡與通信是當今最熱和發展最快的領域之一,為了應付日益繁忙的信息流,網絡的速度由幾年前的155Mb/s,發展到現在的10Gb/s,在未來的2~3年內將會提高到40Gb/s。由于有了光纖,傳輸媒介的速度已不成問題,唯一的瓶頸則出現在通用處理器的處理速度上。當網絡速度比較慢時,通用的處理器完全趕得上數據流,并不需要專門的網絡處理器。后來,通用處理器不夠快了,設計者就轉向專用集成電路(Application Specific Integrated Circuit,簡稱ASIC)。ASIC在完成規定的處理工作方面是非常卓越的,但它有兩個缺點一是開發的周期太長,如路由器或交換機要增加新的功能,就需要等待較長的時間;二是ASIC不是可編程的,要修改就必須經歷一個設計和制造的周期,適應不了當今越來越短的開發周期。
選擇專用的網絡處理器替代通用處理器是一個比較好的解決辦法。網路處理器是專為優化包處理而設計的。它采用多中央處理器(Central ProcessionUnit,簡稱CPU)機制,如圖1所示,包括一個用于控制面處理的主中央處理器(Host CPU)和若干個用于數據面處理的精簡指令結構(Reduction InstructionSet Computer Architecture,簡稱RISC結構)的CPU,即RISC CPU。我們通過編程在RISC CPU上實現各種網絡協議的處理,使若干個RISC CPU可對數據面報文進行實時并行處理,從而能夠將數據面的報文以其到達的速度(線速)送到下一節點。但由于RISC CPU是用專用的匯編指令開發,且指令功能簡單,難于實現復雜的運算操作,故目前網絡處理器主要用于IP路由設備中,而對網絡協議只處理到IP層,而將其用于邊緣網絡設備進行高層協議處理較為困難。
實現IP分片重組功能是對IP上層協議進行處理的基礎。目前在通用處理器上是通過遍歷鏈表的方式定位同一組分片以實現重組功能的,并定時器來管理用于存儲分片報文的內存單元的使用,當定時器到期后即將未重組完的IP報文丟棄以釋放其占用的內存單元。在實現重組的過程中,每一個分片報文首先要從MAC(Media Access Control,即媒體訪問控制)芯片的緩存中拷貝的內存中的一個臨時存儲區,然后再拷貝到用于重組報文的緩沖存儲單元(buffer)中進行重組,即通用處理器在實現IP分片重組時不是原位重組,必須拷貝兩次才能完成。
在網絡處理器上實現IP分片報文重組最簡單的方法就是在Host CPU上采用上述通用處理器的處理方式實現,但這種方式沒有實際發揮網絡處理器的任何優勢,因為網絡處理器的Host CPU主頻比通用處理器要低很多,且其硬件結構的限制使得Host CPU通常不能直接對數據面報文操作,因此只有在RISCCPU上實現IP分片報文的重組功能才能發揮網絡處理器的優勢。但由于RISCCPU采用匯編指令開發,不適于采用遍歷鏈表的方式實現IP分片的重組,也很難通過復雜的算法來維護一個定時器隊列,因此實現IP分片報文的重組比較困難。
發明內容
本發明的目的是提供一種基于網絡處理器實現IP報文分片重組的方法,以克服當前的網絡處理器不適用于邊緣網絡設備進行高層應用協議處理的技術問題。
實現本發明所要解決的技術問題而采取的技術方案概括如下,提供一種基于網絡處理器實現IP報文分片重組的方法,包括以下步驟(1)創建哈希索引表;(2)分配兩片用于存儲分片IP報文的緩沖存儲區;(3)從接收到的一個新的IP分片報文的IP首部中提取源IP地址、目的IP地址、標識、片偏移和長度信息;(4)利用所述源IP地址、目的IP地址、標識作為輸入進行哈希運算,根據運算結果申請一個哈希單元;(5)從所述的其中一片緩沖存儲區中申請一個緩沖存儲單元,并判斷該片緩沖存儲區是否被申請完畢,若申請完畢,則申請使用所述的另一片緩沖存儲區;(6)將IP首部保存到所述的緩沖存儲單元中;(7)根據所述接收到的IP分片報文的片偏移信息將該IP分片報文保存到所述緩沖存儲單元的相應位置,并將該緩沖存儲單元的首地址保存到所述哈希單元中;(8)判斷所接收到的IP分片報文是否為最后一片,若是,則計算所有需要重組的IP分片報文對應的IP報文總長度,并將IP報文總長度信息存儲到哈希單元中;(9)計算當前已經收到的IP分片報文的總長度,將所述總長度信息更新到哈希單元中;(10)將所述計算當前已經收到的IP分片報文的總長度與所述IP報文總長度比較,若不相等,繼續接收后續分片,若相等,則本組IP分片報文全部收到,重組完畢,執行步驟(13);(11)接收后續的IP分片報文,利用其IP首部中的源IP地址、目的IP地址和標識進行哈希運算,定位到相應的哈希單元中;(12)從哈希單元中取出緩沖存儲單元首地址,根據該IP分片報文的片偏移信息將該分片報文的數據凈負荷拷貝到所述緩沖存儲單元的相應位置,執行步驟(8);(13)釋放該IP報文所使用的哈希Hash索引單元,釋放其占用的兩片緩沖存儲單元。
采用本發明的技術方案,與現有的技術相比,不僅提高了IP分片報文重組的速度和效率,而且還具有分片定位準確的優點。同時通過兩片緩沖存儲區機制,使在網絡處理器上實現IP分片重組成為可能,并使重組過程更為簡單有效。通過該方法可以在網絡處理器上進行IP上層協議處理,從而使網絡處理器能夠替代通用處理器應用于邊緣網絡設備中,發揮其重要作用。
圖1示出了網絡處理器功能結構原理圖;圖2示出了IP報文首部格式;圖3示出了本發明IP報文分片過程示意圖;圖4示出了本發明在緩沖存儲單元中實現IP分片報文重組過程示意圖。
具體實施例方式
下面將結合附圖,舉例說明本發明的具體實施的方式。
圖2給出了IP報文首部格式,其中標識、標志和片偏移三個字段用來控制IP數據報文的分片和重組。分片后的IP分片報文的分片首部具有相同的標識字段,且通過標志比特位表征該報文是一個分片,而分片的順序則由片偏移來決定。IP報文的分片過程如圖3所示。
在網絡處理器上采用本發明方法實現IP分片報文重組開始時,首先進行分片重組的初始化準備工作,主要完成兩個任務
1)創建一張哈希(Hash)索引表;2)創建兩個管理緩沖(buffer)存儲區的索引隊列,負責緩沖存儲單元的申請和釋放。
哈希索引表是一張信息索引表,每個哈希單元對應一組待重組的分片報文,該單元中保存著與重組相關的關鍵信息,在本發明方法中哈希單元中保存了如下信息●IP分片報文的源IP地址;●IP分片報文的目的IP地址;●IP分片報文的16位標識;●當前已經收到的IP分片報文的總長度;●所有本組分片報文重組后對應的IP報文的總長度;●緩沖存儲單元首地址。
其中當前已經收到的分片報文的總長度和所有本組分片報文重組后對應的IP報文的總長度的初始值均為0。
當哈希單元中保存的當前已經收到的分片報文的總長度信息為零時表示該單元未被占用,同時說明收到的IP分片報文為一組新的分片報文;而當該信息不為零時則說明該分片可能是一個后續分片。
當收到一個IP分片報文時,首先從該分片的IP首部中取出源IP地址、目的IP地址、標識、片偏移及長度信息,其中源IP地址、目的IP地址和標識能唯一標識一組IP分片報文。利用源、目的IP地址和標識作為輸入參數進行哈希運算,并根據哈希運算結果定位到一個哈希單元。通過判斷當前已經收到的IP分片報文的總長度是否為零來確定是否為一個新的哈希單元,根據判斷的結果不同具體分為以下三種情況第一種情況是當前已經收到的IP報文的總長度為零,即收到一個新的IP分片報文,處理步驟如下a)將該報文的源IP地址、目的IP地址、標識和長度信息保存到哈希單元中;b)通過索引隊列為其申請一個緩沖存儲單元,將IP首部保存到緩沖存儲單元中,并將數據凈負荷根據片偏移信息保存到存儲區的相應位置。
保存拷貝過程是由RISC CPU直接控制的,根據片偏移信息決定數據凈荷在緩沖存儲單元中的位置。當一片緩沖存儲區中的存儲單元被申請完后,立即通過另一索引隊列從另一片緩沖存儲區申請緩沖存儲單元;c)更新哈希單元中當前已經收到的分片報文總長度信息;
d)通過該分片報文的IP首部的標志位判斷該分片是否為最后一個分片,若是,則根據片偏移計算重組后整個IP報文的總長度,并將該長度信息保存到哈希單元的所有本組分片報文重組后對應的IP報文的總長度的位置。
第二種情況是當前已經收到的報文的總長度不為零,則比較該IP分片報文IP首部中的源、目的IP地址和標識與哈希單元中保存的源、目的IP地址和標識是否全部相等,若全部相等,則該分片報文為本組后續的IP分片報文,處理步驟如下a)計算該IP分片報文數據凈負荷的長度,累加到哈希單元中的當前已經收到分片報文總長度的信息位;b)從哈希單元中取出緩沖存儲單元首地址,并根據該片報文的片偏移將數據凈負荷保存到存儲單元的相應位置,保存拷貝過程是由RISC CPU直接控制的,根據片偏移信息決定數據凈荷在緩沖存儲單元中的位置,拷貝的同時完成分片的重組;c)通過該分片報文的IP首部的標志位判斷該分片報文是否為最后一個分片,若是,則根據片偏移計算重組后整個IP報文的總長度,并將該長度信息保存到哈希單元的所有本組分片報文重組后對應的IP報文的總長度的位置;d)判斷哈希單元中的當前收到分片報文總長度與重組后報文總長度是否相等,如果相等,則表示本組所有的IP分片報文全部收齊,重組完成,將當前已經收到分片報文總長度信息和所有本組分片報文重組后對應的IP報文的總長度信息清零以釋放哈希單元。
第三種情況是當前已經收到的報文的總長度不為零,比較該分片報文IP首部中的源、目的IP地址和標識與哈希單元中存儲的源、目的IP地址和標識,如不全相等或全不相等,則表明產生哈希沖突,并確定該分片報文為一個新的分片報文,處理步驟如下a)將哈希單元中的當前已經收到分片報文總長度信息和所有本組分片報文重組后對應的IP報文的總長度信息清零;b)將其作為一個新的分片報文,按上述第一種情況處理。
從以上的描述可以看出每個IP分片報文在整個重組過程只拷貝了一次,即從MAC外設拷貝到緩沖存儲單元中。在拷貝過程中根據報文的片偏移信息將數據凈荷存放到緩沖存儲單元的相應位置,從而在實現原位重組。圖4給出了本發明在緩沖存儲單元中實現原位重組的應用過程示意圖。我們以以太網傳輸為例,如圖中所示標準MAC頭長度為14字節,IP頭典型長度為20字節,因為IP分片報文的凈荷長度是以8字節為單位的,故為描述方便,圖4中舉例給出的緩沖存儲器(buffer)亦為8字節。
綜上所述,本發明提供的一種基于網絡處理器實現IP報文分片重組的方法,包括以下步驟(1)創建哈希索引表;(2)分配兩片用于存儲分片IP報文的緩沖存儲區;(3)從接收到的一個新的IP分片報文的IP首部中提取源IP地址、目的IP地址、標識、片偏移和長度信息;(4)利用所述源IP地址、目的IP地址、標識作為輸入進行哈希運算,根據運算結果申請一個哈希單元;(5)從所述的其中一片緩沖存儲區中申請一個緩沖存儲單元,并判斷該片緩沖存儲區是否被申請完畢,若申請完畢,則申請使用所述的另一片緩沖存儲區;(6)將IP首部保存到所述的緩沖存儲單元中;(7)根據所述接收到的IP分片報文的片偏移信息將該IP分片報文保存到所述緩沖存儲單元的相應位置,并將該緩沖存儲單元的首地址保存到所述哈希單元中;(8)判斷所接收到的IP分片報文是否為最后一片,若是,則計算所有需要重組的IP分片報文對應的IP報文總長度,并將IP報文總長度信息存儲到哈希單元中;(9)計算當前已經收到的IP分片報文的總長度,將所述總長度信息更新到哈希單元中;(10)將所述計算當前已經收到的IP分片報文的總長度與所述IP報文總長度比較,若不相等,繼續接收后續分片,若相等,則本組IP分片報文全部收到,重組完畢,執行步驟(13);(11)接收后續的IP分片報文,利用其IP首部中的源IP地址、目的IP地址和標識進行哈希運算,定位到相應的哈希單元中;(12)從哈希單元中取出緩沖存儲單元首地址,根據該IP分片報文的片偏移信息將該分片報文的數據凈負荷拷貝到所述緩沖存儲單元的相應位置,執行步驟(8);(13)釋放該IP報文所使用的哈希索引單元,釋放其占用的兩片緩沖存儲單元。
同時可以看出,本發明所提供方法有以下三大特征首先,采用哈希運算來定位一組IP分片報文,與遍歷鏈表的相比,采用哈希運算具有分片定位速度快且定位準確的優點;其次,在重組過程無需定時器,而是采用雙片緩沖存儲區機制,當一片緩沖存儲區被用盡后立刻使用另一片緩沖存儲區存放待重組的分片。采用雙片緩沖管理方式,保證了由于所有分片未全部收到而掛死的緩沖存儲單元最終能夠被釋放。
最后,可實現原位重組。網絡處理器中的RISC CPU可直接操作和控制內存與MAC外設間的數據傳輸,從而在將數據報文從MAC外設的緩沖區拷貝到內存的過程中即可完成重組功能,無需二次拷貝。
綜上所述,本發明所提出的基于網絡處理器實現IP分片報文重組的方法與通用處理器所采用的IP分片報文重組方法相比,具有無需定時器,原位即可實現重組的優點,它通過哈希運算來定位一組IP分片,不僅提高了重組的速度,而且使重組過程變得更加簡單有效,從而使網絡處理器能適用于邊緣網絡設備,進而替代通用處理器來進行IP上層應用協議處理。例如在本發明的可實施的一個典型應用場合;WCDMA(Wideband Code Division MultipleAccess,即寬帶碼分多址系統)系統的分組域為實現高速、寬帶的多媒體數據業務,通用處理器已不滿足要求,必須采用網絡處理器實現。其兩大功能實體GGSN(Gateway GPRS Support Node,即網關GPRS支持點,其中GPRS即General Packet Radio Service——無線分組業務)和SGSN(Serving GPRSSupport Node,即服務GPRS支持點)作為邊緣網絡設備要對承載在GTP(GPRSTunnel Protocol,即GPRS通道協議)協議之上的用戶面數據報文都進行處理,而GTP協議又是承載在IP協議之上的,故要處理GTP封裝的分組數據業務,可采用本發明提供的基于網絡處理器實現IP分片報文的重組的方法。
盡管參照實施例對所公開的涉及基于網絡處理器實現IP報文分片重組的方法進行了特別描述,本領域技術人員將能理解,在不偏離本發明的范圍和精神的情況下,可以對它進行形式和細節的種種顯而易見的修改。因此,以上描述的實施例是說明性的而不是限制性的,在不脫離本發明的精神和范圍的情況下,所有的變化和修改都在本發明的范圍之內。
權利要求
1.一種基于網絡處理器實現IP報文分片重組的方法,其特征在于包括以下步驟(1)創建哈希索引表;(2)分配兩片用于存儲分片IP報文的緩沖存儲區;(3)從接收到的一個新的IP分片報文的IP首部中提取源IP地址、目的IP地址、標識、片偏移和長度信息;(4)利用所述源IP地址、目的IP地址、標識作為輸入進行哈希運算,根據運算結果申請一個哈希單元;(5)從所述的其中一片緩沖存儲區中申請一個緩沖存儲單元,并判斷該片緩沖存儲區是否被申請完畢,若申請完畢,則申請使用所述的另一片緩沖存儲區;(6)將IP首部保存到所述的緩沖存儲單元中;(7)根據所述接收到的IP分片報文的片偏移信息將該IP分片報文保存到所述緩沖存儲單元的相應位置,并將該緩沖存儲單元的首地址保存到所述哈希單元中;(8)判斷所接收到的IP分片報文是否為最后一片,若是,則計算所有需要重組的IP分片報文對應的IP報文總長度,并將IP報文總長度信息存儲到哈希單元中;(9)計算當前已經收到的IP分片報文的總長度,將所述總長度信息更新到哈希單元中;(10)將所述計算當前已經收到的IP分片報文的總長度與所述IP報文總長度比較,若不相等,繼續接收后續分片,若相等,則本組IP分片報文全部收到,重組完畢,執行步驟(13);(11)接收后續的IP分片報文,利用其IP首部中的源IP地址、目的IP地址和標識進行哈希運算,定位到相應的哈希單元中;(12)從哈希單元中取出緩沖存儲單元首地址,根據該IP分片報文的片偏移信息將該分片報文的數據凈負荷拷貝到所述緩沖存儲單元的相應位置,執行步驟(8);(13)釋放該IP報文所使用的哈希索引單元,釋放其占用的兩片緩沖存儲單元。
2.根據權利要求1所述的方法,其特征在于所述當前已經收到的IP分片報文的總長度和所有需要重組的IP分片報文對應的IP報文總長度信息的初始值均為0。
3.根據權利要求1所述的方法,其特征在于步驟(11)還包括以下步驟(a)比較該后續IP分片報文IP首部中的源、目的IP地址和標識與哈希單元中保存的源、目的IP地址和標識是否相等,若全部相等,則繼續轉入步驟(12)處理;否則,(b)將哈希單元中的當前已經收到分片報文總長度信息和所有需要重組的IP分片報文對應的IP報文總長度信息清零,轉入步驟(4)繼續處理。
全文摘要
本發明公開了一種基于網絡處理器實現IP報文分片重組的方法,包括以下步驟創建哈希索引表;分配兩片用于存儲分片IP報文的緩沖存儲區;從接收到的一個新的IP分片報文的IP首部中提取源IP地址、目的IP地址、標識、片偏移和長度信息;申請一個哈希單元;從其中一片緩沖存儲區中申請一個緩沖存儲單元;將IP首部保存到所述的緩沖存儲單元中;接收后續的IP分片報文,根據該IP分片報文的片偏移信息將該分片報文的數據凈負荷拷貝到所述緩沖存儲單元的相應位置。采用本發明的技術方案,通過兩片緩沖存儲區機制,使在網絡處理器上實現IP分片重組成為可能,并使重組過程更為簡單有效,實現了原為重組。
文檔編號H04L29/02GK1494274SQ02137798
公開日2004年5月5日 申請日期2002年10月31日 優先權日2002年10月31日
發明者肖煒丹 申請人:深圳市中興通訊股份有限公司