一种组播数据的传输方法和设备的制作方法

文档序号:7594754阅读:125来源:国知局
专利名称:一种组播数据的传输方法和设备的制作方法
技术领域
本发明涉及通信技术领域,特别是涉及一种组播数据的传输方法和设备。
背景技术
随着IPTV(Internet Protocol Television,交互式网络电视)、视频会议等网络 业务的开展,组播业务在现有网络上越来越受到广泛的应用,作为与单播和广播并列的通 信方式,组播技术能够有效地解决单点发送、多点接收的问题,从而实现了网络中点到多点 的高效数据传送,节约大量网络带宽、降低网络负载。现有组播一般采用PIM(Protocol Independent Multicast,协议无关组播)协议, 对于大型组播网络,部署 PIM SM(Protocol Independent Multicast-SparseMode,协议无 关组播-稀疏模式)协议最为普遍,PIM-SM属于稀疏模式的组播路由协议,使用“拉(Pull) 模式”传送组播数据,适用于组播组成员分布相对分散、范围较广的大中型网络。此外,现有 应用中,BIDIR (Bidirectional,双向)PIM协议也有着比较广泛的应用前景。在PIM-SM中,运行PIM-SM协议的路由器周期性发送Hello消息,发现邻接的PIM 路由器,并负责在多路访问网络中进行DR(DeSignated Router,指定路由器)选举。DR负 责为与其直连的组成员向组播树根节点方向发送加入/剪枝消息,或将直连组播源的数据 转发到组播分发树。其中,PIM-SM通过建立组播分发树来进行组播数据包的转发,该组播分发树分为 以组G的RP为根的共享树和以组播源为根的最短路径树,PIM-SM可通过显式的加入/剪 枝机制来完成组播分发树的建立与维护。另外,PIM-SM中还涉及RP(Rendezvous Point,汇集点)的选择机制,具体的,在 PIM-SM域内配置一个或多个候选自举路由器(Candidate-BSR),并使用一定规则从中选出 自举路由器(BSR),PIM-SM域中还配置有候选RP路由器(Candidate-RP),该候选RP将包 含了地址及可服务的组播组等信息的报文单播发送给BSR,由BSR定期生成包括一系列候 选RP以及相应组地址的自举消息,该自举消息在整个PIM-SM域中逐跳发送,路由器接收并 保存该自举消息。基于上述候选RP,当DR从直连主机接收到IGMPGnternet GroupManagement Protocol,互联网组管理协议)加入报文,如果该DR没有相应组的路由项,则使用hash算 法将组地址映射到一个候选RP,然后向RP方向逐跳组播加入/剪枝消息。当DR从直连主 机接收到组播数据包,如果该DR没有相应组的路由项,则使用hash算法将组地址映射到一 个候选RP,然后将组播数据封装在注册消息中单播发送到RP。BIDIR PIM是PIM SM的变种,组播流只会沿着相应组的双向共享树传递,路由器 上只会出现(*,G)组播表项,该双向共享树以相应组的RP地址为根,形成非环的树状拓扑。 组成员的加入过程需要通过Join (加入)报文来显式加入,来自组播源的组播流会被路由 器无条件转发到RP,然后沿着树的各个分支流送往相应组的接收者。另外,BIDIR PIM用于单个PIM域的多对多的应用,组播源可以任意多,与PIM-SM相比,BIDIR PIM节省了 PIM-SM的源注册过程,从而使得所有路由器仅依靠(*,G)表项来 进行组播流的转发,而不需要为特定组播源单独建立状态,如图1所示的单向共享树与源 树的示意图和图2所示的双向共享树的示意图。具体的,在BIDIR PIM中,为了避免组播流出现环路,引入了一种新的 DF(Designated forwarder,指定转发者)选举机制,以建立一棵以RP为根的不会成环的 树。在每一个网段和点对点链路上,所有路由器均参与DF选举过程,该过程在特定网段或 点对点链路上为每一个RP选举出一个路由器作为DF,DF负责向RP转发从该网段的接口上 接收到的组播流。DF选举过程基于单播路由表,具有到达RP的最佳单播路由的路由器会成为DF,从 而保证只有一份组播流会被转发到RP。在为每个RP选举DF时,会出现同一网段上存在多 个DF的可能,每一个DF分别为一个RP服务;此外,一个特定的路由器会在不同的接口上被 选举为DF。进一步的,存在接收者的网段上,只有被选举为DF的路由器才会将接收到IGMP加 入报文的接口加入到出接口列表,并向RP发送(*,G)加入消息。当一个下游路由器需要加 入共享树时,其发送加入消息的RPF邻居是该接口网段上的DF ;路由器收到加入/离开消 息时,如果该路由器不是消息接口网段上的DF,则忽略该消息;否则更新共享树。BIDIR PIM域中的路由器只会创建(*,G)表项,(*,G)的出接口列表包括路由器 被选举为DF网段上的接口,收到IGMP加入消息或PIM加入消息的接口。如果路由器处于 只有发送者没有接收者的共享树分支上,则会创建(*,G)表项,出接口列表为空。如果报文 来自于RPF接口,则该报文按照(*,G)表项的出接口列表进行转发;否则,只有DF可向RP 转发来自DF所在接口的报文,并将报文按照(*,G)表项的出接口列表进行转发,其他路由 器丢弃来自非RPF接口的报文。在实现本发明的过程中,发明人发现现有技术中至少存在以下问题BIDIR PIM具有很好的应用前景,适用于多对多的组播应用服务,然而在部署 BIDIR P頂协议时,要求网络中所有的路由器都支持该BIDIR PIM协议,从而导致BIDIR PIM 协议的应用范围受到了很大的限制。在实际使用过程中,有的路由器只能支持PIM SM协议,有的路由器可以支持BIDIR PIM协议,而现有技术中并没有对PIM SM协议和BIDIR PIM协议进行很好的兼容,使BIWR PIM协议不能广泛应用,在具有大量组播源的场景中,由于(S,G)表项过多导致路由器的规 格受到了很大的限制。

