2022-11-06 网工进阶(三十五)---PIM-SM工作原理(组播分发树的形成、ASM、SSM)

news2025/8/12 12:38:57

PIM-DM的局限性

中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到诸多问题:

1 使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击

2 所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。

3 对于组成员较为稀疏的组播网络,使用“扩散-剪枝”形成组播分发树的效率不高

PIM-SM(ASM)

通过PIM-SM(ASM)模式形成组播分发树的特点

1 只有组播转发路径上的组播路由器需要维护组播路由表。

2 通过RP可以让所有组播路由器获知组成员的位置。

3 避免“扩散-剪枝”机制,提高组播分发树的形成效率。

PIM-SM(ASM)组播分发树的形成步骤

1 将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。

2 组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。

3 对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。
 

PIM-SM(ASM)协议报文

报文类型

报文功能

Hello

用于PIM邻居发现,协议参数协商,PIM邻居关系维护等

Register(注册)

用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP

Register-Stop(注册停止)

RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量

Join/Prune(加入/剪枝)

加入报文用于加入组播分发树,剪枝则用于修剪组播分发树

Assert(断言)

用于断言机制

Bootstrap(自举)

用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP的汇总信息

Candidate-RP-Advertisement

(候选RP通告)

C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息

RP概述

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

配置RP的方式

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

动态RP:通过选举机制在多个C-RP(Candidate-RP,候选RP)之间选举出RP

PS:静态RP或者是动态RP在设置时均可以指定该RP为哪些组播组提供服务。

动态选举RP

动态选举RP涉及的角色有C-BSR(Candidate-Bootstrap Router)C-RP(Candidate-RP)

选举RP的流程

1 首先,C-BSR通过竞选能选举出一个唯一的BSR。

2 然后,BSR的是用于收集C-RP的信息并形成RP-Set信息的路由器(类似选举RP的裁判)。BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。

3 最后,PIM路由器收到RP-Set消息后,根据RP选举规则选举出合适的RP。

BSR竞选规则

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

2 如果优先级相同,IP地址较大者获胜。

RP竞选规则

1 与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。

2 如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。

3 如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。

4 如果以上比较结果都相同,则C-RP的IP地址较大者获胜。
 

组播分发树的形成

PIM-SM(ASM)模式首次形成组播分发树主要依赖RPT构建机制组播源注册机制DR选举机制

RPT构建机制

组播叶子路由器主动建立到RP组播分发树(RPT)

RPT(RP Tree)是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。

当网络中出现组成员(形成IGMP表项)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。

组播源注册机制

通过该机制形成组播源到RP组播分发树(SPT)

SPT建立后,RP使用Register-Stop报文通知源端DR后续报文可以以组播报文形式发送。

DR选举机制

在源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。

PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免了重复组播报文的问题。

DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。

PIM DR选举规则

在PIM-SM(ASM)中各路由器通过比较Hello消息上携带的优先级和IP地址,为多路访问网络选举指定路由器DR。

接口DR优先级高的路由器将成为该MA网络的DR,在优先级相同的情况下,接口IP地址大的路由器将成为DR。

当DR出现故障后,邻居路由器之间会重新选举DR。

PS:DR优先级默认为1,数值越大越优;对于成员端网络,如果有多台组播路由器,则组播路由器的下行接口需要同时开启IGMP与PIM; DR还可充当IGMPv1的查询器。

SPT切换机制

在PIM-SM网络中,一个组播组只对应一个RP。因此组播数据最初都会发往RP,由RP进行转发,这会导致两个问题:1  过大的组播流量会对RP形成巨大的负担。2 组播转发路径有可能是次优路径

为了解决RPT潜在的次优路径问题,成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT

设备沿最短路径发送Join消息,该最短路径基于RPF选举规则决定。设备将Join消息从RPF选举得出的上行接口发出。

多路访问网络在SPT切换的过程中可能会存在重复报文,需要利用断言机制快速选定下行接口。

SPT切换的触发条件:缺省情况下,当RP或者组成员端DR收到第一个组播数据包之后,就会向源发起SPT切换。

当组播分发树(SPT或RPT)稳定后,成员端DR会周期性发送Join/Prune报文,用于维护组播分发树。

如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树。

相关命令

在接口下开启PIM-SM模式

[R1-GigabitEthernet0/0/0]pim sm

进入PIM视图

[R1]pim

配置静态RP(通常使用RP路由器的环回接口)

[R1-pim]static-rp 1.1.1.1

查看RP信息

<R1>display pim rp-info 

