專利名稱:基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及并行計(jì)算中負(fù)載均衡技術(shù)領(lǐng)域,特別是涉及一種基于 流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡的方法。
背景技術(shù):
近年來(lái),隨著互聯(lián)網(wǎng)帶寬的不斷增加,網(wǎng)包處理系統(tǒng)面臨越來(lái)越 大的挑戰(zhàn)。由于單核處理器上摩爾定律的失效,多核網(wǎng)絡(luò)處理器成為 提高網(wǎng)絡(luò)設(shè)備性能的最重要的選擇之一。負(fù)載均衡方案是釆用多核網(wǎng) 絡(luò)處理器的網(wǎng)包處理系統(tǒng)中的重要組件。負(fù)載均衡方案的性能影響到 各個(gè)并行處理組件的利用率,進(jìn)而決定了整個(gè)網(wǎng)包處理系統(tǒng)的性能 (吞吐率)。
網(wǎng)包處理系統(tǒng)中的負(fù)載均衡方案與一般并行處理系統(tǒng)中的負(fù)載 均衡方案有較大不同,網(wǎng)絡(luò)處理系統(tǒng)中的負(fù)載均衡除了要使分配到每
一個(gè)處理引擎上的流量盡可能的均衡外,還需要考慮一下兩個(gè)因素 第一,需要保證同屬于一個(gè)流的網(wǎng)包的順序,在進(jìn)出這個(gè)網(wǎng)包處理系 統(tǒng)的前后是不變的,即網(wǎng)包需要按流保序。第二,由于網(wǎng)包處理程序 訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)有一定的時(shí)間局部性,所以進(jìn)行流量分配時(shí),需要考 慮到時(shí)間局部性的因素以提高Cache (高速緩沖存儲(chǔ)器)的命中率。
網(wǎng)包處理系統(tǒng)中釆用的負(fù)載均衡方案一般有兩種基于網(wǎng)包的負(fù) 載均衡和基于網(wǎng)流的負(fù)載均衡?;诰W(wǎng)包的負(fù)載均衡方案,以包為單 位進(jìn)行流量分配。基于網(wǎng)流的負(fù)載均衡方案,以網(wǎng)流為單位進(jìn)行流量 分配,即屬于同一個(gè)流的網(wǎng)包只能被分配到同一個(gè)處理引擎進(jìn)行處 理?;诰W(wǎng)包的負(fù)載均衡存在兩方面的不足第一,這種方案需要通 過(guò)額外的設(shè)計(jì)進(jìn)行按流保序,而且這些保序的設(shè)計(jì)往往會(huì)對(duì)系統(tǒng)性能 造成較大影響;第二,由于網(wǎng)包處理系統(tǒng)大多需要維護(hù)一張會(huì)話表(流
的信息),基于網(wǎng)包的負(fù)載均衡系統(tǒng)可能將同屬于一個(gè)流的兩個(gè)網(wǎng)包 分配到不同的處理引擎上,這時(shí)會(huì)出現(xiàn)兩個(gè)引擎同時(shí)訪問(wèn)一個(gè)數(shù)據(jù)結(jié) 構(gòu)的情況。所以需要對(duì)這些數(shù)據(jù)結(jié)構(gòu)進(jìn)行同步(采用互斥鎖等方案), 這些同步方案也會(huì)對(duì)系統(tǒng)的性能造成很大影響。基于網(wǎng)流的負(fù)載均衡 方案不存在上述的兩個(gè)不足,但這種方案的分配單位(網(wǎng)流)的性質(zhì) 造成基于網(wǎng)流的負(fù)載均衡很容易出現(xiàn)各個(gè)處理引擎上負(fù)載不均衡的 情況。主要的原因有兩方面其一,負(fù)載均衡器需要知道分配單位的 負(fù)載特性(或者每個(gè)分配單位的負(fù)載是相同的), 一般網(wǎng)包處理系統(tǒng) 中可以假設(shè)每個(gè)網(wǎng)包的需要的處理能力是基本相同的。而網(wǎng)流則很不 相同,同屬于一個(gè)網(wǎng)流的網(wǎng)包的數(shù)量在第一個(gè)網(wǎng)包到達(dá)時(shí)是無(wú)法預(yù)測(cè) 的,而且根據(jù)對(duì)互聯(lián)網(wǎng)流量的統(tǒng)計(jì)表明,網(wǎng)流的大小(包含網(wǎng)包的多 少)的分布是長(zhǎng)尾的,即網(wǎng)流大小的分布很不均衡。其二, 一個(gè)網(wǎng)流 是由多個(gè)網(wǎng)包組成的(相同的網(wǎng)絡(luò)流量中,網(wǎng)流的數(shù)量與網(wǎng)包的數(shù)量 差一個(gè)數(shù)量級(jí)),所以基于網(wǎng)流的劃分粒度要比粗,更不容易達(dá)到負(fù) 載的均衡。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例要解決的問(wèn)題是提供一種基于流分片的對(duì)多核網(wǎng) 絡(luò)處理器進(jìn)行負(fù)載均衡的方法,以克服現(xiàn)有基于流的負(fù)載均衡技術(shù)中 容易出現(xiàn)各個(gè)處理引擎上負(fù)載不均衡的缺陷。
為達(dá)到上述目的,本發(fā)明實(shí)施例的技術(shù)方案提供一種基于流分片
的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡方法,該方法包括以下步驟
s101.測(cè)量所有處理引擎處理每一個(gè)網(wǎng)流中的網(wǎng)包的最大處理延 時(shí)l;
s102.建立一張網(wǎng)流會(huì)話表,網(wǎng)流會(huì)話表中記錄每一個(gè)網(wǎng)流中的
網(wǎng)包最后到達(dá)的時(shí)間和為最后一個(gè)到達(dá)的網(wǎng)包分配的處理引擎名稱;
sl03.獲取當(dāng)前時(shí)刻每個(gè)處理引擎的處理隊(duì)列的長(zhǎng)度Bi,并計(jì)算 重分配最小時(shí)間差mbs,所述mbs- (max (Bi) -min (Bi)) x l;
Sl04.當(dāng)接收到一個(gè)網(wǎng)包時(shí),判斷所述網(wǎng)流會(huì)話表中是否含有與
所述網(wǎng)包對(duì)應(yīng)的網(wǎng)流的表項(xiàng),如果有,則轉(zhuǎn)步驟sl05;
s105.獲取與所述網(wǎng)包對(duì)應(yīng)的網(wǎng)流的信息,判斷系統(tǒng)當(dāng)前時(shí)間與 所述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包的時(shí)間間隔是否小于重分配最小時(shí) 間差MBS,如果是,則直接將所述網(wǎng)包分配給所述網(wǎng)流會(huì)話表中記 錄的所述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包分配的處理引擎;
s106.更新所述網(wǎng)流會(huì)話表中所述網(wǎng)包的到達(dá)時(shí)間和分配給所述 網(wǎng)包的處理引擎。
其中,在步驟sl04中,如果所述網(wǎng)流會(huì)話表中沒(méi)有與所述網(wǎng)包 對(duì)應(yīng)的網(wǎng)流的表項(xiàng),則在所述網(wǎng)流會(huì)話表中建立與所述網(wǎng)流對(duì)應(yīng)的表 項(xiàng),并將處理隊(duì)列最短的引擎作為所述網(wǎng)包的處理引擎。
其中,在步驟sl05中,如果系統(tǒng)當(dāng)前時(shí)間與所述網(wǎng)流中最后一 個(gè)到達(dá)的網(wǎng)包的時(shí)間間隔大于MBS,則對(duì)流進(jìn)行分片,可以對(duì)網(wǎng)包 的處理引擎重新分配,以達(dá)到更好的負(fù)載均衡,具體為判斷處理引 擎的輸入隊(duì)列的長(zhǎng)度是否大于預(yù)先設(shè)定的閾值T,如果否,則將所述 網(wǎng)包分配給所述網(wǎng)流會(huì)話表中記錄的所述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng) 包分配的處理引擎。
其中,如果處理引擎的輸入隊(duì)列的長(zhǎng)度大于預(yù)先設(shè)定的閾值T, 則將處理隊(duì)列最短的引擎作為所述網(wǎng)包的處理引擎。
其中,在所述將處理隊(duì)列最短的引擎作為所述網(wǎng)包的處理引擎之 后,還包括在所述網(wǎng)流會(huì)話表中記錄所述網(wǎng)包的到達(dá)時(shí)間和分配給 所述網(wǎng)包的處理引擎。
與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有如下優(yōu)點(diǎn)
本發(fā)明實(shí)施例可以達(dá)到比基于流的負(fù)載均衡方案更細(xì)粒度的流 量劃分以達(dá)到更好的負(fù)載的均衡性,同時(shí)可以達(dá)到按流保序和高的 Cache利用率。
圖l是本發(fā)明實(shí)施例的 一種基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行
負(fù)載均衡的系統(tǒng)的結(jié)構(gòu)圖2是本發(fā)明實(shí)施例的 一種網(wǎng)流會(huì)話表的結(jié)構(gòu)圖3是本發(fā)明實(shí)施例的 一種基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行
負(fù)載均衡的方法的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì) 描述。以下實(shí)施例用于說(shuō)明本發(fā)明,但不用來(lái)限制本發(fā)明的范圍。
本發(fā)明提出的基于流分片的多核網(wǎng)絡(luò)處理器的負(fù)載均衡的方法 分為兩個(gè)階段,第一階段為預(yù)處理階段,首先測(cè)量每個(gè)處理引擎處理
一個(gè)網(wǎng)包需要的最大處理時(shí)間l,用當(dāng)前時(shí)刻處理引擎的輸入隊(duì)列的 長(zhǎng)度的最大與最小值之差計(jì)算并計(jì)算重分配最小時(shí)間差MBS- (max (Bi)-min (Bi)) x L,確定將網(wǎng)絡(luò)流劃分為流分片的標(biāo)準(zhǔn)。第二階 段實(shí)際處理階段,首先建立一張網(wǎng)流會(huì)話表,分別記錄網(wǎng)絡(luò)流的流標(biāo) 識(shí)(一般為源地址、目的地址、傳輸層協(xié)議、源端口和目的端口)、 網(wǎng)絡(luò)流中最后一個(gè)網(wǎng)包到達(dá)的時(shí)間、網(wǎng)絡(luò)流中最后一個(gè)網(wǎng)包分配的處 理引擎。
以下給出本發(fā)明的 一個(gè)實(shí)施例
假設(shè)本發(fā)明實(shí)施例的一種基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行 負(fù)載均衡的系統(tǒng)的結(jié)構(gòu)如圖l所示。首先測(cè)量每個(gè)處理引擎處理一個(gè) 網(wǎng)包的時(shí)間l,獲得當(dāng)前時(shí)刻的各個(gè)處理隊(duì)列長(zhǎng)度Bi,得到重分配最 小時(shí)間差MBS- (max (Bi) -min (Bi)) x l。 一般釆用哈希表的結(jié) 構(gòu),建立網(wǎng)流會(huì)話表,如圖2所示。
系統(tǒng)接收到網(wǎng)包輸入后,先進(jìn)入負(fù)載均衡器。先從網(wǎng)包包頭中提 取流標(biāo)識(shí),用流標(biāo)識(shí)查詢連接會(huì)話表,如果會(huì)話表中不存在這個(gè)流, 則建立這個(gè)流對(duì)應(yīng)的表項(xiàng),并將選擇處理隊(duì)列最短的引擎作為這個(gè)網(wǎng) 包的處理引擎;如果會(huì)話表中存在這個(gè)流,首先比較當(dāng)前時(shí)間和連接
會(huì)話表的表項(xiàng)中的時(shí)間戳的差值是否小于MBS。如果小于MBS,不 需要進(jìn)行額外處理,直接將這個(gè)網(wǎng)包分配到表項(xiàng)中記錄的處理引擎進(jìn) 行處理;如果大于MBS,首先獲得表項(xiàng)中記錄的處理引擎的處理隊(duì)列 的長(zhǎng)度,判斷處理隊(duì)列的長(zhǎng)度是否小于預(yù)先設(shè)定的閾值T,如果小于 閎值T,不進(jìn)行自適應(yīng)調(diào)整,還是將網(wǎng)包分配給表項(xiàng)中記錄的處理引 擎進(jìn)行處理。這樣可以減少同 一個(gè)流中的網(wǎng)包被分配到不同的處理引 擎的次數(shù),可以提高處理引擎的緩存的使用效率。
只有當(dāng)對(duì)應(yīng)的處理引擎的處理隊(duì)列的長(zhǎng)度大于閾值T后,才對(duì)這
個(gè)流對(duì)應(yīng)的處理引擎進(jìn)行調(diào)整,本發(fā)明中直接選取處理隊(duì)列最短的那 個(gè)處理引擎。此時(shí),更新連接會(huì)話表的表項(xiàng)中的時(shí)間戳和處理引擎號(hào) 字段,然后將網(wǎng)包放入對(duì)應(yīng)的處理引擎的處理隊(duì)列中等待處理。
本發(fā)明實(shí)施例可以達(dá)到比基于流的負(fù)載均衡方案更細(xì)粒度的流 量劃分以達(dá)到更好的負(fù)載的均衡性,同時(shí)可以達(dá)到按流保序和高的 Cache利用率。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng) 域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以 做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡方法,其特征在于,該方法包括以下步驟s101. 測(cè)量所有處理引擎處理每一個(gè)網(wǎng)流中的網(wǎng)包的最大處理延時(shí)L;s102. 建立一張網(wǎng)流會(huì)話表,網(wǎng)流會(huì)話表中記錄每一個(gè)網(wǎng)流中的網(wǎng)包最后到達(dá)的時(shí)間和為最后一個(gè)到達(dá)的網(wǎng)包分配的處理引擎名稱;s103. 獲取當(dāng)前時(shí)刻每個(gè)處理引擎的處理隊(duì)列的長(zhǎng)度Bi,并計(jì)算重分配最小時(shí)間差MBS,所述MBS=(max(Bi)-min(Bi))×L;s104. 當(dāng)接收到一個(gè)網(wǎng)包時(shí),判斷所述網(wǎng)流會(huì)話表中是否含有與所述網(wǎng)包對(duì)應(yīng)的網(wǎng)流的表項(xiàng),如果有,則轉(zhuǎn)步驟s105;s105. 獲取與所述網(wǎng)包對(duì)應(yīng)的網(wǎng)流的信息,判斷系統(tǒng)當(dāng)前時(shí)間與所述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包的時(shí)間間隔是否小于重分配最小時(shí)間差MBS,如果是,則直接將所述網(wǎng)包分配給所述網(wǎng)流會(huì)話表中記錄的所述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包分配的處理引擎;s106. 更新所述網(wǎng)流會(huì)話表中所述網(wǎng)包的到達(dá)時(shí)間和分配給所述網(wǎng)包的處理引擎。
2、 如權(quán)利要求1所述的基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù) 載均衡方法,其特征在于,在步驟sl04中,如果所述網(wǎng)流會(huì)話表中 沒(méi)有與所述網(wǎng)包對(duì)應(yīng)的網(wǎng)流的表項(xiàng),則在所述網(wǎng)流會(huì)話表中建立與所 述網(wǎng)流對(duì)應(yīng)的表項(xiàng),并將處理隊(duì)列最短的引擎作為所述網(wǎng)包的處理引 擎。
3、 如權(quán)利要求1所述的基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù) 載均衡方法,其特征在于,在步驟sl05中,如果系統(tǒng)當(dāng)前時(shí)間與所 述網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包的時(shí)間間隔大于mbs,則對(duì)流進(jìn)行分 片,可以對(duì)網(wǎng)包的處理引擎重新分配,以達(dá)到更好的負(fù)載均衡,具體 為判斷處理引擎的輸入隊(duì)列的長(zhǎng)度是否大于預(yù)先設(shè)定的閾值T,如 果否,則將所述網(wǎng)包分配給所述網(wǎng)流會(huì)話表中記錄的所述網(wǎng)流中最后 一個(gè)到達(dá)的網(wǎng)包分配的處理引擎。
4、 如權(quán)利要求3所述的基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡方法,其特征在于,如果處理引擎的輸入隊(duì)列的長(zhǎng)度大于預(yù)先設(shè)定的閾值T,則將處理隊(duì)列最短的引擎作為所述網(wǎng)包的處理引擎。
5、 如權(quán)利要求2或4所述的基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn) 行負(fù)載均衡方法,其特征在于,在所述將處理隊(duì)列最短的引擎作為所 述網(wǎng)包的處理引擎之后,還包括在所述網(wǎng)流會(huì)話表中記錄所述網(wǎng)包 的到達(dá)時(shí)間和分配給所述網(wǎng)包的處理引擎。
全文摘要
本發(fā)明公開了一種基于流分片的對(duì)多核網(wǎng)絡(luò)處理器進(jìn)行負(fù)載均衡方法,包括測(cè)量所有處理引擎處理每一個(gè)網(wǎng)流中的網(wǎng)包的最大處理延時(shí);建立一張網(wǎng)流會(huì)話表;計(jì)算重分配最小時(shí)間差MBS;當(dāng)接收到一個(gè)網(wǎng)包時(shí),判斷網(wǎng)流會(huì)話表中是否含有與網(wǎng)包對(duì)應(yīng)的網(wǎng)流的表項(xiàng),如果有,則判斷系統(tǒng)當(dāng)前時(shí)間與網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包的時(shí)間間隔是否小于MBS,如果是,則直接將網(wǎng)包分配給網(wǎng)流會(huì)話表中記錄的網(wǎng)流中最后一個(gè)到達(dá)的網(wǎng)包分配的處理引擎;如果不是,則對(duì)流進(jìn)行分片,可以對(duì)網(wǎng)包的處理引擎重新分配。本發(fā)明可以達(dá)到比基于流的負(fù)載均衡方案更細(xì)粒度的流量劃分以在保證按流保序和高緩存利用率的同時(shí),達(dá)到更好的負(fù)載的均衡性。
文檔編號(hào)H04L1/00GK101394362SQ20081022629
公開日2009年3月25日 申請(qǐng)日期2008年11月12日 優(yōu)先權(quán)日2008年11月12日
發(fā)明者飛 何, 軍 李 申請(qǐng)人:清華大學(xué)