專利名稱:一種大容量組播路由表下提高組播數據轉發效率的方法
技術領域:
本發明一般涉及網絡通信技術,特別涉及一種用于減少組播PIM協議的路由表項從而提高大容量組播路由情況下的組播數據轉發效率的方法。
背景技術:
傳統的互聯網應用都是用點對點的IP傳輸(單播技術),而點對多點的IP傳輸(廣播技術)只限于局域網內部應用,組播技術則是在廣域網內實現點到多點的IP傳輸技術。
20世紀80年代,斯坦福大學的博士生Steve Deering開始了三層組播技術的研究并于1991年12月發表了其博士論文——《在一種數據報網絡里的組播》。在該論文中描述了組播組管理IGMP協議(互聯網組管理協議)和組播路由DVMRP協議(距離矢量組播路由協議)的基礎,它成功地把組播技術推進到IP層。關于IP組播技術的探索一直在進行,在Deering博士的基礎上,人們陸續完成了PIM(協議無關組播協議)等組播路由協議,把組播協議推向整個互聯網。組播路由技術的基本思想是在離接收者最近的地方才復制組播數據,所以可以大大節省大量重復數據傳輸時的網絡帶寬,因而越來越多的人相信,在今后的寬帶互聯網應用中,組播技術將成為多媒體數據通信的主要路由協議之一。
組播數據依靠組播路由表項完成轉發。在PIM-DM協議(PIM組播路由協議密集模式)中,組播路由項的表現形式都是(S,G),即,通過一個源(S)和一個組(G)組成的二元組表達組播路由的基本信息,其中S和G都是唯一的IP地址而不是一個網段。
圖1為常規組播數據轉發過程的示意圖,如圖1所示,當組播數據到達路由器的時候,路由器將根據該數據的源地址和目的組地址完成組播路由表的查找并轉發。
PIM-SM協議(PIM組播路由協議稀疏模式)相對復雜一些。對于PIM-SM協議來說,除了需有與PIM-DM協議相同的(S,G)路由表外,還有(*,G)路由表來指導數據在共享樹的轉發。PIM-SM協議中,組播數據的轉發分成兩種情況,一種是基于匯集點的組播共享樹轉發,這種轉發依靠(*,G)路由表項,一種是基于源的最短路徑樹轉發,這種轉發基于(S,G)路由表項。(*,G)路由表項與(S,G)路由表項的區別在于前者可以匹配所有的S,也就是說,不管哪一個組播源發送到組播組G的數據,都可以匹配到這條路由,但是需要指出的是,(*,G)路由是基于匯聚點的共享轉發樹建立的,不一定是組播源到組播組的最佳路徑,因此PIM-SM協議在用戶收到組播數據報文后,還有一個從共享轉發樹到最短路徑轉發樹切換的過程,切換完成后,從組播源S到組播接收者G之間的路由器都創建(S,G)路由表項。圖2為數據傳輸共享樹和最短路徑樹的示意圖。在圖2中,共享樹路徑由B-C-D表示,最短路徑樹則由A-E-D表示。因此,從圖2可以看出,組播數據從S到G沿最短路徑樹要比共享樹少經過一跳路由器。
通過以上描述,我們可以看出(S,G)表項是組播PIM協議中使用最多的組播表項,當組播用戶和組播源比較多的時候,(S,G)表項的數目也比較多,因而減少(S,G)表項的數目將大大節約路由器的內存,提高路由查找速度和數據轉發效率。
另外,組播在現階段僅處在應用的起步階段,應用較少,在實際的應用中,路由表項數目很少,因而對路由器的實際影響還看不出來,減少路由表的需求也不迫切,目前的協議中都沒有涉及這方面的描述。
從另一個方面來看,組播PIM-SM協議引入了共享樹的概念,客觀上把組播在共享樹上的路由表項數目減少了很多,在共享樹上轉發數據,對應于通一個組G的多個組播源S(S1到Sn),僅需要一條組播路由(*,G)就可以匹配。與PIM-SM協議類似,其他基于共享樹的組播協議也有類似功能。
但是,上述實現僅在組播共享樹上解決了路由數量的問題,在最短路徑樹上依舊存在大量的(S,G)路由表項,而且在實際應用中,考慮到數據轉發效率,所有的共享樹轉發都會切換成最短路徑樹轉發,因此共享樹的(*,G)表項對減少組播路由項的作用不大。
總之,在現有技術的組播路由表中存在大量的(S,G)路由表項,在組播路由多的情況下嚴重影響組播數據的轉發效率,消耗路由器的內存資源,因此為了提高組播數據的轉發效率,支持大容量的組播應用,必須減少(S,G)路由表項。
發明內容
因此,本發明就是針對解決現有技術中的上述問題而做出的,其目的是提供一種能夠減少組播PIM協議的路由表項從而提高大容量組播應用下的組播數據轉發效率的方法。
為了實現上述目的,本發明提供了一種減少組播PIM協議的路由表項從而提高大容量組播路由存在的情況下組播數據轉發效率的方法,該方法包括以下步驟1)組播路由器完成組播報文路由的創建;2)組播路由器進行組播路由聚合,生成聚合組播路由;3)當聚合完成后,從組播源發送的新的組播數據查找組播路由,使用聚合后的路由轉發。
進一步,對于PIM-SM協議,在所述的步驟1)和步驟2)之間還包括從共享樹切換到最短路徑樹的步驟。
其中,在所述步驟2)中只有組播組地址、入接口、出接口列表和標志位相同組播路由才可以聚合。
在上述步驟中,所生成的新的聚合組播路由的特征是該路由的入接口和出接口列表與原來的路由相同,各種標志位也相同,組播源源地址為聚合后的網段地址,并附帶網段信息,組播組地址不變。
其中,計算組播源地址的掩碼的方法優選地采用無差別地址掩碼編碼方法。
另外,所述步驟3)中優選地按照源地址最佳匹配原則查找組播路由。
進一步,上述步驟2)包括以下步驟2-1)檢查組播路由表,判斷是否存在多于1條的組播路由,如無,則結束聚合過程;如有則把同一組播組地址對應的組播路由找出來,進行排序,并取第一條路由為當前路由;2-2)判斷是否還存在其他路由,如不存在,則結束聚合過程,如存在,則取下一條路由,并判斷所取路由是否可以與當前路由聚合;如不可聚合,將所取路由設為當前路由,重復本步驟;如可聚合,則
2-3)對于可以聚合的路由表,生成一條新的聚合組播路由。以及2-4)判斷是否有下一條路由,如無,則結束聚合過程;如有,取下一條路由,并判斷該路由是否能和步驟2-3)中的聚合組播路由聚合;如不能,將所取路由設為當前路由,回到步驟2-2;如能則完成本路由與聚合路由的聚合,然后重復本步驟。
進一步所述步驟2-3)包括以下步驟a.計算組播源地址的掩碼;b.生成聚合路由;c.將聚合組播路由中的周期性定時器,設為聚合前路由中的周期性定時器的最小值。
更進一步,本發明所提供的減少組播PIM協議的路由表項從而提高組播數據轉發效率的方法中,還包括簡化處理加入剪枝報文的步驟4),其特征在于報文中源地址信息是路由表項聚合后的網段地址。
本發明的方法對處在最短路徑樹上的組播路由器中的(S,G)路由表項按照組播源地址S實現聚合。其有益效果在于1)組播路由的源地址是單播IP地址,而單播的IP地址分配是有規律的,一般是按照一個網段進行分配,因此,按照單播地址實現組播(S,G)路由的聚合可以大大減少路由器中的組播路由數量,減少對路由器內存的消耗;2)同時因為路由表的數量減少,路由查找效率也得到相應提高,如果采用聚合路由指導組播數據轉發,可以提高組播轉發效率。3)優化后的加入剪枝報文可以大大減少,把大容量下的組播應用的協議消耗減少到最少。
附圖的簡要說明圖1為常規組播數據轉發過程的示意圖;圖2為數據傳輸共享樹和最短路徑樹的示意圖;圖3為組播路由聚合的例子;圖4為聚合過程示意圖。
具體實施例方式
下面將結合附圖對本發明的方法進行詳細的描述。
為了實現組播路由的聚合,需要完成如下步驟1、組播路由器按照協議規定的正常流程完成組播報文路由的創建,兩個組播源S1和S2向組播組G發送組播數據。為了便于描述,在本實施例中,S1的IP地址為10.10.1.2,S2的IP地址為10.10.1.5,組播組地址G為224.2.2.2。
如果是PIM-SM協議,需要完成從共享樹切換到最短路徑樹,這樣在組播源和組播接收者之間的所有路由器都有(10.10.1.2,224.2.2.2)和(10.10.1.5,224.2.2.2)路由。
2、組播路由器啟動組播路由聚合過程,查找到同一組播組224.2.2.2的組播路由,發現有兩條組播路由到組224.2.2.2,而且這兩條路由除了源的IP地址不相同外,其他都相同,符合聚合條件,按照無差別編址方式進行聚合,生成新的組播路由(10.10.1.0/29,224.2.2.2),完成組播聚合的過程,把原來的兩條組播路由刪除(見圖3)。需要注意的是,上述組播路由中的29代表著掩碼的長度是29位,其含義等同于如下的表示方法(10.10.1.0/255.255.255.248,224.2.2.2),這表明它是一個網段的路由。
3、當聚合完成后,從源S1和S2發送的新的組播數據使用聚合后的路由完成轉發。
以上描述了本方案的實現過程,下面就其中路由聚合的實現進行具體描述。
組播(S,G)路由除了包含組播源S和組播組信息外,一般還應該包括入接口,出接口列表,標志位和一些定時器值,只有以上所述中組地址、入接口、出接口列表和標志位相同的(S,G)路由表項才可以聚合。聚合后,原來路由表項還包括許多定時器,對于其中周期性的定時器,如定時的加入剪枝報文定時器,取原來所有表項的最小的值,這樣保證處在組播轉發樹上游的路由器的表項不超時,其他定時器的取值根據實際進行分析,每個廠商可能定義自己特有的一些定時器,故剩余的定時器與每個廠商的具體實現相關。聚合后的路由需要保持原來的組播源S信息,以便路由分拆使用,在本實施例中,組播源信息以兩種推薦的方式存在于聚合后的路由中,1、雙向鏈表形式,在源比較少的情況下應用效率較高;2、Hash(哈希)表的形式,在源比較多的時候效率較高。
為完成組播路由的聚合,如圖4所示,步驟2)包括以下步驟
2-1、檢查組播路由表,判斷是否存在多于1條的組播路由,如無,則結束聚合過程;如有則把同一組播組地址對應的組播路由找出來,進行排序,并取第一條路由;2-2、判斷是否還存在其他路由,如不存在,則結束聚合過程,如存在,則取下一條路由,并按照上述標準判斷其是否可以聚合;如不可聚合,重復本步驟;如可聚合,則2-3、對于可以聚合的路由表,計算其組播源地址的掩碼,單播協議計算掩碼的方法有兩種,一種是采用無差別地址掩碼編碼(取源地址的最佳掩碼,即能包含所有IP地址的最小掩碼),一種采用自然網段聚合,前者處理比較復雜,計算量大,但路由匹配效果好,后者處理簡單,但路由匹配不精確??紤]到組播的聚合條件比單播協議嚴格,當同一自然網段的多個源S到組G的組播路由出或入接口不一致時,按照自然網段聚合法表達聚合關系比較復雜,因此優選地采用無差別地址掩碼編碼方式實現組播路由的聚合。
然后生成一條新的聚合組播路由,該路由的入接口和出接口列表與原來的路由相同,各種標志位也相同,組播源源地址為聚合后的網段地址,要附帶網段信息,組播組地址不變。然后2-4、取下一條路由,并判斷該路由是否能和步驟2-3)聚合路由聚合;如不能,則回到步驟2-2;如能回到步驟2-3。
當有組播數據到達路由器的時候,按照源地址最佳匹配原則查找組播路由(即掩碼最小),這樣做的目的是如果組播路由不能參與聚合,其源地址掩碼是32位,一定是最優的。
下面以一個實際的例子說明上面的過程假設路由器內到同一組224.1.1.1有5條組播路由如下(10.1.1.1,224.1.1.1)、(10.1.1.2,224.1.1.1)、(202.1.1.9,224.1.1.1)、(202.1.1.1,224.1.1.1)和(202.1.1.2,224.1.1.1)。
第一步,判斷是否組224.1.1.1下是否有多于1條組播路由,然后對這5條路由按照源地址IP進行排序,結果如下(10.1.1.1,224.1.1.1)、(10.1.1.2,224.1.1.1)、(202.1.1.1,224.1.1.1)、(202.1.1.2,224.1.1.1)、(202.1.1.9,224.1.1.1)。
第二步,取第一條路由(10.1.1.1,224.1.1.1),然后再取路由(10.1.1.2,224.1.1.1),判斷這兩條路由是否能聚合,為了說明我們的問題,我們假設這兩條路由能夠聚合,則生成新聚合路由(10.1.1.0/255.255.255.252,224.1.1.1),聚合路由的生成過程如下首先,比較兩條路由的入接口和出接口是否一致,如果一致,然后再比較兩條路由的標記位是否相同,如果相同,表明兩條路由能夠聚合,然后計算能包含IP地址10.1.1.1和10.1.1.2的最小網段,并檢查是否和現有的組播路由網段沖突,經過計算,網段為10.1.1.0/255.255.255.252,且與現有的組播路由沒有沖突,那么在組播路由表中生成新的組播路由(10.1.1.0/255.255.255.252,224.1.1.1),其出入接口從聚合前的路由復制,標記位也做同樣處理,最后把原來的兩條路由刪除,并把原來的源信息10.1.1.1和10.1.1.2記錄在聚合路由中,以備將來表項分裂使用。
第三步,取路由(202.1.1.1,224.1.1.1),判斷是否能和已經聚合的路由(10.1.1.0/255.255.255.252,224.1.1.1)聚合,為了說明問題,假設這個路由的標記與上面已經聚合的不一致,則該路由不能聚合。
第四步,繼續取下一條路由(202.1.1.2,224.1.1.1),判斷是否能和剛才的路由(202.1.1.1,224.1.1.1)聚合,假設能聚合,生成新的聚合路由(202.1.1.0/255.255.255.252,224.1.1.1)。
第五步,繼續取下一條路由(202.1.1.9,224.1.1.1),判斷是否可以和聚合路由(202.1.1.0/255.255.255.252,224.1.1.1)聚合,假設能夠聚合,則生成新的路由(202.1.1.0/255.255.255.240,224.1.1.1)。
第六步,查找組224.1.1.1下是否還有組播路由,沒有,本組播組的路由聚合完成。
可以看到,通過聚合,原來的5條組播路由變為2條。
在特定情況下,聚合路由會發生分裂1、已經聚合的路由收到了加入剪枝報文,使其狀態改變,不再符合聚合的條件。
2、路由器創建了新的路由項。該路由項的源地址在已經聚合組播路由范圍內,但原來的組播聚合路由并不能包括該路由。
對于情況1,因為原來的源S的信息保存在路由表項中,聚合路由以這條路由為界,分裂成兩條聚合路由,因為采用無差別地址掩碼編碼實現聚合,因此這種分裂是可以進行的,而這條引起聚合路由分裂的組播路由自己形成一條非聚合路由。
對于情況2,新生成的組播路由被已經聚合的組播路由覆蓋,但新的路由并不符合聚合條件,因此需要對原來聚合的路由進行分裂,以這條路由為界,把原來的聚合路由分裂成兩個聚合路由。
路由實現聚合后,可以對PIM-SM中的加入(join)報文進行簡化處理,按照組播協議規定,處在組播轉發樹的下游路由器要定期向上游路由器發送加入報文,加入報文是按照每個(S,G)表項構造的,因此下游路由器有很多表項的時候,發送Join報文到上游的數目也很多,嚴重影響了路由器的處理性能,但實現組播路由聚合后,可以把多個報文變為一個報文發送,減少報文發送的數量。例如聚合前,路由器有(S,G)表項100個,在每次Join報文發送的時候,需要構造100個報文發送。但如果實現聚合,100個組播路由表項變為5個聚合后的表項,因為聚合的路由之間的屬性一致,故可以向共同的上游發送加入報文,在上例中,報文中源地址信息不再是單獨的主機地址,而是一個網段地址,則相應的組播加入報文數目也減少到5個,上游路由器收到加入報文后,按照報文中的掩碼來匹配組播路由,如果能匹配,則刷新相應的組播路由,因此聚合后的join報文處理效果是明顯的。
需要注意的是,如果上游路由器不支持路由聚合,這種聚合后的報文就不能發送,還是應該按照每個(S,G)表項單獨發送Join報文。這個功能依靠手工配置完成。
加入剪枝報文的簡化可以大大提高組播協議本身的效率,減少組播協議消耗,從客觀上空閑出更多的CPU能力處理轉發事件,因而可進一步提高組播數據的轉發效率。
采用無差別的編碼方式實現路由聚合也可以實現轉發表項的簡化,對于采用軟件轉發的路由設備,聚合后的路由直接就可以指導組播數據的轉發,由于表項的減少,查找表項的耗費時間也將減少,故轉發過程的查找效率將得到提高。對于采用硬件轉發的路由器,對于的轉發表項可以從聚合后的路由生成,如果硬件平面支持掩碼的源地址查找,則這些聚合的路由表項可以直接下發到微碼,如果不支持,則可以根據聚合后表項記錄的源S地址,把對應的聚合表項轉換為獨立的(S,G)表項信息下發到微碼。
雖然以上對本發明的描述是參考其具體實施方式
來進行的,但是,這些描述不應當被認為是對本發明的限制。任何不背離本發明精神和范圍的修改和變換都屬于由附帶權利要求所定義的本發明的范圍之內。
權利要求
1.一種大容量組播路由表下提高組播數據轉發效率的方法,包括以下步驟1)組播路由器完成組播報文路由的創建;2)組播路由器進行組播路由聚合,生成聚合組播路由;以及3)當聚合完成后,從組播源發送的新的組播數據查找組播路由,使用聚合后的路由轉發。
2.根據權利要求1所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于對于PIM-SM協議,在所述的步驟1)和步驟2)之間述包括從共享樹切換到最短路徑樹的步驟。
3.根據權利要求1所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于在所述步驟2)中只有組播組地址、入接口、出接口列表和標志位相同的組播路由才可以聚合。
4.根據權利要求1、2或3所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于所生成的聚合組播路由的入接口和出接口列表中,各種標志位與原來的路由相同,組播源源地址為聚合后的網段地址,并附帶網段信息,組播組地址不變。
5.根據權利要求4所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于所述網段地址采用無差別地址掩碼編碼方法計算。
6.根據權利要求1、2或3所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于所述步驟3)按照源地址最佳匹配原則查找組播路由。
7.根據權利要求1、2或3所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于所述步驟2)包括以下步驟2-1)檢查組播路由表,判斷是否存在多于1條的組播路由,如無,則結束聚合過程;如有則把同一組播組地址對應的組播路由找出來,進行排序,并取第一條路由為當前路由;2-2)判斷是否還存在其他路由,如不存在,則結束聚合過程,如存在,則取下一條路由,并判斷所取路由是否可以與當前路由聚合;如不可聚合,將所取路由設為當前路由,重復本步驟;如可聚合,則2-3)對于可以聚合的路由表,生成一條新的聚合組播路由。以及2-4)判斷是否有下一條路由,如無,則結束聚合過程;如有,取下一條路由,并判斷該路由是否能和步驟2-3)中的聚合組播路由聚合;如不能,將所取路由設為當前路由,回到步驟2-2;如能則完成本路由與聚合路由的聚合,然后重復本步驟。
8.根據權利要求7所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于步驟2-3)包括以下步驟a.計算組播源地址的掩碼;b.生成聚合路由;c.將聚合組播路由中的周期性定時器,設為聚合前路由中的周期性定時器的最小值。
9.根據權利要求1或2所述的大容量組播路由表下提高組播數據轉發效率的方法,其特征在于還包括步驟4)將加入剪枝報文中源地址信息設置為路由表項聚合后的網段地址。
全文摘要
本發明公開了一種大容量組播路由表下提高組播數據轉發效率的方法,該方法包括以下步驟1)組播路由器完成組播報文路由的創建;2)組播路由器進行組播路由聚合,生成聚合組播路由;以及3)當聚合完成后,從組播源發送的新的組播數據查找組播路由,使用聚合后的路由轉發。本發明通過按照單播地址實現組播(S,G)路由的聚合,從而大大減少了路由器中的組播路由數量,并減少對路由器內存的消耗。同時,因為路由表的數量減少,路由查找效率也得到相應提高,如果采用聚合路由指導組播數據轉發,可以提高組播轉發效率。另外,優化后的加入剪枝報文可以大大減少,從而將大容量下的組播應用的協議消耗減少到最小。
文檔編號H04L12/24GK1595879SQ03156710
公開日2005年3月16日 申請日期2003年9月8日 優先權日2003年9月8日
發明者趙文鵬 申請人:華為技術有限公司