计算机网络-组播数据转发原理

一、组播数据转发原理

前面已经学习了组播的基本概念和网络组成结构了,今天来学习下组播数据的转发。首先我们要先明确组播网络也是和单播一样需要网络可达的,因此也是需要单播网络支持的基础上配置组播转发数据。单播网络不通组播网络就没有意义了。

组播数据转发需要依赖路由表项。但是基于目的网络的路由表在转发组播数据时存在一定问题:

转发环路
转发环路
  • 组播源发送组播报文,组播IP为G1
  • 组播组成员也加入G1
  • RT1到达成员有两条路径,出接口有两个,因此都会发送组播报文
  • RT4收到两份重复报文转发给组播组成员
次优路径
次优路径

与上面类似会出现次优路径。

由于组播转发容易产生环路,次优,重复报文,所以组播路由表项除了目的网络和出接口外还需要添加组播源和入接口的信息。设备仅转发从特定唯一的入接口收到的组播数据,从而避免组播转发时产生环路,次优,重复报文(部分解决)等问题。因此出现了RPF(Reverse Path Forwarding,反向路径转发)来解决重复报文和次优路径问题。

二、RPF(Reverse Path Forwarding,反向路径转发)

对于相同的组播源,设备通过RPF(Reverse Path Forwarding,反向路径转发) 检查可以确定设备上唯一的组播流量入接口。

RPF
RPF

组播路由表项包含组播源与组播组,因此有时又被称为(S,G)表项

组播转发过程:

  • RT1是第一跳路由器,组播报文中包含组播源地址S1,加入的组为G1,表项为(S1,G1)
  • RT1通过路由表查看到达S1的路由,发现为直连,入接口为直连接口,然后出接口为IF1和IF2
  • RT2从RT1接收到组播报文,通过路由表查看(S1,G1),确定如接口为IF1,出接口为IF2
  • RT3从IF1和IF2分别接收到组播报文,通过查看路由表发现IF1的优先级更高,因此确定报文入接口为IF1,丢弃从IF2接收的组播报文,出接口为组播组成员IF3,从而形成无环的转发路径
  • 每个路由器都会进行RPF检查,通过路由表确定最优的入接口。

RPF(反向路径检查)在三层设备上通过IP路由确定最优到达组播源的路径,其他的为次优进行逻辑阻断。

原理: 组播路由器根据报文的源地址通过路由表(单播路由表、MBGP路由表或组播静态路由表)查找到达“报文源”的路由,查看到“报文源”的路由表项的出接口是否与收到组播报文的入接口一致。如果一致,则认为该组播报文从正确的接口到达,从而保证了整个转发路径的正确性和唯一性。这个过程就被称为RPF检查。每个组播路由都会进行RPF检查。

RPF检查工作原理
RPF检查工作原理
RPF路由选举规则
RPF路由选举规则

根据以下原则从这三条最优路由中选择一条作为RPF路由:

  • 如果配置了按照最长匹配选择路由,则从这三条路由中选出最长匹配的那条路由;
  • 如果这三条路由的掩码一样,则选择优先级最高的那条路由;
  • 如果它们的优先级也相同,则按照组播静态路由>MBGP路由>单播路由的顺序进行选择。

MBGP:MBGP(Multicast BGP,组播BGP)主要用于传递组播源相关的路由条目。

组播静态路由表:手工配置组播源与出接口的对应关系。

总的来说原理还是很晦涩难懂的,简单说就是根据组播源的地址查看自身路由器确定最优入接口进行转发。查看路由表的方式有三种:组播静态路由、MBGP路由、单播路由,因为现在没有配置组播静态和MBGP,因此通过单播路由的方式查看路由表确定最优路径。

如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子 不喜欢热闹的孩子

本文由 mdnice 多平台发布

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

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

相关文章

链表——随机链表的复制

基于这篇文章算法的改进随机链表复制 这道题的关键在于完成链表复制后,如何修改random指针。即如何通过遍历原链表找到复制链表的结点。 过去的算法是修改原链表的next,让每个复制结点位于原链表结点后面。 但是,在C的STL库中,有应…

下载安装JavaFX及解决报错:缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序|Eclipse

目录 1.下载并解压 2.Eclipse配置 3.报错问题 解决方法1:将javaSE更改到9以下 解决方法2: 使用module-info.java配置解决 1.下载并解压 JavaFX下载地址:JavaFX - Gluon 选择合适自己电脑配置的sdk版本下载 打不开网页的参考这个博客&…

智能视频监控如何助力体育场馆安全管理:安防监控EasyCVR视频综合管理方案

近期有新闻报道,6月30日,17岁的中国国家羽毛球运动员在亚洲青年羽毛球锦标赛中,突然晕倒并抽搐,尽管被送往医院抢救,该运动员仍在当晚不幸离世。运动猝死不仅发生于职业运动员身上,在普通健身者中也时有发生…

5.opencv深浅拷贝

图像处理的复制操作 深浅拷贝 图像复制分成两种,第一种假复制,从原图片选择一部分图片拿出来观察,此时新生成的图片和原图实际上是同一张图片,即浅拷贝 将图片的一部分复制下来,放到新的内存中,即两张完全…

Tell Me Why:利用大型语言模型进行可解释的公共健康事实核查