配置BSR(可指定接口类型和编号、哈希掩码长度(缺省值30)、优先级(缺省值0,越大越优))

[R1-pim]c-bsr LoopBack 0 32 255

配置RP(可指定接口类型和编号和优先级(缺省值0,越小越优)等)

[R1-pim]c-rp LoopBack 0 priority 255

查看BSR信息

<R1>display pim bsr-info 

配置PIM-SM域的BSR边界(禁止BSR发送的自举报文向PIM-SM域外发送,域内的其他组播报文可以通过该边界)

[R1-GigabitEthernet0/0/0]pim bsr-boundary 

永不发起SPT切换机制(在成员端DR上配置,缺省情况下会自动切换)

[R1-pim]spt-switch-threshold infinity

配置举例---PIM-SM(ASM)

静态RP配置

配置R2的环回接口2.2.2.2为静态RP。

组播源配置


路由器R1配置

#
 sysname R1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.0.254 255.255.255.0 
 pim sm                                   //配置为SM模式
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.0.1 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/2
 ip address 10.1.1.1 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
#
pim
 static-rp 2.2.2.2             //配置静态RP,指定RP的地址
#

路由器R2配置

#
 sysname R2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.0.2 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.2.2 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface LoopBack0      //配置了环回接口用于指定RP
 ip address 2.2.2.2 255.255.255.255  
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
#
pim
 static-rp 2.2.2.2
#

路由器R3配置没有特别之处

路由器R4配置

#
 sysname R4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.2.4 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.3.4 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/2
 ip address 192.168.1.254 255.255.255.0 
 igmp enable                            //连接成员端网络的接口开启IGMP
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
#
pim
 static-rp 2.2.2.2
#

成员端配置(PC1与PC2类似)

配置完成后,点击组播源的运行和成员端的启动VLC可进行测试。

动态RP配置

配置R2、R3为c-bsr和c-rp,R2采用优先级100,R3采用优先级200,根据bsr和rp的选举规则可知,这样配置后bsr为R3,rp为R2。

组播源和成员端配置同静态。

路由器R1配置

#
 sysname R1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 192.168.0.254 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.0.1 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/2
 ip address 10.1.1.1 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
#

路由器R2配置

#
 sysname R2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.0.2 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.2.2 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
 pim sm
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
#
pim
 c-bsr hash-length 32           //配置c-bsr的哈希掩码长度
 c-bsr priority 100             //配置c-bsr优先级
 c-bsr LoopBack0                //配置c-bsr的接口类型和编号
 c-rp LoopBack0 priority 100    //配置c-rp的接口类型、编号、优先级
#

路由器R3配置

#
 sysname R3
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.0.3 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.3.3 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 
 pim sm
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
#
pim
 c-bsr hash-length 32
 c-bsr priority 200
 c-bsr LoopBack0
 c-rp LoopBack0 priority 200
#

路由器R4配置

#
 sysname R4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.2.4 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/1
 ip address 10.1.3.4 255.255.255.0 
 pim sm
 ospf enable 1 area 0.0.0.0
#
interface GigabitEthernet0/0/2
 ip address 192.168.1.254 255.255.255.0 
 igmp enable
 ospf enable 1 area 0.0.0.0
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
#

查看bsr信息

<R2>display pim bsr-info 
 VPN-Instance: public net
 Elected AdminScoped BSR Count: 0
 Elected BSR Address: 3.3.3.3
     Priority: 200
     Hash mask length: 32
     State: Accept Preferred
     Scope: Not scoped
     Uptime: 00:25:56
     Expires: 00:01:29
     C-RP Count: 2
 Candidate AdminScoped BSR Count: 0
 Candidate BSR Address: 2.2.2.2
     Priority: 100
     Hash mask length: 32
     State: Candidate
     Scope: Not scoped
     Wait to be BSR: 0

分析:可以看出路由器R3为挡墙BSR

查看rp信息

<R2>display pim rp-info
 VPN-Instance: public net
 PIM-SM BSR RP Number:2
 Group/MaskLen: 224.0.0.0/4
     RP: 2.2.2.2 (local)
     Priority: 100
     Uptime: 00:38:16
     Expires: 00:02:16
 Group/MaskLen: 224.0.0.0/4
     RP: 3.3.3.3
     Priority: 200
     Uptime: 00:27:15
     Expires: 00:02:16

分析:可以看出路由器R2为当前RP

PIM-SM(SSM)

PIM-SM(SSM)基本概述

