專利名稱:一種實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對(duì)網(wǎng)絡(luò)流量進(jìn)行分配的方法及裝置,具體地說是一種實(shí)現(xiàn)網(wǎng)絡(luò)流量載分擔(dān)的方法及裝置。
背景技術(shù):
隨著各種IP技術(shù)和傳輸技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)應(yīng)用極大普及,用戶數(shù)、網(wǎng)絡(luò)流量持續(xù)增長(zhǎng)。網(wǎng)絡(luò)豐富的內(nèi)容和形式既豐富了人們的日常生活,也會(huì)被社會(huì)不法份子所利用。如果不能對(duì)互聯(lián)網(wǎng)進(jìn)行有效管理和監(jiān)控,將會(huì)給國(guó)家、企業(yè)、個(gè)人的網(wǎng)絡(luò)安全帶來(lái)各種危害。因此,保障信息安全已經(jīng)提上議事日程。
對(duì)于信息的監(jiān)控,當(dāng)前采用的技術(shù)主要是分流和阻斷。分流是通過分光器將網(wǎng)絡(luò)的流量引入到路由器進(jìn)行流量分解,通過ACL(Access Control List,訪問控制列表)規(guī)則過濾后,供后端服務(wù)器系統(tǒng)進(jìn)行相關(guān)分析、處理。其中分流可能是一級(jí)或者多級(jí),直到主機(jī)能夠處理的粒度。后端服務(wù)器系統(tǒng)可能有多個(gè),分別處理不同類型的數(shù)據(jù),因此需要在分流設(shè)備上進(jìn)行端口分組,每個(gè)端口組由多個(gè)端口組成,每個(gè)端口組對(duì)應(yīng)于一個(gè)服務(wù)器系統(tǒng)。由于需要處理的流量較大,數(shù)據(jù)較多,每個(gè)服務(wù)器系統(tǒng)將采用陣列方式,在多臺(tái)主機(jī)間進(jìn)行負(fù)載分擔(dān),共同處理。這就要求路由器在端口組的多個(gè)輸出端口間進(jìn)行流量的負(fù)載分擔(dān),均勻地分配到多臺(tái)主機(jī)上。
為了將流量更為均勻地分配到各輸出端口上,流量在端口組內(nèi)如何選取出端口是關(guān)鍵。目前的HASH算法是采用根據(jù)HASH元素計(jì)算的HASH鍵值對(duì)端口數(shù)取模得到。
例如端口組內(nèi)端口數(shù)目為256,根據(jù)IP源地址10.0.0.1、目的地址10.0.0.2采用16比特異或計(jì)算的HASH鍵值為3,對(duì)256取模后得到3,即選擇端口組內(nèi)序號(hào)為3的出端口。
這種方法的優(yōu)點(diǎn)在于簡(jiǎn)單易行,當(dāng)HASH計(jì)算的鍵值長(zhǎng)度不太長(zhǎng)時(shí),端口組數(shù)目足夠大,能均勻散列。適用于IP地址變化范圍不大,且輸出端口數(shù)目要求不多的小型系統(tǒng)。
但是,這種方法也存在著以下缺點(diǎn)1.HASH計(jì)算的鍵值長(zhǎng)度如果與端口組數(shù)目相差不大,將造成HASH結(jié)果在各HASH桶(即各端口)內(nèi)散列不開,勢(shì)必造成輸出不均勻。
2.如果需要IP地址變化范圍更大,需要增加鍵值長(zhǎng)度;為了使散列更為均勻,需要增加HASH桶數(shù)目,即增加端口數(shù)目,將造成配置頻繁改動(dòng),并增加計(jì)算HASH鍵值所需要的內(nèi)存等設(shè)備代價(jià)。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)中當(dāng)HASH計(jì)算的鍵值長(zhǎng)度與端口組數(shù)目相差不大時(shí),造成輸出不均勻以及當(dāng)需要IP地址變化大而使實(shí)現(xiàn)成本增加的問題,本發(fā)明提供一種實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,以及實(shí)現(xiàn)該方法的裝置。
本發(fā)明實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法為通過分光器將網(wǎng)絡(luò)流量引入到路由器進(jìn)行流量分解,通過ACL規(guī)則過濾后,分到服務(wù)器系統(tǒng)中,所述分解并過濾后的流量通過HASH算法分配到虛擬HASH桶,然后映射到實(shí)際端口。
所述將分解后的流量分配到虛擬HASH桶的方法為確定虛擬HASH桶的數(shù)目,將所述分解后的流量通過HASH算法分配到虛擬HASH桶。
作為確定虛擬HASH桶數(shù)目的一種優(yōu)選方案,所述虛擬HASH桶的數(shù)目大于分解后流量的數(shù)目。
作為確定虛擬HASH桶數(shù)目的一種優(yōu)選方法,根據(jù)實(shí)際端口數(shù)的倍數(shù)確定。
在網(wǎng)絡(luò)流量分流比較均勻的情況下,所述的流量從虛擬HASH桶映射到實(shí)際端口的方法為直接將虛擬HASH桶與實(shí)際端口進(jìn)行映射。
在網(wǎng)絡(luò)流量分流不均勻的情況下,所述流量從虛擬HASH桶映射到實(shí)際端口的方法為A.遍歷實(shí)際端口,尋找沒有分配流量且狀態(tài)為UP的端口,如果有,將流量分配到該端口;如果沒有,進(jìn)行步驟B;B.尋找流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口,將流量分配到該端口;在所述尋找流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口的步驟中如果發(fā)現(xiàn)有兩個(gè)或兩個(gè)以上端口流量統(tǒng)計(jì)最小且狀態(tài)為UP,將流量分配到端口速率大的端口。
如果所述各流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口速率相同,將流量分配到已分配次數(shù)少的端口。
如果所述各流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率相同的端口的分配次數(shù)相同,隨機(jī)選擇一個(gè)端口分配流量。
一種實(shí)現(xiàn)網(wǎng)絡(luò)流量均勻負(fù)載分擔(dān)的裝置,包括分光器和過濾器,該裝置還包括虛擬HASH桶,用于承載分解并過濾后的流量,所述流量通過HASH算法分配到虛擬HASH桶;實(shí)際端口,接收從虛擬HASH桶通過映射算法分配過來(lái)的流量,并將該流量交給服務(wù)器系統(tǒng)的主機(jī)進(jìn)行處理。
所述過濾器與虛擬HASH桶之間設(shè)有HASH運(yùn)算單元,用于將過濾器過濾后的流量通過HASH算法分配給虛擬HASH桶。
所述虛擬HASH桶與路由器的實(shí)際端口之間設(shè)有映射運(yùn)算單元,用于將虛擬HASH桶中的流量映射到路由器的實(shí)際端口。
本發(fā)明產(chǎn)生的有益效果是由于采用了虛擬HASH桶,而虛擬HASH桶的數(shù)目可以根據(jù)需要進(jìn)行設(shè)置且數(shù)目不限,從而使分解后的網(wǎng)絡(luò)流量可以在更多的桶中散列,如果分流比較均勻,直接將虛擬HASH桶中的流量映射到實(shí)際端口中即可;在流量分配不均勻時(shí),將流量從虛擬HASH桶映射到實(shí)際端口時(shí)盡量選擇未被使用的端口或者流量最小的端口,當(dāng)最小流量的端口有多個(gè)時(shí),選擇速率大的端口,即盡量使各端口的流量實(shí)現(xiàn)平衡,從而保證流量可以均勻地分配到實(shí)際端口。
圖1為本發(fā)明的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法的原理框圖;圖2為本發(fā)明的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的裝置的結(jié)構(gòu)示意圖;圖3為本發(fā)明的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法的一種實(shí)施方式的流程圖。
具體實(shí)施例方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)一步說明,但不作為對(duì)本發(fā)明的限定。
如圖1所示,本發(fā)明是將分解過濾后的流量通過HASH算法分配給虛擬HASH桶,然后通過映射算法將流量分配給實(shí)際端口,從而實(shí)現(xiàn)網(wǎng)絡(luò)流量的均勻負(fù)載分擔(dān)。
為了實(shí)現(xiàn)上述方法,需要建立圖2所示的裝置,該裝置包括分光器201、過濾器202、HASH運(yùn)算器203、虛擬HASH桶204、映射運(yùn)算器205和路由器的實(shí)際端口206,分光器201用于將網(wǎng)絡(luò)流量分解,過濾器202用于將分解后的流量進(jìn)行過濾,HASH運(yùn)算器203用于將過濾器202過濾后的流量通過HASH算法分配給虛擬HASH桶204,虛擬HASH桶204用于承載分解并過濾后的流量,映射運(yùn)算器205用于將虛擬HASH桶204中的流量映射到路由器的實(shí)際端口206,路由器提供實(shí)際端口,用于接收從虛擬HASH桶204映射分配過來(lái)的流量,并將該流量交給服務(wù)器系統(tǒng)的主機(jī)207進(jìn)行處理。
利用上述裝置進(jìn)行網(wǎng)絡(luò)流量均勻負(fù)載分擔(dān)的流程為首先將網(wǎng)絡(luò)流量用分光器201分解并經(jīng)過濾器202過濾,然后將流量用HASH算法分配到虛擬HASH桶204,在流量分流比較均勻時(shí),直接將虛擬HASH桶204與實(shí)際端口相對(duì)應(yīng);如果流量分流不均勻,采取以下步驟遍歷路由器的實(shí)際端口,尋找沒有分配流量的端口,如果有,則將流量分配給該端口;如果沒有,繼續(xù)尋找流量統(tǒng)計(jì)最小的端口,找到后將流量分配給該端口;如果存在多個(gè)流量統(tǒng)計(jì)最小的端口,則從這些端口中尋找端口速率最大的端口,找到后將流量分配給該端口;如果存在多個(gè)速率最大的端口,則從這些端口中尋找已分配次數(shù)最少的端口,找到后將流量分配給該端口;如果存在多個(gè)分配次數(shù)最少的端口,則隨機(jī)選擇一個(gè)端口,將流量分配給該端口,如圖3所示。上述過程中所尋找的端口均為狀態(tài)為UP的端口。
下面結(jié)合具體實(shí)施例作進(jìn)一步說明。
實(shí)施例一將網(wǎng)絡(luò)流量用分光器進(jìn)行分解并經(jīng)過濾器過濾后分配給虛擬HASH桶,虛擬HASH桶的數(shù)目為10000,實(shí)際端口的數(shù)目為100,如果此時(shí)網(wǎng)絡(luò)流量分流比較均勻,定義序號(hào)為1~100的虛擬HASH桶對(duì)應(yīng)實(shí)際端口1,序號(hào)為101~200的虛擬HASH桶對(duì)應(yīng)實(shí)際端口2,序號(hào)為201~300的虛擬HASH桶對(duì)應(yīng)實(shí)際端口3,以此類推,將虛擬HASH桶與實(shí)際端口對(duì)應(yīng)起來(lái),將分配到某個(gè)虛擬HASH桶的流量分配給與之對(duì)應(yīng)的實(shí)際端口,從而實(shí)現(xiàn)網(wǎng)絡(luò)流量的分流。由于在分解時(shí)流量就比較均勻,因此分配到實(shí)際端口后也可以保持網(wǎng)絡(luò)流量均勻負(fù)載分擔(dān)。
實(shí)施例二
假定路由器實(shí)際端口的數(shù)目為256,而HASH鍵值長(zhǎng)度為16bit,其變化范圍為0~65535,因此,如果采用實(shí)際端口作為HASH桶,勢(shì)必有多個(gè)流量落在同一端口上,數(shù)目上不均勻;而且數(shù)據(jù)包本身大小不限,因此每個(gè)端口上的流量也不均勻。
采用虛擬HASH桶,設(shè)置其數(shù)目為256×1000=256000,將分解并過濾后的65536個(gè)流量將散列開來(lái),每個(gè)虛擬HASH桶內(nèi)最多只有一個(gè)流量。將散列在256000個(gè)虛擬HASH桶內(nèi)的流量(65536個(gè))映射到實(shí)際的256個(gè)端口中去,所采用的步驟如下步驟301將網(wǎng)絡(luò)流量用分光器進(jìn)行流量分解;步驟302將分解后的網(wǎng)絡(luò)流量進(jìn)行ACL過濾;步驟303將過濾后的網(wǎng)絡(luò)流量通過HASH算法分配給虛擬HASH桶;假定某條流F采用虛擬HASH桶計(jì)算得到的HASH結(jié)果為m,每個(gè)實(shí)際端口上分配的流量數(shù)目用數(shù)組Fn[i]表示,其中0≤i≤255,每個(gè)實(shí)際端口上的實(shí)際流量用數(shù)組Fa[i]表示,其中0≤i≤255;步驟304遍歷實(shí)際端口;步驟305查找是否有分配流量Fn[i]=0,且狀態(tài)為UP的端口,如果有,執(zhí)行步驟306,否則執(zhí)行步驟307;步驟306選擇該分配流量Fn[i]=0的端口,對(duì)選中的端口,F(xiàn)n[i]++,F(xiàn)a[i]增加;步驟307尋找流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口Fa[i]min;步驟308判斷流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口是否唯一,如果是,執(zhí)行步驟309,否則執(zhí)行步驟310;步驟309選擇該流量統(tǒng)計(jì)最小的端口,對(duì)選中的端口,F(xiàn)n[i]++,F(xiàn)a[i]增加;步驟310在多個(gè)流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口中尋找端口速率最大的端口;步驟311判斷流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大的端口是否唯一,如果是,執(zhí)行步驟312,否則執(zhí)行步驟313;步驟312選擇該統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大的端口,對(duì)選中的端口,F(xiàn)n[i]++,F(xiàn)a[i]增加;
步驟313在多個(gè)流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大的端口中尋找已分配次數(shù)最小的端口Fn[i];步驟314判斷流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大且已分配次數(shù)最少的端口是否唯一,如果是,執(zhí)行步驟315,否則執(zhí)行步驟316;步驟315選擇該流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大且已分配次數(shù)最少的端口,對(duì)選中的端口,F(xiàn)n[i]++,F(xiàn)a[i]增加;步驟316從多個(gè)流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率最大且已分配次數(shù)最少的端口中隨機(jī)選擇一個(gè)端口分配流量,對(duì)選中的端口,F(xiàn)n[i]++,F(xiàn)a[i]增加。
重復(fù)步驟304~316,將每個(gè)虛擬HASH桶中的流量映射到實(shí)際端口,從而實(shí)現(xiàn)了網(wǎng)絡(luò)流量的均勻負(fù)載分擔(dān)。
權(quán)利要求
1.一種實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,通過分光器將網(wǎng)絡(luò)流量引入到路由器進(jìn)行流量分解,通過ACL規(guī)則過濾后,分到服務(wù)器系統(tǒng)中,其特征在于,所述分解并過濾后的流量通過HASH算法分配到虛擬HASH桶,然后映射到實(shí)際端口。
2.根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,所述將分解后的流量分配到虛擬HASH桶的方法為確定虛擬HASH桶的數(shù)目,將所述分解后的流量通過HASH算法分配到虛擬HASH桶。
3.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,所述確定的虛擬HASH桶的數(shù)目大于分解后流量的數(shù)目。
4.根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,所述虛擬HASH桶的數(shù)目根據(jù)實(shí)際端口數(shù)的倍數(shù)確定。
5.根據(jù)權(quán)利要求1至4之任意一項(xiàng)權(quán)利要求所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,當(dāng)流量分配均勻時(shí),所述的流量從虛擬HASH桶映射到實(shí)際端口的方法為直接將虛擬HASH桶與實(shí)際端口進(jìn)行映射。
6.根據(jù)權(quán)利要求1至4之任意一項(xiàng)權(quán)利要求所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,當(dāng)流量分配不均勻時(shí),所述流量從虛擬HASH桶映射到實(shí)際端口的方法為A.遍歷實(shí)際端口,尋找沒有分配流量且狀態(tài)為UP的端口,如果有,將流量分配到該端口;如果沒有,進(jìn)行步驟B;B.尋找流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口,將流量分配到該端口;
7.根據(jù)權(quán)利要求6所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,在所述尋找流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口的步驟中如果發(fā)現(xiàn)有兩個(gè)或兩個(gè)以上端口流量統(tǒng)計(jì)最小且狀態(tài)為UP,將流量分配到端口速率大的端口。
8.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,如果所述各流量統(tǒng)計(jì)最小且狀態(tài)為UP的端口速率相同,將流量分配到已分配次數(shù)少的端口。
9.根據(jù)權(quán)利要求8所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法,其特征在于,如果所述各流量統(tǒng)計(jì)最小且狀態(tài)為UP且速率相同的端口的分配次數(shù)相同,隨機(jī)選擇一個(gè)端口分配流量。
10.一種實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的裝置,包括分光器和過濾器,其特征在于,該裝置還包括虛擬HASH桶,用于承載分解并過濾后的流量,所述流量通過HASH算法分配到虛擬HASH桶;實(shí)際端口,接收從虛擬HASH桶通過映射算法分配過來(lái)的流量,并將該流量交給服務(wù)器系統(tǒng)的主機(jī)進(jìn)行處理。
11.根據(jù)權(quán)利要求10所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的裝置,其特征在于,所述過濾器與虛擬HASH桶之間設(shè)有HASH運(yùn)算單元,用于將過濾器過濾后的流量通過HASH算法分配給虛擬HASH桶。
12.根據(jù)權(quán)利要求10所述的實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的裝置,其特征在于,所述虛擬HASH桶與路由器的實(shí)際端口之間設(shè)有映射運(yùn)算單元,用于將虛擬HASH桶中的流量映射到路由器的實(shí)際端口。
全文摘要
本發(fā)明涉及網(wǎng)絡(luò)流量分配技術(shù),特別涉及一種實(shí)現(xiàn)網(wǎng)絡(luò)流量負(fù)載分擔(dān)的方法及實(shí)現(xiàn)該方法的裝置,屬于一種對(duì)網(wǎng)絡(luò)流量進(jìn)行分配的技術(shù)領(lǐng)域。本發(fā)明是將用分光器分解并經(jīng)過濾器過濾后的流量通過HASH算法分配給虛擬HASH桶,然后通過映射算法將流量分配給實(shí)際端口,從而實(shí)現(xiàn)網(wǎng)絡(luò)流量的均勻負(fù)載分擔(dān)。由于采用了虛擬HASH桶,而虛擬HASH桶的數(shù)目可以根據(jù)需要進(jìn)行設(shè)置且數(shù)目不限,從而使分解后的網(wǎng)絡(luò)流量可以在更多的桶中散列,在流量分配不均勻時(shí),將流量從虛擬HASH桶映射到實(shí)際端口時(shí)盡量選擇未被使用的端口或者流量小的端口,從而保證了流量可以均勻地分配到實(shí)際端口。
文檔編號(hào)H04L12/24GK101051939SQ200610087569
公開日2007年10月10日 申請(qǐng)日期2006年6月15日 優(yōu)先權(quán)日2006年6月15日
發(fā)明者雷奕康, 劉學(xué)勤 申請(qǐng)人:華為技術(shù)有限公司