HCNP Routing&Switching之组播技术-组播分发
前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html;今天我们来聊一聊组播技术中的另一个话题组播分发;
所谓组播分发我们可以理解为单播里面的路由;对于组播来说,它也会根据组播路由来转发数据;不同于单播,组播关心的是源在何处,而单播关心的是目标在何处;在了解组播路由之前我们先来聊一聊组播分发树;
组播分发树
所谓组播分发树就是指描述组播数据在网络中的转发路径,由组播路由协议建立;对于组播分发树来说,它有两个类型,一个是最短路径树(SPT),一个是共享树(RPT);
组播分发表示方法
最短路径树(SPT)表示方法:(S,G);其中S表示特定组播源地址,G表示特定组播组;即最短路径树(SPT)就是描述特定组播源发往特定组播组的路由;类似单播路由中的明细路由(个人理解);
共享树(RPT)表示方法:(*,G);其中*表示任意组播源,G表示特定组播组;即共享树(RPT)就是用来表示任意组播源发往特定组播的路由;类似单播路由中的默认路由(个人理解);
SPT:Shortest Path Tree,最短路径树,也称为“Source Tree” 源树;所谓源树就是以组播源作为树根,将组播源到每一个接收者的最短路径结合起来构成的转发树;也就是说每一个组播源与接收者之间建立一颗独立的SPT;
提示:源树是用来表示一个组播源到接收者的转发数据树,它关心组播源,即一个组播源到所有接收者说形成的转发树;组播源到接收者的路径一定是最短的;
RPT:Rendezvous Point Tree,共享树;所谓共享树就是指以某个路由器作为路由树的树根,这个根通常被称为RP(汇合点或核心);所有的组播源和接收者都是用这一颗树来转发报文,组播源先向树根发送数据报文,之后的报文再向下转发到达所有接收者;
提示:共享树是用来表示任意组播源到接收者的转发树;它不关心源到底是谁,即共享点往后的路由器它会建立共享树;组播源到接收者的路径不一定最短;
SPT组播转发表项
提示:在同一组播组中每增加一个组播源,对应路由器的表项就会增加一颗源树;表项较多;
RPT组播转发表项
提示:在同一组播组中不管怎么增加组播源,对于RP以后的路由器都只有一颗共享树,表项相对较少;
SPT和RPT比较:
SPT优点:路径最优,延迟最小;缺点:占用内存较多,因为一个源就会建立一颗树,相对于共享树表项较多,所以消耗内存资源也相对较多;
RPT优点:占用内存较少;缺点:源到接收者的路径不一定最优,所以相对源树来说它会引入额外的延迟;
组播防环机制
组播数据转发过程
组播路由和单播路由是相反的,单播路由关心数据报文要到哪里去,而组播路由关心数据报文从哪里来;单播报文的转发过程中,路由器并不关心源地址,它只关心报文的目标地址,通过目标地址从而决定了向哪个接口转发数据;而组播报文转发过程中,报文是发送给一组接收者,这些接收者用一个逻辑地址标识(组播地址);路由器在接收到报文后,必须根据源和目标的地址确定出上游接口(指向组播源)和下游方向,然后把报文沿着远离组播源的方向进行转发;组播使用RPF机制来防止环路;
RPF(Reverse Path Forwarding),反向路径转发;该机制主要作用是用来确保组播数据能够沿正确的路径传输,避免组播环路;工作过程大致是路由器收到组播数据报文后,只有确认这个数据报文是从自身连接到组播源的接口收到的才进行转发,否则丢弃;即路由器只有通过路由接口收到组播源的数据才会转发,其他非路由接口收到的数据均丢弃;
提示:如上图所示,对于中间路由器来说,正常报文应该从离组播源最近的接口收到数据,如果不是该接口接受到对应组播数据,而是从其他接口收到组播数据,路由器会认为该数据不应该从该接口收到,所以从该接口收到的对应组播数据都会被丢弃;
RPF检查过程:
1、在单播路由表中查找到组播报文源地址的路由;
2、如果该路由的出接口就是组播报文的入接口,即RPF检查成功;否则RPF检查失败,报文丢弃;
提示:如上所示,如果路由器从s0/0口收到来自192.18.0.32的组播数据,首先路由器会查看自己路由表中去往192.18.0.32的路由的出接口是不是s0/0,如果是,则RPF检查通过,否则对应报文就会丢弃;它会认为该组播数据不应该从该接口进来,即从s0/0口收到来自192.18.0.32的组播数据报文是不合理的;所以要丢弃;
提示:如果从s0/1收到来自192.18.0.32发送的组播数据,路由器查找去往192.18.0.0/16的出接口是s0/1,此时路由器RPF就会检查通过;因为对应去往组播源的单播路由的出接口是组播源发送数据的入接口,路由器认为从s0/1接口收到192.18.0.32的组播数据是合理的,所以路由器开始转发数据;简单讲RPF就是依赖单播路由进行防止环路;
HCNP Routing&Switching之组播技术-组播分发的更多相关文章
- HCNP Routing&Switching之组播技术-组播协议IGMP
前文我们了解了组播地址相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15616740.html:今天我们来聊一聊组播协议中IGMP协议相关话题: 组播 ...
- HCNP Routing&Switching之组播技术-组播基础
组播技术背景 随着internet网络的不断发展,网络中交互的各种数据.语音.视频信息数量突增:新型的在线直播.网络电视.视频会议等应用也在逐渐兴起:这些业务大多符合点到多点的模式,对信息安全性.传播 ...
- HCNP Routing&Switching之组播技术-组播地址
前文我们聊到了组播技术背景,单播.广播在点到多点应用中的问题,以及组播对比单播.广播在点到多点的网络环境中的优势.劣势,相关回顾请参考https://www.cnblogs.com/qiuhom-18 ...
- HCNP Routing&Switching之组播技术-组播路由协议PIM
前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...
- HCNP Routing&Switching之组播技术PIM-SM RP
前文我们了解了组播技术中,组播路由协议PIM的稀疏模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16142795.html:今天我们来聊一聊组播路 ...
- HCNP Routing&Switching之组播技术-IGMP-Snooping
前文我们了解了组播协议IGMP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15700550.html:今天我们来聊一聊二层交换机处理组播报文所面临的 ...
- HCNP Routing&Switching之组播技术PIM-SM 稀疏模式
前文我们了解了组播路由协议PIM以及PIM-DM密集模式相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16084310.html:今天我们来聊一聊PI ...
- HCNP Routing&Switching之BGP基础
前文我们了解了路由注入带来的问题以及解决方案相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15362604.html:今天我们来学习下新的路由协议BG ...
- HCNP Routing&Switching之端口隔离
前文我们了解了组播路由协议稀疏模式中的RP相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16154347.html:今天我们来聊一聊二层交换机中有关v ...
随机推荐
- 通过导入Jar包的方式使用JSONObject
如果想要在Java中使用JSONObject,而且只想通过导入jar包的方式下,那么仅仅导入Json的jar包还是不够的. 不然会报:java.lang.ClassNotFoundException: ...
- NSMutableString常用方法
1.NSMutableString常用方法 - (void)appendString:(NSString *)aString; 拼接aString到最后面 NSMutableString *strM ...
- 学习jsp篇:jsp Cookie介绍
这篇博客介绍下Cookie,JSP中比较重要的知识点Session,Cookie,表单数据,过滤器,文件上传.而Session和Cookie一般放在一起讲,在介绍cookie之前,要先介绍下Cooki ...
- 总结下Mac环境下按照appium
第10天休息 先来总结下Mac环境下按照appium 一.相关网站 官网: http://appium.io/ 测试论坛 https://testerhome.com/wiki 二.环境准备 从官 ...
- 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版
对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...
- 详解Spring DI循环依赖实现机制
一个对象引用另一个对象递归注入属性即可实现后续的实例化,同时如果两个或者两个以上的 Bean 互相持有对⽅,最终形成闭环即所谓的循环依赖怎么实现呢属性的互相注入呢? Spring bean生命周期具体 ...
- Javers 比较两个类的差异
Javers 在开发过程中遇到需求,比较数据库中的原数据与新修改要写入库中的数据.这个实体类是比较复杂的.例如有基本类型,BigDecimal类型,自定义类型,Date类型,List集合,Set集合, ...
- docker为什么会出现
痛点 环境不同所引发的问题 一款产品从开发到上线,一般都会有开发环境,测试环境,运行环境. 如果有一个环境中某个软件或者依赖版本不同了,可能产品就会出现一些错误,甚至无法运行.比如开发人员在windo ...
- [LeetCode]1295. 统计位数为偶数的数字
给你一个整数数组 nums,请你返回其中位数为 偶数 的数字的个数. 示例 1: 输入:nums = [12,345,2,6,7896] 输出:2 解释: 12 是 2 位数字(位数为偶数) 345 ...
- Windows原理深入学习系列-强制完整性控制
欢迎关注微信公众号:[信安成长计划] 0x00 目录 0x01 介绍 0x02 完整性等级 0x03 文件读取测试 0x04 进程注入测试 0x05 原理分析 Win10_x64_20H2 0x06 ...