【IP 组播】PIM-SM

news2024/9/24 17:15:03

目录

原理概述

实验目的

实验内容

实验拓扑

1.基本配置

2.配置IGP

3.配置PIM-SM

4.用户端DR与组播源端DR

5.从RPT切换到SPT

 6.配置PIM-Silent接口


原理概述

       PIM-SM 是一种基于Group-Shared Tree 的组播路由协议,与 PIM-DM 不同,它适合于组播组成员分布广泛而稀疏的大型网络。 Group-Shared Tree 分为两种:一种被称为Steiner Tree ,另一种被称为 Rendezvous Point Tree (简称 RPT ), PIM-SM 采用的组播树是 RPT。
       RPT 是一棵以汇聚点 RP ( Rendezvous Point )路由器为根,以直连有组成员的路由器为叶子的组播树。 RP 是一个组播供求信息的汇聚中心,它需要处理组播源端 DR ( Designated Router )发送的组播注册消息及用户端 DR 发送的组播加入消息。
      RP 是 PIM-SM 网络中的一台至关重要的路由器,网络中的所有 PIM 路由器都必须知道谁是 RP 。当网络中出现活跃的组播源(组播源向某组播组发送第一个组播数据)时,组播源端 DR 会将此组播数据封装在注册消息中并以单播形式发往 RP , RP 收到此消息后会立即创建相应的( S , G )组播路由表项。当网络中出现活跃的组播用户(用户主机通过 IGMP 加入某组播组 G )时,用户端 DR 会向 RP 发送加入组播组 G 的消息,在该消息去往 RP 的路径上的每台路由器都创建(*, G )表项,由此便生成了一棵以 RP 为根的 RPT 。当网络中有活跃的组播用户时,组播报文先被封装在单播报文中从组播源发往 RP ,然后 RP 再将组播报文沿 RPT 转发给组播用户。若网络中没有活跃的组播用户时,组播数据到达 RP 后就停止了,不会再向下转发。
       显然, RPT 并非是一棵 SPT ( Shortest Path Tree ),经由 RP 的转发路径可能不是从组播源到组播用户之间的最短路径。为了提高组播转发效率, PIM-SM 在实际部署时,通常都会允许从 RPT 切换到 SPT 。
       PIM 路由器会通过 PIM-Hello 消息来发现 PIM 邻居、协调各项协议参数、维护邻居关系。 PIM-Hello 消息的目的 IP 地址是组播地址:224.0.0.13(表示同一网段中的所有 PIM 路由器),源地址为发送接口的 IP 地址, TTL 值为1。另外, PIM-Hello 的一个重要作用就是用来选举 DR 。在 PIM-SM 中, DR 分为两种:组播源网段中的 DR 称为组播源端 DR ,它负责向 RP 发送组播注册消息;组成员网段中的 DR 称为用户端 DR ,它负责向 RP 发送组播加入消息。

实验目的

理解PIM-SM的应用场景

掌握PIM-SM的基本配置

理解PIM-SM中RPT到SPT的切换

理解组播源端DR和用户端DR的作用

实验内容

实验拓扑如下图所示。本实验模拟了一个公司网络场景,包含了6台路由器,3台交换机、一台组播服务器Source-1和两台终端电脑。所有路由器都运行OSPF,并且都位于区域0。管理员需要在网络中部署PIM-SM,从而实现以组播的方式向员工播放培训视频。

实验拓扑

1.基本配置

根据拓扑图进行相应的基本配置,并使用ping命令检测R1与R2之间的连通性。 

其余直连网段的连通性测试过程在此省略。

配置组播服务器Source-1的组播IP地址为224.1.1.1,组播MAC地址为01-00-5E-01-01-01,如图所示

                                                                    配置Source-1

2.配置IGP

在每台路由器上配置OSPF协议。