由于SSM提前定义了组播的源地址,所以PIM-SM(SSM)可以在成员端DR上基于组播源地址直接反向建立SPT。 PIM-SM(SSM)无需维护RP、无需构建RPT、无需注册组播源,可以直接在组播源与组成员之间建立SPT。 在PIM-SM(SSM)模型中,关键机制包括邻居发现、DR竞选、构建SPT。

组播分发树形成与维护

PIM-SM(SSM)模型构建组播分发树的形成主要依赖IGMPv3报文Join报文

PIM-SM(SSM)模型形成的组播分发树会一直存在,不会因为没有组播流量而消失。

PIM模型比较

协议

模型分类

适用场景

工作机制

PIM-DM

ASM模型

适合规模较小、组播组成员相对比较密集的局域网

通过周期性“扩散-剪枝”维护一棵连接组播源和组成员的单向无环SPT

PIM-SM

ASM模型

适合网络中的组成员相对比较稀疏,分布广泛的大型网络

采用接收者主动加入的方式建立组播分发树,需要维护RP、构建RPT、注册组播源

SSM模型

适合网络中的用户预先知道组播源的位置,直接向指定的组播源请求组播数据的场景

直接在组播源与组成员之间建立SPT,无需维护RP、构建RPT、注册组播源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/33485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARM-A架构入门基础(一)预备知识

14天学习训练营导师课程&#xff1a;周贺贺《ARMv8/ARMv9架构-快速入门》 1. 背景 ARM全称&#xff1a; Advanced RISC Machines。 ARM处理器&#xff1a; 基于ARM公司设计的架构而研发的处理器&#xff0c;包含arm core和外设。ARM公司本身不生产处理器&#xff0c;只出售技…

RNA-seq 详细教程:分析流程介绍(1)

学习目标 了解从 RNA 提取到获取基因表达矩阵&#xff0c; 既RNA-seq 分析的整个流程。 1. workflow 进行差异表达基因分析的前提是&#xff0c;获取代表基因表达水平的矩阵。因此在进行分析前&#xff0c;必须知道基因表达矩阵是如何产生的。 在本教程中&#xff0c;将会简要的…

基于JAVA的鲜花店商城平台【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86427660 摘要 在互联网不断发展的时代之下&#xff0c;鲜花软件可以为鲜花企业带来更多的发展机会&#xff0c;让企业可以挖掘到更多的潜在用户&#xff0c;同时结合企业的优势就能够为用户…

【单目标优化求解】粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】

⛄一、遗传算法简介 1 算法的种群初始化 设D维搜索空间中&#xff0c;随机生成初始解的表达式为&#xff1a; 式中&#xff0c;Xi表示蝴蝶群体中第i只蝴蝶(i 1, 2, 3, …, N)空间位置&#xff0c;N表示初始解的个数&#xff1b;Lb, Ub分别表示搜索空间的上界和下界&#xff…

Linux vmware 编译模块失败。 Vmware player Unable to install all modules.

Vmware player Unable to install all modules. See log for details ubuntu下的vmware play经常会让更新模块。一起点击确认就可以正常编译更新。 而且一定要编译后才能打开虚拟机系统 但是奇怪的是&#xff0c;最近一次点击 更新&#xff0c;报错&#xff1a; 显示的英文…

STM32F103的FSMC模块驱动LCD屏幕

以下内容为对正点原子的STM32F103STM32F103STM32F103精英板的FSMCFSMCFSMC模块驱动LCDLCDLCD屏幕例程的学习。做一个记录来加强对模块的认知。 FSMCFSMCFSMC的全称是FlexiblestaticmemorycontrollerFlexible\quad static\quad memory\quad controllerFlexiblestaticmemory…

【Python+Appium】开展自动化测试(四)使用weditor进行元素定位

目录 前言 一&#xff0c;weditor的安装与使用 二&#xff0c;遇到的问题 结语 前言 上一篇我们讲到了如何通过编写一个简单的Python脚本完成了登录app的操作&#xff0c;如何断言&#xff0c;如何编写一条完整的用例。那么今天继续我们的自动化测试第四天&#xff0c;使用…

【Java进阶篇】第五章 集合(下)--Map集合

