IP组播5_PIM-SM(ASM)详解

news2025/1/12 5:53:16

目录

1.PIM-SM(ASM)简介

2.PIM-SM(ASM)工作原理

2.1 什么是DR?

2.2 什么是RP?

2.2.1 静态RP

2.2.2 动态RP

2.3 组播源注册和RPT建立

2.4 SPT切换

3. PIM-SM(ASM)实验

3.1 PIM-SM常用配置命令

3.2 PIM-SM(ASM)实验配置步骤

3.3 PIM-SM(ASM)实验效果


1.PIM-SM(ASM)简介

PIM-SM同时支持ASM和SSM两种模型,PIM-SM(ASM)模型应用与成员规模大和稀疏PIM网络,PIM-SM(ASM)引入了RP(汇聚点),组播源需要向RP注册才能正常转发组播数据,组播组成员加入组播组后,组成员端DR需要通过Join报文跟RP建立RPT,组播数据通过RPT进行转发。

2.PIM-SM(ASM)工作原理

2.1 什么是DR?

DR(指定路由器)是指和RP进行通信完成一些特定功能的PIM路由器,DR可以分为源端DR和组成员端DR。

  • 源端DR

源端DR是指和组播源在一个网段的PIM路由器,源端DR通过PIM Register报文向RP注册组播源,RP向源端DR应答PIM Register ack报文,源端DR和RP之间形成SPT树,源端DR会通过SPT转发组播源的组播数据至RP。

  • 组成员端DR

组成员段DR是指和组播组成员在一个网段的PIM路由器,组成员DR发送PIM Join报文给RP,Join报文经过的PIM路由器会形成RPT树,RP通过RPT树转发组播数据至组成员DR,组成员DR转发组播数据至组播组成员。

图 1 DR简介

2.2 什么是RP?

RP简单的理解是指一个接口的IP地址。

RP是用于处理组播源注册和组播组成员加入的PIM路由器,RP相当于PIM-SM(ASM)网络的中心。

RP配置有两种方式:静态RP和动态RP。

需要注意的一点是一个组播组只能对应一个RP。

2.2.1 静态RP

静态RP需要手动配置,每台PIM路由器都得手动配置静态RP,这样整个PIM网络的PIM路由器才能知道RP具体位置。

静态RP采用static-rp命令配置,配置静态IP需要注意以下几点:

  • 静态RP可以为物理接口,环回接口,虚拟接口。
  • RP的IP地址必须是在整个PIM-SM(ASM)网络可以访问的IP地址,否则会出现网络异常。

静态RP的优缺点如下:

优点:

  • RP 的位置是确定的,可以提高网络的可靠性。
  • 静态 RP 配置简单,不需要进行选举过程,从而减少网络拥塞和延迟。

缺点:

  • 静态 RP 的位置是固定的,可能会导致网络的不灵活。
  • 静态 RP 配置繁琐,需要手动配置,从而增加了网络管理员的工作量。
  • 静态 RP 可能会出现流量不均衡的情况,从而影响网络的性能。

 图 2 静态RP原理

2.2.2 动态RP

 动态RP是通过BSR(自举路由器)向整个PIM-SM网络发布的,BSR会收集整个PIM-SM网络信息,然后将收集到的PIM-SM网路信息汇总,发布给所有的C-RP(候选RP,参与RP竞选的PIM路由器),C-RP根据收到的汇总信息,计算出RP是谁,整个PIM-SM网络的PIM路由器就能知道RP的位置。

PIM-SM(ASM)角色

动态RP四个重要角色:BSR,C-BSR,RP,C-RP。

BSR:自举路由器,BSR用于收集C-RP信息,汇总后通过Bootstrap报文泛红指所有PIM路由器,

PIM路由器收到Bootstrap报文后,计算出RP是谁,确定RP位置。

C-BSR:候选BSR,C-BSR会参加BSR竞选,竞选胜利的C-BSR会成为BSR,同时C-BSR也是一种BSR的备选方案,用于在BSR失效时快速选择一个新的BSR。

RP:汇聚点,它用于转发组播数据,PIM-SM域内的所有成员都需要知道RP的地址。

C-RP:候选汇聚点,C-RP会把参与RP竞选的信息发送给BSR,由BSR汇总RP竞选信息泛洪指所有PIM路由器计算出RP。C-RP也用于在RP失效时快速选择一个新的RP。

动态RP优缺点如下:

 优点:

  • 可以实现动态的 RP选举,从而提高网络的灵活性和可靠性。
  • 可以实现组播流的动态加入和离开,从而提高网络的可扩展性。
  • 可以实现组播流的负载均衡,从而提高网络的性能。

缺点:

  • 在动态 RP 选举过程中,可能会出现网络拥塞和延迟。
  • 在组播流的加入和离开过程中,可能会导致数据包的丢失。
  • 在负载均衡过程中,可能会出现流量不均衡的情况,从而影响网络的性能。