[r1]ospf 1 
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 10.0.1.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 50.0.14.0 0.0.0.255
[r1-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255

 

[r2]ospf 1
[r2-ospf-1]area 0
[r2-ospf-1-area-0.0.0.0]network 10.0.1.0 0.0.0.255
[r2-ospf-1-area-0.0.0.0]network 172.16.1.0 0.0.0.255

 

[r3]ospf 1
[r3-ospf-1]area 0
[r3-ospf-1-area-0.0.0.0]network 10.0.3.3 0.0.0.0
[r3-ospf-1-area-0.0.0.0]network 10.0.1.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 20.0.35.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 30.0.36.0 0.0.0.255
[r3-ospf-1-area-0.0.0.0]network 40.0.34.0 0.0.0.255

 

[r4]ospf 1
[r4-ospf-1]area 0
[r4-ospf-1-area-0.0.0.0]network 40.0.34.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 40.0.2.0 0.0.0.255
[r4-ospf-1-area-0.0.0.0]network 50.0.14.0 0.0.0.255

 

[r5]ospf 1
[r5-ospf-1]area 0
[r5-ospf-1-area-0.0.0.0]network 20.0.35.0 0.0.0.255
[r5-ospf-1-area-0.0.0.0]network 30.0.2.0 0.0.0.255

 

[R6]ospf 1
[R6-ospf-1]area 0
[R6-ospf-1-area-0.0.0.0]network 30.0.2.0 0.0.0.255
[R6-ospf-1-area-0.0.0.0]network 30.0.36.0 0.0.0.255

 配置完成后,查看R1的路由表。

可以看到,R1已经获得了所有网段的路由信息。至此,网络已经通过了OSPF实现了互通。

3.配置PIM-SM

在所有路由器上开启组播功能,并在每台路由器的每个接口下配置命令pim sm,除此之外,还需要在R5和R6的G0/0/0接口以及R4的G0/0/1接口下使能IGMP。

[r1]multicast routing-enable
[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]pim sm
[r1-GigabitEthernet0/0/0]int g0/0/1
[r1-GigabitEthernet0/0/1]pim sm
[r1-GigabitEthernet0/0/1]int g0/0/2
[r1-GigabitEthernet0/0/2]pim sm

[r2]multicast routing-enable
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]pim sm
[r2-GigabitEthernet0/0/0]int g0/0/1
[r2-GigabitEthernet0/0/1]pim sm

[r3]multicast routing-enable
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]pim sm
[r3-GigabitEthernet0/0/0]int g0/0/1
[r3-GigabitEthernet0/0/1]pim sm
[r3-GigabitEthernet0/0/1]int g0/0/2
[r3-GigabitEthernet0/0/2]pim sm
[r3-GigabitEthernet0/0/2]int g4/0/0
[r3-GigabitEthernet4/0/0]pim sm

[r4]multicast routing-enable
[r4]int g0/0/0
[r4-GigabitEthernet0/0/0]pim sm
[r4-GigabitEthernet0/0/0]int g0/0/1
[r4-GigabitEthernet0/0/1]pim sm
[r4-GigabitEthernet0/0/1]igmp enable
[r4-GigabitEthernet0/0/1]int g0/0/2
[r4-GigabitEthernet0/0/2]pim sm

[r5]multicast routing-enable
[r5]int g0/0/0
[r5-GigabitEthernet0/0/0]pim sm
[r5-GigabitEthernet0/0/0]igmp enable
[r5-GigabitEthernet0/0/0]int g0/0/1
[r5-GigabitEthernet0/0/1]pim sm

[R6]multicast routing-enable
[R6]int g0/0/0
[R6-GigabitEthernet0/0/0]pim sm
[R6-GigabitEthernet0/0/0]igmp enable
[R6-GigabitEthernet0/0/0]int g0/0/2
[R6-GigabitEthernet0/0/2]pim sm

 选择R3为RP节点,并在每台路由器上手工配置R3为静态RP。

[r1]pim 
[r1-pim]static-rp 10.0.3.3


[r2]pim
[r2-pim]static-rp 10.0.3.3

[r3]pim
[r3-pim]static-rp 10.0.3.3

[r4]pim
[r4-pim]static-rp 10.0.3.3

[r5]pim
[r5-pim]static-rp 10.0.3.3

[R6]pim
[R6-pim]static-rp 10.0.3.3

配置完成后,查看R3的PIM邻居信息。

 可以看到,R3与所有相邻的路由器都已成功建立了PIM邻居关系。

4.用户端DR与组播源端DR

       本网络中,PC-2,R5、R6处于同一网段。如果PC-2希望加入组播组,则PIM-SM需要在R5和R6之间选举出一台用户端DR来发送组播加入消息,从而避免RP接收到重复的加入消息。选举DR时,首先比较DR优先级(缺省情况下优先级的值为1),若优先级一样则比较接口IP地址的大小,IP地址较大者将成为DR。

