PIM SM RP控制原理与实验

RP控制:

概述:
RP ( Rendezvous Point)是PIM SM网络中一台“核心”路由器,它的位置建议放在网络的核心,在组播数据转发过程中,它起到的是“汇聚”的作用,汇聚组播接收者的加入/剪枝请求和组播源的组播数据。当某个网段的DR路由器通过IGMP协议了解该网段上有组播接收者时,就会向RP发送一个(* ,G) 的加入报文,用(* ,G)Join表示,表明本地需要接收来自任何组播源的、发往组播组G的组播数据。

在PIM SM中,每一个PIM组播组都需要一个RP地址,这个地址用来当作组播组相应的组播分发树的树根,用来连接SPT树和RPT树。在网络上的任何一台PIM SM路由器都需要知道组播组所需要的RP地址。

RP的作用:

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

RP的发现:

  1. 静态RP:在PIM域中的所有PIM路由器上逐一进行配置,静态指定RP。static-rp rp-address 指定静态RP的IP地址。坏处是所有路由器都需要配置,配置量比较大,并且没有备份功能,当RP出问题以后就无法正常转发流量了,所以当静态和动态RP同时存在的时候,优选动态RP。
  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)。动态RP可以进行相应的备份,当主RP失效时,会切换到备用的RP上。

动态RP部署:

在这里插入图片描述
动态RP的设计在中大型网络中要求比较多,好处是当网络拓扑发生变化的时候,RP和组的对应关系会自动调整,保证网络的冗余性。目前动态RP协议是PIMv2使用的BSR(自举协议)选择出来的。BSR就像是一个裁判,如果没有这个裁判,所有设置为了RP的设备都会发送自己的报文让别人进行筛选,但是别人只需要一个RP,其他次优的RP报文都是干扰报文,很浪费带宽。所以我们设置一个裁判——BSR,它会收集同一个域中所有想要成为RP设备的报文信息,然后综合在一起统一将所有信息周期性发送(自己不进行比较,让接收者比较,这样就可以有备份的RP信息得到了)。

当然,如果BSR挂掉了,这样也会使得RP的选举出现故障,所以我们也需要设置多个BSR作为备份,选举出一个主的BSR。当然,按照实际的网络情况,最好使用性能较好的设备作为支持(主RP最好别和BSR设置为同一个,这样如果坏掉以后BSR和RP都需要重新选举,实际较长)。

一、选举BSR的具体过程:
在一个PIM-SM域内,可能存在多台设备配置为C-BSR,但在同一时刻只能有一台设备成为BSR。BSR的选举是通过PIMv2的Bootrap(BSR)报文协商选举出来的,报文中带有BSR的优先级和BSR地址信息。

下图是BSR报文,从中可知,IP报文源IP地址为10.1.23.2, BSR 地址是10.1.2.2, Hash 掩码是30位,BSR优先级是0,RP映射(RP-set) ={ 10.1.2.2,224.0.0.0/4 }。
在这里插入图片描述
任何一台C-BSR路由器可工作在两种状态之一: “候选BSR”状态(C-BSR)或“已选举的BSR”状态。路由器启动时,初始状态都是“候选BSR”状态,在此状态下,130sBSR超时计时器启动。在此期间,若未听到任何其他“更优”的C-BSR的报文,超时后,当前C-BSR状态转换为“已选举的BSR”状态,即代表当前没有其他更优的C-BSR路由器,自己是域内唯一的 BSR。 BSR靠泛洪方式通告自身的报文,其泛洪过程有如
OSPF通告LSA,是逐跳的泛洪过程,任何PIMv2路由器都能听到BSR泛洪的报文。

判定哪台C-BSR路由器更优依据如下:

  1. 先比较BSR报文中的优先级数值,数值越大越优先。
  2. 若优先级数值一 样,则比较BSR报文中的BSR的IP地址,数值越大越优先。但若在BSR计时器超时前收到一份 “更优”BSR报文,则产生那份BSR报文的C-BSR路由器被认定为“更优”的BSR路由器。

