專利名稱:一種ip報文負載分擔實現(xiàn)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種IP報文負載分擔實現(xiàn)方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)應(yīng)用的日益普及和網(wǎng)絡(luò)規(guī)模日益龐大,Internet上需要傳送的信息量大大增加。對于路由器來說,他們需要為大量報文提供尋徑、轉(zhuǎn)發(fā)功能,此時路由器的負載能力和性能就成為必須面對的一個實際問題在網(wǎng)絡(luò)流量增大的情況下,甚至接口故障的情況下,如何能夠使路由器仍然提供可靠的高質(zhì)量的服務(wù)?其中一種可行的方法就是負載分擔。所謂的負載分擔就是到達一個給定的目的地址允許使用多條路徑的技術(shù)。這些路徑可能來源于靜態(tài)路由或者動態(tài)路由協(xié)議,一種負載分擔組網(wǎng)如圖1所示。
如圖1,用戶需要訪問遠端服務(wù)器,數(shù)據(jù)流在路由器A查詢路由表后,找到兩條路徑A-B-D和A-C-D。這時通過負載分擔處理將數(shù)據(jù)流量平均分擔到兩條路徑上,因此對于單一路徑上的流量針對于不負載分擔的情況都減少到一半,這就大大緩解了路由器B和C的承受能力。
此外,負載分擔也被使用在trunk上。trunk是將多個物理端口聚合在一起形成一個匯聚組,實現(xiàn)出、入負荷在各成員端口中的分擔,同時提供更高的連接可靠性的技術(shù)。每個trunk端口可以配置同一IP地址,即邏輯上可以被看作一個實際端口來使用,數(shù)據(jù)流通過負載分擔被平均分擔到trunk組內(nèi)的不同物理端口上,達到減少端口負荷能力的目的。典型的組網(wǎng)如圖2所示。
不難發(fā)現(xiàn),無論對于多條路由的負載分擔,還是trunk的負載分擔,要想最大可能的提高分擔鏈路的負荷能力和性能,充分利用網(wǎng)絡(luò)資源,就要盡可能的將數(shù)據(jù)流量平均的分擔到每條鏈路上,因此好的負載分擔算法的選擇則成為關(guān)鍵。
負載分擔的基本算法通常有兩種基于數(shù)據(jù)流的負載分擔和基于報文的負載分擔?;跀?shù)據(jù)流的負載分擔,是利用數(shù)據(jù)流包含的特定信息來分發(fā)報文,最常見的是路由器針對源地址&目的地址對來分發(fā)報文假設(shè)到達同一個主機有N條路徑,在目的地址相同的情況下,源地址是訪問者1地址的所有報文走第一條路,源地址是訪問者2地址的所有報文走第二條路……,依此類推,源地址是訪問者N地址的所有報文走第N條路。
對于IP報文來說,使用報文源IP地址&目的IP地址作為key進行hash處理,最簡單的hash算法是使用源IP與目的IP進行異或操作,之后將32bit長度的結(jié)果再進行多次折半異或操作,每次折半異或操作后結(jié)果長度減半,折半異或次數(shù)與最后需要獲得的hash結(jié)果位長有關(guān),例如需要獲得4bit的hash結(jié)果,那么需要折半異或3次。最后將hash結(jié)果作為分擔鏈路標識選擇對應(yīng)的負載分擔鏈路轉(zhuǎn)發(fā)報文。
上述分擔算法簡單描述如下key1=源IP地址,key2=目的IP地址,key1 XOR key2=key’,key’_H16 XOR key’_L16=key”,key”_H8 XOR key”_L8=key,key_H4 XOR key_L4=key””,key””低4bit作為hash的最后結(jié)果上述操作詳細流程如圖3所示,對于給定的源地址和目的地址對即使有多條可用路徑也只能選擇同一條路徑。若只有一條流則只會走一條分擔鏈路,根本無法進行負載分擔。在實際環(huán)境中,到達各個目的地址的流量可能相差很多,到達某個目的地址的報文又總是選擇同一條路徑,這種工作方式可能會導(dǎo)致負載分擔不均衡。
基于報文的負載分擔就是說路由器將目的地址是A的一個報文從第一條路徑發(fā)送,目的地址是A(目的地址相同)的第二個報文從第二條路徑發(fā)送。
基于報文的負載分擔算法實現(xiàn)思想是為每條需要進行負載分擔的路由或trunk接口分配一個計數(shù)器,每收到一個報文,將對應(yīng)的計數(shù)器加1,根據(jù)計數(shù)器值輪詢各條對應(yīng)的分擔路徑,按順序從相應(yīng)分擔路徑轉(zhuǎn)發(fā)報文,以達到負載分擔效果。
此種方法的缺點是需要為每條需要進行負載分擔的路由或trunk接口都分配一個計數(shù)器,路由器上往往會存在大量路由,這樣會導(dǎo)致要分配管理大量計數(shù)器,造成存儲資源的嚴重浪費。此外,對計數(shù)器的頻繁操作也會大量占用存儲器訪問帶寬,影響轉(zhuǎn)發(fā)性能。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種IP報文負載分擔實現(xiàn)方法及裝置,解決了基于數(shù)據(jù)流的負載分擔算法的分擔不均衡問題及基于報文的負載分擔算法的存儲資源的嚴重浪費和影響轉(zhuǎn)發(fā)性能問題。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的一種IP報文負載分擔實現(xiàn)方法,包括在基于數(shù)據(jù)流的負載分擔hash計算中引入唯一標識一份報文的標識字段作為key,獲得負載分擔路徑來轉(zhuǎn)發(fā)IP報文。
所述方法具體包括
利用報文源IP地址、目的IP地址及唯一標識一份報文的標識字段作為基于數(shù)據(jù)流的負載分擔hash計算中的key,獲得與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果;將所述結(jié)果作為索引,查找對應(yīng)的負載分擔路徑;利用所述查找到的路徑轉(zhuǎn)發(fā)IP報文。
所述利用標識字段作為key在進行hash計算時,所述標識字段僅與相同位數(shù)的hash計算結(jié)果進行相應(yīng)的hash操作。
所述標識字段在每發(fā)送一份報文時,其值加1。
所述標識字段為報文頭部中的標識信息。
一種IP報文負載分擔實現(xiàn)裝置,包括標識字段獲取模塊,用于獲取報文中唯一標識一份報文的標識字段;負載分擔計算模塊,用于將報文源IP地址、目的IP地址及標識字段作為key獲得負載分擔路徑轉(zhuǎn)發(fā)報文。
所述裝置進一步包括報文轉(zhuǎn)發(fā)模塊,用于根據(jù)負載分擔計算模塊獲得的負載分擔路徑轉(zhuǎn)發(fā)報文。
所述負載分擔計算模塊進一步包括負載分擔hash計算子模塊,用于將報文源IP地址、目的IP地址及標識字段作為key進行hash計算操作,得到與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果;負載分擔路徑查找子模塊,用于將所述hash算法操作獲得的結(jié)果作為索引查找對應(yīng)的負載分擔路徑。
所述裝置設(shè)置于路由器中。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明由于在基于數(shù)據(jù)流的分擔hash算法中引入了IP報文的唯一標識,相當于引入了基于報文的負載分擔算法的特點,即當同一條數(shù)據(jù)流,報文源地址和目的地址均不變的情況下,hash結(jié)果也會根據(jù)報文攜帶的16位標識不同而不斷變化,使相同數(shù)據(jù)流的報文也能夠均衡的分擔到全部分擔鏈路上。同時,由于使用報文自己攜帶的標識,而不用再為每條需要進行負載分擔的路由或trunk接口都分配計數(shù)器,大大減少了存儲資源的浪費,也不會因為頻繁訪問存儲器影響轉(zhuǎn)發(fā)性能。
因此本發(fā)明實現(xiàn)了綜合基于數(shù)據(jù)流負載分擔算法和基于報文的負載分擔算法的優(yōu)點,對于多條數(shù)據(jù)流和單條數(shù)據(jù)流的情況都可以使報文能夠均衡的分擔到全部分擔鏈路上。且算法實現(xiàn)簡單,也不會占用和訪問大量存儲空間,對轉(zhuǎn)發(fā)性能沒有影響。
圖1為現(xiàn)有技術(shù)負載分擔組網(wǎng)示意圖;圖2為現(xiàn)有技術(shù)trunk組網(wǎng)示意圖;圖3為現(xiàn)有技術(shù)逐流hash算法實現(xiàn)流程圖;圖4為IP數(shù)據(jù)報格式及首部中的各字段;圖5為本發(fā)明所述方法一種實施例操作流程圖;圖6為本發(fā)明所述裝置一種實施例模塊示意圖。
具體實施例方式
本發(fā)明的核心思想是提供一種IP報文負載分擔實現(xiàn)方法及裝置,綜合基于數(shù)據(jù)流和基于報文的負載分擔算法,在進行hash計算時引入IP報文頭部中唯一標識一份數(shù)據(jù)報的16位標識信息,對于多條數(shù)據(jù)流或單條數(shù)據(jù)流的情況都可以使報文均衡的分擔到全部分擔鏈路上。
所述IP數(shù)據(jù)報格式及首部中的各字段如圖4所示,各字段說明如下版本表示IP協(xié)議的版本,通常有4和6兩種,圖4是IPV4報文格式。
首部長度表示IP首部占32bit字的數(shù)目,包括可能的選項部分。
服務(wù)類型包括一個3bit的優(yōu)先級子字段,4bit的TOS(服務(wù)類型)子字段和1bit未用位,但必須置0。4bit的TOS分別代表最小時延、最大吞吐量、最高可靠性和最小費用。
總長度指整個IP數(shù)據(jù)報的長度,以字節(jié)為單位。
標識字段唯一地標識主機發(fā)送的每一份數(shù)據(jù)報,也就是下文中用到的16位標識字段。
片偏移當報文需要分片時,標識該片偏移原始數(shù)據(jù)報開始處的位置。
生存時間設(shè)置了數(shù)據(jù)報可以經(jīng)過的最多路由器數(shù),它指定了數(shù)據(jù)報的生存時間。
協(xié)議標識以此IP報文承載的高層協(xié)議類型。
首部檢驗和是根據(jù)IP首部計算的檢驗和碼。它不對首部后面的數(shù)據(jù)進行計算。
源IP地址和目的IP地址標識報文發(fā)出的起始地址和最終到達的目的地址。
任選項是數(shù)據(jù)報中的一個可變長的可選信息,這些選項很少被使用,并非所有的主機和路由器都支持這些選項。
16位標識字段唯一地標識主機發(fā)送的每一份數(shù)據(jù)報。通常每發(fā)送一份報文此標識字段的值就會加1。此標識最初是用于在IP報文分片時,在目的地通過相同標識來確定相同報文進行分片重組使用的。
此處利用該標識唯一標識每一個報文的特點,代替基于報文的負載分擔的分配計數(shù)器使用,將該標識與報文源IP地址和目的IP地址共同作為hash算法的key,重新改進hash算法,最簡單的方法可以仍然為異或操作,例如key1=源IP地址,key2=目的IP地址,
key3=16位標識,key1 XOR key2=key’,key’_H16 XOR key’_L16 XOR key3=key”,key”_H8 XOR key”_L8=key,key_H4 XOR key_L4=key””,key””低4bit作為hash的最后結(jié)果。最后將hash結(jié)果作為分擔鏈路標識,選擇對應(yīng)的負載分擔鏈路轉(zhuǎn)發(fā)報文。
本發(fā)明所述方法一種實施例操作流程如圖5所示,假設(shè)負載分擔路徑共16條,則在得到4位長度結(jié)果時,即為最終的結(jié)果。具體操作步驟如下步驟1取報文源IP地址作為HASH_key1,取報文目的地址作為HASH_key2,取報文16位標識作為HASH_key3;路由器接收到報文后,在分配路由前,為了實現(xiàn)負載分擔,需要進行負載分擔計算,首先獲取報文文源IP地址及目的地址。取報文源IP地址作為HASH_key1,取報文目的地址作為HASH_key2,同時取報文頭部唯一標識所述報文的16位標識作為HASH_key3;步驟2將HASH_key1與HASH_key2進行異或操作,得到32位長度的結(jié)果作為HASH_key’;一般報文的源IP地址及目的IP地址均為32位,在進行hash算法時,由于HASH_key3為16位的字段,所以第一次執(zhí)行的異或操作為HASH_key1與HASH_key2進行異或操作,得到一個32位長度的結(jié)果,記作HASH_key’;步驟3取HASH_key’的高16位數(shù)據(jù)與低16位數(shù)據(jù)進行異或操作,得到16位長度結(jié)果,再次與HASH_key3進行異或操作,得到16位長度結(jié)果作為HASH_key”;將上述HASH_key1與HASH_key2進行異或操作得到的32位長度結(jié)果HASH_key’的高16位數(shù)據(jù)與低16位數(shù)據(jù)進行異或操作,得到16位長度結(jié)果,由于HASH_key3為16位的字段,因此將所述得到的16位長度結(jié)果再次與HASH_key3進行異或操作,得到另一個16位長度結(jié)果,記作HASH_key”;步驟4取HASH_key”的高8位數(shù)據(jù)與低8位數(shù)據(jù)進行異或操作,得到8位長度結(jié)果作為HASH_key;步驟5取HASH_key的高4位數(shù)據(jù)與低4位數(shù)據(jù)進行異或操作,得到4位長度結(jié)果作為HASH_key””,這是hash的最終結(jié)果;由于負載分擔路徑一共16條,因此得到的4位長度的結(jié)果即為最終結(jié)果;步驟6將所述HASH_key””的值作為索引,在該條路由對應(yīng)的分擔鏈路表中查找對應(yīng)的負載分擔路徑,利用查找到的路徑進行報文的轉(zhuǎn)發(fā)。
本發(fā)明提供一種IP報文負載分擔實現(xiàn)裝置,所述裝置設(shè)置于路由器中,其一種實施例模塊示意圖如圖6所示,包括標識字段獲取模塊、負載分擔計算模塊及報文轉(zhuǎn)發(fā)模塊。
所述標識字段獲取模塊,用于獲取報文中唯一標識一份報文的標識字段。
所述負載分擔計算模塊,用于將報文源IP地址、目的IP地址及標識字段作為key獲得負載分擔路徑。該模塊進一步包括負載分擔hash計算子模塊,用于將報文源IP地址、目的IP地址及標識字段作為key進行hash計算操作,得到與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果。
負載分擔路徑查找子模塊,用于將所述hasn算法操作獲得的結(jié)果作為索引查找對應(yīng)的負載分擔路徑。
所述報文轉(zhuǎn)發(fā)模塊,用于根據(jù)所述獲得的負載分擔路徑轉(zhuǎn)發(fā)報文。
綜上所述,本發(fā)明所述方法由于在基于數(shù)據(jù)流的分擔hash算法中引入了IP報文的唯一標識,相當于引入了基于報文的負載分擔算法的特點,即當同一條數(shù)據(jù)流,報文源地址和目的地址均不變的情況下,hash結(jié)果也會根據(jù)報文攜帶的16位標識不同而不斷變化,使相同數(shù)據(jù)流的報文也能夠均衡的分擔到全部分擔鏈路上。同時,由于使用報文自己攜帶的標識,而不用再為每條需要進行負載分擔的路由或trunk接口都分配計數(shù)器,大大減少了存儲資源的浪費,也不會因為頻繁訪問存儲器影響轉(zhuǎn)發(fā)性能。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)該以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種IP報文負載分擔實現(xiàn)方法,其特征在于,包括在基于數(shù)據(jù)流的負載分擔hash計算中引入唯一標識一份報文的標識字段作為key,獲得負載分擔路徑來轉(zhuǎn)發(fā)IP報文。
2.如權(quán)利要求1所述的一種IP報文負載分擔實現(xiàn)方法,其特征在于,所述方法具體包括利用報文源IP地址、目的IP地址及唯一標識一份報文的標識字段作為基于數(shù)據(jù)流的負載分擔hash計算中的key,獲得與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果;將所述結(jié)果作為索引,查找對應(yīng)的負載分擔路徑;利用所述查找到的路徑轉(zhuǎn)發(fā)IP報文。
3.如權(quán)利要求1所述的一種IP報文負載分擔實現(xiàn)方法,其特征在于,所述利用標識字段作為key在進行hash計算時,所述標識字段僅與相同位數(shù)的hash計算結(jié)果進行相應(yīng)的hash操作。
4.如權(quán)利要求1所述的一種IP報文負載分擔實現(xiàn)方法,其特征在于,所述標識字段在每發(fā)送一份報文時,其值加1。
5.如權(quán)利要求1至4中任一項所述的一種IP報文負載分擔實現(xiàn)方法,其特征在于,所述標識字段為報文頭部中的標識信息。
6.一種IP報文負載分擔實現(xiàn)裝置,其特征在于,包括標識字段獲取模塊,用于獲取報文中唯一標識一份報文的標識字段;負載分擔計算模塊,用于將報文源IP地址、目的IP地址及標識字段作為key獲得負載分擔路徑轉(zhuǎn)發(fā)報文。
7.如權(quán)利要求6所述的一種IP報文負載分擔實現(xiàn)裝置,其特征在于,所述裝置進一步包括報文轉(zhuǎn)發(fā)模塊,用于根據(jù)負載分擔計算模塊獲得的負載分擔路徑轉(zhuǎn)發(fā)報文。
8.如權(quán)利要求6所述的一種IP報文負載分擔實現(xiàn)裝置,其特征在于,所述負載分擔計算模塊進一步包括負載分擔hash計算子模塊,用于將報文源IP地址、目的IP地址及標識字段作為key進行hash計算操作,得到與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果;負載分擔路徑查找子模塊,用于將所述hash算法操作獲得的結(jié)果作為索引查找對應(yīng)的負載分擔路徑。
9.如權(quán)利要求6至8中任一項所述的一種IP報文負載分擔實現(xiàn)裝置,其特征在于,所述裝置設(shè)置于路由器中。
全文摘要
本發(fā)明涉及通信技術(shù)領(lǐng)域中一種IP報文負載分擔實現(xiàn)方法及裝置,所述方法包括利用報文源IP地址、目的IP地址及唯一標識一份報文的標識字段作為基于數(shù)據(jù)流的負載分擔hash算法中的key,獲得與負載分擔路徑數(shù)量相關(guān)位數(shù)的結(jié)果;將所述結(jié)果作為索引,查找對應(yīng)的負載分擔路徑;利用所述查找到的路徑轉(zhuǎn)發(fā)IP報文。本發(fā)明實現(xiàn)了綜合基于數(shù)據(jù)流負載分擔算法和基于報文的負載分擔算法的優(yōu)點,對于多條數(shù)據(jù)流和單條數(shù)據(jù)流的情況都可以使報文能夠均衡的分擔到全部分擔鏈路上。且算法實現(xiàn)簡單,也不會占用和訪問大量存儲空間,不會影響轉(zhuǎn)發(fā)性能。
文檔編號H04L12/56GK1913454SQ20061011199
公開日2007年2月14日 申請日期2006年8月30日 優(yōu)先權(quán)日2006年8月30日
發(fā)明者俞致偉 申請人:華為技術(shù)有限公司