组播剪枝方法及协议无关组播路由器、二层交换机的制作方法

文档序号:7897910阅读:505来源:国知局
专利名称:组播剪枝方法及协议无关组播路由器、二层交换机的制作方法
技术领域
本发明涉及组播技术领 域,具体涉及组播剪枝方法、协议无关组播路由器(PIM, Protocol Independent Multicast)及二层交换机。
背景技术
为便于理解,首先给出如下概念说明组播一种与单播和广播并列的通信方式,组播系统由组播源、接收者和组播组组 成。源主机只发送一份数据,这份数据中的目的地址为组播组地址;组播组中的所有接收者 都可接收到同样的数据拷贝,并且只有组播组内的主机可以接收该数据。互联网组管理协议(IGMP,Internet Group Management Protocol)传输控制协 iX / Nt^il (TCP/IP, Transmission Control Protocol/Internet Protocol)十办H 中负责IP组播成员管理的协议,用来在IP主机和与其直接相邻的组播路由器之间建立、维 护组播组成员关系。IGMP 窥探(IGSP, Internet Group Management Protocol Snooping)运行在二 层设备上的组播约束机制,用于管理和控制组播组。运行IGMP窥探的二层设备通过对收到 的IGMP报文进行分析,为端口和媒体接入控制(MAC,Media Access Control)组播地址建 立起映射关系,并根据该映射关系转发组播数据。PIM 表示可以利用静态路由或者任意单播路由协议如RIP、OSPF, IS-IS、BGP等 所生成的单播路由表为IP组播提供路由;实现维护三层设备之间的组播数据传播。PIM协 议有四个模式PIM密集模式(DM,Dense Mode)、PIM稀疏模式(SM,Sparse Mode)、PIM源 特定组播(SSM, Source-Specific Multicast)和双向 PIM。IP组播技术有效地解决了单点发送多点接收的问题,实现了 IP网络中点到多点 的高效数据传送,能够大量节约网络带宽、降低网络负载。利用网络的组播特性,一些新的 增值业务,包括在线直播、网络电视、远程教育、远程医疗、网络电台、实时视频会议等互联 网的信息服务得到了快速的发展。PIM协议是目前主流的组播路由协议。IGMP窥探和PIM窥探是主流的二层组播控 制协议,其中,PIM窥探的重要性仅次于IGMP窥探,PIM窥探用于侦听PIM hello和PIM加 入、PIM剪枝消息,以控制组播流向有需求的路由器转发。但是,PIM窥探交换机只有处于 PIM路由器之间才能发挥作用,处于PIM路由器和组播源之间则无法发挥作用。在点播性质的组播应用中,业界尚未很好地解决PIM路由器组播源侧的流量控 制。图1为一个组播组网示例图,如图1所示,组播源通过二层交换机接入,客户端通过二 层交换机或PIM路由器接入,多个二层交换机汇聚到一个PIM路由器上。如组播源1、2分 别通过二层交换机5、6接入,二层交换机1、2汇聚到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剪枝消 息或者接收自身下挂客户端发来的针对一个组播流的组管理离开消息,将该消息的接收接 口从该组播流的出接口列表中删除,若发现已经没有接收该组播流的需求,则从该组播流 的入接口处向外发送PIM剪枝消息。一种组播剪枝方法,组播源通过具备协议无关组播PIM窥探功能的二层交换机连 接到第一跳PIM路由器,该方法包括二层交换机接收所述第一跳PIM路由器发来的PIM剪枝消息,发现消息中的上游 邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表中,则将该消息的接收端口作 为剪枝端口,并将该剪枝端口添加到与所述组播流对应的PIM窥探表项中,不再向所述剪 枝端口转发所述组播流。一种PIM路由器,该PIM路由器直接通过二层交换机连接到组播源,该PIM路由器 包括第一模块,接收所述组播源发来的组播流,发现没有接收该组播流的需求,或者, 接收下游PIM路由器发来的针对一个组播流的PIM剪枝消息或者接收本PIM路由器下挂客 户端发来的针对一个组播流的组管理离开消息,将该消息的接收接口从该组播流的出接口 列表中删除,若发现已经没有接收该组播流的需求,则向第二模块发送剪枝指示;第二模块,接收所述剪枝指示,从所述组播流的入接口处向外发送PIM剪枝消息。一种具备PIM窥探功能的二层交换机,位于组播源与第一跳PIM路由器之间,该交 换机包括第一模块,接收针对一个组播流的PIM剪枝消息,发现消息中的上游邻居地址不 在自身利用PIM窥探功能维护的PIM路由器列表中,则将该消息的接收端口作为剪枝端口,并将该剪枝端口添加到与所述组播流对应的PIM窥探表项中,不再向所述剪枝端口转发所 述组播流。与现有技术相比,本发明无需对组网做出任何限制,就可剪枝从组播源到PIM路 由器之间的无用组播流,节省了带宽和交换机的出端口缓存。