当前C-BSR对收到的“更优”BSR报文,本地做如下处理:

  1. 本地BSR超时计时器重置。
  2. 收到的“更优”BSR报文被转发出所有其他有PIM邻居的接口,自己不再通告自己的BSR报文。
  3. 把收到的BSR报文中的RP-映射复制到本地RP-Info中。

如若一台BSR路由器已处于“已选举的BSR状态”,已选举为BSR,则它负责周期产生BSR报文,其中包含RP映射。如果从另外一台路由器收到BSR报文,优先级更高,则不再产生自己的BSR报文,只转发已知的更优BSR的那份报文,并把自己的状态调整为“候选BSR”状态;否则,丢掉BSR报文。

设计建议:
BSR收集到各个C-RP的信息后,组合成为RP映射。然后将RP映射信息封装到BSR报文内向PIM邻居泛洪此消息,使PIM域内的RP信息是相同的。这样,任何组播组在不同的设备上都可以选择出相同的RP地址。建议CBSR至少2台,以避免单点故障,可和C-RP一起部署在同一台设备上。

二、C-RP的通告过程:
C-RP可以有多个,每个C-RP定义自己的一个接口IP地址和多个组播地址范围的对应关系。每一对IP地址和组:播地址范围的对应关系都叫做RP映射。多个C-RP的目的是为了增加网络的健壮性、冗余性。如果一台 C-RP失效,或到C-RP的链路故障,其他备选的CRP依然能够为相应的组播组提供服务。

当作为C-RP的PIMv2路由器收到泛洪过来的BSR报文后,从中了解到BSR地址。之后,每个C-RP会以单播的方式把C-RP上定义的RP-映射发给这个知道的唯一的 BSR路由器。若C-RP不知道BSR地址,则不会产生RP通告;当BSR收到CRP的映射之后,放到Cache中,并将收集到的RP映射放到周期性的BSR报文中,通告出去。

C-RP信息以单播形式通告:
C-RP通告的单播报文中包括C-RP的IP地址信息、需要服务的组播组地址范围(组播IP与掩码长度)及C-RP优先级。C-RP以60s周期向BSR单播发送C-RP消息,以免C-RP信息在BSR上超时。

建议设计:
C-RP 可以设置多个分散在PIM域的任何设备上,也可以集中在一台 PIM设备上,而且C-RP部署与BSR部署没有关联。但实际设计时,多将C-RP和C-BSR同时部署在一台设备上。

三、普通的PIMv2 (非BSR)路由器接收BSR报文:
任何PIMv2的路由器,也包括C-RP路由器,收到目标组地址224.0.0.13的BSR报文后,并非一味接收,而是对其先执行RPF检查。只有通过RPF检查的BSR报文才能被接收,并继续转发给其他PIM邻居。RPF检查是接收路由器对BSR报文中的BSR地址的检查,检查的目的是避免BSR报文的环路,使泛洪过程以BSR为树根,远离树根的路径去通告。

例如:
在这里插入图片描述
R3向所有PIM邻居泛洪自己的BSR报文。泛洪期间,报文内容不变化,报文流出的接口地址是BSR报文的源IP地址。R3的泛洪如图所示,R1 收到报文源IP地址是10.1.23.3 的BSR报文,R5 收到源IP地址是10.1.5.3 的BSR报文。BSR RPF检查规则:“根据BSR报文中BSR地址计算得出的RPF邻居必须等于BSR报文IP头中的源IP地址,RPF检查才通过,即路由器仅接收RPF邻居通告的BSR报文”。所以图7-43中,R5 和R1、R2对收到的BSR报文中地址10.1.3.3执行RPF计算(根据IP路由表中OSPF路由)后都满足BSR RPF 检查规则,把其中的RP-映射放入Cache后,继续泛洪。

R4路由器会从R2和R5收到泛洪过来的BSR报文,RPF 检查后,R4的RPF邻居是R2 (R4是OSPF ABR,经Area0 访问10.1.3.3), 所以R4接收R2通告的BSR报文。忽略R5通告的BSR报文。R4缓存RP-映射之后,继续向R5泛洪。R5 执行RPF检查后,忽略R4的BSR报文。至此,BSR 泛洪过程结束。60s之后,上述过程重复再发生。