在R5、R6上查看DR信息。

可以看到,R6(30.0.2.254)现在是PC-2所在网段的DR。在PC-2上使用IGMP加入组播组224.1.1.1,在R3的G0/0/1和G0/0/2接口查看报文情况。如下图所示,可以看到,R3仅仅从G0/0/2接口收到了来自DR路由器R6的组播加入消息,而G0/0/1接口没有收到任何组播加入消息。 

                                                   R3的G0/0/2接口报文情况

在R3上查看PIM路由表

可以看到,R3在收到加入消息后,其组播路由表中生成了(*,G)的组播路由条目,下游接口为G0/0/2,形成了从RP(R3)到R6的一棵RPT。

另一方面,组播源Source-1,R1,R2处于同一网段,PIM-SM需要在R1和R2之间选举出组播源端DR来向RP发送注册消息。在R1,R2上查看DR信息。

可以看到,IP地址较大的R2(172.16.1.20)目前是组播源端DR。接下来,我们可以通过修改优先级的方法来强制让R1成为组播源端DR。

[r1]int g0/0/0
[r1-GigabitEthernet0/0/0]pim hello-option dr-priority 2 

配置完成后,在R1上查看DR信息。

可以看到,R1现在已经成为了组播源端DR。在Source-1上使用组播地址224.1.1.1发送组播报文,在RP路由器R3的G4/0/0接口查看接收到的注册消息,如下图所示。

                                             蓝色的报文是Source-1发送的组播报文 

                                         DR路由器R1向RP路由器R3发送的组播注册消息

5.从RPT切换到SPT

        对本网络而言,从RPT到SPT的切换过程可简单示意如下:最后一跳组播路由器R4收到来自上游路由器R3转发的组播数据包后,会查看自己的单播路由表,发现去往组播源172.16.1.1的最短路径的下一跳不是上游路由器R3,而是路由器R1,因此,R4会发起由RPT到SPT的切换。

在PC-1上使用IGMP加入组播组224.1.1.1,在R4上查看组播路由表。

可以看到,R4上生成了(*,224.1.1.1)的组播路由,上游接口是连接到RP路由器的G0/0/0接口。

在组播源发送组播地址为224.1.1.1的组播报文,当PC-1接收到组播报文后,在R4上查看组播路由表。

       可以看到,R4在接收到组播数据后生成了(172.16.1.1,224.1.1.1)的组播路由,且上游接口切换到了 GE 0/0/2。切换过程中,R4会向R1发送组播加入消息,要求从R1接收组播数据,同时R4也会向R3发送剪枝消息,使R3停止向自己转发组播数据。
       缺省情况下, PIM-SM 路由器会在收到第一个组播数据包后立即进行从 RPT 到 SPT 的切换。如果不希望发生切换,则可使用配置命令来禁止切换。另外,也可以设定切换阈值,实现有条件的切换。在用户端 DR 上配置了切换阈值后,只有当组播报文的速率超过阈值时,用户端 DR 才会发起切换。下面给出禁止切换的示例。

[r4]pim 
[r4-pim]spt-switch-threshold infinity 

<r4>display pim routing-table
 VPN-Instance: public net
 Total 1 (*, G) entry; 1 (S, G) entry

 (*, 224.1.1.1)
     RP: 10.0.3.3
     Protocol: pim-sm, Flag: WC 
     UpTime: 00:10:43
     Upstream interface: GigabitEthernet0/0/0
         Upstream neighbor: 40.0.34.3
         RPF prime neighbor: 40.0.34.3
     Downstream interface(s) information:
     Total number of downstreams: 1
         1: GigabitEthernet0/0/1
             Protocol: igmp, UpTime: 00:10:43, Expires: -

 (172.16.1.1, 224.1.1.1)
     RP: 10.0.3.3
     Protocol: pim-sm, Flag: ACT 
     UpTime: 00:05:35
     Upstream interface: GigabitEthernet0/0/0
         Upstream neighbor: 40.0.34.3
         RPF prime neighbor: 40.0.34.3

     Downstream interface(s) information:
     Total number of downstreams: 1
         1: GigabitEthernet0/0/1
             Protocol: pim-sm, UpTime: 00:05:35, Expires: -

      可以看到,当配置禁止切换后,R4生成的(172.16.1.1,224.1.1.1)的组播路由的上游接口没有发生切换。

