專利名稱:組播轉(zhuǎn)發(fā)路由聚合方法
技術(shù)領(lǐng)域:
本發(fā)明涉及IP網(wǎng)絡(luò)組播領(lǐng)域,尤其是涉及一種在有線和無線等IP通信系統(tǒng)中實現(xiàn)IP組播時對組播轉(zhuǎn)發(fā)路由進(jìn)行聚合的方法。
背景技術(shù):
當(dāng)前,IP組播技術(shù)能有效地解決單點發(fā)送多點接收的問題,可實現(xiàn)IP網(wǎng)絡(luò)中點到多點的高效數(shù)據(jù)傳送,能夠大量節(jié)約網(wǎng)絡(luò)帶寬、降低網(wǎng)絡(luò)負(fù)載。作為一種與單播、廣播并列的通信方式,組播的意義不僅在于此。更重要的是,它可以借助網(wǎng)絡(luò)的組播特性方便地提供一些新的增值業(yè)務(wù),包括在線直播、網(wǎng)絡(luò)電視、遠(yuǎn)程教育、遠(yuǎn)程醫(yī)療、網(wǎng)絡(luò)電臺、實時視頻會議等互聯(lián)網(wǎng)的信息服務(wù)領(lǐng)域。由于IP組播的上述特性,使其在有線網(wǎng)絡(luò)和無線網(wǎng)絡(luò)領(lǐng)域都有巨大的應(yīng)用前景。
但是,現(xiàn)有的組播路由管理中存在如下問題A、由于組播應(yīng)用越來越廣泛,從而導(dǎo)致所需的組播路由表越來越大。組播路由容量需求的增加將導(dǎo)致對系統(tǒng)內(nèi)存的需求增加,同時也會導(dǎo)致路由同步負(fù)擔(dān)的增加。
B、此外,組播應(yīng)用的業(yè)務(wù)類型主要是視頻,音頻等大流量業(yè)務(wù),且往往具有實時性要求。為能夠提供良好的組播業(yè)務(wù)服務(wù),組播轉(zhuǎn)發(fā)趨向于采用硬件轉(zhuǎn)發(fā)模式。組播硬件轉(zhuǎn)發(fā)時為實現(xiàn)跨轉(zhuǎn)發(fā)板的快速轉(zhuǎn)發(fā),通常采用以下方法入接口板上的每一條組播路由條目和出接口板上對應(yīng)于該組播路由條目,分配全局有效且唯一的索引index,index表示該路由條目在組播路由表中的位置;當(dāng)入接口板收到組播數(shù)據(jù)報文時,查詢該轉(zhuǎn)發(fā)板上的組播路由表獲得index,從而獲得該組播路由條目在出接口板的位置;當(dāng)組播數(shù)據(jù)通過出接口板向外轉(zhuǎn)發(fā)時,就不再需要查詢位于出接口板上的組播路由表而是通過index直接定位組播路由條目而獲得轉(zhuǎn)發(fā)出接口。從上述描述可以看出,這種采用硬件的組播轉(zhuǎn)發(fā)方式可以減小一次查找組播路由的時間,從而提高轉(zhuǎn)發(fā)效率。但是,由于當(dāng)前硬件芯片支持的index的數(shù)目是有限的,如果采用上述方法,Index的數(shù)目會限制系統(tǒng)所能支持的組播路由條目容量。目前的組播硬件轉(zhuǎn)發(fā)芯片的index容量一般為幾K個,有的芯片甚至只能提供幾百個index,這樣會使得系統(tǒng)能夠支持的組播路由條目最多只有103。目前組播業(yè)務(wù)的發(fā)展要求系統(tǒng)組播路由容量在105以上,因此組播的硬件轉(zhuǎn)發(fā)方式和組播所需要的大容量支持已成為一對矛盾。
C、由于組播的應(yīng)用越來越廣泛,各種IP網(wǎng)絡(luò)通訊設(shè)備都需要支持組播,但是不同的組播網(wǎng)絡(luò)設(shè)備,而所用轉(zhuǎn)發(fā)芯片往往是不同的。此外,組播的應(yīng)用環(huán)境也不同,在路由環(huán)境下組播路由條目的出接口是IP端口,組播數(shù)據(jù)根據(jù)三層IP端口轉(zhuǎn)發(fā);但是在交換環(huán)境中,IP端口對應(yīng)的是VLAN端口,而轉(zhuǎn)發(fā)端口對應(yīng)的是實際物理接口。為防止組播數(shù)據(jù)流的擴散,在交換環(huán)境中,通過igmpsnooping和pimsnooping等協(xié)議為以VLAN轉(zhuǎn)發(fā)端口的IP組播路由條目進(jìn)一步確定需要轉(zhuǎn)發(fā)的物理端口,因此在交換環(huán)境中,用于組播數(shù)據(jù)轉(zhuǎn)發(fā)的路由條目的出接口列表與路由環(huán)境中的組播路由條目出接口表是不同的,接入環(huán)境下如寬帶遠(yuǎn)程接入服務(wù)器(BRAS)和數(shù)字用戶線接入復(fù)用器(DSLAM)為實現(xiàn)組播的端口復(fù)制也需要提供組播路由聚合的跨平臺支持。所以,這將導(dǎo)致組播路由的轉(zhuǎn)發(fā)信息和路由表構(gòu)造也不同,從而index所要標(biāo)識的含義也不完全相同,不便于跨平臺操作。
發(fā)明內(nèi)容
本發(fā)明需要解決的技術(shù)問題是提供一種組播轉(zhuǎn)發(fā)路由聚合方法,采用本方法,不僅能降低組播路由占用的內(nèi)存空間數(shù)量,減少組播協(xié)議和組播轉(zhuǎn)發(fā)間的同步消息量,而且還能夠?qū)⒋笕萘康慕M播轉(zhuǎn)發(fā)路由聚合成當(dāng)前硬件芯片容量可支持的組播轉(zhuǎn)發(fā)路由,由此提高跨板組播轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)效率。
為了解決上述技術(shù)問題,本發(fā)明提供了一種組播轉(zhuǎn)發(fā)路由聚合方法,包括如下步驟(a)協(xié)議層產(chǎn)生由若干組播路由條目構(gòu)成的組播轉(zhuǎn)發(fā)路由表,其中所述組播路由條目包括有組播源地址、組播組地址、組播路由操作標(biāo)志、組播入接口和索引index等字段,index為全局有效且唯一,表征出接口列表,對于出接口列表相同的組播路由條目,index相同;(b)協(xié)議層產(chǎn)生索引index與其代表的出接口列表的映射關(guān)系;(c)轉(zhuǎn)發(fā)層產(chǎn)生若干與各自接口板對應(yīng)的、由全局有效的索引index與本接口板上有效出接口之間映射關(guān)系構(gòu)成的index局部出接口映射表;(d)轉(zhuǎn)發(fā)層根據(jù)所接收組播數(shù)據(jù)報文的源地址和組播組地址,查詢所述組播轉(zhuǎn)發(fā)路由表獲得索引index,然后將組播數(shù)據(jù)報文發(fā)送至根據(jù)索引index確定的相應(yīng)出接口板;該出接口板接收到組播數(shù)據(jù)報文后,查詢本板上的index局部出接口映射表而獲得本板有效出接口,并將該組播數(shù)據(jù)報文轉(zhuǎn)發(fā)。
進(jìn)一步地,本發(fā)明還具有如下特點所述組播路由條目還包括有表征當(dāng)前索引index變化前的原有索引old_index字段,該old_index字段與index字段的結(jié)構(gòu)和長度相同;所述索引index字段和old_index字段均包括有表示出接口列表的完整信息和表示出接口列表的板信息位圖的兩部分內(nèi)容。
進(jìn)一步地,本發(fā)明還具有如下特點所述協(xié)議層生成組播轉(zhuǎn)發(fā)路由表的操作包括有增加、刪除組播路由條目的操作和出接口列表發(fā)生變化時的處理操作。
進(jìn)一步地,本發(fā)明還具有如下特點,所述增加組播路由條目的操作包括如下步驟(A1)協(xié)議層接收包括有出接口列表字段的共享樹組播路由條目;(A2)判斷當(dāng)前組播轉(zhuǎn)發(fā)路由表中的index是否存在著與該共享樹組播路由條目的出接口列表字段相同的出接口列表映射關(guān)系,若有,則將該index添加至此共享樹組播路由條目,然后將該共享樹組播路由條目中的出接口列表字段去除,從而生成組播路由條目且加入組播轉(zhuǎn)發(fā)路由表,否則分配新的index至此共享樹組播路由條目,然后將該共享樹組播路由條目中的出接口列表字段去除,生成組播路由條目且加入至組播轉(zhuǎn)發(fā)路由表;(A3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
進(jìn)一步地,本發(fā)明還具有如下特點,所述刪除組播路由條目的操作包括如下步驟(B1)協(xié)議層刪除某個組播路由條目;(B2)協(xié)議層判斷所刪除的組播路由條目中index字段當(dāng)前是否為多個組播路由條目引用,若是,則將該index的引用次數(shù)減1,否則將該index釋放回index池,并刪除此index與出接口列表的映射關(guān)系;(B3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
進(jìn)一步地,本發(fā)明還具有如下特點,所述出接口列表發(fā)生變化時的處理操作包括如下步驟(C1)協(xié)議層判斷出接口列表發(fā)生變化的組播路由條目的index字段當(dāng)前是否為多個組播路由條目引用,若是,則將該index的引用次數(shù)減1,否則將該index釋放回index池,并刪除此index與出接口列表的映射關(guān)系;(C2)將處理后的index填充至該組播路由條目的old_index字段,并且協(xié)議層根據(jù)變化后的出接口列表分配與之相對應(yīng)的index,同時將該重新分配的index填充至原組播路由條目的index字段;(C3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
進(jìn)一步地,本發(fā)明還具有如下特點,轉(zhuǎn)發(fā)層更新各接口板上的Index局部出接口映射表的步驟包括(E1)轉(zhuǎn)發(fā)層接收到的協(xié)議層同步的組播路由條目,并且根據(jù)該組播路由條目中組播路由操作標(biāo)志的index位進(jìn)行判斷,若該標(biāo)志位表示增加,則執(zhí)行步驟(E4),若表示刪除,則執(zhí)行步驟(E2),若表示變化,則執(zhí)行步驟(E3);(E2)根據(jù)同步的組播路由條目中的index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該index字段相同的index和出接口列表之間映射關(guān)系刪除,執(zhí)行步驟(E6);(E3)根據(jù)同步的組播路由條目中的old_index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該old_index字段相同的index和出接口列表之間映射關(guān)系刪除;(E4)轉(zhuǎn)發(fā)層接收協(xié)議層同步下來的index與出接口映射關(guān)系;
(E5)轉(zhuǎn)發(fā)層將不屬于本接口板的接口從index與出接口映射關(guān)系中刪除,從而形成index與本板有效出接口之間的映射關(guān)系。并且利用這些映射關(guān)系更新index局部出接口映射表;(E6)結(jié)束。
進(jìn)一步地,本發(fā)明還具有如下特點所述index分配的決定因素包括應(yīng)用環(huán)境因素,當(dāng)應(yīng)用環(huán)境為路由環(huán)境時,index的分配只與組播路由的三層出接口相關(guān);當(dāng)應(yīng)用環(huán)境為交換環(huán)境和接入環(huán)境時,index的分配同時取決于組播路由的三層出接口和二層出接口;對沒有三層出接口的設(shè)備設(shè)置一個虛擬三層出接口號。
進(jìn)一步地,本發(fā)明還具有如下特點對于每一個使用中的index均設(shè)置有引用計數(shù)器,用于表示引用該index的組播路由條目數(shù);當(dāng)index池中的index分配完畢后,若還有組播路由條目申請分配index,則通知協(xié)議層在周期T內(nèi)不再向下同步該組播路由條目。
進(jìn)一步地,本發(fā)明還具有如下特點所述步驟(d)中如果由index確定的入接口板與出接口板不一致,需要將組播數(shù)據(jù)報文跨板傳送時,則必須將index附帶至組播數(shù)據(jù)報文中,一并傳送至出接口板。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點A、由于采用全局有效且唯一的index代替現(xiàn)有組播路由條目中的出接口列表,并且對于出接口列表相同的組播路由條目,分配相同的index,從而大大節(jié)省組播路由占用的內(nèi)存空間,同時也減少組播協(xié)議和組播轉(zhuǎn)發(fā)間的同步消息量;B、由于本發(fā)明中的index不標(biāo)識具體的組播路由條目,只是用來標(biāo)識不同的出接口列表,而不同組播路由條目的出接口列表的相似性和重疊性能夠節(jié)省大量的index,因此能夠?qū)⒋笕萘康慕M播轉(zhuǎn)發(fā)路由聚合成當(dāng)前硬件芯片容量可支持的組播轉(zhuǎn)發(fā)路由,并且由此能提高跨板組播轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)效率;C、本發(fā)明還針對組播路由的不同應(yīng)用環(huán)境設(shè)計有相應(yīng)的index分配規(guī)則,使得本發(fā)明具有跨平臺性。
圖1是本發(fā)明在組播路由系統(tǒng)中的位置示意圖;圖2是本發(fā)明處理方法組成示意圖;圖3是本發(fā)明中組播路由條目與傳統(tǒng)組播路由條目之間的區(qū)別示意圖;圖4是本發(fā)明中基于Index的組播轉(zhuǎn)發(fā)處理說明簡圖(以正常轉(zhuǎn)發(fā)為例);圖5是采用本發(fā)明進(jìn)行組播轉(zhuǎn)發(fā)路由聚合時路由增加的協(xié)議層處理流程圖;圖6是采用本發(fā)明進(jìn)行組播轉(zhuǎn)發(fā)路由聚合時路由刪除的協(xié)議層處理流程圖;圖7是采用本發(fā)明進(jìn)行組播轉(zhuǎn)發(fā)路由聚合時出接口變化的協(xié)議層處理流程圖;圖8是采用本發(fā)明進(jìn)行組播轉(zhuǎn)發(fā)路由聚合時路由轉(zhuǎn)發(fā)層處理流程。
具體實施例方式
為深入了解本發(fā)明,下面結(jié)合附圖及具體實施例對本發(fā)明進(jìn)行詳細(xì)說明。
如圖1所示,本發(fā)明由組播路由聚合模塊實現(xiàn)。該模塊嵌入在傳統(tǒng)的組播路由處理模塊中,用于實現(xiàn)組播轉(zhuǎn)發(fā)路由的聚合,需要在組播轉(zhuǎn)發(fā)層、組播協(xié)議層都設(shè)有相應(yīng)的處理模塊。組播路由聚合模塊在協(xié)議層的主要作用組播轉(zhuǎn)發(fā)路由的出接口聚合,Index分配和動態(tài)管理,Index與出接口列表的映射關(guān)系的管理和同步以及聚合跨平臺虛擬機等作用。組播路由聚合模塊在轉(zhuǎn)發(fā)層的主要作用是對出接口聚合的組播轉(zhuǎn)發(fā)路由的Index和出接口列表映射關(guān)系的管理并提供跨轉(zhuǎn)發(fā)板的組播報文快速轉(zhuǎn)發(fā)路由依據(jù)。
如圖2所示,本發(fā)明組成包括出接口Index管理分配子模塊、路由出接口聚合子模塊、Index與接口列表映射關(guān)系管理子模塊、Index與接口列表映射關(guān)系同步子模塊和Index局部出接口映射表管理子模塊五部分組成。Index管理子模塊的作用是維護全局有效的index池,為每一類出接口列表分配唯一的index字段,當(dāng)該出接口列表完全失效時,回收釋放的index并放入index池中。出接口聚合子模塊作用是根據(jù)Index管理分配子模塊分配的index替代組播路由條目中的出接口列表,形成新的出接口聚合后的組播路由條目。Index與接口映射關(guān)系管理子模塊負(fù)責(zé)記錄當(dāng)前處于激活狀態(tài)的各Index和出接口列表之間的映射關(guān)系F。Index與接口映射關(guān)系同步子模塊負(fù)責(zé)定期向處于組播轉(zhuǎn)發(fā)層的Index局部出接口映射表管理子模塊同步處于激活狀態(tài)的F。Index局部出接口映射表管理子模塊根據(jù)本板有效原則,從出接口列表中過濾出本板有效的出接口子列表。Index局部出接口列表映射表存放全局有效的index與本板有效的出接口列表的映射關(guān)系F。利用該映射關(guān)系在跨轉(zhuǎn)發(fā)板的組播快速轉(zhuǎn)發(fā)時,不需要再次查找組播路由,而是根據(jù)該組播報文的index快速對應(yīng)出接口,從而實現(xiàn)快速轉(zhuǎn)發(fā)。
如圖3所示本發(fā)明中組播路由條目與傳統(tǒng)組播路由條目的結(jié)構(gòu)示意圖,其中(a)是傳統(tǒng)組播路由條目的結(jié)構(gòu),(b)是經(jīng)過組播路由聚合處理后的組播路由。
從構(gòu)成上看,傳統(tǒng)的組播路由條目主要由組播源地址、組播源地址掩碼、組播組地址、組播組地址掩碼、路由條目操作標(biāo)志、入接口和組播出接口列表等字段組成。組播源地址,組播組地址,路由條目操作標(biāo)志,組播入接口都可以分別用一個4個字節(jié)表出。
組播的特性決定了一條組播路由條目可以有多個出接口,每一個出接口占用一個4字節(jié)位。出接口的數(shù)目由該網(wǎng)絡(luò)節(jié)點的組播樹下游收到該組播業(yè)務(wù)需求的接口個數(shù)決定。在實際應(yīng)用中,一個組播路由條目可能會由幾十到幾百個出接口。這樣相對于其它組播路由信息,組播的出接口列表占用的容量要大得多。如果想要減小組播路由所占的內(nèi)存量,那么應(yīng)當(dāng)壓縮組播路由出接口列表所占用的空間。在傳統(tǒng)的組播路由管理中,不同的組播路由條目各自保存一份自己的出接口列表,而實際應(yīng)用中,不同的組播路由條目中出接口列表會有很大的相似性,甚至不同組播路由條目的出接口列表是完全相同的。
所以本發(fā)明中,采用全局有效且唯一的index代替現(xiàn)有組播路由條目中的出接口列表,并且對于出接口列表相同的組播路由條目,分配相同的index,聚合后的組播路由結(jié)構(gòu)中old_index字段用于當(dāng)組播路由出接口發(fā)生變換時,通知組播轉(zhuǎn)發(fā)層發(fā)生變化的原index,current_index字段填充的是當(dāng)前有效的index。此外,current_index字段和old_index字段均包括有表示出接口列表的完整信息和表示出接口列表的板信息位圖的兩部分內(nèi)容因此,從結(jié)構(gòu)上可以明顯的看到采用本發(fā)明聚合后的組播路由條目的內(nèi)存占用量要小于傳統(tǒng)的組播路由條目,而且隨著出接口數(shù)目的增加,聚合的作用更明顯。
另外傳統(tǒng)的硬件組播轉(zhuǎn)發(fā)路由index管理方式是不同的組播路由分配不同的index。對于組播轉(zhuǎn)發(fā)而言,分配index的目的是為了組播數(shù)據(jù)入接口和出接口不在同一轉(zhuǎn)發(fā)板時,減少在出接口板上查找組播路由的系統(tǒng)開銷。對于出接口板而言,可以不關(guān)注組播路由的具體細(xì)節(jié),關(guān)注的是從哪些出接口轉(zhuǎn)發(fā)出去。因此index可以不標(biāo)識具體的組播路由條目,而是用來標(biāo)識不同的出接口列表。不同組播路由條目的出接口列表的相似性和重疊性能夠節(jié)省大量的index,從而大大降低index的有限性對組播轉(zhuǎn)發(fā)路由容量的影響。
如圖4所示基于index的組播轉(zhuǎn)發(fā)處理簡要說明。傳統(tǒng)的組播轉(zhuǎn)發(fā)是組播轉(zhuǎn)發(fā)層接收到組播數(shù)據(jù)報文后,查詢組播路由表,如果能夠匹配到該組播路由條目(*,G1),則組播數(shù)據(jù)報文根據(jù)出接口列表中的接口數(shù)目復(fù)制多份,分別在這些接口中轉(zhuǎn)發(fā)。如果轉(zhuǎn)發(fā)的出接口有在其它轉(zhuǎn)發(fā)板上,則需要將該數(shù)據(jù)報文通過本機內(nèi)部的交換網(wǎng)等傳送到對應(yīng)的其它轉(zhuǎn)發(fā)板上,當(dāng)組播數(shù)據(jù)到達(dá)非入口的轉(zhuǎn)發(fā)板上,還需要在查一次位于該板的組播路由,獲得在該板的出接口,根據(jù)這些出接口將組播數(shù)據(jù)轉(zhuǎn)發(fā)出去。
但是,如果采用通過組播路由聚合后基于index的組播轉(zhuǎn)發(fā),組播轉(zhuǎn)發(fā)層通過index可以為組播轉(zhuǎn)發(fā)提供一種本機內(nèi)的標(biāo)簽轉(zhuǎn)發(fā)機制,從而提高組播轉(zhuǎn)發(fā)速度。其具體實現(xiàn)是在組播轉(zhuǎn)發(fā)層同時存在兩張轉(zhuǎn)發(fā)表,但兩張表的內(nèi)容和作用是不同的,一張是與通過出接口聚合處理的組播路由條目組成的組播轉(zhuǎn)發(fā)路由表(也稱為入接口組播路由表),該組播轉(zhuǎn)發(fā)路由表包含本機有效的所有組播路由條目,這些路由條目的特點是沒有出接口列表,替代的是全局有效且唯一的、表征出接口列表的index字段。這些路由條目用于組播轉(zhuǎn)發(fā)時的入口處理,包括逆向路徑轉(zhuǎn)發(fā)檢查等。當(dāng)入接口相關(guān)處理結(jié)束需要通過出接口將該組播報文轉(zhuǎn)發(fā)出去時,需要查詢另一張組播路由轉(zhuǎn)發(fā)表——index局部出接口映射表,該Index局部出接口映射表是由Index局部出接口列表映射表管理子模塊產(chǎn)生。其處理流程為
步驟401,接口板接收到組播數(shù)據(jù)報文;步驟402,轉(zhuǎn)發(fā)層根據(jù)該組播數(shù)據(jù)報文的源地址和組地址,查詢組播轉(zhuǎn)發(fā)路由表;步驟403,通過查詢組播轉(zhuǎn)發(fā)路由表,得到相應(yīng)的Index;步驟404,根據(jù)查詢到的Index,判斷是否本接口板上有出接口,若沒有,執(zhí)行步驟407,否則執(zhí)行步驟405;步驟405,查詢本接口板的index局部出接口映射表獲得本板有效的出接口;步驟406,根據(jù)這些出接口將此組播數(shù)據(jù)報文轉(zhuǎn)發(fā)出去;步驟407,根據(jù)Index判斷是否其它轉(zhuǎn)發(fā)板上存在該組播路由條目的出接口,若沒有,執(zhí)行步驟411,否則執(zhí)行步驟408;步驟408,將組播數(shù)據(jù)報文根據(jù)Index的出接口板位信息通過本機內(nèi)部的交換網(wǎng)(交換矩陣)等傳送到對應(yīng)的其它轉(zhuǎn)發(fā)板上,跨板傳送前要將Index附帶給該組播數(shù)據(jù)報文;步驟409,對應(yīng)的其它轉(zhuǎn)發(fā)板接收組播數(shù)據(jù)報文,并且根據(jù)該組播數(shù)據(jù)報文附帶的index直接檢索本板的index局部出接口映射表,獲得本板有效的出接口;步驟410,根據(jù)獲得的本板有效出接口將此組播數(shù)據(jù)報文轉(zhuǎn)發(fā)出去;步驟411,結(jié)束。
如圖5所示組播路由聚合方法(簡稱路由聚合模塊)對組播路由條目增加的處理方法中協(xié)議層的處理流程(以共享樹組播路由條目為例),包括如下步驟步驟501,路由聚合模塊接收到三層組播協(xié)議如PIMSM(協(xié)議獨立多目傳送——稀疏模式)等產(chǎn)生新的共享樹組播路由條目(*,G1),根據(jù)該(*,G1)包含出接口列表o_list查詢index與接口列表映射關(guān)系管理子模塊;步驟502,判斷是否目前激活的index中是否存在與o_list相同的出接口列表映射關(guān)系,如果存在,執(zhí)行步驟507,否則執(zhí)行步驟503;步驟503,調(diào)用出接口Index管理分配子模塊查詢index池中是否還存在空閑的index,如果有,執(zhí)行步驟504,否則執(zhí)行步驟510;
步驟504,從index池中根據(jù)index的分配規(guī)則分配新的index給o_list,該index的分配規(guī)則包括有如下幾項,index需要能夠表示出接口列表所包含的所有板位信息;根據(jù)應(yīng)用環(huán)境的不同來進(jìn)行index的分配,如路由環(huán)境下index的分配只與三層接口相關(guān),如在交換環(huán)境和接入環(huán)境下即組播數(shù)據(jù)報文復(fù)制在二層物理端口(交換機,DSLAM),則index的分配同時取決于組播路由的三層出接口和二層出接口;對于沒有三層端口的設(shè)備設(shè)置一個虛擬三層端口號;不同設(shè)備的index資源量不同,由設(shè)備控制;步驟505,如果index分配成功,則執(zhí)行步驟506,否則執(zhí)行步驟510;步驟506,調(diào)用index與接口列表映射關(guān)系管理子模塊記錄index和o_list的映射關(guān)系,將該index的引用值清零,新分配的index要回填到協(xié)議層的組播轉(zhuǎn)發(fā)路由表中,對于每一個使用中的index均設(shè)置有引用計數(shù)器,用于表示引用該index的組播路由條目數(shù);步驟507,調(diào)用index與接口列表映射關(guān)系管理子模塊直接將激活的index賦給(*,G1)的current_index字段,將該index的引用值加1;步驟508,調(diào)用出接口聚合子模塊,將(*,G)路由中的o_list去除;步驟509,將組播路由操作標(biāo)志的index位設(shè)置為新增標(biāo)志(用于通知組播轉(zhuǎn)發(fā)層),執(zhí)行步驟511;步驟510,返回FALSE,通知組播路由處理模塊不能向下同步該組播路由條目,退出本流程;步驟511,將該組播路由條目交給傳統(tǒng)的組播路由處理流程向組播轉(zhuǎn)發(fā)同步(此時的組播路由條目不包含o_list);步驟512,Index與接口列表映射關(guān)系同步子模塊負(fù)責(zé)及時將index與出接口映射關(guān)系的變化同步到組播轉(zhuǎn)發(fā)層的Index局部出接口列表映射表管理子模塊,其同步的原則是僅向該index相關(guān)的轉(zhuǎn)發(fā)層板卡同步。
如圖6所示組播路由聚合方法(簡稱路由聚合模塊)對組播路由條目刪除的處理方法中協(xié)議層的處理流程(以共享樹組播路由條目為例),包括如下步驟步驟601,當(dāng)將組播路由條目(*,G)刪除時,組播路由協(xié)議模塊通知路由聚合模塊,該模塊根據(jù)(*,G)的index查詢Index與接口列表映射關(guān)系管理和同步子模塊;步驟602,如果該index的引用數(shù)=1,則執(zhí)行步驟604,否則執(zhí)行步驟603;步驟603,將該引用數(shù)目減1,執(zhí)行步驟607;步驟604,刪除該index和o_list的映射關(guān)系;步驟605,將該index釋放回收到index池;步驟606,調(diào)用Index與接口列表映射關(guān)系管理和同步子模塊將該index與olist映射關(guān)系被刪除的信息發(fā)送給組播路由轉(zhuǎn)發(fā)層,向各相關(guān)轉(zhuǎn)發(fā)板同步index與出接口列表o_list的映射關(guān)系,退出流程;步驟606,通過傳統(tǒng)的組播路由同步模塊向組播轉(zhuǎn)發(fā)同步該組播路由。
如圖7所示組播路由聚合方法(簡稱路由聚合模塊)對組播路由條目出接口變化的處理方法(以共享樹組播路由條目為例),包括如下步驟步驟701,當(dāng)組播路由發(fā)生出接口變化時,組播協(xié)議模塊通知路由聚合模塊。該模塊根據(jù)發(fā)生變化的組播路由(*,G)的index,查詢Index與接口列表映射關(guān)系管理和同步子模塊;步驟702,如果該index的引用數(shù)=1,執(zhí)行步驟704,否則執(zhí)行步驟703;步驟703,將該index的引用數(shù)目減1,執(zhí)行步驟706;步驟704,刪除該index和o_list的映射關(guān)系;步驟705,將該index釋放回收到index池;步驟706,將原來的index字段填充此組播路由條目的old_index字段;步驟707,index與接口列表映射關(guān)系管理子模塊根據(jù)新的出接口列表查詢是否該出接口列表已經(jīng)有與之對應(yīng)的index,若有,執(zhí)行步驟712,否則執(zhí)行步驟708;步驟708,調(diào)用出接口index管理分配子模塊查詢index池中是否還存在空閑的index,若有,執(zhí)行步驟709,否則執(zhí)行步驟715;步驟709,從index池中根據(jù)index的分配規(guī)則分配新的index給o_list,具體規(guī)則與步驟504中所述規(guī)則相同;步驟710,如果index分配成功,執(zhí)行步驟711,否則執(zhí)行步驟715;步驟711,調(diào)用index與接口列表映射關(guān)系管理子模塊記錄index和o_list的映射關(guān)系,將index的引用值清零,新分配的index要回填到協(xié)議層的組播轉(zhuǎn)發(fā)路由表中;步驟712,將已經(jīng)分配的index字段填充組播路由條目的current_index字段,將該index的引用值加1;步驟713,去除組播路由(*,G)的出接口列表o_list;步驟714,將組播路由操作標(biāo)志的index位設(shè)置為變化標(biāo)志,執(zhí)行步驟716;步驟715,返回FALSE,通知組播路由處理模塊不能向下同步該組播路由條目,退出本流程;步驟716,將該組播路由條目交給傳統(tǒng)的組播路由處理流程向組播轉(zhuǎn)發(fā)同步;步驟717,Index與接口列表映射關(guān)系同步子模塊負(fù)責(zé)及時將index與出接口映射關(guān)系的變化同步到組播轉(zhuǎn)發(fā)層的Index局部出接口列表映射表管理子模塊,其同步的原則是僅向該index相關(guān)的轉(zhuǎn)發(fā)層板卡同步。
如圖8所示組播路由聚合方法(簡稱路由聚合模塊)中轉(zhuǎn)發(fā)層的路由處理流程(以共享樹組播路由條目為例),包括如下步驟步驟801,組播轉(zhuǎn)發(fā)層根據(jù)接收到的協(xié)議層同步的組播路由,利用傳統(tǒng)的組播轉(zhuǎn)發(fā)路由處理方法形成組播入口轉(zhuǎn)發(fā)路由表;步驟802,判斷組播路由操作標(biāo)志的index位,如果該標(biāo)志位表示增加,執(zhí)行步驟805,如果表示刪除,執(zhí)行步驟803,如果表示變化,執(zhí)行步驟804;。
步驟803,根據(jù)同步的組播路由條目中的current_index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該index字段相同的index和出接口列表之間映射關(guān)系刪除,執(zhí)行步驟807;步驟804,根據(jù)同步的組播路由條目中的old_index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該old_index字段相同的index和出接口列表之間映射關(guān)系刪除;步驟805,組播轉(zhuǎn)發(fā)層的Index局部出接口映射表管理子模塊接收組播協(xié)議層的Index與接口列表映射關(guān)系同步子模塊同步下來的index與出接口映射關(guān)系(變化同步);
步驟806,轉(zhuǎn)發(fā)層查詢該映射關(guān)系的出接口列表中哪些接口不屬于本轉(zhuǎn)發(fā)板,將不屬于本轉(zhuǎn)發(fā)板的接口從index與出接口映射關(guān)系中刪除,形成index與本板有效接口之間的映射關(guān)系,并且利用這些映射關(guān)系組織成或更新index局部出接口映射表;步驟807,結(jié)束。
權(quán)利要求
1.一種組播轉(zhuǎn)發(fā)路由聚合方法,包括如下步驟(a)協(xié)議層產(chǎn)生由若干組播路由條目構(gòu)成的組播轉(zhuǎn)發(fā)路由表,其中所述組播路由條目包括有組播源地址、組播組地址、組播路由操作標(biāo)志、組播入接口和索引index等字段,index為全局有效且唯一,表征出接口列表,對于出接口列表相同的組播路由條目,index相同;(b)協(xié)議層產(chǎn)生索引index與其代表的出接口列表的映射關(guān)系;(c)轉(zhuǎn)發(fā)層產(chǎn)生若干與各自接口板對應(yīng)的、由全局有效的索引index與本接口板上有效出接口之間映射關(guān)系構(gòu)成的index局部出接口映射表;(d)轉(zhuǎn)發(fā)層根據(jù)所接收組播數(shù)據(jù)報文的源地址和組播組地址,查詢所述組播轉(zhuǎn)發(fā)路由表獲得索引index,然后將組播數(shù)據(jù)報文發(fā)送至根據(jù)索引index確定的相應(yīng)出接口板;該出接口板接收到組播數(shù)據(jù)報文后,查詢本板上的index局部出接口映射表而獲得本板有效出接口,并將該組播數(shù)據(jù)報文轉(zhuǎn)發(fā)。
2.根據(jù)權(quán)利要求1所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于所述組播路由條目還包括有表征當(dāng)前索引index變化前的原有索引old_index字段,該old_index字段與index字段的結(jié)構(gòu)和長度相同;所述索引index字段和old_index字段均包括有表示出接口列表的完整信息和表示出接口列表的板信息位圖的兩部分內(nèi)容。
3.根據(jù)權(quán)利要求2所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于所述協(xié)議層生成組播轉(zhuǎn)發(fā)路由表的操作包括有增加、刪除組播路由條目的操作和出接口列表發(fā)生變化時的處理操作。
4.根據(jù)權(quán)利要求3所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于,所述增加組播路由條目的操作包括如下步驟(A1)協(xié)議層接收包括有出接口列表字段的共享樹組播路由條目;(A2)判斷當(dāng)前組播轉(zhuǎn)發(fā)路由表中的index是否存在著與該共享樹組播路由條目的出接口列表字段相同的出接口列表映射關(guān)系,若有,則將該index添加至此共享樹組播路由條目,然后將該共享樹組播路由條目中的出接口列表字段去除,從而生成組播路由條目且加入組播轉(zhuǎn)發(fā)路由表,否則分配新的index至此共享樹組播路由條目,然后將該共享樹組播路由條目中的出接口列表字段去除,生成組播路由條目且加入至組播轉(zhuǎn)發(fā)路由表;(A3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
5.根據(jù)權(quán)利要求3所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于,所述刪除組播路由條目的操作包括如下步驟(B1)協(xié)議層刪除某個組播路由條目;(B2)協(xié)議層判斷所刪除的組播路由條目中index字段當(dāng)前是否為多個組播路由條目引用,若是,則將該index的引用次數(shù)減1,否則將該index釋放回index池,并刪除此index與出接口列表的映射關(guān)系;(B3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
6.根據(jù)權(quán)利要求3所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于,所述出接口列表發(fā)生變化時的處理操作包括如下步驟(C1)協(xié)議層判斷出接口列表發(fā)生變化的組播路由條目的index字段當(dāng)前是否為多個組播路由條目引用,若是,則將該index的引用次數(shù)減1,否則將該index釋放回index池,并刪除此index與出接口列表的映射關(guān)系;(C2)將處理后的index填充至該組播路由條目的old_index字段,并且協(xié)議層根據(jù)變化后的出接口列表分配與之相對應(yīng)的index,同時將該重新分配的index填充至原組播路由條目的index字段;(C3)協(xié)議層將index與出接口映射關(guān)系的變化同步至轉(zhuǎn)發(fā)層,用于更新各接口板上的index局部出接口映射表。
7.根據(jù)權(quán)利要求4、5或6所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于,轉(zhuǎn)發(fā)層更新各接口板上的index局部出接口映射表的步驟包括(E1)轉(zhuǎn)發(fā)層接收到的協(xié)議層同步的組播路由條目,并且根據(jù)該組播路由條目中組播路由操作標(biāo)志的index位進(jìn)行判斷,若該標(biāo)志位表示增加,則執(zhí)行步驟(E4),若表示刪除,則執(zhí)行步驟(E2),若表示變化,則執(zhí)行步驟(E3);(E2)根據(jù)同步的組播路由條目中的index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該index字段相同的index和出接口列表之間映射關(guān)系刪除,執(zhí)行步驟(E6);(E3)根據(jù)同步的組播路由條目中的old_index字段,轉(zhuǎn)發(fā)層將本板上index局部出接口映射表中與該old_index字段相同的index和出接口列表之間映射關(guān)系刪除;(E4)轉(zhuǎn)發(fā)層接收協(xié)議層同步下來的index與出接口映射關(guān)系;(E5)轉(zhuǎn)發(fā)層將不屬于本接口板的接口從index與出接口映射關(guān)系中刪除,從而形成index與本板有效出接口之間的映射關(guān)系。并且利用這些映射關(guān)系更新index局部出接口映射表;(E6)結(jié)束。
8.根據(jù)權(quán)利要求8所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于所述index分配的決定因素包括應(yīng)用環(huán)境因素,當(dāng)應(yīng)用環(huán)境為路由環(huán)境時,index的分配只與組播路由的三層出接口相關(guān);當(dāng)應(yīng)用環(huán)境為交換環(huán)境和接入環(huán)境時,index的分配同時取決于組播路由的三層出接口和二層出接口;對沒有三層出接口的設(shè)備設(shè)置一個虛擬三層出接口號。
9.根據(jù)權(quán)利要求8所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于對于每一個使用中的index均設(shè)置有引用計數(shù)器,用于表示引用該index的組播路由條目數(shù);當(dāng)index池中的index分配完畢后,若還有組播路由條目申請分配index,則通知協(xié)議層在周期T內(nèi)不再向下同步該組播路由條目。
10.根據(jù)權(quán)利要求1所述的組播轉(zhuǎn)發(fā)路由聚合方法,其特征在于所述步驟(d)中如果由index確定的入接口板與出接口板不一致,需要將組播數(shù)據(jù)報文跨板傳送時,則必須將index附帶至組播數(shù)據(jù)報文中,一并傳送至出接口板。
全文摘要
本發(fā)明公開了一種組播轉(zhuǎn)發(fā)路由聚合方法,包括如下步驟協(xié)議層產(chǎn)生由若干組播路由條目構(gòu)成的組播轉(zhuǎn)發(fā)路由表,其中所述組播路由條目包括有組播源地址、組播組地址、組播路由操作標(biāo)志、組播入接口和索引Index等字段,索引Index為全局有效且唯一,表征出接口列表,對于出接口列表相同的組播路由條目,索引Index相同;協(xié)議層同時產(chǎn)生索引index和表征的出接口列表的映射關(guān)系;轉(zhuǎn)發(fā)層產(chǎn)生若干與各自接口板對應(yīng)的、由全局有效的索引Index與本接口板上有效的出接口列表之間映射關(guān)系構(gòu)成的Index局部出接口映射表。采用本方法,不僅能降低組播路由占用的內(nèi)存空間數(shù)量,而且還能夠?qū)⒋笕萘康慕M播轉(zhuǎn)發(fā)路由聚合成當(dāng)前硬件芯片容量可支持的組播轉(zhuǎn)發(fā)路由。
文檔編號H04L12/56GK1881931SQ20051007664
公開日2006年12月20日 申請日期2005年6月13日 優(yōu)先權(quán)日2005年6月13日
發(fā)明者黃進(jìn)宏, 馬彧 申請人:中興通訊股份有限公司