專利名稱:組播剪枝方法及協議無關組播路由器、組管理窺探交換機的制作方法
技術領域:
本發明涉及組播技術領域,具體涉及組播剪枝方法、協議無關組播路由器(PIM, Protocol Independent Multicast)及組管理窺探交換機。
背景技術:
為便于理解,首先給出如下概念說明組播一種與單播和廣播并列的通信方式,組播系統由組播源、接收者和組播組組成。源主機只發送一份數據,這份數據中的目的地址為組播組地址;組播組中的所有接收者都可接收到同樣的數據拷貝,并且只有組播組內的主機可以接收該數據。互聯網組管理協議(IGMP,Internet Group Management Protocol)傳輸控制協議 / 因特網協議(TCP/IP,^Transmission Control Protocol/InternetProtocol)協議族中負責IP組播成員管理的協議,用來在IP主機和與其直接相鄰的組播路由器之間建立、維護組播組成員關系。IGMP 窺探(IGSP, Internet Group Management Protocol Snooping)運行在二層設備上的組播約束機制,用于管理和控制組播組。運行IGMP窺探的二層設備通過對收到的IGMP報文進行分析,為端口和媒體接入控制(MAC,Media Access Control)組播地址建立起映射關系,并根據該映射關系轉發組播數據。PIM 表示可以利用靜態路由或者任意單播路由協議如RIP、OSPF, IS_IS、BGP等所生成的單播路由表為IP組播提供路由;實現維護三層設備之間的組播數據傳播。IP組播技術有效地解決了單點發送多點接收的問題,實現了 IP網絡中點到多點的高效數據傳送,能夠大量節約網絡帶寬、降低網絡負載。利用網絡的組播特性,一些新的增值業務,包括在線直播、網絡電視、遠程教育、遠程醫療、網絡電臺、實時視頻會議等互聯網的信息服務得到了快速的發展。PIM協議是目前主流的組播路由協議。IGMP窺探是主流的二層組播控制協議。在點播性質的組播應用中,業界尚未很好地解決PIM路由器組播源側的流量控制。圖1為一個組播組網示例圖,如圖1所示,組播源和客戶端通過二層交換機接入,多個二層交換機匯聚到一個PIM路由器上。如組播源1、2分別通過IGMP窺探交換機6、7接入, IGMP窺探交換機1、2、3匯聚到PIM路由器2上。當組播源發出的組播流通過交換機到達第一跳PIM路由器時,若該PIM路由器為指定路由器(DR,Designated Router),則向匯合點(RP)發送源注冊消息,若RP發現本地未建立與該組播流對應的(S,G)表項,即無客戶端點播該組播流,則向DR返回源抑制消息; 此后,當有客戶端點播該組播流時,客戶端向葉路由器發送IGMP加入消息,葉路由器向RP 發送PIM加入消息,RP接收到該PIM加入消息時,向DR發送PIM加入消息,此后組播流經由RP到達組播接收者。現有技術的缺點如下對于組播源發出的任一組播流,無論是否有客戶端點播該組播流,該組播流都要先經過交換機發送到第一跳PIM路由器,這樣,就增加了交換機的緩存消耗。交換機的出端口緩存對于保證業務流,特別是視頻等帶突發性質的業務流的有序、防止丟包、減少抖動具有重要的作用,因此,不需要轉發的數據流應該禁止其轉發,從而減少對交換機出端口緩存的消耗。現有協議無法在鏈路層剪枝從組播源到PIM路由器之間的無用組播數據流。
發明內容
本發明提供組播剪枝方法及PIM路由器、組管理窺探交換機,以剪枝從組播源到 PIM路由器之間的無用組播流。本發明的技術方案是這樣實現的一種組播剪枝方法,組播源通過組管理窺探交換機連接到第一跳協議無關組播 PIM路由器,該方法包括所述第一跳PIM路由器接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;或者,所述第一跳PIM路由器接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,將該消息的接收接口從該組播流的出接口列表中刪除,若發現本地已經沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;當所述組管理窺探交換機接收到所述組管理剪枝消息后,將該消息的接收端口作為剪枝端口,并將該剪枝端口添加到與所述組播流對應的組管理窺探表項中,不再向所述剪枝端口轉發所述組播流。所述組管理窺探交換機將該消息的接收端口作為剪枝端口的同時進一步包括為該剪枝端口設置剪枝時間,且,當該剪枝時間到達后,開始允許向所述剪枝端口轉發所述組播流。所述第一跳PIM路由器發現本地沒有接收該組播流的需求包括第一跳PIM路由器發現本地未建立與所述組播流對應的組播路由表項,或者雖建立了與所述組播流對應的組播路由表項但該表項的出接口列表為空,則確定本地沒有接收該組播流的需求。所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機發現本地未建立與所述組播流對應的組管理窺探表項,則建立與所述組播流對應的組管理窺探表項;且,所述將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括組管理窺探交換機判斷自身是否存在路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機發現本地已建立與所述組播流對應的組管理窺探表項;且,所述組管理窺探交換機將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括組管理窺探交換機判斷所述組管理窺探表項是否包含成員端口或路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。所述組管理窺探交換機從該出端口向外發送組管理剪枝消息之后進一步包括所述組播源接收到所述組管理剪枝消息,暫停發送所述組播流。所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息, 若未在最大響應時間內接收到任何響應的組管理嫁接消息,則執行所述將該消息的接收端口作為剪枝端口的動作。所述組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息之后進一步包括其它組管理窺探交換機接收到所述組管理剪枝查詢消息,根據消息的源MAC地址查找單播MAC表項,若查找到且單播MAC表項的出端口與組管理剪枝查詢消息的接收端口一致,則判斷本地是否已建立與所述組播流對應的組管理窺探表項,若已建立且該組管理窺探表項包含成員端口或路由器端口,或者,若未建立但本交換機具有路由器端口,則在最大響應時間內響應組管理嫁接消息。所述組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息之后進一步包括PIM路由器接收到所述組管理剪枝查詢消息,判斷本地是否有與所述組播流對應的組播路由表項,若有且該組播路由表項的出接口列表不為空,則在最大響應時間內響應組管理嫁接消息。所述組管理窺探交換機將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括所述第一跳PIM路由器接收下游PIM路由器發來的針對所述組播流的PIM加入消息或者自身下掛客戶端發來的針對所述組播流的組管理加入消息,向所述組播源方向發送組管理嫁接消息;所述組管理窺探交換機接收所述組管理嫁接消息,將所述剪枝端口恢復為路由器端口,開始允許向該路由器端口轉發所述組播流。所述第一跳PIM路由器接收下游PIM路由器發來的針對所述組播流的PIM加入消息之后、向所述組播源方向發送組管理嫁接消息之前進一步包括第一跳PIM路由器判斷本地是否已建立與所述組播流對應的組播路由表項,若是且該組播路由表項的出接口列表為空,則將所述PIM加入消息的接收接口添加到該組播路由表項的出接口列表中,并執行所述向組播源方向發送組管理嫁接消息的動作。所述方法進一步包括組管理窺探交換機接收針對所述組播流的組管理加入消息,在本地查找與該組播流對應的組管理窺探表項,將該組管理加入消息的接收端口作為成員端口添加到所述組管理窺探表項中,并向所有路由器端口和剪枝端口轉發該組管理加入消息;
組管理窺探交換機判斷該組管理加入消息是否來自數據源端口,若來自且所述組管理窺探表項還存在其它數據源端口,則向其它數據源端口發送組管理嫁接消息;若不來自,則向所述組管理窺探表項中的所有數據源端口發送組管理嫁接消息。所述組管理窺探交換機接收所述組管理嫁接消息之后、將所述剪枝端口恢復為路由器端口之前進一步包括所述組管理窺探交換機判斷本地與所述組播流對應組管理窺探表項是否只包含剪枝端口,若是,則轉發所述組管理嫁接消息,并執行所述將所述剪枝端口恢復為路由器端口的動作;否則,直接執行所述將所述剪枝端口恢復為路由器端口的動作。所述組管理窺探交換機轉發所述組管理嫁接消息之后進一步包括所述組播源接收所述組管理嫁接消息,恢復發送所述組播流。所述組管理窺探交換機支持互聯網組管理協議IGMP或組播偵聽者發現協議MLD 協議。一種PIM路由器,該PIM路由器直接通過組管理窺探交換機連接到組播源,該PIM 路由器包括第一模塊,接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求,或者,接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,將該消息的接收接口從該組播流的出接口列表中刪除,若發現本地已經沒有接收該組播流的需求,則向第二模塊發送剪枝指示;第二模塊,接收所述剪枝指示,從所述組播流的入接口處向外發送組管理剪枝消肩、ο所述PIM路由器進一步包括第三模塊,接收組管理剪枝查詢消息,判斷本地是否有與所述組播流對應的組播路由表項,若有且該組播路由表項的出接口列表不為空,則在最大響應時間內響應組管理嫁接消息。所述PIM路由器進一步包括第四模塊,接收下游PIM路由器發來的針對所述組播流的PIM加入消息或者自身下掛客戶端發來的針對所述組播流的組管理加入消息,向所述組播源方向發送組管理嫁接消息。所述第四模塊進一步用于,當接收到下游PIM路由器發來的針對所述組播流的PIM加入消息之后,判斷本地是否已建立與所述組播流對應的組播路由表項,若是且該組播路由表項的出接口列表為空,則將所述PIM加入消息的接收接口添加到該組播路由表項的出接口列表中,并執行所述向組播源方向發送組管理嫁接消息的動作。一種組管理窺探交換機,位于組播源與第一跳PIM路由器之間,該交換機包括第一模塊,接收組管理剪枝消息,將該消息的接收端口作為剪枝端口,并將該剪枝端口添加到與所述組播流對應的組管理窺探表項中,不再向所述剪枝端口轉發所述組播流。所述第一模塊進一步用于,為所述剪枝端口設置剪枝時間,且,當該剪枝時間到達后,開始允許向所述剪枝端口轉發所述組播流。
所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,若發現本地未建立與所述組播流對應的組管理窺探表項,則建立與所述組播流對應的組管理窺探表項;且, 將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后,判斷本交換機是否存在路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播 MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,若發現本地已建立與所述組播流對應的組管理窺探表項,則直接執行所述將該剪枝端口添加到與所述組播流對應的組管理窺探表項中的動作;且,判斷所述組管理窺探表項是否包含成員端口或路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC 表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息,若未在最大響應時間內接收到任何響應的組管理嫁接消息,則執行所述將該消息的接收端口作為剪枝端口的動作。所述交換機進一步包括第二模塊,接收其它組管理窺探交換機發來的組管理剪枝查詢消息,根據消息的源MAC地址查找單播MAC表項,若查找到且單播MAC表項的出端口與組管理剪枝查詢消息的接收端口一致,則判斷本地是否已建立與所述組播流對應的組管理窺探表項,若已建立且該組管理窺探表項包含成員端口或路由器端口,或者,若未建立但本交換機具有路由器端口,則在最大響應時間內響應組管理嫁接消息。所述交換機進一步包括第三模塊,接收組管理嫁接消息,將所述剪枝端口恢復為路由器端口,開始允許向該路由器端口轉發所述組播流。所述交換機進一步包括第四模塊,接收針對所述組播流的組管理加入消息,在本地查找與該組播流對應的組管理窺探表項,將該組管理加入消息的接收端口作為成員端口添加到所述組管理窺探表項中,并向所有路由器端口和剪枝端口轉發該組管理加入消息;判斷該組管理加入消息是否來自數據源端口,若來自且所述組管理窺探表項還存在其它數據源端口,則向其它數據源端口發送組管理嫁接消息;若不來自,則向所述組管理窺探表項中的所有數據源端口發送組管理嫁接消息。所述第三模塊進一步用于,當接收到所述組管理嫁接消息之后,判斷本地與所述組播流對應組管理窺探表項是否只包含剪枝端口,若是,則轉發所述組管理嫁接消息,并執行所述將所述剪枝端口恢復為路由器端口的動作;否則,直接執行所述將所述剪枝端口恢復為路由器端口的動作。一種組播源,包括第一模塊,接收針對一個組播流的組管理剪枝消息,暫停發送所述組播流。所述組播源進一步包括第二模塊,接收針對所述組播流的組管理嫁接消息,恢復發送所述組播流。與現有技術相比,本發明中,當第一跳PIM路由器接收到組播源發來的組播流時, 或者,接收到下游PIM路由器發來的針對一個組播流的PIM剪枝消息,若發現本地已經沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;組管理窺探交換機接收到所述組管理剪枝消息后,將該消息的接收端口作為剪枝端口,不再向所述剪枝端口轉發所述組播流。本發明無需對組網做出任何限制,就可剪枝從組播源到PIM路由器之間的無用組播流,節省了帶寬和交換機的出端口緩存。
圖1為一個組播組網示例圖;圖2為本發明實施例提供的組播剪枝方法流程圖;圖3為本發明實施例提供的第一跳PIM路由器接收到組播流后的處理流程圖;圖4為本發明實施例提供的第一跳PIM路由器Rtr接收到來自下游PIM路由器的 PIM剪枝消息后的處理流程圖;圖5為本發明實施例提供的IGMP窺探交換機接收到IGMP剪枝消息后的處理流程圖;圖6為本發明實施例提供的IGMP窺探交換機接收到IGMP剪枝查詢消息后的處理流程圖;圖7為本發明實施例提供的第一跳PIM路由器接收到IGMP剪枝查詢消息后的處理流程圖;圖8為本發明實施例提供的第一跳PIM路由器接收到來自下游PIM路由器的PIM 加入消息后的處理流程圖;圖9為本發明實施例提供的IGMP窺探交換機接收到IGMP加入消息后的處理流程圖;圖10為本發明實施例提供的第一跳PIM路由器Rtr接收到IGMP加入消息后的處理流程圖;圖11為本發明實施例提供的IGMP窺探交換機接收到IGMP嫁接消息后的處理流程圖;圖12為本發明實施例提供的組播源設備接收到IGMP剪枝和嫁接消息后的處理流程圖;圖13為本發明實施例提供的PIM路由器的組成示意圖。
具體實施例方式下面結合附圖及具體實施例對本發明再作進一步詳細的說明。本發明中,假設全網使用的組管理協議版本相同,即,或統一使用IGMPv2,或統一使用IGMPv3,或統一使用組播偵聽者發現協議版本l(MLDvl,Multicast Listener Discovery Protocol Versionl)或統一使用 MLDv2。若本發明實施例采用的組管理協議為IGMPv2或MLDvl,則不同的組播流以組播組信息區分;若本發明實施例采用的組管理協議為IGMPv3或MLDv2,則不同的組播流以組播源信息+組播組信息區分。本發明中新增了三個消息組管理剪枝消息、組管理嫁接消息和組管理剪枝查詢消息。其中,若采用IGMP,則該三個消息分別為IGMP剪枝消息、IGMP嫁接消息、IGMP剪枝查
1詢消息;若采用MLD,則該三個消息分別為MLD剪枝消息、MLD嫁接消息、MLD剪枝查詢消息。以下對該三個消息進行詳細說明一、組管理剪枝消息。該消息的類型字段的值為現有組管理協議未使用的值,例如若采用IGMP,則可取值0x27。消息的源IP地址、源媒體接入控制(MAC,MediaAccess Control)地址分別為發送該消息的出接口的IP地址、MAC地址,目的IP地址、目的MAC地址分別為組播源的單播IP地址、單播MAC地址。其中,若采用IGMPv2或MLDvl,源IP地址、源MAC地址也可以填寫為全0。二、組管理嫁接消息。該消息的類型字段的值為現有組管理協議未使用的值,例如若采用IGMP,則可取值0U8。若該消息源自PIM路由器,則消息的源IP地址、源MAC地址分別為發送該消息的出接口的IP地址、MAC地址;若該消息源自組管理窺探交換機,則消息的源IP地址、源 MAC地址可以填寫為全0。當消息不是針對組管理剪枝查詢消息的響應消息時,消息的目的 IP地址、目的MAC地址分別為組播源的單播IP地址、單播MAC地址;當消息是針對組管理剪枝查詢消息的響應時間時,消息的目的IP地址、目的MAC地址分別是組管理剪枝查詢消息的源IP地址、源MAC地址。三、組管理剪枝查詢消息。該消息的類型字段的值為現有組管理協議未使用的值,例如若采用IGMP,則可取值0x21。若采用IGMPv2或MLDvl,則消息的源IP地址、源MAC地址可以填寫為全0 ;若采用IGMPv3或MLDv2,則消息的源IP地址、源MAC地址為IGMP剪枝消息的目的IP地址、目的MAC地址。消息的目的IP地址為組播組地址。消息中的最大響應時間字段的值默認為 1秒。本發明中,組管理窺探交換機新增了兩個端口角色剪枝端口和數據源端口,以下對該端口角色進行詳細說明一、剪枝端口。當組管理窺探交換機收到第一跳PIM路由器發來的針對一個組播流的IGMP剪枝消息時,該消息的接收端口就成為剪枝端口。此后,該組播流不得從該剪枝端口轉發。可以看出,剪枝端口實際上是被剪枝的路由器端口。剪枝端口、路由器端口和成員端口是三類不同的控制端口角色,用于控制數據流的轉發。三類端口分開維護。二、數據源端口。數據源端口用于指示組管理窺探表項的數據源方向的端口。對于IGMPv2或 MLDvl,一個組管理窺探表項可能有多個數據源端口 ;對于IGMPv3或MLDv2,則一個組管理窺探表項只有一個數據源端口。數據源端口是組管理窺探表項對應的組播流進來的端口,它不是控制端口,并不用于控制數據流的轉發,只用于指示組播流進來的端口。只有發送過組管理剪枝消息的交換機才有數據源端口。對于本發明,若采用IGMP,則組管理窺探交換機為IGMP窺探交換機;若采用MLD, 則組管理窺探交換機為MLD窺探交換機。
以下以組管理協議采用IGMP為例,對本發明進行詳細說明,當組管理協議采用 MLD協議時,將本發明所有實施例中的“ IGMP”替換為“MLD”即可。圖2為本發明實施例提供的組播剪枝方法流程圖,如圖2所示,其具體步驟如下步驟201 :IGMP窺探交換機接收來自PIM路由器的PIM hello消息或者IGMP通用查詢消息,將該消息的接收端口設置為路由器端口。步驟202 組播源發出的一個組播流經由路由器端口到達第一跳PIM路由器,第一跳PIM路由器發現本地未建立與該組播流對應的組播路由表項,或者雖已建立與該組播流對應的組播路由表項但該表項的出接口列表為空,則確定本地沒有接收該組播流的需求, 從該組播流的入接口處向外發送針對該組播流的IGMP剪枝消息;或者,第一跳PIM路由器接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,查找與該組播流對應的組播路由表項,將該消息的接收接口從該表項中刪除,若發現該表項的出接口列表為空,則從該組播流的入接口處向外發送針對該組播流的IGMP剪枝消息。這里,IGMP剪枝消息的發送是限速的,即不會因為一直收到相同的組播流而頻繁發送相同的IGMP剪枝消息,發送間隔缺省為1分鐘一次,直到該組播流被剪枝或本地有接收該組播流的需求。步驟203 第一跳PIM路由器與組播源之間的IGMP窺探交換機接收該IGMP剪枝消息,若發現當前無接收該組播流的需求,則將該IGMP剪枝消息的接收端口設置為剪枝端口,此后不再向剪枝端口轉發該組播流。從圖2可以看出,在下述兩種情況下,需要剪枝從組播源到第一跳PIM路由器之間的組播流一、本地根本沒有接收該組播流的需求;二、本地之前有接收該組播流的需求,但當前要求停止接收。圖3、圖4分別給出了第一跳PIM路由器針對上述兩種情況的詳細處理圖3為本發明實施例提供的第一跳PIM路由器接收到組播流后的處理流程圖,如圖3所示,其具體步驟如下步驟301 第一跳PIM路由器Rtr周期性地從自身的各PIM接口向外發送PIM hello消息。步驟302 IGMP窺探交換機接收PIM hello消息,將該消息的接收端口設置為路由器端口(router port),并將PIM hello消息從自身的各端口轉發給其它二層交換機。IGMP窺探是所有支持組播的二層交換機的基本特性。IGMP窺探交換機將收到 IGMP通用查詢報文和PIM報文的端口視為路由器端口,而將收到IGMP加入報文的端口視為成員端口。IGMP窺探交換機會將所有的組播流都送往路由器端口,且只會將對應組播組的組播流送往成員端口。其它二層交換機接收到PIM hello消息后,也會進行步驟302的處理。步驟303 組播源發出一個組播流,該組播流經由各路由器端口到達第一跳PIM路由器Rtr。步驟304 :Rtr判斷本地是否已建立與該組播流對應的(S,G)表項,若是,執行步驟 305 ;否則,執行步驟308。步驟305 :Rtr判斷該(S,G)表項的出接口列表是否為空,若是,執行步驟306 ;否則,執行步驟307。步驟306 :Rtr更新該(S,G)表項的老化時間,并從該組播流的入接口向外發送 IGMP剪枝消息,本流程結束。由于Rtr是從組播流的入接口向外發送IGMP剪枝消息,則該消息會到達Rtr與組播源之間的IGMP窺探交換機。IGMP窺探交換機接收到該IGMP剪枝消息后的處理流程見圖 5所示實施例。步驟307 :Rtr按照該出接口列表中的出接口信息,向外轉發該組播流,本流程結
束ο步驟308 :Rtr建立與該組播流對應的(S,G)表項,并設置表項老化時間,從該組播流的入接口向外發送IGMP剪枝消息。這里,(S,G)表項老化時間通常為3分鐘。若為PIM稀疏(SM,Sparse Mode)模式,則本步驟中,在建立(S,G)表項后,Rtr還需向RP發送針對該組播流的源注冊消息。圖4為本發明實施例提供的第一跳PIM路由器Rtr接收到來自下游PIM路由器的 PIM剪枝消息后的處理流程圖,如圖4所示,其具體步驟如下步驟401 第一跳PIM路由器Rtr接收下游PIM路由器發來的針對一個組播流的 PIM剪枝消息,在本地查找到與該組播流對應的(S,G)表項,按照現有PIM協議處理該(S, G)表項。當一個組播接收者不再接收一個組播流時,該組播接收者會向自身的葉路由器發送針對該組播流的IGMP離開消息,葉路由器接收該IGMP離開消息后,向RP發送針對該組播流的PIM剪枝消息,RP會向第一跳PIM路由器方向轉發該PIM剪枝消息。按照現有PIM協議,Rtr通常會將PIM剪枝消息的接收接口從該(S,G)表項的出接口列表中刪除。步驟402 :Rtr判斷(S,G)表項的出接口列表是否為空,若是,執行步驟403 ;否則, 執行步驟404。步驟403 =Rtr從該組播流的入接口處向外發送IGMP剪枝消息,本流程結束。由于Rtr是從組播流的入接口向外發送IGMP剪枝消息,則該消息會到達Rtr與組播源之間的IGMP窺探交換機。IGMP窺探交換機接收到該IGMP剪枝消息后的處理流程見圖 5所示實施例。步驟404 =Rtr不作后續處理。第一跳PIM路由器發出的IGMP剪枝消息會到達IGMP窺探交換機,該IGMP窺探交換機位于組播源與第一跳PIM路由器之間。圖5為本發明實施例提供的IGMP窺探交換機接收到IGMP剪枝消息后的處理流程圖,如圖5所示,其具體步驟如下步驟501 =IGMP窺探交換機接收針對一個組播流的IGMP剪枝消息。步驟502 :IGMP窺探交換機判斷該IGMP剪枝消息的接收端口是否啟動了 IGMP剪枝查詢功能,若是,執行步驟503 ;否則,執行步驟506。步驟503 IGMP窺探交換機從IGMP剪枝消息的接收端口向外發送針對該組播流的 IGMP剪枝查詢消息。
為防止IGMP剪枝消息的接收端口后同時連接著其它有接收該組播流需求的設備,可在IGMP窺探交換機的端口上開啟IGMP剪枝查詢功能,這樣,IGMP窺探交換機接收到 IGMP剪枝消息后,就可從該消息的接收端口向外發送IGMP剪枝查詢消息,以確認是否有其它設備有接收該組播流的需求。IGMP剪枝查詢功能是可選功能。當IGMP窺探交換機不存在同一端口連接多個交換機的情況,且所有的交換機都支持本發明所有實施例中提到的IGMP窺探交換機所具有的功能(可以不支持剪枝查詢功能),則不必開啟剪枝查詢功能,從而加速無用組播流的剪枝。IGMP窺探交換機發出的IGMP剪枝查詢消息會到達其它IGMP窺探交換機以及與該IGMP窺探交換機相連的第一跳PIM路由器。其它IGMP窺探交換機接收到IGMP剪枝查詢消息后的處理流程見圖6所示實施例,第一跳PIM路由器接收到IGMP剪枝查詢消息后的處理流程見圖7所示實施例。步驟504 IGMP窺探交換機判斷是否在最大響應時間內接收到響應的IGMP嫁接消息,若是,執行步驟505 ;否則,執行步驟506。步驟505 =IGMP窺探交換機不作處理,本流程結束。步驟506 IGMP窺探交換機判斷是否已建立針對該組播流的IGMP窺探表項,若是, 執行步驟507 ;否則,執行步驟514。步驟507 :IGMP窺探交換機將IGMP剪枝消息的接收端口作為剪枝端口添加到該 IGMP窺探表項中。步驟508 =IGMP窺探交換機判斷該IGMP窺探表項是否包含成員端口或路由器端口,若是,執行步驟509 ;否則,執行步驟510。這里的路由器端口不包括IGMP剪枝消息的接收端口。步驟509 =IGMP窺探交換機不作處理,本流程結束。若IGMP窺探表項包含成員端口或路由器端口,則表明有其它設備點播該組播流, 因此,不再轉發IGMP剪枝消息。步驟510 =IGMP窺探交換機根據IGMP剪枝消息的單播目的MAC地址,在單播MAC 表項中查找到出端口。步驟511 IGMP窺探交換機判斷該出端口是否已被標記為數據源端口,若是,執行步驟512 ;否則,執行步驟513。步驟512 IGMP窺探交換機將該IGMP剪枝消息從該出端口轉發出去,本流程結束。若該IGMP剪枝消息到達組播源,組播源接收到IGMP剪枝消息后的處理流程見圖 12所示實施例。步驟513 =IGMP窺探交換機將該出端口標記為數據源端口,將該IGMP剪枝消息從該出端口轉發出去,本流程結束。步驟514 =IGMP窺探交換機建立針對該組播流的IGMP窺探表項,并將該IGMP剪枝消息的接收端口記錄為該表項的剪枝端口。步驟515 :IGMP窺探交換機判斷自身是否存在路由器端口,若是,執行步驟516 ;否則,執行步驟517。這里的路由器端口不包括IGMP剪枝消息的接收端口。
步驟516 :IGMP窺探交換機將所有的路由器端口都添加到該IGMP窺探表項的出端口列表中,不轉發該IGMP剪枝消息,本流程結束。步驟517 =IGMP窺探交換機根據該IGMP剪枝消息的單播目的MAC地址查找單播 MAC表項,將該單播MAC表項的出端口記錄為該IGMP窺探表項的數據源端口,并將該IGMP 剪枝消息從該數據源端口轉發出去。若該IGMP剪枝消息到達組播源,組播源接收到IGMP剪枝消息后的處理流程見圖 12所示實施例。本實施例中,可以為IGMP窺探表項中的剪枝端口設置生命值,剪枝端口的生命值為PIM路由器上該組播流的(S,G)表項生命值的1/3,默認為1分鐘。這樣PIM DR可以每隔1分鐘收到一份該組播流。當剪枝端口的生命值一到,則將IGMP窺探表項中所有剪枝端口暫時恢復成路由器端口,以使得該端口可以轉發組播流,但是若在剪枝端口的生命值到達后的預設時間內未收到任何IGMP剪枝消息,則將該端口完全恢復成路由器端口,同時判斷該IGMP窺探表項中是否只包含路由器端口,而沒有其它角色的控制端口如成員端口, 若是,則刪除該IGMP窺探表項,以節約表項資源。若在剪枝端口的生命值到達后的預設時間內收到任何IGMP剪枝消息,則將該端口恢復為剪枝端口,并重設該剪枝端口的生命值。IGMP窺探交換機發出的IGMP剪枝查詢消息會到達其它IGMP窺探交換機以及與該 IGMP窺探交換機相連的第一跳PIM路由器。圖6為本發明實施例提供的IGMP窺探交換機接收到IGMP剪枝查詢消息后的處理流程圖,如圖6所示,其具體步驟如下步驟601 =IGMP窺探交換機接收針對一個組播流的IGMP剪枝查詢消息,在本地查找與該消息的源MAC地址對應的單播MAC表項。步驟602 :IGMP窺探交換機判斷是否查找到,若是,執行步驟603 ;否則,執行步驟 611。步驟603 :IGMP窺探交換機判斷查找到的單播MAC表項的出端口是否與該IGMP剪枝查詢消息的接收端口一致,若是,執行步驟604 ;否則,執行步驟611。步驟604 =IGMP窺探交換機判斷本地是否已建立針對該組播流的IGMP窺探表項, 若是,執行步驟605 ;否則,執行步驟608。步驟605 =IGMP窺探交換機判斷該IGMP窺探表項是否包含成員端口或路由器端口,若是,執行步驟606 ;否則,執行步驟607。這里的路由器端口不包括IGMP剪枝查詢消息的接收端口。步驟606 =IGMP窺探交換機在最大響應時間內響應單播IGMP嫁接消息,本流程結
束ο步驟607 =IGMP窺探交換機不作處理,本流程結束。步驟608 :IGMP窺探交換機判斷自身是否有路由器端口,若是,執行步驟609 ;否則,執行步驟610。這里的路由器端口不包括IGMP剪枝查詢消息的接收端口。步驟609 =IGMP窺探交換機從IGMP剪枝查詢消息的接收端口發送響應的單播 IGMP嫁接消息,本流程結束。步驟610 =IGMP窺探交換機不作處理,本流程結束。
步驟611 =IGMP窺探交換機丟棄該IGMP剪枝查詢消息,本流程結束。若查找到的單播MAC表項的出端口與IGMP剪枝查詢消息的接收端口不一致,則說明該組播流不從IGMP剪枝查詢消息的接收端口進入IGMP窺探交換機或者根本不經過該 IGMP窺探交換機;若查找不到對應的單播MAC表項,則說明與該組播流根本不經過該IGMP 窺探交換機。這兩種情況下,都不必理會該IGMP剪枝查詢消息。圖7為本發明實施例提供的第一跳PIM路由器接收到IGMP剪枝查詢消息后的處理流程圖,如圖7所示,其具體步驟如下步驟701 第一跳PIM路由器Rtr接收針對一個組播流的IGMP剪枝查詢消息。步驟702 =Rtr判斷本地是否有與該組播流對應的出接口列表不為空的IGMP窺探表項,若是,執行步驟703 ;否則,執行步驟704。步驟703 =Rtr在最大響應時間內返回單播IGMP嫁接消息,本流程結束。步驟704 =Rtr不作處理。對于被剪枝的組播流,此后當有設備點播該組播流時,需要嫁接該組播流。在下述三種情況下,需要嫁接從組播源到第一跳PIM路由器之間的組播流一、當下游PIM路由器下掛的客戶端點播該組播流時,此時,該客戶端會向下游 PIM路由器發送IGMP加入消息,下游PIM路由器接收到IGMP加入消息后,向第一跳PIM路由器發送PIM加入消息;二、當第一跳PIM路由器下掛的客戶端點播該組播流時,此時,該客戶端會向第一跳PIM路由器發送IGMP加入消息;三、當IGMP窺探交換機下掛的客戶端點播該組播流時,此時,該客戶端會向該 IGMP窺探交換機發送IGMP加入消息。以下給出本發明實施例提供的嫁接組播流的相關處理過程。圖8為本發明實施例提供的第一跳PIM路由器接收到來自下游PIM路由器的PIM 加入消息后的處理流程圖,如圖8所示,其具體步驟如下步驟801 第一跳PIM路由器Rtr接收下游PIM路由器發來的針對一個組播流的 PIM加入消息,在本地查找到與該組播流對應的(S,G)表項。當第一跳PIM路由器的下游PIM路由器下掛一臺客戶端時,如圖1所示,其中,PIM 路由器2為第一跳PIM路由器,PIM路由器1為PIM路由器2的下游PIM路由器,PIM路由器1下掛一客戶端1,若該客戶端點播一個組播流,則會向該下游PIM路由器發送針對該組播流的IGMP加入消息,下游PIM路由器接收到該IGMP加入消息時,會向第一跳PIM路由器, 如圖1中的PIM路由器2發送針對該組播流的PIM加入消息。步驟802 =Rtr判斷該(S,G)表項的出接口列表是否為空,若是,執行步驟803 ;否則,執行步驟804。步驟803 =Rtr將該PIM加入消息的接收接口加入到該(S,G)表項的出接口列表中,根據該消息的目的IP地址查找本地的單播路由表項,從單播路由表項中的出接口發送 IGMP嫁接消息,本流程結束。這里,IGMP嫁接消息的目的IP地址、目的MAC地址分別是組播源的IP地址、MAC 地址。IGMP嫁接消息會經過Rtr與組播源之間的IGMP窺探交換機到達組播源,IGMP窺探交換機接收到IGMP嫁接消息后的處理流程見圖11所示實施例,組播源接收到IGMP嫁接消息后的處理流程見圖12所示實施例。為防止IGMP嫁接消息丟失以保證盡快獲得組播流,Rtr可以以較高頻率發送IGMP 嫁接消息,直到接收到該組播流。步驟804 =Rtr按照現有PIM協議處理該PIM加入消息。圖9為本發明實施例提供的IGMP窺探交換機接收到IGMP加入消息后的處理流程圖,如圖9所示,其具體步驟如下步驟901 =IGMP窺探交換機接收針對一個組播流的IGMP加入消息,在本地查找與該組播流對應的IGMP窺探表項,將該消息的接收端口作為成員端口加入到查找到的IGMP 窺探表項中,并向所有路由器端口和剪枝端口轉發該IGMP加入消息。該IGMP加入消息可能會到達其它IGMP窺探交換機或者到達第一跳PIM路由器, 當其它IGMP窺探交換機接收到該IGMP加入消息時,其處理流程與本實施例相同,當第一跳 PIM路由器接收到該IGMP加入消息后的處理流程見圖10所示實施例。本步驟中的IGMP加入消息來自IGMP窺探交換機下掛的客戶端。步驟902 IGMP窺探交換機判斷IGMP加入消息是否來自數據源端口,若是,執行步驟903 ;否則,執行步驟906。步驟903 =IGMP窺探交換機判斷該IGMP窺探表項是否還存在其它數據源端口,若是,執行步驟904 ;否則,執行步驟905。步驟904 =IGMP窺探交換機向其它數據源端口發送針對該組播流的IGMP嫁接消息,本流程結束。該IGMP嫁接消息的目的IP地址、目的MAC地址分別為組播源的IP地址、MAC地址,則該消息會經過其它IGMP窺探交換機到達組播源或者直接到達組播源,其它IGMP窺探交換機接收到該IGMP嫁接消息后的處理流程見圖11所示實施例,組播源接收到IGMP嫁接消息后的后的處理流程見圖12所示實施例。步驟905 =IGMP窺探交換機不發送針對該組播流的IGMP嫁接消息,本流程結束。步驟906 IGMP窺探交換機向該IGMP窺探表項中的所有數據源端口發送針對該組播流的IGMP嫁接消息。這里,若IGMP窺探表項沒有數據源端口,則不需轉發IGMP嫁接消息。圖10為本發明實施例提供的第一跳PIM路由器Rtr接收到IGMP加入消息后的處理流程圖,如圖10所示,其具體步驟如下步驟1001 第一跳PIM路由器Rtr接收針對一個組播流的IGMP加入消息。本步驟中的IGMP加入消息的來源有如下兩種情況來源一、當第一跳PIM路由器下掛一臺客戶端時,如圖1所示,PIM路由器2為第一跳PIM路由器,其下掛一客戶端2,若該客戶端點播一個組播流,則該客戶端會向第一跳PIM 路由器發送IGMP加入消息。來源二、當第一跳PIM路由器與組播源之間的IGMP窺探交換機下掛一客戶端時, 如圖1所示,PIM路由器2為第一跳PIM路由器,PIM路由器2與組播源1、2之間的IGMP窺探交換機1下掛一客戶端3,若該客戶端點播一個組播流,則該客戶端會向該IGMP窺探交換機發送IGMP加入消息,IGMP窺探交換機會將該IGMP加入消息轉發給第一跳PIM路由器。步驟1002 =Rtr判斷本地是否已建立與該組播流對應的(S,G)表項,若是,執行步驟1003 ;否則,執行步驟1008。步驟1003 =Rtr判斷該(S,G)表項的出接口列表是否為空,若是,執行步驟1004 ; 否則,執行步驟1007。步驟1004 =Rtr判斷該IGMP加入消息是否來自指向組播源的接口,若是,執行步驟 1005 ;否則,執行步驟1006。IGMP加入消息來自指向組播源的接口,即該IGMP加入消息的來源屬于步驟1001 中的來源二,此時,無需將該IGMP加入消息的接收接口添加到對應(S,G)表項的出接口列表中,也不發送IGMP嫁接消息。步驟1005 =Rtr不作處理,本流程結束。步驟1006 :Rtr將該IGMP加入消息的接收接口添加到該(S,G)表項的出接口列表中,并向組播源S方向發送針對該組播流的IGMP嫁接消息,本流程結束。這里,IGMP嫁接消息的目的IP地址、目的MAC地址分別是組播源的IP地址、MAC 地址。IGMP嫁接消息會經過Rtr與組播源之間的IGMP窺探交換機到達組播源,IGMP窺探交換機接收到IGMP嫁接消息后的處理流程見圖11所示實施例,組播源接收到IGMP嫁接消息后的處理流程見圖12所示實施例。為防止IGMP嫁接消息丟失以保證盡快獲得組播流,可以以較高頻率發送IGMP嫁接消息,直到接收到該組播流。步驟1007 =Rtr按照現有PIM協議處理,本流程結束。這里,按照現有PIM協議,Rtr會將IGMP加入消息的接收接口添加到(S,G)表項的出接口列表中。步驟1008 =Rtr按照現有PIM協議處理。這里,按照現有PIM協議,Rtr會建立與組播流對應的(S,G)表項,然后將IGMP加入消息的接收接口添加到該(S,G)表項的出接口列表中。圖11為本發明實施例提供的IGMP窺探交換機接收到IGMP嫁接消息后的處理流程圖,如圖11所示,其具體步驟如下步驟1101 =IGMP窺探交換機接收針對一個組播流的IGMP嫁接消息。步驟1102 IGMP窺探交換機判斷本地是否已建立針對該組播流的IGMP窺探表項, 若是,執行步驟1103 ;否則,執行步驟1110。步驟1103 =IGMP窺探交換機判斷該IGMP嫁接消息的接收端口是否為該IGMP窺探表項的剪枝端口,若是,執行步驟1104 ;否則,執行步驟1110。步驟1104 =IGMP窺探交換機判斷該IGMP窺探表項是否只包含剪枝端口,若是,執行步驟1105 ;否則,執行步驟1106。本步驟中不考慮數據源端口,S卩若IGMP窺探表項除了剪枝端口和數據源端口外,不包含其它端口如路由器端口或成員端口,則也執行步驟1105。步驟1105 =IGMP窺探交換機將該IGMP嫁接消息轉發出去,本流程結束。這里,若IGMP嫁接消息為單播消息,則根據該消息的目的MAC地址查找單播MAC 表項,將該消息從單播MAC表項中的出端口轉發出去;若IGMP嫁接消息為組播消息,則將該消息向所有端口轉發。該IGMP嫁接消息會經過其它IGMP窺探交換機到達組播源或者直接到達組播源,其它IGMP窺探交換機接收到該IGMP嫁接消息后的處理流程與實施例相同,組播源接收到 IGMP嫁接消息后的后的處理流程見圖12所示實施例。步驟1106 =IGMP窺探交換機將該剪枝端口恢復為路由器端口,以使得該端口可轉發組播流。若該IGMP窺探表項不只包含剪枝端口,則說明該IGMP窺探表項還包含成員端口或路由器端口,因此,不用轉發IGMP嫁接消息。步驟1107 =IGMP窺探交換機判斷該IGMP窺探表項是否還包含其它類型端口,若是,執行步驟1108 ;否則,執行步驟1109。步驟1108 =IGMP窺探交換機不作進一步處理,本流程結束。步驟1109 IGMP窺探交換機刪除該IGMP窺探表項,本流程結束。步驟1110 =IGMP窺探交換機不作進一步處理,本流程結束。步驟1110的情形通常發生在IGMP窺探交換機收到IGMP剪枝消息后向外發送 IGMP剪枝查詢消息而得到響應的IGMP嫁接消息,因此,此時沒必要將收到的IGMP嫁接消息繼續轉發。圖12為本發明實施例提供的組播源設備接收到IGMP剪枝和嫁接消息后的處理流程圖,如圖12所示,其具體步驟如下步驟1201 組播源接收針對一個組播流的IGMP剪枝消息,暫停發送該組播流,并設置剪枝時間。剪枝時間可為1分鐘,剪枝時間一到,則繼續發送該組播流。步驟1202 組播源接收針對一個組播流的IGMP嫁接消息,恢復發送該組播流。若組播源不識別IGMP剪枝和嫁接消息,則直接丟棄該消息,不做任何處理。PIM協議有四個模式,PIM DM、PIM SM、PIM SSM、雙向PIM。其中PIM DM和雙向PIM 都以下游設備需要組播流為假設前提進行設計,不適合點播模式。因此,本發明實施例針對的是PIM SSM和PIM SM兩個模式。當采用IGMP時,若PIM協議為PIM SSM,則IGMP版本必須是IGMPv3,IGMP窺探版本必須是 IGMPv3-Snooping。需要說明的是,本發明中,并不要求所有的組管理窺探交換機和組播源都支持本發明實施例中提到的剪枝特性和嫁接特性,同時,若不是所有的組管理窺探交換機都支持本發明實施例中提到的剪枝特性和嫁接特性,則需要在支持剪枝特性的組管理窺探交換機上使能組管理剪枝查詢功能。對于不支持剪枝特性的組管理窺探交換機接收到本發明新增的消息如組管理剪枝消息、組管理嫁接消息后,可以直接向所有端口轉發該消息;若組播源不支持本發明實施例提到的剪枝特性和嫁接特性,則可忽略組管理剪枝消息和組管理嫁接消息。圖13為本發明實施例提供的PIM路由器的組成示意圖,該PIM路由器為第一跳 PIM路由器,直接通過組管理窺探交換機連接到組播源,如圖13所示,該PIM路由器包括 第一模塊和第二模塊,其中第一模塊接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求,或者,接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,將該消息的接收接口從該組播流的出接口列表中刪除,若發現本地已經沒有接收該組播流的需求,則向第二模塊發送攜帶所述組播流標識的剪枝指示。組播流標識為組播組信息,或組播源信息+組播組信息。第二模塊接收第一模塊發來的剪枝指示,根據該指示中的組播流標識,從所述組播流的入接口處向外發送組管理剪枝消息。PIM路由器還可包括第三模塊用于接收針對一個組播流的組管理剪枝查詢消息,判斷本地是否有與所述組播流對應的組播路由表項,若有且該組播路由表項的出接口列表不為空,則在最大響應時間內響應組管理嫁接消息。PIM路由器還可包括第四模塊用于接收下游PIM路由器發來的針對一個組播流的PIM加入消息或者自身下掛客戶端發來的針對一個組播流的組管理加入消息,向該組播流的組播源方向發送組管理嫁接消息。第四模塊進一步用于,當接收到下游PIM路由器發來的針對一個組播流的PIM加入消息之后,判斷本地是否已建立與所述組播流對應的組播路由表項,若是且該組播路由表項的出接口列表為空,則將所述PIM加入消息的接收接口添加到該組播路由表項的出接口列表中,并執行向該組播流的組播源方向發送組管理嫁接消息的動作。以下給出本發明實施例提供的組管理窺探交換機的組成,該組管理窺探交換機位于組播源與第一跳PIM路由器之間,該交換機主要包括第一模塊、第二模塊、第三模塊和第四模塊,其中第一模塊接收針對一個組播流的組管理剪枝消息,將該消息的接收端口作為剪枝端口,并將該剪枝端口添加到與所述組播流對應的組管理窺探表項中,不再向所述剪枝端口轉發所述組播流。第一模塊進一步用于,為所述剪枝端口設置剪枝時間,且,當該剪枝時間到達后, 開始允許向所述剪枝端口轉發所述組播流。第一模塊進一步用于,當接收到針對一個組播流的組管理剪枝消息之后,若發現本地未建立與所述組播流對應的組管理窺探表項,則建立與所述組播流對應的組管理窺探表項;且,將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后,判斷本交換機是否存在路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。第一模塊進一步用于,當接收到針對一個組播流的組管理剪枝消息之后,若發現本地已建立與所述組播流對應的組管理窺探表項,則直接執行所述將該剪枝端口添加到與所述組播流對應的組管理窺探表項中的動作;且,判斷所述組管理窺探表項是否包含成員端口或路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。第一模塊進一步用于,當接收到針對一個組播流的組管理剪枝消息之后,從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息,若未在最大響應時間內接收到任何響應的組管理嫁接消息,則執行所述將該消息的接收端口作為剪枝端口的動作。第二模塊接收其它組管理窺探交換機發來的組管理剪枝查詢消息,根據消息的源MAC地址查找單播MAC表項,若查找到且單播MAC表項的出端口與組管理剪枝查詢消息的接收端口一致,則判斷本地是否已建立與所述組播流對應的組管理窺探表項,若已建立且該組管理窺探表項包含成員端口或路由器端口,或者,若未建立但本交換機具有路由器端口,則在最大響應時間內響應組管理嫁接消息。第三模塊接收針對一個組播流的組管理嫁接消息,查找與該組播流對應的組管理窺探表項,將表項中的剪枝端口恢復為路由器端口,開始允許向該路由器端口轉發所述組播流。第三模塊進一步用于,當接收到針對一個組播流的組管理嫁接消息之后,判斷本地與所述組播流對應組管理窺探表項是否只包含剪枝端口,若是,則轉發所述組管理嫁接消息,并執行所述將所述剪枝端口恢復為路由器端口的動作;否則,直接執行所述將所述剪枝端口恢復為路由器端口的動作。第四模塊接收針對一個組播流的組管理加入消息,在本地查找與該組播流對應的組管理窺探表項,將該組管理加入消息的接收端口作為成員端口添加到所述組管理窺探表項中,并向所有路由器端口和剪枝端口轉發該組管理加入消息;判斷該組管理加入消息是否來自數據源端口,若來自且所述組管理窺探表項還存在其它數據源端口,則向其它數據源端口發送組管理嫁接消息;若不來自,則向所述組管理窺探表項中的所有數據源端口發送組管理嫁接消息。以下給出本發明實施例提供的組播源的組成,其主要包括第一模塊和第二模塊, 其中第一模塊接收針對一個組播流的組管理剪枝消息,暫停發送所述組播流。第二模塊接收針對所述組播流的組管理嫁接消息,恢復發送所述組播流。以上所述僅為本發明的較佳實施例而已,并不用以限制本發明,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明保護的范圍之內。
權利要求
1.一種組播剪枝方法,組播源通過組管理窺探交換機連接到第一跳協議無關組播PIM 路由器,其特征在于,該方法包括所述第一跳PIM路由器接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;或者,所述第一跳PIM路由器接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息, 將該消息的接收接口從該組播流的出接口列表中刪除,若發現本地已經沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;當所述組管理窺探交換機接收到所述組管理剪枝消息后,將該消息的接收端口作為剪枝端口,并將該剪枝端口添加到與所述組播流對應的組管理窺探表項中,不再向所述剪枝端口轉發所述組播流。
2.根據權利要求1所述的方法,其特征在于,所述組管理窺探交換機將該消息的接收端口作為剪枝端口的同時進一步包括為該剪枝端口設置剪枝時間,且,當該剪枝時間到達后,開始允許向所述剪枝端口轉發所述組播流。
3.根據權利要求1所述的方法,其特征在于,所述第一跳PIM路由器發現本地沒有接收該組播流的需求包括第一跳PIM路由器發現本地未建立與所述組播流對應的組播路由表項,或者雖建立了與所述組播流對應的組播路由表項但該表項的出接口列表為空,則確定本地沒有接收該組播流的需求。
4.根據權利要求1所述的方法,其特征在于,所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機發現本地未建立與所述組播流對應的組管理窺探表項,則建立與所述組播流對應的組管理窺探表項;且,所述將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括組管理窺探交換機判斷自身是否存在路由器端口,若否,則根據所述組播源的目的MAC 地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。
5.根據權利要求1所述的方法,其特征在于,所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機發現本地已建立與所述組播流對應的組管理窺探表項;且,所述組管理窺探交換機將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括組管理窺探交換機判斷所述組管理窺探表項是否包含成員端口或路由器端口,若否, 則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。
6.根據權利要求4或5所述的方法,其特征在于,所述組管理窺探交換機從該出端口向外發送組管理剪枝消息之后進一步包括所述組播源接收到所述組管理剪枝消息,暫停發送所述組播流。
7.根據權利要求1所述的方法,其特征在于,所述組管理窺探交換機接收到所述組管理剪枝消息之后、將該消息的接收端口作為剪枝端口之前進一步包括組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息,若未在最大響應時間內接收到任何響應的組管理嫁接消息,則執行所述將該消息的接收端口作為剪枝端口的動作。
8.根據權利要求7所述的方法,其特征在于,所述組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息之后進一步包括其它組管理窺探交換機接收到所述組管理剪枝查詢消息,根據消息的源MAC地址查找單播MAC表項,若查找到且單播MAC表項的出端口與組管理剪枝查詢消息的接收端口一致, 則判斷本地是否已建立與所述組播流對應的組管理窺探表項,若已建立且該組管理窺探表項包含成員端口或路由器端口,或者,若未建立但本交換機具有路由器端口,則在最大響應時間內響應組管理嫁接消息。
9.根據權利要求7所述的方法,其特征在于,所述組管理窺探交換機從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息之后進一步包括PIM路由器接收到所述組管理剪枝查詢消息,判斷本地是否有與所述組播流對應的組播路由表項,若有且該組播路由表項的出接口列表不為空,則在最大響應時間內響應組管理嫁接消息。
10.根據權利要求1或4或5所述的方法,其特征在于,所述組管理窺探交換機將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后進一步包括所述第一跳PIM路由器接收下游PIM路由器發來的針對所述組播流的PIM加入消息或者自身下掛客戶端發來的針對所述組播流的組管理加入消息,向所述組播源方向發送組管理嫁接消息;所述組管理窺探交換機接收所述組管理嫁接消息,將所述剪枝端口恢復為路由器端口,開始允許向該路由器端口轉發所述組播流。
11.根據權利要求10所述的方法,其特征在于,所述第一跳PIM路由器接收下游PIM路由器發來的針對所述組播流的PIM加入消息之后、向所述組播源方向發送組管理嫁接消息之前進一步包括第一跳PIM路由器判斷本地是否已建立與所述組播流對應的組播路由表項,若是且該組播路由表項的出接口列表為空,則將所述PIM加入消息的接收接口添加到該組播路由表項的出接口列表中,并執行所述向組播源方向發送組管理嫁接消息的動作。
12.根據權利要求10所述的方法,其特征在于,所述方法進一步包括組管理窺探交換機接收針對所述組播流的組管理加入消息,在本地查找與該組播流對應的組管理窺探表項,將該組管理加入消息的接收端口作為成員端口添加到所述組管理窺探表項中,并向所有路由器端口和剪枝端口轉發該組管理加入消息;組管理窺探交換機判斷該組管理加入消息是否來自數據源端口,若來自且所述組管理窺探表項還存在其它數據源端口,則向其它數據源端口發送組管理嫁接消息;若不來自,則向所述組管理窺探表項中的所有數據源端口發送組管理嫁接消息。
13.根據權利要求10所述的方法,其特征在于,所述組管理窺探交換機接收所述組管理嫁接消息之后、將所述剪枝端口恢復為路由器端口之前進一步包括所述組管理窺探交換機判斷本地與所述組播流對應組管理窺探表項是否只包含剪枝端口,若是,則轉發所述組管理嫁接消息,并執行所述將所述剪枝端口恢復為路由器端口的動作;否則,直接執行所述將所述剪枝端口恢復為路由器端口的動作。
14.根據權利要求13所述的方法,其特征在于,所述組管理窺探交換機轉發所述組管理嫁接消息之后進一步包括所述組播源接收所述組管理嫁接消息,恢復發送所述組播流。
15.根據權利要求1所述的方法,其特征在于,所述組管理窺探交換機支持互聯網組管理協議IGMP或組播偵聽者發現協議MLD協議。
16.一種PIM路由器,該PIM路由器直接通過組管理窺探交換機連接到組播源,其特征在于,該PIM路由器包括第一模塊,接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求,或者, 接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,將該消息的接收接口從該組播流的出接口列表中刪除,若發現本地已經沒有接收該組播流的需求,則向第二模塊發送剪枝指示;第二模塊,接收所述剪枝指示,從所述組播流的入接口處向外發送組管理剪枝消息。
17.根據權利要求16所述的PIM路由器,其特征在于,所述PIM路由器進一步包括 第三模塊,接收組管理剪枝查詢消息,判斷本地是否有與所述組播流對應的組播路由表項,若有且該組播路由表項的出接口列表不為空,則在最大響應時間內響應組管理嫁接消息。
18.根據權利要求16所述的PIM路由器,其特征在于,所述PIM路由器進一步包括 第四模塊,接收下游PIM路由器發來的針對所述組播流的PIM加入消息或者自身下掛客戶端發來的針對所述組播流的組管理加入消息,向所述組播源方向發送組管理嫁接消肩、ο
19.根據權利要求16所述的PIM路由器,其特征在于,所述第四模塊進一步用于, 當接收到下游PIM路由器發來的針對所述組播流的PIM加入消息之后,判斷本地是否已建立與所述組播流對應的組播路由表項,若是且該組播路由表項的出接口列表為空,則將所述PIM加入消息的接收接口添加到該組播路由表項的出接口列表中,并執行所述向組播源方向發送組管理嫁接消息的動作。
20.一種組管理窺探交換機,位于組播源與第一跳PIM路由器之間,其特征在于,該交換機包括第一模塊,接收組管理剪枝消息,將該消息的接收端口作為剪枝端口,并將該剪枝端口添加到與所述組播流對應的組管理窺探表項中,不再向所述剪枝端口轉發所述組播流。
21.根據權利要求20所述的交換機,其特征在于,所述第一模塊進一步用于,為所述剪枝端口設置剪枝時間,且,當該剪枝時間到達后,開始允許向所述剪枝端口轉發所述組播流。
22.根據權利要求20所述的交換機,其特征在于,所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,若發現本地未建立與所述組播流對應的組管理窺探表項,則建立與所述組播流對應的組管理窺探表項;且,將該剪枝端口添加到與所述組播流對應的組管理窺探表項中之后,判斷本交換機是否存在路由器端口,若否,則根據所述組播源的目的MAC地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。
23.根據權利要求20所述的交換機,其特征在于,所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,若發現本地已建立與所述組播流對應的組管理窺探表項,則直接執行所述將該剪枝端口添加到與所述組播流對應的組管理窺探表項中的動作;且,判斷所述組管理窺探表項是否包含成員端口或路由器端口,若否,則根據所述組播源的目的MAC 地址查找單播MAC表項,將查找到的單播MAC表項中的出端口標記為數據源端口,從該出端口向外發送組管理剪枝消息。
24.根據權利要求20所述的交換機,其特征在于,所述第一模塊進一步用于,當接收到所述組管理剪枝消息之后,從組管理剪枝消息的接收端口向外發送組管理剪枝查詢消息, 若未在最大響應時間內接收到任何響應的組管理嫁接消息,則執行所述將該消息的接收端口作為剪枝端口的動作。
25.根據權利要求20所述的交換機,其特征在于,所述交換機進一步包括第二模塊,接收其它組管理窺探交換機發來的組管理剪枝查詢消息,根據消息的源MAC 地址查找單播MAC表項,若查找到且單播MAC表項的出端口與組管理剪枝查詢消息的接收端口一致,則判斷本地是否已建立與所述組播流對應的組管理窺探表項,若已建立且該組管理窺探表項包含成員端口或路由器端口,或者,若未建立但本交換機具有路由器端口,則在最大響應時間內響應組管理嫁接消息。
26.根據權利要求20所述的交換機,其特征在于,所述交換機進一步包括第三模塊,接收組管理嫁接消息,將所述剪枝端口恢復為路由器端口,開始允許向該路由器端口轉發所述組播流。
27.根據權利要求20或沈所述的交換機,其特征在于,所述交換機進一步包括第四模塊,接收針對所述組播流的組管理加入消息,在本地查找與該組播流對應的組管理窺探表項,將該組管理加入消息的接收端口作為成員端口添加到所述組管理窺探表項中,并向所有路由器端口和剪枝端口轉發該組管理加入消息;判斷該組管理加入消息是否來自數據源端口,若來自且所述組管理窺探表項還存在其它數據源端口,則向其它數據源端口發送組管理嫁接消息;若不來自,則向所述組管理窺探表項中的所有數據源端口發送組管理嫁接消息。
28.根據權利要求沈所述的交換機,其特征在于,所述第三模塊進一步用于,當接收到所述組管理嫁接消息之后,判斷本地與所述組播流對應組管理窺探表項是否只包含剪枝端口,若是,則轉發所述組管理嫁接消息,并執行所述將所述剪枝端口恢復為路由器端口的動作;否則,直接執行所述將所述剪枝端口恢復為路由器端口的動作。
29.—種組播源,其特征在于,包括第一模塊,接收針對一個組播流的組管理剪枝消息,暫停發送所述組播流。
30.根據權利要求四所述的組播源,其特征在于,所述組播源進一步包括第二模塊,接收針對所述組播流的組管理嫁接消息,恢復發送所述組播流。
全文摘要
本發明公開了組播剪枝方法及協議無關組播路由器、組管理窺探交換機。組播源通過組管理窺探交換機連接到第一跳PIM路由器。方法包括第一跳PIM路由器接收所述組播源發來的組播流,發現本地沒有接收該組播流的需求;或者,所述第一跳PIM路由器接收下游PIM路由器發來的針對一個組播流的PIM剪枝消息,將該消息的接收接口從該組播流的出接口列表中刪除,之后發現本地已經沒有接收該組播流的需求,則從該組播流的入接口處向外發送組管理剪枝消息;當所述組管理窺探交換機接收到所述組管理剪枝消息后,將該消息的接收端口作為剪枝端口,不再向所述剪枝端口轉發所述組播流。本發明剪枝了從組播源到第一跳PIM路由器之間的無用組播流。
文檔編號H04L12/56GK102377639SQ201010249670
公開日2012年3月14日 申請日期2010年8月10日 優先權日2010年8月10日
發明者劉宇, 史揚, 周迪 申請人:杭州華三通信技術有限公司