组播剪枝方法及协议无关组播路由器、组管理窥探交换机的制作方法

文档序号:7756446阅读:198来源:国知局
专利名称:组播剪枝方法及协议无关组播路由器、组管理窥探交换机的制作方法
技术领域
本发明涉及组播技术领域,具体涉及组播剪枝方法、协议无关组播路由器(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日
发明者刘宇, 史扬, 周迪 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1