图1为一个组播组网示例图;图2为本发明实施例提供的组播剪枝方法流程图;图3为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器接收到组播流后的处理流程图;图4为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器Rtr接收到来自下游PIM路由器的PIM剪枝消息或者来自自身下挂客户端发来的 IGMP离开消息后的处理流程图;图5为本发明实施例提供的二层交换机接收到PIM剪枝消息后的处理流程图;图6为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器接收到来自下游PIM路由器的PIM加入消息后的处理流程图;图7为本发明实施例提供的二层交换机接收到IGMP加入消息后的处理流程图;图8为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器Rtr接收到IGMP加入消息后的处理流程图;图9为本发明实施例提供的二层交换机接收到PIM加入消息后的处理流程图;图10为本发明实施例提供的当第一跳PIM路由器采用PIM SM模式时,第一跳PIM 路由器接收到组播流后的处理流程图;图11为本发明实施例提供的当第一跳PIM路由器采用PIM DM模式时,第一跳PIM 路由器接收到组播流后的处理流程图;图12为本发明实施例提供的当第一跳PIM路由器采用PIM DM模式时,第一跳PIM 路由器Rtr接收到来自PIM邻居的PIM嫁接消息后的处理流程图;图13为本发明实施例提供的PIM路由器的组成示意图。
具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明中,假设全网使用的组管理协议版本相同,即,或统一使用IGMPv2,或 统一使用IGMPv3,或统一使用组播侦听者发现协议版本l(MLDvl,Multicast Listener Discovery Protocol Versionl)或统一使用 MLDv2。 若本发明实施例采用的组管理协议为IGMPv2或MLDvl,则不同的组播流以组播组 标识区分;若本发明实施例采用的组管理协议为IGMPv3或MLDv2,则不同的组播流以组播 源标识+组播组标识区分。本发明中,PIM协议采用PIM SSM或PIM SM或PIM DM模式。当采用PIM SSM模 式时,IGMP版本必须是IGMPv3,IGSP版本必须是IGMPv3窥探。本发明中,具备PIM窥探功能的二层交换机新增了一个端口角色剪枝端口。当具备PIM窥探功能的二层交换机收到来自第一跳PIM路由器的针对一个组播流的PIM剪枝消 息时,该消息的接收端口就成为剪枝端口。此后,该组播流不得向该剪枝端口转发。对于一个支持组播的二层交换机来说,其端口角色共有四个来自IGMP窥探的路 由器端口(router port)、成员端口(membership port),来自PIM窥探的剪枝端口、上游端 口 (upstream port)。这里,将下游端口 (downstream port),即收到PIM加入消息的端口, 也称为路由器端口,因为其作用与路由器端口相同,都是连接路由器的、需要转发所有组播 流的端口。四种端口分开维护。但是,当一个端口同时具有成员端口、剪枝端口、路由器端口 三个角色中的全部或任两个时,其端口角色的优先级顺序从高到低依次为成员端口、剪枝 端口、路由器端口。对于二层转发表项PIM窥探表项和IGMP窥探表项来说,对该端口的处 理规则是若该端口的最高优先级角色是成员端口,则二层转发表项包含该端口 ;若该端 口的最高优先级角色是剪枝端口,则二层转发表项不包含该端口。另外,若一个端口的角色 只是路由器端口,则认为其最高优先级角色是路由器端口,二层转发表项包含该端口。同时,若二层交换机的PIM窥探表项中的上游邻居列表为空,则不需将二层交换 机的上游端口加入到PIM窥探表项的下游出端口列表中。其中,PIM窥探表项的内容包含 (S,G)表项,上游邻居列表,下游出端口列表,等。以下以组管理协议采用IGMP为例,对本发明进行详细说明,当组管理协议采用 MLD协议时,将本发明所有实施例中的“ IGMP”替换为“MLD”即可。图2为本发明实施例提供的组播剪枝方法流程图,如图2所示,其具体步骤如下步骤201 二层交换机接收来自PIM路由器的PIM hello消息,利用IGMP窥探功 能,将该消息的接收端口设置为路由器端口 ;利用PIM窥探功能,根据该消息维护PIM路由 器列表,其中,每项PIM路由器信息包括发来PIM hello消息的PIM路由器地址和本交换 机与该PIM路由器连接的端口号。其中,发来PIM hello消息的PIM路由器地址可以从PIM hello消息的源地址字 段获取,本交换机与PIM路由器连接的端口号即,本交换机接收PIM hello消息的端口号。对于一个PIM路由器来说,其上启用PIM协议的接口会定时向外发送PIM hello消息。二层交换机接收到PIM hello消息后,也会将该消息向其它二层交换机转发,其它 二层交换机收到该消息后,也进行如步骤201所述的处理。步骤202 当组播源发出的一个组播流经由路由器端口到达第一跳PIM路由器时, 第一跳PIM路由器发现没有接收该组播流的需求,则从该组播流的入接口处向外发送针对 该组播流的PIM剪枝消息。步骤203 当第一跳PIM路由器接收到下游PIM路由器发来的针对一个组播流的 PIM剪枝消息或者接收到自身下挂客户端发来的针对一个组播流的IGMP离开消息时,查找 与该组播流对应的组播路由表项,将该消息的接收接口从该表项中删除,若发现该表项的 出接口列表为空,则从该组播流的入接口处向外发送针对该组播流的P頂剪枝消息。步骤202、203中的PIM剪枝消息的发送是限速的,即不会因为一直收到相同的组 播流而频繁发送相同的PIM剪枝消息,发送间隔缺省为1分钟一次,直到该组播流被剪枝或 本地有接收该组播流的需求。
步骤204 第一跳PIM路由器与组播源之间的二层交换机接收该PIM剪枝消息,发现该消息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表中,则将该 PIM剪枝消息的接收端口设置为剪枝端口,此后不再向剪枝端口转发该组播流。从图2可以看出,在下述两种情况下,需要剪枝从组播源到第一跳PIM路由器之间 的组播流一、根本没有接收该组播流的需求;二、之前有接收该组播流的需求,但当前要求停止接收。图3、图4分别给出了当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM路由 器针对上述两种情况的详细处理图3为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器接收到组播流后的处理流程图,如图3所示,其具体步骤如下步骤301 第一跳PIM路由器Rtr周期性地从自身的各PIM接口向外发送PIM hello消息。步骤302:二层交换机接收PIM hello消息,利用IGMP窥探功能将该消息的接收 端口设置为路由器端口,并将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 ;否 贝U,执行步骤307。步骤306 :Rtr更新该(S,G)表项的老化时间,并从该组播流的入接口向外发送 PIM剪枝消息,本流程结束。PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组播源的IP地 址,目的MAC地址为组播源的MAC地址。由于Rtr是从组播流的入接口向外发送PIM剪枝消息,则该消息会到达Rtr与组 播源之间的二层交换机。该二层交换机接收到该PIM剪枝消息后的处理流程见图5所示实 施例。步骤307 :Rtr按照该出接口列表中的出接口信息,向外转发该组播流,本流程结束。步骤308 :Rtr建立与该组播流对应的(S,G)表项,并设置表项老化时间,从该组播 流的入接口向外发送PIM剪枝消息。这里,(S,G)表项老化时间通常为3分钟。PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组播源的IP地址,目的MAC地址为组播源的MAC地址。若采用PIM SM模式,则本步骤中,在建立(S,G)表项后,Rtr还需向RP发送针对 该组播流的源注册消息。

