鬼佬大哥大
  • / 11
  • 下載費用:30 金幣  

一種網絡數據包負載均衡和預解析方法.pdf

摘要
申請專利號:

CN201510535316.5

申請日:

2015.08.27

公開號:

CN105207946A

公開日:

2015.12.30

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):H04L 12/801申請日:20150827|||公開
IPC分類號: H04L12/801(2013.01)I; G06F9/50 主分類號: H04L12/801
申請人: 國家計算機網絡與信息安全管理中心; 北京賽思信安技術股份有限公司
發明人: 張良; 云曉春; 汪立東; 李曉倩; 謝銘; 黃成; 王子厚; 孫昊良; 張露晨; 何清林; 吳昊; 馬秀娟; 張家琦; 黃文廷
地址: 100029 北京市朝陽區裕民路甲3號
優先權:
專利代理機構: 北京永創新實專利事務所 11121 代理人: 趙文利
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510535316.5

授權公告號:

||||||

法律狀態公告日:

2018.05.01|||2016.01.27|||2015.12.30

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明一種網絡數據包負載均衡和預解析方法,屬于眾核服務器的網絡結構領域。包括以下步驟:一、在眾核服務器下配置交換芯片;二、數據包經過外接接口進入交換芯片后,平均分給2個MPIPE;三、每個MPIPE將數據包轉發到對應的TILERA?CPU上,并進行預解析;四、在每個TILERA?CPU上調用庫函數創建數據包處理線程;五、為每個數據包處理線程分別綁定一個TILERA?CPU核;六、將預解析結果分發到對應的數據包處理線程;七、各個處理線程分別通過庫函數接收數據包并且得到預解析結果,保存源IP和目的IP。優點在于:使用交換芯片和MPIPE進行各個TILERA?CPU之間的負載均衡,對于處理線程不需要再解析數據包,只對關注的數據包域進行處理;操作更加簡便,提高數據包的處理能力。

權利要求書

權利要求書
1.  一種網絡數據包的負載均衡和預解析方法,建立于一臺眾核服務器上,具體包括1個交換芯片和2個多核可編程智能包引擎,簡稱MPIPE;每個MPIPE分別對應1個具有36核的TILERACPU;其特征在于,具體包括以下步驟:
步驟一、在眾核服務器下配置交換芯片;
交換芯片的物理端口平均分成兩組,每一組分別對應1個MPIPE,從每個MPIPE對應的物理端口中任選一個組成邏輯端口,通過trunk命令進行邏輯端口的綁定;
步驟二、輸入的數據包經過交換芯片的外接接口XGBE進入后,平均分到2個MPIPE;
數據包經過交換芯片的邏輯端口后,如果數據包的目的IP和源IP相同,將數據包分發到同一個物理端口,進而轉發到物理端口對應的MPIPE;
步驟三、每個MPIPE將數據包轉發到對應的TILERACPU上,并進行數據包預解析;
步驟四、在每個TILERACPU上調用pthread_create庫函數創建36個數據包處理線程;
步驟五、為每個數據包處理線程分別綁定一個TILERACPU核;
步驟六、將數據包的預解析結果分發到對應的數據包處理線程;
配置邏輯端口的hash算法,針對具有相同目的IP和源IP的數據包,計算數據包的id值,根據id值判斷,將相同id值的數據包傳輸給綁定的同一個數據包處理線程;
步驟七、36個處理線程分別通過調用庫函數gxio_mpipe_iqueue_try_peek接收數據包并且得到預解析結果,保存源IP和目的IP。

2.  如權利要求1所述的一種網絡數據包的負載均衡和預解析方法,其特征在于,所述的步驟三預解析具體步驟如下:
步驟301、判斷數據包的IP協議頭是否為IPV4或者IPV6,如果不是跳轉到步驟306,否則進入步驟302;
步驟302、解析IP協議頭記錄的源IP,目的IP,以及協議類型;
步驟303、判斷協議類型是否為TCP或者UDP,如果是,進入步驟304,否則跳轉到步驟306;
步驟304、解析TCP協議或者UDP協議中的信息,并且把信息存放到預解析結果中;
步驟305、解析IP協議后續的數據并且進行字符串比較,把比較結果存放到預解析結果中;
步驟306、把預解析結果發送給TILERACPU。

