IP组播基础及工作原理实战——4

PIM-SMASM模型)工作原理

PIM-SM适用于ASM和SSM两种模型。在ASM模型中,它使用“拉(Pull)模式”转发组播报文,一般应用于组播成员规模相对较大、相对稀疏的网络。其基本工作机制如下:

(1)在网络中维护一台RP,可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。

(2)当网络中出现组成员(用户主机通过IGMP加入某组播组G时,最后一跳路由器向RP发送Join报文逐跳创建(*G)表项,生成一棵以RP为根的RPT。

(3)当网络中出现活跃的组播源时(信源向某组播组G发送第一个组播数据时),第一跳路由器将组播数据封装在Register报文单播发往RP,在RP上创建(S,G表项,注册源信息。

IP组播基础及工作原理实战——4_第1张图片

● PIM-SM假设网络中的组成员分布非常稀疏,几乎所有网段均不存在组成员。直到某网段出现组成员时,才构建组播路由,向该网段转发组播数据。

PIM-SM模型实现组播转发的核心任务是构造并维护一棵单向共享树

● 共享树选择PIM中某一路由器作为公用根节点,称为汇聚点RPRendezvous Point。组播数据通过RP沿共享树向接收者转发。

● 接收侧,连接信息接收者的路由器向该组播组对应的RP发送组加入消息,加入消息经过一个个路由器后到达根部(即RP汇聚点),所经过的路径就变成了此共享树RPT的分支。——RP到组播组成员一侧,即到接收者一侧为接收侧,这条路径为共享树RPT的一条分支,共享树RPT应该有很多分支,上图12步骤就是建立一条分支的过程

发送端如果想要往某组播组发送数据,首先由第一跳路由器向RP汇聚点进行注册,注册消息到达RP后触发源树建立。之后组播源把数据发向RP汇聚点,当数据到达了RP汇聚点后,组播数据包被复制并沿着RPT树传给接收者。

IP组播基础及工作原理实战——4_第2张图片

● PIM-SM同时包含两种树:共享树源路径树RP到组播接收者数据转发的路径称为共享树从组播源到RP的数据转发路径称为源路径树

● RPF检查根据树的种类进行:

 在共享树下,使用RP地址作为检测地址

 在源路径树下,使用组播源地址作为检测地址

在ASM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、剪枝、断言;同时也可通过配置BSRBootstrap Router,自举路由器)管理域来实现单个PIM-SM域的精细化管理。 “邻居发现”“断言机制”与前面相同。

1、DR竞选

在组播源或组成员所在的网段,通常同时连接着多台PIM路由器。这些PIM路由器之间通过交互Hello报文成为PIM邻居,Hello报文中携带DR优先级和该网段接口地址。PIM路由器将自身条件与对方报文中携带的信息进行比较,选举出唯一的DR(注意:每个网段选举一个DR,并不是整个组播网络中只能有一台DR)来负责源端或组成员端组播报文的收发。竞选规则如下:

(1)DR优先级较高者获胜(在网段中所有PIM路由器都支持DR优先级的情况下)。

(2)如果DR优先级相同,或该网段存在至少一台PIM路由器不支持在Hello报文中携带DR优先级,则IP地址较大者获胜。

(3)如果当前DR出现故障,将导致PIM邻居关系超时,其他PIM邻居之间会触发新一轮的DR竞选。

ASM模型中DR主要作用如下:

(1)在连接组播源的共享网段DR负责向RP发送Register注册(组播源注册)报文。与组播源相连的DR称为源端DR

(2)在连接组成员的共享网段DR负责向RP发送Join加入(组成员加入)报文。与组成员相连的DR称为组成员端DR

2、RP发现

RP为网络中一台重要的PIM路由器,用于处理组播源DR注册信息及组成员加入请求网络中的所有PIM路由器都必须知道RP的地址,类似于一个供求信息的汇聚中心。

一个RP可以同时为多个组播组服务,但一个组播组只能对应一个RP。目前可以通过以下方式配置RP。

(1)静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置

(2)动态RP:在PIM域内选择几台PIM路由器,配置C-RPCandidate-RP,候选RP)来动态竞选出RP。不过此时,还需要通过配置C-BSRCandidate-BSR,候选BSR)选举出BSR,来收集C-RP的通告信息,向PIM-SM域内的所有PIM路由器发布。