学习动态RP一定得清楚以下两个问题的原理:

  • BSR如何产生?
  • RP如何产生?

BSR选举

PIM-SM初始化时,需要手动通过c-bsr命令指定C-BSR,指定的C-BSR会参与BSR选举,选举的过程是C-BSR向全网发送Bootstrap报文,所有的PIM路由器都会收到Bootstrap报文,收到Bootstrap报文的PIM路由器会比较Bootstrap报文信息并计算出BSR,从而知道BSR位置。

 图 3 BSR选举原理

RP竞选

PIM-SM网络初始化时,通过c-rp命令指定C-RP,候选RP会向BSR发送Advertisement报文,BSR收到报文后,汇总Advertisement信息,再把汇总信息通过Bootstrap报文发送给所有的PIM路由器,PIM路由器会根据汇总信息并计算出RP,从而整个网络都知道RP位置。

图 4 RP竞选原理

2.3 组播源注册和RPT建立

 RPT创建通过IGMPv2组播组成员触发,最后一跳路由器收到IGMPv2报告报文后,会向RP发送PIM Join报文,最后一跳路由器到RP之间的路由器收到PIM Join报文后会建立组播路由表项,最后形成RPT树。

组播源发送组播数据给第一跳路由器,第一跳路由器通过PIM Register(注册)报文向RP注册,RP应答stop Register(停止注册)报文至第一跳路由器,第一跳路由器和RP之间形成SPT。

组播源数据SPT发送给RP,RP再RPT转发组播数据至最后一跳路由器,最后一跳路由器将组播数据转发给组播组成员。

 图 5 RPT建立原理

2.4 SPT切换

SPT切换是指删除RPT采用SPT转发组播报文的过程。

当达到SRT切换的条件时(组成员端DR检测到组播报文转发速率超过阈值),组成员端DR发送Join报文至源端DR,Join报文经过的PIM路由器会生成SPT树,用于转发组播报文,组成员段DR生成组播转发路由表后,会向RP发送剪枝报文,删除组播路由下游接口表项,完成RPT剪枝,这样SPT切换完成。

SPT切换的目的是减轻RP转发组播数据的压力。

 图 6 SPT切换原理

3. PIM-SM(ASM)实验

3.1 PIM-SM常用配置命令

 表 1 PIM-SM常用配置命令

3.2 PIM-SM(ASM)实验配置步骤

步骤1:接口IP地址配置

步骤2:OSPF配置

步骤3:接口PIM配置

步骤4:接口IGMP配置

步骤5:RP配置,静态RP或者动态配置

步骤5:组播源配置

步骤6:主机加入组播组配置

3.3 PIM-SM(ASM)实验效果

 图 7 PIM-SM(ASM)实验效果

完整实验资料下载方法:

关注博主,博主首页查看资源,下载“IP组播_PIM-SM(ASM)实验”。

创作不易,大家评论,收藏,转发支持一下,谢谢。

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

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

相关文章

【力扣刷题 | 第五天】

目录 前言: 15. 三数之和 - 力扣(LeetCode) 18. 四数之和 - 力扣(LeetCode) 结束: 前言: 今天两道题类型相似,解法思路一致,都利用了双指针技术。 15. 三数之和 - 力…

PostgreSQL数据库分区裁剪——enable_partition_pruning

在PostgreSQL 10版本之前,PostgreSQL数据库实际上是没有单独的创建分区表的DDL语句,都是通过表继承的原理来创建分区表,这样使得在PostgreSQL中使用分区表不是很方便,到PostgreSQL 10之后,PostgreSQL扩展了创建表的DDL…

idea插件开发-PSI

程序结构接口(Program Structure Interface)简称PSI,PSI是IDEA插件开发最复杂的一块内容,后续会有大量实战来强化理解此处的知识。PSI是IntelliJ 平台中的一个层,负责解析文件并创建语法和语义代码模型,为平…

Linux 导入MySQL数据库(四)

文章目录 一、导出数据库二、导入数据库(方法一)1. 通过FinalShell连接服务器,登录mysql:2. 新建数据库3. 使用新建的数据库4. 对数据库进行编码设置5. 从路径中导入 SQL 文件数据 三、导入数据库(方法二)【…

为uni-cloud(Dcloud国产之辉)声明!

目录 uni-cloud的介绍 uni-cloud与uni-app的关系 uni-cloud与云原生的关系 uni-cloud的开发优点 uni-cloud与HBuilder X结合的优越性 uni-cloud高效解决"高并发" uni-cloud与阿里云、腾讯云完美结合 uni-cloud背后庞大的插件市场 美中不足 加油&#xff01…

chatgpt赋能python:Python代码保存:如何保存你的Python代码?

Python代码保存:如何保存你的Python代码? Python被广泛认为是学习编程的入门语言之一,因为它易于学习和使用,并且拥有大量的库和框架来处理各种任务。 在编写Python代码时,你可能会像大多数编程任务一样,…

实践项目三: 校园兼职平台(合作重构版)