6.配置PIM-Silent接口

       通常情况下,路由器直连用户主机的接口上是需要配置PIM的,但是这样的配置同时也存在着安全隐患:当恶意主机发送大量PIM-Hello报文时,有可能导致路由器瘫痪。为了避免上述情况的发生,可以在路由器直连用户主机的接口上配置PIM Slient,禁止该接口和转发任何PIM协议报文,同时,此接口上的组播转发功能及IGMP功能都不受影响。

        配置R4的G0/0/1接口为PIM-Slient接口。

[r4]int g0/0/1
[r4-GigabitEthernet0/0/1]pim silent

配置完成后,查看R4的PIM接口详细信息,并在R4的G0/0/1接口查看数据包的发送

                                                        R4的G0/0/1接口的报文情况

可以看到,R4的G0/0/1接口的Slient功能已经使能,此接口不再发送PIM-Hello报文。 

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

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

相关文章

C++模板类和模板函数

模板类 #include<bits/stdc.h> using namespace std; template<typename T> class People{public:People(T name):name_(name){}protected:T name_; }; class A:public People<string>{public:A(string name): People(name){}void print(){std::cout<<…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作&#xff0c;比如加载数据&#xff0c;或者初始化三方库等等&#xff0c;导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深&#xff0c;或者一些不会立即使用的布局也在一开始一起加载到…

tomcat配置静态资源后无法正常访问

目录 一、场景二、配置三、访问异常四、排查五、原因六、解决 一、场景 1、将前端文件存在到指定目录 2、在tomcat配置静态资源 3、配置后无法正常访问到前端文件 二、配置 1、tomcat配置 2、静态资源 三、访问异常 四、排查 可以ping通&#xff0c;但是访问不了3080端口 …

4G CAT.1单灯控制器 计讯物联TL112

传统的照明控制方式往往需要通过开关进行操作&#xff0c;而单灯控制器的出现改变了这一局面。计讯物联单灯控制器TL112&#xff0c;一种基于无线通信技术的智能照明控制设备&#xff0c;可通过管理中心平台、pc电脑端、手机端等多方式&#xff0c;实现对路灯的智能控制&#x…

Springboot整合瀚高

需要下载highgo驱动,然后将jar包打入进自己本地maven中 下载地址: highgi6.2.4 1.打开jar包所在的文件&#xff0c;然后在该文件夹中打开命令窗口&#xff08;或者先打开命令窗口&#xff0c;然后cd到jar所在文件夹&#xff09; install-file -Dfile&#xff1a;jar包名Dart…

SQL Server事务复制操作出现的错误 进程无法在“xxx”上执行sp_replcmds

SQL Server事务复制操作出现的错误 进程无法在“xxx”上执行“sp_replcmds” 无法作为数据库主体执行&#xff0c;因为主体 "dbo" 不存在、无法模拟这种类型的主体&#xff0c;或您没有所需的权限

机器学习——元学习

元学习&#xff08;Meta Learning&#xff09;是一种机器学习方法&#xff0c;旨在使模型能够学习如何学习。它涉及到在学习过程中自动化地学习和优化学习算法或模型的能力。元学习的目标是使模型能够从有限的训练样本中快速适应新任务或新环境。 在传统的机器学习中&#xff…

Linux 反引号、单引号以及双引号的区别

1.单引号—— 单引号中所有的字符包括特殊字符&#xff08;$,,和\&#xff09;都将解释成字符本身而成为普通字符。它不会解析任何变量&#xff0c;元字符&#xff0c;通配符&#xff0c;转义符&#xff0c;只被当作字符串处理。 2.双引号——" 双引号&#xff0c;除了$,…

遥感卫星影像质量评价指标汇总

1. 主观评价方法 以人为图像的评价者&#xff0c;根据自己的评价尺度和经验对图像质量进行评价。 2. 客观评价方法 1)均方差 2)信噪比 主要用来评价影像经压缩、传输、增强等处理前后的质量变化情况&#xff0c;其本质与均方差类似。 3)方差 反映了图像各个像元灰度相对…