BSR(自举路由器)是PIM-SM网络里的管理核心负责收集网络中C-RPCandidate-RP,候选RP)发来的宣告信息(Advertisement message,然后将为每个组播组选择部分C-RP信息组成RP-Set(即组播组和RP的映射数据库),并BSR消息(BSR Meaasge)发布到整个PIM-SM网络,从而使网络内的所有路由器(包括DR)都知道RP的位置。

BSR的选举过程中,初始时每个C-BSR都认为自己是BSR,向全网发送Bootstrap报文。Bootstrap报文中携带C-BSR地址、C-BSR的优先级。每一台PIM路由器都收到所有C-BSR发出的BootStrap报文,通过比较这些C-BSR信息,竞选产生BSR。BSR的竞选规则如下:

(1)C-BSR优先级较高者获胜(优先级数值越大优先级越高)。

(2)如果优先级相同,IP地址较大的C-BSR获胜。

C-RP竞选的具体过程:

(1)C-RP向BSR发送Advertisement报文,报文中携带C-RP地址、服务的组范围和C-RP优先级。

(2)BSR收到这些Advertisement报文后,将这些信息汇总为RP-SetRP集)封装在Bootstrap报文中,发布给全网的每一台PIM-SM路由器。

(3)各PIM路由器收到Bootstrap报文后,使用相同的规则进行计算和比较,从多个针对特定组的C-RP中竞选出该组RP。规则如下:

①C-RP接口地址掩码最长者获胜。

②C-RP优先级较高者获胜(优先级数值越大优先级越低)。

③如果优先级相同,则执行Hash函数,计算结果较大的C-RP获胜。

④如果以上都相同,则C-RP地址较大者获胜。

由于所有PIM路由器使用相同的RP-Set和竞选规则,所以得到的组播组与RP之间的对应关系也相同。PIM路由器将“组播组——RP”对应关系保存下来,指导后续的组播操作。

——通过上面的描述,可以知道,BSR是通过先配置C-BSR后,通过选举产生BSR,而且产生的办法是每个PIM路由器通过接收到的每个C-BSRBootStrap报文,而后按照竞选规则自主做出的判断,也就是必须保证每台PIM路由器的BSR竞选规则相同,否则就可能出现多个BSR,这样就做到了每个PIM路由器都知道BSR了(其实是通过相关信息自己计算出来的);同样道理,配置了C-RPPIM路由器在知道了BSR后,向其发送Advertisement宣告信息报文,然后BSR为每个组播组选择部分C-RP信息组成RP-Set,发布到全网,全网所有PIM路由器在根据RP-Set和竞选规则,又选择出组播组的RP(也是自己按规则计算出的,所以必须保证规则一致),这样所有的PIM路由器就知道了RP的位置。打个比方,就是不告诉路由器的最终结果2,而是告诉路由器两个变量11,和计算规则“+”,最终结果由路由器自己计算

3、RPT构建

PIM-SMRPT是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树,如下图

IP组播基础及工作原理实战——4_第3张图片

当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,组成员端DRRP发送Join报文在通向RP的路径上逐跳创建(*G)表项,生成一棵以RP为根的RPT。

在RPT构建过程中,PIM路由器在收发Join报文时,都会进行RPF检查接收者DR首先执行RPF检查:查找到达RP的单播路由,单播路由的出接口为上游接口,下一跳为RPF邻居。然后,接收者DR向该RPF邻居发送Join报文。RPF邻居接收到Join报文后,执行RPF检查,如果检查通过,继续向上游发送。Join报文逐跳上送,直至到达RP