发明内容
本发明提供一种组播数据的传输方法和设备,以将PIM SM域中的组播数据传输给 BIDIR PIM域的接收者。为了达到上述目的,本发明提出了一种组播数据的传输方法,应用于包括BIDIR PIM域和PIM SM域的组播网络中,BIWR PIM域中与PIM SM域中第一设备连接的第二设备 上使能PIM SM协议,且所述第二设备为PIM SM域中的汇聚点,该方法包括以下步骤所述第二设备接收来自PIM SM域中组播源的指定路由器的注册消息,并从所述注 册消息中获得组播源的地址信息和组播源对应第一组播组的地址信息;
所述第二设备经过所述第一设备向所述指定路由器发送携带组播源的地址信息 和第一组播组的地址信息的(S,G)加入报文,所述(S,G)加入报文经过的设备建立(S,G) 表项;所述第二设备从所述第一设备接收来自组播源的第一组播组对应的组播数据,所 述组播数据根据所述(S,G)加入报文所经过的设备建立的(S,G)表项路由到所述第二设 备;所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点;或者,所述第二 设备将所述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIRPIM域中的接收者。本发明提出了一种组播数据的传输设备,应用于包括BIDIR PIM域和PIMSM域的 组播网络中,所述传输设备为BIDIR PIM域中与PIM SM域中第一设备连接的第二设备,且 所述第二设备上使能PIM SM协议,并作为PIM SM域中的汇聚点,该传输设备包括注册消息接收模块,用于接收来自PM SM域中组播源的指定路由器的注册消息;地址信息获得模块,用于从所述注册消息中获得组播源的地址信息和组播源对应 第一组播组的地址信息;加入报文发送模块,用于经过所述第一设备向所述指定路由器发送携带组播源的 地址信息和第一组播组的地址信息的(S,G)加入报文;组播数据接收模块,用于从所述第一设备接收来自组播源的第一组播组对应的组 播数据;组播数据发送模块,用于将所述组播数据发送给BIDIR PIM域中的汇聚点;或者, 将所述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIR PIM域中的接收者。与现有技术相比,本发明具有以下优点通过在BIDIR PIM域中与PIMSM域中第一 设备连接的第二设备上使能PIM SM协议,且将第二设备设置为PIM SM域中的汇聚点,可以 通过第二设备将PIM SM域中的组播数据发送给BIDIR PIM域中的接收者,并将BIDIR PIM 域中的组播数据发送给PIMSM域中的接收者;实现了 BIDIR PIM和PIM SM的平滑对接,使 得BIDIR PIM协议可得到广泛的应用。


