一種網絡數據包負載均衡和預解析方法
【技術領域】
[0001]本發明涉及眾核服務器的網絡結構領域,具體是一種網絡數據包負載均衡和預解析方法。
【背景技術】
[0002]傳統的網絡數據包的負載均衡和預解析方法,是通過CPU的處理能力進行數據包的解析,將解析結果分發到對應的處理模塊,這種方法在解析大流量的數據包時,會占用較大的CPU資源并且導致處理模塊的處理能力下降。
[0003]現有傳統方法中,通常采取選用幾臺眾核服務器,然后每一臺眾核服務器對應一個多核處理器(TILERA CPU),通過一臺交換機進行多臺眾核服務器之間的信息交換,這樣做占用的空間資源以及功耗會比較大。
[0004]傳統方法采用的多核可編程智能包引擎(MPIPE),主要功能是進行數據流的分發即把相同的數據流分發到同一個TILERA CPU核,缺點是沒有預處理功能。
【發明內容】
[0005]本發明針對上述問題,為了最大程度的提高數據包的處理能力,充分利用MPIPE的處理能力,加入了預處理功能,解析協議類型以及數據長度等并把結果傳送給對應的TILERA CPU 核。
[0006]—種網絡數據包的負載均衡和預解析方法建立于一臺眾核服務器上,具體包括I個交換芯片和2個MPIPE ;交換芯片具有外接接口 XGBE,每個MPIPE分別對應I個具有36核的TILERA CPU,依次標記為O核一 35核;
[0007]—種網絡數據包的負載均衡和預解析方法,具體包括以下步驟:
[0008]步驟一、在眾核服務器下配置交換芯片;
[0009]交換芯片具有多個物理端口,平均分別對應2個MPIPE,從每個MPIPE對應的物理端口中任選一個組成邏輯端口,通過trunk命令進行邏輯端口的綁定;
[0010]步驟二、輸入的數據包經過外接接口 XGBE進入交換芯片后,平均分給2個MPIPE ;
[0011]數據包經過交換芯片的邏輯端口后,如果數據包的目的IP和源IP相同,將數據包分發到同一個物理端口,進而轉發到物理端口對應的MPIPE,從而將數據包平均分給2個MPIPE ;
[0012]步驟三、每個MPIPE將數據包轉發到對應的TILERA CPU上,并進行數據包預解析;
[0013]預解析具體步驟如下:
[0014]步驟301、判斷數據包的IP協議頭是否為IPV4或者IPV6,如果不是跳轉到步驟306,否則進入步驟302。
[0015]步驟302、解析IP協議頭記錄的源IP,目的IP,以及協議類型。
[0016]步驟303、判斷協議類型是否為TCP或者UDP,如果是,進入步驟304,否則跳轉到步驟 306。
[0017]步驟304、解析TCP協議或者UDP協議中的信息,并且把信息存放到預解析結果中。
[0018]步驟305、解析IP協議后續的數據并且進行字符串比較,把比較結果存放到預解析結果中。
[0019]步驟306、把預解析結果發送給TILERA CPU。
[0020]步驟四、在每個TILERA CPU上調用pthread_create庫函數創建36個數據包處理線程;
[0021]步驟五、為每個數據包處理線程分別綁定一個TILERA CPU核;
[0022]步驟六、將數據包的預解析結果分發到對應的數據包處理線程。
[0023]配置邏輯端口的hash算法,針對具有相同目的IP和源IP的數據包,計算數據包的id值,根據id值判斷,將相同id值的數據包傳輸給綁定的同一個數據包處理線程。
[0024]步驟七、36個處理線程分別通過調用庫函數gx1_mpipe_iqueue_try_peek接收數據包并且得到預解析結果,保存源IP和目的IP。
[0025]本發明的優點與積極效果在于:
[0026]I) 一種網絡數據包負載均衡和預解析方法,在眾核服務器下使用交換芯片進行各個TILERA CPU之間的負載均衡,通過MPIPE實現TILERA CPU核之間的負載均衡。對于處理線程不需要再解析數據包,只需要對需要關注的數據包里面的域進行處理;操作更加簡便,最大程度的提高數據包的處理能力。
[0027]2) 一種網絡數據包負載均衡和預解析方法,為各個線程綁定TILERA CPU核,實現了并行處理數據包。
[0028]3) 一種網絡數據包負載均衡和預解析方法,通過配置邏輯端口的hash算法,對于相同目的IP+源IP的數據包分發到同一個物理端口,實現TILERA CPU之間的負載均衡,提高了眾核服務器數據包處理能力。
【附圖說明】
[0029]圖1是本發明網絡數據包負載均衡和預解析的示意圖;
[0030]圖2是本發明一種網絡數據包負載均衡和預解析方法的流程圖;
[0031]圖3為本發明預解析具體步驟的流程圖;
[0032]圖4是本發明處理線程分別接收數據包并預解析的示意圖;
【具體實施方式】
[0033]下面將結合附圖和實施例對本發明作進一步的詳細說明。
[0034]—種網絡數據包負載均衡和預解析方法,采用一臺眾核服務器,如圖1所示,包括I個交換芯片,2個多核處理器(TILERA CPU)和2個多核可編程智能包引擎(MPIPE);
[0035]通過眾核服務器上的交換芯片進行數據包負載均衡到各個多核處理器,在各個TILERA CPU上通過MPIPE實現網絡數據包的接收以及負載均衡,并且將預解析結果發送到指定的TILERA CPU核上。通過trunk命令以及hash算法的規則實現負載均衡。
[0036]輸入的數據包經過外接接口 XGBE進入交換芯片后,被平均分成兩部分,對應進入兩個MPIPE中,MPIPE進行平均分發,把具有相同目的IP和源IP的數據包分發到同一個TILERA CPU 核。
[0037]—種網絡數據包的負載均衡和預解析方法,如附圖2所示,具體步驟如下:
[0038]步驟一、在眾核服務器下配置交換芯片;
[0039]交換芯片具有多個物理端口,平均分別對應2個MPIPE,從每個MPIPE對應的物理端口中任選一個組成邏輯端口,通過trunk命令進行邏輯端口的綁定;
[0040]首先、登陸眾核服務器的交換芯片,并進入配置交互界面。
[0041 ] 把PC機和眾核服務器配置在同一個網段,在PC上通過telnet命令登陸眾核服務器的交換芯片的配置交互界面,配置交互界面選用現有的CLI (命令行界面)。
[0042]然后、通過trunk命令把交換芯片的多個物理端口綁定為一個邏輯端口。
[0043]例如利用trunk命令進行端口綁定如下:
[0044]trunk add id = I Rtag = 6 pbmp = xel5, xel6, xel7
[0045]把物理端口 xel5,xel6, xl7綁定為一個邏輯端口。
[0046]每個MPIPE分別對應3個物理端口,如:第一個MPIPE對應物理端口 I,物理端口 2和物理端口 3 ;第二個MPIPEl對應物理端口 4,物理端口 5,物理端口 6 ;
[0047]選取物理端口 I和物理端口 4組成一個邏輯端口 ;保證了數據流經過邏輯端口平均分配到2個MPIPE ;
[0048]如果選取物理端口 I,物理端口 2,物理端口 3和物理端口 4組成一個邏輯端口,保證了分到第一個MPIPE的是四分之三的數據流,第二個MPIPE的是四分之一的數據流。
[0049]步驟二、輸入的數據包經過外接接口 XGBE進入交換芯片后,平均分給2個MPIPE ;
[0050]數據包經過交換芯片的邏輯端口后,對于相同目的IP+源IP的數據包分發到同一個物理端口,進而轉發到物理端口對應的MPIPE,從而將數據包平均分給2個MPIPE。
[0051]交換芯片采用hash算法,將數據包平均分配給2個物理端口:物理端口 I和物理端口 4,經過物理端口進入到2個MPIPE。
[0052]id = hash_fun (srcip, dstip,srcmac,dstmac)。
[0053]hash_fun表示通過CRC循環冗余檢驗算法實現,srcip表示源IP,dstip表示目的IP,srcmac表示源MAC,dstmac表示目的MAC,id為通過規則算法得到的值。
[0054]步驟三、每個MPIPE將數據包轉發到對應的TILERA CPU上;并且進行數據包預解析;
[0055]如圖3所示,預解析具體步驟如下:
[0056]步驟301、判斷數據包的IP協議頭是否為IPV4或者IPV6,如果不是跳