4、组播源注册

组播源注册也是在RP上进行的,但注册信息是通过源端DR传递到RP的。在PIM-SM网络中,任何一个新出现的组播源必须首先在RP处注册,然后才能将组播报文传输到组成员。具体过程如下:

(1)组播源将组播报文发给源端DR。

(2)源端DR接收到组播报文后,将其封装在Register报文中,发送给RP。

(3)RP接收到Register报文后,将其解封装,并根据报文中的信息建立对应(S,G)表项,然后将组播数据沿RPT发送到达组成员。

5、SPT切换

在PIM-SM网络中,一个组播组只对应一个RP只构建一棵RPT。在未进行SPT切换的情况下,所有发往该组的组播报文都必须先封装在注册报文中发往RP,RP解封装后,再沿RPT分发。但这样会出现一个问题,那就是因为RP是所有组播报文必经的中转站,当组播报文速率逐渐增大时会对RP形成巨大的负担。为了解决此问题,PIM-SM允许RP或组成员端DR通过触发SPT切换来减轻RP的负担

RP触发SPT切换的原理RP收到源端DR的注册报文后,将封装在Register报文中的组播报文直接沿RPT转发给组成员(不进行解封)同时RP会向源端DR逐跳发送Join报文。发送过程中PIM路由器创建(S,G)表项,从而建立了RP到源的SPT。SPT树建立成功后,源端DR直接将组成员加入的组播报文转发到RP最终使源端和RP免除频繁的封装与解封装

IP组播基础及工作原理实战——4_第4张图片

如上图,组成员端DR周期性检测组播报文的转发速率,一旦发现(S,G)报文的转发速率超过阈值,则触发以下SPT切换:

(1)组成员端DR(如RouterD)逐跳向源端DR逐跳发送Join报文并创建(S,G)表项,建立源端DR到组成员DRSPT

(2)SPT建立后,组成员端DR会沿着RPT逐跳向RP发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。

如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR——RP”的SPT转发组播报文到RP。

缺省情况下,设备一般未设置组播报文转发速率的阈值,RP或者组成员端DR在接收到第一份组播报文时都会触发各自的SPT切换。

6、BSR管理域

为了实现网络管理精细化,可以选择将一个PIM-SM网络划分为多个BSR管理域和一个Global(全局)域。这样一方面可以有效地分担单一BSR的管理压力,另一方面可以使用私有组地址为特定区域的用户提供专门服务。

每个BSR管理域中维护一个BSR为某一特定地址范围的组播组服务Global域中维护一个BSR,为所有剩余的组播组服务

BSR管理域是针对特定地址范围的组播组的管理区域,属于此范围的组播报文只能在本管理域内传播,无法通过BSR管理域边界

IP组播基础及工作原理实战——4_第5张图片

上图所示包括了BSR1和BSR2两个管理域。对于有相同组播地址的不同管理域,各BSR管理域所包含的PIM路由器互不相同,同一PIM路由器不能从属于多个BSR管理域。各BSR管理域在地域上相互独立,且相互隔离。Global域包含PIM-SM网络内的全部PIM路由器。不属于任意BSR管理域的组播报文,可以在整个PIM网络范围内传播。

如果从组播组地址范围来看,每个BSR管理域为特定地址范围的组播组提供服务,不同的BSR管理域服务的组播组地址范围可以重叠。但每个组播组地址只在本BSR管理域内有效,相当于私有组地址。如下图所示,BSR1域和BSR3域对应的组播组地址范围出现重叠。

IP组播基础及工作原理实战——4_第6张图片

不属于任何BSR管理域的组播组,一律属于Global域的服务范围。上图中的Global域组地址范围是除了G1、G2之外的G-G1-G2组播地址。

