计算机网络:网络层 —— 多播路由选择协议

文章目录

      • 多播路由选择协议
        • 多播转发树
        • 构建多播转发树
          • 基于源树的多播路由选择
            • 建立广播转发树
            • 建立多播转发树
          • 组共享树的多播路由选择
            • 基于核心的生成树的建立过程
        • 因特网的多播路由选择协议

多播路由选择协议

仅使用 IGMP 并不能在因特网上进行IP多播。连接在局域网上的多播路由器还必须和因特网上的其他多播路由器协同工作,以便把 IP 多播数据报用最小的代价传送给所有的多播组成员,这就需要使用多播路由选择协议

多播转发树

多播路由选择协议的主要任务是:在多播路由器之间为每个多播组建立一个多播转发树

  • 多播转发树连接多播源和所有拥有该多播组成员的路由器。

  • IP多播数据报只要沿着多播转发树进行洪泛,就能被传送到所有拥有该多播组成员的多播路由器。

  • 之后,在多播路由器所直连的局域网内,多播路由器通过硬件多播,将IP多播数据报发送给该多播组的所有成员。

![[多播转发树.png]]

针对不同的多播组需要维护不同的多播转发树,而且必须动态地适应多播组成员的变化,但此时网络拓扑并不一定发生变化,因此多播路由选择协议要比单播路由选择协议(例如 RIP、OSPF等)复杂得多

  • 即使某个主机不是任何多播组的成员,它也可以向任何多播组发送多播数据报

  • 为了覆盖多播组的所有成员,多播转发树可能要经过一些没有多播组成员的路由器(例如上图中的 R2)

构建多播转发树

目前有以下两种方法来构建多播转发树:

  • 基于源树(Source·BaseTree)多播路由选择

  • 组共享树(Group-Shared Tree)多播路由选择

基于源树的多播路由选择

基于源树的多播路由选择的最典型算法是反向路径多播(Reverse Path Multicasting,RPM)算法。

RPM 算法包含以下两个步骤:

  1. 利用反向路径广播(Reverse Path Broadcasting,RPB)算法建立一个广播转发树

  2. 利用剪枝(Pruning)算法,剪除广播转发树中的下游非成员路由器,获得一个多播转发树

建立广播转发树

要建立广播转发树,可以使用洪泛(Flooding)法

路由器 R1 向其邻居路由器 R3 发送广播分组,R3 收到后,复制该广播分组,并向自己的所有下游邻居路由器转发,即向除 R1 外的所有邻居路由器转发。

在这里插入图片描述

若网络中存在环路,使用洪泛法会产生严重的问题,即广播分组的一个或多个副本将在环路中永久兜圈。最终将导致该网络中产生大量的广播分组,使得网络带宽被完全占用。

而利用反向路径广播RPB算法生成的广播转发树不会存在环路,因此可以避免广播分组在环路中兜圈。

RPB 中“反向路径”的意思是:在计算最短路径时把源点当作终点

RPB 算法的要点是:每一台路由器在收到一个广播分组时,先检查该广播分组是否是从源点经最短路径传送来的(即转发分组的路由器是否在自己到源点的最短路径上)

  • 若是,本路由器就从自己除刚才接收该广播分组的接口的所有其他接口转发该广播分组。

  • 否则,丢弃该广播分组。

  • 如果本路由器有好几个邻居路由器都处在到源点的最短路径上,也就是存在好几条同样长度的最短路径,那么只能选取一条最短路径。选取的规则是,这几条最短路径中的邻居路由器的IP地址最小的那条最短路径

![[RPB算法生成的广播转发树.png]]

![[RPB算法生成的广播转发树2.png]]
经过上述过程,最终可以得出转发广播分组的广播转发树,以后就按该广播转发树转发广播分组,这样就避免了广播分组兜圈子,同时每一个路由器也不会收到重复的广播分组
![[RPB算法生成的广播转发树3.png]]

建立多播转发树
  • RPB 里然很好地解决了转发环路的问题,但只是实现了广播,要实现真正的多播,还要将 R8 这样没有多播组成员(使用IGMP来探测)、并且也没有下游路由器的叶节点从广播转发树上剪除。就可实现多播转发树

  • 尽管 R2 没有多播组成员,但也要保留 R2 以确保多播转发树的连通性

