PIM-SM协议(ASM模型)

基本原理

在ASM(Any-Source Multicast)模型中,PIM-SM使用“拉(Pull)模式”转发组播报文,一般应用于组播组成员规模相对较大、相对稀疏的网络。基于这一种稀疏的网络模型,它的实现方法是:

  • 在网络中维护一台重要的PIM路由器:汇聚点RP(Rendezvous Point),可以为随时出现的组成员或组播源服务。网络中所有PIM路由器都知道RP的位置。
  • 当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,最后一跳路由器向RP发送Join报文,逐跳创建(*,G)表项,生成一棵以RP为根的RPT。
  • 当网络中出现活跃的组播源(组播源向某组播组G发送第一个组播数据)时,第一跳路由器将组播数据封装在Register报文中单播发往RP,在RP上创建(S,G)表项,注册源信息。

在ASM模型中,PIM-SM的关键机制包括邻居发现、DR竞选、RP发现、RPT构建、组播源注册、SPT切换、断言;同时也可通过配置BSR(Bootstrap Router)管理域来实现单个PIM-SM域的精细化管理。

邻居发现

PIM路由器上每个使能了PIM协议的接口都会对外发送Hello报文。封装Hello报文的组播报文的目的地址是224.0.0.13(表示同一网段中所有PIM路由器)、源地址为接口的IP地址、TTL数值为1。

Hello报文的作用:发现PIM邻居、协调各项PIM协议报文参数、维持邻居关系。

DR竞选

在这里插入图片描述
在组播源或组成员所在的网段,通常同时连接着多台PIM路由器。这些PIM路由器之间通过交互Hello报文成为PIM邻居,Hello报文中携带DR优先级和该网段接口地址。PIM路由器将自身条件与对方报文中携带的信息进行比较,选举出DR来负责源端或组成员端组播报文的收发。竞选规则如下:

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

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

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

  • 在连接组播源的共享网段,由DR负责向RP发送Register注册报文。与组播源相连的DR称为源端DR。
  • 在连接组成员的共享网段,由DR负责向RP发送Join加入报文。与组成员相连的DR称为组成员端DR。

RP发现

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

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

  • 静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置。
  • 动态RP:在PIM域内选择几台PIM路由器,配置C-RP(Candidate-RP,候选RP)来动态竞选出RP。同时,还需要通过配置C-BSR(Candidate-BSR,候选BSR)选举出BSR,来收集C-RP的通告信息,向PIM-SM域内的所有PIM路由器发布。
BSR的选举
BSR是什么

在PIM-SM网络启动后,负责收集网络内的RP信息,为每个组播组选举出RP,然后将RP集(即组-RP的映射数据库)发布到整个PIM-SM网络的路由器,称之为BSR。
一个PIM-SM域里只有一台BSR,并同时可以存在多台候选BSR(Candidate BootStrap Router,C-BSR)。

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

  • 优先级较高者获胜(优先级数值越大优先级越高)。
  • 如果优先级相同,IP地址较大者获胜。
C-RP的竞选过程
  1. C-RP向BSR发送Advertisement报文,报文中携带C-RP地址、服务的组范围和C-RP优先级。
  2. BSR将这些信息汇总为RP-Set,封装在Bootstrap报文中,发布给全网的每一台PIM-SM路由器。
  3. 各PIM路由器根据RP-Set,使用相同的规则进行计算和比较,从多个针对特定组的C-RP中竞选出该组RP。规则如下:
  • 与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。
  • 如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。
  • 如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。
  • 如果以上比较结果都相同,则C-RP的IP地址较大者获胜。

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

RPT构建

PIM-SM RPT是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。如图所示,当网络中出现组成员(用户主机通过IGMP加入某组播组G)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。

在RPT构建过程中,PIM路由器在发送Join报文时,会进行RPF检查:查找到达RP的单播路由,单播路由的出接口为上游接口,下一跳为RPF邻居。Join报文从组成员端DR开始逐跳发送,直至到RP。
在这里插入图片描述

组播源注册

在这里插入图片描述
如图所示,在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。具体过程如下:

  • 组播源将组播报文发给源端DR。
  • 源端DR接收到组播报文后,将其封装在Register报文中,通过单播包发送给RP。
  • RP接收到Register报文,将其解封装,建立(S,G)表项,并将组播数据沿RPT发送到达组成员。

RPT向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,使源端DR和RP免除了频繁的封装与解封装。

  • 组成员端DR触发SPT切换

在这里插入图片描述
组成员端DR周期性检测组播报文的转发速率,一旦发现(S,G)报文的转发速率超过阈值,则触发SPT切换:(图中经过RP是次优路径)

  1. 组成员端DR逐跳向源端DR逐跳发送Join报文并创建(S,G)表项,建立源端DR到组成员DR的SPT。
  2. SPT建立后,组成员端DR会沿着RPT逐跳向RP发送剪枝报文,删除(*,G)表项中相应的下游接口。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。
  3. 如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。

断言机制

当一个网段内有多个相连的PIM路由器RPF检查通过向该网段转发组播报文时,则需要通过断言机制来保证只有一个PIM路由器向该网段转发组播报文。PIM路由器在接收到邻居路由器发送的相同组播报文后,会以组播的方式向本网段的所有PIM路由器发送Assert报文,其中目的地址为永久组地址224.0.0.13。其它PIM路由器在接收到Assert报文后,将自身参数与对方报文中携带的参数做比较,进行Assert竞选。竞选规则如下:

  1. 单播路由协议优先级较高者获胜。
  2. 如果优先级相同,则到组播源的开销较小者获胜。
  3. 如果以上都相同,则下游接口IP地址最大者获胜。

根据Assert竞选结果,路由器将执行不同的操作:

  • 获胜一方的下游接口称为Assert Winner,将负责后续对该网段组播报文的转发。
  • 落败一方的下游接口称为Assert Loser,后续不会对该网段转发组播报文,PIM路由器也会将其从(S,G)表项下游接口列表中删除。

在这里插入图片描述

省流版

PIM协议实质就是构建出组播树,但是如何进行构建?以及其中有什么小细节?
在PIM网络中选举出一个RP,组成员端DR向RP发送JOIN报文并且构建共享树并生成(*,G)表项,源端DR向RP发送Register报文并构建源树(S,G)。随后组成员端DR收到源端DR的消息之后,就会进行RPF检查,以免走了次优路径,也就是RPT向SPT的转换。
在其中,BSR需要选举,DR需要选举,RP也要选举。DR与BSR在启用了PIM的路由器之间进行选举,RP通过BSR进行选举。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小刘不忙!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值