Global域和每个BSR管理域都包含针对自己域的C-RPBSR设备,这些设备在行使相应功能时仅在本域内有效。即BSR机制和RP竞选在各管理域之间是隔离的。每个BSR管理域都有自己的边界,该管理域的组播信息(C-RP宣告报文、BSR自举报文等)不能跨越域传播。但Global域的组播信息可以在整个Global域内传递,可以穿越任意BSR管理域。

 

PIM-SM协议机制

IP组播基础及工作原理实战——4_第7张图片

● 在PIM-SM网络中, 刚启动的组播路由器需要使用Hello消息来发现邻居, 并维护邻居关系。 通过各路由器之间周期性地使用Hello消息保持联系。 除了维护邻居关系外, Hello消息还具有一个重要的功能就是在多路由器网段中选举DR指定路由器 DR充当IGMPv1查询器

IP组播基础及工作原理实战——4_第8张图片

● PIM-SM在共享网络(如Ethernet)同样选举DR(Designated Router)。

● DR(Designated Router)应用在PIM-SM网络中的如下两个位置

 ☆ 在连接组播源的共享网段,由DR负责向RP发送Register注册消息。与组播源相连的DR称为源端DR

 ☆ 在连接组成员的共享网段,由DR负责向RP发送Join加入消息。与组成员相连的DR称为组成员端DR

● 共享媒介网络上的各路由器相互之间发送Hello消息(携带DR优先级选项),拥有最高DR优先级路由器将被选举为本网络中的DR。假如优先级相同或网络中至少有一台路由器不支持在Hello报文中携带优先级,则拥有最大IP地址的路由器被选举为DR。

● 当DR出现故障时,接收Hello消息将会超时,邻居路由器之间会触发新的DR选举过程。

● pim timer hello interval,在接口视图下配置发送Hello消息的时间间隔。 Hello消息默认周期是30秒。

● pim hello-option holdtime interval 命令用于修改Hello消息超时时间值。默认情况超时时间值为105秒。

● 在共享网络(如Ethernet)有多个路由器时选举出“指定转发器”, PIM-SM中的“Assert”与PIM-DM中的相同。

IP组播基础及工作原理实战——4_第9张图片

● 在PIM-SM组播网络里,担当共享树树根的节点称为RP (Rendezvous Point) 。

● RP的作用:

 1、共享树里所有组播流都通过RP转发到接收者。

 2、RP可以负责几个或者所有组播组的转发,网络中可以有一个或多个RP 。用户通过配置命令,可以限制RP只为IP地址在一定范围的组播组服务。一个RP可以同时为多个组播组服务,但一个组播组只能对应一个RP。所有该组成员和向该组发送组播数据的组播源都向唯一的RP汇聚。

● RP的发现:

 1、静态RP:在PIM域中的所有PIM路由器上逐一进行配置,静态指定RP。

 static-rp  rp-address 指定静态RP的IP地址。

 2、动态RP:在PIM域内选择几台PIM路由器,配置成为C-RP(Candidate-RP),最后从C-RP中竞选产生RP。

   使用动态RP,必须同时配置C-BSR(Candidate-BootStrap Router)。由C-BSR竞选产生BSR。

● RP是PIM-SM域中的核心路由器,在小型并且简单的网络中,组播信息量少,全网络仅依靠一个RP进行信息转发即可,此时可以在SM域中各路由器上静态指定RP位置。但是更多的情况下, PIM-SM网络规模都很大,通过RP转发的组播信息量巨大,为了缓解RP的负担同时优化共享树的拓扑结构,不同组播组应该对应不同的RP,此时就需要自举机制来动态选举RP,配置自举路由器BSR(BootStrap Router)。

IP组播基础及工作原理实战——4_第10张图片

IP组播基础及工作原理实战——4_第11张图片

BSR自举路由器是PIM-SM网络里的管理核心,负责收集网络中候选RP(C-RP)发来的Advertisement宣告信息。然后将为每个组播组选择部分C-RP信息以组成RPSet集(即组播组和RP的映射数据库),并发布到整个PIM-SM网络,从而网络内的所有路由器(包括DR)都会知道RP的位置。

