專利名稱:通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊網(wǎng)絡(luò)的數(shù)據(jù)傳輸技術(shù),尤其涉及對數(shù)據(jù)流的分流方法和裝置。
背景技術(shù):
分流技術(shù)在當(dāng)前的通信網(wǎng)絡(luò)中是一種非常常見的應(yīng)用技術(shù),尤其是應(yīng)用在負(fù)載分擔(dān)和TRUNK技術(shù)中。以負(fù)載分擔(dān)為例,分流是指當(dāng)一個通信結(jié)點有多條鏈路可以到達(dá)目的地時,可以保證每一條鏈路都有數(shù)據(jù)流量經(jīng)過,而不是讓所有的流量從一條鏈路上經(jīng)過。
圖1為分流技術(shù)的一種簡單的示意圖。參見圖1,對于設(shè)備A上的數(shù)據(jù)流量,要到達(dá)設(shè)備B,可以走鏈路1,也可以走鏈路2,使用分流之后,可以保證設(shè)備A上的一部分?jǐn)?shù)據(jù)流量會經(jīng)過鏈路1,另一部分會經(jīng)過鏈路2。
現(xiàn)有的分流技術(shù)主要有以下三種現(xiàn)有技術(shù)一、逐流分流。
盡管從宏觀上來說,從設(shè)備A到設(shè)備B的報文應(yīng)該利用鏈路1和鏈路2,但對于一條數(shù)據(jù)流(在本文中所述的數(shù)據(jù)流簡稱為流)來說,一般的處理情況下,不會讓這條流的報文分走兩條不同的路徑。這是因為一條流中的報文順序應(yīng)該是得到保障的,如果流的第一個報文經(jīng)過鏈路1,第二個報文經(jīng)過鏈路2,那么設(shè)備B先收到的可能是第一個報文,也可能是第二個報文,對于很多應(yīng)用,報文的亂序是不可容忍的。因此為了不讓同一流的報文分走兩條不同的路徑,提出了逐流分流的技術(shù)。
通常,業(yè)界用一個源IP地址和目的IP地址的組合標(biāo)志一個流,為了實現(xiàn)逐流的分流,可以使用流的信息來進(jìn)行散列(HASH)計算。所述的HASH計算就是把任意長度的輸入(HASH計算源,簡稱為HASH源),通過散列算法,變換成固定長度的輸出即散列值。這種轉(zhuǎn)換是一種壓縮映射,也就是,散列值的空間通常遠(yuǎn)小于輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。在逐流分流中,可以使用流的源IP(本文中簡稱SIP)、目的IP(本文中簡稱DIP)、協(xié)議號等信息作為HASH源,根據(jù)計算得到的值來確定報文從哪個接口出去,走哪條鏈路。這樣,對于同一條流,HASH計算后得到的結(jié)果一定是相同的,不同流計算出的結(jié)果又可能是另一個值,這就保證了對于不同的流可以做到分流,而對于同一條流來說,該流的所有報文只能走一條鏈路。
逐流分流的一個可能的實現(xiàn)方案如下,以此為例進(jìn)行說明如果有4條流a,b,c,d,每條流都包含不同的SIP地址、DIP地址等特征信息,經(jīng)過HASH計算后,a算出的索引值是0(此處記做hash(a)=0),hash(b)=1,hash(c)=2,hash(d)=3,可以維護(hù)一張分流的表格,規(guī)定索引值和出接口的關(guān)系,例如表1所示
表1根據(jù)表1,可以把a,b,c,d四條流分到四條不同的鏈路,對于大量流來說,可以人為地把它們HASH計算成若干種情況(即每種流對應(yīng)不同的索引值),再通過索引值和出接口(或鏈路)的對應(yīng)表來實現(xiàn)逐流的分流。
如果使用上述逐流分流的方法,在大量隨機流的情況下,可以確保在第一次進(jìn)行分流時做到均勻。但是,在級聯(lián)分流的情況下,不能保證經(jīng)過第一次分流的流還能被第二次分流。
圖2為一種級聯(lián)分流的示意圖。參見圖2, 在A和B上某段路由都存在分流,其中A的兩個出接口分別通往B和C,B的兩個出接口分別通往D和E。假設(shè)有1000條流到達(dá)A,經(jīng)過HASH計算后有500條流算出的索引值指向通往B的鏈路,也就是發(fā)向B,同樣有500條流發(fā)向C;對于B來說,由于其HASH算法和A相同,到達(dá)的500條流還是會算出相同的索引值,因此只會從一個接口出去,這時B的分流就失效了。此種情況下,即使HASH源包含協(xié)議號等額外信息,還是會有相同結(jié)果,因為在各個結(jié)點上這些信息都是相同的,算法也是相同的。
因此傳統(tǒng)的逐流分流算法不能保證級聯(lián)后的在第二結(jié)點及后續(xù)結(jié)點的散列度。
現(xiàn)有技術(shù)二、逐流分流,但不同結(jié)點選擇不同HASH算法和HASH源。
為了解決現(xiàn)有技術(shù)一的分流不能級聯(lián)的缺陷,現(xiàn)有技術(shù)二中采用了逐流分流但不同結(jié)點選擇不同HASH源的處理方法。
此處同樣參見圖2所示的級聯(lián)分流進(jìn)行說明在A上,使用HASH算法1,這個算法使用的HASH源是SIP和DIP;在B上,如果也使用算法1,就不能進(jìn)行二次分流,因此使用算法2,選擇其他HASH源。例如SIP,DIP和協(xié)議號,由于在兩個結(jié)點上使用了不同的HASH源,因此在B上可以將流量再次分開。
上述現(xiàn)有技術(shù)二通過改變HASH源的方式來保證在不同結(jié)點上使用的算法和結(jié)果可能不同,但是這種方法增加了配置的復(fù)雜度,要求在不同的結(jié)點上配置不同HASH算法,另外,最后的計算分擔(dān)結(jié)果是否理想,依然取決于流的固有特征。使用現(xiàn)有技術(shù)二的方法,需要根據(jù)實際情況進(jìn)行規(guī)劃后進(jìn)行,效果也經(jīng)常不好;或者經(jīng)過一次配置后進(jìn)行改善,但是流量模型變化后還是不能進(jìn)行二次分流。
現(xiàn)有技術(shù)三、逐包分流。
逐包分流就是不考慮保持流的報文的順序,只根據(jù)固定的輪詢或其他方式,保證每一個包都可能到達(dá)不同的鏈路。逐包分流的一個具體的實現(xiàn)方式是,每個包的出接口取決于當(dāng)前的索引值,每次處理后都對索引值加1,就可以保證下一個包從另一個索引值對應(yīng)的接口發(fā)出去。
上述現(xiàn)有技術(shù)三的逐包分流可以做到絕對意義上的“分流”,但是前提是不需要考慮報文的順序,因此,應(yīng)用場景比較狹窄,如果在不恰當(dāng)?shù)膱鼍笆褂弥鸢至鳎瑫绊憳I(yè)務(wù)的可用性。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流方法,在不增加配置難度的情況下提高逐流分流時數(shù)據(jù)流在各結(jié)點的散列度。
本發(fā)明的另一目的在于提供一種對數(shù)據(jù)流的分流裝置,也可在不增加配置難度的情況下提高逐流分流時數(shù)據(jù)流在各結(jié)點的散列度。
為了實現(xiàn)上述發(fā)明目的,本發(fā)明的主要技術(shù)方案為一種通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流方法,該方法包括在通訊網(wǎng)絡(luò)的各結(jié)點上配置相同的散列HASH算法,配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;將經(jīng)該結(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)流的特征信息、以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息作為該數(shù)據(jù)流的HASH源,將所述數(shù)據(jù)流的HASH源輸入HASH算法進(jìn)行計算;按照數(shù)據(jù)流的HASH計算結(jié)果將該數(shù)據(jù)流分流到對應(yīng)的出接口輸出。
優(yōu)選地,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為對于不同數(shù)據(jù)流的同一跳結(jié)點,所述信息值可以不同;對于同一數(shù)據(jù)流的同一跳結(jié)點,所述信息值相同;對于同一數(shù)據(jù)流的不同跳結(jié)點,所述信息值不同。
優(yōu)選地,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流的報文生存時間TTL。
優(yōu)選地,所述通訊網(wǎng)絡(luò)為IP網(wǎng)、多協(xié)議標(biāo)簽轉(zhuǎn)發(fā)MPLS網(wǎng)、IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng)。
優(yōu)選地,所述通訊網(wǎng)絡(luò)為PIPE方式的IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng),所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流報文的IP TTL與MPLSTTL的運算值。
優(yōu)選地,所述通訊網(wǎng)絡(luò)對數(shù)據(jù)流的分流為級聯(lián)分流。
優(yōu)選地,所述作為HASH源的數(shù)據(jù)流的特征信息為源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號、標(biāo)簽、或前述具體特征信息的任意組合。
一種對數(shù)據(jù)流的分流裝置,設(shè)置在通訊網(wǎng)絡(luò)的結(jié)點上,該裝置包括提取單元,用于提取所轉(zhuǎn)發(fā)數(shù)據(jù)流的特征信息以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息;HASH算法單元,將提取單元所提取的信息作為所轉(zhuǎn)發(fā)數(shù)據(jù)流的HASH源,利用HASH算法對輸入的HASH源進(jìn)行計算,并輸出計算結(jié)果;且所述各結(jié)點HASH算法單元中具有相同的HASH算法;配置單元,用于配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;分流單元,用于根據(jù)數(shù)據(jù)流的HASH計算結(jié)果和配置單元中的對應(yīng)關(guān)系將數(shù)據(jù)流分擔(dān)到對應(yīng)的出接口輸出。
優(yōu)選的,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為對于不同的數(shù)據(jù)流,其取值可對應(yīng)不同;對于同一條流的不同跳結(jié)點,其取值對應(yīng)不同。
優(yōu)選的,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流的TTL。
優(yōu)選的,所述通訊網(wǎng)絡(luò)為IP網(wǎng)、MPLS網(wǎng)、IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng)。
優(yōu)選的,所述通訊網(wǎng)絡(luò)為PIPE方式的IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng),所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流報文的IP TTL與MPLSTTL的運算值。
優(yōu)選的,所述通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流為級聯(lián)分流。
優(yōu)選的,所述作為HASH源的數(shù)據(jù)流的特征信息為源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號,標(biāo)簽或前述具體特征信息的任意組合。
由于本發(fā)明在進(jìn)行HASH計算前,不但將經(jīng)該結(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)流的特征信息作為該數(shù)據(jù)流的HASH源,而且還將與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息作為該數(shù)據(jù)流的HASH源,并進(jìn)行HASH計算,可以得到散列度更好的計算結(jié)果,且本發(fā)明不需人工在每個結(jié)點上配置不同的HASH算法和HASH源,因此相對于現(xiàn)有技術(shù),本發(fā)明可以在不增加配置難度的情況下,不僅在各個結(jié)點提高逐流分流的散列度,而且在級聯(lián)分流情況下對于某個分支的數(shù)據(jù)流同樣可以在下一跳進(jìn)行逐流分流。
圖1為分流技術(shù)的一種簡單的示意圖;圖2為一種級聯(lián)分流的示意圖;圖3為本發(fā)明所述方法的流程圖;圖4為本發(fā)明所述分流裝置的一種實施結(jié)構(gòu)圖。
具體實施例方式
下面通過具體實施例和附圖對本發(fā)明做進(jìn)一步詳細(xì)說明。
圖3為本發(fā)明所述方法的流程圖。參見圖3,本發(fā)明的核心技術(shù)方案為一種對數(shù)據(jù)流的分流方法,該方法包括步驟301、在通訊網(wǎng)絡(luò)的各結(jié)點上配置相同的HASH算法,配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系。
具體的,可將每種HASH計算結(jié)果作為索引值,設(shè)置索引值與結(jié)點出接口的對應(yīng)關(guān)系,所述出接口可以為邏輯接口,也可以為物理接口;所述結(jié)點可以為一個物理的設(shè)備,也可以為一個設(shè)備中的邏輯結(jié)點(TRUNK方式)。
步驟302、將經(jīng)該結(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)流的特征信息、以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息作為該數(shù)據(jù)流的HASH源,將所述數(shù)據(jù)流的HASH源輸入HASH算法進(jìn)行計算。
具體的,在結(jié)點收到數(shù)據(jù)流的報文后,從報文中提取所述特征信息以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息,將其作為HASH源進(jìn)行計算。所述的HASH算法可以采用現(xiàn)有的HASH算法,例如簡單的和或運算,多項式原理算法、除以大素數(shù)求余算法等等。
步驟303、按照數(shù)據(jù)流的HASH計算結(jié)果將該數(shù)據(jù)流分擔(dān)到對應(yīng)的出接口輸出。
本發(fā)明所述作為HASH源的數(shù)據(jù)流的特征信息為可以將本數(shù)據(jù)流與其它數(shù)據(jù)流相區(qū)別的特征信息,例如源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號,標(biāo)簽(例如在MPLS網(wǎng)中為MPLS標(biāo)簽)等等,可以將這些所述特征信息單獨或者其任意組合作為HASH源輸入,例如源IP地址(SIP)和目的IP地址(DIP)。
本發(fā)明所使用的HASH源除了在現(xiàn)有技術(shù)中使用的HASH源(例如SIP、DIP)外,還加入了新的HASH源,即所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息,但該新HASH源有兩個限定條件a)為了保序,即不亂序,新加的HASH源必須同流相關(guān),對于不同的數(shù)據(jù)流的同一跳結(jié)點,其取值可對應(yīng)不同;對于同一數(shù)據(jù)流的同一跳結(jié)點,其取值相同。
b)為了避免不能級聯(lián)分流,同一條流在每一跳上這個HASH源都不同,即對于同一條流的不同跳的結(jié)點,其取值也對應(yīng)不同。
上述兩個條件缺一不可。
在本發(fā)明的最佳實施例中,采用數(shù)據(jù)報文的生存時間(TTL)字段作為所述新的HASH源。由于TTL字段設(shè)置了數(shù)據(jù)報可以經(jīng)過的最多路由器數(shù),指定了數(shù)據(jù)報的生存時間,在報文的轉(zhuǎn)發(fā)過程中,TTL逐跳減1,且不同流的TTL也可能不同,所示TTL符合上述兩個條件。因此在本最佳實施例中,將TTL作為新的HASH源。
本實施例以現(xiàn)有的SIP和DIP為HASH源的技術(shù)為基礎(chǔ),并增加了TTL作為新的HASH源進(jìn)行說明。
參見圖2所示的級聯(lián)分流結(jié)構(gòu)如果<SIP1,DIP1,TTL1>(表示由源IP,目的IP和TTL確定的第一條流在A點上的HASH源)和<SIP2,DIP2,TTL2>(表示由源IP,目的IP和TTL確定的第二條流在A點上的HASH源)在A上會HASH計算出相同的索引值,那么<SIP1,DIP1,TTL1-1>(即第一條流在B點上的HASH源)和<SIP1,DIP1,TTL2-1>(即第二條流在B點上的HASH源)在B上可能算出不同的索引值,而不會像現(xiàn)有技術(shù)那樣只能算出相同的值。由于本發(fā)明可以使新輸入的HASH源(例如TTL)與結(jié)點相關(guān),因此可以保證在任何輸入下,在每一個需要分流的結(jié)點上都能保持比較高的散列度,也就是說可以將大量的流均勻地計算成幾個固定的索引值。
以下用簡單的HASH算法來驗證本發(fā)明技術(shù)方案所能解決的技術(shù)問題。一種常用的HASH算法是對HASH源做異或操作(記做xor,0xor0=0,0xor1=1,1xor0=1,1xor1=0),使用異或的原因是,這個操作可以保證數(shù)據(jù)的每一比特都會影響計算結(jié)果。
本文中用hash(SIP,DIP,TTL)表示以SIP、DIP、和TTL為HASH源的HASH算法計算式。根據(jù)上面的例子,如果hash(SIP1,DIP1,TTL1)=hash(SIP2,DIP2,TTL2),即(SIP1 xor DIP1 xor TTL1)=(SIP2 xor DIP2 xorTTL2),由于在每一個結(jié)點上各個流的SIP和DIP都是不變的,因此,SIP1xor DIP1以及SIP2 xor DIP2的結(jié)果不會影響算法的結(jié)果,只有TTL的變化會影響最后算出的HASH結(jié)果即索引值。
Hash(SIP,DIP,TTL)與hash(SIP,DIP,TTL-1)的計算結(jié)果有以下三種可能1)Hash(SIP,DIP,TTL)等于hash(SIP,DIP,TTL-1)。這種情況下,加入TTL做HASH源沒有起作用,因為在每一個結(jié)點上加入TTL再做HASH的結(jié)果是一樣的。
2)Hash(SIP,DIP,TTL)不等于hash(SIP,DIP,TTL-1),且不同的TTL減1后再HASH計算的變化是線性的。這種情況下,加入TTL做HASH源也沒有起作用,因為TTL雖然影響了結(jié)果,但是對于所有流的TTL,影響的方式都是相同的,出現(xiàn)的結(jié)果是,盡管在第二臺分流結(jié)點上各條流計算出的HASH值(即所述索引值)不一樣,但是都只是簡單地加了一個值,例如在A結(jié)點兩條流的HASH值為3,在B結(jié)點兩條流的HASH值為2,不同的流還是沒有區(qū)分開。
3)hash(SIP,DIP,TTL)不等于hash(SIP,DIP,TTL-1),且不同的TTL減1后再HASH的變化是非線性的。這種情況下,就可以得到上面的結(jié)論即如果<SIP1,DIP1,TTL1>(表示由源IP,目的IP和TTL確定的一條流)和<SIP2,DIP2,TTL2>在A上會HASH出相同的索引值,那么<SIP1,DIP1,TTL1-1>和<SIP1,DIP1,TTL2-1>在B上可能算出不同的索引值,而且變化非線性。
由于TTL的取值范圍固定在1至255,通過遍歷實驗得到hash(SIP,DIP,TTL)和hash(SIP,DIP,TTL-1)的關(guān)系。以下是從其中摘錄的三組數(shù)據(jù)old0x01,new0x00,i0x01old0x02,new0x01,i0x02old0x03,new0x02,i0x03其中i表示TTL的值,old表示TTL減1前的hash結(jié)果,new表示TTL減1后的hash結(jié)果。
例如第一行,是指TTL=1時hash(SIP,DIP,TTL)=1,hash(SIP,DIP,TTL-1)=00,可見是不同的,觀察全部結(jié)果,除了128之外,TTL減1前后HASH的結(jié)果都是不同的,而且變化不全是線性的(局部存在線性關(guān)系)。
根據(jù)遍歷結(jié)果,hash(SIP,DIP,TTL)一般情況下不等于hash(SIP,DIP,TTL-1),且變化不一定是線性的。只有兩種特殊情況除外a)當(dāng)TTL=128時,TTL-1后HASH的值也和TTL相同,如果所有流的TTL是128,到達(dá)下一跳后,HASH出的結(jié)果和上一跳將是相同的,但是,這種情況在實際的流量下發(fā)生的概率不大,可以忽略這個影響;b)當(dāng)所有流的TTL都是奇數(shù)時,TTL-1后這些TTL的變化都是一致的,就是最低bit由1變?yōu)?,但是這種情況發(fā)生的幾率也比較小。
因此,在實際流量中,以TTL作為新的HASH源進(jìn)行分流可以使大部分流的hash(SIP,DIP,TTL)不等于hash(SIP,DIP,TTL-1),且不同的TTL減1后再HASH的變化是非線性的,因此本發(fā)明可以在級聯(lián)網(wǎng)絡(luò)中提高分流的散列度。
綜上,通過理論分析和實驗結(jié)果證明,本發(fā)明對實際流量的分流效果,尤其是在級聯(lián)網(wǎng)絡(luò)中的分流效果優(yōu)于現(xiàn)有技術(shù)的分流,即相對于現(xiàn)有技術(shù)本發(fā)明可以實現(xiàn)更好的分流散列度。
以下再用一個具體例子來描述上述方法的有益效果參見圖2,例如有兩條流P<0.0.0.1,0.0.0.2,3>(分別指源IP,目的IP和TTL)和Q<0.0.0.3,0.0.0.1,2>,在A上需要分流,例如可以用異或運算實現(xiàn)HASH計算,此時P的HASH結(jié)果hash(P)=(01 xor 10 xor 11)=00,Q的HASH結(jié)果hash(Q)=(11 xor 01 xor 10)=00,此時,這兩條流在第一跳A上HASH為同一個索引值,假設(shè)者發(fā)向結(jié)點B。
在結(jié)點B上,P和Q的TTL減1后相應(yīng)地變?yōu)镻<0.0.0.1,0.0.0.2,2>和Q<0.0.0.3,0.0.0.1,1>,hash(P)=(01 xor 10 xor 10)=01,hash(Q)=(11 xor01 xor 01)=11,此時,這兩條流在第二跳B上HASH得到的索引值就不相同,這兩條流就可能分別發(fā)向D和E,而不是固定發(fā)向一個結(jié)點。
還是以圖2為例,一般的,當(dāng)有大量的流到達(dá)A后,可能會有大約一半的流計算出相同的索引值(或者計算出不同的索引值但對應(yīng)的出接口相同),這一半的流假設(shè)都到達(dá)B,在B上如果用現(xiàn)有技術(shù)的方法一定還是算出相同的索引值(或者計算出不同的索引值但對應(yīng)的出接口相同);加入TTL作為新HASH源之后,根據(jù)上面的證明和實例,可以發(fā)現(xiàn),即使大量流在A上計算出相同的索引值,在B上也會比較均勻計算出不同的索引值,從而起到級聯(lián)分流的作用。
實現(xiàn)算法后容易驗證,在第二跳B上各個流HASH出的索引值大致均勻,散列度高。
根據(jù)上面的描述,為了保證在同一結(jié)點上不同流可以HASH出不同的結(jié)果,并以此結(jié)果進(jìn)行分流,所述TTL需具備兩個前提I)在同一結(jié)點上,不同流的TTL不同。
II)在同一結(jié)點上,同一條流的TTL相同。如果這條流始終是保序的,那其TTL應(yīng)該是相同的,如果這條流之前已經(jīng)失序,導(dǎo)致在該結(jié)點的TTL不同,那么本發(fā)明可以繼續(xù)按照上述處理方式處理,但此時不能保序。
在實際情況中,這兩個前提都有可能不被保證,但是,例外的場景情況只是少數(shù)的幾種,在大量的應(yīng)用下,TTL都可以滿足上述兩個前提。因此本發(fā)明的算法可以保證在某一結(jié)點上的分流散列度遠(yuǎn)遠(yuǎn)高于現(xiàn)有的分流方法。
由于上述實施例中使用了IP報文頭部的TTL作為新的HASH源,因此,本實施例的主要應(yīng)用場景是IP網(wǎng)絡(luò),但是對于包含類似信息的網(wǎng)絡(luò),例如多協(xié)議標(biāo)簽網(wǎng)絡(luò)(MPLS)、IP網(wǎng)絡(luò)和MPLS網(wǎng)絡(luò)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng),同樣適用本發(fā)明。所述類似信息為同流相關(guān),但逐跳不同。所述同流相關(guān),即相同的流該信息的值相同,不同的流該信息可能不相同;逐跳不同,即該信息在網(wǎng)絡(luò)上的每一跳都不同。
例如在MPLS網(wǎng)絡(luò)中,MPLS的標(biāo)簽中也包含TTL,可以利用TTL作為新的HASH源。
在IP和MPLS的混合網(wǎng)中,存在兩種處理方式第一種為UNIFORM方式即IP報文進(jìn)入MPLS域時,把IP的TTL拷到MPLS封裝中,報文離開MPLS域時,把MPLS封裝的TTL拷回IP報文(MPLS的封裝會被去掉),這樣,假設(shè)報文進(jìn)入MPLS前TTL=10,進(jìn)MPLS域后逐跳減1,例如經(jīng)過2跳減成8,離開MPLS域時,IP的TTL也變成了8,繼續(xù)逐跳減1。這種情況實際上MPLS的TTL(即MPLS TTL)和IP的TTL(IP TTL)是等同處理的,沒有什么差別,可以直接用MPLS的TTL作為新的HASH源。
第二種為PIPE方式即IP報文進(jìn)入MPLS域時,IP的TTL不變,MPLS的TTL填成255或者IP的TTL值,在MPLS域中MPLS的TTL逐跳減1,報文離開MPLS域時,直接把MPLS的封裝去掉,使用IP報文本來的TTL,繼續(xù)逐跳減1。這樣,假設(shè)報文進(jìn)入MPLS前TTL=10,進(jìn)MPLS域后MPLS的TTL變成255(其中的一種情況,以此為例)逐跳減1,例如經(jīng)過2跳減成253,離開MPLS域時,IP的TTL取原來的值再減1,也就是9,繼續(xù)逐跳減1。這種情況下MPLS的TTL和IP的TTL是不相關(guān)的,對MPLS域內(nèi)的報文來說,不管原來IP的TTL是多少,不同流的MPLS的TTL都一樣,如果直接使用MPLS的TTL作為新的HASH源,就不能達(dá)到本發(fā)明的有益效果。因此,在這種情況下,可使用IP的TTL進(jìn)行MPLS域內(nèi)的分流,或者使用MPLS的TTL與IP的TTL之間的運算結(jié)果作為新HASH源,例如可以用MPLS的TTL減去IP的TTL,將運算結(jié)果作為新HASH源,以區(qū)別不同的流。
需要說明的是,本發(fā)明中所述的結(jié)點為進(jìn)行所述HASH計算處理的最小單元,所述結(jié)點可以是指一臺設(shè)備,也可以是指在同一設(shè)備上的不同轉(zhuǎn)發(fā)結(jié)點。所述的級聯(lián)可以為不同設(shè)備(一個設(shè)備作為一個結(jié)點)之間的級聯(lián),也可以是同一設(shè)備內(nèi)不同處理結(jié)點間的級聯(lián),例如一個設(shè)備的一個結(jié)點a具有兩個邏輯出接口分別指向同一設(shè)備中的結(jié)點b和結(jié)點c,在結(jié)點b又具有4個物理出接口,那么在結(jié)點a和結(jié)點b都需使用本發(fā)明所述的HASH計算處理方法進(jìn)行分流。相對于現(xiàn)有技術(shù),可以在每個結(jié)點上實現(xiàn)散列度更高的分流。并且在每個結(jié)點上,如果輸入的流是均勻的,那么HASH出的結(jié)果也是均勻分布的,可以實現(xiàn)均勻地分流。
根據(jù)上述方法,本發(fā)明還公開了一種對數(shù)據(jù)流的分流裝置。圖4為本發(fā)明所述分流裝置的一種實施結(jié)構(gòu)圖。參見圖4,該分流裝置設(shè)置在通訊網(wǎng)絡(luò)的結(jié)點上,包括提取單元401,用于提取所轉(zhuǎn)發(fā)數(shù)據(jù)流的特征信息以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息。所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息需具備以下對于不同的數(shù)據(jù)流,其取值可對應(yīng)不同;對于同一條流的不同跳結(jié)點,其取值對應(yīng)不同。
HASH算法單元402,將提取單元401所提取的信息作為所轉(zhuǎn)發(fā)數(shù)據(jù)流的HASH源,利用HASH算法對輸入的HASH源進(jìn)行計算,并輸出計算結(jié)果;且所述各結(jié)點HASH算法單元中具有相同的HASH算法;配置單元403,用于配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;分流單元404,用于根據(jù)數(shù)據(jù)流的HASH計算結(jié)果和配置單元中的對應(yīng)關(guān)系將數(shù)據(jù)流分擔(dān)到對應(yīng)的出接口輸出。
與上述方法相同,在本分流裝置的優(yōu)選實施例中,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為對于不同的數(shù)據(jù)流,其取值可對應(yīng)不同;對于同一條流的不同跳結(jié)點,其取值對應(yīng)不同。
優(yōu)選的,所述通訊網(wǎng)絡(luò)為IP網(wǎng)、多協(xié)議標(biāo)簽轉(zhuǎn)發(fā)MPLS網(wǎng)、IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng)。所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息可以選擇所述數(shù)據(jù)流的TTL。
如果所述通訊網(wǎng)絡(luò)為IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng),且MPLS網(wǎng)絡(luò)采用PIPE方式處理TTL,則所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息可以為所述數(shù)據(jù)流報文的IP TTL與MPLS TTL的運算值。
與上述方法相同,所述HASH算法可以為異或算法,多項式原理算法、除以大素數(shù)求余算法等等。
本裝置中所述通訊網(wǎng)絡(luò)為級聯(lián)網(wǎng)絡(luò),本裝置可以設(shè)置的級聯(lián)網(wǎng)絡(luò)中的結(jié)點上,所述結(jié)點可以為一個通訊設(shè)備,或者為通訊設(shè)備中的一個以上的通訊結(jié)點。
所述作為HASH源的數(shù)據(jù)流的特征信息為源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號,標(biāo)簽(例如MPLS標(biāo)簽)或前述具體特征信息的任意組合。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流方法,其特征在于,該方法包括在通訊網(wǎng)絡(luò)的各結(jié)點上配置相同的散列HASH算法,配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;將經(jīng)該結(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)流的特征信息、以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息作為該數(shù)據(jù)流的HASH源,將所述數(shù)據(jù)流的HASH源輸入HASH算法進(jìn)行計算;按照數(shù)據(jù)流的HASH計算結(jié)果將該數(shù)據(jù)流分流到對應(yīng)的出接口輸出。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為對于不同數(shù)據(jù)流的同一跳結(jié)點,所述信息值可以不同;對于同一數(shù)據(jù)流的同一跳結(jié)點,所述信息值相同;對于同一數(shù)據(jù)流的不同跳結(jié)點,所述信息值不同。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流的報文生存時間TTL。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述通訊網(wǎng)絡(luò)為IP網(wǎng)、多協(xié)議標(biāo)簽轉(zhuǎn)發(fā)MPLS網(wǎng)、IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng)。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述通訊網(wǎng)絡(luò)為PIPE方式的IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng),所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流報文的IP TTL與MPLS TTL的運算值。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通訊網(wǎng)絡(luò)對數(shù)據(jù)流的分流為級聯(lián)分流。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述作為HASH源的數(shù)據(jù)流的特征信息為源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號、標(biāo)簽、或前述具體特征信息的任意組合。
8.一種對數(shù)據(jù)流的分流裝置,設(shè)置在通訊網(wǎng)絡(luò)的結(jié)點上,其特征在于,該裝置包括提取單元,用于提取所轉(zhuǎn)發(fā)數(shù)據(jù)流的特征信息以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息;HASH算法單元,將提取單元所提取的信息作為所轉(zhuǎn)發(fā)數(shù)據(jù)流的HASH源,利用HASH算法對輸入的HASH源進(jìn)行計算,并輸出計算結(jié)果;且所述各結(jié)點HASH算法單元中具有相同的HASH算法;配置單元,用于配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;分流單元,用于根據(jù)數(shù)據(jù)流的HASH計算結(jié)果和配置單元中的對應(yīng)關(guān)系將數(shù)據(jù)流分擔(dān)到對應(yīng)的出接口輸出。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為對于不同的數(shù)據(jù)流,其取值可對應(yīng)不同;對于同一條流的不同跳結(jié)點,其取值對應(yīng)不同。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流的TTL。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述通訊網(wǎng)絡(luò)為IP網(wǎng)、MPLS網(wǎng)、IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng)、或二層轉(zhuǎn)發(fā)網(wǎng)。
12.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述通訊網(wǎng)絡(luò)為PIPE方式的IP網(wǎng)和MPLS網(wǎng)的混合網(wǎng),所述與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息為所述數(shù)據(jù)流報文的IP TTL與MPLS TTL的運算值。
13.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述通訊網(wǎng)絡(luò)中對數(shù)據(jù)流的分流為級聯(lián)分流。
14.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述作為HASH源的數(shù)據(jù)流的特征信息為源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議號,標(biāo)簽或前述具體特征信息的任意組合。
全文摘要
本發(fā)明公開了一種對數(shù)據(jù)流的分流方法和裝置,包括提取單元、散列(HASH)算法單元、配置單元、和分流單元;在通訊網(wǎng)絡(luò)的各結(jié)點的HASH算法單元上配置相同的散列HASH算法,在配置單元中配置結(jié)點出接口與HASH計算結(jié)果的對應(yīng)關(guān)系;提取單元提取經(jīng)該結(jié)點轉(zhuǎn)發(fā)的數(shù)據(jù)流的特征信息、以及與數(shù)據(jù)流和結(jié)點具有對應(yīng)關(guān)系的信息,將提取信息作為該數(shù)據(jù)流的HASH源,將所述數(shù)據(jù)流的HASH源輸入HASH算法單元進(jìn)行計算;分流單元按照數(shù)據(jù)流的HASH計算結(jié)果將該數(shù)據(jù)流分擔(dān)到對應(yīng)的出接口輸出。本發(fā)明可以在不增加配置難度的情況下提高逐流分流時數(shù)據(jù)流在各結(jié)點的散列度。
文檔編號H04L29/06GK1984070SQ20061008330
公開日2007年6月20日 申請日期2006年5月31日 優(yōu)先權(quán)日2006年5月31日
發(fā)明者武紹蕓 申請人:華為技術(shù)有限公司