图4为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器Rtr接收到来自下游PIM路由器的PIM剪枝消息或者来自自身下挂客户端发来的 IGMP离开消息后的处理流程图,如图4所示,其具体步骤如下步骤401 第一跳PIM路由器Rtr接收下游PIM路由器发来的针对一个组播流的 PIM剪枝消息或者接收来自自身下挂客户端发来的针对一个组播流的IGMP离开消息,在本 地查找到与该组播流对应的(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从该组播流的入接口处向外发送PIM剪枝消息,本流程结束。本步骤中的PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组 播源的IP地址,目的MAC地址为组播源的MAC地址。由于Rtr是从组播流的入接口向外发送PIM剪枝消息,则该消息会到达Rtr与组 播源之间的二层交换机。该二层交换机接收到该PIM剪枝消息后的处理流程见图5所示实 施例。步骤404 =Rtr不作进一步处理。第一跳PIM路由器发出的PIM剪枝消息会到达位于组播源与该第一跳PIM路由器 之间的二层交换机。图5为本发明实施例提供的二层交换机接收到PIM剪枝消息后的处理 流程图,如图5所示,其具体步骤如下步骤501 二层交换机接收针对一个组播流的PIM剪枝消息。步骤502 二层交换机判断该PIM剪枝消息中的上游邻居地址(upstream neighbor address)是否在自身利用PIM窥探功能维护的PIM路由器列表中,若是,执行步 骤503 ;否则,执行步骤504。步骤503 二层交换机按照现有的PIM窥探协议处理,本流程结束。若PIM剪枝消息中的上游邻居地址在利用PIM窥探功能维护的PIM路由器列表 中,则说明二层交换机位于PM路由器之间,则按照现有的PIM窥探协议处理即可;否则,说 明二层交换机位于组播源和第一跳PIM路由器之间,则要采用本发明实施例提供的处理步 骤,即步骤504 509。步骤504 二层交换机判断本地是否存在该组播流的PIM窥探表项,若是,执行步 骤505 ;否则,执行步骤506。步骤505 二层交换机将PIM剪枝消息的接收端口加入到该PIM窥探表项的下游 出端口列表中,同时标记该端口为剪枝端口,执行步骤507。
步骤506 二层交换机根据该PIM剪枝消息,在本地生成PIM窥探表项。其中,PIM 窥探表项中的上游端口,即根据PIM剪枝消息的目的MAC地址在单播MAC表项中查找到的 出端口 ;PIM窥探表项中的上游邻居列表为空;且,将PIM剪枝消息的接收端口加入到该表 项的下游出端口列表中,并标记该端口为剪枝端口 ;同时,将本交换机上除了上游端口外的 其它所有PIM邻居端口加入到该PIM窥探表项的下游出端口列表中,执行步骤507。由于对于任一组播流来说,若未建立针对该组播流的PIM窥探表项,则二层交换 机默认是将该组播流向除了上游端口外的所有PIM邻居端口转发的,因此,本步骤中,在建 立了针对一个组播流的PIM窥探表项后,应该将除已标记为剪枝端口外的其它所有除了上 游端口外的PIM邻居端口都加入到该PIM窥探表项的下游出端口列表中来,以保证此后收 到该组播流后,该组播流仍能够向该除了上游端口外的其它所有PIM邻居端口转发。步骤507 二层交换机根据本地的PIM窥探表项和IGMP窥探表项,判断是否有转 发PIM剪枝消息对应的组播流的需求,即判断本地的PIM窥探表项和IGMP窥探表项中是否 存在与该组播流对应的最高端口角色优先级为成员端口或路由器端口的端口,若是,执行 步骤508 ;否则,执行步骤509。步骤508 二层交换机不转发PIM剪枝消息,本流程结束。 步骤509 二层交换机根据PIM剪枝消息的单播目的MAC地址,在单播MAC表项中 查找到出端口,将该PIM剪枝消息从该出端口转发出去。该PIM剪枝消息会到达组播源。本实施例中,可以为PIM窥探表项中的剪枝端口设置生命值,剪枝端口的生命值 为PIM路由器上对应组播流的(S,G)表项生命值的1/3,默认为1分钟。这样PM DR可以 每隔1分钟收到一份该组播流。当剪枝端口的生命值一到,则将PIM窥探表项中所有剪枝 端口暂时恢复成路由器端口,以使得该端口可以转发组播流,但是若在剪枝端口的生命值 到达后的预设时间内未收到任何针对所述组播流的PIM剪枝消息,则将该端口彻底恢复成 路由器端口,同时判断该PIM窥探表项中是否还包含其它剪枝端口,若否,则删除该PIM窥 探表项,以节约表项资源。若在剪枝端口的生命值到达后的预设时间内收到任何针对所述 组播流的PIM剪枝消息,则将该端口恢复为剪枝端口,并重设该剪枝端口的生命值。对于被剪枝的组播流,此后当有设备点播该组播流时,需要嫁接该组播流。在下述 三种情况下,需要嫁接从组播源到第一跳PIM路由器之间的组播流一、当下游PIM路由器下挂的客户端点播该组播流时,此时,该客户端会向下游 PIM路由器发送IGMP加入消息,下游PIM路由器接收到IGMP加入消息后,向第一跳PIM路 由器发送PIM加入消息;二、当二层交换机下挂的客户端点播该组播流时,此时,该客户端会向该二层交换 机发送IGMP加入消息;三、当第一跳PIM路由器下挂的客户端点播该组播流时,此时,该客户端会向第一 跳PIM路由器发送IGMP加入消息。以下给出本发明实施例提供的嫁接组播流的相关处理过程。图6为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器接收到来自下游PIM路由器的PIM加入消息后的处理流程图,如图6所示,其具体步 骤如下
步骤601 第一跳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加入消息。步骤602 :Rtr判断该(S,G)表项的出接口列表是否为空,若是,执行步骤603 ;否 贝U,执行步骤604。步骤603 =Rtr将该PIM加入消息的接收接口加入到该(S,G)表项的出接口列表 中,根据该消息的目的IP地址查找本地的单播路由表项,从单播路由表项中的出接口发送 PIM加入消息,本流程结束。这里,PIM加入消息的目的IP地址、目的MAC地址分别是组播源的IP地址、MAC地 址。PIM加入消息会经过Rtr与组播源之间的二层交换机到达组播源,二层交换机接收到 PIM加入消息后的处理流程见图9所示实施例。为防止PIM加入消息丢失以保证尽快获得组播流,Rtr可以以较高频率发送PIM加 入消息,直到接收到该组播流。步骤604 =Rtr按照现有PIM协议处理该PIM加入消息。图7为本发明实施例提供的二层交换机接收到IGMP加入消息后的处理流程图,如 图7所示,其具体步骤如下步骤701 二层交换机接收针对一个组播流的IGMP加入消息。本步骤中的IGMP加入消息来自二层交换机下挂的客户端。步骤702 二层交换机在本地查找与该组播流对应的IGMP窥探表项,将该消息的 接收端口作为成员端口加入到查找到的IGMP窥探表项中,并向本交换机上除接收端口外 的所有路由器端口、剪枝端口以及PIM窥探表项中的上游邻居转发该IGMP加入消息。该IGMP加入消息可能会到达其它二层交换机或者到达第一跳PIM路由器,当其它 二层交换机接收到该IGMP加入消息时,其处理流程与本实施例相同,当第一跳PIM路由器 接收到该IGMP加入消息后的处理流程见图8所示实施例。图8为本发明实施例提供的当第一跳PIM路由器采用PIM SSM模式时,第一跳PIM 路由器Rtr接收到IGMP加入消息后的处理流程图,如图8所示,其具体步骤如下步骤801 第一跳PIM路由器Rtr接收针对一个组播流的IGMP加入消息。本步骤中的IGMP加入消息的来源有如下两种情况来源一、当第一跳PIM路由器下挂一台客户端时,如图1所示,PIM路由器2为第一 跳PIM路由器,其下挂一客户端2,若该客户端点播一个组播流,则该客户端会向第一跳PIM 路由器发送IGMP加入消息。来源二、当第一跳PIM路由器与组播源之间的二层交换机下挂一客户端时,如图 1所示,PIM路由器2为第一跳PIM路由器,PIM路由器2与组播源1、2之间的二层交换机 1下挂一客户端3,若该客户端3点播一个组播流,则该客户端3会向该二层交换机1发送 IGMP加入消息,二层交换机1会将该IGMP加入消息转发给第一跳PIM路由器。
步骤802 :Rtr判断本地是否已建立与该组播流对应的(S,G)表项,若是,执行步骤 803 ;否则,执行步骤808。步骤803 :Rtr判断该(S,G)表项的出接口列表是否为空,若是,执行步骤804 ;否 贝U,执行步骤807。

步骤804 :Rtr判断该IGMP加入消息是否来自指向组播源的接口,若是,执行步骤 805 ;否则,执行步骤806。IGMP加入消息来自指向组播源的接口,即该IGMP加入消息的来源属于步骤801中 的来源二,此时,无需将该IGMP加入消息的接收接口添加到对应(S,G)表项的出接口列表 中,也不发送PIM加入消息。步骤805 =Rtr不作进一步处理,本流程结束。步骤806 =Rtr将该IGMP加入消息的接收接口添加到该(S,G)表项的出接口列表 中,并向组播源S方向发送针对该组播流的PIM加入消息,本流程结束。这里,PIM加入消息的目的IP地址、目的MAC地址分别是组播源的IP地址、MAC地 址。PIM加入消息会经过Rtr与组播源之间的二层交换机到达组播源,二层交换机接收到 PIM加入消息后的处理流程见图9所示实施例。为防止PIM加入消息丢失以保证尽快获得组播流,可以以较高频率发送PIM加入 消息,直到接收到该组播流。步骤807 =Rtr按照现有PIM协议处理,本流程结束。这里,按照现有PIM协议,Rtr会将IGMP加入消息的接收接口添加到(S,G)表项 的出接口列表中。步骤808 =Rtr按照现有PIM协议处理。这里,按照现有PIM协议,Rtr会建立与组播流对应的(S,G)表项,然后将IGMP加 入消息的接收接口添加到该(S,G)表项的出接口列表中。图9为本发明实施例提供的二层交换机接收到PIM加入消息后的处理流程图,如 图9所示,其具体步骤如下步骤901 二层交换机接收针对一个组播流的PIM加入消息。步骤902 二层交换机判断PIM加入消息中的上游邻居地址是否在利用PIM窥探 功能维护的PIM路由器列表中,若是,执行步骤903;否则,执行步骤904。步骤903 二层交换机按照现有PIM窥探协议处理,本流程结束。步骤904 二层交换机判断本地是否存在该组播流的PIM窥探表项,若是,执行步 骤905 ;否则,执行步骤906。步骤905 二层交换机判断PIM加入消息的接收端口是否为该PIM窥探表项的剪 枝端口,若是,执行步骤907 ;否则,执行步骤906。步骤906 二层交换机不作进一步处理,本流程结束。步骤907 二层交换机根据本地的PIM窥探表项和IGMP窥探表项,判断除了 PIM加 入消息的接收端口外,是否已有其它端口有转发该组播流的需求,若是,执行步骤908;否 贝丨J,执行步骤909。步骤908 二层交换机不转发该PIM加入消息,转至步骤910。步骤909 二层交换机根据PIM加入消息的目的IP地址查找本地的单播路由表项,从单播路由表项中的出接口转发该PIM加入消息,执行步骤910。步骤910 二层交换机将PIM窥探表项的下游出端口列表中该PIM加入消息的接 收端口的剪枝标记删除,以将该PIM加入消息的接收端口恢复为路由器端口继续转发该组
播流。 步骤911 二层交换机判断是否PIM窥探表项的下游出端口列表中已不包含任何 剪枝端口且上游邻居列表为空,若是,执行步骤912;否则,执行步骤913。步骤912 二层交换机删除该PIM窥探表项,以节约表项资源,本流程结束。步骤913 二层交换机不作进一步处理。图10为本发明实施例提供的当第一跳PIM路由器采用PIM SM模式时,第一跳PIM 路由器接收到组播流后的处理流程图,如图10所示,其具体步骤如下步骤1001 第一跳PIM路由器Rtr周期性地从自身的各PM接口向外发送PIM hello消息。步骤1002 二层交换机接收PIM hello消息,利用IGMP窥探功能将该消息的接收 端口设置为路由器端口,并将PIM hello消息从自身的各端口转发给其它二层交换机。其它二层交换机接收到PIM hello消息后,也会进行如步骤1002所述的处理。步骤1003 组播源发出一个组播流,该组播流经由各路由器端口到达第一跳PIM 路由器Rtr。步骤1004 =Rtr判断本地是否已建立与该组播流对应的(S,G)表项,若是,执行步 骤1005 ;否则,执行步骤1008。步骤1005 :Rtr判断该(S,G)表项的出接口列表是否为空,若是,执行步骤1006 ; 否则,执行步骤1007。步骤1006 :Rtr更新该(S,G)表项的老化时间,并从该组播流的入接口向外发送 PIM剪枝消息,本流程结束。PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组播源的IP地 址,目的MAC地址为组播源的MAC地址。由于Rtr是从组播流的入接口向外发送PIM剪枝消息,则该消息会到达Rtr与组 播源之间的二层交换机。该二层交换机接收到该PIM剪枝消息后的处理流程见图5所示实 施例。步骤1007 :Rtr按照该出接口列表中的出接口信息,向外转发该组播流,本流程结
束ο步骤1008 =Rtr建立与该组播流对应的(S,G)表项,并设置表项老化时间。这里,(S,G)表项老化时间通常为3分钟。步骤1009 :Rtr判断自身是否为DR,若是,执行步骤1011 ;否则,执行步骤1010。步骤1010 =Rtr不作进一步处理,本流程结束。步骤1011 =Rtr向RP发送针对该组播流的源注册消息。步骤1012 :Rtr接收到RP返回的针对该组播流的源注册停止消息,判断该组播流 对应的(S,G)表项的出接口列表是否为空,若是,执行步骤1013;否则,执行步骤1014。当RP接收到针对该组播流的源注册消息后,若发现有针对该组播流的接收者,则 会先向Rtr返回针对该组播流的PIM加入消息,然后再向Rtr发送针对该组播流的源注册停止消息,Rtr收到P IM加入消息后会将该消息的接收端口添加到该组播流对应的(S,G) 表项的出接口中;若RP发现没有针对该组播流的接收者,则直接向Rtr返回针对该组播流 的源注册停止消息。步骤1013 :Rtr从该组播流的入接口向外发送PIM剪枝消息,本流程结束。PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组播源的IP地 址,目的MAC地址为组播源的MAC地址。同样,由于Rtr是从组播流的入接口向外发送PIM剪枝消息,则该消息会到达Rtr 与组播源之间的二层交换机。该二层交换机接收到该PIM剪枝消息后的处理流程见图5所 示实施例。步骤1014 :Rtr按照该出接口列表中的出接口信息,向外转发该组播流。 当第一跳PIM路由器采用双向PIM模式且为非DR时,第一跳PIM路由器接收到组 播流后的处理流程与第一跳PIM路由器采用PIM SM模式且为非DR时接收到组播流后的处 理流程相同。另外,当第一跳PIM路由器采用PIM SM模式或者采用双向PIM模式时,当第一跳 PIM路由器由非DR变为DR时,第一跳PIM路由器要针对自身已建立的每个(S,G)表项,向 组播源方向发送一个PIM加入消息。当第一跳PIM路由器采用PIM SM模式时,第一跳PIM路由器Rtr接收到来自下游 PIM路由器的PIM剪枝消息或者来自自身下挂客户端发来的IGMP离开消息后的处理流程与 第一跳PIM路由器采用PIM SSM模式时的处理流程相同,具体可见图4所示实施例。当第一跳PIM路由器采用PIM SM模式时,第一跳PIM路由器接收到来自下游PIM 路由器的PIM加入消息后的处理流程与第一跳PIM路由器采用PIM SSM模式时的处理流程 相同,具体可见图6所示实施例。当第一跳PIM路由器采用PIM SM模式时,第一跳PIM路由器Rtr接收到IGMP加 入消息后的处理流程与第一跳PIM路由器采用PIM SSM模式时的处理流程相同,具体可见 图8所示实施例。图11为本发明实施例提供的当第一跳PIM路由器采用PIM DM模式时,第一跳PIM 路由器接收到组播流后的处理流程图,如图11所示,其具体步骤如下步骤1101 第一跳PIM路由器Rtr周期性地从自身的各PIM接口向外发送PIM hello消息。步骤1102 二层交换机接收PIM hello消息,利用IGMP窥探功能将该消息的接收 端口设置为路由器端口,并将PIM hello消息从自身的各端口转发给其它二层交换机。其它二层交换机接收到PIM hello消息后,也会进行如步骤1102所述的处理。步骤1103 组播源发出一个组播流,该组播流经由各路由器端口到达第一跳PIM 路由器Rtr。步骤1104 =Rtr判断本地是否已建立与该组播流对应的(S,G)表项,若是,执行步 骤1105 ;否则,执行步骤1106。步骤1105 =Rtr更新该(S,G)表项的老化时间,转至步骤1107。步骤1106 =Rtr建立针对该组播流的(S,G)表项,并设置表项老化时间,同时,向 自身的所有下游PIM邻居转发该组播流,若接收到一个下游PIM邻居返回的PIM剪枝消息,则将该PIM剪枝消息的接收接口作为剪枝接口添加到(S,G)表项的出接口列表中,若接收 到一个下游PIM邻居返回的PIM嫁接消息,则将该PIM嫁接消息的接收接口作为转发接口 添加到该(S,G)表项的出接口列表中,直至与下游PIM邻居连接的所有接口都已添加到该 (S,G)表项为止。这里,(S,G)表项老化时间通常为3分钟。 步骤1107 :Rtr判断是否该(S,G)表项的所有出接口都为剪枝接口,若是,执行步 骤1108 ;否则,执行步骤1109。步骤1108 :Rtr从该组播流的入接口向外发送PIM剪枝消息,本流程结束。PIM剪枝消息的上游邻居地址为组播源的IP地址,目的IP地址是组播源的IP地 址,目的MAC地址为组播源的MAC地址。由于Rtr是从组播流的入接口向外发送PIM剪枝消息,则该消息会到达Rtr与组 播源之间的二层交换机。该二层交换机接收到该PIM剪枝消息后的处理流程见图5所示实 施例。步骤1109 =Rtr将该组播流向(S,G)表项的各转发出接口转发。图12为本发明实施例提供的当第一跳PIM路由器采用PIM DM模式时,第一跳PIM 路由器Rtr接收到来自PIM邻居的PIM嫁接消息后的处理流程图,如图12所示,其具体步 骤如下步骤1201 :Rtr接收PIM邻居发来的针对一个组播流的PIM嫁接消息,在本地查找 到与该组播流对应的(S,G)表项。步骤1202 Rtr判断该(S,G)表项的出接口列表是否为空,若是,执行步骤1203 ; 否则,执行步骤1204。步骤1203 =Rtr将该PIM嫁接消息的接收接口加入到该(S,G)表项的出接口列表 中,根据该消息的目的IP地址查找本地的单播路由表项,从单播路由表项中的出接口发送 PIM加入消息,本流程结束。这里,PIM加入消息的目的IP地址、目的MAC地址分别是组播源的IP地址、MAC地 址。PIM加入消息会经过Rtr与组播源之间的二层交换机到达组播源,二层交换机接收到 PIM加入消息后的处理流程见图9所示实施例。为防止PIM加入消息丢失以保证尽快获得组播流,Rtr可以以较高频率发送PIM加 入消息,直到接收到该组播流。步骤1204 =Rtr按照现有PIM协议处理该PIM嫁接消息。当第一跳PIM路由器采用PIM DM模式时,第一跳PIM路由器Rtr接收到来自下游 PIM路由器的PIM剪枝消息或者来自自身下挂客户端发来的IGMP离开消息后的处理流程与 第一跳PIM路由器采用PIM SSM模式时的处理流程相同,具体可见图4所示实施例。当第一跳PIM路由器采用PIM DM模式时,第一跳PIM路由器Rtr接收到IGMP加 入消息后的处理流程与第一跳PIM路由器采用PIM SSM模式时的处理流程相同,具体可见 图8所示实施例。图13为本发明实施例提供的PIM路由器的组成示意图,该PIM路由器为第一跳 PIM路由器,直接通过具备PIM窥探功能的二层交换机连接到组播源,如图13所示,该PIM 路由器包括第一模块和第二模块,其中
第一模块接收所述组播源发来的组播流,发现没有接收该组播流的需求,或者, 接收下游PIM路由器发来的针对一个组播流的PIM剪枝消息或者接收本PIM路由器下挂客 户端发来的针对一个组播流的组管理离开消息,将该消息的接收接口从该组播流的出接口 列表中删除,若发现已经没有接收该组播流的需求,则向第二模块发送剪枝指示。 这里,组管理离开消息为IGMP离开消息或MLD离开消息。第二模块接收所述剪枝指示,从所述组播流的入接口处向外发送PIM剪枝消息。当PIM路由器采用PIM SSM模式,或者采用PIM SM且不作为DR时,第一模块可包 括第一子模块接收所述组播源发来的组播流,将该组播流信息发送给第二子模块。第二子模块接收第一子模块发来的组播流信息,发现本地未建立与所述组播流 对应的组播路由表项,或者虽建立了与所述组播流对应的组播路由表项但该表项的出接口 列表为空,则确定没有接收该组播流的需求,向第二模块发送剪枝指示。当PIM路由器采用PIM SM且作为DR时,第一模块可包括第一子模块接收所述组播源发来的组播流,将该组播流信息发送给第二子模块。第二子模块接收第一子模块发来的组播流信息,若发现本地虽建立了与所述组 播流对应的组播路由表项但该表项的出接口列表为空,则确定没有接收该组播流的需求, 向第二模块发送剪枝指示;或者,发现本地未建立与所述组播流对应的组播路由表项,则建 立与所述组播流对应的组播路由表项,并向汇合点RP发送针对该组播流的源注册消息,当 收到RP返回的源注册停止消息时,若发现该组播路由表项的出接口列表为空,则确定没有 接收该组播流的需求,向第二模块发送剪枝指示。当PIM路由器采用PIM DM时,第一模块可包括第一子模块接收所述组播源发来的组播流,将该组播流信息发送给第二子模块。第二子模块接收第一子模块发来的组播流信息,若发现本地虽建立了与所述组 播流对应的组播路由表项但该表项的所有出接口都为剪枝接口,则确定没有接收该组播流 的需求,向第二模块发送剪枝指示;或者,发现本地未建立与所述组播流对应的组播路由表 项,则建立与所述组播流对应的组播路由表项,并向自身的所有下游PIM邻居转发该组播 流,若接收到一个下游PIM邻居返回的PIM剪枝消息,则将该PIM剪枝消息的接收接口作为 剪枝接口添加到该组播路由表项的出接口列表中,若接收到一个下游PIM邻居返回的PIM 嫁接消息,则将该PIM嫁接消息的接收接口作为转发接口添加到该组播路由表项的出接口 列表中,当将与所有下游PIM邻居连接的接口都添加到该组播路由表项的出接口列表中 时,若发现该组播路由表项的所有出接口都为剪枝接口,则确定没有接收该组播流的需求, 向第二模块发送剪枝指示。在实际应用中,当PIM路由器采用PM SM模式或PIM SSM模式时,PIM路由器还 可包括第三模块,用于接收下游PIM路由器发来的针对所述组播流的PIM加入消息或者自 身下挂客户端发来的针对所述组播流的组管理加入消息,向所述组播源方向发送PIM加入 消息。第三模块还可用于,当接收到下游PIM路由器发来的针对所述组播流的PIM加入 消息之后,判断本地是否已建立与所述组播流对应的组播路由表项,若是且该组播路由表 项的出接口列表为空,则将所述PIM加入消息的接收接口添加到该组播路由表项的出接口列表中,并执行所述向组播源方向发送PIM加入消息的动作。在实际应用中,当PIM路由器采用PIM SM模式或PIM SSM模式或PIM DM模式时, PIM路由器还可包括第四模块,接收自身下挂客户端发来的针对所述组播流的组管理加 入消息,向所述组播源方向发送PIM加入消息。第四模块还可用于,当接收到自身下挂客户端发来的针对所述组播流的组管理加 入消息之后,判断本地是否已建立与所述组播流对应的组播路由表项,若是且该组播路由 表项的出接口列表为空,则将所述组管理加入消息的接收接口添加到该组播路由表项的出 接口列表中,并执行所述向组播源方向发送PIM加入消息的动作。当PIM路由器采用PIM SM模式且不为DR时,或者采用双向PIM模式且不为DR时, PIM路由器还可包括第五模块,当本PIM路由器由不为DR变为DR时,针对本PIM路由器 已建立的针对每个组播流的组播路由表项,向组播源方向发送针对该组播流的PIM加入消 肩、ο当PIM路由器采用PIM DM时,还可包括第六模块,用于接收下游PIM邻居发来的 针对所述组播流的PIM嫁接消息,向所述组播源方向发送PIM加入消息。

第六模块还可用于,当接收到下游PIM邻居发来的针对所述组播流的PIM嫁接消 息之后,判断本地是否已建立与所述组播流对应的组播路由表项,若是且该组播路由表项 的出接口列表为空,则将所述PIM嫁接消息的接收接口添加到该组播路由表项的出接口列 表中,并执行所述向组播源方向发送PIM加入消息的动作。以下给出本发明实施例提供的具备PIM窥探功能的交换机的组成,该二层交换机 位于组播源与第一跳PIM路由器之间,该交换机主要包括第一模块、第二模块和第三模 块,其中第一模块接收针对一个组播流的PIM剪枝消息,若发现消息中的上游邻居地址 不在自身利用PIM窥探功能维护的PIM路由器列表中,则将该消息的接收端口作为剪枝端 口,并将该剪枝端口添加到与所述组播流对应的PIM窥探表项中,不再向所述剪枝端口转 发所述组播流。第一模块还可用于,为所述剪枝端口设置剪枝时间,且,当该剪枝时间到达后,开 始允许向所述剪枝端口转发所述组播流。第一模块还可用于,为该剪枝端口设置生命值,其中,该剪枝端口的生命值小于所 述第一跳PIM路由器上与所述PIM剪枝消息对应的组播流的组播路由表项的生命值,且,当 该剪枝端口的生命值到达时,将该剪枝端口暂时恢复为路由器端口,若在预设时长内未接 收到针对所述组播流的PIM剪枝消息,则将所述端口彻底恢复为路由器端口 ;否则,则将所 述端口恢复为剪枝端口,并重置该剪枝端口的生命值。当发现PIM剪枝消息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路 由器列表中之后,第一模块还可用于,若发现本地未建立与所述组播流对应的PIM窥探表 项,则建立与所述组播流对应的PIM窥探表项,其中,PIM窥探表项的上游邻居列表为空,且 将本交换机上除了上游端口外的其它所有PIM邻居端口加入到该表项的下游出端口列表 中,执行所述将该剪枝端口添加到与所述组播流对应的PIM窥探表项中的动作;且,根据本 地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消息对应的组播流的需求, 若是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消息。
当发现消息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表 中之后,第一模块还可用于,若发现本地已建立与所述组播流对应的PIM窥探表项,则直接 执行所述将该剪枝端口添加到与所述组播流对应的PIM窥探表项中的动作;且,根据本地 的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消息对应的组播流的需求,若 是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消息。这里,当二层 交换机采用IGMP协议时,组管理窥探表项为IGMP窥探表项;当二层 交换机采用MLD协议时,组管理窥探表项为MLD窥探表项。第二模块接收针对一个组播流的PIM加入消息,发现消息中的上游邻居地址不 在自身利用PIM窥探功能维护的PIM路由器列表中,若发现本地有该PIM加入消息对应组 播流的PIM窥探表项,且该PIM加入消息的接收端口为所述PIM窥探表项的剪枝端口,则根 据本地PIM窥探表项和组管理窥探表项判断本交换机除了该PIM加入消息的接收端口外, 是否还有其它端口有接收所述组播流的需求,若是,不转发该PIM加入消息,否则,向组播 源方向转发所述PIM加入消息。第二模块还可用于,在向组播源方向转发所述PIM加入消息后,将所述PIM加入消 息的接收端口从所述PIM窥探表项中删除,将所述接收端口恢复为路由器端口。第三模块接收针对一个组播流的组管理加入消息,将该消息的接收端口作为成 员端口加入到所述组播流的组管理窥探表项中,并向本交换机上除接收端口外的所有路由 器端口、剪枝端口以及PIM窥探表项中的上游邻居转发该组管理加入消息。这里,组管理加入消息为IGMP加入消息或MLD加入消息。从本发明各实施例的实施方式上看,这些实施方式属于计算机程序发明(当然, 本发明并不排除硬件的实施方式),其本质将体现为一个计算机程序产品,其可以承载于多 种存储介质中。通过上述介绍本领域技术人员清楚本发明可以是一个计算机程序产品,该 计算机程序产品包括若干指令,用于让一个硬件平台,如本发明实施例中的第一跳PIM路 由器以及位于组播源和第一跳PIM路由器之间的二层交换,完成本发明各实施例提供的方 法。从设备层面理解,一个基于本发明的系统可以包括上述计算机程序产品以及运行该计 算机程序的硬件平台。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精 神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种组播剪枝方法,组播源通过具备协议无关组播PIM窥探功能的二层交换机连接 到第一跳PIM路由器,其特征在于,该方法包括所述第一跳PIM路由器接收所述组播源发来的组播流,发现没有接收该组播流的需 求,则从该组播流的入接口处向外发送PIM剪枝消息;或者,所述第一跳PIM路由器接收下游PIM路由器发来的针对一个组播流的PIM剪枝消息或 者接收自身下挂客户端发来的针对一个组播流的组管理离开消息,将该消息的接收接口从 该组播流的出接口列表中删除,若发现已经没有接收该组播流的需求,则从该组播流的入 接口处向外发送PIM剪枝消息。
2.根据权利要求1所述的方法,其特征在于,当所述第一跳PIM路由器采用PIMSSM模 式,或者采用PIM SM模式且不为指定路由器DR,或者采用双向PIM模式且不为DR时,所述第一跳PIM路由器接收所述组播源发来的组播流,发现没有接收该组播流的需求 包括第一跳PIM路由器接收所述组播源发来的组播流,发现本地未建立与所述组播流对应 的组播路由表项,或者虽建立了与所述组播流对应的组播路由表项但该表项的出接口列表 为空,则确定没有接收该组播流的需求。
3.根据权利要求1所述的方法,其特征在于,当所述第一跳PIM路由器采用PIMSM且 为DR时,所述第一跳PIM路由器接收所述组播源发来的组播流,发现没有接收该组播流的需求 包括第一跳PIM路由器接收所述组播源发来的组播流,发现本地虽建立了与所述组播流对 应的组播路由表项但该表项的出接口列表为空,则确定没有接收该组播流的需求;或者,发 现本地未建立与所述组播流对应的组播路由表项,则建立与所述组播流对应的组播路由表 项,并向汇合点RP发送针对该组播流的源注册消息,当收到RP返回的源注册停止消息时, 若发现该组播路由表项的出接口列表为空,则确定没有接收该组播流的需求。
4.根据权利要求1所述的方法,其特征在于,当所述第一跳PIM路由器采用PIMDM时,所述第一跳PIM路由器接收所述组播源发来的组播流,发现没有接收该组播流的需求包括第一跳PIM路由器接收所述组播源发来的组播流,发现本地虽建立了与所述组播流 对应的组播路由表项但该表项的所有出接口都为剪枝接口,则确定没有接收该组播流的需 求;或者,发现本地未建立与所述组播流对应的组播路由表项,则建立与所述组播流对应的 组播路由表项,并向自身的所有下游PIM邻居转发该组播流,若接收到一个下游PIM邻居返 回的PIM剪枝消息,则将该PIM剪枝消息的接收接口作为剪枝接口添加到该组播路由表项 的出接口列表中,若接收到一个下游PIM邻居返回的PIM嫁接消息,则将该PIM嫁接消息的 接收接口作为转发接口添加到该组播路由表项的出接口列表中,当将与所有下游PIM邻居 连接的接口都添加到该组播路由表项的出接口列表中时,若发现该组播路由表项的所有出 接口都为剪枝接口,则确定没有接收该组播流的需求。
5.根据权利要求1所述的方法,其特征在于,所述方法进一步包括当所述第一跳PIM路由器为PIM SSM模式或PIM SM模式时,所述第一跳PIM路由器接 收下游PIM路由器发来的针对所述组播流的PIM加入消息,向所述组播源方向发送PIM加入消息;或者,当所述第一跳PIM路由器为PIM SSM模式或PIM SM模式或PM DM模式时,所述 第一跳PIM路由器接收自身下挂客户端发来的针对所述组播流的组管理加入消息,向所述 组播源方向发送PIM加入消息。
6.根据权利要求5所述的方法,其特征在于,所述第一跳PIM路由器接收下游PIM路由 器发来的针对所述组播流的PIM加入消息或者接收自身下挂客户端发来的针对所述组播 流的组管理加入消息之后、向所述组播源方向发送PIM加入消息之前进一步包括第一跳PIM路由器判断本地是否已建立与所述组播流对应的组播路由表项,若是且 该组播路由表项的出接口列表为空,则将所述PIM加入消息或组管理加入消息的接收接口 添加到该组播路由表项的出接口列表中,并执行所述向组播源方向发送PIM加入消息的动 作。
7.根据权利要求1所述的方法,其特征在于,当所述第一跳PIM路由器采用PIMSM模 式且不为DR时,或者采用双向PIM模式且不为DR时,所述方法进一步包括第一跳PIM路由器由不为DR变为DR,针对自身已建立的针对每个组播流的组播路由表 项,向组播源方向发送针对该组播流的PIM加入消息。
8.根据权利要求1所述的方法,其特征在于,当所述第一跳PIM路由器采用PIMDM时, 所述方法进一步包括第一跳PIM路由器接收下游PIM邻居发来的针对所述组播流的PIM嫁接消息,向所述 组播源方向发送PIM加入消息。
9.根据权利要求8所述的方法,其特征在于,所述第一跳PIM路由器接收下游PIM邻居 发来的针对所述组播流的PIM嫁接消息之后、向所述组播源方向发送PIM加入消息之前进 一步包括第一跳PIM路由器判断本地是否已建立与所述组播流对应的组播路由表项,若是且该 组播路由表项的出接口列表为空,则将所述PIM嫁接消息的接收接口添加到该组播路由表 项的出接口列表中,并执行所述向组播源方向发送PIM加入消息的动作。
10.一种组播剪枝方法,组播源通过具备协议无关组播PIM窥探功能的二层交换机连 接到第一跳PIM路由器,其特征在于,该方法包括二层交换机接收所述第一跳PIM路由器发来的PIM剪枝消息,发现消息中的上游邻居 地址不在自身利用PIM窥探功能维护的PIM路由器列表中,则将该消息的接收端口作为剪 枝端口,并将该剪枝端口添加到与所述组播流对应的PIM窥探表项中,不再向所述剪枝端 口转发所述组播流。
11.根据权利要求10所述的方法,其特征在于,所述二层交换机将该消息的接收端口 作为剪枝端口的同时进一步包括为该剪枝端口设置剪枝时间,且,当该剪枝时间到达后,开始允许向所述剪枝端口转发所述组播流。
12.根据权利要求10所述的方法,其特征在于,所述二层交换机将该消息的接收端口 作为剪枝端口的同时进一步包括二层交换机为该剪枝端口设置生命值,其中,该剪枝端口的生命值小于所述第一跳PIM 路由器上与所述PIM剪枝消息对应的组播流的组播路由表项的生命值,且,当该剪枝端口的生命值到达时,将该剪枝端口暂时恢复为路由器端口,若在预设时长内未接收到针对所 述组播流的PIM剪枝消息,则将所述端口彻底恢复为路由器端口 ;否则,则将所述端口恢复 为剪枝端口,并重置该剪枝端口的生命值。
13.根据权利要求10所述的方法,其特征在于,所述二层交换机发现消息中的上游邻 居地址不在自身利用PIM窥探功能维护的PIM路由器列表中之后、将该消息的接收端口作 为剪枝端口之前进一步包括二层交换机发现本地未建立与所述组播流对应的PIM窥探表项,则建立与所述组播流 对应的PIM窥探表项,其中,PIM窥探表项的上游邻居列表为空,且将本交换机上除了上游 端口外的其它所有PIM邻居端口加入到该表项的下游出端口列表中;且,所述将该剪枝端口添加到与所述组播流对应的PIM窥探表项中之后进一步包括二层交换机根据本地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消 息对应的组播流的需求,若是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消 肩、ο
14.根据权利要求10所述的方法,其特征在于,所述二层交换机发现消息中的上游邻 居地址不在自身利用PIM窥探功能维护的PIM路由器列表中之后、将该消息的接收端口作 为剪枝端口之前进一步包括二层交换机发现本地已建立与所述组播流对应的PIM窥探表项;且,所述二层交换机将该剪枝端口添加到与所述组播流对应的PIM窥探表项中之后进 一步包括二层交换机根据本地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消 息对应的组播流的需求,若是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消 肩、ο
15.根据权利要求13或14所述的方法,其特征在于,预先设定对于二层交换机上的 任一端口,若该端口的角色包括成员端口、剪枝端口和路由器端口中的全部或任意两个, 则该端口的各角色的优先级顺序从高到低依次为成员端口、剪枝端口、路由器端口 ;所述二层交换机根据本地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪 枝消息对应的组播流的需求包括二层交换机判断本地的PIM窥探表项和组管理窥探表项中是否存在与该组播流对应 的最高端口角色优先级为成员端口或路由器端口的端口,且,若是,则确定有转发PIM剪枝消息对应的组播流的需求;否则,确定没有转发PIM剪 枝消息对应的组播流的需求。
16.根据权利要求10所述的方法,其特征在于,所述方法进一步包括二层交换机接收所述第一跳PIM路由器发来的PIM加入消息,发现消息中的上游邻居 地址不在自身利用PIM窥探功能维护的PIM路由器列表中,若发现本地有该PIM加入消息 对应组播流的PIM窥探表项,且该PIM加入消息的接收端口为所述PIM窥探表项的剪枝端 口,则根据本地PIM窥探表项和组管理窥探表项判断本交换机除了该PIM加入消息的接收 端口外,是否还有其它端口有接收所述组播流的需求,若是,不转发该PIM加入消息,否则, 向组播源方向转发所述PIM加入消息。
17.根据权利要求16所述的方法,其特征在于,所述二层交换机向组播源方向转发所述PIM加入消息之后进一步包括二层交换机将所述PIM加入消息的接收端口从所述PIM窥探表项中删除,将所述接收 端口恢复为路由器端口。
18.根据权利要求10所述的方法,其特征在于,所述方法进一步包括二层交换机接收针对一个组播流的组管理加入消息,将该消息的接收端口作为成员端 口加入到所述组播流的组管理窥探表项中,并向本交换机上除接收端口外的所有路由器端 口、剪枝端口以及PIM窥探表项中的上游邻居转发该组管理加入消息。
19.根据权利要求10所述的方法,其特征在于,所述二层交换机支持互联网组管理协 议IGMP或组播侦听者发现协议MLD协议。
20.一种PIM路由器,该PIM路由器直接通过二层交换机连接到组播源,其特征在于,该 PIM路由器包括第一模块,接收所述组播源发来的组播流,发现没有接收该组播流的需求,或者,接收 下游PIM路由器发来的针对一个组播流的PIM剪枝消息或者接收本PIM路由器下挂客户端 发来的针对一个组播流的组管理离开消息,将该消息的接收接口从该组播流的出接口列表 中删除,若发现已经没有接收该组播流的需求,则向第二模块发送剪枝指示;第二模块,接收所述剪枝指示,从所述组播流的入接口处向外发送PIM剪枝消息。
21.根据权利要求20所述的PIM路由器,其特征在于,当所述第一跳PIM路由器采用 PIM SSM模式,或者采用PIM SM且不作为指定路由器DR,或者采用双向PIM模式且不作为 DR时,所述第一模块包括第一子模块,接收所述组播源发来的组播流,将该组播流信息发送给第二子模块;第二子模块,接收第一子模块发来的组播流信息,发现本地未建立与所述组播流对应 的组播路由表项,或者虽建立了与所述组播流对应的组播路由表项但该表项的出接口列表 为空,则确定没有接收该组播流的需求,向第二模块发送剪枝指示。
22.根据权利要求20所述的PIM路由器,其特征在于,当所述第一跳PIM路由器采用 PIM SM且作为DR时,所述第一模块包括第一子模块,接收所述组播源发来的组播流,将该组播流信息发送给第二子模块;第二子模块,接收第一子模块发来的组播流信息,若发现本地虽建立了与所述组播流 对应的组播路由表项但该表项的出接口列表为空,则确定没有接收该组播流的需求,向第 二模块发送剪枝指示;或者,发现本地未建立与所述组播流对应的组播路由表项,则建立与 所述组播流对应的组播路由表项,并向汇合点RP发送针对该组播流的源注册消息,当收到 RP返回的源注册停止消息时,若发现该组播路由表项的出接口列表为空,则确定没有接收 该组播流的需求,向第二模块发送剪枝指示。
23.根据权利要求20所述的PIM路由器,其特征在于,当所述第一跳PIM路由器采用 PIM DM时,所述第一模块包括第一子模块,接收所述组播源发来的组播流,将该组播流信息发送给第二子模块;第二子模块,接收第一子模块发来的组播流信息,若发现本地虽建立了与所述组播流 对应的组播路由表项但该表项的所有出接口都为剪枝接口,则确定没有接收该组播流的需求,向第二模块发送剪枝指示;或者,发现本地未建立与所述组播流对应的组播路由表项, 则建立与所述组播流对应的组播路由表项,并向自身的所有下游PIM邻居转发该组播流, 若接收到一个下游PIM邻居返回的PIM剪枝消息,则将该PIM剪枝消息的接收接口作为剪 枝接口添加到该组播路由表项的出接口列表中,若接收到一个下游PIM邻居返回的PIM嫁 接消息,则将该PIM嫁接消息的接收接口作为转发接口添加到该组播路由表项的出接口列 表中,当将与所有下游PIM邻居连接的接口都添加到该组播路由表项的出接口列表中时, 若发现该组播路由表项的所有出接口都为剪枝接口,则确定没有接收该组播流的需求,向 第二模块发送剪枝指示。
24.根据权利要求20所述的PIM路由器,其特征在于,当所述PIM路由器采用PIMSM 模式或PIM SSM模式时,所述PIM路由器进一步包括第三模块,接收下游PIM路由器发来的针对所述组播流的PIM加入消息,向所述组播源 方向发送PIM加入消息;或者,当所述PIM路由器采用PIM SM模式或PIM SSM模式或PIM DM模式时,所述PIM 路由器进一步包括第三模块,接收自身下挂客户端发来的针对所述组播流的组管理加入消息,向所述组 播源方向发送PIM加入消息。
25.根据权利要求M所述的PIM路由器,其特征在于,所述第三模块进一步用于,当接收到下游PIM路由器发来的针对所述组播流的PIM加入消息或者自身下挂客户端发来的针对所述组播流的组管理加入消息之后,判断本地是否已建立与所述组播流对应的 组播路由表项,若是且该组播路由表项的出接口列表为空,则将所述PIM加入消息或组管 理加入消息的接收接口添加到该组播路由表项的出接口列表中,并执行所述向组播源方向 发送PIM加入消息的动作。
26.根据权利要求20所述的PIM路由器,其特征在于,当所述第一跳PIM路由器采用 PIM SM模式且不为DR时,或者采用双向PIM模式且不为DR时,所述PIM路由器进一步包 括第四模块,当本PIM路由器由不为DR变为DR时,针对本PIM路由器已建立的针对每个 组播流的组播路由表项,向组播源方向发送针对该组播流的PIM加入消息。
27.根据权利要求20所述的PIM路由器,其特征在于,当所述第一跳PIM路由器采用 PIM DM时,所述PIM路由器进一步包括第五模块,接收下游PIM邻居发来的针对所述组播流的PIM嫁接消息,向所述组播源方 向发送PIM加入消息。
28.根据权利要求27所述的PIM路由器,其特征在于,所述第五模块进一步用于,当接收到下游PIM邻居发来的针对所述组播流的PIM嫁接消息之后,判断本地是否已建立与所述组播流对应的组播路由表项,若是且该组播路由表项的出接口列表为空,则将 所述PIM嫁接消息的接收接口添加到该组播路由表项的出接口列表中,并执行所述向组播 源方向发送PIM加入消息的动作。
29.一种具备PIM窥探功能的二层交换机,位于组播源与第一跳PIM路由器之间,其特 征在于,该交换机包括第一模块,接收针对一个组播流的PIM剪枝消息,发现消息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表中,则将该消息的接收端口作为剪枝端口,并将 该剪枝端口添加到与所述组播流对应的PIM窥探表项中,不再向所述剪枝端口转发所述组播流。
30.根据权利要求四所述的交换机,其特征在于,所述第一模块进一步用于,为所述 剪枝端口设置剪枝时间,且,当该剪枝时间到达后,开始允许向所述剪枝端口转发所述组播 流。
31.根据权利要求四所述的交换机,其特征在于,所述第一模块进一步用于,为该剪枝 端口设置生命值,其中,该剪枝端口的生命值小于所述第一跳PIM路由器上与所述PIM剪枝 消息对应的组播流的组播路由表项的生命值,且,当该剪枝端口的生命值到达时,将该剪枝 端口暂时恢复为路由器端口,若在预设时长内未接收到针对所述组播流的PIM剪枝消息, 则将所述端口彻底恢复为路由器端口 ;否则,则将所述端口恢复为剪枝端口,并重置该剪枝 端口的生命值。
32.根据权利要求四所述的交换机,其特征在于,所述第一模块进一步用于,当发现 PIM剪枝消息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表中之后, 若发现本地未建立与所述组播流对应的PIM窥探表项,则建立与所述组播流对应的PIM窥 探表项,其中,PIM窥探表项的上游邻居列表为空,,且将本交换机上除了上游端口外的其它 所有PIM邻居端口加入到该表项的下游出端口列表中,执行所述将该剪枝端口添加到与所 述组播流对应的PIM窥探表项中的动作;且,根据本地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消息对应的组 播流的需求,若是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消息。
33.根据权利要求四所述的交换机,其特征在于,所述第一模块进一步用于,当发现消 息中的上游邻居地址不在自身利用PIM窥探功能维护的PIM路由器列表中之后,若发现本 地已建立与所述组播流对应的PIM窥探表项,则直接执行所述将该剪枝端口添加到与所述 组播流对应的PIM窥探表项中的动作;且,根据本地的PIM窥探表项和组管理窥探表项,判断是否有转发PIM剪枝消息对应的组 播流的需求,若是,则不转发PIM剪枝消息;否则,向组播源方向转发PIM剪枝消息。
34.根据权利要求四所述的交换机,其特征在于,所述交换机进一步包括第二模块,接收针对一个组播流的PIM加入消息,发现消息中的上游邻居地址不在自 身利用PIM窥探功能维护的PIM路由器列表中,若发现本地有该PIM加入消息对应组播流 的PIM窥探表项,且该PIM加入消息的接收端口为所述PIM窥探表项的剪枝端口,则根据本 地PIM窥探表项和组管理窥探表项判断本交换机除了该PIM加入消息的接收端口外,是否 还有其它端口有接收所述组播流的需求,若是,不转发该PIM加入消息,否则,向组播源方 向转发所述PIM加入消息。
35.根据权利要求34所述的交换机,其特征在于,所述第二模块进一步用于,在向组播 源方向转发所述PIM加入消息后,将所述PIM加入消息的接收端口从所述PIM窥探表项中 删除,将所述接收端口恢复为路由器端口。
36.根据权利要求四所述的交换机,其特征在于,所述交换机进一步包括第三模块, 接收针对一个组播流的组管理加入消息,将该消息的接收端口作为成员端口加入到所述组 播流的组管理窥探表项中,并向本交换机上除接收端口外的所有路由器端口、剪枝端口以及PIM窥探表项中的上游邻居转发该组管理加入消息。
全文摘要
本发明公开了组播剪枝方法及协议无关组播路由器、二层交换机。组播源通过二层交换机连接到第一跳PIM路由器。方法包括第一跳PIM路由器接收组播源发来的组播流,发现没有接收该组播流的需求;或者,接收下游PIM路由器发来的针对一个组播流的PIM剪枝消息或者接收自身下挂客户端发来的针对一个组播流的组管理离开消息,发现已经没有接收该组播流的需求,则从组播流的入接口处向外发送PIM剪枝消息。本发明剪枝了从组播源到第一跳PIM路由器之间的无用组播流。
文档编号H04L12/56GK102075417SQ20101061322
公开日2011年5月25日 申请日期2010年12月21日 优先权日2010年9月30日
发明者刘宇, 周迪, 陈乾业, 陈旭盛 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1