项目说明 1 据了解,目前在校大学生80%以上有做兼职的需求,兼职打工已经不仅仅是经济困难的学生赚取生活费用的途径。调查显示,全球经济危机对就业产生冲击,用人单位对人员的社会实践能力要求提高,大学期间必要的社会实…

Java学习笔记(StringJoiner和集合)

StringJoiner StringJoiner与StringBuilder一样,也可以看成是一个容器,创建之后的内容是可变的 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用 构造方法: 方法名 说明 pub…

四、HAL_驱动机械按键

1、开发环境。 (1)KeilMDK:V5.38.0.0 (2)STM32CubeMX:V6.8.1 (3)MCU:STM32F407ZGT6 2、机械按键简介 (1)按键内部是机械结构,也就是内部是没有电路的。按键按下内部引脚导通,松开内部断开。 3、实验目的&原理…

Git、Github、Gitee的区别

⭐作者主页:逐梦苍穹 ⭐所属专栏:Git 目录 1、Git2、Gitee3、GitHub 什么是版本管理?   版本管理是管理各个不同的版本,出了问题可以及时回滚。 1、Git Git是一个分布式版本控制系统,用于跟踪和管理代码的变化。它是…

开源代码分享(2)—综合能源系统零碳优化调度

参考文献: Optimal dispatch of zero-carbon-emission micro Energy Internet integrated with non-supplementary fired compressed air energy storage system | SGEPRI Journals & Magazine | IEEE Xplore 1.引言 全球能源危机和环境污染的双重压力促使能量…

mysql 删表引出的问题

背景 将测试环境的表同步到另外一个数据库服务器中,但有些表里面数据巨大,(其实不同步该表的数据就行,当时没想太多),几千万的数据!! 步骤 1. 既然已经把数据同步过来的话&#x…

chatgpt赋能python:Python怎么从1加到100

Python怎么从1加到100 Python是一种面向对象的编程语言,随着人工智能和大数据技术的流行,Python也变得越来越受欢迎。Python有很多优点,其中之一就是易于学习和使用。在这篇文章中,我们将介绍如何用Python从1加到100。 前置知识…

还在为浏览量焦虑吗?为何不用R语言来做归因分析找出痛点

一、引言 大家好,我是一名博客作者,同时也是一个有着浏览量焦虑症的患者。每次发一篇新的博客文章,我总是不停地刷新页面,看看有多少人来访问、阅读和留言。当发现访问量不如自己预期时,我就会有一种被冷落、被忽视的…

【DFT】MBIST (1) MBIST基础

MBSIT基础 1. 存储器测试2. 存储器结构3. 存储器故障模型3.1 固定故障(SAF)3.2 转换故障(TF)3.3 耦合故障(CF)3.4 桥接和状态耦合故障 4. 功能测试方法4.1 March 测试算法4.2 March-C 算法4.3 MATS 算法4.4 其他的 March 测试 5. MBSIT方法5.1 简单的 March MBIST1. 简单的Marc…

灵动超值系列FTHR-G0140开发板

文章目录 引言MM32G0140微控制器FTHR-G0140电路板MM32G0140最小核心系统供电系统可编程按键和小灯扩展插座 MindSDK软件开发平台 引言 2023年上半年的一些活动现场(包括但不限于4月在苏州的全国高校电子信息类专业教学论坛、5月和6月在同济大学、四川大学、南京大学…

Vue3+Vite+TypeScript常用项目模块详解

目录 1.Vue3ViteTypeScript 概述 1.1 vue3 1.1.1 Vue3 概述 1.1.2 vue3的现状与发展趋势 1.2 Vite 1.2.1 现实问题 1.2 搭建vite项目 1.3 TypeScript 1.3.1 TypeScript 定义 1.3.2 TypeScript 基本数据类型 1.3.3 TypeScript语法简单介绍 2. 项目配置简单概述 2.…

chatgpt赋能python:如何在Python中二次运行同一个命令语句

如何在Python中二次运行同一个命令语句 如果您是一个熟练的Python开发者,一定会遇到必须二次运行同一个命令语句的情况。在本文中,我们将探讨Python中的几种方法来实现这一目标。 方法1:使用Python Shell Python Shell是Python解释器的一个…

R 语言学习笔记

1. 基础语法 赋值 a 10; b <- 10;# 表示流向&#xff0c;数据流向变量&#xff0c;也可以写成10 -> b创建不规则向量 不用纠结什么是向量&#xff0c;就当作一个容器&#xff0c;数据类型要相同 a c("我","爱","沛")创建一定规则的向…

编译原理 | 课程设计 — 语法分析

第1关&#xff1a;使用C/C语言编写PL/0编译程序的语法分析程序 1、任务描述 基于第二章的词法分析程序&#xff0c;使用C/C语言编写PL/0编译程序的语法分析程序。 2、编程要求 完成上述编程任务&#xff0c;将C/C语言源程序复制粘贴到右侧代码编辑器&#xff0c;点击“评测”按…