对于通过检查的BSR报文,任何路由器本地的处理过程如下:

  1. 本地 BSR超时计时器重启。
  2. BSR 报文被转发出所有其他接口。
  3. 收到的BSR报文中的RP映射集被复制到本地RP-info中。
  4. BSR会每隔60s发送BSR报文,刷新路由器缓存的BSR信息,并重置130s 老化计时器。若超过130s, 仍未收到BSR报文,则本地已有的BSR信息及RP映射关系将由于老化而被清除。

四、C-RP的选举参数:
BSR通告的内容包含RP和组的映射关系,其中,组范围可能会重叠,即一个组地址会出现在多个映射的组范围中。如果这种情况发生,PIM 路由器通过计算只能选择一个RP,使用算法如下:

  1. 根据组范围的大小来选择RP,优选最小的组范围所对应的RP。
  2. C-RP优先级较高者获胜( 优先级数值越小优先级越高,默认为0)。
  3. 如果优先级相同,则执行Hash计算,Hash 计算结果中数值大者获胜。
  4. 如果以上都相同,则C-RP地址大者获胜。

设备在RP-映射中选择RP时,根据上述顺序选择出最好的RP。例,设备需要为组播组G选择RP,其过程如下:

  1. 如果需要计算组播组G的RP,第一步是查找RP-映射集,找到RP列表中最长匹配的RP地址。例: RP1 的组范围是224.0.0.0/4,RP2 的组范围是224.1.2.024,需要为组224.1.2.3选择RP,选择的结果是RP2,原因是其范围最小,最精确。
  2. 如果存在多个RP,则比较RP的优先级。优先级数值最小的RP胜出。如果上面的组范围相同的情况下,比较RP的优先级。
  3. 如果存在相同优先级的RP,则每个相同优先级的RP都进行一次Hash计算。选择Value最大的为组播组G的RP。
  4. 如果计算的结果相同,则选择IP地址最大的RP为组播组G的RP。

说明:
BSR中的负载分担是靠Hash掩码实现的,它使设备在选择RP时,做到不同的组播组使用不同的C-RP提供服务。其实现方式是在多个C-RP上分别定义相同的组地址范围,在C-RP优先级一样的情况下,设备将根据Hash掩码来计算RP。BSR 的负载分担是异组负载分担,一个组播组地址范围中的不同组播地址可以使用不同的RP。这种选择是靠以下公式计算得出的:

Hash(G,M,Ci)=(1 103515245*((1 103515245 *(G&M)+12345)XOR Ci)+ 12345)mod(2的31次方)其中,G为组地址;M为设备BSR的Hash掩码长度,默认为30位;Ci为RP的IP地址。

例,若C-RP 1.1.1.1 和2.2.2.2都定义并通告了229.1.2.0/24 组地址范围,BSR 定义的Hash掩码为30的情况下,则计算结果是上述组播范围中每4个连续地址段( 组播地址范围和hash掩码“相与”)会在2个RP中选择一个RP。如果Hash掩码是29位,则上述范围中,每8个连续组播地址段使用2个RP中的一个。同理,Hash 掩码越大,在多个RP间分配的组播地址段的颗粒度变大。但只要Hash掩码为非0,组播范围中的地址都按“段”在多个RP间“随机”分配。这种机制为BSR提供了“异组间负载”分担的能力。如果Hash掩码取值为0,则整个组播地址范围就是完整的一块,整块组播地址只会选择其中:一个RP地址,这使BSR丧失了负载分担的能力。示例中只为上述组播范围定义了两个RP一1.1.1.1 和2.2.2.2,按照上面的机制,每个RP会分担50%的组播组的转发任务。如果相同的组播范围配置了多个RP,如4个RP地址,则整个组范围将在4个RP间分担组播组业务。

