组播路由协议——PIM SM工作机制

目录

PIM SM基本概念

PIM工作步骤

DR竞选

RP基本概念(Bootstrap自举报文)

RP的作用

RP的两种类型

RP的缺点

PIM SM建树过程

成员接收者到RP建树过程(Join加入报文)

组播源到RP建树过程(Register注册报文、Join加入报文)

SPT切换

SSM模型


PIM SM基本概念

PIM SM采用“拉”(Pull)的方式来转发组播报文并生成组播表,建立SPT(最短路径树)、RPT(共享树)转发组播报文。它假定每条链路都没有需求。

PIM工作步骤

邻居建立

全网开启组播、配置PIM

通过Hello报文建立PIM邻居,并选举DR

选举RP

通过RP建立SPT以及RPT树

RPT树建立

在RP与组成员端建立RPT树(*,G)树

SPT树建立

在组播源与RP之间建立(S,G)树

通过组播源流量在RP与组成员端之间也建立(S,G)表项

SPT切换

为了减少RP的负担和避免次优路径,进行SPT切换

DR竞选

当组播源或组成员所在的网段,同时连接着多个PIM路由器时,会通过选举一个DR来负责源段或组成员端组播报文的收发

DR的选举规则(通过Hello报文来选举)

DR优先级高的为DR(前提网段中的所有PIM路由器都支持DR优先级)

优先级相同或有PIM路由器不支持DR优先级的情况,IP地址大的优先

当DR故障时,会重新选举新的DR

DR的主要作用

DR分为两种类型,不同类型的DR作用不同

源DR:连接组播源的,负责向RP发送Register注册报文

组成员端DR:连接组成员的,负责向RP发送Join加入报文


