当前位置: 首页 > news >正文

部署PIM-SM

拓扑图

配置

使能组播路由

配置OSPF

组播路由器接口配置pim-sm

连接组成员的接口使能igmp

pim路由器上配置静态RP

sysname AR1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.12.1 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.13.1 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/2ip address 10.1.100.1 255.255.255.0 pim sm
#
ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2
#
 sysname AR2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.12.2 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.150.2 255.255.255.0 pim sm
#
interface LoopBack0ip address 2.2.2.2 255.255.255.255 pim sm
#
ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2
#
 sysname AR3
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.13.3 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.150.3 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/2ip address 10.1.36.3 255.255.255.0 pim sm
#
ospf 1 router-id 3.3.3.3 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2
#
 sysname AR4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.150.4 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.1.4 255.255.255.0 pim smigmp enable
#
ospf 1 router-id 4.4.4.4 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2
#
sysname AR5
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.150.5 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.1.5 255.255.255.0 pim smigmp enable
#
ospf 1 router-id 5.5.5.5 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2spt-switch-threshold infinity
#

注意配置spt-switch-threshold infinity命令,先不进行SPT切换(重要)

sysname AR6
#
multicast routing-enable
#
interface GigabitEthernet0/0/0ip address 10.1.36.6 255.255.255.0 pim sm
#
interface GigabitEthernet0/0/1ip address 10.1.2.1 255.255.255.0 pim smigmp enable
#
ospf 1 router-id 6.6.6.6 area 0.0.0.0 network 0.0.0.0 255.255.255.255 
#
pimstatic-rp 2.2.2.2spt-switch-threshold infinity
#

PC1加组239.1.1.1

拓扑中需要注意IGMPv2的查询器为AR4

IGMPv2查询器选举规则:

  • 接收查询报文的源IP地址和接收接口的IP地址比较,IP地址小的为查询器

连接组播成员端的DR为AR5

成员端DR负责

  • 向RP发送(*,G)Join报文,建立RPT
  • 转发组播流量

源端DR负责

  • 向RP发送Register注册报文
  • 转发组播流量

DR选举规则

  • DR-Priority优先级高的优选
  • 路由优先级相同,或有Hello报文中不支持写到DR-Priority的路由器,则IP地址大的优选

验证PIM-SM中DR选举机制

拓扑中AR5为组播成员端的DR(IP地址大)

AR4和AR5交互的报文中携带的信息

DR优先级都为1,IP地址大的为DR

查看RPT树的建立

成员端DR向RP发送(*,G)Join报文,沿途建立RPT树,建立(*,G)表项

RPF检查为到RP的地址

AR4上有(*,G)表项,但没有下游接口

抓包查看,成员端DR向RP发送Join报文

查看SPT树的建立

组播源发送组播数据

源端DR,也就是AR1将组播数据封装到注册报文中,单播发送给RP

RPF检查为到组播源的地址

RP收到注册报文后:

  • 进行解封装,向下游接口转发
  • 向源端DR发送(S,G)Join报文,建立SPT树,沿途建立(S,G)表项

  • 单播发送Register-Stop报文给源端DR,通告DR停止发送注册报文(模拟器中抓包并未看到

RP到源端DR沿途建立(S,G)表项,AR1中可以看到注册信息

收到组播数据的路由器也会产生(S,G)表项,将(*,G)表项的下游接口信息复制到(S,G)表项中

不在组播转发路径上(但能收到组播数据)的路由器产生(S,G)表项,没有下游接口,如AR4、AR3

组播转发树

由于配置了不进行SPT切换,组播树如下图

将PC2加入组播组239.1.1.1

  • 成员端DR(AR6)向RP发送(*,G)Join报文,创建RPT树
  • RPF检查地址为RP的IP地址

AR1的(S,G)表项中下游接口并没有G0/0/1

AR3的(S,G)表项下游接口G0/0/1

所以PC2的组播转发路径为AR1->AR2->AR3->AR6

思考:组播转发树是什么样的(由于AR6配置了SPT不切换)

SPT切换

取消AR5、AR6上的SPT不切换配置

pimundo spt-switch-threshold infinity 
#
  • 组成员端DR路由器收到组播流量到一定阈值后,进行SPT切换
  • 默认情况下,华为的SPT切换的流量阈值为0,所以当组播流量下来时,会发生SPT切换

SPT切换过程

当组成员端DR检测到组播报文的转发速率超过阈值:

  • 组成员端DR向源端DR逐跳发送(S,G)Join报文,创建SPT,沿途生成(S,G)表项(包含下游接口)
  • SPT建立后,组成员端DR向RP发送剪枝报文,修剪(S,G)表项的下游接口
  • 如果组播流量不经过RP,则RP向源端DR逐跳发送剪枝报文,修剪(S,G)表项的下游接口

想组播源端DR发送Join报文

SPT切换后,流量不经过RP,RP向源端DR发送剪枝

可以看到RP上的(S,G)表项下游接口为空,被修剪

AR1上的下游接口为连接AR3的接口

AR3上(S,G)表项出现下游接口

切换后的SPT

http://www.lryc.cn/news/354423.html

相关文章:

  • 一分钟揭秘面试官真实意图,稳拿offer的面试秘诀!
  • 【源码】2024心悦搜剧源码百万级网盘资源
  • 燃数科技前端25-40K*14薪一面超简单,下周二面啦
  • 读人工智能时代与人类未来笔记14_管控人工智能
  • 高效并发编程:Java阻塞队列深度解析与最佳实践
  • 会话机制:Session
  • MySQL中, 自增主键和UUID作为主键有什么区别?
  • 机器人与AI:结合应用与未来展望
  • PyTorch学习笔记:新冠肺炎X光分类
  • 【Python】 XGBoost模型的使用案例及原理解析
  • Java中print,println,printf的功能以及区别
  • vue3+electron+typescript 项目安装、打包、多平台踩坑记录
  • 实际案例分析
  • JAVA实现图书管理系统(初阶)
  • 【Torch学习笔记】
  • LeetCode算法题:42. 接雨水(Java)
  • LINGO:存贮问题
  • 《微服务王国的守护者:Spring Cloud Dubbo的奇幻冒险》
  • (九)npm 使用
  • Thinkphp5内核宠物领养平台H5源码
  • 一、Elasticsearch介绍与部署
  • NL6621 实现获取天气情况
  • SpringCloud配置文件bootrap
  • 经典面试题:进程、线程、协程开销问题,为什么进程切换的开销比线程的大?
  • 鸿蒙 DevEco Studio 3.1 Release 下载sdk报错的解决办法
  • QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo
  • 设计一套Kafka到RocketMQ的双写+双读技术方案,实现无缝迁移!
  • Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)
  • Makefile学习笔记15|u-boot顶层Makefile01
  • C++笔记之Unix时间戳、UTC、TSN、系统时间戳、时区转换、local时间笔记