● C-RP周期性的发送Advertisement宣告消息的时间间隔(advertisement-interval )缺省值是60s。

● BSR在holdtime hold-interva(缺省150s)内等待接收C-RP发送的Advertisement宣告消息,超过150s, BSR认为C-RP失效。

● 一个PIM-SM域内也可以配置多个C-RP,由BSR机制计算出和每个组播组对应的

RP。

● 一个网络(或某管理域)内部只能选举出一个BSR,但可以配置多个候选BSR(Candidate-BSR C-BSR),当BSR发生故障后,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。

IP组播基础及工作原理实战——4_第12张图片

● BootStrap router工作的原理和过程:

 1、在网络中选择合适的路由器把它配置成候选BSR(C-BSR),每个C-BSR都有优先级。当它得知自己是C-BSR后,首先启动一个定时器(默认为130秒),监听网络中的 BootStrap MessageBootStrap Message初始时通告发送路由器的优先级、 BSRIP地址

 2、当C-BSR收到一个BootStrap Message后,它会把自己的优先级和报文里的优先级做比较,如果对方的优先级高,它就把自己的定时器重置,继续监听BootStrap Message;如果是自己的高,那么它就发送BootStrap Message声明自己是BSR,如果优先级相等,则比较IP地址,谁的IP地址大谁就是BSR。

● BSR消息发送的目的地址是224.0.0.13,所有的PIM路由器都能接收到这个报文,该报文TTL一般被置为1,但每个PIM路由器收到此报文后都是把它以泛洪的方式从自己所有的使能PIM的接口上发送出去,这就能保证网络中的每台PIM设备都能收到BootStrap Message。

IP组播基础及工作原理实战——4_第13张图片

● 1、候选RP(C-RP)周期性将声明发送到BSR。当C-RP收到BootStrap Message后,它可以从该message中得知网络中谁是BSR,然后C-RP通过Candidate-RP Advertisement Message把自己所能服务的组单播给BSR。每个C-RP都这么做的话,BSR就收集到了网络中所有C-RP的信息并把这些信息整理成一个集RP-Set。 C-RP每60秒周期性的单播发送通告。

● 2、 BSR通过BootStrap Message周期性地向所有PIM路由器(224.0.0.13)发送BSR消息(每60秒), BSR消息包含整个RP-set和 BSR地址,消息一跳一跳地自BSR向整个网络泛滥(flood)。

● 3、所有的路由器使用收到的RP集来确定RP。所有路由器都使用相同的RP选择算法 所以选择的RP也是一致的

● 注意:如果RP不是手工指定,而是通过选举从C-RP中产生,则每台路由器需要配置包括C-RP地址、优先级和它所能服务的组。

IP组播基础及工作原理实战——4_第14张图片

● 当接收者主机加入一个组播组G时,通过IGMP报文知会与该主机直接相连的叶子路由器,叶子路由器掌握组播组G的接收者信息,然后朝着RP方向往上游节点发送加入组播组的Join消息

● 从叶子路由器到RP之间途经的每个路由器都会在转发表中生成(* G)表项,这些沿途经过的路由器就形成了RP共享树(RPT)的一个分支。其中(*, G)表示从任意源来的信息去往组播组G。

RPT共享树以RP为根,以接收者为叶子

● 当从组播源Source来的发往组播组G的报文流经RP时,报文就会沿着已经建立好的RPT共享树路径到达叶子路由器,进而到达接收者主机。

● 当某接收者对组播信息不再感兴趣时,离该接收者最近的组播路由器会逆着RPT树朝RP方向逐跳发送Prune剪枝消息第一个上游路由器接收到该剪枝消息,在接口列表中删除连接此下游路由器的接口,并检查自己是否拥有感兴趣的接收者,如果没有则继续向上游转发该剪枝消息。