假设需要剪除 R8,则 R8 向其上游路由器 R5 发送一个剪枝报文,将自己从多播转发树上剪除

![[剪枝报文.png]]

如果被剪枝的路由器,通过IGMP又发现了新的多播组成员,则会向上游路由器发送一个嫁接报文,并重新加入到多播转发树中

![[嫁接报文.png]]

组共享树的多播路由选择

组共享树多播路由选择采用基于核心的分布式生成树算法来建立共享树。该方法在每个多播组中指定一个核心(core)路由器,以该路由器为,建立一棵连接多播组的所有成员路由器的生成树,作为多播转发树。

每个多播组中除了核心路由器,其他所有成员路由器都会向自己多播组中的核心路由器单播加入报文。加入报文通过单播朝着核心路由器转发,直到它到达已经属于该多播生成树的某个节点或者直接到达该核心路由器

加入报文所经过的路径,就确定了一条从单播该报文的边缘节点到核心路由器之间的分支,而这个新分支就被嫁接到现有的多播转发树上。

基于核心的生成树的建立过程

假设源主机给该多播组发送了一个多播分组,当 R1 收到后将该多播分组封装到目的地址为核心路由器 R5 的单播分组中,将该单播分组发送给 R5。当核心路由器 R5 收到分组后,将被封装在单播分组中的多播分组解封出来,在多播转发树上洪泛转发

在这里插入图片描述

因特网的多播路由选择协议

目前还没有在整个因特网范围使用的多播路由选择协议。下面是一些建议使用的多播路由选择协议:

  • 距离向量多播路由选择协议(Distance Vector Multicast Routing Protocol, DVMRP) [RFC 1075]

  • 开放最短路径优先的多播扩展(Multicast Extensions to OSPF, MOSPF)[RFC 1585]

  • 协议无关多播-稀疏方式(ProtocolIndependentMulticast-Sparse Mode,PIM-SM)[RFC 2362]

  • 协议无关多播-密集方式(Protocol Independent Multicast-Dense Mode,PIM-DM)[RFC 3973]

  • 基于核心的转发树(Core BasedTree,CBT)[RFC 2189,RFC 2201]

尽管因特网工程任务组 IETF 努力推动着因特网上的全球多播主干网(Multicast Backbone On the Intemnet,MBONE)的建设,但至今在因特网上的 IP 多播还没有得到大规模的应用。

主要原因是:改变一个已成功运行且广泛部署的网络层协议是一件极其困难的事情。目前 IP 多播主要应用在一些局部的园区网络、专用网络或者虚拟专用网中。

P2P 技术的广泛应用推动了应用层多播技术的发展,许多视频流公司和内容分发公司通过构建自己的应用层多播覆盖网络来分发它们的内容。但上述多播路由选择协议的算法思想在应用层多播中依然适用。

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

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

相关文章

例行性工作

1、单一执行------at-----仅处理执行一次就结束了 1.1工作过程 /etc/at.allow,写在该文件的人可以使用at命令/etc/at.deny,黑名单两个文件如果都不存在,只有root能使用 1.2命令详解------命令格式:at [参数] [时间] 2、循环执行…

使用Kafka构建大规模消息传递系统

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 使用Kafka构建大规模消息传递系统 引言 Kafka 简介 安装 Kafka 创建主题 生产者 消费者 高级特性 分区 持久化 消费者组 消息确认…

【sqlmap使用】

sqlmap简介 sqlmap 目录结构 sqlmap常用参数 sqlmap实现注入 测试注入点,检测到注入点后,直接爆数据库名 python sqlmap.py –u http://172.16.12.2/7/9/strsql.php --data "usernameadmin" --dbs注意sqlmap在使用过程中可能会出现几个需要…

【java】java的基本程序设计结构07-字符串

字符串 1. 创建字符串 最简单的: String str "hello"; 用构造函数创建字符串: String str2new String("hello"); String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上: 注意: String 类…

数组排序简介-基数排序(Radix Sort)

基本思想 将整数按位数切割成不同的数字,然后从低位开始,依次到高位,逐位进行排序,从而达到排序的目的。 算法步骤 基数排序算法可以采用「最低位优先法(Least Significant Digit First)」或者「最高位优先…