說明書

說明書一種網絡數據包負載均衡和預解析方法
技術領域
本發明涉及眾核服務器的網絡結構領域,具體是一種網絡數據包負載均衡和預解析方法。
背景技術
傳統的網絡數據包的負載均衡和預解析方法,是通過CPU的處理能力進行數據包的解析,將解析結果分發到對應的處理模塊,這種方法在解析大流量的數據包時,會占用較大的CPU資源并且導致處理模塊的處理能力下降。
現有傳統方法中,通常采取選用幾臺眾核服務器,然后每一臺眾核服務器對應一個多核處理器(TILERACPU),通過一臺交換機進行多臺眾核服務器之間的信息交換,這樣做占用的空間資源以及功耗會比較大。
傳統方法采用的多核可編程智能包引擎(MPIPE),主要功能是進行數據流的分發即把相同的數據流分發到同一個TILERACPU核,缺點是沒有預處理功能。
發明內容
本發明針對上述問題,為了最大程度的提高數據包的處理能力,充分利用MPIPE的處理能力,加入了預處理功能,解析協議類型以及數據長度等并把結果傳送給對應的TILERACPU核。
一種網絡數據包的負載均衡和預解析方法建立于一臺眾核服務器上,具體包括1個交換芯片和2個MPIPE;交換芯片具有外接接口XGBE,每個MPIPE分別對應1個具有36核的TILERACPU,依次標記為0核-35核;
一種網絡數據包的負載均衡和預解析方法,具體包括以下步驟:
步驟一、在眾核服務器下配置交換芯片;
交換芯片具有多個物理端口,平均分別對應2個MPIPE,從每個MPIPE對應的物理端口中任選一個組成邏輯端口,通過trunk命令進行邏輯端口的綁定;
步驟二、輸入的數據包經過外接接口XGBE進入交換芯片后,平均分給2個MPIPE;
數據包經過交換芯片的邏輯端口后,如果數據包的目的IP和源IP相同,將數據包分發 到同一個物理端口,進而轉發到物理端口對應的MPIPE,從而將數據包平均分給2個MPIPE;
步驟三、每個MPIPE將數據包轉發到對應的TILERACPU上,并進行數據包預解析;
預解析具體步驟如下:
步驟301、判斷數據包的IP協議頭是否為IPV4或者IPV6,如果不是跳轉到步驟306,否則進入步驟302。
步驟302、解析IP協議頭記錄的源IP,目的IP,以及協議類型。
步驟303、判斷協議類型是否為TCP或者UDP,如果是,進入步驟304,否則跳轉到步驟306。
步驟304、解析TCP協議或者UDP協議中的信息,并且把信息存放到預解析結果中。
步驟305、解析IP協議后續的數據并且進行字符串比較,把比較結果存放到預解析結果中。
步驟306、把預解析結果發送給TILERACPU。
步驟四、在每個TILERACPU上調用pthread_create庫函數創建36個數據包處理線程;
步驟五、為每個數據包處理線程分別綁定一個TILERACPU核;
步驟六、將數據包的預解析結果分發到對應的數據包處理線程。
配置邏輯端口的hash算法,針對具有相同目的IP和源IP的數據包,計算數據包的id值,根據id值判斷,將相同id值的數據包傳輸給綁定的同一個數據包處理線程。
步驟七、36個處理線程分別通過調用庫函數gxio_mpipe_iqueue_try_peek接收數據包并且得到預解析結果,保存源IP和目的IP。
本發明的優點與積極效果在于:
1)一種網絡數據包負載均衡和預解析方法,在眾核服務器下使用交換芯片進行各個TILERACPU之間的負載均衡,通過MPIPE實現TILERACPU核之間的負載均衡。對于處理線程不需要再解析數據包,只需要對需要關注的數據包里面的域進行處理;操作更加簡便,最大程度的提高數據包的處理能力。
2)一種網絡數據包負載均衡和預解析方法,為各個線程綁定TILERACPU核,實現了并行處理數據包。
3)一種網絡數據包負載均衡和預解析方法,通過配置邏輯端口的hash算法,對于相同目的IP+源IP的數據包分發到同一個物理端口,實現TILERACPU之間的負載均衡,提高了眾核服務器數據包處理能力。
附圖說明
圖1是本發明網絡數據包負載均衡和預解析的示意圖;
圖2是本發明一種網絡數據包負載均衡和預解析方法的流程圖;
圖3為本發明預解析具體步驟的流程圖;
圖4是本發明處理線程分別接收數據包并預解析的示意圖;
具體實施方式
下面將結合附圖和實施例對本發明作進一步的詳細說明。
一種網絡數據包負載均衡和預解析方法,采用一臺眾核服務器,如圖1所示,包括1個交換芯片,2個多核處理器(TILERACPU)和2個多核可編程智能包引擎(MPIPE);
通過眾核服務器上的交換芯片進行數據包負載均衡到各個多核處理器,在各個TILERACPU上通過MPIPE實現網絡數據包的接收以及負載均衡,并且將預解析結果發送到指定的TILERACPU核上。通過trunk命令以及hash算法的規則實現負載均衡。
輸入的數據包經過外接接口XGBE進入交換芯片后,被平均分成兩部分,對應進入兩個MPIPE中,MPIPE進行平均分發,把具有相同目的IP和源IP的數據包分發到同一個TILERACPU核。
一種網絡數據包的負載均衡和預解析方法,如附圖2所示,具體步驟如下:
步驟一、在眾核服務器下配置交換芯片;
交換芯片具有多個物理端口,平均分別對應2個MPIPE,從每個MPIPE對應的物理端口中任選一個組成邏輯端口,通過trunk命令進行邏輯端口的綁定;
首先、登陸眾核服務器的交換芯片,并進入配置交互界面。
把PC機和眾核服務器配置在同一個網段,在PC上通過telnet命令登陸眾核服務器的交換芯片的配置交互界面,配置交互界面選用現有的CLI(命令行界面)。
然后、通過trunk命令把交換芯片的多個物理端口綁定為一個邏輯端口。
例如利用trunk命令進行端口綁定如下:
trunkaddid=1Rtag=6pbmp=xe15,xe16,xe17
把物理端口xe15,xe16,x17綁定為一個邏輯端口。
每個MPIPE分別對應3個物理端口,如:第一個MPIPE對應物理端口1,物理端口2和物理端口3;第二個MPIPE1對應物理端口4,物理端口5,物理端口6;
選取物理端口1和物理端口4組成一個邏輯端口;保證了數據流經過邏輯端口平均分配到2個MPIPE;
如果選取物理端口1,物理端口2,物理端口3和物理端口4組成一個邏輯端口,保證了分到第一個MPIPE的是四分之三的數據流,第二個MPIPE的是四分之一的數據流。
步驟二、輸入的數據包經過外接接口XGBE進入交換芯片后,平均分給2個MPIPE;
數據包經過交換芯片的邏輯端口后,對于相同目的IP+源IP的數據包分發到同一個物理端口,進而轉發到物理端口對應的MPIPE,從而將數據包平均分給2個MPIPE。
交換芯片采用hash算法,將數據包平均分配給2個物理端口:物理端口1和物理端口4,經過物理端口進入到2個MPIPE。
id=hash_fun(srcip,dstip,srcmac,dstmac)。
hash_fun表示通過CRC循環冗余檢驗算法實現,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id為通過規則算法得到的值。
步驟三、每個MPIPE將數據包轉發到對應的TILERACPU上;并且進行數據包預解析;
如圖3所示,預解析具體步驟如下:
步驟301、判斷數據包的IP協議頭是否為IPV4或者IPV6,如果不是跳轉到步驟306,否則進入步驟302。
步驟302、解析IP協議頭記錄的源IP,目的IP,以及協議類型。
步驟303、判斷協議類型是否為TCP或者UDP,如果是,進入步驟304,否則跳轉到步驟306;
步驟304、解析TCP協議或者UDP協議中的信息,如源端口,目的端口以及IP協議長度信息,并且把信息存放到預解析結果中。
步驟305、解析IP協議后續的數據并且進行字符串比較,把比較結果存放到預解析結果中。
步驟306、把預解析結果發送給TILERACPU。
步驟四、在每個TILERACPU上調用pthread_create庫函數創建36個數據包處理線程;
步驟五、為每個數據包處理線程分別綁定一個用于處理數據包的TILERACPU核;
36個數據包處理線程分別對應TILERACPU的0核-35核,對于TILERACPU核的綁定通過使用TILERA提供的TMC編程庫實現,36個數據包處理線程并行運行。
步驟六、將數據包的預解析結果分發到對應的數據包處理線程。
配置邏輯端口的hash算法,針對具有相同目的IP和源IP的數據包,計算數據包的id值,根據id值映射到對應的TILERACPU核上;通過調用庫函數gxio_mpipe_init配置MPIPE,將相同id值的數據包傳輸給綁定的同一個數據包處理線程。
轉發規則算法如下:
id=hash_fun(srcip,dstip,srcmac,dstmac)。
hash_fun表示通過CRC循環冗余檢驗算法實現,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id為通過規則算法得到的值。
針對上萬級別的數據包,平均分到2個MPIPE上后,每個MPIPE采用按流分配或者按包分配的方式,將數據包平均分配到各個物理端口上;
比如,針對72萬個數據包,每個MPIPE分到36萬個數據包,分成36個數據流,每個數據流中含有10000個數據包,如果按流分配,則采用hash算法,將36個數據流分配到36個TILERACPU核上,如果按包分配,則將每個數據包按序平均分配到36個TILERACPU核上,比如:第一個數據包分到第一個TILERACPU核,第二個數據包分到第二個TILERACPU核……,按序平均分配;從而實現網絡數據包的負載均衡。
步驟七、36個處理線程分別通過調用庫函數gxio_mpipe_iqueue_try_peek接收數據包并且得到預解析結果,處理分發到對應TILERACPU核上的數據包。
通過預解析結果進行后續數據包處理,如保存特定的源IP,目的IP的數據包以及包含特定字符串的數據包。
如圖4所示,首先,通過配置MPIPE規則,創建36個數據包處理線程,并綁定用于處理數據包的TILERACPU核;
然后,每個MPIPE將數據包分發到對應的36個TILERACPU核上,每個TILERACPU核將數據流傳輸給綁定的數據包處理線程,通過轉發規則,36個數據包處理線程并行運行,實現TILERACPU核之間的負載均衡。
然后,36個處理線程分別接收數據包并且得到預解析結果,處理數據包。直至將數據包全部處理完。
處理線程調用TILERAMPIPE編程庫函數gxio_mpipe_iqueue_try_peek抓取數據包,得到數據包描述符,通過函數gxio_mpipe_idesc_get_l2_start得到數據包的頭指針,通過數據包頭指針訪問數據包數據,并且通過數據包描述符里面記錄的MPIPE對數據包的解析結果進行數據包處理。數據包處理為:記錄對應SRCIP,DSTIP接收到的數據包的個數以及總長度,記錄數據包里面帶有的特殊字符串,如:“Host”的數據包個數,保存數據包到硬盤。
通過MPIPE實現數據包的預解析(協議類型,數據長度等)減少了TILERACPU核對數據包的處理步驟,提高了數據包處理能力。
眾核處理器平臺采用TILERA公司的,具有高性能低能耗的特點。TILERA芯片基于一種新的架構設計,在一塊芯片上使用RISC(ReducedInstructionSetComputing)內核,與傳統的x86芯片完全不同,網格設計進行更快的數據交換,并且若干并行內核在一個多指針的矩陣內被組織起來以便接受和傳遞數據,同時TILERA眾核處理器平臺提供了核間通信非常高的數據帶寬,降低了核間通信延時,并通過共享的Cache(高速緩沖存儲器)消除了核間互聯的性能瓶頸,并降低了芯片功耗。通過交換芯片分流到不同的TILERACPU提高了每個TILERACPU的利用率,通過MPIPE包分流以及預解析功能提高了TILERACPU每個核的利用率。

關 鍵 詞:
一種 網絡 數據包 負載 均衡 解析 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種網絡數據包負載均衡和預解析方法.pdf
鏈接地址:http://www.wwszu.club/p-6405454.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

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


收起
展開
鬼佬大哥大