• / 26
  • 下載費用:30 金幣  

報文分流方法、裝置、處理器和網絡設備.pdf

摘要
申請專利號:

CN201210049845.0

申請日:

2012.02.29

公開號:

CN102624611B

公開日:

2015.01.21

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||著錄事項變更IPC(主分類):H04L 12/56變更事項:申請人變更前:成都市華為賽門鐵克科技有限公司變更后:華為數字技術(成都)有限公司變更事項:地址變更前:611731 四川省成都市高新區西部園區清水河片區變更后:611731 四川省成都市高新區西部園區清水河片區|||實質審查的生效IPC(主分類):H04L 12/56申請日:20120229|||公開
IPC分類號: H04L12/24 主分類號: H04L12/24
申請人: 華為數字技術(成都)有限公司
發明人: 閆婷; 于鋒
地址: 611731 四川省成都市高新區西部園區清水河片區
優先權: 2011.12.31 CN 201110459577.5
專利代理機構: 北京同立鈞成知識產權代理有限公司 11205 代理人: 劉芳
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201210049845.0

授權公告號:

102624611B|||||||||

法律狀態公告日:

2015.01.21|||2013.01.02|||2012.09.26|||2012.08.01

法律狀態類型:

授權|||著錄事項變更|||實質審查的生效|||公開

摘要

本發明提供一種報文分流方法、裝置、處理器和網絡設備,該報文分流方法包括:接收并解析隧道報文,根據該隧道報文的報文頭中的分片信息確定隧道報文是否為隧道分片報文;當該隧道報文為隧道分片報文時,在保存的分片信息表中查找與隧道分片報文的外層IP地址和該隧道分片報文的標識對應的處理器編號;當在分片信息表中查找到與上述隧道分片報文的外層IP地址和隧道分片報文的標識對應的處理器編號時,將隧道分片報文發送給相應的處理器。該方法可以實現對隧道報文進行均勻分流,并可以確保隧道分片報文的首分片和后續分片轉發到同一處理器上,且無需在發送側對隧道報文做任何修改。

權利要求書

1: 一種報文分流方法, 其特征在于, 包括 : 接收并解析隧道報文, 獲取所述隧道報文的外層因特網協議 IP 地址、 內層 IP 地址和所 述隧道報文的標識 ; 根據所述隧道報文的報文頭中的分片信息, 判斷所述隧道報文是否為隧道分片報文 ; 當所述隧道報文為隧道分片報文時, 在預存的分片信息表中, 查找與所述隧道分片報 文的外層 IP 地址和所述隧道分片報文的標識對應的處理器編號, 其中, 所述分片信息表中 的處理器編號根據隧道分片報文的內層 IP 地址獲得或者根據隧道分片報文的外層 IP 地址 和隧道分片報文的標識獲得 ; 當在所述分片信息表中查找到與所述隧道分片報文的外層 IP 地址和所述隧道分片報 文的標識對應的處理器編號時, 將所述隧道分片報文發送給相應的處理器。
2: 根據權利要求 1 所述的方法, 其特征在于, 還包括 : 當在所述分片信息表中沒有查找到與所述隧道分片報文的外層 IP 地址和所述隧道分 片報文的標識對應的處理器編號時, 判斷所述隧道分片報文是否為首分片 ; 當所述隧道分片報文為首分片時, 根據所述隧道分片報文的內層 IP 地址獲得處理所 述隧道分片報文的處理器編號, 將所述隧道分片報文發送給相應的處理器 ; 當所述隧道分片報文不是首分片時, 根據所述隧道分片報文的外層 IP 地址和所述隧 道分片報文的標識獲得處理所述隧道分片報文的處理器編號, 將所述隧道分片報文發送給 相應的處理器。
3: 根據權利要求 2 所述的方法, 其特征在于, 所述獲得處理所述隧道分片報文的處理 器編號之后, 還包括 : 在所述分片信息表中創建與所述隧道分片報文的外層 IP 地址和所述隧道分片報文的 標識對應的表項, 并在所述表項中記錄所述處理器編號。
4: 根據權利要求 1-3 任意一項所述的方法, 其特征在于, 還包括 : 當所述隧道報文不是隧道分片報文時, 根據所述隧道報文的內層 IP 地址獲得處理所 述隧道報文的處理器編號, 并將所述隧道報文發送給相應的處理器。
5: 一種報文分流方法, 其特征在于, 包括 : 第一處理器接收報文分流裝置發送的隧道分片報文, 獲得所述隧道分片報文的外層因 特網協議 IP 地址、 內層 IP 地址和所述隧道分片報文的標識 ; 在預存的分片信息表中, 查找與所述隧道分片報文的外層 IP 地址和所述隧道分片報 文的標識對應的第二處理器編號, 其中, 所述分片信息表中的第二處理器編號是根據隧道 分片報文的內層 IP 地址獲得 ; 當在所述分片信息表中, 查找到與所述隧道分片報文的外層 IP 地址和所述隧道分片 報文的標識對應的第二處理器編號時, 若所述第二處理器編號與所述第一處理器的編號不 同, 則將所述隧道分片報文發送給所述第二處理器編號對應的第二處理器 ; 若所述第二處 理器編號與所述第一處理器的編號相同, 由所述第一處理器處理所述隧道分片報文。
6: 根據權利要求 5 所述的方法, 其特征在于, 所述隧道分片報文是報文分流裝置根據所述隧道分片報文的外層 IP 地址和所述隧道 分片報文的標識獲得所述第一處理器的編號之后, 發送給所述第一處理器的。
7: 根據權利要求 6 所述的方法, 其特征在于, 還包括 : 2 當在所述分片信息表中沒有查找到與所述隧道分片報文的外層 IP 地址和所述隧道分 片報文的標識對應的第二處理器編號時, 判斷所述隧道分片報文是否為首分片 ; 當所述隧道分片報文為首分片時, 根據所述隧道分片報文的內層 IP 地址獲得處理所 述隧道分片報文的第二處理器編號, 若第二處理器編號與所述第一處理器的編號不同, 則 將所述隧道分片報文發送給所述第二處理器編號對應的第二處理器 ; 當所述隧道分片報文不是首分片時, 緩存所述隧道分片報文。
8: 根據權利要求 7 所述的方法, 其特征在于, 還包括 : 在所述分片信息表中, 查找與緩存的隧道分片報文的外層 IP 地址和緩存的隧道分片 報文的標識對應的第二處理器編號 ; 當在所述分片信息表中, 查找到與所述緩存的隧道分片報文的外層 IP 地址和所述緩 存的隧道分片報文的標識對應的第二處理器編號時, 若第二處理器編號與所述第一處理器 的編號不同, 則將所述緩存的隧道分片報文發送給所述第二處理器編號對應的第二處理 器。
9: 根據權利要求 7 所述的方法, 其特征在于, 所述根據所述隧道分片報文的內層 IP 地 址獲得處理所述隧道分片報文的第二處理器編號之后, 還包括 : 在所述分片信息表中創建與所述隧道分片報文的外層 IP 地址和所述隧道分片報文的 標識對應的表項, 并在所述表項中記錄所述第二處理器編號。
10: 一種報文分流裝置, 其特征在于, 包括 : 獲取模塊, 用于接收并解析隧道報文, 獲取所述隧道報文的外層因特網協議 IP 地址、 內層 IP 地址和所述隧道報文的標識 ; 確定模塊, 用于根據所述隧道報文的報文頭中的分片信息, 判斷所述隧道報文是否為 隧道分片報文 ; 查找模塊, 用于當所述確定模塊確定所述隧道報文為隧道分片報文時, 在所述報文分 流裝置預存的分片信息表中查找與所述隧道分片報文的外層 IP 地址和所述隧道分片報文 的標識對應的處理器編號, 其中, 所述分片信息表中的處理器編號根據隧道分片報文的內 層 IP 地址獲得或者根據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得 ; 發送模塊, 用于當所述查找模塊在所述分片信息表中查找到與所述隧道分片報文的外 層 IP 地址和所述隧道分片報文的標識對應的處理器編號時, 將所述隧道分片報文發送給 相應的處理器。
11: 根據權利要求 10 所述的裝置, 其特征在于, 還包括 : 第一獲得模塊 ; 所述確定模塊, 還用于當所述查找模塊在所述分片信息表中沒有查找到與所述隧道分 片報文的外層 IP 地址和所述隧道分片報文的標識對應的處理器編號時, 判斷所述隧道分 片報文是否為首分片 ; 所述第一獲得模塊, 用于當所述確定模塊確定所述隧道分片報文為首分片時, 根據所 述隧道分片報文的內層 IP 地址獲得處理所述隧道分片報文的處理器編號 ; 以及當所述確 定模塊確定所述隧道分片報文不是首分片時, 根據所述隧道分片報文的外層 IP 地址和所 述隧道分片報文的標識獲得處理所述隧道分片報文的處理器編號。
12: 根據權利要求 11 所述的裝置, 其特征在于, 還包括 : 創建模塊, 用于在所述第一獲得模塊獲得處理所述隧道分片報文的處理器編號之后, 3 在所述分片信息表中創建與所述隧道分片報文的外層 IP 地址和所述隧道分片報文的標識 對應的表項, 并在所述表項中記錄所述處理器編號。
13: 根據權利要求 10-12 任意一項所述的裝置, 其特征在于, 還包括 : 第二獲得模塊, 用于當所述確定模塊確定所述隧道報文不是隧道分片報文時, 根據所 述隧道報文的內層 IP 地址獲得處理所述隧道報文的處理器編號 ; 所述發送模塊, 還用于根據所述第二獲得模塊獲得的處理器編號將所述隧道報文發送 給相應的處理器。
14: 一種處理器, 其特征在于, 所述處理器為第一處理器, 所述處理器包括 : 報文接收模塊, 用于接收報文分流裝置發送的隧道分片報文, 獲得所述隧道分片報文 的外層因特網協議 IP 地址、 內層 IP 地址和所述隧道分片報文的標識 ; 編號查找模塊, 用于在預存的分片信息表中查找與所述隧道分片報文的外層 IP 地址 和所述隧道分片報文的標識對應的第二處理器編號, 其中, 所述分片信息表中的第二處理 器編號是根據隧道分片報文的內層 IP 地址獲得 ; 報文發送模塊, 用于當所述編號查找模塊在所述分片信息表中查找到與所述隧道分片 報文的外層 IP 地址和所述隧道分片報文的標識對應的第二處理器編號時, 若第二處理器 編號與所述第一處理器的編號不同, 則將所述隧道分片報文發送給所述第二處理器編號對 應的第二處理器 ; 報文處理模塊, 用于當所述第二處理器編號與所述第一處理器的編號相同時, 處理所 述隧道分片報文。
15: 根據權利要求 14 所述的處理器, 其特征在于, 所述報文接收模塊接收的所述隧道 分片報文是所述報文分流裝置根據所述隧道分片報文的外層 IP 地址和所述隧道分片報文 的標識獲得所述第一處理器的編號之后, 發送給所述第一處理器的。
16: 根據權利要求 15 所述的處理器, 其特征在于, 還包括 : 報文確定模塊, 用于當所述編號查找模塊在所述分片信息表中沒有查找到與所述隧道 分片報文的外層 IP 地址和所述隧道分片報文的標識對應的第二處理器編號時, 判斷所述 隧道分片報文是否為首分片 ; 編號獲得模塊, 用于當所述報文確定模塊確定所述隧道分片報文為首分片時, 根據所 述隧道分片報文的內層 IP 地址獲得處理所述隧道分片報文的第二處理器編號 ; 報文緩存模塊, 用于當所述報文確定模塊確定所述隧道分片報文不是首分片時, 緩存 所述隧道分片報文 ; 所述報文發送模塊, 還用于當所述編號獲得模塊獲得的第二處理器編號與所述第一處 理器的編號不同時, 將所述隧道分片報文發送給所述第二處理器編號對應的第二處理器。
17: 根據權利要求 16 所述的處理器, 其特征在于, 所述編號查找模塊, 還用于在所述分片信息表中查找與緩存的隧道分片報文的外層 IP 地址和緩存的隧道分片報文的標識對應的第二處理器編號 ; 所述報文發送模塊, 還用于當所述編號查找模塊在所述分片信息表中查找到與所述緩 存的隧道分片報文的外層 IP 地址和所述緩存的隧道分片報文的標識對應的第二處理器編 號時, 若第二處理器編號與所述第一處理器的編號不同, 則將所述緩存的隧道分片報文發 送給所述第二處理器編號對應的第二處理器。 4
18: 根據權利要求 16 所述的處理器, 其特征在于, 還包括 : 表項創建模塊, 用于在所述編號獲得模塊獲得處理所述隧道分片報文的第二處理器編 號之后, 在所述分片信息表中創建與所述隧道分片報文的外層 IP 地址和所述隧道分片報 文的標識對應的表項, 并在所述表項中記錄所述第二處理器編號。
19: 一種網絡設備, 其特征在于, 包括如權利要求 10-13 任意一項所述的報文分流裝置 和至少兩個如權利要求 14-18 任意一項所述的處理器。