● 这一过程同PIM-DM的剪枝相同

IP组播基础及工作原理实战——4_第15张图片

● 为了向RP通知组播源的存在,当组播源向组播组G发送了一个组播报文时与组播源直接相连的路由器接收到该组播报文后,就将该报文封装成Register注册报文,并单播发送给对应的RP

● 当RP接收到来自组播源的注册消息后,一方面解封装注册消息并将组播信息沿着RPT树转发到接收者,另一方面朝组播源方向逐跳发送(S G)加入消息,从而让RP和组播源之间的所有路由器上都生成了(S, G)表项,这些沿途经过的路由器就形成了SPT的一个分支。 SPT源树以组播源为根,以RP为目的地

——SPT源路径树的建立是从RP开始的,向组播源方向发送(S,G)加入消息,是不是就是Join消息?一直到第一跳路由器

IP组播基础及工作原理实战——4_第16张图片

● 组播源发出的组播信息沿着已经建立好的SPT树到达RP,然后由RP将信息沿着RPT共享树进行转发。

● 当RP收到沿着SPT树转发的组播流量后,向与组播源直连的路由器单播发送注册停止报文。组播源注册过程结束。

——这里如何判断SPT树已经建立?也就是如何理解“当RP收到沿着SPT树转发的组播流量后”这句话,一开始组播信息是封装在Register(注册报文)消息中的,而后沿SPT树发送的报文不是封装在Register注册报文中的,就算是沿着SPT树转发的组播报文?然后触发注册停止报文或者是当第一跳路由器建立了(S,G)组播路由表项后,在转发组播源的组播报文后就不是封装在Register报文中,以此判断源路径树建立成功

IP组播基础及工作原理实战——4_第17张图片

● 当组播源成功注册到RP后,组播报文从组播源经SPT树到PR,再由RP经RPT树向接收者方向转发。

IP组播基础及工作原理实战——4_第18张图片

● 针对特定的源, PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即离接收者最近的DR)从RPT切换到SPT。当最后一跳路由器发现从RP发往组播组G的组播报文速率超过了该阈值时,就向单播路由表中到组播源S的下一跳路由器发送(S G)加入消息, Join加入消息经过一个个路由器后到达第一跳路由器(即离组播源最近的DR,沿途经过的所有路由器都拥有了(S, G)表项,从而建立了SPT树分支。

● 当信息吞吐率超过预定的值时, PIM-SM就会从共享树切换到组播源路径树。

● 在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树(源树),即从RPTSPT切换

IP组播基础及工作原理实战——4_第19张图片

● 切换到SPT树后,组播信息将直接从组播源S发送到接收者。通过RPT树到SPT树的切换, PIM-SM能够以比PIM-DM更经济的方式建立SPT转发树。

IP组播基础及工作原理实战——4_第20张图片

最后一跳路由器向RP逐跳发送包含RP位的Prune剪枝消息, RP收到消息后会向组播源反向转发Prune剪枝消息,从而最终实现组播信息流从RPT树切换到SPT树。

IP组播基础及工作原理实战——4_第21张图片

● 切换后从组播源到接收者之间建立了SPT。

IP组播基础及工作原理实战——4_第22张图片

● 邻居发现:在PIM-SM网络中,组播路由器使用Hello消息来发现邻居,并维护邻居关系,协商协议参数。通过比较Hello消息上携带的优先级和IP地址,各路由器为多路由器网段选举指定路由器DR充当IGMPv1的查询器

● DR选举:为与组播源或组播接收者之间的共享网络(如Ethernet)选举DRDesignated Router)。

● RP发现:通过手工指定或是通过BSR自举消息选举产生。

● 加入(Join):当接收者加入一个组播组G时,通过IGMP报文知会与该主机直接相连的叶子路由器叶子路由器朝着RP方向往上游节点发送加入组播组的Join消息

