專利名稱:報文保序方法及其裝置的制作方法
技術領域:
本發明涉及通信設備和網絡設備中報文轉發的保序方法和裝置。背景技術:
隨著通信技術和網絡技術的發展,通信設備或是網絡設備(以下統稱
為網絡設備)逐步向全IP (Internet Protocol,互聯網協議)推進;網 絡設備的一個最基本功能就是轉發IP報文。許多上層業務報文在傳輸過程 中需要網絡設備嚴格保證報文的順序,也就是同一數據流進入網絡設備和 離開網絡設備的順序應嚴格相同。
為提高系統整體性能,目前網絡設備通常使用多核多硬件線程芯片進 行報文轉發,報文的保序往往利用硬件機制輔助實現,如網絡處理器中使 用硬件信號同步報文的接收、處理和發送以實現報文的保序。雖然利用硬 件機制實現報文保序的方案對系統性能影響較小,但是不同的硬件架構, 使用的機制大不相同,保序方案難以通用、統一,且受限于硬件本身的實 現機制。
除利用硬件機制實現報文保序之外,采用多核多硬件線程芯片的網絡 設備中,還可以使用軟件方案實現報文的保序。軟件方案可以屏蔽硬件芯 片的差異,移植性和通用性都優于利用硬件機制的方案。使用軟件方案實 現報文保序的基本策略有兩種 一是避免報文在多個線程處理時失序;二 是使用軟件方案對失序的報文重新進行排序。
'圖1 圖3給出了現有技術中使用多核多線程網絡設備中避免報文失 序的原理示意圖圖1中的軟件方案是所有的核和線程完全采用流水線的 方式完成IP報文的轉發,每個核/線程完成報文轉發處理的不同階段和步 驟,前一核/線程處理完成后通知第二個核/線程進行處理,依次類推,最 后完成報文發送;此方案的最大缺陷在于各核/線程上的模塊功能分配和處 理負荷難以均衡,難以適應模塊功能的不斷擴展和升級,易出現性能的瓶 頸點。圖2所示軟件方案中各線程完全采用并行的工作方式,每個核/線程 完成相同的功能,使用分類單元(軟件或是硬件),將不同流分發到不同的 核/線程處理,同一流的報文由同一線程處理,故可避免失序;此方案的最 大缺陷是不同流的負荷差別可能很大,會造成某些線程比較空閑,而有些
線程負荷比較繁重。圖3所示的軟件折中'圖1、圖2中的方案,但仍然存 在兩種方案的缺點。
考慮業務流在不同核/線程之間的負載均衡和平滑系統整體性能,往往 使用多線程完全并行工作的方式,各核/線程駐留相同的功能模塊,業務流 根據一定的策略均勻的分發到不同的核/線程上處理。圖4給出了在此系統
方案下報文保序實現的軟件原理示意圖接收單元為接收到的報文分配一 個序列號seq一mim并均勻分發到并行的線程中處理,各線程為每個業務流 維護一個發送序列號tx一seci—curr,發送序列號屬于各線程的共享臨界資 源,轉發報文時,判斷業務流的當前發送序列號tx—seq一curr和報文序列 號seq—num是否相同,如果相同則轉發報文,并將tx—seq—curr加1,否 則循環等待。此方案存在的最大不足之處是沒有考慮業務流異常處理狀態, 業務流有效發送序列號更新粒度固定不變為1,當報文異常狀態對應不同 處理策略如需要丟棄或是處理超時后,會造成保序功能的失敗、死等或是 引起報文的抖動。
發明內容
本發明的主要目的是克服上述現有技術中的不足之處,提供一種保 序策略更為完善、保序功能更為穩定有效的報文保序方法及其裝置。
為實現上述目的,本發明提出一種報文保序方法,包括如下的步驟
11) 流分類標識單元對接收到的報文首先進行流分類和標識操作,將 報文按給定規則劃分為不同的業務流,同時為流中每個報文分配一個報文 序列號,同一流中序列號連續遞增分配;然后將報文均衡分發到并行的多 個核/線程中;
12) 報文處理單元對報文進行處理時,流狀態監控單元為每個業務流 隊列維護一個相應的流狀態隊列,實時監控報文狀態,設置每個報文的狀 態向量,對于不同的報文狀態向量,指定不同的處理策略;
13) 保序與調度發送單元獲取業務流當前發送序列號、報文序列號、 業務流報文狀態向量和對應的處理策略;鎖定業務流當前發送序列號、相 應狀態向量;根據不同報文狀態向量對應的處理策略,實現對報文調度、 發送的同步;同時更新當前發送序列號,解鎖發送序列號和報文狀態向量。
上述的報文保序方法,所述步驟13)的具體過程包括如果某個報文 狀態向量對應的處理策略為繼續處理,當業務流當前發送序列號和報文序 列號相同時,則轉發報文,更新當前發送序列號,解鎖發送序列號和報文 狀態向量;否則解鎖發送序列號和報文狀態向量,結束本次調度發送。所 述步驟13)的具體過程還包括如果某個報文狀態向量對應的處理策略為 丟棄,則丟棄該報文,更新當前發送序列號,解鎖發送序列號和報文狀態 向量,結束本次調度發送;如果所述報文狀態向量為超時,則對應策略為 丟棄報文。所述步驟13)的具體過程還包括如果某個報文狀態向量對應 的處理策略為等待,解鎖發送序列號和報文狀態向量,結束本次調度發送。
上述的報文保序方法,由流分類標識單元初始化每個流的當前發送序 列號,由保序調度發送單元維護該發送序列號;或由保序調度發送單元初 始化每個流的當前發送序列號,并維護該發送序列號。
同時,本發明公開了一種報文保序裝置,包括
流分類標識單元按照給定規則,將接收到的報文劃分為不同的業務 流中,為流中每個報文分配一個連續遞增的序列號;同時完成報文在多核/ 多線程上的負載均衡分發;
報文處理單元對接收到的報文進行處理;
流狀態監控單元用來維護流狀態隊列,標記報文的處理狀態;保持 流狀態隊列和業務流隊列一一對應;
保序和調度發送單元根據流狀態隊列中的報文狀態向量和對應的處 理策略,實現對報文調度、發送的同步。
上述報文保序裝置,所述報文狀態向量包括處理中,對應策略為等 待;已處理,對應策略為繼續處理;丟棄,對應策略為丟棄。所述報文狀 態向量還包括已超時,對應策略為丟棄。
上述報文保序裝置,所述流分類標識單元初始化每個流的當前發送序 列號,保序調度發送單元維護該發送序列號;或所述保序調度發送單元初 始化每個流的當前發送序列號,并維護該發送序列號。
由于采用了以上的方案,本發明的報文保序方法及其裝置,通過流狀 態監控,使得當前有效發送序列號的更新粒度是可變的,可同時解決業務 流正常報文、異常報文的保序功能。當報文異常狀態對應不同處理策略如 需要丟棄或是處理超時后,不會造成保序功能的失敗、死等或是引起報文 的抖動。因此,保序策略更為完善、保序功能更為穩定有效。
圖1:現有技術下多核多硬件線程芯片中報文保序軟件方案之一完 全采用線程串行工作方式避免報文失序的原理示意圖。
圖2:現有技術下多核多硬件線程芯片中報文保序軟件方案之二完 全采用線程并行工作方式避免報文失序的原理示意圖。
圖3:現有技術下多核多硬件線程芯片中報文保序軟件方案之三結 合線程串行和并行工作方式避免報文失序的原理示意圖。
圖4:現有技術下多核多硬件線程芯片中報文保序軟件方案之四基 于流序列號的保序方案的原理示意圖。
圖5:本發明實施例一的多核多硬件線程系統中報文保序實現原理示 意圖6:本發明實施例二具體流程圖,其中僅使用報文狀態向量"丟棄" 和"已處理";
圖7:本發明實施例三具體流程圖,同時使用報文狀態向量"丟棄"、 "已處理"和"超時";
圖8:本發明實施例實現保序方法的網絡設備示意圖。
具體實施方式
下面通過具體的實施例并結合附圖對本發明作進一步詳細的描述。 實施例一
請參考附圖5,為本例的報文保序裝置,包括如下各單元 Cl:接口單元501,接口完成報文的接收和發送,可將接收的報文按照 一定的規則發送到多核處理器單元502中的多個核/線程進行處理,或是發
送來自501中多個核/線程的報文。
C2:多核處理器單元502:多核處理器單元,接收來自接口單板501的
報文、完成報文的處理、轉發和保序,并發送到接口單元501向外發送;
多核處理器單元內部多個核/線程實現完全一致的功能,邏輯上包括單元
C3 C7。
C3:流分類標識單元503:用來業務流劃分,按照給定規則將不同的報
文劃分為不同的業務流,并按照遞增的順序設置報文序列號,流分類標識 可以利用硬件機制或是軟件方法實現。
C4:報文處理單元504:完成報文處理,如封裝/解封裝、IP路由等。 C5:流狀態監控單元505:監控報文處理狀態,設置相應的業務流狀態 隊列,供保序調度發送單元506發送序列號更新使用。
C6:保序調度發送單元506:根據發送序列號、報文序列號、業務流狀 態和對應的處理策略,按照給定調度策略,完成報文最終的調度和按序發 送。
上述系統中多核處理器單元內部的單元構成,屬于一種邏輯分類,實現 時可以進行功能集成,譬如報文處理、流狀態監控單元可以合一實現。采 用多核CPU的網絡設置中,用于報文處理和轉發的多個核完全對等,任何 一個核均可完成報文各階段處理和轉發,接口單元將報文送到多個核,各 個核按照給定的業務規則,劃分為不同的業務流,譬如將具有相同的源IP、 目的IP、協議類型和端口的報文劃分為一個流。同時按照接收先后的順序 為流中報文設置連續遞增的序列號;保序調度發送單元根據發送序列號、 報文序列號、業務流狀態和對應的處理策略,實現報文的保序,最后完成 報文的按序發送。其中流狀態監控單元可以監視報文的不同處理狀態,如 Processing、 Processed、 Dropped、 Time out,并分別對應不同的策略如 等待、繼續處理和丟棄等;保序單元使用報文的狀態和對應的處理策略完 全由用戶定制。
附圖6的報文保序方法,給出了僅使用"丟棄"和"已處理"兩個狀態, 完成報文保序,具體步驟如下
步驟601:線程從接口單元接收報文
步驟602:根據報文首部包含的信息,如接收端口、 MAC頭、IP頭、傳 輸端口號等信息劃分報文到不同的流。流劃分的規則由用戶指定,可以由 硬件機制輔助實現,或是由軟件實現,劃分使用信息不限于上述信息。
步驟603:根據報文處理結果標記流中報文狀態,這里為"已處理/未 處理","需丟棄/不需丟棄"。
步驟604:報文完成處理后,調度發送時,調度選擇待發送的業務流, 首先獲得此業務流當前發送序列號tx—seq—curr和業務流隊列頭報文狀態 pkt—flag,由于當前發送序列號和報文均屬于多核/多線程共享臨界資源, 因此操作之前需要加鎖,本發明對具體使用的鎖機制不限定。
步驟605:判斷報文狀態是否為"丟棄",如果為"丟棄",需要丟棄報 文(步驟606),更新流當前發送序列號tx—seq—curr (步驟610),然后解 鎖tx—seq—curr和pkLflag (步驟611),結束本次調度發送;否則進入步
驟607處理。
步驟607:判斷報文是否已經處理完畢,如果未處理完畢,解鎖 tx—seq—curr和pkt—flag (步驟611),結束本次調度發送,循環等待報文 處理;否則進入步驟608轉發報文
步驟608:判斷報文序號是否和流當前發送序列號一致,如果不一致, 解鎖tx—seq—curr和pkt—flag (步驟611),結束本次調度發送,循環等待 報文處理;否則進入步驟609。
步驟609:報文按序轉發,更新流當前發送序列號tx—Seq_CUiT (步驟 610),然后解鎖tx—seq—curr和pkt—flag(步驟611),結束本次調度發送。 實施例三
在附圖7給出本發明的另外一種實施方式中,這種實施方式考慮到實 際網絡設備可能存在的軟件或是硬件問題,造成報文處理時間過長,或是 進入死等狀態。增加對報保序處理中文是否超時的判斷,如果未超時,轉 發報文,否則丟棄報文,具體步驟如下
步驟701 步驟706分別和附圖6中的步驟601 步驟606,步驟708 步驟712分別和步驟607 步驟611完全一致,這里不再贅述,這里只描 述新加入的步驟-
步驟707:如果步驟706中報文狀態不是丟棄,進入步驟707,判斷報 文是否超時,如果超時,需要丟棄報文(步驟706),更新流當前發送序列 號tx—seq—curr(步驟711,然后解鎖tx—seq—curr和pkt—flag(步驟712), 結束本次調度發送;否則進入步驟708;
附圖6和附圖7給出的本發明的具體實施例中,報文保序使用了不同 的流狀態,除本發明示例的狀態外,還可以是其他任意用戶指定的狀態; 流狀態的使用,使得當前有效發送序列號的更新粒度是可變的,舉例來說, 某個業務流的報文A、 B、 C、 D、 E、 F、 G、 H依次進入設備處理,由于某種 異常或是超時,B、 C、 D、 F、 G最后被設備丟棄,只有A、 E、 H需要按序 依次發送,對應E的發送序列號和對應A的發送序列號之差為3,而對應H 的發送序列號和對應E的發送序列號之差為2,即當前有效發送序列號的 更新粒度是可變的。而發送序列號的初始化可以由流分類標識單元或保序 調度發送單元執行。
附圖8給出實現上述報文保序方法的一種網絡設備示意圖,包括接口
單元80K多核處理器單元802、存儲單元803和總線804。 一般而言,多 核處理器單元完成對接口單元、存儲單元的初始化和控制,負責完成報文 的流分類標識、處理和保序轉發,其上可以運行非特定的操作系統。存儲 單元用于緩存報文,在多核處理器的適當控制下維護業務流報文隊列、流 狀態隊列,同時作為共享設備,可以用來存儲保序時多個核/線程的共享資 源如發送序列號。接口單元作為網絡設備和其他設備的接口,可以但不限 定為以太網接口、幀中繼接口、 ATM接口等等。總線設備用來完成設備內 部各單元之間的通信,數據交互。本發明中多核處理器單元不限定特殊的 處理器,甚至不限定為多核處理器,多個單處理器單元之間構成的系統, 同樣可以實踐本發明,附圖示意圖只是描述而非限制實現的細節。
以上內容是結合具體的優選實施方式對本發明所作的進一步詳細說 明,不能認定本發明的具體實施只局限于這些說明。對于本發明所屬技術 領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若 干簡單推演或替換,都應當視為屬于本發明的保護范圍。
權利要求
1、一種報文保序方法,包括如下的步驟11)流分類標識單元對接收到的報文首先進行流分類和標識操作,將報文按給定規則劃分為不同的業務流,同時為流中每個報文分配一個報文序列號,同一流中序列號連續遞增分配;然后將報文均衡分發到并行的多個核/線程中;12)報文處理單元對報文進行處理時,流狀態監控單元為每個業務流隊列維護一個相應的流狀態隊列,實時監控報文狀態,設置每個報文的狀態向量,對于不同的報文狀態向量,指定不同的處理策略;13)保序調度發送單元獲取業務流當前發送序列號、報文序列號、業務流報文狀態向量和對應的處理策略;鎖定業務流當前發送序列號、相應狀態向量;根據不同報文狀態向量對應的處理策略,實現對報文調度、發送的同步;同時更新當前發送序列號,解鎖發送序列號和報文狀態向量。
2、 如權利要求1所述的報文保序方法,其特征是所述步驟13)的 具體過程包括如果某個報文狀態向量對應的處理策略為繼續處理,當業 務流當前發送序列號和報文序列號相同時,則轉發報文,更新當前發送序 列號,解鎖發送序列號和報文狀態向量;否則解鎖發送序列號和報文狀態 向量,結束本次調度發送。
3、 如權利要求2所述的報文保序方法,其特征是所述步驟13)的 具體過程還包括如果某個報文狀態向量對應的處理策略為丟棄,則丟棄 該報文,更新當前發送序列號,解鎖發送序列號和報文狀態向量,結束本 次調度發送。
4、 如權利要求2或3所述的報文保序方法,其特征是所述步驟13) 的具體過程還包括如果某個報文狀態向量對應的處理策略為等待,解鎖 發送序列號和報文狀態向量,結束本次調度發送。
5、 如權利要求3所述的報文保序方法,其特征是如果所述報文狀態 向量為超時,則對應策略為丟棄報文。
6、 如權利要求1或2或3所述的報文保序方法,其特征是由流分類 標識單元初始化每個流的當前發送序列號,由保序調度發送單元維護該發 送序列號;或由保序調度發送單元初始化每個流的當前發送序列號,并維 護該發送序列號。
7、 一種報文保序裝置,包括流分類標識單元按照給定規則,將接收到的報文劃分為不同的業務 流中,為流中每個報文分配一個連續遞增的序列號;同時完成報文在多核/ 多線程上的負載均衡分發;報文處理單元對接收到的報文進行處理;流狀態監控單元用來維護流狀態隊列,標記報文的處理狀態;保持 流狀態隊列和業務流隊列一一對應;保序調度發送單元根據流狀態隊列中的報文狀態向量和對應的處理 策略,實現對報文調度、發送的同步。
8、 如權利要求7所述報文保序裝置,其特征是所述報文狀態向量包 括處理中,對應策略為等待;已處理,對應策略為繼續處理;丟棄,對 應策略為丟棄。 '
9、 如權利要求8所述報文保序裝置,其特征是所述報文狀態向量還 包括已超時,對應策略為丟棄。
10、 如權利要求7-9中任一項所述報文保序裝置,其特征是所述流 分類標識單元初始化每個流的當前發送序列號,所述保序調度發送單元維 護該發送序列號;或所述保序調度發送單元初始化每個流的當前發送序列 號,并維護該發送序列號。
全文摘要
本發明公開了一種報文保序方法及其裝置,該裝置包括流分類標識單元按照給定規則,將接收到的報文劃分為不同的業務流中,為流中每個報文分配一個連續遞增的序列號;同時完成報文在多核/多線程上的負載均衡分發;報文處理單元對接收到的報文進行處理;流狀態監控單元用來維護流狀態隊列,標記報文的處理狀態;保持流狀態隊列和業務流隊列一一對應;保序和調度發送單元根據流狀態隊列中的報文狀態向量和對應的處理策略,實現對報文調度、發送的同步。本發明通過可變粒度流發送序列號,可同時解決業務流正常報文、異常報文的保序功能;保序策略更為完善、保序功能更為穩定有效。
文檔編號H04L12/56GK101175033SQ20071007751
公開日2008年5月7日 申請日期2007年11月27日 優先權日2007年11月27日
發明者劉志遠, 俊 姚, 郭樹波 申請人:中興通訊股份有限公司