說明書


報文分流方法、 裝置、 處理器和網絡設備

    【技術領域】
     本發明涉及通信技術, 尤其涉及一種報文分流方法、 裝置、 處理器和網絡設備。背景技術 隨著網絡流量的不斷提高, 單一處理器系統越來越不能滿足高速業務數據處理的 要求, 因此分布式系統在高端數據處理中獲得了越來越廣泛的應用。 在分布式系統中, 數據 報文需要轉發給多個處理器進行處理, 為了保證處理器對數據報文的正確處理, 需要將同 一條流的報文轉發給同一個處理器。因此分流技術是分布式系統中重要的數據轉發方式。
     普通的因特網協議 (Internet Protocol ; 以下簡稱 : IP) 報文可根據報文的 IP 地 址信息進行哈希 (Hash) 或通過訪問控制列表 (Access Control List ; 以下簡稱 : ACL) 規則 進行分流保證同一條流的流量都交給同一處理器處理。
     但網絡中還存在一種報文 : 隧道報文。隧道報文是對某些網絡層協議的數據報 文進行封裝, 使這些被封裝的數據報文可以在另一種網絡層協議中傳輸, 如通用路由封裝 (Generic Routing Encapsulation ; 以下簡稱 : GRE) 報文等。 如果與普通數據報文一樣, 針 對隧道報文也采用外層 IP 進行分流, 則由于隧道報文的外層 IP 可能都相同, 簡單的 Hash 運算或 ACL 規則匹配會造成隧道報文的流量全部交給同一個處理器處理, 而其他處理器相 對空閑的情況, 浪費了系統資源。
     現有技術提供的一種方案中, 針對隧道報文根據該隧道報文內層封裝的 IP 地址 信息進行分流, 以解決外層 IP 相同導致的分流不均問題。
     但是對于根據外層 IP 進行分片的隧道分片報文, 由于后續分片中不再包含內層 IP 信息, 因此該方案會導致報文的首分片和后續分片分流到不同的處理器上, 致使處理器 無法正確處理這部分報文。
     發明內容 本發明提供一種報文分流方法、 裝置、 處理器和網絡設備, 以實現對隧道報文進行 均勻分流, 并可以保證隧道分片報文的首分片和后續分片轉發到同一處理器上。
     根據本發明實施例的一個方面, 提供一種報文分流方法, 包括 :
     接收并解析隧道報文, 獲取所述隧道報文的外層因特網協議 IP 地址、 內層 IP 地址 和所述隧道報文的標識 ;
     根據所述隧道報文的報文頭中的分片信息確定所述隧道報文是否為隧道分片報 文;
     當所述隧道報文為隧道分片報文時, 在預存的分片信息表中查找與所述隧道分片 報文的外層 IP 地址和所述隧道分片報文的標識對應的處理器編號, 其中, 所述分片信息表 中的處理器編號根據隧道分片報文的內層 IP 地址或者根據隧道分片報文的外層 IP 地址和 隧道分片報文的標識獲得 ;
     當在所述分片信息表中查找到與所述隧道分片報文的外層 IP 地址和所述隧道分
     片報文的標識對應的處理器編號時, 將所述隧道分片報文發送給相應的處理器。
     根據本發明實施例的另一方面, 提供一種報文分流方法, 包括 :
     第一處理器接收報文分流裝置發送的隧道分片報文, 獲得所述隧道分片報文的外 層因特網協議 IP 地址、 內層 IP 地址和所述隧道分片報文的標識 ;
     在預存的分片信息表中查找與所述隧道分片報文的外層 IP 地址和所述隧道分片 報文的標識對應的第二處理器編號, 其中, 所述分片信息表中的第二處理器編號是根據隧 道分片報文的內層 IP 地址獲得 ;
     當在所述分片信息表中查找到與所述隧道分片報文的外層 IP 地址和所述隧道分 片報文的標識對應的第二處理器編號時, 若第二處理器編號與所述第一處理器的編號不 同, 則將所述隧道分片報文發送給所述第二處理器編號對應的第二處理器 ; 若所述第二處 理器編號與所述第一處理器的編號相同, 由所述第一處理器處理所述隧道分片報文。
     根據本發明實施例的再一方面, 提供一種報文分流裝置, 包括 :
     獲取模塊, 用于接收并解析隧道報文, 獲取所述隧道報文的外層因特網協議 IP 地 址、 內層 IP 地址和所述隧道報文的標識 ;
     確定模塊, 用于根據所述隧道報文的報文頭中的分片信息確定所述隧道報文是否 為隧道分片報文 ; 查找模塊, 用于當所述確定模塊確定所述隧道報文為隧道分片報文時, 在所述報 文分流裝置預存的分片信息表中查找與所述隧道分片報文的外層 IP 地址和所述隧道分片 報文的標識對應的處理器編號, 其中, 所述分片信息表中的處理器編號根據隧道分片報文 的內層 IP 地址或者根據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得 ;
     發送模塊, 用于當所述查找模塊在所述分片信息表中查找到與所述隧道分片報文 的外層 IP 地址和所述隧道分片報文的標識對應的處理器編號時, 將所述隧道分片報文發 送給相應的處理器。
     根據本發明實施例的再一方面, 提供一種處理器, 所述處理器為第一處理器, 所述 處理器包括 :
     報文接收模塊, 用于接收報文分流裝置發送的隧道分片報文, 獲得所述隧道分片 報文的外層因特網協議 IP 地址、 內層 IP 地址和所述隧道分片報文的標識 ;
     編號查找模塊, 用于在預存的分片信息表中查找與所述隧道分片報文的外層 IP 地址和所述隧道分片報文的標識對應的第二處理器編號, 其中, 所述分片信息表中的第二 處理器編號是根據隧道分片報文的內層 IP 地址獲得 ;
     報文發送模塊, 用于當所述編號查找模塊在所述分片信息表中查找到與所述隧道 分片報文的外層 IP 地址和所述隧道分片報文的標識對應的第二處理器編號時, 若第二處 理器編號與所述第一處理器的編號不同, 則將所述隧道分片報文發送給所述第二處理器編 號對應的第二處理器 ;
     報文處理模塊, 用于當所述第二處理器編號與所述第一處理器的編號相同時, 處 理所述隧道分片報文。
     根據本發明實施例的又一方面, 提供一種網絡設備, 包括如上所述的報文分流裝 置和至少兩個如上所述的處理器。
     使用本發明實施例提供的技術方案, 可以根據分片信息表對接收到的隧道報文進
     行分流, 由于分片信息表中的處理器編號是根據隧道報文的內層 IP 地址獲得或者根據所 述隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得, 從而可以實現對隧道報文進 行均勻分流, 并可以確保隧道分片報文的首分片和后續分片轉發到同一處理器上。 附圖說明 為了更清楚地說明本發明實施例或現有技術中的技術方案, 下面將對實施例或現 有技術描述中所需要使用的附圖作一簡單地介紹, 顯而易見地, 下面描述中的附圖是本發 明的一些實施例, 對于本領域普通技術人員來講, 在不付出創造性勞動性的前提下, 還可以 根據這些附圖獲得其他的附圖。
     圖 1 為本發明報文分流方法一個實施例的流程圖 ;
     圖 2 為本發明報文分流方法另一個實施例的流程圖 ;
     圖 3 為本發明報文分流方法再一個實施例的流程圖 ;
     圖 4 為本發明報文分流方法再一個實施例的流程圖 ;
     圖 5 為本發明報文分流方法再一個實施例的流程圖 ;
     圖 6 為本發明報文分流裝置一個實施例的結構示意圖 ;
     圖 7 為本發明報文分流裝置另一個實施例的結構示意圖 ; 圖 8 為本發明報文分流裝置再一個實施例的結構示意圖 ; 圖 9 為本發明處理器一個實施例的結構示意圖 ; 圖 10 為本發明處理器另一個實施例的結構示意圖。具體實施方式
     為使本發明實施例的目的、 技術方案和優點更加清楚, 下面將結合本發明實施例 中的附圖, 對本發明實施例中的技術方案進行清楚、 完整地描述, 顯然, 所描述的實施例是 本發明一部分實施例, 而不是全部的實施例。 基于本發明中的實施例, 本領域普通技術人員 在沒有作出創造性勞動前提下所獲得的所有其他實施例, 都屬于本發明保護的范圍。
     圖 1 為本發明報文分流方法一個實施例的流程圖, 如圖 1 所示, 該報文分流方法可 以包括 :
     步驟 101, 接收并解析隧道報文, 獲取該隧道報文的外層 IP 地址、 內層 IP 地址和該 隧道報文的標識。
     本實施例中, 上述外層 IP 地址是指封裝的網絡層協議地址, 內層 IP 地址是指被封 裝的網絡層協議地址, 且外層 IP 地址可以為外層源 IP 地址和 / 或外層目的 IP 地址, 同樣上 述內層 IP 地址也可以為內層源 IP 地址和 / 或內層目的 IP 地址, 本實施例對此不作限定。
     上述隧道報文的標識為報文頭中報文標識字段的值, 屬于同一個報文的分片報文 均具有相同的標識。例如 : 對隧道報文進行分片后獲得的首分片和后續分片具有相同的標 識。
     步驟 102, 根據上述隧道報文的報文頭中的分片信息判斷該隧道報文是否為隧道 分片報文。
     本實施例中, 上述分片信息用于指示該隧道報文是否為分片報文。當該隧道報文 為隧道分片報文時, 通過解析該隧道分片報文, 報文分流裝置還可以獲得隧道分片報文的報文頭中偏移字段的值。 其中, 上述偏移字段的值用于確定該隧道分片報文是第幾分片, 例 如: 當隧道分片報文的報文頭中偏移字段的值為 “0” 時, 可以確定該隧道分片報文為首分 片; 當隧道分片報文的報文頭中偏移字段的值為 “100” 時, 可以確定該隧道分片報文不是 首分片, 而是第二個分片, 以此類推。
     步驟 103, 當上述隧道報文為隧道分片報文時, 在預存的分片信息表中查找與上述 隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的處理器編號。
     其中, 上述分片信息表中的處理器編號根據隧道分片報文的內層 IP 地址獲得或 者根據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得。
     步驟 104, 當在上述分片信息表中查找到與上述隧道分片報文的外層 IP 地址和上 述隧道分片報文的標識對應的處理器編號時, 將上述隧道分片報文發送給相應的處理器。
     上述實施例中, 接收并解析隧道報文之后, 當該隧道報文為隧道分片報文時, 在保 存的分片信息表中查找與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對 應的處理器編號, 當在分片信息表中查找到與上述隧道分片報文的外層 IP 地址和上述隧 道分片報文的標識對應的處理器編號時, 將上述隧道分片報文發送給相應的處理器。本實 施例根據分片信息表對接收到的隧道報文進行分流, 從而可以實現對隧道報文進行均勻分 流, 并可以確保隧道分片報文的首分片和后續分片轉發到同一處理器上。 圖 2 為本發明報文分流方法另一個實施例的流程圖, 如圖 2 所示, 該報文分流方法 可以包括 :
     步驟 201, 報文分流裝置接收并解析隧道報文, 獲取該隧道報文的外層 IP 地址、 內 層 IP 地址和該隧道報文的標識。
     本實施例中, 上述外層 IP 地址是指封裝的網絡層協議地址, 內層 IP 地址是指被封 裝的網絡層協議地址, 且外層 IP 地址可以為外層源 IP 地址和 / 或外層目的 IP 地址, 同樣上 述內層 IP 地址也可以為內層源 IP 地址和 / 或內層目的 IP 地址, 本實施例對此不作限定。
     上述隧道報文的標識為報文頭中報文標識字段的值, 屬于同一個報文的分片報文 均具有相同的標識。例如 : 對隧道報文進行分片后獲得的首分片和后續分片具有相同的標 識。
     步驟 202, 報文分流裝置根據上述隧道報文的報文頭中的分片信息判斷該隧道報 文是否為隧道分片報文 ; 如果判斷該隧道報文是隧道分片報文, 則執行步驟 203 ; 如果判斷 該隧道報文不是隧道分片報文, 則執行步驟 210。
     本實施例中, 上述分片信息用于指示該隧道報文是否為分片報文。當該隧道報文 為隧道分片報文時, 通過解析該隧道分片報文, 報文分流裝置還可以獲得隧道分片報文的 報文頭中偏移字段的值。 其中, 上述偏移字段的值用于確定該隧道分片報文是第幾分片, 例 如: 當隧道分片報文的報文頭中偏移字段的值為 “0” 時, 可以確定該隧道分片報文為首分 片; 當隧道分片報文的報文頭中偏移字段的值為 “100” 時, 可以確定該隧道分片報文不是 首分片, 而是第二個分片, 以此類推。
     步驟 203, 判斷在預存的分片信息表中是否查找到與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的處理器編號 ; 如果是, 則執行步驟 204, 如果未查找 到, 則執行步驟 205。
     其中, 上述分片信息表中的處理器編號根據隧道分片報文的內層 IP 地址或者根
     據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得。
     步驟 204, 報文分流裝置將上述隧道分片報文發送給相應的處理器。
     本步驟中, 相應的處理器即為步驟 203 中在分片信息表中查找到的處理器編號對 應的處理器。
     步驟 205, 報文分流裝置確定上述隧道分片報文是否為首分片 ; 如果是, 則執行步 驟 206 ; 如果上述隧道分片報文不是首分片, 則執行步驟 207。
     步驟 206, 報文分流裝置根據上述隧道分片報文的內層 IP 地址獲得處理該隧道分 片報文的處理器編號, 然后執行步驟 208 ~步驟 209。
     其中, 根據該隧道分片報文的內層 IP 地址獲得處理該隧道分片報文的處理器編 號可以為 : 對該隧道分片報文的內層 IP 地址進行 Hash 獲得處理該隧道分片報文的處理器 編號, 或對該隧道分片報文的內層 IP 地址按照 ACL 規則進行匹配獲得處理該隧道分片報文 的處理器編號, 本實施例對根據該隧道分片報文的內層 IP 地址獲得處理該隧道分片報文 的處理器編號的方式不作限定。
     步驟 207, 報文分流裝置根據上述隧道分片報文的外層 IP 地址和上述隧道分片報 文的標識獲得處理上述隧道分片報文的處理器編號, 然后執行步驟 208 ~步驟 209。
     其中, 根據上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識獲得處 理該隧道分片報文的處理器編號可以為 : 對上述隧道分片報文的外層 IP 地址和上述隧道 分片報文的標識進行 Hash 獲得處理上述隧道分片報文的處理器編號, 或對上述隧道分片 報文的外層 IP 地址和上述隧道分片報文的標識按照 ACL 規則進行匹配獲得處理該隧道分 片報文的處理器編號, 本實施例對根據上述隧道分片報文的外層 IP 地址和上述隧道分片 報文的標識獲得處理該隧道分片報文的處理器編號的方式不作限定。
     步驟 208, 報文分流裝置將上述隧道分片報文發送給相應的處理器。
     本步驟中, 相應的處理器即為步驟 206 或步驟 207 中獲得的處理器編號對應的處 理器。
     步驟 209, 報文分流裝置在分片信息表中創建與上述隧道分片報文的外層 IP 地址 和上述隧道分片報文的標識對應的表項, 并在該表項中記錄上述處理器編號。
     本實施例中, 步驟 208 與步驟 209 可以并行執行, 也可以先后執行, 本實施例對步 驟 208 與步驟 209 的執行順序不作限定, 但圖 2 中以步驟 208 與步驟 209 先后執行為例示 出。
     步驟 210, 報文分流裝置根據隧道報文的內層 IP 地址獲得處理該隧道報文的處理 器編號, 并將上述隧道報文發送給相應的處理器。
     上述實施例根據分片信息表對接收到的隧道報文進行分流, 從而可以實現對隧道 報文進行均勻分流 ; 另外, 對于接收到的隧道分片報文不是首分片而是后續分片的情形, 即步驟 207 對應的情形, 由于后續分片不包含內層 IP 地址的信息, 因此報文分流裝置直接 根據該隧道分片報文的外層 IP 地址和該隧道分片報文的標識獲得處理該隧道分片報文的 處理器編號, 將上述隧道分片報文發送給相應的處理器, 并在分片信息表中創建與該隧道 分片報文的外層 IP 地址和該隧道分片報文的標識對應的表項, 在該表項中記錄上述處理 器編號。這樣, 當首分片到來時, 報文分流裝置可以根據該首分片的外層 IP 地址和該首分 片的標識進行查表, 按照命中的處理器編號將首分片轉發到上述處理器編號對應的處理器上, 從而可以保證屬于同一隧道報文的首分片和后續分片均被轉發給同一處理器上 ; 并且 無需在發送側對隧道報文做任何修改。
     本發明圖 2 所示實施例中, 如果根據隧道分片報文的外層 IP 地址和該隧道分片報 文的標識獲得處理器編號, 并將上述隧道分片報文轉發給上述處理器編號對應的處理器, 則與屬于同一條流的其他報文相比, 該隧道分片報文可能會被分到不同的處理器上, 其中, 屬于同一條流的報文是指具有相同內層 IP 地址的報文。這時, 需要處理器對接收到的隧道 分片報文再次進行分流, 以使屬于同一條流的報文被轉發給同一處理器處理。
     本發明中, “第一” 和 “第二” 僅為描述方便, 不代表性能的優劣和順序的先后, 下 同。
     圖 3 為本發明報文分流方法再一個實施例的流程圖, 如圖 3 所示, 該報文分流方法 可以包括 :
     步驟 301, 第一處理器接收報文分流裝置發送的隧道分片報文, 獲得該隧道分片報 文的外層 IP 地址、 內層 IP 地址和上述隧道分片報文的標識。
     其中, 該隧道分片報文是報文分流裝置根據隧道分片報文的外層 IP 地址和該隧 道分片報文的標識獲得上述第一處理器的編號之后, 發送給上述第一處理器的。 本實施例中, 上述外層 IP 地址是指封裝的網絡層協議地址, 內層 IP 地址是指被封 裝的網絡層協議地址, 且外層 IP 地址可以為外層源 IP 地址和 / 或外層目的 IP 地址, 同樣上 述內層 IP 地址也可以為內層源 IP 地址和 / 或內層目的 IP 地址, 本實施例對此不作限定。
     上述隧道報文的標識為報文頭中報文標識字段的值, 屬于同一個報文的分片報文 均具有相同的標識。例如 : 對隧道報文進行分片后獲得的首分片和后續分片具有相同的標 識。
     步驟 302, 在第一處理器預存的分片信息表中查找與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的第二處理器編號。
     其中, 上述分片信息表中的第二處理器編號是根據隧道分片報文的內層 IP 地址 獲得的。
     步驟 303, 當在分片信息表中查找到與上述隧道分片報文的外層 IP 地址和上述隧 道分片報文的標識對應的第二處理器編號時, 若第二處理器編號與上述第一處理器的編號 不同, 則將上述隧道分片報文發送給第二處理器編號對應的第二處理器 ; 若第二處理器編 號與第一處理器的編號相同, 則第一處理器處理上述隧道分片報文。
     本實施例根據分片信息表對接收到的隧道報文進行分流, 且由于分片信息表中第 二處理器編號是根據報文的內層 IP 獲得, 從而可以實現對隧道報文進行均勻分流, 確保隧 道分片報文的首分片和后續分片轉發到同一處理器上, 保證同一條流的報文被轉發到同一 個處理器上進行處理。
     圖 4 為本發明報文分流方法再一個實施例的流程圖, 如圖 4 所示, 該報文分流方法 可以包括 :
     步驟 401, 第一處理器接收報文分流裝置發送的隧道分片報文, 獲得該隧道分片報 文的外層 IP 地址、 內層 IP 地址和上述隧道分片報文的標識。
     其中, 該隧道分片報文是報文分流裝置根據隧道分片報文的外層 IP 地址和該隧 道分片報文的標識獲得上述第一處理器的編號之后, 發送給上述第一處理器的。
     本實施例中, 上述外層 IP 地址是指封裝的網絡層協議地址, 內層 IP 地址是指被封 裝的網絡層協議地址, 且外層 IP 地址可以為外層源 IP 地址和 / 或外層目的 IP 地址, 同樣上 述內層 IP 地址也可以為內層源 IP 地址和 / 或內層目的 IP 地址, 本實施例對此不作限定。
     上述隧道報文的標識為報文頭中報文標識字段的值, 屬于同一個報文的分片報文 均具有相同的標識。例如 : 對隧道報文進行分片后獲得的首分片和后續分片具有相同的標 識。
     步驟 402, 判斷在第一處理器預存的分片信息表中是否查找到與隧道分片報文的 外層 IP 地址和該隧道分片報文的標識對應的第二處理器編號 ; 如果查找到, 則執行步驟 403 ; 如果未查找到與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的 第二處理器編號, 則執行步驟 406。
     其中, 上述分片信息表中的第二處理器編號是根據隧道分片報文的內層 IP 地址 獲得的。
     步驟 403, 判斷第二處理器編號與上述第一處理器的編號是否相同 ; 如果否, 則執 行步驟 404 ; 如果第二處理器編號與上述第一處理器的編號相同, 則執行步驟 405。
     步驟 404, 第一處理器將上述隧道分片報文發送給第二處理器編號對應的第二處 理器。 步驟 405, 第一處理器處理上述隧道分片報文。
     具體地, 第一處理器接收到屬于同一個報文的所有隧道分片報文之后, 對接收到 的隧道分片報文進行重組, 然后對重組后的報文進行分析處理, 例如對該報文的上層協議 進行分析處理等等。
     步驟 406, 判斷上述隧道分片報文是否為首分片。 如果是, 則執行步驟 407 ; 如果上 述隧道分片報文不是首分片, 則執行步驟 409。
     具體地, 通過解析該隧道分片報文, 第一處理器還可以獲得隧道分片報文的報文 頭中偏移字段的值。其中, 上述偏移字段的值用于確定該隧道分片報文是第幾分片, 例如 : 當隧道分片報文的報文頭中偏移字段的值為 “0” 時, 可以確定該隧道分片報文為首分片 ; 當隧道分片報文的報文頭中偏移字段的值為 “100” 時, 可以確定該隧道分片報文不是首分 片, 而是第二個分片, 以此類推。
     步驟 407, 第一處理器根據隧道分片報文的內層 IP 地址獲得處理該隧道分片報文 的第二處理器編號, 然后執行步驟 408 和步驟 403。
     其中, 根據該隧道分片報文的內層 IP 地址獲得處理該隧道分片報文的第二處理 器編號可以為 : 對該隧道分片報文的內層 IP 地址進行 Hash 獲得處理該隧道分片報文的第 二處理器編號, 或對該隧道分片報文的內層 IP 地址按照 ACL 規則進行匹配獲得處理該隧道 分片報文的第二處理器編號, 本實施例對根據該隧道分片報文的內層 IP 地址獲得處理該 隧道分片報文的第二處理器編號的方式不作限定。
     步驟 408, 第一處理器在所述分片信息表中創建與上述隧道分片報文的外層 IP 地 址和該隧道分片報文的標識對應的表項, 并在上述表項中記錄第二處理器編號。
     步驟 409, 第一處理器緩存上述隧道分片報文, 然后執行步驟 402。
     本實施例根據分片信息表對接收到的隧道報文進行分流, 且由于分片信息表中第 二處理器編號是根據報文的內層 IP 獲得, 從而可以實現對隧道報文進行均勻分流, 確保隧
     道分片報文的首分片和后續分片轉發到同一處理器上, 保證同一條流的報文被轉發到同一 個處理器上進行處理, 且無需在發送側對隧道報文做任何修改。 此外, 由于本發明實施例中 當沒有接收到首分片而先接收到后續分片時, 可以先將后續分片進行緩存, 待首分片到達 后, 根據首分片的內層 IP 獲得處理該報文的第二處理器編號, 并保存在分片信息表中, 再 將緩存的后續分片根據該分片信息表發送到相應的第二處理器, 從而可以使亂序的報文順 序發送到相應的處理器中進行處理。
     本發明以下實施例的描述中, 將隧道分片報文的外層 IP 地址和該隧道分片報文 的標識 (Identifier ; 以下簡稱 : ID) 簡寫為外層 IP 地址 +ID。
     圖 5 為本發明報文分流方法再一個實施例的流程圖, 如圖 5 所示, 該報文分流方法 可以包括 :
     步驟 501, 報文分流裝置初始化分片信息表, 將該分片信息表中的所有表項設為無 效狀態。
     步驟 502, 報文分流裝置接收并解析隧道報文, 獲得該隧道報文的外層 IP 地址、 內 層 IP 地址和該隧道報文的標識。
     本實施例中, 上述外層 IP 地址是指封裝的網絡層協議地址, 內層 IP 地址是指被封 裝的網絡層協議地址, 且外層 IP 地址可以為外層源 IP 地址和 / 或外層目的 IP 地址, 同樣上 述內層 IP 地址也可以為內層源 IP 地址和 / 或內層目的 IP 地址, 本實施例對此不作限定。 上述隧道報文的標識為報文頭中報文標識字段的值, 屬于同一個報文的分片報文 均具有相同的標識。例如 : 對隧道報文進行分片后獲得的首分片和后續分片具有相同的標 識。
     進一步地, 通過解析上述隧道報文, 報文分流裝置還可以獲得該隧道報文的報文 頭中的分片信息, 該分片信息用于指示該隧道報文是否為分片報文。
     步驟 503, 報文分流裝置判斷上述隧道報文是否為隧道分片報文。如果是, 則執行 步驟 504 ; 如果確定該隧道報文不是隧道分片報文, 則執行步驟 510。
     具體地, 報文分流裝置可以根據步驟 502 中獲得的分片信息, 確定該隧道報文是 否為隧道分片報文。
     步驟 504, 報文分流裝置在分片信息表中查找與上述隧道分片報文的外層 IP 地址 +ID 對應的表項。
     其中, 上述分片信息表中的處理器編號可以根據隧道分片報文的內層 IP 地址或 者根據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得。
     本實施例中, 分片信息表保存隧道分片報文分流的處理器編號, 在分片信息表中 處理器編號的索引可以為隧道分片報文的外層 IP 地址 +ID ; 或者外層 IP 地址 +ID 的其他 轉化形式, 本實施例對處理器編號的索引的形式不作限定。當上述處理器編號的索引為外 層 IP 地址 +ID 的其他轉化形式時, 上述分片信息表中還應該包含與上述處理器編號的索引 對應的外層 IP 地址 +ID 的信息。
     另外, 分片信息表中還可以包含老化信息, 以供報文分流裝置對表項進行老化。
     步驟 505, 報文分流裝置判斷在分片信息表中是否查找到與上述隧道分片報文的 外層 IP 地址 +ID 對應的表項。如果否, 則執行步驟 506 ; 如果在分片信息表中查找到與上 述隧道分片報文的外層 IP 地址 +ID 對應的表項, 則執行步驟 509。
     步驟 506, 報文分流裝置判斷上述隧道分片報文是否為首分片。如果是, 則執行步 驟 507 ; 如果上述隧道分片報文不是首分片, 則執行步驟 508。
     具體地, 當該隧道報文為分片報文時, 報文分流裝置還可以根據隧道分片報文的 報文頭中偏移字段的值確定該隧道分片報文是第幾分片, 例如 : 當隧道分片報文的報文頭 中偏移字段的值為 “0” 時, 報文分流裝置可以確定該隧道分片報文為首分片 ; 當隧道分片 報文的報文頭中偏移字段的值為 “100” 時, 報文分流裝置可以確定該隧道分片報文不是首 分片, 而是第二個分片, 以此類推。
     步驟 507, 報文分流裝置根據該首分片的內層 IP 地址獲得處理該首分片的處理器 編號, 將該首分片轉發給該處理器編號對應的第一處理器, 并在上述分片信息表中創建與 上述首分片的外層 IP 地址 +ID 對應的表項, 在該表項中記錄上述處理器編號 ; 然后返回執 行步驟 502。
     其中, 根據該首分片的內層 IP 地址獲得處理該首分片的處理器編號可以為 : 對該 首分片的內層 IP 地址進行 Hash 獲得處理該首分片的處理器編號, 或對該首分片的內層 IP 地址按照 ACL 規則進行匹配獲得處理該首分片的處理器編號, 本實施例對根據該首分片的 內層 IP 地址獲得處理該首分片的處理器編號的方式不作限定。
     步驟 508, 報文分流裝置根據上述隧道分片報文的外層 IP 地址 +ID 獲得處理該隧 道分片報文的處理器編號, 將該隧道分片報文轉發給該處理器編號對應的第一處理器, 并 在上述分片信息表中創建與該隧道分片報文的外層 IP 地址 +ID 對應的表項, 在該表項中記 錄上述處理器編號。然后返回執行步驟 502。
     其中, 根據上述隧道分片報文的外層 IP 地址 +ID 獲得處理該隧道分片報文的處理 器編號可以為 : 對上述隧道分片報文的外層 IP 地址 +ID 進行 Hash 獲得處理上述隧道分片 報文的處理器編號, 或對上述隧道分片報文的外層 IP 地址 +ID 按照 ACL 規則進行匹配獲得 處理該隧道分片報文的處理器編號, 本實施例對根據上述隧道分片報文的外層 IP 地址 +ID 獲得處理該隧道分片報文的處理器編號的方式不作限定。
     步驟 509, 報文分流裝置獲得表項中記錄的處理器編號, 將上述隧道分片報文轉發 給該處理器編號對應的第一處理器。然后返回執行步驟 502。
     本實施例中, 如果在分片信息表中查找到與上述隧道分片報文的外層 IP 地址 +ID 對應的表項, 且該隧道分片報文為最后到達的一個分片, 則在獲得該表項中記錄的處理器 編號之后, 刪除該表項。
     步驟 510, 報文分流裝置根據上述隧道報文的內層 IP 地址獲得處理該隧道報文 的處理器編號, 將該隧道報文轉發給該處理器編號對應的第一處理器。然后返回執行步驟 502。
     其中, 根據上述隧道報文的內層 IP 地址獲得處理該隧道報文的處理器編號可以 為: 對上述隧道報文的內層 IP 地址進行 Hash 獲得處理該隧道報文的處理器編號, 或對該隧 道報文的內層 IP 地址按照 ACL 規則進行匹配獲得處理該隧道報文的處理器編號, 本實施例 對根據上述隧道報文的內層 IP 地址獲得處理該隧道報文的處理器編號的方式不作限定。
     本實施例根據分片信息表對接收到的隧道報文進行分流, 從而可以實現對隧道報 文進行均勻分流 ; 另外, 對于接收到的隧道分片報文不是首分片而是后續分片的情形, 即步 驟 508 所對應的情形。這種情形下, 由于后續分片報文中不包含內層 IP 地址的信息, 因此步驟 508 中直接根據該隧道分片報文的外層 IP 地址 +ID 獲得處理該隧道分片報文的處理 器編號, 并在分片信息表中創建與該隧道分片報文的外層 IP 地址 +ID 對應的表項, 在該表 項中記錄上述處理器編號。這樣, 當與上述隧道分片報文屬于同一隧道報文的首分片到來 時, 報文分流裝置將根據該首分片的外層 IP 地址 +ID 進行查表, 按照命中的處理器編號將 首分片轉發到上述處理器編號對應的第一處理器上, 從而可以保證屬于同一隧道報文的首 分片和后續分片均被轉發給第一處理器。
     本發明提供的報文分流方法可以實現對隧道報文進行均勻分流, 對于外層 IP 地 址相同或比較集中的場景通過采用內層 IP 地址實現了比較均勻的分流。并且本發明針對 隧道分片報文建立了分片信息表, 報文分流裝置根據該分片信息表中記錄的處理器編號進 行轉發, 從而可以保證屬于同一隧道分片報文的首分片和后續分片被轉發給上述網絡設備 中的同一處理器進行處理。并且本發明只在接收側對報文進行處理, 不需要在發送側修改 報文, 對應用場景沒有限制。
     本發明圖 5 所示實施例中, 由于屬于同一條流的不同報文具有不同的報文 ID, 因 此, 如果根據隧道分片報文的外層 IP 地址 +ID 獲得處理該隧道分片報文的處理器編號, 并 將上述隧道分片報文轉發給上述處理器編號對應的第一處理器, 則與屬于同一條流的其他 報文相比, 該隧道分片報文可能會被分到不同的處理器上, 其中, 屬于同一條流的報文是指 具有相同內層 IP 地址的報文。這時, 需要第一處理器對接收到的隧道分片報文再次進行分 流, 以使屬于同一條流的報文能夠被轉發給同一處理器處理。 其中, 第一處理器對接收到的 隧道分片報文再次進行分流的流程可以參見本發明圖 4 所示實施例提供的流程, 在此不再 贅述。
     本領域普通技術人員可以理解 : 實現上述各方法實施例的全部或部分步驟可以通 過程序指令相關的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質中。該程 序在執行時, 執行包括上述各方法實施例的步驟 ; 而前述的存儲介質包括 : ROM、 RAM、 磁碟 或者光盤等各種可以存儲程序代碼的介質。
     圖 6 為本發明報文分流裝置一個實施例的結構示意圖, 本實施例提供的報文分流 裝置可以實現本發明圖 1 所示實施例的流程。如圖 6 所示, 該報文分流裝置可以包括 : 獲取 模塊 61、 確定模塊 62、 查找模塊 63 和發送模塊 64。
     其中, 獲取模塊 61, 用于接收并解析隧道報文, 獲取隧道報文的外層 IP 地址、 內層 IP 地址和該隧道報文的標識 ;
     確定模塊 62, 用于根據上述隧道報文的報文頭中的分片信息確定上述隧道報文是 否為隧道分片報文 ;
     查找模塊 63, 用于當確定模塊 62 確定上述隧道報文為隧道分片報文時, 在報文分 流裝置保存的分片信息表中查找與上述隧道分片報文的外層 IP 地址和該隧道分片報文的 標識對應的處理器編號, 其中, 該分片信息表中的處理器編號根據隧道分片報文的內層 IP 地址或者根據隧道分片報文的外層 IP 地址和隧道分片報文的標識獲得 ;
     發送模塊 64, 用于當查找模塊 63 在分片信息表中查找到與上述隧道分片報文的 外層 IP 地址和上述隧道分片報文的標識對應的處理器編號時, 將該隧道分片報文發送給 相應的處理器。
     上述實施例中, 接收并解析隧道報文之后, 當該隧道報文為隧道分片報文時, 查找模塊 63 在保存的分片信息表中查找與上述隧道分片報文的外層 IP 地址和上述隧道分片報 文的標識對應的處理器編號, 當在分片信息表中查找到與上述隧道分片報文的外層 IP 地 址和上述隧道分片報文的標識對應的處理器編號時, 發送模塊 64 將上述隧道分片報文發 送給相應的處理器。本實施例根據分片信息表對接收到的隧道報文進行分流, 從而可以實 現對隧道報文進行均勻分流, 并可以確保隧道分片報文的首分片和后續分片轉發到同一處 理器上。
     圖 7 為本發明報文分流裝置另一個實施例的結構示意圖, 本實施例提供的報文分 流裝置可以實現本發明圖 1 和圖 2 所示實施例的流程。與圖 6 所示的報文分流裝置相比, 不同之處在于, 圖 7 所示的報文分流裝置還可以包括 : 第一獲得模塊 65 ;
     本實施例中, 確定模塊 62, 還用于當查找模塊 63 在上述分片信息表中沒有查找到 與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的處理器編號時, 確 定該隧道分片報文是否為首分片 ;
     第一獲得模塊 65, 用于當確定模塊 62 確定上述隧道分片報文為首分片時, 根據該 隧道分片報文的內層 IP 地址獲得處理該隧道分片報文的處理器編號 ; 以及當確定模塊 62 確定上述隧道分片報文不是首分片時, 根據該隧道分片報文的外層 IP 地址和上述隧道分 片報文的標識獲得處理該隧道分片報文的處理器編號。 進一步地, 上述報文分流裝置還可以包括 :
     創建模塊 66, 用于在第一獲得模塊 65 獲得處理上述隧道分片報文的處理器編號 之后, 在分片信息表中創建與上述隧道分片報文的外層 IP 地址和該隧道分片報文的標識 對應的表項, 并在上述表項中記錄上述處理器編號。
     第二獲得模塊 67, 用于當確定模塊 62 確定上述隧道報文不是隧道分片報文時, 根 據所述隧道報文的內層 IP 地址獲得處理上述隧道報文的處理器編號。
     上述報文分流裝置根據分片信息表對接收到的隧道報文進行分流, 從而可以實現 對隧道報文進行均勻分流 ; 另外, 對于接收到的隧道分片報文不是首分片而是后續分片的 情形, 由于后續分片不包含內層 IP 地址的信息, 因此第一獲得模塊 65 直接根據該隧道分片 報文的外層 IP 地址和該隧道分片報文的標識獲得處理該隧道分片報文的處理器編號, 由 發送模塊 64 將上述隧道分片報文發送給相應的處理器, 并由創建模塊 66 在分片信息表中 創建與該隧道分片報文的外層 IP 地址和該隧道分片報文的標識對應的表項, 在該表項中 記錄上述處理器編號。這樣, 當首分片到來時, 查找模塊 63 可以根據該首分片的外層 IP 地 址和該首分片的標識進行查表, 再由發送模塊 64 按照命中的處理器編號將首分片轉發到 上述處理器編號對應的處理器上, 從而可以保證屬于同一隧道報文的首分片和后續分片均 被轉發給同一處理器上 ; 并且無需在發送側對隧道報文做任何修改。
     圖 8 為本發明報文分流裝置再一個實施例的結構示意圖, 如圖 8 所示, 該報文分流 裝置可以包括 : 解析模塊 81、 表項查找模塊 82、 分流模塊 83 和表項管理模塊 84 ; 其中, 解析 模塊 81 負責解析接收到的隧道報文, 獲得該隧道報文的外層 IP 地址、 內層 IP 地址和該隧 道報文的 ID。
     進一步地, 通過解析上述隧道報文, 解析模塊 81 還可以獲得該隧道報文的報文頭 中的分片信息, 該分片信息用于指示該隧道報文是否為分片報文。
     當該隧道報文為分片報文時, 解析模塊 81 還可以獲取隧道分片報文的報文頭中
     偏移字段的值。其中, 上述偏移字段的值用于確定該隧道分片報文是第幾分片, 例如 : 當隧 道分片報文的報文頭中偏移字段的值為 “0” 時, 可以確定該隧道分片報文為首分片 ; 當隧 道分片報文的報文頭中偏移字段的值為 “1” 時, 可以確定該隧道分片報文不是首分片, 而是 第二個分片, 以此類推。
     本實施例中的解析模塊 81 可以實現本發明圖 6 和圖 7 所示實施例中獲取模塊 61 和確定模塊 62 的功能。
     分流模塊 83 負責對報文進行轉發。對于非分片報文, 分流模塊 83 直接根據解析 模塊 81 獲得的內層 IP 地址獲得處理該非分片報文的處理器編號, 將該非分片報文轉發給 上述處理器編號對應的處理器 ; 對于分片報文, 分流模塊 83 需等待表項查找模塊 82 返回查 表結果, 若查表命中, 則分流模塊 83 直接將上述分片報文轉發給表項查找模塊 82 提供的處 理器編號所對應的處理器 ; 若查表不命中, 則分流模塊 83 根據解析模塊 81 提供的是否首分 片信息, 對于首分片根據內層 IP 地址獲得處理該首分片的處理器編號, 并將該首分片轉發 給上述處理器編號對應的處理器, 同時將獲得的處理器編號返回給表項查找模塊 82 ; 對于 后續分片根據外層 IP 地址 +ID 獲得處理該后續分片的處理器編號, 并將該后續分片轉發給 上述處理器編號對應的處理器, 同時將獲得的處理器編號返回給表項查找模塊 82。 本實施例中的分流模塊 83 可以實現本發明圖 6 和圖 7 所示實施例中發送模塊 64 的功能, 以及本發明圖 7 所示實施例中第一獲得模塊 65 和第二獲得模塊 67 的功能。
     表項查找模塊 82 負責根據解析模塊 81 提供的外層 IP 地址 +ID 查找分片信息表 85 并返回結果。如果查表命中, 則從該分片信息表 85 中獲取處理器編號給分流模塊 83 ; 若 查表不命中, 則將不命中信息給分流模塊 83。同時在查找不命中時, 將報文的外層 IP 地址 +ID 以及分流模塊 83 獲得的處理器編號轉發給表項管理模塊 84, 以供表項管理模塊 84 建 立新的表項添加到分片信息表中 ; 若查表命中且當前報文是最后一個分片, 則將查表命中 信息及外層 IP 地址 +ID 提供給表項管理模塊 84 實現對相應表項的刪除。
     本實施例中的表項查找模塊 82 可以實現本發明圖 6 所示實施例中查找模塊 63 的 功能。
     表項管理模塊 84 負責對分片信息表 85 進行管理, 包括表項的建立、 老化和刪除操 作。表項管理模塊 84 負責在設備上電后初始化分片信息表 85, 將分片信息表 85 中的所有 表項置為無效狀態。待開始接收報文后, 表項管理模塊 84 根據解析模塊 81 提供的外層 IP 地址 +ID 及分流模塊 83 返回的處理器編號在分片信息表 85 中建立新的表項 ; 根據表項查 找模塊 82 提供的最后一個分片查表命中的信息刪除對應的表項 ; 同時不斷輪詢表項, 對于 超時的表項進行刪除操作, 保證表項及時得到老化。
     本實施例中的表項管理模塊 84 可以實現本發明圖 7 所示實施例中創建模塊 66 的 功能。
     分片信息表 85 保存隧道分片報文分流的處理器編號, 在分片信息表 85 中處理器 編號的索引可以為隧道分片報文的外層 IP 地址 +ID ; 或者外層 IP 地址 +ID 的其他轉化形 式, 本實施例對處理器編號的索引的形式不作限定。當上述處理器編號的索引為外層 IP 地 址 +ID 的其他轉化形式時, 上述分片信息表 85 中還應該包含與上述處理器編號的索引對應 的外層 IP 地址 +ID 的信息。
     另外, 分片信息表 85 中還可以包含老化信息, 以供表項管理模塊 84 對表項進行老
     化。 本發明提供的報文分流裝置可以實現對隧道報文進行均勻分流, 對于外層 IP 地 址相同或比較集中的場景通過采用內層 IP 地址實現了比較均勻的分流。并且本發明針對 隧道分片報文建立了分片信息表, 報文分流裝置根據該分片信息表中記錄的處理器編號進 行轉發, 從而可以保證屬于同一隧道分片報文的首分片和后續分片被轉發給同一處理器進 行處理。本發明在各種情況下實現了隧道報文的均勻分流, 達到了較好的分流效果。并且 本發明只在接收側對報文進行處理, 不需要在發送側修改報文, 對應用場景沒有限制。
     圖 9 為本發明處理器一個實施例的結構示意圖, 本實施例提供的處理器可以實現 本發明圖 3 所示實施例的流程, 本實施例中的處理器可以為第一處理器, 如圖 9 所示, 該處 理器可以包括 : 報文接收模塊 91、 編號查找模塊 92、 報文發送模塊 93 和報文處理模塊 98 ;
     其中, 報文接收模塊 91, 用于接收報文分流裝置發送的隧道分片報文, 獲得該隧道 分片報文的外層 IP 地址、 內層 IP 地址和該隧道分片報文的標識 ; 其中, 該報文接收模塊 91 接收的隧道分片報文是報文分流裝置根據上述隧道分片報文的外層 IP 地址和上述隧道分 片報文的標識獲得第一處理器的編號之后, 發送給上述第一處理器的。
     編號查找模塊 92, 用于在第一處理器保存的分片信息表中查找與上述隧道分片報 文的外層 IP 地址和上述隧道分片報文的標識對應的第二處理器編號, 其中, 該分片信息表 中的第二處理器編號是根據隧道分片報文的內層 IP 地址獲得。
     報文發送模塊 93, 用于當編號查找模塊 92 在分片信息表中查找到與上述隧道分 片報文的外層 IP 地址和上述隧道分片報文的標識對應的第二處理器編號時, 若第二處理 器編號與上述第一處理器的編號不同, 則將隧道分片報文發送給第二處理器編號對應的第 二處理器 ;
     報文處理模塊 98, 用于當所述第二處理器編號與所述第一處理器的編號相同時, 處理所述隧道分片報文。
     本實施例提供的處理器根據分片信息表對接收到的隧道報文進行分流, 從而可以 實現對隧道報文進行均勻分流, 并可以確保隧道分片報文的首分片和后續分片轉發到同一 處理器上, 且由于分片信息表中第二處理器編號是根據報文的內層 IP 獲得, 因此可以保證 同一條流的報文被轉發到同一個處理器上進行處理。
     圖 10 為本發明處理器另一個實施例的結構示意圖, 本實施例提供的處理器可以 實現本發明圖 3 和圖 4 所示實施例的流程, 與圖 9 所示的處理器相比, 不同之處在于, 圖 10 所示的處理器, 還可以包括 : 報文確定模塊 94、 編號獲得模塊 95 和報文緩存模塊 96 ;
     其中, 報文確定模塊 94, 用于當編號查找模塊 92 在上述分片信息表中沒有查找 到與上述隧道分片報文的外層 IP 地址和上述隧道分片報文的標識對應的第二處理器編號 時, 確定上述隧道分片報文是否為首分片 ;
     編號獲得模塊 95, 用于當報文確定模塊 94 確定上述隧道分片報文為首分片時, 根 據上述隧道分片報文的內層 IP 地址獲得處理該隧道分片報文的第二處理器編號 ;
     報文緩存模塊 96, 用于當報文確定模塊 94 確定上述隧道分片報文不是首分片時, 緩存上述隧道分片報文。
     本實施例中, 報文發送模塊 93, 還可以當編號獲得模塊 95 獲得的第二處理器編 號與第一處理器的編號不同時, 將該隧道分片報文發送給第二處理器編號對應的第二處理
     器。 本實施例中, 編號查找模塊 92, 還用于在分片信息表中查找與緩存的隧道分片報 文的外層 IP 地址和緩存的隧道分片報文的標識對應的第二處理器編號 ;
     報文發送模塊 93, 還用于當編號查找模塊 92 在上述分片信息表中查找到與緩存 的隧道分片報文的外層 IP 地址和緩存的隧道分片報文的標識對應的第二處理器編號時, 若第二處理器編號與所述第一處理器的編號不同, 則將緩存的隧道分片報文發送給第二處 理器編號對應的第二處理器。
     進一步地, 本實施例中的處理器還可以包括 :
     表項創建模塊 97, 用于在編號獲得模塊 95 獲得處理上述隧道分片報文的第二處 理器編號之后, 在分片信息表中創建與上述隧道分片報文的外層 IP 地址和上述隧道分片 報文的標識對應的表項, 并在該表項中記錄第二處理器編號。
     本實施例提供的處理器根據分片信息表對接收到的隧道報文進行分流, 且由于分 片信息表中第二處理器編號是根據報文的內層 IP 獲得, 從而可以實現對隧道報文進行均 勻分流, 可以確保隧道分片報文的首分片和后續分片轉發到同一處理器上, 并保證同一條 流的報文被轉發到同一個處理器上進行處理且無需在發送側對隧道報文做任何修改。此 外, 由于本發明實施例中當沒有接收到首分片而先接收到后續分片時, 可以先將后續分片 進行緩存, 待首分片到達后, 根據首分片的內層 IP 獲得處理該報文的第二處理器編號, 并 保存在分片信息表中, 再將緩存的后續分片根據該分片信息表發送到相應的第二處理器, 從而可以使亂序的報文被順序發送到相應的處理器中進行處理。
     本發明還提供一種網絡設備, 該網絡設備可以包括報文分流裝置和至少兩個處理 器; 其中該報文分流裝置可以通過本發明圖 6、 圖 7 或圖 8 所示的報文分流裝置實現, 該處 理器可以通過本發明圖 9 或圖 10 所示的處理器實現。該網絡設備可以為網絡監控設備等 設備, 本發明對該網絡設備的具體形式不作限定。
     上述網絡設備可以實現對隧道報文進行均勻分流, 對于外層 IP 地址相同或比較 集中的場景通過采用內層 IP 地址實現了比較均勻的分流。并且本發明針對隧道分片報文 建立了分片信息表, 網絡設備根據該分片信息表中記錄的處理器編號進行轉發, 從而可以 保證屬于同一隧道分片報文的首分片和后續分片被轉發給同一處理器進行處理。 本發明在 各種情況下實現了隧道報文的均勻分流, 達到了較好的分流效果。并且本發明只在接收側 對報文進行處理, 不需要在發送側修改報文, 對應用場景沒有限制。
     本領域技術人員可以理解附圖只是一個優選實施例的示意圖, 附圖中的模塊或流 程并不一定是實施本發明所必須的。
     本領域技術人員可以理解實施例中的裝置中的模塊可以按照實施例描述進行分 布于實施例的裝置中, 也可以進行相應變化位于不同于本實施例的一個或多個裝置中。上 述實施例的模塊可以合并為一個模塊, 也可以進一步拆分成多個子模塊。
     最后應說明的是 : 以上各實施例僅用以說明本發明的技術方案, 而非對其限制 ; 盡管參照前述各實施例對本發明進行了詳細的說明, 本領域的普通技術人員應當理解 : 其 依然可以對前述各實施例所記載的技術方案進行修改, 或者對其中部分或者全部技術特征 進行等同替換 ; 而這些修改或者替換, 并不使相應技術方案的本質脫離本發明各實施例技 術方案的范圍。
    

關 鍵 詞:
報文 分流 方法 裝置 處理器 網絡設備
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:報文分流方法、裝置、處理器和網絡設備.pdf
鏈接地址:http://www.rgyfuv.icu/p-6420555.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图