基于pim-sm协议的防止组播数据流洪泛的方法

文档序号:7854614阅读:394来源:国知局
专利名称:基于pim-sm协议的防止组播数据流洪泛的方法
基于PIM-SM协议的防止组播数据流洪泛的方法
技术领域
本发明涉及ー种防止组播数据流洪泛的方法,尤其是基于PM-SM (ProtocolIndependent Multicast-Sparse Mode,稀疏模式独立组播协议)协议的环境下。
背景技木在PIM-SM中,组播路由器的转发状态是根据接收者的显示加入和剪枝请求来建·立的。I、共享树的加入当一个局域网上的指定路由器(DR)通过IGMP (Internet Group ManagementProtocol,互连网组管理协议)协议发现本地有加入到组播组G的主机吋,它就会建立ー个(*,G)状态表项,并向RP (Rendezvous point,汇聚点)方向的上游路由器发出Join (加入)消息,而上游路由器也执行相同的操作,一直到达已经加入该组组播共享树的路由器或RP路由器。这样,沿途的路由器都建立了(*,G)状态表项,从而形成该组的共享树。组播数据可以沿着共享树发送到目的主机。2、共享树的剪枝当指定路由器发现本地的主机对组播组G的数据不再有需求吋,就会删除(*,G)状态表项,同时向上游路由器发出Prune (删去)消息,以便将自己从共享树中剪枝。上游路由器收到Prune消息后,检查自己是否拥有感兴趣的接受者,如果没有则继续向上游转发该剪枝消息,一直到达没有加入该组组播共享树的组播路由器或RP路由器。这就使得组播流不会在已经剪枝的分支上进行转发。3、SPT (Shortest Path Tree,最短路径树)切换针对特定的源,PIM-SM通过指定ー个利用宽带的SPT阀值可以实现将最后ー跳路由器(即离接受者最近的DR)从RPT (Rendezvous point Tree,共享树)切换到SPT。当最后一跳路由器发现从RP路由器发往组播组G的组播报文速率超过了该阀值时,就向单播路由表中到组播源S的下一跳路由器发送(S,G)加入消息,加入消息经过ー个个路由器后到达第一跳路由器(即离组播源最近的DR),沿途经过的所有路由器都拥有了(S,G)表项,从而建立了 SPT树分支。随后,最后ー跳路由器向RP路由器逐跳发送包含RP位的Prune剪枝消息,RP路由器收到消息后会向组播源反向转发Prune剪枝消息,从而最终实现组播信数据流从RPT树切换到SPT树。下面就图I、图2、图3简单说明路由器(等同于三层交換机)共享树的加入,剪枝以及SPT切换的过程。如图I所示,共享树加入的步骤如下(al)主机3向路由器I发送IGMP报告报文以便通知路由器I对组播组224. I. I. I感兴趣,它成为组播组224. I. I. I的接受者;(a2)如果路由器I本地已有主机为组播组224. I. I. I的接收者,则路由器I不会触发PM Join报文的发送;如没有,路由器I往RP路由器方向的路由器2发送ー个PIMJoin报文,同时建立(*,G)状态表项;(a3)路由器2收到路由器I发送过来的PIM Join报文,检查本地存不存在组播组224. I. I. I的状态表项。如存在,更新组播组224. I. I. I的状态表项的老化定时器;如不存在,继续往RP路由器方向的路由器3发送ー个PM Join报文,同时建立(*,G)状态表项;(a4)路由器3收到路由器2发送过来的PIM Join报文,检查本地存不存在组播组224. I. I. I的状态表象。如存在,更新组播组224. I. I. I的状态表项的老化定时器;如不存在,建立(*,G)表项,由于路由器3自身是RP路由器,停止发送PM Join报文。如图2所示,共享树剪枝的步骤如下(bl)主机3向路由器I发送IGMP离组报文(IGMP leave)以便通知路由器I对组播组224. I. I. I不再感兴趣,不再为组播组224. I. I. I的接收者;(b2)路由器I收到主机3发送过来的IGMP离组报文,从(*,G)条目的出接ロ列表 将相应的接ロ删掉。如果出接ロ列表为空,往RP路由器方向的路由器2发送PIM Prune报文;如果不为空,不需要发送PIM Prune报文;(b3)路由器2收到路由器I发送过来的PIM Prune报文,从(*,G)条目的出接ロ列表将相应的接ロ删掉。如果出接ロ列表为空,往RP路由器方向的路由器3发送PIM Prune报文;如果不为空,不需要发送PIM Prune报文;(b4)路由器3收到路由器2发送过来的PM Prune报文,从(*,G)条目的出接ロ列表将相应的接ロ删掉。由于自身是RP路由器,停止发送PM Prune报文。如图3所示,SPT切换的步骤如下(Cl)RP树已经建立好,路由器3为RP路由器,路由器6配置了 SPT切換。组播数据流的转发路径为源主机1->路由器1->路由器2->路由3->路由器5->路由器6->接收者主机2 ;(c2)路由器6收到组224. I. I. I的数据流量值大于SPT门阀值,它向源主机I方向的下一跳路由器5发送(S,G) Join报文。(c3)路由器5收到(S,G) Join报文后,建立(S,G)状态表项,添加相应的出接ロ,同时向往源主机I方向的下一跳路由器I发送(S,G) Join报文。路由器5检测到共享树和最短路径树在此分离,沿着共享树向RP路由器发ー个带RP位的PM Prune报文,表明它不想从RP那里得到组224. I. I. I的组播数据,避免收到重复信息。(c4)路由器I收到(S,G) Join报文后,建立(S,G)状态表项,添加相应的出接ロ。这样组播数据流的转发路径为源主机1->路由器1->路由器5->路由器6->接收者主机2。在上述的组播转发树建立后,无论是(*,G)或是(S,G)状态表项的出接ロ均为三层接ロ,组播数据流会在三层接口上转发出去。如图4所示,在以太网中,当路由器(三层交换机)互相连接时,三层接口下连接着两个或两个以上的路由器(三层交换机)时,组播数据流就会在VLAN洪泛,三层接口下的路由器(三层交换机)都会收到该组播数据,即使,它没有发起PIM Join报文。由此可见,使能了 PIM-SM协议的组播路由器并不能控制组播数据流在ニ层端ロ的准确转发,它只感知到应在哪个三层接口上转发,从而导致组播数据流在三层接ロ对应的VLAN中洪泛。组播数据流在VLAN中洪泛到底有多少危害? ー个很简单的道理,如果这ー个组播组承载的是一个IPTV(Interactive Personal Television,交互式网络电视)的组播频道,一个频道的视频流都通过这个组转发出去,如果下游仅有部分设备申请该频道,但整个视频流在VLAN中洪泛,导致下游所有设备都能接收到,如果频道很多的话,会导致上游设备转发流量的浪费,同时造成下游设备对大量非法流量的丢弃。