BSR使用泛洪方式在组播域中通告RP-映射集的目 的是使全网的设备有一致的RP映射集,每台设备执行一样的计算过程,所以同一个组播组在每个设备上选择的RP一致。

实验:
模拟器eNSP
在这里插入图片描述

拓扑描述:这里选择R3作为主BSR,R5作为备份BSR,同时R4作为主RP,R6作为备用RP。

一、首先进行BSR的配置:
根据选举顺序:

  1. 优先级较高者获胜(优先级数值越大优先级越高)。
  2. 如果优先级相同,IP地址较大者获胜。

R3上:IP地址为3.3.3.3小于5.5.5.5,所以优先级要配置大一点

pim
 c-bsr priority 20     //设置优先级,越高越优先
 c-bsr LoopBack0    //L0接口作为bsr

R5上:

pim
 c-bsr priority 10    //备份设备优先级设置小一点
 c-bsr LoopBack0

二、然后进行RP的配置:
根据选举顺序:

  1. C-RP对应组播路由掩码最长的优先。
  2. C-RP优先级较高者获胜(优先级数值越大优先级越低)。
  3. 如果优先级相同,则执行Hash函数,计算结果较大者获胜。
  4. 如果以上都相同,则C-RP指定的IP地址较大者获胜。

R4上:

pim
 c-rp LoopBack0 priority 10  //设置L0的优先级为10,越小越优先

R6上:

pim
 c-rp LoopBack0 priority 20

三、然后在R2上查看自己的RP信息:dis pim rp-info
在这里插入图片描述

组224.0.0.0/4有两个动态RP,其中一个IP地址为4.4.4.4,优先级为10,另外一个为6.6.6.6,优先级为20。所以对于224.0.0.0/4范围内的组播来说,掩码都相同,根据优先级小的更优,选择的RP就的IP地址就是4.4.4.4。

四、在R2上查看对应的BSR:dis pim bsr-info
在这里插入图片描述
可以看到选择的BSR为R3,因为相比于R5的优先级更大,为20;还可以可以看到C-RP的个数为2、Hash mask length字段为30等。

五、最后在R2上查看pim的路由信息:这里也可以显示RP具体的信息为4.4.4.4。
在这里插入图片描述

静态RP部署:

在小企业或网络结构简单的环境建议使用静态RP的部署方案。静态RP要求网络每台路由器要由工程师手工添加RP和组的对应关系。
在这里插入图片描述
图中,R2的Loopback0 (10.1.2.2)接口用作组播组范围229.1.2.0~ 229.1.2.255的RP,全网R1到R6的每台路由器上均要了解到这个RP信息。其他 PIM 路由器也做同样的静态配置。

说明:

  1. 如果配置的静态RP地址是本机状态为UP的某个接口地址,本机就作为静态RP。作为静态RP的接口不必使能PIM协议。
  2. 如果没有指定ACL, 则配置的静态RP为所有组播组224.0.0.0/4服务;如果指定了ACL,所配置的静态RP只为该ACL所许可的组播组服务。通过重复执行该命令可以配置最多50个静态RP,但同一个ACL不能对应到多个静态RP。如果不引用ACL,则只能配置一个静态RP。
  3. 如果配置静态RP的命令中未携带prefrred 关键字,则设 备优先选择BSR 机制选出的动态RP。即如果网络中未配置动态RP或动态RP失效,静态RP才能生效。而如果配置静态RP的命令中携带preferred 关键字,则设备优先选择静态RP。
  4. 重复执行此命令,会配置多个静态RP.如果存在多个静态RP为某个组服务的情况,则选择IP地址最大的RP为该组服务。

静态配置方案相比于动态配置方案:

  1. 配置容易,但部署复杂,手动工作量大;
  2. 不具备扩展性,当网络拓扑发生变化时,不能及时更新组和RP的对应关系;
  3. 适用在简单拓扑或小型网络中部署时,或当网络拓扑发生变化时对RP不敏感的网络环境。

整理资料来源:《HCIE路由交换学习指南》

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格洛米爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值