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

news/2024/5/18 14:41:45/文章来源:https://blog.csdn.net/m0_49864110/article/details/127083863

目录

扩散、剪枝机制

嫁接机制

状态刷新机制

断言机制


采用“推(Push)”的方式转发组播报文并生成组播表,建立SPT(最短路径树)转发组播报文。它假定每条链路都有接收者,在每条链路上都直接推送组播流量。

扩散、剪枝机制

扩散、剪枝的作用

通过扩散、剪枝机制,建立从组播源到组成员的SPT

扩散过程——通过组播流量进行扩散

PIM-DM假设网络中的所有主机都准备接收组播数据,为实现所有主机都能够接收到组播数据,使用扩散机制实现

  1. 启动了PIM-DM协议的路由器在接收到组播流量后,首先对组播流量进行RPF检测
  2. RPF检查通过后,创建(S,G)表项,并将数据向所有下游接口转发,这个过程为扩散
  3. RPF检查没有通过,则丢弃报文不再继续扩散
  4. 只要路由器组播表项的下游接口为非空,报文就会继续扩散下去

通过RFC检测可知,全网设备必须知道去往组播源的路径,否则RFC检测失败,扩散结束

剪枝过程——通过Prune报文进行剪枝

当下游没有组播成员(即没有成员加入组播组),为避免带宽浪费,会使用剪枝机制

  1. 当报文扩散到末端路由器后,路由器发现没有直连组成员或者除RPF接口之外的接口也不存在PIM邻居,则认为下游接口Null,向上游设备发送剪枝报文。
  2. 上游设备收到剪枝报文后,将自身(S,G)表项中该下游接口剪除,被剪除的接口会自动关联一个210s的剪枝计时器(210s内不再下发该组组播流量,210s后被剪掉的接口会重新出现在下游接口列表中,组播数据会再次向该接口扩散,一直重复)——此处是不考虑状态刷新机制的情况
  3. 如果此上游设备的下游接口都被剪除(即下游接口为Null),会触发路由器继续沿着组播源的RPF发送剪枝
  4. 如果此上游设备(S,G)表项还存在其它下游接口,即下游接口非空,则剪枝结束

Prune Pending Timer   延缓剪枝计数器     Prune Timer    剪枝计时器

 

注意

  • 启用PIM-DM/SM协议的接口,收到IGMP的报告报文,会自动创建(*,G)表项。
  • 当有(*,G)表项时,创建(S,G)表项的下游接口直接从对应的(*,G)的下游接口复制过来。
  • DM模式不用关注(*,G)表项,DM模式通过(S,G)表项进行组播流量的转发

嫁接机制

嫁接的作用

通过扩散和剪枝机制可知,在被剪枝的路由器上,如果其下游接口出现组播接收者,接收者需要等待最长210s才可以等到组播流量扩散,获取组播数据

而嫁接机制就是用来降低用户收到组播数据的等待时间,在剪枝定时器210超时前帮助用户收到组播数据

嫁接过程——通过Graft报文进行嫁接

  1. 当被剪枝的路由器从下游接口收到IGMP成员报告后,根据报告报文中的组地址,查询自身的(S,G)表项是否有对应的组播源S信息。
  2. 如果不存在对应的(S,G)表项,则无法实现嫁接。如果存在对应的(S,G)表项,则会在自身的(S,G)表项添加下游接口,并主动向上游RPF路由器发送Graft报文,并启动嫁接定时器(3s收不到嫁接确认报文会一直发送)
  3. 上游路由器收到Graft报文后,若下游接口处于还处于剪枝状态,则会把被剪除的接口重新添加到下游接口列表,引导组播流量下发,并回应嫁接确认报文。若下游接口已经处于转发状态,则直接回应嫁接确认报文。
  4. 若上游路由器在在收到Graft报文之前的下游接口为Null,收到后变为了非空,则会继续向上游发送Graft报文,依次类推
  5. 若上游路由器在在收到Graft报文之前的下游接口就为非空,则不再继续向上发送Graft报文。
  • 即:剪枝到哪里,就嫁接到哪里

注意

由嫁接过程可知,需要保证在组播源活跃期间,(S,G)表项不会老化

此要求通过周期性的 扩散和剪枝 来保证((S,G)表项老化时间210,组播流量210s扩散一次 )

状态刷新机制

状态检测机制简称SR,属于PIM DM的可选功能(仅PIM v2支持)

此功能通过Hello报文进行协商,默认华为支持PIM DM状态刷新机制

状态检测机制的作用

  • 在PIM DM网络中,被剪枝的接口会进行周期扩散组播数据来维持剪枝状态,如果下游没有接收者,那这种扩散对于网络来说就增加了负荷
  • 状态刷新机制通过周期性的扩散SR控制报文(携带组播源与组播组信息)来取代周期扩散组播数据,使已剪枝的接口继续保持剪枝状态