● 剪枝(Prune):剪枝过程最先由叶子路由器发起。下游组播组成员全部离开,则向上游节点发Prune剪枝消息。通知上游节点不用再转发数据到该分支。

● 注册(Register):RP通知组播源S的存在

● SPT切换: PIM-SM通过指定一个利用带宽的SPT阈值可以实现将最后一跳路由器(即接收者侧DR)从RPT切换到SPT。

——几点实现细节上的疑问:一是SPT树建立后RP发送注册停止报文的机制是什么?二是RPTSPT切换的机制,叶子路由器如何知道切换完成?何时发起剪枝消息?

PIM-SM的工作原理?

● PIM-SM协议假设:当组播源开始发送组播数据时,域内所有的网络节点都不需要接收数据。实现组播转发的核心任务是构造并维护一棵单向共享树。共享树选择PIM中某一路由器作为RP。组播数据通过RP共享树向接收者转发。在接收侧,连接信息接收者的路由器向该组播组对应的RP发送组加入消息,加入消息经过一个个路由器后到达根部(即RP汇聚点),所经过的路径就变成了此共享树RPT的分支。发送端如果想要往某组播组发送数据,首先由第一跳路由器向RP汇聚点进行注册,注册消息到达RP后触发源树建立。之后组播源把数据发向RP汇聚点,当数据到达了RP汇聚点后,组播数据包被复制并沿着RPT树传给接收者。复制仅仅发生在分发树的分支处,这个过程能自动重复直到数据包最终到达接收者。

● 如何建立RPT共享树?

 当接收者主机加入一个组播组G时,通过IGMP报文知会与该主机直接相连的叶子路由器,叶子路由器然后朝着RP方向往上游节点发送加入组播组的Join消息。从叶子路由器到RP之间途经的每个路由器都会在转发表中生成(*, G)表项,沿途经过的路由器就形成了RP共享树(RPT)的一个分支。

● 组播源如何注册?

 当组播源S向组播组G发送了一个组播报文时,与组播源S直接相连的路由器接收到该组播报文后,就将该报文封装成Register注册报文,并单播发送给对应的RP。 当RP接收到来自组播源S的注册消息后,一方面解封装注册消息并将组播信息沿着RPT树转发到接收者,另一方面朝组播源S逐跳发送(S, G)加入消息,从而让RP和组播源S之间的所有路由器上都生成了(S, G)表项,沿途经过的路由器就形成了SPT树的一个分支。 SPT源树以组播源S为根,以RP为目的地。

——PIM-SM,第一步确定BSR,或手工指定,或指定候选BSRC-BSR),然后通过Hello报文选举产生BSR;第二步确定RP,先配置C-RP(候选RP),C-RP发送消息到BSRBSR收集所有的C-RP信息后形成C-RP-Set,发给各C-RP,根据相同的算法,选出相同的RP;第三步RPT树的建立,接收者加入组播组G,通过IGMP报文通知叶子路由器(最后一跳路由器),叶子路由器逐跳向RP方向往上游节点发送加入组播组的Join消息,在每个节点建立(*G)组播转发路由表项,共享树RPT建立,建立后,RP发送注册停止报文;第四步SPT源树的建立,组播源发送组播报文,第一跳路由器将报文封装成Register注册报文,发往RPRP收到Register报文后,解封报文,从RPT树转发,同时朝组播源S逐跳发送(S,G)加入消息(Join消息),建立SPT树;第五步RPTSPT切换,接收者相连的路由器(最后一跳路由器)接收到从RP发送的第一个组播报文,向组播源S方向逐跳发送(S,G)加入消息(Join消息),建立新的SPT树分支;第六步最后一跳路由器向RP逐跳发送包含RP位的Prune剪枝消息, RP收到消息后会向组播源反向转发Prune剪枝消息,从而最终实现组播信息流从RPT树切换到SPT

你可能感兴趣的:(HCSE——构建企业级交换网络)