RP基本概念(Bootstrap自举报文

如果采用组播源去拉流量的话,对于使用IGMPv1、v2的组成员来说是无法找到组播源的

所以在PIM SM模式中,定义了RP(汇聚点,其实就是一台被设备为RP的网络设备),通过RP作为中介实现成员与组播源建树(即成员无法直接与组播源建SPT树)

RP的作用

RP是PIM SM中一台“核心”的路由器,它起到的是“汇聚”的作用,汇聚组播接收者的加入/剪枝请求和组播源的组播数据与注册请求。

具体如何汇聚如下

组播接收者所在网段的DR路由器向RP发(*,G)Join报文,建立RPT共享树

RP在收到组播路由器发送的Register注册报文后,向组播源转发(S,G)Join报文,建立SPT树

收到组播数据的最后一跳路由器(DR)向组播源建立SPT树(可选过程)

RP的注意事项

在PIM SM中,每一个PIM组播组都需要且只需要一个RP地址来建树,因此要求全网的路由器都要事先知道某个组的RP地址。(每个PIM域可以有多个RP)

RP的两种类型

按照RP部署维护的复杂性和方式,可以分为静态RP和动态RP部署

静态RP部署

手工添加RP和组的对应关系(全网PIM路由器都要配置)

注意

  1. 如果配置的静态RP地址是本机状态为UP的某个接口地址,本机就作为静态RP,作为静态RP的接口不必使能PIM协议。
  2. 如果没有指定ACL,配置的静态RP为所有组播组224.0.0.0/4服务
  3. 重复执行静态RP的配置命令,会创建多个RP
  4. 当存在多个静态RP为某个组服务的情况,则选择IP地址最大的RP为该组服务
  5. 当配置静态RP时携带了Preferred命令,静态RP的优先级高于动态RP。当配置静态RP时没有携带Preferred命令,则动态RP优先级高于静态RP

动态RP部署(Bootstrap自举报文)

目前动态RP协议使用的是PIMv2的BSR(自举协议)

BSR协议概念

  1. 在BSR协议中,定义了两种角色的设备:C-RP(Candidate-RP)、C-BSR(Candidate-BSR)两种
  2. 手动配置多台路由器为C-RP与C-BSR,从C-RP中竞选出RP,从C-BSR中竞选出BSR
  3. 这两种角色都可以定义多台,以提供冗余备份能力

从C-BSR选举BSR——通过BSR报文选举

C-BSR启动时会启动BSR超时计时器130s,并逐跳泛洪自身的Boostrap(BSR)报文

  • 1、在130s内未收到其它Boostrap报文,则自己选举为BSR
  • 2、在130s内收到其它Boostrap报文,则提取报文中的部分信息进行选举
  1. BSR报文中的优先级值越大,越优先
  2. BSR报文中的BSR的IP地址越大,越优先

BSR全网通告自己的IP地址

BSR会将自己是BSR的消息通过Boostrap报文全网泛洪

C-RP发送自己的RP映射信息给BSR

每个C-RP定义自己的一个接口IP地址和多个组播地址范围的对应关系

每一对IP地址和组播地址范围的对应关系都叫做RP映射

C-RP通过接收泛洪的BSR通告报文,获取BSR的地址。

之后每个C-RP会以单播的方式周期性60s把RP映射发往BSR

BSR全网通告C-RR的RP映射信息

BSR将收集到的RP映射通过周期性每隔60s发送的BSR报文通告出去

此时Boostrap报文会额外包含组范围、C-RP的优先级、C-RP的地址信息

如果路由器130s未收到BSR报文,则会清除本地已有的BSR信息和RP映射关系

全网路由器从C-RP中选举RP

接收端收到BSR泛洪的关于RR映射消息,从收到的RP映射关系中选择最优的C-RP作为RP

  • 由于收到的RP映射关系中,组范围可能会重叠,会优选最最小的组范围所对应的RP

例如:C-RP1的组播范围为224.0.0.0/4,C-RP2的组播范围为224.1.2.0/24,当为组224.1.2.3选择RP时,会选择C-RP2为RP

  • 优选C-RP优先级值小的(默认为0,值越小越优先)
  • 执行Hash算法,结果大的优选
  • C-RP地址大的获胜

RP的缺点

RP是PIM SM的核心,容易出现瓶颈,发生单点故障

RP未必处于源和接收者路由器之间的最优路径上,经过的RPT树路径未必是最优路径


PIM SM建树过程

成员接收者到RP建树过程(Join加入报文)

由接收端DR逐跳向RP建立RPT,发送(*,G)Join报文

  • 当连接组成员的DR路由器收到IGMP成员报告报文,创建(*,G)表项,并查找对应此组播组的RP地址(收到IGMP报告报文的接口为下游接口)
  • 根据RP地址进行RPF检查,找到去往RP的RPF接口,并发送(*,G)Join报文(此RPF接口为上游接口)
  • 上游路由器收到(*,G)Join报文后,创建(*,G)的表项(收到此报文的接口为下游接口),并查找对应此接口的RP地址,并向RPF接口发送(*,G)Join报文,逐跳构建RPT树直到找到RP为止

只要接收者存在,连接组成员的设备会每60s向上游发送(*,G)Join刷新组播路由表(*,G)条目

为什么组成员到RP生成的是(*,G)表项?

对于组成员来说,当组成员使用IGMPv1和v2时,不知道组播源IP,只知道组播地址,因此刚开始成员端与RP建立(*,G)表项。

组播源到RP建树过程(Register注册报文、Join加入报文)

  • 当连接组播源的DR路由器收到组播流量后,根据组地址查到RP的地址。然后将组播报文通过单播的注册报文(携带源信息和组信息)发送给RP

  • 如果RP存在(*,G)表项,并存在下游接口,则解封装注册报文,根据RPT树转发组播流量。并根据组播源地址检查RPF接口,发送(S,G)Join报文,逐渐构建SPT树。源端DR构建SPT树后,会沿着SPT树转发组播流量到RP,RP收到后发送注册停止报文
  • 如果RP不存在(*,G)表项或者没有下游接口,则直接注册停止报文给源端DR。源端DR停止将组播报文封装在注册报文中,RP也不会发送(S,G)Join报文

注册报文和注册停止报文在组播源活跃期间会一直发送

源端DR会在组播源活跃期间每个55s发送一次空的注册报文给RP

  • RP如果已经存在关于组播源的(S,G)表项,则会发送注册停止报文(表示自己已经有此组播源表项)
  • RP如果不存在关于组播的(*,G)表项,则会发送注册停止报文(表示此组播源下无成员,不需要)
  • RP如果存在关于组播的(*,G)表项,但是没有关于组播源的(S,G)表项,则不会发送注册停止报文(表示自己需要组播源注册建立SPT树)

源端DR在发送空的注册报文后,如果5s内收不到注册停止报文,就会发送带组播流量的单播注册报文到RP

  • RP收到后建立关于组播源的(S,G)表项,重复上述建立SPT树的过程

为什么也要与成员端DR建立SPT树

因为转发流量一定需要(S,G)表项


SPT切换

对于一些接收者来说,通过RP的组播转发路径并不是最优的路径,此时就需要Switchover机制(即SPT切换),SPT切换由与组成员直连的路由器触发的

接收者到组播源也会建立SPT树,之前RP与源建立的树就不用了,这个过程就称为SPT切换

什么时候进行SPT切换

当用户端DR收到组播报文的速率超过阈值时,会进行SPT切换,由组成员端DR发起

华为设备上阈值默认为0,即只要有流量就会进行SPT切换

SPT切换的工作过程

组成员DR检查自己(S,G)表项的上游接口是否为组源接口

如果是则继续向上游检查,如果不是则向真正的上游接口发送(S,G)表项发送Join报文

当真正的上游接口收到组播源流量后,会向之前的上游接口发送剪枝报文


SSM模型

上述介绍的PIM为ASM模型的建树过程,SSM模型需要借助PIM-SM的部分技术和IGMPv3/MLDv2来实现

SSM模型的特点

SSM模型无需维护RP、无需构建RPT、无需注册组播源、可以直接在组播源与成员之建立SPT(需要选举DR,建立邻居,然后直接建立SPT树)

当成员端使用IGMPv3/MLDv2加入组播组时,为SSM模型

SPT建树

接收端DR直接发送关于(S,G)表项的Join报文,逐跳向源发送

PIM路由器通过Join报文创建(S,G)表项

SPT建立后,源段就会将组播报文沿着SPT分发给组成员

PIM实现方式比较

华为PIM-SM 动态RP实验配置_静下心来敲木鱼的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/m0_49864110/article/details/128685766?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128685766%22%2C%22source%22%3A%22m0_49864110%22%7D

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静下心来敲木鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值