图1为现有技术中单向共享树与源树的示意图;图2为现有技术中双向共享树的示意图;图3为本发明一种应用场景下提出的组网模式图;图4为本发明实施例一提出的一种组播数据的传输方法流程图;图5为本发明实施例二提出的一种组播数据的传输方法流程图;图6为本发明实施例三提出的一种组播数据的传输设备结构图。
具体实施例方式以下结合附图对本发明实施例进行详细说明。本发明实施例一种应用场景下提出的组播数据的传输方法,应用于包含BIWR PIM域和PIM SM域的组播网络中,如图3所示,为本发明实施例应用场景的组网示意图, R1、R2、R3、R4、R5为BIDIR PIM域中三层设备(可以为路由器或者三层交换机),Clientl、Client3、组播服务器krverl为BIDIR PIM域中的应用设备,S1、S2、S3、S4为PIM SM域中 三层设备(可以为路由器或者三层交换机),Client2、组播服务器%1^吐2为PIMSM域中 的应用设备,为了方便描述,本发明实施例中各三层设备以路由器为例进行说明。本发明实施例中,组播服务器Serverf为组播组G2提供组播数据,组播服务器 Serverl为组播组Gl提供组播数据。基于上述组网情况,本发明实施例的配置阶段情况如下A、在Rl上使能PIM-SM协议,基于PIM-SM协议,运行PIM-SM的路由器(R1、S1、S2、 S3、S4)会周期性发送PIM Hello消息,以发现邻接的PIM路由器。具体的,Rl通过发送PIM Hello消息,Rl将Sl作为自身的PIM SM邻居,记录Rl 上指向Sl的出接口信息;同样的,Sl将Rl作为自身的PIMSM邻居,记录Sl上指向Rl的出 接口信息;对S2、S3、S4等设备类似,例如,Sl将S3、S2作为自身的PIM SM邻居,在此不再 详加赘述。在Rl上使能BIDIR PIM协议,BIWR PIM协议的邻居发现机制与PIMSM协议类似, 不同的是,BIWR PIM协议在PIM Hello消息中引入了 Bidir-Capable选项,该选项用于路 由器声明自己具有参与BIDIR PIM协议运行的能力,因此,基于BIDIR PIM协议,运行BIDIR PIM的路由器(Rl、R2、R3、R4)会周期性发送PIM Hello消息,且Rl将R2、R4作为自身的 BIDIR邻居,以此类推,R2将Rl、R3作为自身的BIWR邻居,在此不再详加赘述。B、在PIM-SM域中,可以配置多个候选的C-BSR,并按照一定的规则从多个候选的 C-BSR中选举一个BSR, BSR是PIM-SM域的管理核心,一个PIM-SM域内只能有一个BSR。本发明实施例中,需要将Rl手工配置为PIM-SM域中所有组播组的 C-RP (Candidate Rendezvous Point,候选汇聚点),在多个候选的C-BSR选举BSR的过程 中,Rl可获知网络中哪个路由器为BSR,之后Rl将自身的信息(如地址信息、可提供的组播 组信息等)单播给BSR,BSR可将Rl的信息广播给PIM-SM域中所有路由器(Si、S2、S3、S4 等);之后,由于本发明实施例中只配置Rl为所有组播组的C-RP,则PIM-SM域中所有路由 器均可保存Rl的信息,且知道Rl为PIM-SM域的RP。在BIDIR PIM域中,基于现有的BIDIR PIM协议,各路由器(R1、R2、R3、R4、R5)之 间可选举出BIDIR PIM域的RP,本发明实施例中以R2为例,则BIDIR PIM域中各个路由器 会记录R2为RP的相关信息。实施例一基于上述组网情况和配置情况,如图4所示,组播源(组播服务器krverf)在 PIM-SM域,接收者(Clientl、Client3)在BIDIR PIM域时,相应的数据传输过程包括步骤101,PIM_SM域中,指定路由器S3收到组播服务器Serverf发送的组播组G2 的组播数据时,指定路由器S3通过注册消息将组播数据封装成单播报文,并将封装后的单 播注册消息发送到组播组G2的汇聚点Rl。步骤102,当汇聚点Rl收到该注册消息后,向组播服务器krverf逐跳发送(S, G2)加入报文。其中,上述注册消息中携带了组播服务的地址信息和组播组的地 址信息(组播组G2的地址信息);因此Rl可将组播服务器Serverf的地址作为目的地址 向组播服务器Serverf发送(S,G》加入报文(S为组播服务器krverf的地址,G2为组播 组G2的地址)。
具体的,在Rl上到达组播服务器krver2的单播路由中,有指向Sl的出接口,而 且通过PIM Hello消息维护的邻居表项中,也有上述指向Sl的出接口,则Rl可通过指向Sl 的出接口将(S,G2)加入报文发送给Sl ;Sl根据(S,G2)加入报文建立(S,G)表项,该(S, G)表项出接口指向Rl。同样的,在Sl上到达组播服务器krverf的单播路由中,有指向S3的出接口,而 且S3上维护的邻居表项中也有上述指向S3的出接口,则S1可通过指向S3的出接口将(S, G2)加入报文发送给S3 ;S3根据(S,G》加入报文建立(S,G)表项,该(S,G)表项出接口指 向Si。进一步的,由于S3为组播服务!krverf的指定路由器,当S3接收到(S,G2)加入 报文后,不再向其他路由器发送(S,G》加入报文。这样,从汇聚点Rl到组播服务!krverf 所经过的路由器形成了 SPT(最短路径树)的分支,分支上的路由器在其转发表中生成了 (S,G)表项。步骤103,组播服务器Serverf发出的组播数据沿着已建立好的SPT到达汇聚点 Rl。具体的,组播服务器Serverf将组播数据发送给指定路由器S3,由于S3已建立 (S,G)表项,当S3接收到来自组播服务!krverf的组播数据后,可匹配到对应的(S,G) 表项,且(S,G)表项的出接口指向Si,则S3将通过该出接口将组播数据发送给Sl ;之后,当 Sl接收到来自S3的组播数据后,可匹配到对应的(S,G)表项,且(S,G)表项的出接口指向 R1,则Sl将通过该出接口将组播数据发送给R1。需要注意的是,上述步骤101-103为PIM-SM域中组播数据传输至汇聚点Rl的过 程,本发明实施例中,由于该Rl上还使能了 BIDIR PIM协议,而且BIDIR PIM域中的汇聚点 为R2,则该方法还包括步骤104,Rl将组播数据发送给R2。在PIM-SM域中,Rl作为汇聚点可接收到来自 组播服务器Server2的组播数据;在BIDIR PIM域中,由于汇聚点为R2,在Rl上到达R2的 单播路由中,有指向R2的出接口,且通过PIM Hel Io消息维护的邻居表项中,也有上述指向 R2的出接口,则Rl可通过指向R2的出接口将组播数据发送给R2。需要注意的是,当Rl接收到来自组播服务器krverf的组播数据后,还需要匹配 自身的(*,G)表项,如果可匹配到组播组G2对应的(*,G)表项,则通过(*,G)表项的出接 口将组播数据转发出去。例如,Rl在接收到组播数据之前,接收到来自R4的(*,G2)加入 报文时,则Rl将建立组播组G2的(*,G)表项,且(*,G)表项的出接口指向R4,此时Rl匹 配(*,G)表项后可通过指向R4的出接口将组播数据发送给R4。具体的,当Clientl需要接收来自组播服务器krverf的组播数据时,加入组播服 务器Serverf对应的组播组G2。其中,Clientl通过IGMP加入报文通知自身的指定转发者 R4,该Clientl想加入组播组G2。当R4接收到IGMP加入报文后,获知组播组G2的信息, 建立(*,G)表项,出接口指向Clientl,并向BIDIR PIM域中汇聚点R2发送(*,G2)加入报文。由于R4上到达R2的单播路由中,有指向Rl的出接口,且通过PIMHello消息维护 的邻居表项中也有上述指向Rl的出接口,则R4可通过指向Rl的出接口将(*,G2)加入报 文发送给Rl,由Rl根据(*,G2)加入报文建立(*,G)表项,出接口指向R4。
由于Rl上到达R2的单播路由中,有指向R2的出接口,且通过PIMHello消息维护 的邻居表项中也有上述指向R2的出接口,则Rl可通过指向R2的出接口将(*,G2)加入报 文发送给R2,由R2根据(*,G2)加入报文建立(*,G)表项,出接口指向Rl。因此,Rl在接收到组播数据后,可匹配到出接口指向R4的(*,G)表项,并根据该 出接口指向R4的(*,G)表项将组播数据发送给R4 ;R4接收到来自Rl的组播数据后,可匹 配到出接口指向Clientl的(*,G)表项,并根据出接口指向Clientl的(*,G)表项将组播 数据发送给Clientl。步骤105,R2将组播数据发送给BIDIR PIM域中的接收者Client3。本步骤之前,当Client3需要接收来自组播服务器Serverf的组播数据时,加入组 播服务器Server2对应的组播组G2。其中,Client3通过IGMP加入报文通知自身的指定转 发者R5,该Client3想加入组播组G2。当R5接收到IGMP加入报文后,获知组播组G2的信 息,建立(*,G)表项,出接口指向Client3,并向BIDIR PIM域中的汇聚点R2发送(*,G2) 加入报文。具体的,由于R5上到达R2的单播路由中有指向R2的出接口,且通过PIM Hello 消息维护的邻居表项中也有上述指向R2的出接口,则R5可通过指向R2的出接口将(*,G2) 加入报文发送给R2,由R2根据(*,G2)加入报文建立(*,G)表项,出接口指向R5。本步骤中,当R2接收到来自Rl的组播数据后,可匹配到出接口指向R5的(*,G) 表项,并根据该出接口指向R5的(*,G)表项将组播数据发送给R5。当R5接收到来自R2的 组播数据后,可匹配到出接口指向Client3的(*,G)表项,并根据该出接口指向Client3的 (*,G)表项将组播数据发送给Client3。本发明实施例中,当R2接收到来自Rl的组播数据后,如果没有匹配到组播组G2 对应的(*,G)表项,则R2丢弃接收到的组播数据。需要注意的是,现有技术中,针对步骤102,当汇聚点Rl收到来自指定路由器S3的 注册报文后,如果Rl通过匹配自身的(*,G)表项获知组播组G2没有接收者时(即Rl上没 有组播组G2的(*,G)表项),则Rl向组播服务的指定路由器S3发送注册停止 报文。本发明实施例中,当汇聚点Rl收到来自指定路由器S3的注册报文后,即使Rl通 过匹配自身的(*,G)表项获知组播组G2没有接收者时,也不会向组播服务的指 定路由器S3发送注册停止报文。实施例二基于上述组网情况和配置情况,如图5所示,组播源(组播服务器krverl)在 BIDIR PIM域,接收者(Client2)在PIM-SM域时,相应的数据传输过程包括步骤201,在BIDIR PIM域中,组播服务器krverl向其对应的指定转发者R3发送 组播数据,该组播数据的组播组地址为Gl。步骤202,R3将组播数据发送给汇聚点R2。在BIDIR PIM域中,由于汇聚点为R2, 在R3上到达R2的单播路由中,有指向R2的出接口,且通过PIM Hello消息维护的邻居表 项中,也有上述指向R2的出接口,则R3可通过指向R2的出接口将组播数据发送给R2。另外,当R3接收到组播数据后,可根据组播组地址Gl建立(*,G)表项,且该(*, G)表项中出接口为RPF接口(RPF接口为指向汇聚点R2的接口,即R3上指向R2方向的接Π )。步骤203,R2匹配自身的(*,G)表项,如果可匹配到组播组Gl对应的(*,G)表项, 则通过(*,G)表项的出接口将组播数据转发出去。本步骤之前,如果有接收者向R2发送给(*,Gl)加入报文,则R2上会建立组播组 Gl对应的(*,G)表项,从而在本步骤中可通过(*,G)表项的出接口转发该组播数据。本发明实施例中,以PIM-SM域中有接收者Client2需要加入组播组Gl为例进行 说明,则步骤203之前,当Client2需要接收来自组播服务器krverl的组播数据时,加入组播服务器 Serverl对应的组播组Gl。其中,Client2通过IGMP加入报文通知自身的指定路由器S4, 该Client2想加入组播组Gl。当S4接收到IGMP加入报文后,获知组播组Gl的信息,建立 (*,G)表项,出接口指向Client2,并向PIM-SM域中的汇聚点Rl发送(*,Gl)加入报文,其 中携带组播组Gl的地址信息。具体的,由于S4上到达Rl的单播路由中,有指向S2的出接口,且通过PIM Hello 消息维护的邻居表项中,也有上述指向S2的出接口,则S4可通过指向S2的出接口将(*, Gl)加入报文发送给S2,由S2根据(*,Gl)加入报文建立(*,G)表项,出接口指向S4。由于S2上到达Rl的单播路由中,有指向Sl的出接口,且通过PIMHello消息维护 的邻居表项中,也有上述指向Sl的出接口,则S2可通过指向Sl的出接口将(*,G1)加入报 文发送给Si,由Sl根据(*,G1)加入报文建立(*,G)表项,出接口指向S2。由于Sl上到达Rl的单播路由中,有指向Rl的出接口,且通过PIMHello消息维护 的邻居表项中,也有上述指向Rl的出接口,则Sl可通过指向Rl的出接口将(*,Gl)加入 报文发送给R1,本发明实施例中,当Rl接收到(*,G1)加入报文后,对于需要加入的组播组 Gl,分为以下情况(1)如果Rl中存在组播组Gl对应的(*,G)表项,且该(*,G)表项中包含了至少 一个非RPF接口(RPF接口为指向汇聚点R2的接口,即Rl上指向R2方向的接口)的出接 口(如Rl上指向R4的出接口),则表明之前已经有对应的(*,G1)加入报文向汇聚点R2发 起过加入过程(如针对Clientl的加入过程),此时,Rl在该组播组Gl对应的(*,G)表项 中添加一个新的指向Sl的出接口即可。(2)如果Rl中存在组播组Gl对应的(*,G)表项,且该(*,G)表项中出接口只为 RPF接口,则表明之前已经向汇聚点R2发送过对应组播组Gl的组播数据(如Rl接收到来 自BIDIR PIM域中其他路由器的组播数据,并将该组播数据发送给R2的过程中,会建立(*, G)表项,且(*,G)表项的出接口为Rl上指向R2方向的接口),此时,Rl在该组播组Gl对应 的(*,G)表项中添加一个指向Sl的出接口,并向R2发送基于BIDIR PIM协议的(*,G1)加 入报文。为了区分方便,本发明实施例中,可称来自PIM SM域的Sl的(*,Gl)加入报文为 PIM SM(*,G1)加入报文,称向R2发送的基于BIDIR PIM协议的(*,Gl)加入报文为BIDIR PIM (*,G)加入报文。(3)如果Rl中存在组播组Gl对应的(*,G)表项,且该(*,G)表项中存在指向Sl 的出接口,则(*,G)加入报文的加入过程结束。(4)如果Rl中不存在组播组Gl对应的(*,G)表项,则表明之前没有对应的(*, Gl)加入报文向汇聚点R2发起过加入过程,此时,Rl根据来自Sl的(*,Gl)加入报文建立(*,G)表项,出接口指向Si,并向R2发送基于BIDIR PIM协议的(*,Gl)加入报文。本发明实施例中,Rl向R2发送基于BIDIR PIM协议的(*,Gl)加入报文的过程, 具体为当Rl接收到基于PIM SM协议的(*,Gl)加入报文后,Rl的CPU (软件层)根据协 议类型(PIM SM协议)将(*,G1)加入报文发送给组播模块的PIM SM模块,由PIM SM模块 解析出要加入的组地址Gl的信息,并将组地址Gl的信息发送到组播模块的BIDIR PIM模 块,由BIDIRPIM模块根据组地址Gl的信息生成基于BIDIR PIM协议的(*,Gl)加入报文。之后,在BIDIR PIM域中,由于汇聚点为R2,在Rl上到达R2的单播路由中,有指 向R2的出接口,且通过PIM Hello消息维护的邻居表项中,也有上述指向R2的出接口,则 Rl可通过指向R2的出接口将基于BIDIRPIM协议的(*,G1)加入报文发送给R2 ;由R2根据 (*,G1)加入报文建立组播组Gl的(*,G)表项,且该(*,G)表项的出接口指向R1。基于上述(*,G)表项的建立过程,步骤203中,如果R2匹配到出接口指向Rl的 (*,G)表项,则R2根据(*,G)表项的出接口将组播数据发送给R1。步骤204,Rl接收到来自R2的组播数据后,匹配组播组Gl对应的(*,G)表项,并 通过匹配到的(*,G)表项的出接口将组播数据发送给Si。其中,在Client2的(*,Gl)加 入报文的加入过程中,Rl上会建立出接口指向Sl的(*,G)表项,因此Rl可匹配到组播组 Gl对应的(*,G)表项,并通过(*,G)表项的出接口将组播数据发送给Si。步骤205,Sl接收到来自Rl的组播数据后,匹配组播组Gl对应的(*,G)表项,将 匹配到的(*,G)表项修改为(S,G)表项,并通过(S,G)表项的出接口将组播数据发送给S2。 其中,S为组播源(组播服务器krverl)的地址,可以从组播数据中获知。在Client2的(*,Gl)加入报文的加入过程中,Sl上会建立出接口指向S2的(*, G)表项,因此Sl可匹配到组播组Gl对应的(*,G)表项,将(*,G)表项修改为(S,G)表项, 且(S,G)表项的出接口指向S2,并通过(S,G)表项的出接口将组播数据发送给S2。步骤206,S2接收到来自Sl的组播数据后,匹配组播组Gl对应的(*,G)表项,将 匹配到的(*,G)表项修改为(S,G)表项,并通过(S,G)表项的出接口将组播数据发送给S4。S4接收到来自S2的组播数据后,匹配组播组Gl对应的(*,G)表项,将匹配到的 (*,G)表项修改为(S,G)表项,并通过(S,G)表项的出接口将组播数据发送给Client2。其中,S2、S4与Sl的处理过程类似,在此不再详加赘述。需要注意的是,基于上述实施例二,当Client2加入组播组Gl后,如果Client2不 再需要来自组播服务器Serverl的组播数据时,则Client2会退出组播组Gl,相应的过程包 括Client2通过IGMP离开报文通知自身的指定路由器S4,该Client2想退出组播组 Gl。当S4接收到IGMP离开报文后,可获知组播组Gl的信息,如果组播组Gl对应(S,G)表 项只有指向Client2的出接口,则S4删除组播组Gl对应(S,G)表项,而且由于S4上到达 Rl的单播路由中有指向S2的出接口,且邻居表项中也有上述指向S2的出接口,则S4可通 过指向S2的出接口将(S,Gl)剪枝报文发送给S2 ;如果组播组Gl对应(S,G)表项不是只 有指向Client2的出接口,则S4删除组播组Gl对应(S,G)表项中的指向Client2的出接 口,结束流程。类似的,如果S2接收到(S,Gl)剪枝报文,且组播组Gl对应(S,G)表项只有指向S4的出接口,则S2删除组播组Gl对应(S,G)表项,并将(S,Gl)剪枝报文发送给Sl ;如果 Sl接收到(S,Gl)剪枝报文,且组播组Gl对应(S,G)表项只有指向S2的出接口,则Sl删 除组播组Gl对应(S,G)表项,并将(S,Gl)剪枝报文发送给R1。当Rl接收到基于PIM SM协议的(S,Gl)剪枝报文后,对于需要退出的组播组Gl, Rl的CPU (软件层)根据协议类型(PIM SM协议)将(S,Gl)剪枝报文发送给组播模块的 PIM SM模块,由PIM SM模块解析出要退出的组地址Gl的信息,并将组地址Gl的信息发送 到组播模块的BIDIR PIM模块,由BIDIR PIM模块根据组地址Gl的信息生成基于BIDIRPIM 协议的(*,G1)剪枝报文。根据该(*,G1)剪枝报文,如果组播组Gl对应(*,G)表项只有指向Sl的出接口, 则Rl删除组播组Gl对应(*,G)表项;如果组播组Gl对应(*,G)表项不是只有指向Sl的 出接口(如还有指向R4的出接口),则Rl删除组播组Gl对应(*,G)表项中的指向Sl的 出接口。进一步的,如果Rl上还存在组播组Gl对应(*,G)表项,则Rl不会发送(*,G1)剪 枝报文给R2。如果Rl删除了组播组Gl对应(*,G)表项时,由于Rl上到达R2的单播路由 中,有指向R2的出接口,且邻居表项中也有上述指向R2的出接口,则Rl可通过指向R2的 出接口将(*,G1)剪枝报文发送给R2。之后,根据(*,G1)剪枝报文,如果R2上的组播组Gl对应(*,G)表项只有指向Rl 的出接口,则R2删除组播组Gl对应(*,G)表项,如果R2上的组播组Gl对应(*,G)表项不 是只有指向Rl的出接口,则R2删除组播组Gl对应(*,G)表项中指向Rl的出接口,结束流程。另外,需要注意的是,基于现有的PIM-SM协议,当S4建立了(S,G)表项,获知组播 源的地址后,可不再通过共享树RPT接收组播数据,即不通过汇聚点Rl接收组播数据;而通 过最短路径树SPT接收组播数据。具体的,S4可发起从RPT向SPT的切换,S4向组播服务器Server2逐跳发送(S, G2)加入报文,并最终到达组播服务器krverf的指定路由器S3。其中,S4向S3发送(S, G2)加入报文,由S3生成(S,G)表项,出接口指向S4,从而建立SPT分支。之后,组播服务 器krverf向S3发送组播数据,S3根据(S,G)表项可匹配到指向S4的出接口,并通过该 出接口将组播数据发送给S4;之后,S4根据(S,G)表项匹配到指向Client2的出接口,并 通过该出接口将组播数据发送给Cl ient2。由上可以看出,当不采用共享树发送组播数据时,Rl无法接收到来自组播服务器 krverf的组播数据;也就无法将组播数据发送至BIDIR PIM域中。因此,本发明实施例中, 需要使得PIM-SM域中的路由器只能通过共享树进行数据传输,而不进行RPT向SPT的切换 过程。具体的,在现有运行PIM-SM的路由器上,可配置是否允许RPT向SPT的切换过程; 而本发明实施例中,通过配置不允许RPT向SPT切换,从而使得各个路由器通过共享树进行 数据传输,继而使得汇聚点Rl —直可以接收到来自组播服务器Serverf的组播数据。另外,为了实现不允许RPT向SPT切换的过程,还可以在进行RPF检查时要求(S, G)表项的RPF接口指向R1,使得PIM-SM域中的接收者只接收来自Rl的组播数据。实施例三
基于与上述方法同样的发明构思,本发明实施例还提出了一种组播数据的传输设 备,应用于包括BIDIR PIM域和PIM SM域的组播网络中,所述传输设备为BIDIR PIM域中 与PIM SM域中第一设备连接的第二设备,且所述第二设备上使能PIM SM协议,并作为PIM SM域中的汇聚点,如图6所示,该传输设备包括注册消息接收模块11,用于接收来自PIM SM域中组播源的指定路由器的注册消 息;地址信息获得模块12,用于从所述注册消息中获得组播源的地址信息和组播源对 应第一组播组的地址信息;加入报文发送模块13,用于经过所述第一设备向所述指定路由器发送携带组播源 的地址信息和第一组播组的地址信息的(S,G)加入报文;组播数据接收模块14,用于从所述第一设备接收来自组播源的第一组播组对应的 组播数据;组播数据发送模块15,用于将所述组播数据发送给BIDIR PIM域中的汇聚点;或 者,将所述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIRPIM域中的接收者。所述组播数据发送模块15,具体用于如果第一组播组对应的(*,G)表项中存在指 向BIDIR PIM域中设备的非RPF接口的第一出接口,将所述组播数据发送给BIDIR PIM域中 的汇聚点,并通过所述第一出接口将所述组播数据发送给BIDIR PIM域中的接收者;否则, 将所述组播数据发送给BIDIRPIM域中的汇聚点。本发明实施例中,该设备还包括加入报文接收模块16,用于从所述第一设备接收来自PIM SM域中接收者的指定 路由器的PIM SM(*,G)加入报文,所述PIM SM(*,G)加入报文中携带第二组播组的地址信 息;(*,G)表项处理模块17,用于当存在第二组播组对应的(*,G)表项,且该(*,G)表 项中存在指向所述第一设备的出接口时,确定PIMSM(*,G)加入报文的加入过程结束;当存在第二组播组对应的(*,G)表项,且该(*,G)表项中存在指向BIDIR PIM域 中设备的非RPF接口的出接口时,在所述第二组播组对应的(*,G)表项中添加指向所述第 一设备的出接口;当存在第二组播组对应的(*,G)表项,且该(*,G)表项中出接口只为RPF接口时, 在第二组播组对应的(*,G)表项中添加指向所述第一设备的出接口,并向BIDIR PIM域中 的汇聚点发送BIDIR PIM (*,G)加入报文;当不存在第二组播组对应的(*,G)表项时,建立第二组播组对应的(*,G)表项,且 (*,G)表项的出接口指向所述第一设备,并向BIDIRPIM域中的汇聚点发送BIDIR PIM(*,G) 加入报文。本发明实施例中,该设备还包括PIM SM模块18和BIDIR PIM模块19,所述PIM SM模块18,用于从PIM SM(*,G)加入报文中解析第二组播组的地址信 息;并将第二组播组的地址信息发送给所述BIDIR PIM模块;所述BIDIR PIM模块19,用于根据第二组播组的地址信息生成BIDIRPIM (*,G)加 入报文;所述(*,G)表项处理模块17,具体用于向BIDIR PIM域中的汇聚点发送BIWRPIM (*,G)加入报文。所述组播数据接收模块14,还用于从BIDIR PIM域中的汇聚点接收来自BIWR PIM域中组播源的携带第二组播组地址信息的组播数据;所述组播数据发送模块15,还用于当第二组播组对应的(*,G)表项中存在指向所 述第一设备的第三出接口时,通过所述第三出接口将所述组播数据发送给所述第一设备, 经过所述第一设备将所述组播数据发送给PIMSM域中接收者。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通 过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发 明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储 介质(可以是⑶-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可 以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流 程并不一定是实施本发明所必须的。本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分 布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上 述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领 域的技术人员能思之的变化都应落入本发明的保护范围。
权利要求
1.一种组播数据的传输方法,应用于包括BIDIR PIM域和PIM SM域的组播网络中,其 特征在于,BIWR PIM域中与PIM SM域中第一设备连接的第二设备上使能PIM SM协议,且 所述第二设备为PIM SM域中的汇聚点,该方法包括以下步骤所述第二设备接收来自PIM SM域中组播源的指定路由器的注册消息,并从所述注册消 息中获得组播源的地址信息和组播源对应第一组播组的地址信息;所述第二设备经过所述第一设备向所述指定路由器发送携带组播源的地址信息和第 一组播组的地址信息的(S,G)加入报文,所述(S,G)加入报文经过的设备建立(S,G)表项; 所述第二设备从所述第一设备接收来自组播源的第一组播组对应的组播数据,所述组 播数据根据所述(S,G)加入报文所经过的设备建立的(S,G)表项路由到所述第二设备;所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点;或者,所述第二设备 将所述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIRPIM域中的接收者。
2.如权利要求1所述的方法,其特征在于,所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点;或者,所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点、 以及BIDIR PIM域中的接收者,具体包括如果所述第二设备上的第一组播组对应的(*,G)表项中存在指向BIDIR PIM域中设备 的非RPF接口的第一出接口,所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚 点,并通过所述第一出接口将所述组播数据发送给BIDIR PIM域中的接收者;否则,所述第 二设备将所述组播数据发送给BIDIR PIM域中的汇聚点。
3.如权利要求1或2所述的方法,其特征在于,所述第二设备将所述组播数据发送给 BIDIR PIM域中的汇聚点,之后还包括如果所述BIDIR PIM域中的汇聚点上的第一组播组对应的(*,G)表项中存在指向所述 第二设备之外其他设备的第二出接口,所述BIDIR PIM域中的汇聚点通过所述第二出接口 将所述组播数据发送给BIDIR PIM域中的接收者;否则,所述BIDIR PIM域中的汇聚点丢弃 所述组播数据。
4.如权利要求1所述的方法,其特征在于,所述方法还包括所述第二设备从所述第一设备接收来自PIM SM域中接收者的指定路由器的PIM SM(*, G)加入报文,所述PIM SM(*,G)加入报文中携带第二组播组的地址信息;如果所述第二设备上存在第二组播组对应的(*,G)表项,且该(*,G)表项中存在指向 所述第一设备的出接口,则PIM SM(*,G)加入报文的加入过程结束;如果所述第二设备上存在第二组播组对应的(*,G)表项,且该(*,G)表项中存在指向 BIDIR PIM域中设备的非RPF接口的出接口,所述第二设备在所述第二组播组对应的(*,G) 表项中添加指向所述第一设备的出接口;如果所述第二设备上存在第二组播组对应的(*,G)表项,且该(*,G)表项中出接口只 为RPF接口,则所述第二设备在第二组播组对应的(*,G)表项中添加指向所述第一设备的 出接口,并向BIDIR PIM域中的汇聚点发送BIDIR PIM(*,G)加入报文;如果所述第二设备上不存在第二组播组对应的(*,G)表项,所述第二设备建立第二组 播组对应的(*,G)表项,且(*,G)表项的出接口指向所述第一设备,并向BIDIR PIM域中的 汇聚点发送BIDIR PIM(*,G)加入报文。
5.如权利要求4所述的方法,其特征在于,所述第二设备向BIDIRPIM域中的汇聚点发送BIDIR PIM(*,G)加入报文,具体包括所述第二设备接收到PIM SM(*,G)加入报文后,第二设备的PIM SM模块从PIM SM(*, G)加入报文中解析出第二组播组的地址信息;所述PIM SM模块将第二组播组的地址信息发送给第二设备的BIDIRPIM模块,所述 BIDIR PIM模块根据第二组播组的地址信息生成BIDIRPIM (*,G)加入报文; 所述第二设备向BIDIR PIM域中的汇聚点发送BIDIR PIM(*,G)加入报文。
6.如权利要求4所述的方法,其特征在于,所述方法进一步包括所述第二设备从BIDIR PIM域中的汇聚点接收来自BIDIR PIM域中组播源的携带第二 组播组地址信息的组播数据;如果所述第二设备上的第二组播组对应的(*,G)表项中存在指向所述第一设备的第 三出接口,所述第二设备通过所述第三出接口将所述组播数据发送给所述第一设备,经过 所述第一设备将所述组播数据发送给PIM SM域中接收者。
7.一种组播数据的传输设备,应用于包括BIDIR PIM域和PIM SM域的组播网络中,其 特征在于,所述传输设备为BIDIR PIM域中与PIM SM域中第一设备连接的第二设备,且所 述第二设备上使能PIM SM协议,并作为PIMSM域中的汇聚点,该传输设备包括注册消息接收模块,用于接收来自PIM SM域中组播源的指定路由器的注册消息; 地址信息获得模块,用于从所述注册消息中获得组播源的地址信息和组播源对应第一 组播组的地址信息;加入报文发送模块,用于经过所述第一设备向所述指定路由器发送携带组播源的地址 信息和第一组播组的地址信息的(S,G)加入报文;组播数据接收模块,用于从所述第一设备接收来自组播源的第一组播组对应的组播数据;组播数据发送模块,用于将所述组播数据发送给BIDIR PIM域中的汇聚点;或者,将所 述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIR PIM域中的接收者。
8.如权利要求7所述的设备,其特征在于,所述组播数据发送模块,具体用于如果第一组播组对应的(*,G)表项中存在指向 BIDIR PIM域中设备的非RPF接口的第一出接口,将所述组播数据发送给BIDIR PIM域中的 汇聚点,并通过所述第一出接口将所述组播数据发送给BIDIR PIM域中的接收者;否则,将 所述组播数据发送给BIDIRPIM域中的汇聚点。
9.如权利要求7所述的设备,其特征在于,该设备还包括加入报文接收模块,用于从所述第一设备接收来自PIM SM域中接收者的指定路由器的 PIM SM(*,G)加入报文,所述PIM SM(*,G)加入报文中携带第二组播组的地址信息;(*,G)表项处理模块,用于当存在第二组播组对应的(*,G)表项,且该(*,G)表项中存 在指向所述第一设备的出接口时,确定PIM SM(*,G)加入报文的加入过程结束;当存在第二组播组对应的(*,G)表项,且该(*,G)表项中存在指向BIDIR PIM域中设 备的非RPF接口的出接口时,在所述第二组播组对应的(*,G)表项中添加指向所述第一设 备的出接口;当存在第二组播组对应的(*,G)表项,且该(*,G)表项中出接口只为RPF接口时,在第 二组播组对应的(*,G)表项中添加指向所述第一设备的出接口,并向BIDIR PIM域中的汇聚点发送BIDIR PIM (*,G)加入报文;当不存在第二组播组对应的(*,G)表项时,建立第二组播组对应的(*,G)表项,且(*, G)表项的出接口指向所述第一设备,并向BIDIRPIM域中的汇聚点发送BIDIR PIM(*,G)加 入报文。
10.如权利要求9所述的设备,其特征在于,该设备还包括PIMSM模块和BIDIR PIM模块,所述PIM SM模块,用于从PIM SM(*,G)加入报文中解析第二组播组的地址信息;并将 第二组播组的地址信息发送给所述BIDIR PIM模块;所述BIDIR PIM模块,用于根据第二组播组的地址信息生成BIDIRPIM(*,G)加入报文; 所述(*,G)表项处理模块,具体用于向BIDIR PIM域中的汇聚点发送BIDIR PIM(*,G) 加入报文。
11.如权利要求9所述的设备,其特征在于,所述组播数据接收模块,还用于从BIDIR PIM域中的汇聚点接收来自BIDIR PIM域中 组播源的携带第二组播组地址信息的组播数据;所述组播数据发送模块,还用于当第二组播组对应的(*,G)表项中存在指向所述第一 设备的第三出接口时,通过所述第三出接口将所述组播数据发送给所述第一设备,经过所 述第一设备将所述组播数据发送给PIM SM域中接收者。
全文摘要
本发明公开了一种组播数据的传输方法和设备,该方法包括第二设备接收来自PIM SM域中组播源的指定路由器的注册消息,并从所述注册消息中获得组播源的地址信息和组播源对应第一组播组的地址信息;所述第二设备经过所述第一设备向所述指定路由器发送携带组播源的地址信息和第一组播组的地址信息的(S,G)加入报文;所述第二设备从所述第一设备接收来自组播源的第一组播组对应的组播数据;所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点;或者,所述第二设备将所述组播数据发送给BIDIR PIM域中的汇聚点、以及BIDIR PIM域中的接收者。本发明中,使得BIDIR PIM协议可得到广泛的应用。
文档编号H04L12/56GK102111279SQ20111004739
公开日2011年6月29日 申请日期2011年2月28日 优先权日2011年2月28日
发明者游君平 申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1