Tell Me Why: Explainable Public Health Fact-Checking with Large Language Models 论文地址:https://arxiv.org/abs/2405.09454https://arxiv.org/abs/2405.09454 1.概述 最近的COVID-19大流行突显了公共健康领域事实核查的关键需求。在信息通过社交媒体平台迅速传播的时…

SpringMVC系列十二: 异常处理

异常处理 异常处理基本介绍局部异常应用实例Debug处理流程 全局异常应用实例Debug处理流程异常处理时: 局部异常 优先级高于 全局异常 自定义异常应用实例Debug处理流程 SimpleMappingExceptionresovler基本说明应用实例对未知异常进行统一处理异常处理的优先级梳理 上一讲, 我…

用ChatGPT辅助论文写作又怕学术造假?这样用就对了!

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 随着人工智能技术的发展,ChatGPT等语言模型在学术研究中的应用日益广泛。然而,在利用这些工具时,如何避免学术造假成为一个重要问题。学术造假不仅损…

flask、fastapi在服务器制作接口携参访问返回参数

flask创建接口: 一、安装python 官网下载Download Python | Python.org 二、安装flask 在选择的文件夹路径cmd调用bash安装 pip install Flask三、创建flask应用 # app.py from flask import Flask, request, jsonify app Flask(__name__) app.route(/ech…

Linux服务管理(二)DHCP/FTP服务

DHCP四部曲是指客户机请求IP、服务器响应、客户机选择IP以及服务器确定租约四个步骤的过程。这一系列过程共同构成了DHCP客户机动态获取IP地址的完整流程。下面将详细解读这一过程的每个阶段: 客户机请求IP:也称为DHCPDISCOVER,当一个DHCP客户…

ESXi6.7 update 3主机实现新硬件运行老环境

server 2003 SQL server 2000 SQL SP4 vmware tools 一、适用场景 1、运行多年的老企业,积累的数据量庞大,其中的数据库并不一定都是现在开发的平台或系统,而是已经正在运行,不能停业务的状态。 2、老系统老应用平台&#xf…

IT数据从业人员必读好物——最新发布物开放免费下载!

如今,越来越多的企业开始重视IT在业务中的作用,并寻求通过数字化转型来提升竞争力,且趋向于采用敏捷、灵活的方法来适应快速变化的市场需求。 本月精选发布物,正是为企业的IT管理提供了一个全面的标准化框架,帮助企业系…

如何确保工业展厅设计既专业又吸引?三原则详解!

工业是民族发展的基石,它为我们带来了无数的便利和进步,而为了让更多人了解这个至关重要的产业,以及其背后的技术和产品,许多工业性质的企业都致力于通过互动投影、虚拟现实、全息投影等多媒体技术,来打造独具特色的工…

vue-virtual-scroller-展示大量数据列表-虚拟列表展示优化

安装 -演示 npm i vue-virtual-scrolleryarn add vue-virtual-scrollervue-virtual-scroller 是一个 Vue 组件库,用于高效地渲染大量数据项,通过虚拟滚动来提升性能。它适用于长列表、网格、表格等场景 引入组件 Vue 项目中引入并注册 vue-virtual-scroller 组件。你可以在全…

@金融安全专业人士和风险管理决策者,必读白皮书现开放免费下载!

加快建设金融强国,是中国经济长远发展的战略抉择,更是在经济全球化进程中维护国际金融安全的重要举措,而防控金融风险是建设金融强国的重要保障。 本月最新发布物,聚焦「安全」主题,尤其为金融行业的安全专家&#xff…

『C++成长记』string模拟实现

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ ​ 目录 一、存储结构 二、默认成员函数 📒2.1构造函数 📒2.…

尚品汇-(十二)

(1)数据库表结构 根据以上的需求,以此将SKU关联的数据库表结构设计为如下: base_attr_value:前面学的平台属性值表 我们进行关联,可以从分类导向平台,通过平台过滤商品 (2&#xf…

MySQL—统计函数和数学函数以及GROUP BY配合HAVING

合计/统计函数 count -- 演示 mysql 的统计函数的使用 -- 统计一个班级共有多少学生? SELECT COUNT(*) FROM student -- 统计数学成绩大于 90 的学生有多少个? SELECT COUNT(*) FROM student WHERE math > 90 -- 统计总分大于 250 的人数有多少&…

【SpringCloud应用框架】Nacos命名空间、分组和DataID三者关系

第五章 Spring Cloud Alibaba Nacos之命名空间、分组和DataID三者关系 文章目录 一、名词解释三者关系 二、切换不同环境DataID方案Group方案Namespace空间方案 一、名词解释 命名空间(Namespace) ​用于进行租户粒度的配置隔离。不同的命名空间下&…

GraphRAG

什么是RAG? RAG 是一种自然语言查询方法,用于通过外部知识增强现有的LLM,因此如果问题需要特定知识,问题的答案会更相关。它包括一个检索信息组件,用于从外部源获取附加信息,也称为“基础上下文”&#xf…

pnpm介绍

PNPM 是一个 JavaScript 包管理器,类似于 npm 和 Yarn。它的全称是 "Performant npm",主要设计目标是优化包的安装和管理过程,以提升速度和效率。PNPM 的主要特点包括: 符号链接(Symlink)&#x…