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

本文详细介绍了PIM-SM协议的工作流程,包括DR竞选、RP的作用与类型、PIMSM建树过程及SPT切换。DR负责组播源或组成员端的报文收发,RP作为核心路由器汇聚流量。PIMSM通过(*,G)Join和(S,G)Join报文建立RPT和SPT树。SSM模型则无需RP和RPT,直接在源与成员间建立SPT。此外,还讨论了动态RP选举的BSR协议和静态RP配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

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

03-15
### PIM-SM Protocol Overview PIM-SM(Protocol Independent Multicast - Sparse Mode)是一种独立于底层单路由协议路由协议,适用于稀疏模式下的网络环境。它通过构建共享树和源树来高效传输流量[^3]。 #### Key Features of PIM-SM - **Shared Tree**: In PIM-SM, a shared tree (also known as Rendezvous Point Tree or RPT) is created using a designated rendezvous point (RP). All receivers initially join this shared tree to receive data from sources. - **Source Trees**: Once traffic volume increases or specific conditions are met, the network switches from the shared tree to a direct path between the source and receiver, forming a shortest-path tree (SPT). - **RPF Check**: The Reverse Path Forwarding check ensures that packets arrive on the interface expected by the routing table. This prevents loops in multicast forwarding. #### Configuration Steps for SSM Deployment Before configuring PIM-SM, it’s essential to ensure IP multicast routing and PIM sparse mode are enabled. Additionally, Static Source-Specific Multicast (SSM) mappings can enhance security and efficiency when used alongside ACLs defining group ranges mapped to source addresses[^2]. #### Security Considerations When deploying any multicast protocol like PIM-SM, protecting against potential threats such as ransomware becomes crucial. Solutions involving advanced threat protection mechanisms, such as enabling Cisco AMP deployments with features like Malicious Activity Protection or Exploit Prevention engines, provide robust defenses at various stages of attack vectors[^4]. ```python # Example Python Code Demonstrating Basic PIM-SM Concepts Using Simulated Data Structures class Router: def __init__(self, name): self.name = name self.rpf_interface = None def set_rpf(self, rpf_intf): """Set the RPF Interface""" self.rpf_interface = rpf_intf def simulate_pim_sm(router_list, source, destination_group): for router in router_list: if router.rpf_interface: # Ensure valid RPF setup print(f"{router.name} forwards packet via {router.rpf_interface}") routers = [Router('R1'), Router('R2')] routers[0].set_rpf("GigabitEthernet0/1") # Set up hypothetical RPF interfaces simulate_pim_sm(routers, 'Source_A', 'Group_1') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静下心来敲木鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值