注意

  • 当状态刷新机制开启后(只需要在连接组播源的接口上开启状态检测机制),只有初次扩散是组播数据,后续扩散都是SR控制报文
  • 当组播源不活跃时,不再产生状态刷新报文
  • 状态刷新报文是逐跳扩散的,每经过一跳,源接口IP的都是出接口IP,目标地址一直为224.0.0.13

状态刷新过程——通过SR报文进行状态刷新

  1. 初次扩散之后,离组播源最近的第一跳路由器会以60s周期性的产生状态刷新报文,并向全网扩散。
  2. 当设备收到SR报文后,判断报文是否从RPF邻居发来并从RPF接口接收的,如果不是,则丢弃。
  3. 如果通过RPF检测,并且有接口已经被剪除,则SR报文会复位接口的剪枝计时器(210s),使得接口一直处于剪枝状态,并向下游邻居扩散。如果没有接口被剪除,则直接此报文向下流转发。

断言机制

在网络中,可能存在相同的组播报文被转发了多份的情况,加重了网络负担,此时就需要断言机制来解决

断言机制如何解决此问题

在Assert环境中,会选举出一个Winner,只有Winner才会发送状态刷新报文

触发断言机制的条件

  • 下游接口在发出组播数据的同时,又收到了同样的组播数据
  • 在下游接口收到了Assert(断言)报文或者状态刷新报文

 

断言机制的工作过程——发送Assert报文实现(以上图为例子)

  1. 当触发断言机制后,R1和R2都认为自己是Winner,分别发送Asssert报文(报文携带了各自路由表中自身到组播源的路由协议优先级和度量值)
  2. R1和R2收到对方发送的Assert报文后,提取出路由协议优先级和度量值进行对比,选举出Winner,其余的为Loser(Winner只有一个,Loser可以有多个)。成为Winner的设备继续发送组播数据
  3. 当R1成为Winner后,R2作为Loser会自动剪除自己的下游接口并立即发送一份剪枝报文给Winner,同时关联一个断言计时器Assert Timer(180s超时前接口会一直保持剪枝状态)。
  4. 断言计时器结束后会再次进行断言

对比原则

  • 单播路由协议优先级高的成为Winner(值越小越优)
  • 度量值越小的成为Winner
  • 自身接口IP地址大的称为Winner

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业