文章目录1、概述2、Map接口中的常用方法3、Map集合的遍历4、哈希表的数据结构5、Map集合的存取6、hashCode(&#xff09;和equals()的重写7、一些小零散的东西8、HashMap和Hashtable的区别9、Properties类10、TreeMap11、自定义类实现Comparable接口12、二叉树13、Comparator接…

Caffeine《一》

《Caffeine&#xff08;Java顶级缓存组件&#xff09;一》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Caffeine&#xff08;Java顶级缓存组件&#xff09;》《Caffeine&#xff08;Java顶级缓存组件&#xff09;一》1. Caffeine缓存概念1.1 缓存的分…

【MyBatis】一、概述

框架 框架就是对通用代码的封装&#xff0c;提前写好了一堆接口和类&#xff0c;我们可以在做项目的时候直接引入这些接口和类&#xff0c;基于这些现有的接口和类进行开发&#xff0c;提高开发效率。 框架一般以jar包形式存在 三层架构 表现层&#xff08;UI&#xff09;&am…

数字化助力生产管理:计件工资管理系统

目前因市场经济的发展&#xff0c;企业为求发展同时为防止消极怠工的情况&#xff0c;常把员工工资与产量结合起来。为了增加工人的劳动积极性&#xff0c;秉持多劳多得的科学管理理念&#xff0c;许多生产类型企业均实现了计件工资制。所谓的计件工资制是指按照生产的合格品的…

python之opencv人脸识别快速体验

目录 1、灰度转换 2、引用opencv官方提供的人脸训练模型 3、绘制方框&#xff08;用于框住人脸&#xff09; 4、效果及完整代码&#xff1a; 5、检测多张人脸&#xff1a; 学习链接&#xff1a; 1、灰度转换 # 灰度转换gary cv.cvtColor(img,cv.COLOR_BGR2GRAY) 2、引…

图解:Elasticsearch 8.X 如何求解环比上升比例?

1、企业级Elasticsearch 8.X 实战问题 问题描述&#xff1a;有个聚合的需求&#xff0c;问下大家&#xff0c;一个索引中有时间字段 要求 计算本月和上月相比的环比上升比例&#xff1f;——来自GPVIP群 2、问题释义 2.1 啥叫环比&#xff1f; 环比是统计学术语&#xff0c…

LabVIEW使用Deskto pExecution Trace工具包

LabVIEW使用Deskto pExecution Trace工具包 可以使用桌面执行跟踪工具包来调试和优化大型LabVIEW应用程序&#xff0c;包括具有多个循环的应用程序、客户端-服务器架构、动态加载VI等。该工具包从本地或远程计算机桌面上运行的应用程序捕获执行事件&#xff0c;并在表窗格中显…

PCB layout有DRC为什么还要用CAM和DFM检查?

随着电子产品的高速发展&#xff0c;PCB生产中大量使用BGA、QFP、PGA和CSP等高集成度封装器件&#xff0c;PCB的复杂程度也大大增加&#xff0c;这对于PCB设计也提出了更高的要求。所以在PCB设计阶段&#xff0c;除了基础的电气性能之外&#xff0c;还需要考虑可制造性&#xf…

上游模式用于实验室用冷冻机压力和真空度的高精度控制

摘要&#xff1a;本文针对实验室用冷冻干燥机的真空度控制&#xff0c;提出了干燥过程中的真空度精密控制解决方案。解决方案主要是采用双真空计&#xff08;电容真空计和皮拉尼真空计&#xff09;测量干燥过程中的真空度变化&#xff0c;双通道PID真空度控制器一方面采集电容真…

MySQL数据库:2、MySQL的下载与安装、基本使用、系统服务制作

一、MySQL简介 ​ MySQL是一种关系型数据库管理系统&#xff0c;关系数据库将数据保存在不同的表中&#xff0c;而不是将所有数据放在一个大仓库内&#xff0c;这样就增加了速度并提高了灵活性。 二、安装与下载 1、下载流程 1、访问官方&#xff08;www.mysql.com&#xf…

数据结构学习笔记(Ⅲ):栈和队列

目录 1 栈 1.1 栈的基本概念 1.定义 2.基本操作 ​1.2 栈道顺序存储实现 1.实现 2.基本操作 3.共享栈 1.3 栈的链式存储实现 2 队列 2.1 基本概念 1.定义 2.基本操作 2.2 队列的顺序实现 1.实现 2.基本操作 2.3 队列的链式实现 1.链式存储实现队列 2.基本操…

Selenium基础 —unittest单元测试框架

目录 &#xff08;一&#xff09;unittest基本简介 &#xff08;二&#xff09;unittest基本概念 1、unittest核心的四个概念 2、如何创建一个测试类 3、test fixture常用的四个方法 4、unittest编写测试方法(用例)规范 5、执行测试脚本 6、入门示例 7、结果说明 &am…

目标检测论文解读复现之十七:融合注意力机制的YOLOv5口罩检测算法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…