w~Transformer~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12419881 #Batch Normalization 本文聚焦于Batch Normalization,Layer Normalization两个标准化方法,对其原理和优势等进行了详细的阐述。 这一篇写Transformer里标准化的方法。在Transformer中&am…

Hadoop——HDFS

什么是HDFS HDFS(Hadoop Distributed File System)是Apache Hadoop的核心组件之一,是一个分布式文件系统,专门设计用于在大规模集群上存储和管理海量数据。它的设计目标是提供高吞吐量的数据访问和容错能力,以支持大数…

废弃物分类分割系统:入门训练营

废弃物分类分割系统源码&数据集分享 [yolov8-seg-C2f-DCNV2-Dynamic&yolov8-seg-C2f-DWR等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

java项目之微服务在线教育系统设计与实现(springcloud)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的闲一品交易平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 微服务在线教育系统设计与…

拆换LED灯珠后测量是短路的,为何

今天更换灯珠遇到一个怪事情,拆换一颗好的灯珠上去,万用表测试是短路的。 后面测试电路板上面,中间的散热部分是跟二极管的正极想通的。而且恰恰此时,LED灯珠的散热部分是跟负极想通的。 遂将线路板上面的散热部分跟二极管正极割…

串口屏控制的自动滑轨(未完工)

序言 疫情期间自己制作了一个自动滑轨,基于无线遥控的,但是整体太大了,非常不方便携带,所以重新设计了一个新的,以2020铝型材做导轨的滑轨,目前2020做滑轨已经很成熟了,配件也都非常便宜&#x…

【NOIP提高组】Hankson的趣味题

【NOIP提高组】Hankson的趣味题 💐The Begin💐点点关注,收藏不迷路💐 Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson。现在,刚刚放学回家的Hankson 正在思考一个有趣…

Matlab车牌识别课程设计报告(附源代码)

Matlab车牌识别系统 分院(系) 信息科学与工程 专业 学生姓名 学号 设计题目 车牌识别系统设计 内容及要求: 车牌定位系统的目的在于正确获取整个图像中车牌的区域, 并识别出车牌号。通过设计实现车牌识别系…

【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包(UI Toolkit)不但可以用于创建编辑器UI,同样可以来创建运行时UI。 关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见: 1. Unity中的UI系统 2. 初识UI Toolkit - 编辑器UI 本文将通过一个简单示例来…

【重生之我要苦学C语言】深入理解指针4

深入理解指针4 字符指针变量 指针指向字符变量 char ch w; char* p &ch;指针指向字符数组 char arr[10] "abcdef"; char* p arr;printf("%s\n", arr); printf("%s\n", p);结果是一样的 也可以写成: char* p "abc…

Freertos学习日志(1)-基础知识

目录 1.什么是Freertos? 2.为什么要学习RTOS? 3.Freertos多任务处理的原理 1.什么是Freertos? RTOS,即(Real Time Operating System 实时操作系统),是一种体积小巧、确定性强的计算机操作系统…

勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器

一个威胁行为者(或可能多个)使用 PSAUX 和其他勒索软件攻击了大约 22,000 个易受攻击的 Cyber​​Panel 实例以及运行该实例的服务器上的加密文件。 PSAUX 赎金记录(来源:LeakIX) Cyber​​Panel 漏洞 Cyber​​Pane…

基于vue3和elementPlus的el-tree组件,实现树结构穿梭框,支持数据回显和懒加载

一、功能 功能描述 数据双向穿梭:支持从左侧向右侧转移数据,以及从右侧向左侧转移数据。懒加载支持:支持懒加载数据,适用于大数据量的情况。多种展示形式:右侧列表支持以树形结构或列表形式展示。全选与反选&#xf…

Linux入门-基础指令和权限

1.压缩打包 1.1压缩是什么 压缩是通过特定的算法,使文件减小体积,从而达到节省空间的目的。 1.2.为什么要压缩 a.压缩将文件大小减小,在本地可能不太明显,但是在网络传输中,减小了网络传输的成本。 b.将多个文件压…

WPF中如何解决DataGrid的Header没有多余的一行

将最后一行设置DataGridTemplateColumn Width"*" 使其自适应