国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種報文處理方法及裝置的制造方法

      文檔序號:10612760閱讀:922來源:國知局
      一種報文處理方法及裝置的制造方法
      【專利摘要】本發(fā)明公開了一種報文處理方法及裝置。該方法,包括:將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;接著,將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。本發(fā)明實現(xiàn)了對IP數(shù)據(jù)報文的排序,以及根據(jù)該排序?qū)Ω魉鯥P數(shù)據(jù)報文進行處理,從而保證了IP數(shù)據(jù)報文處理的有序性。
      【專利說明】
      一種報文處理方法及裝置
      技術(shù)領(lǐng)域
      [0001]本發(fā)明涉及通信技術(shù),尤指一種報文處理方法及裝置。
      【背景技術(shù)】
      [0002]隨著通信技術(shù)的發(fā)展,云操作系統(tǒng)廣泛的應(yīng)用在通信系統(tǒng)中,其中,云操作系統(tǒng)是一種以云計算、云存儲技術(shù)作為支撐的操作系統(tǒng)。
      [0003]圖1為現(xiàn)有技術(shù)中基于云操作系統(tǒng)的數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)示意圖。如圖1所示,該數(shù)據(jù)處理系統(tǒng)包括:物理服務(wù)器,以及運行于其上的云操作系統(tǒng),所述的物理服務(wù)器上可以設(shè)置有Intel推出的帶有加解密功能的高性能處理芯片CCK(Intel Cave Creek),還可以設(shè)置有至少一個網(wǎng)卡(NIC),所述云操作系統(tǒng)的虛擬機(Virtual Machine,簡稱VM)中至少包括用戶空間(User space)和操作系統(tǒng)內(nèi)核,該操作系統(tǒng)內(nèi)核可以是Linux核(Linux kernel),其中,用戶空間中可以設(shè)置報文快速處理的庫和驅(qū)動的集合(DPDK),DPDK使用U1(Userspace I/O)機制使網(wǎng)卡驅(qū)動程序運行在用戶態(tài),并且可以從網(wǎng)卡NIC收發(fā)報文,所述CCK通過透傳(PassThrough)技術(shù)將物理服務(wù)器直接映射到虛擬內(nèi)存機VM中,在VM的用戶空間調(diào)用與DPDK適配的接口實現(xiàn)快速的報文加解密處理。
      [0004]在現(xiàn)有技術(shù)中,已經(jīng)存在基于云操作系統(tǒng),利用DPDK和CCK進行數(shù)據(jù)處理的系統(tǒng),其可以實現(xiàn)高速數(shù)據(jù)轉(zhuǎn)發(fā)和加解密功能,但是目前的技術(shù)方案中通常多個IP數(shù)據(jù)報文可以組合成一條流報文,而為了保證流報文中各報文順序,只能采用一個核處理一條流報文的方案,而此時如果網(wǎng)卡收發(fā)流量超過一個核的處理能力時必然會產(chǎn)生丟包;而如果為了提高報文的處理能力,采用多個核處理一條流報文,流報文中各報文的順序無法保證成了亟待解決的問題。

      【發(fā)明內(nèi)容】

      [0005]為了解決上述技術(shù)問題,本發(fā)明提供了一種報文處理方法及裝置,用以解決現(xiàn)有技術(shù)中采用多核處理同一條流報文時無法保證報文處理的有序性的問題。
      [0006]為了達到本發(fā)明目的,本發(fā)明提供了一種報文處理方法,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),其特征在于,該方法包括:
      [0007]將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;
      [0008]將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。
      [0009]進一步的,所述IP數(shù)據(jù)報文是由主機發(fā)送給網(wǎng)卡的;
      [0010]將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,包括:
      [0011]將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序;
      [0012]將所述CCK發(fā)出的對各所述IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,包括:
      [0013]將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進彳丁排序。
      [0014]進一步的,所述將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序,包括:
      [0015]根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。
      [0016]進一步的,所述數(shù)據(jù)處理系統(tǒng)包括:至少一個收包核和至少一個收包排序核;
      [0017]在所述將多個網(wǎng)卡通過所述DPDK發(fā)送的各所述IP數(shù)據(jù)報文進行排序之前,還包括:
      [0018]所述收包核接收所管理的多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,將所述IP數(shù)據(jù)報文存儲至所屬的收包流隊列中;
      [0019]所述將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,包括:
      [0020]所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列。
      [0021]進一步的,所述方法還包括:
      [0022]所述收包核讀取所接收的所述IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息;
      [0023]所述收包核根據(jù)預(yù)先建立的IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息與收包流隊列之間的對應(yīng)關(guān)系,確定與讀取到的目標信息對應(yīng)的收包流隊列;
      [0024]所述收包核將所確定的收包流隊列作為所接收的IP數(shù)據(jù)報文所屬的收包流隊列;
      [0025]其中,目標信息為五元組信息中的至少一項信息,不同的目標信息對應(yīng)不同的收包流隊列。
      [0026]進一步的,所述數(shù)據(jù)處理系統(tǒng)還包括至少一個處理核;
      [0027]在所述收包排序核將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列之后,還包括:
      [0028]所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,并對所獲取的所述IP數(shù)據(jù)報文做如下重構(gòu)處理:重構(gòu)報文頭,并向報文中添加堆棧指針包頭,該包頭包括根據(jù)報文對應(yīng)的SA計算的一個序列號,并依據(jù)所述SA構(gòu)建所述CCK對報文進行加解密所需的信息;
      [0029]所述將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理,包括:
      [0030]所述處理核將對獲取的各IP數(shù)據(jù)報文的重構(gòu)結(jié)果發(fā)送至所述CCK進行處理。
      [0031]進一步的,所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,包括:
      [0032]所述處理核按照對各收包排序隊列的輪詢順序,遍歷各收包排序隊列從中獲取IP數(shù)據(jù)報文。
      [0033]進一步的,其特征在于,所述數(shù)據(jù)處理系統(tǒng)還包括調(diào)度核;
      [0034]所述方法還包括:
      [0035]所述調(diào)度核根據(jù)收包排序隊列中的IP數(shù)據(jù)報文數(shù)量,動態(tài)地調(diào)整各收包排序隊列的優(yōu)先級;
      [0036]所述調(diào)度核依據(jù)各收包排序隊列當前優(yōu)先級的高低以及所述處理核當前的輪詢方式,得到所述處理核當前對各收包排序隊列的輪詢順序,所述輪詢方式為優(yōu)先級從高到低或者從低到高的方式;
      [0037]其中,IP數(shù)據(jù)報文數(shù)量越多,收包排序隊列的優(yōu)先級越高。
      [0038]進一步的,所述方法還包括:
      [0039]所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),所述負載狀態(tài)為過載或空閑;
      [0040]所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式。
      [0041]進一步的,所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),包括:
      [0042]所述調(diào)度核從所述處理核讀取所記錄的如下內(nèi)容:所述處理核在最近時間窗口內(nèi)嘗試從收包排序隊列中獲取一個IP數(shù)據(jù)報文的次數(shù)X與實際取到的IP數(shù)據(jù)報文的數(shù)量Y;
      [0043]所述調(diào)度核計算Y與X的比值,作為所述處理核當前的負載率;
      [0044]如果所述負載率超過設(shè)定閾值,則所述調(diào)度核判斷所述處理核當前的負載狀態(tài)為過載;否則,負載狀態(tài)為為空閑。
      [0045]進一步的,所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式,包括:
      [0046]如果本次計算的所述處理核的負載狀態(tài)與最近一次計算的所述處理核的負載狀態(tài)不一致,則所述調(diào)度核將所述處理核的輪詢方式更新為與所述處理核最近一次的輪詢方式相反的方式。
      [0047]進一步的,所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列,包括:
      [0048]按照設(shè)定周期,所述收包排序核從所管理的收包流隊列中取出η個IP數(shù)據(jù)報文,將該η個IP數(shù)據(jù)報文和與所管理的收包流隊列對應(yīng)的收包排序隊列中已經(jīng)存在的m個IP數(shù)據(jù)報文一起排序,按照排序結(jié)果使用插入排序法將所述η個IP數(shù)據(jù)報文插入至所述收包排序隊列中,其中所述η和m均為大于O的整數(shù)。
      [0049]進一步的,所述數(shù)據(jù)處理系統(tǒng)還包括取包核和排序發(fā)包核;
      [0050]在將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序之前,還包括:
      [0051 ]所述取包核接收所述CCK發(fā)出的對各IP數(shù)據(jù)報文的重構(gòu)結(jié)果處理得到的各IPSec報文,將所述IPSec報文存儲至所屬的發(fā)包流隊列中;
      [0052]將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡,包括:
      [0053]所述排序發(fā)包核對所管理的發(fā)包流隊列中的IPSec報文進行排序,按照排序結(jié)果順序處理所管理的發(fā)包流隊列中的各IPSec報文,其中所述處理操作包括按照所述IPSec報文中的目的IP查找路由,通過DPDK從相應(yīng)的網(wǎng)卡發(fā)出。
      [0054]本發(fā)明還提供一種報文處理裝置,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),該裝置包括:
      [0055]第一處理模塊,用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;
      [0056]第二處理模塊,用于將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。
      [0057]進一步的,所述第一處理模塊,具體用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序;
      [0058]所述第一處理模塊,具體用于將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進行排序。
      [0059]進一步的,所述第一處理模塊,具體用于根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。
      [0060]與現(xiàn)有技術(shù)相比,本發(fā)明實施例提供的報文處理方法,實現(xiàn)了對IP數(shù)據(jù)報文的排序,以及根據(jù)該排序?qū)Ω魉鯥P數(shù)據(jù)報文進行處理,從而保證了 IP數(shù)據(jù)報文處理的有序性。
      【附圖說明】
      [0061]附圖用來提供對本發(fā)明技術(shù)方案的進一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
      [0062]圖1為現(xiàn)有技術(shù)中基于云操作系統(tǒng)的數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)示意圖;
      [0063]圖2為本發(fā)明報文處理方法一實施例的流程示意圖;
      [0064]圖3為本發(fā)明報文處理方法一實施例的無鎖環(huán)形隊列示意圖;
      [0065]圖4為本發(fā)明實施例提供的報文處理方法所應(yīng)用的數(shù)據(jù)處理系統(tǒng)的一結(jié)構(gòu)示意圖;
      [0066]圖5為本發(fā)明實施例提供的報文處理方法所應(yīng)用的數(shù)據(jù)處理系統(tǒng)的另一結(jié)構(gòu)示意圖;
      [0067]圖6為本發(fā)明實施例提供的報文處理方法中排序隊列的優(yōu)先級的示意圖;
      [0068]圖7本發(fā)明實施例提供的報文處理方法中從排序隊列中取包的流程示意圖;
      [0069]圖8為本發(fā)明實施例提供的報文處理方法中根據(jù)負載狀態(tài)輪詢排序隊列的流程示意圖;
      [0070]圖9為本發(fā)明實施例提供的報文處理方法中根據(jù)負載狀態(tài)輪詢排序隊列的流程示意圖。
      【具體實施方式】
      [0071]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
      [0072]本發(fā)明實施例提供的報文處理方法具體可以應(yīng)用于云操作系統(tǒng)下多核環(huán)境中對報文處理時。本發(fā)明實施例提供的報文處理方法具體可以通過報文處理裝置來執(zhí)行,該報文處理裝置可以集成在物理服務(wù)器中,或者單獨設(shè)置,其中,該報文處理裝置可以采用軟件和/或硬件的方式來實現(xiàn)。以下對本實施例提供的報文處理方法及裝置進行詳細地說明。
      [0073]圖2為本發(fā)明報文處理方法一實施例的流程示意圖,如圖2所示,本實施例的執(zhí)行主體是報文處理裝置,本實施例提供的報文處理方法,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),其中,該DPDK可以是X86平臺報文快速處理的庫和驅(qū)動的集合,該方法,包括:
      [0074]步驟201、將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理。
      [0075]本實施例中的所述IP數(shù)據(jù)報文可以是由主機發(fā)送給網(wǎng)卡的,具體的,將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序;進一步的,可以根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對該報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。舉例來講,具體的,該IP數(shù)據(jù)報文攜帶的用于標識主機對該報文的實際發(fā)送順序的標識字段是唯一標識,即主機發(fā)送的每一份IP數(shù)據(jù)報文過程中,每發(fā)送一個IP數(shù)據(jù)報文,就將此值加I,因此根據(jù)此值可以確定各IP數(shù)據(jù)報文的排序。
      [0076]需要說明的是,為保證IP數(shù)據(jù)報文順序的唯一性,一條IP數(shù)據(jù)報文的排序只由一個核來操作。為保證排序核不會成為性能瓶頸,排序核只做必要的最簡單操作,其余操作由收包核和報文處理核來完成。
      [0077]進一步的,所述數(shù)據(jù)處理系統(tǒng)還包括:至少一個收包核和至少一個收包排序核;具體的,所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列。其中,在所述將多個網(wǎng)卡通過所述DPDK發(fā)送的各所述IP數(shù)據(jù)報文進行排序之前,還可以包括,所述收包核接收所管理的多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,將所述IP數(shù)據(jù)報文存儲至所屬的收包流隊列中。
      [0078]步驟202、將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。
      [0079]具體的,將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進行排序,也就是說,根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對該報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序獲得的排序。
      [0080]在本實施例中,將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;接著,將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。實現(xiàn)了對IP數(shù)據(jù)報文的排序,以及根據(jù)該排序?qū)Ω魉鯥P數(shù)據(jù)報文進行處理,從而保證了 IP數(shù)據(jù)報文處理的有序性。
      [0081]在本實施例中,所述數(shù)據(jù)處理系統(tǒng)包括:至少一個收包核和至少一個收包排序核;
      [0082]在上述實施例的基礎(chǔ)上,在所述將多個網(wǎng)卡通過所述DPDK發(fā)送的各所述IP數(shù)據(jù)報文進行排序之前,還可以包括:
      [0083]所述收包核接收所管理的多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,將所述IP數(shù)據(jù)報文存儲至所屬的收包流隊列中;
      [0084]所述將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,包括:
      [0085]所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列。
      [0086]進一步的,在上述實施例的基礎(chǔ)上,本實施例的報文處理方法還可以包括:
      [0087]所述收包核讀取所接收的所述IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息;
      [0088]所述收包核根據(jù)預(yù)先建立的IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息與收包流隊列之間的對應(yīng)關(guān)系,確定與讀取到的目標信息對應(yīng)的收包流隊列;
      [0089]所述收包核將所確定的收包流隊列作為所接收的IP數(shù)據(jù)報文所屬的收包流隊列;
      [0090]其中,目標信息為五元組信息中的至少一項信息,不同的目標信息對應(yīng)不同的收包流隊列。
      [0091]舉例來講,目標信息可以包括目的IP和/或目的端口,其中,所述五元組信息至少包括以下:源網(wǎng)絡(luò)之間互連的協(xié)議IP、目的IP、協(xié)議號、源端口、目的端口。
      [0092]進一步的,在上述實施例的基礎(chǔ)上,所述數(shù)據(jù)處理系統(tǒng)還包括至少一個處理核;
      [0093]在所述收包排序核將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列之后,還包括:
      [0094]所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,并對所獲取的所述IP數(shù)據(jù)報文做如下重構(gòu)處理:重構(gòu)報文頭,并向報文中添加堆棧指針包頭,該包頭包括根據(jù)報文對應(yīng)的SA計算的一個序列號,并依據(jù)所述SA構(gòu)建所述CCK對報文進行加解密所需的信息;
      [0095]所述將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理,包括:
      [0096]所述處理核將對獲取的各IP數(shù)據(jù)報文的重構(gòu)結(jié)果發(fā)送至所述CCK進行處理。
      [0097]具體的,所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,包括:
      [0098]所述處理核按照對各收包排序隊列的輪詢順序,遍歷各收包排序隊列從中獲取IP數(shù)據(jù)報文。
      [0099]進一步的,在上述實施例的基礎(chǔ)上,所述數(shù)據(jù)處理系統(tǒng)中還包括調(diào)度核;
      [0100]本實施例中的所述方法還可以包括:
      [0101]所述調(diào)度核根據(jù)收包排序隊列中的IP數(shù)據(jù)報文數(shù)量,動態(tài)地調(diào)整各收包排序隊列的優(yōu)先級;
      [0102]所述調(diào)度核依據(jù)各收包排序隊列當前優(yōu)先級的高低以及所述處理核當前的輪詢方式,得到所述處理核當前對各收包排序隊列的輪詢順序,所述輪詢方式為優(yōu)先級從高到低或者從低到高的方式;其中,IP數(shù)據(jù)報文數(shù)量越多,收包排序隊列的優(yōu)先級越高。
      [0103]進一步的,在上述實施例的基礎(chǔ)上,本實施例中的所述方法還可以包括:
      [0104]所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),所述負載狀態(tài)為過載或空閑;
      [0105]所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式。
      [0106]具體的,所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),包括:
      [0107]所述調(diào)度核從所述處理核讀取所記錄的如下內(nèi)容:所述處理核在最近時間窗口內(nèi)嘗試從收包排序隊列中獲取一個IP數(shù)據(jù)報文的次數(shù)X與實際取到的IP數(shù)據(jù)報文的數(shù)量Y;
      [0108]所述調(diào)度核計算Y與X的比值,作為所述處理核當前的負載率;
      [0109]如果所述負載率超過設(shè)定閾值,則所述調(diào)度核判斷所述處理核當前的負載狀態(tài)為過載;否則,負載狀態(tài)為為空閑。
      [0110]進一步的,所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式,包括:
      [0111]如果本次計算的所述處理核的負載狀態(tài)與最近一次計算的所述處理核的負載狀態(tài)不一致,則所述調(diào)度核將所述處理核的輪詢方式更新為與所述處理核最近一次的輪詢方式相反的方式。
      [0112]可選的,在上述實施例的基礎(chǔ)上,所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列,包括:
      [0113]按照設(shè)定周期,所述收包排序核從所管理的收包流隊列中取出η個IP數(shù)據(jù)報文,將該η個IP數(shù)據(jù)報文和與所管理的收包流隊列對應(yīng)的收包排序隊列中已經(jīng)存在的m個IP數(shù)據(jù)報文一起排序,按照排序結(jié)果使用插入排序法將所述η個IP數(shù)據(jù)報文插入至所述收包排序隊列中,其中所述η和m均為大于O的整數(shù)。
      [0114]進一步的,在上述實施例的基礎(chǔ)上,所述數(shù)據(jù)處理系統(tǒng)還包括取包核、取包排序核和發(fā)包核;
      [0115]在將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序之前,還包括:
      [0116]所述取包核接收所述CCK發(fā)出的對各IP數(shù)據(jù)報文的重構(gòu)結(jié)果處理得到的各IPSec報文,將所述IPSec報文存儲至所屬的發(fā)包流隊列中;
      [0117]將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡,包括:
      [0118]所述取包排序核對所管理的發(fā)包流隊列中的IPSec報文進行排序,將所管理的發(fā)包流隊列中的IPSec報文按照排序結(jié)果順序存儲至發(fā)包排序隊列;
      [0119]所述發(fā)包核從所管理的發(fā)包排序隊列中獲取IPSec報文,按照所述IPSec報文中的目的IP查找路由,通過DPDK從相應(yīng)的網(wǎng)卡發(fā)出。
      [0120]為使本發(fā)明實施例的技術(shù)方案更加易于理解,首先對基于DPDK的無鎖環(huán)形隊列進行說明。
      [0121]圖3為本發(fā)明報文處理方法一實施例的無鎖環(huán)形隊列示意圖。如圖3所示,DPDK提供無鎖的環(huán)形隊列,適用于單生產(chǎn)者單消費者、單生產(chǎn)者多消費者、多生產(chǎn)者單消費者、多生產(chǎn)者多消費者情形,可以在不同的邏輯核之間快速地傳遞大量的數(shù)據(jù)。無鎖環(huán)形隊列如圖所示,隊列的增長方向是順時鐘方向,也就說,生產(chǎn)者以順時鐘方向往隊列中放數(shù)據(jù),而消費者同樣以順時鐘方向從隊列中取數(shù)據(jù)。當生產(chǎn)者需要往隊列中存數(shù)據(jù)時,先用生產(chǎn)者隊列頭指針加上需要存放數(shù)據(jù)的數(shù)量得到新的生產(chǎn)者頭指針,然后從生產(chǎn)者尾指針開始向隊列中逐個存入數(shù)據(jù),直到所有要存入的數(shù)據(jù)都存入完成后,把生產(chǎn)者尾指針加上所生產(chǎn)的數(shù)據(jù)量得到新的生產(chǎn)者尾指針;當有消費者需要取數(shù)據(jù)時,先把原消費者頭指針加上打算消費者的數(shù)量得到新的消費者頭指針,然后從消費者尾部逐個取出數(shù)據(jù),直到完成所要提取的數(shù)據(jù)量,最后把消費者尾指針加上所消費的數(shù)量得到新的消費者尾指針。需要說明的是,在本發(fā)明實施例中所涉及的所有隊列均可采用上面所提到的無鎖的環(huán)形隊列。
      [0122]圖4為本發(fā)明實施例提供的報文處理方法所應(yīng)用的數(shù)據(jù)處理系統(tǒng)的一結(jié)構(gòu)示意圖。圖5為本發(fā)明實施例提供的報文處理方法所應(yīng)用的數(shù)據(jù)處理系統(tǒng)的另一結(jié)構(gòu)示意圖。如圖4和圖5所示,本發(fā)明實施例中數(shù)據(jù)處理系統(tǒng)包括含多個邏輯核的處理裝置,所述多個邏輯核core預(yù)先分為五類:(I)收包核;(2)收包排序核;(3)處理核;(4)取包核;(5)排序發(fā)包核。各類型邏輯核個數(shù)根據(jù)總核數(shù)分配設(shè)置為預(yù)定值,同時也可以根據(jù)容量需求靈活擴展核個數(shù),進一步提高性能。上述配置的各種類型的邏輯核均指進行單一類型操作的核,不同類型的邏輯核之間通過隊列傳送報文,通過共享內(nèi)存進行通信。
      [0123]下面詳細介紹基于圖3所示的數(shù)據(jù)處理系統(tǒng)所實現(xiàn)的報文處理方法。
      [0124](一)收包
      [0125]每個收包核通過DPDK從所管理的多個網(wǎng)卡(NIC)收取IP數(shù)據(jù)報文(該報文為主機通過通信網(wǎng)絡(luò)發(fā)送到網(wǎng)卡上的;對于同一個主機而言,每發(fā)一個IP數(shù)據(jù)報文,標識字段的值加I),并根據(jù)IP數(shù)據(jù)報文中攜帶的五元組信息(源IP、目的IP、協(xié)議號、源端口、目的端口)從安全聯(lián)盟數(shù)據(jù)庫(Security Associat1n Databas,SADB)中查找加解密所需的安全關(guān)聯(lián)(Security Associat1n,SA),并將所述報文和SA分流到該報文所屬的流隊列進行緩存(一個流隊列可視為一條報文流),此時對于每條報文流而言,其對應(yīng)一個多生產(chǎn)者單消費者隊列(也即流隊列由多個收包核存儲數(shù)據(jù),而被單個收包排序核讀取),以此,可以保證報文流中各報文的順序。
      [0126]其中,SADB中預(yù)先設(shè)置有五元組信息和SA的對應(yīng)關(guān)系,典型地可以通過HASH算法來查找;所述報文所屬的流隊列確定方式也為預(yù)先設(shè)置,例如可以設(shè)置報文的五元組信息中單個信息與流隊列的對應(yīng)關(guān)系(例如,源IP與流隊列之間的對應(yīng)關(guān)系,不同源IP的IP數(shù)據(jù)報文對應(yīng)于不同的流隊列),也可以設(shè)置報文的五元組信息中的若干個信息與流隊列的對應(yīng)關(guān)系(例如,(源IP和目的IP)與流隊列之間的對應(yīng)關(guān)系),當然,還可以根據(jù)報文個數(shù)等其他因素來設(shè)置報文與所述流隊列的對應(yīng)關(guān)系,本發(fā)明,對于報文及其所屬流隊列的確定方式并非作為唯一限制,只是較優(yōu)地可以根據(jù)五元組信息中的信息來確定。在本發(fā)明實施例中,每個收包核可以對應(yīng)管理數(shù)據(jù)處理系統(tǒng)中所有網(wǎng)卡中的至少一個網(wǎng)卡。
      [0127](二)收包排序
      [0128]每個收包排序核按照設(shè)定周期對所管理的流隊列中的報文進行排序,確定各報文的順序,然后將各報文及對應(yīng)的SA按照報文順序放入排序隊列。在本發(fā)明實施例中,一個收包流隊列被單個收包排序核管理。例如,不同的收包流隊列被不同的收包排序核管理。當然,一個收包排序核管理多個收包流隊列也可。
      [0129]由于IP數(shù)據(jù)報文的標識字段唯一地標識主機發(fā)送的每一份IP數(shù)據(jù)報文,而根據(jù)RFC791的規(guī)定,主機的協(xié)議棧每發(fā)送一個IP數(shù)據(jù)報文,就將此標識字段的值加1,由此,根據(jù)此標識字段的值可以確定同一流隊列中各報文的順序。
      [0130]需要特別說明的一點是:為了保證報文排序的唯一性,一條流隊列中各報文的排序由一個收包排序核來處理。而收包排序核使用一個單生產(chǎn)者多消費者隊列作為排序隊列(也即排序隊列由單個收包排序核存儲數(shù)據(jù),而被多個處理核讀取)。不同的流隊列對應(yīng)不同的排序隊列。
      [0131](三)重構(gòu)
      [0132]所有處理核都可以從所有的排序隊列中獲取報文及其對應(yīng)的SA,而由哪個處理核讀取哪個排序隊列的報文及其對應(yīng)的SA可以通過預(yù)定的規(guī)則來設(shè)定(例如,周期性的選定處理核與排序隊列的對應(yīng)關(guān)系,每個處理核通過輪詢的方式讀取一個排序隊列中設(shè)定個數(shù)報文,等等);重構(gòu)報文的報文頭,并向報文中添加堆桟指針(Extended stack pointer,ESP)包頭,該包頭包括根據(jù)報文對應(yīng)的SA計算的一個序列號,并依據(jù)該SA構(gòu)建CCK加解密所需的信息,然后將該信息和修改后的報文送至CCK。其中,處理核對同一個排序隊列中各報文的讀取順序為各報文的存儲順序。
      [0133](四)CCK處理
      [0134]CCK對接收到的報文進行加解密、摘要計算等處理,生成IPSec報文;
      [0135](五)取包
      [0136]取包核按照設(shè)定周期接收CCK發(fā)出的IPSec報文,并按照IPSec報文中的五元組信息將該IPSec報文分流到所屬的發(fā)包流隊列進行緩存,具體的分流方式與上述對IP數(shù)據(jù)報文的分流方式相同,在此不再贅述。
      [0137](六)排序發(fā)包
      [0138]由于CCK有多個(典型地,12個)引擎同時處理報文,由此也需要排序發(fā)包核根據(jù)預(yù)定排序算法對所管理的發(fā)包流隊列中各報文進行排序,確定各報文的順序。具體的,由于IPSec報文中依然包括對應(yīng)的IP數(shù)據(jù)報文中的標識字段,所以排序發(fā)包核的預(yù)定排序算法可按照上述收包排序核對IP數(shù)據(jù)報文的排序算法,依據(jù)標識字段值的大小對IPSec報文進行排序,在此不再贅述。
      [0139]排序發(fā)包核按照排序結(jié)果順序處理所管理的發(fā)包流隊列中的各IPSec報文,其中所述處理操作包括按照IPSec報文中目的IP查找路由,通過DPDK從相應(yīng)的網(wǎng)卡發(fā)出。
      [0140]由此可見,本發(fā)明實施例中通過將從多個網(wǎng)卡中接收的報文按照報文實際發(fā)包順序進行重新排序后再轉(zhuǎn)發(fā)至CCK,并對CCK發(fā)出的報文也進行排序后再發(fā)送到網(wǎng)卡,由此在充分利用多核的優(yōu)勢的情況下保證了報文處理的有序性。
      [0141]在本發(fā)明以上實施例中,在收包排序過程中,收包排序核將從流隊列中獲取的報文按序排列后放置于排序隊列中,而處理核從排序隊列中取出已經(jīng)排序的報文,如果此時由于各個邏輯核讀取數(shù)據(jù)的周期不完全一致,而處理核取出的報文數(shù)數(shù)量有限時,則有可能出現(xiàn)處理核所取出的報文數(shù)量不僅包括當前周期收包排序核放置于排序隊列中的報文還包括上一周期已經(jīng)排序的報文,而此時也可能會發(fā)生錯序,由此進一步優(yōu)選地可采用排序算法來確定,就步驟如下:
      [0142]假定排序隊列的當前報文數(shù)為m,(在處理核取報文的首個周期,可以理解為所有已由收包排序核完成排序的報文數(shù),在處理核取報文的非首周期,也可理解為上一個周期處理核取報文后在排序隊列中剩余的已排序報文數(shù)),按照設(shè)定周期收包排序核從流隊列中取出η個報文,將該η個報文和排序隊列中已經(jīng)存在的m個報文一起利用于IP數(shù)據(jù)報文的標識字段確定(n+m)個報文順序,并使用插入排序法完成排序。
      [0143]該優(yōu)選實施方式可以使得方案對各類型邏輯核對IP數(shù)據(jù)報文的讀取和存儲周期之間無特殊要求,不必嚴格一致,并且對存儲IP數(shù)據(jù)報文的各隊列(包括流隊列和排序隊列)長度也沒有特別限定。
      [0144]在本發(fā)明以上描述的實施例中,報文的重構(gòu)將占用最多的處理核的處理時間,而重構(gòu)時處理核的數(shù)量將直接影響到系統(tǒng)的吞吐量,因此如何充分利用多核優(yōu)勢平衡各核之間的負載是影響系統(tǒng)性能的重要因素,由此,本發(fā)明實施例中較優(yōu)地可單獨設(shè)置一個邏輯核:調(diào)度核,其可以實現(xiàn)基于動態(tài)優(yōu)先級的隊列調(diào)度和基于負載的處理核調(diào)度來選擇處理核和排序隊列的關(guān)系。需要說明的是,在說明書相應(yīng)部分標出(圖4中未示出)
      [0145]在本發(fā)明的上述實施例中,報文重構(gòu)過程需要確定由處理核讀取哪個排序隊列的報文,較優(yōu)地可以通過基于動態(tài)優(yōu)先級的隊列調(diào)度方式來確定,此時,還需要增加一種功能的邏輯核:調(diào)度核。處理核在讀取數(shù)據(jù)時根據(jù)排序隊列的優(yōu)先級,以輪詢的方式遍歷排序隊列,從中讀取報文,而排序隊列的優(yōu)先級由調(diào)度核根據(jù)排序隊列中的報文數(shù)量動態(tài)調(diào)整,報文數(shù)量越多優(yōu)先級越高。
      [0146]圖6為本發(fā)明實施例提供的報文處理方法中排序隊列的優(yōu)先級的示意圖。圖7本發(fā)明實施例提供的報文處理方法中從排序隊列中取包的流程示意圖。具體的,如圖6和圖7所示,調(diào)度核維護一個排序隊列優(yōu)先級表,處理核根據(jù)優(yōu)先級表,優(yōu)先從優(yōu)先級高的排序隊列中取包。流程如下:
      [0147]Sll調(diào)度核以設(shè)定時長(例如,100ms)為周期,以優(yōu)先級表中優(yōu)先級由小至大的順序查詢所有排序隊列中報文的數(shù)量,并記錄到優(yōu)先級表中。
      [0148]S12調(diào)度核以報文數(shù)量由多到少的順序使用插入排序算法對優(yōu)先級表中的排序隊列進彳丁排序。
      [0149]S13調(diào)度核按照排序后的優(yōu)先級表順序?qū)⒏髋判蜿犃械膬?yōu)先級分別置為l-n(l表不最尚優(yōu)先級,η為排序隊列的數(shù)量);
      [0150]S14處理核讀取優(yōu)先級表,先從優(yōu)先級為I的排序隊列中取包,待此隊列取空時再從優(yōu)先級為2的排序隊列中取包,以此類推。
      [0151]對于上述排序隊列優(yōu)先級設(shè)置,需要特別說明的是:上述的優(yōu)先級被置為1-η是為了標識各個排序隊列的優(yōu)先級,也可以采用其他標識優(yōu)先級的方法,只要能對各個排序隊列的優(yōu)先級進行排序并且加以區(qū)分即可;另外,如果兩個排序隊列中的報文數(shù)量相同可以隨機設(shè)定優(yōu)先級或者按照原有優(yōu)先級高低順序排列,或者預(yù)置高低等本領(lǐng)域普通人員已知可實施的其他方式。
      [0152]進一步地,如果只使用基于優(yōu)先級的隊列調(diào)度,有可能會導(dǎo)致頻繁的隊列優(yōu)先級調(diào)整,尤其是如果某些排序隊列中流量較大,一直保持高優(yōu)先級,處理核將一直處于高負載狀態(tài),同時還會導(dǎo)致低優(yōu)先級隊列中的報文長時間得不到處理,由此本發(fā)明實施例對于隊列調(diào)度還可以進一步地基于負載進行處理核調(diào)度。對處理核負載設(shè)定閾值(如80% ),由調(diào)度核來維護處理核負載表,記錄處理核當前的負載狀態(tài),如果處理核負載超過此閾值則以排序隊列優(yōu)先級反轉(zhuǎn)的方式輪詢排序隊列。
      [0153]圖8為本發(fā)明實施例提供的報文處理方法中根據(jù)負載狀態(tài)輪詢排序隊列的流程示意圖。如圖8所不,流程如下:
      [0154]S21處理核記錄自己在當前設(shè)定周期內(nèi)(例如,最近Is內(nèi))嘗試從排序隊列中取報文的次數(shù)(一次取一個報文)和實際取到的報文數(shù)量。
      [0155]S22調(diào)度核以所述設(shè)定周期(此處為Is)為周期,從所述處理核讀取所記錄的如下內(nèi)容:所述處理核在最近時間窗口內(nèi)嘗試從收包排序隊列中獲取一個IP數(shù)據(jù)報文的次數(shù)X與實際取到的IP數(shù)據(jù)報文的數(shù)量Y;所述調(diào)度核計算Y與X的比值,作為所述處理核當前的負載率;
      [0156]S23根據(jù)處理核的負載率是否超過閾值,判斷處理核當前的負載狀態(tài)是過載還是空閑。
      [0?57] S24判斷負載表中記錄的處理核的負載狀態(tài)是否與當前判斷出的該處理核的負載狀態(tài)一致,如果不一致則將當前處理核根據(jù)優(yōu)先級取包的方式置反(即將排序隊列優(yōu)先級從高至低的收包順序置為從低至高的收包順序,反之亦然),并將處理核當前判斷出的負載狀態(tài)記錄到負載表中。
      [0158]需要說明的是,在上述各實施例中,SA是在收包核執(zhí)行收包過程中根據(jù)IP數(shù)據(jù)報文中攜帶的五元組信息從SADB中查找得到,之后該SA連同對應(yīng)的IP數(shù)據(jù)報文一起被存儲在隊列中,但是本領(lǐng)域普通技術(shù)人員應(yīng)理解,SA只要在處理核對IP數(shù)據(jù)報文進行重構(gòu)處理時能夠被獲取到即可。并且,在本發(fā)明上述示例中,由多個處理核執(zhí)行對排序后的IP數(shù)據(jù)報文的重構(gòu)處理操作,其實該處理操作也可以由CCK中的多個引擎執(zhí)行,上述示例是考慮到CCK負擔過重,所以將重構(gòu)處理操作交由處理核執(zhí)行,本發(fā)明實施例對此不作具體限定。
      [0159]圖9為本發(fā)明實施例提供的報文處理方法中根據(jù)負載狀態(tài)輪詢排序隊列的流程示意圖。如圖9所示,本實施例提供的報文處理裝置,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),其特征在于,該裝置包括:第一處理模塊91和第二處理模塊92。其中,
      [0160]第一處理模塊91,用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;
      [0161]第二處理模塊92,用于將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。
      [0162]在本實施例中,將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理;接著,將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。實現(xiàn)了對IP數(shù)據(jù)報文的排序,以及根據(jù)該排序?qū)Ω魉鯥P數(shù)據(jù)報文進行處理,從而保證了 IP數(shù)據(jù)報文處理的有序性。
      [0163]在上述實施例基礎(chǔ)上,所述第一處理模塊91,具體用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序;
      [0164]所述第一處理模塊,具體用于將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進行排序。
      [0165]進一步的,在上述實施例基礎(chǔ)上,所述第一處理模塊91,具體用于根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對該報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。
      [0166]在本實施例中,實現(xiàn)了對IP數(shù)據(jù)報文的排序,以及根據(jù)該排序?qū)Ω魉鯥P數(shù)據(jù)報文進行處理,從而保證了 IP數(shù)據(jù)報文處理的有序性。
      [0167]雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式及細節(jié)上進行任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準。
      【主權(quán)項】
      1.一種報文處理方法,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),其特征在于,該方法包括: 將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理; 將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述IP數(shù)據(jù)報文是由主機發(fā)送給網(wǎng)卡的; 將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,包括: 將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進彳丁排序; 將所述CCK發(fā)出的對各所述IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,包括: 將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進行排序。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序,包括: 根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。4.根據(jù)權(quán)利要求1-3中任一項所述的方法,其特征在于,所述數(shù)據(jù)處理系統(tǒng)包括:至少一個收包核和至少一個收包排序核; 在所述將多個網(wǎng)卡通過所述DPDK發(fā)送的各所述IP數(shù)據(jù)報文進行排序之前,還包括: 所述收包核接收所管理的多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,將所述IP數(shù)據(jù)報文存儲至所屬的收包流隊列中; 所述將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,包括: 所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 所述收包核讀取所接收的所述IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息; 所述收包核根據(jù)預(yù)先建立的IP數(shù)據(jù)報文攜帶的五元組信息中的目標信息與收包流隊列之間的對應(yīng)關(guān)系,確定與讀取到的目標信息對應(yīng)的收包流隊列; 所述收包核將所確定的收包流隊列作為所接收的IP數(shù)據(jù)報文所屬的收包流隊列; 其中,目標信息為五元組信息中的至少一項信息,不同的目標信息對應(yīng)不同的收包流隊列。6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述數(shù)據(jù)處理系統(tǒng)還包括至少一個處理核; 在所述收包排序核將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列之后,還包括: 所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,并對所獲取的所述IP數(shù)據(jù)報文做如下重構(gòu)處理:重構(gòu)報文頭,并向報文中添加堆棧指針包頭,該包頭包括根據(jù)報文對應(yīng)的SA計算的一個序列號,并依據(jù)所述SA構(gòu)建所述CCK對報文進行加解密所需的信息; 所述將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理,包括: 所述處理核將對獲取的各IP數(shù)據(jù)報文的重構(gòu)結(jié)果發(fā)送至所述CCK進行處理。7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述處理核從各收包排序隊列中獲取IP數(shù)據(jù)報文,包括: 所述處理核按照對各收包排序隊列的輪詢順序,遍歷各收包排序隊列從中獲取IP數(shù)據(jù)報文。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述數(shù)據(jù)處理系統(tǒng)還包括調(diào)度核; 所述方法還包括: 所述調(diào)度核根據(jù)收包排序隊列中的IP數(shù)據(jù)報文數(shù)量,動態(tài)地調(diào)整各收包排序隊列的優(yōu)先級; 所述調(diào)度核依據(jù)各收包排序隊列當前優(yōu)先級的高低以及所述處理核當前的輪詢方式,得到所述處理核當前對各收包排序隊列的輪詢順序,所述輪詢方式為優(yōu)先級從高到低或者從低到高的方式; 其中,IP數(shù)據(jù)報文數(shù)量越多,收包排序隊列的優(yōu)先級越高。9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括: 所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),所述負載狀態(tài)為過載或空閑; 所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述調(diào)度核動態(tài)地計算所述處理核的負載狀態(tài),包括: 所述調(diào)度核從所述處理核讀取所記錄的如下內(nèi)容:所述處理核在最近時間窗口內(nèi)嘗試從收包排序隊列中獲取一個IP數(shù)據(jù)報文的次數(shù)X與實際取到的IP數(shù)據(jù)報文的數(shù)量Y; 所述調(diào)度核計算Y與X的比值,作為所述處理核當前的負載率; 如果所述負載率超過設(shè)定閾值,則所述調(diào)度核判斷所述處理核當前的負載狀態(tài)為過載;否則,負載狀態(tài)為為空閑。11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述調(diào)度核依據(jù)所述處理核的負載狀態(tài)確定所述處理核的輪詢方式,包括: 如果本次計算的所述處理核的負載狀態(tài)與最近一次計算的所述處理核的負載狀態(tài)不一致,則所述調(diào)度核將所述處理核的輪詢方式更新為與所述處理核最近一次的輪詢方式相反的方式。12.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述收包排序核對所管理的收包流隊列中的IP數(shù)據(jù)報文進行排序,將所管理的收包流隊列中的IP數(shù)據(jù)報文按照排序結(jié)果順序存儲至收包排序隊列,包括: 按照設(shè)定周期,所述收包排序核從所管理的收包流隊列中取出η個IP數(shù)據(jù)報文,將該η個IP數(shù)據(jù)報文和與所管理的收包流隊列對應(yīng)的收包排序隊列中已經(jīng)存在的m個IP數(shù)據(jù)報文一起排序,按照排序結(jié)果使用插入排序法將所述η個IP數(shù)據(jù)報文插入至所述收包排序隊列中,其中所述η和m均為大于O的整數(shù)。13.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述數(shù)據(jù)處理系統(tǒng)還包括取包核和排序發(fā)包核; 在將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序之前,還包括: 所述取包核接收所述CCK發(fā)出的對各IP數(shù)據(jù)報文的重構(gòu)結(jié)果處理得到的各IPSec報文,將所述IPSec報文存儲至所屬的發(fā)包流隊列中; 將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡,包括: 所述排序發(fā)包核對所管理的發(fā)包流隊列中的IPSec報文進行排序,按照排序結(jié)果順序處理所管理的發(fā)包流隊列中的各IPSec報文,其中所述處理操作包括按照所述IPSec報文中的目的IP查找路由,通過DPDK從相應(yīng)的網(wǎng)卡發(fā)出。14.一種報文處理裝置,應(yīng)用于包含有數(shù)據(jù)平面開發(fā)工具集DPDK和帶有加解密功能的高性能處理芯片CCK的數(shù)據(jù)處理系統(tǒng),其特征在于,該裝置包括: 第一處理模塊,用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,并將排序后的各IP數(shù)據(jù)報文發(fā)送至所述CCK進行處理; 第二處理模塊,用于將所述CCK發(fā)出的對各IP數(shù)據(jù)報文處理得到的各IPSec報文進行排序,并將排序后的各IPSec報文通過DPDK發(fā)送至所述多個網(wǎng)卡。15.根據(jù)權(quán)利要求14所述的裝置,其特征在于,所述第一處理模塊,具體用于將多個網(wǎng)卡通過DPDK發(fā)送的各IP數(shù)據(jù)報文,按照所述主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序進行排序; 所述第一處理模塊,具體用于將所述各IPSec報文,按照主機對所述IPSec報文對應(yīng)的IP數(shù)據(jù)報文的實際發(fā)送順序進行排序。16.根據(jù)權(quán)利要求15所述的裝置,其特征在于,所述第一處理模塊,具體用于根據(jù)所述IP數(shù)據(jù)報文中攜帶的用于標識主機對所述IP數(shù)據(jù)報文的實際發(fā)送順序的標識字段,將所述多個網(wǎng)卡通過所述DPDK發(fā)送的各IP數(shù)據(jù)報文進行排序,其中所述標識字段的數(shù)值越大,所述IP數(shù)據(jù)報文的排序越靠后。
      【文檔編號】G06F9/50GK105975433SQ201610513945
      【公開日】2016年9月28日
      【申請日】2016年6月30日
      【發(fā)明人】劉勝旺
      【申請人】瑞斯康達科技發(fā)展股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1