🌩️ 精彩专栏推荐👇🏻👇🏻👇🏻 💂 作者主页: 【进入主页—🚀获取更多源码】 🎓 web前端期末大作业: 【📚HTML5网页期末作业 (1000套…

Oracle 常用的经典SQL查询

/*1、查看表空间的名称及大小*/ select t.tablespace_name, round(sum(bytes / (1024 * 1024)), 0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name d.tablespace_namegroup by t.tablespace_name; /*2、查看表空间物理文件的名称及大小*/ select…

vue3 模版语法

App.vue 注释掉首页的文本内容&#xff0c;只剩下对应的图标即可。 <div class"wrapper"><!-- <HelloWorld msg"You did it!day day up 自己更新" /> --></div></header><main><!-- <TheWelcome /> -->&…

“发展与治理”2022元宇宙共治大会成功举行

2022年9月24日下午&#xff0c;“发展与治理”2022元宇宙共治大会暨《元宇宙发展与治理》课题征求意见会、元宇宙产业委数字藏品发展研讨会议&#xff0c;在央链直播平台线上召开&#xff0c;本次会议汇聚众多高科技产业引领者和建设者&#xff0c;以及数权藏品众多流量平台共聚…

Navicat设置utf8mb4后保存emoji仍然报错的解决方法

一、前言 最近遇到一个问题&#xff0c;需要查库并导出报表&#xff1b; 由于报表比较特殊&#xff0c;程序没有实现&#xff0c;因此准备先查询生产库、复制为insert语句&#xff0c;然后在本地Navicat里执行、处理、再导出xls&#xff0c;这样快一些。 但是&#xff0c;没想…

SwiftUI AR教程之如何使用 SwiftUI 按钮在 RealityKit 中切换前后摄像头(教程含源码)

iOS AR 开发快速指南 如果您正在为 iOS 构建增强现实体验,您可能希望让您的用户能够在前置(又称“自拍”或“正面”)摄像头和后置(又称“世界侧”)摄像头之间切换。这是有关如何将此功能添加到您的应用程序的基本教程。 基本设置 首先,让我们从 Xcode 中的 Augmented …

Nginx系列之反向代理过程

nginx通过proxy模块对上游服务使用http/https协议进行反向代理&#xff0c;下图是反向代理处理过程 在读取客户端发送的请求时&#xff0c;如果proxy_request_bufferringon,那么读取完整的包体后再发送给后端服务&#xff0c;如果 proxy_request_bufferringoff&#xff0c;则是…

DDL操作表-查询和DDL操作表-创建

DDL操作表-查询 1.C(Create):创建 2.R(Retrieve):查询 3.U(Update):修改 4.D(Delete):删除 R(Retrieve):查询 查询某个数据库中所有的表名称show tables;查询表结构desc 表名; DDL操作表-创建 C(Create):创建 1.语法:create table 表名(列名  数据类型1,列…

指针初阶详解

目录序言地址指针是什么指针和指针变量为什么定义指针指针指针的大小类型指针的解引用指针-整数指针运算指针 - 指针指针比较野指针二级指针指针数组序言 指针这个模块是C语言里面比较难理解的的,学习成本倒是不高,就是有点费脑子.我们这里重点关注什么是指针和指针的用法.这篇…

Fast.ai 的新课来了,给你详细介绍 Stable Diffusion 原理

最近跟学生们学了个新词儿&#xff0c;叫做「双厨狂喜」。一般形容两个知名创作者合作出来的作品 ------ 例如视频或者直播等 ------ 很受大伙儿欢迎。这次&#xff0c;告诉你一个好消息&#xff0c;fast.ai 要和 Huggingface, Stability.ai&#xff08;Stable Diffusion 作者之…

[BJDCTF2020]EasySearch

解题&#xff1a; 进入环境只有 一个登录框&#xff0c;一般我的思路都是先用 万能密码登录一下&#xff0c;不行的话就扫源码 发现 index.php.swp 文件 <?phpob_start();//加密function get_hash(){$chars ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234…

PDF转word格式如果失败了,可以这样做

PDF是可以直接转成Word格式&#xff0c;方法也很简单&#xff0c;只需要把PDF另存为就可以了。 首先&#xff0c;在PDF的【文件】下选择【另存为】&#xff0c;然后选择新的保存路径。 出现新的对话框后&#xff0c;在【保存类型】那里选择【Word】格式&#xff0c;再点击保存…

连接打印机出现错误0X00000709怎么解决?

在使用打印机的时候&#xff0c;出现系统提示&#xff1a;操作无法完成&#xff08;错误0x00000709&#xff09;&#xff0c;再次检查打印机名称&#xff0c;并确保打印机已连接到网络。该怎么办呢&#xff1f;下面小编总结了这个问题的几种解决办法&#xff0c;总有一种适合你…

SpringCloud2——Nacos配置管理

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

基于html和Node.js的网页音乐播放器设计

目录 实验报告 1 【实验工具】 1【运行方法】 1【文件说明】 1【使用说明】 2 没有生成目录时的页面 3 生成目录后&#xff0c;自动播放歌曲 4 显示状态的歌词与目录 5 隐藏状态的歌词与目录 6 5.【实现方式】 7 1.目录生成&#xff1a; 7 2.切换歌曲 7 3.获取歌词 7 4.单曲循…

AI大佬怼怼怼的背后,究竟暗藏哪些玄机?

整理 | 杨阳出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;四年前&#xff0c;纽约大学教授Marcus为反驳深度学习三巨头之一Bengio的“有意识先验”和“解纠缠观念”理论&#xff0c;发表了一篇名为《Deep Learning: A Critical Appraisal》的论文&#…

91-Lucene+ElasticSeach核心技术

LuceneElasticSeach什么是全文检索&#xff1a; 数据分类&#xff1a; 我们生活中的数据总体分为两种&#xff1a;结构化数据和非结构化数据 结构化数据&#xff1a;指具有固定格式或有限长度的数据&#xff0c;如数据库&#xff0c;元数据等 非结构化数据&#xff1a;指不…

Springboot+采用协同过滤算法的家政服务平台的设计与实现 毕业设计-附源码260839

Springboot家政服务平台 摘 要 协同过滤算法是一种较为著名和常用的推荐算法&#xff0c;它基于对用户历史行为数据的挖掘发现用户的喜好偏向&#xff0c;并预测用户可能喜好的产品进行推荐。基于协同过滤算法的家政服务平台就是典型的信息管理平台,它主要通过使用Springboot框…

GAN Step By Step (一步一步学习GAN)

GAN Step By Step 心血来潮 GSBS&#xff0c;顾名思义&#xff0c;我希望我自己能够一步一步的学习GAN。GAN 又名 生成对抗网络&#xff0c;是最近几年很热门的一种无监督算法&#xff0c;他能生成出非常逼真的照片&#xff0c;图像甚至视频。GAN是一个图像的全新的领域&#…

基于Netty,从零开发一个im即时通讯

业务场景&#xff1a; 本次实战就是模拟微信的IM聊天&#xff0c;每个客户端和服务端建立连接&#xff0c;并且可以实现点对点通信&#xff08;单聊&#xff09;&#xff0c;点对多点通信&#xff08;群聊&#xff09;。 设计思路&#xff1a; 我们要实现的是点&#xff08;客户…