发明内容本发明需解决的技术问题是提供一种基于PIM-SM协议,防止组播数据流洪泛的方法。为了解决上述的技术问题,设计了一种基于PM-SM协议的防止组播数据流洪泛的方法,该方法包括以下的步骤Step I :获取整个组网下所使用的组播组信息;
Step 2 :在三层设备上对需要进行配置的组播组进行配置;Step 3 :三层设备记录所需配置的组播组,构建并维护ニ层端ロ转发状态表,根据ニ层端ロ转发状态表的ニ层出端ロ转发组播组数据流。作为本发明进ー步改进,所述ニ层端ロ转发状态表包括组播的源发送端地址或者RP地址、目的组地址;三层出接ロ、ニ层出端ロ列表、以及对于(S,G)的组播数据流在三层出接ロ out-interface下所剪枝掉的ニ层出端ロ列表。现有技术在路由器的三层接口下转发组播数据流,导致组播数据流在三层接ロ对应的VLAN中洪泛。本发明构建并维护三层接口下的ニ层端ロ转发状态表,根据ニ层端ロ转发状态表的ニ层出端ロ,准确转发组播组数据流,防止了组播数据流在VLAN中洪泛,提高了三层设备的性能,加强网络环境中对于组播数据流的控制和保护。

图I是现有技术路由器加入共享树的示意图;图2是现有技术路由器剪枝共享树的示意图;图3是现有技术中SPT切换的示意图;图4是现有技术中组播数据流在VLAN洪泛的示意图;图5是本发明基于PIM-SM协议的防止组播数据流洪泛的方法的流程图;图6是本发明ニ层端ロ转发状态表的组成示意图。
具体实施方式下面结合附图和实施方式对本发明作进ー步说明。PIM-SM (Protocol Independent Multicast-Sparse Mode,稀疏模式独立组播协议)协议是ー个“拉”方式建立组播路由表的协议。它通过下游路由器(三层交换机)主动向源或者共享树的汇聚点(RP)发出Join信息来建立转发树。对于这样的协议,在采取ニ层端ロ管理的时候也应该遵循这一原则,使组播数据流只在收到Join信息的ニ层端ロ进行转发。根据上面的分析,需要侦听的PM消息为Join/Prune消息。三层接ロ使能PM-SM协议时,三层接ロ可能发出Join/Prune (*,*,RP),Join/Prune (*,G),Join/Prune (S, G)和 Join/Prune (S, G, rpt)等信息。因此,使能了 PIM-SM 协议的三层接口下的每个ニ层端ロ需要维护(*,*,RP)、(*,G)、(S,G)、(S,G, rpt)四种状态。本发明基于PIM-SM协议的防止组播数据流洪泛的方法,其具体步骤如图5所示Step I :获取到整个组网环境中所使用的组播组信息。Step 2 :在三层设备上对需要进行配置的组播组进行配置。Step 3 :三层设备记录所需配置的组播组,构建并维护三层设备ニ层端ロ转发状态表。在实施例中,开始时的ニ层端ロ转发状态表为空,即不存在;只有当三层接口下的ニ层端ロ收到有匹配的组的PM Join/Prune报文时,才构建并维护转发状态表项。 在没有下游三层设备(路由器)发出PM Join前,并不存在上述的ニ层端ロ转发状态表。当三层接口下的ニ层端ロ收到PM Join报文后,根据监听的ニ层端口号,新建并维护ニ层端ロ转发状态表。当三层接口下最后ー个收到PM Join的ニ层端ロ收到PM Prune时,删除该组的ニ层端ロ转发状态表。在构建好ニ层端ロ转发状态表后,组播组数据流在往下游三层设备转发时,根据ニ层端ロ转发状态表的ニ层出端ロ准确发送组播组数据流,不会再在VLAN中洪泛,整个保护系统开始正常运行了。根据RFC4601的规定,本发明,基于PM-SM协议,关于三层设备的三层接口下的ニ层端ロ有以下四种P頂Join/Prune状态机I. PIM(*,*,RP) Join/Prune State:# State 0ne of { “Noinfo” (NI), ” Join(J),,,” Prune-Pending” (PP)}# NumberETsActive# Prune-Pending Timer (PPT)# Join/Prune Expiry Timer (ET)2. PIM(*, G) State:# State 0ne of { “Noinfo” (NI), ” Join(J) ”,” Prune-Pending” (PP)}# NumberETsActive# Prune-Pending Timer (PPT)# Join/Prune Expiry Timer (ET)3. PIM(S, G) State:# State 0ne of { “Noinfo” (NI), ” Join(J) ”,” Prune-Pending” (PP)}# NumberETsActive# Prune-Pending Timer (PPT)# Join/Prune Expiry Timer (ET)4. PIM (S, G, rpt) State:# State 0ne of { “Noinfo”,” Pruned”,” NotPruned,,}(*,*,RP),(*,G),(S,G)三种状态机存在以下三种状态=Noinfo, Join,Prune-Pending。Noinfo表示没有加入/剪枝状态Join表示加入状态,表示下游存在接收者;Prune-Pending表示剪枝等待裁决状态,表项等待被删除。(S, G, rpt)状态机存在以下三种状态Noinfo, Pruned, NotPruned。Noinfo 表示没有加入/剪枝状态;Pruned表示(*,G)或者(*,*,RP(G))加入,但(S,G, rpt)剪枝;NotPruned表示(*,G)或者O, *,RP (G))加入并且(S,G, rpt)没有剪枝。
针对(*,*,RP),(*,G),(S,G)三种状态机,NumberETsActive为加入状态下的ニ层端口数目计数器。(*,*,RP), (*,G), (S,G)三种状态机存在以下两个定时器Prune_PendingTimer定时器表示剪枝等待定时器,Join/Prune Expiry Timer定时器表示加入/剪枝超时定时器。在(*,*,RP),(*,G), (S,G)状态机下,当处于Prune-Pending状态时,如果Prune-Pending Timer超时前收到PIM加入报文,从Prune-Pending状态转换到Join状态;如果 Prune-Pending Timer 超时了,从 Prune-Pending 状态转化到 Noinfo 状态。如果 Join/Prune Expiry Timer定时器超时,从Join或Prune-Pending状态转化到Noinfo状态。基于PIM-SM 协议,ニ层端ロ需要维护(*,*,RP)、(*,G)、(S,G)、(S,G,rpt)的这四种状态,ニ层端ロ转发状态表的设计针对这四种状态消息设计。如图6所示,ニ层端ロ转发状态表的格式,其中,source表示组播的源发送端地址或者RP地址;group表示目的组地址;out_interface表示三层出接ロ ;out_port表示ニ层出端ロ列表;prune_port表示对于(S,G)的组播数据流,在三层出接ロ out-interface下所剪枝掉的ニ层出端ロ列表。
结合PIM-SM协议的消息类型及定时器引起状态机的变化特征,维护ニ层端ロ转发状态表时必须考虑以下问题I.接收至Ij Join O, *,RP),Join O, G)或者 Join (S,G)消息2.接收至Ij Prune (*,*,RP),Prune (*,G)或者 Prune (S,G)消息3. (*,*,RP),(*,G)和(S,G)的 PPT 超市或者 ET 超时4.收到 Prune (S,G, rpt)5.收至Ij Join (S,G, rpt)或不带有 Prune (S,G, rpt)的 Join (*,G)三层设备的每个三层接口下面的ニ层端ロ可根据以下公式来确定inheriter_oport (S,G, rpt) = (join (*,*,RP (G)) (+) join (*, G) (-) prunes (S, G, rpt)公式 linheriter_oport (S, G) =inheriter (S, G, rpt) (+) join (S, G)公式 2其中,join0,*,RP)表示ニ层端ロ处于(*,*,RP)加入或者(*,*,RP)等待删除状,join(*,G)表示ニ层端ロ处于(*,G)加入或者(*,G)等待删除状态,join (S,G)表示ニ层端ロ处于(S,G)加入或者(S,G)等待删除状态,prunes (S,G,rpt)表示ニ层端ロ处于(S, G, rpt)下删状态。符号(+)表不集合相加,符号(_)表不集合相减。当计算0,*,RP), 0,G), (S, G, rpt)状态下的ニ层出端ロ列表,使用公式I ;当计算(S,G)状态下的ニ层出端ロ列表,使用公式2。根据状态机的变化以及计算公式,我们可以准确地计算出三层出接口下的ニ层出端ロ,即图6中的out-port。所以,三层设备可以准确地往out-port列表下的ニ层出端ロ转发组播数据流,组播数据流不会再VLAN中洪泛。本发明通过构建并维护三层设备三层接口下的ニ层端ロ转发状态表,防止了基于PIM-SM协议的组播数据流在VLAN中洪泛,提高了三层设备的性能,提高网络环境中对于组播数据报文洪泛的控制和保护。以上所述的仅是本发明的实施方式,在此应当指出,对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出改进,但这些均属于本发明的保护范围。
权利要求
1.一种基于PIM-SM协议的防止组播数据流洪泛的方法,其特征在于该方法包括以下的步骤 Step I :获取整个组网下所使用的组播组信息; Step 2 :在三层设备上对需要进行配置的组播组进行配置; Step 3 :三层设备记录所需配置的组播组,构建并维护二层端口转发状态表,根据二层端口转发状态表的二层出端口转发组播组数据流。
2.根据权利要求所述的一种基于PIM-SM协议的防止组播数据流洪泛的方法,其特征在于所述二层端口转发状态表包括组播的源发送端地址或者RP地址、目的组地址;三层出接口、二层出端口列表、以及对于(S,G)的组播数据流在三层出接口 out-interface下所剪枝掉的二层出端口列表。
全文摘要
本发明提供了一种基于PIM-SM协议的防止组播数据流洪泛的方法,该方法包括以下的步骤获取整个组网下所使用的组播组信息;在三层设备上对需要进行配置的组播组进行配置;三层设备记录所需配置的组播组,构建并维护二层端口转发状态表,根据二层端口转发状态表的二层出端口转发组播组数据流。本发明构建并维护三层接口下的二层端口转发状态表,根据二层端口转发状态表的二层出端口,准确转发组播组数据流,防止了组播数据流在VLAN中洪泛,提高了三层设备的性能,加强网络环境中对于组播数据流的控制和保护。
文档编号H04L12/46GK102739538SQ20121021735
公开日2012年10月17日 申请日期2012年6月27日 优先权日2012年6月27日
发明者张百元, 车任秋, 陈千炫, 龙海涛 申请人:上海斐讯数据通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1