游戏本笔记本更换@添加内存条实操示例@DDR5内存条

文章目录 添加内存条的意义准备工具设备拔出电源适配器并关机&#x1f47a;样机 内存条上的金手指安装过程Notes 安装后开机初次开机速度屏幕显示分辨率和闪烁问题检查安装后的效果 添加内存条的意义 参考双通道内存DDR5多通道内存-CSDN博客 准备工具 准备一个质量差不多的螺…

【正版特惠】IDM 永久授权 优惠低至109元!

尽管小编有修改版IDM&#xff0c;但是由于软件太好用了&#xff0c;很多同学干脆就直接购买了正版&#xff0c;现在正版也不贵&#xff0c;并且授权码绑定自己的邮箱&#xff0c;直接官方下载激活&#xff0c;无需其他的绿化修改之类的操作&#xff0c;不喜欢那么麻烦的&#x…

python知识点总结(十)

python知识点总结十 1、装饰器的理解、并实现一个计时器记录执行性能&#xff0c;并且将执行结果写入日志文件中2、队列和栈的区别&#xff0c;并且用python实现3、设计实现遍历目录与子目录4、CPU处理进程最慢的情况通常发生在以下几种情况下&#xff1a;5、CPU处理线程最慢的…

【嵌入式机器学习开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

ARM-Linux是一种针对ARM架构的操作系统&#xff0c;它的设计目标是在低功耗、低成本的硬件平台上运行。ARM-Linux可以运行在多种ARM处理器上&#xff0c;包括树莓派。 树莓派&#xff08;Raspberry Pi&#xff09;是一款基于ARM架构的单板计算机&#xff0c;由英国的树莓派基金…

46.continue语句

目录 一.continue语句 二.视频教程 一.continue语句 continue语句的作用和break语句很像&#xff0c;break语句会跳出当前循环&#xff0c;而continue语句则是跳出本次循环&#xff0c;继续执行下一次循环。 举个例子&#xff1a; #include <stdio.h>void main(void)…

HarmonyOS实战开发-实现带有卡片的电影应用

介绍 本篇Codelab基于元服务卡片的能力&#xff0c;实现带有卡片的电影应用&#xff0c;介绍卡片的开发过程和生命周期实现。需要完成以下功能&#xff1a; 元服务卡片&#xff0c;用于在桌面上添加2x2或2x4规格元服务卡片。关系型数据库&#xff0c;用于创建、查询、添加、删…

LLMOps与传统的MLOps有何不同?

引言&#xff1a; 随着AI技术的日新月异&#xff0c;大语言模型&#xff08;LLM&#xff09;已经成为推动企业增长和创新的关键驱动力。然而&#xff0c;在实际应用中&#xff0c;要想充分发挥大模型的潜力&#xff0c;还需要克服众多挑战&#xff0c;包括语料的精准标注与处理…

如何利用生成式人工智能挑选合适的候选人?

在当今激烈的商业竞争中&#xff0c;招聘合适的人才是构建企业成功的基石。筛选和面试候选人是一个复杂且精细的过程&#xff0c;它不仅关系到职位的有效填补&#xff0c;更影响到企业的长期发展和团队建设。 选择合适候选人的重要性 选择合适的候选人就像寻找一片沙滩上的珍…

洛谷_P1223 排队接水_python写法

P1223 排队接水 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) n int(input()) data list(map(int,input().split())) data.insert(0,0)li [] for i, elem in enumerate(data):li.append([i,elem]) li.sort(keylambda x:x[1])for i in range(1,n1):print(li[i][0],end )pri…

【Leetcode】单链表常见题

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;Leetcode刷题 本节内容我们来讲解常见的几道单链表的题型&#xff0c;文末会赋上单链表增删查&#xff0c;初始化等代码 目录 1.移除链表元素2.链表的中间节点3.返回倒数第K个节点&#xff1a;4.环…

物理查询优化(二):两表连接算法(附具体案例及代码分析)

前言 关系代数的一项重要操作是连接运算&#xff0c;多个表连接是建立在两表之间连接的基础上的。研究两表连接的方式&#xff0c;对连接效率的提高有着直接的影响。 连接方式是一个什么样的概念&#xff0c;或者说我们为何要有而且有好几种&#xff0c;对于不太了解数据库的人…