背景

组播报文是由组播源产生并且发向一组接收者的,组播报文一旦进入组播网络后,组播网络设备(例如组播路由器等)负责拷贝及转发这些报文,直至报文到达组播接收者。

组播流量在组播网络中传递时,应该要考虑如下问题:

组播路由器如何知道应该将组播报文转发到哪里(从设备的哪个或者哪些接口转发出去)?
    组播报文在网络中的传输路径如何?
    如何确保组播报文在转发的过程中不存在环路?

解决方法

通过在组播网络中部署组播路由协议可以解决上述问题。每一台组播路由器都维护一个非常重要的数据表,这个数据表便是组播路由表,组播路由表中包含的组播路由表项将用于指导组播报文转发。

组播路由协议

在组播路由器上部署组播路由协议,主要作用是确定上游接口、下游接口建立组播路由表项以及维护组播路由表项。

上游接口

在组播网络设备(比如组播路由器)上确定朝向组播源(或者RP)的接口,该接口也被称为上游接口(RPF接口,用于防环)。
    在每台组播路由器的每一个组播路由表项中,如果存在上游接口,那么上游接口只会有一个,只有在该接口上到达的组播流量才被视为合法的。
    组播流量永远不会从上游接口转发出去,因为这有可能在网络中造成环路。

下游接口

在每台组播路由器上确定朝向组播接收者的接口,该接口也被称为下游接口(确定组播流量的出口方向)。
    当组播流量在上游接口到达时,组播路由器负责将流量从下游接口转发出去。
    在一个组播路由表项中,下游接口列表中可能包含零个、一个或多个接口(零个下游接口表示组播流量不经过本设备到达组播接收者)。

组播路由表项

每一个组播路由表项都以一对二元组(组播源及组播组)进行标识,而且每一个组播路由表项都包含上游、下游接口信息。

从宏观的层面看,组播路由协议的工作成果是在网络中构建一棵无环的“树”,组播流量沿着这棵无环树从上游向下游转发,最终到达接收者所在的网段,而网络中的每一台组播路由器,便是这棵树上的节点。

组播分发树

在一个组播网络中,组播路由协议最重要的工作之一就是为组播网络生成一棵无环的树,这棵树也是组播流量在网络中的传输路径,我们称
之为组播分发树(Multicast Distribution Tree ),简称为组播树。常用的组播分发树有以下两种:SPT和RPT。

SPT(Shortest-Path Tree,最短路径树)

SPT也被称为源树,因为是以组播源为树根的组播分发树,而组播组的接收者则可以看作是这棵树的树叶。
    组播流量从树根(源)出发,沿着枝干传播,最终到达树叶,也即接收者所在的终端网络,如下图所示,是一个组播分发树仅形象化的概念。
   
    组播分发树体现到每一台组播路由器上其实就是组播路由表中的相关表项。每一台组播路由器都维护着组播路由表,该数据表用于指导组播流量转发。
    在组播网络中,组播路由表可能包含多个表项,每个表项都存在四个关键信息:组播源地址、组播组地址、上游接口以及下游接口。
    对于SPT而言,使用的是((S, G)组播路由表项,每一个(S, G)表项在网络中都对应了一棵独立的SPT。

示例

以上图为例,当SPT建立完成后,我们就能在每台路由器上观察到(S,G)表项,

其中S为组播源的IP地址,如上图中的10.1.1.1,假设该组播源向组播组239.1.1.13发送组播流量,那么网络中组播路由器所维护的(S,G)表项就是(10.1.1.1,239.1.1.13)。
    每台路由器的(10.1.1.1,239.1.1.13)表项都包含上游及下游接口信息,在SPT中,上游接口是设备朝向组播源的接口,
    在R3的(10.1.1.1, 239.1.1.13)表项中,上游接口是其连接R1的接口,而下游接口有三个,分别是其连接R5,R6以及直连网段中存在组成员的那个接口。
    当R3从上游接口收到10.1.1.1发往239.1.1.13的组播流量时,就会将这些流量按照(10.1.1.1,239.1.1.13)表项的指示,拷贝三份并分别从三个下游接口转发出去,因此可以形象的理解,这些组播流量沿着SPT转发了下去。

优势

对于SPT而言,组播流量从源到接收者的过程走的是最短路径,这也是该组播分发树被称为最短路径树的原因。
局限性

由于SPT使用的组播路由表项是(S,G)表项,这意味着每台组播路由器都必须为每个组播组中的不同组播源创建单独的(S,G)表项,在一个大型的组播网络中,当存在大量的组播源及组播组时,路由器的内存空间将被臃肿的组播路由表占据,进而导致性能下降。
组播路由表项类型

组播路由表项分为两种类型:(S,G)和(*,G)。
    其中S表示具体的某个组播源IP地址,G表示具体的某个组播组IP地址,而*则表示任意的组播源。

RPT( Rendezvous Point Tree,共享树)

RPT与SPT不同,它不以组播源为树根,而是以RP (Rendezvous Point)为根。
    RP可理解为一个汇聚点的概念,在一个典型的组播网络中,通常是一台性能较好的网络设备。
    多个组播组可以共用一个RP,期望接收组播流量的路由器(下接组播接收终端)通过组播路由协议在自己与RP之间建立一段RPT的分支。组播流量首先需要从源发送到RP,然后再由RP将组播流量分发下来,组播流量顺着RPT最终到达各个接收者所在的终端网络,如下图所示。
   

示例

在上图中,组播源Source与RP之间建立了SPT,Source通过这棵SPT将组播流量发送到RP,
    然后RP再将组播流量沿着RPT转发到组播接收者。
    RPT主要使用的是(*,G)组播路由表项(也使用(S,G)表项)。

优势

对于RPT而言,路由器对于每个组播组仅需维护一个(*,G)组播路由表项,无论有多少个组播源在向该组播组发送组播流量。
局限性(次优路径问题)

由于在网络中指定了RP,组播流量需要先从源发往RP,再由RP沿着组播树分发下来,这就势必存在这样一种情况:对于某些接收者而言,组播流量传输的路径可能并不是最优路径。

如上图所示,组播流量从Source转发到RP,再由RP转发到R2,显然对于R2而言这条路径并非最优。

组播路由协议也有相应的机制(RPT切换到SPT机制)来规避这种次优路径问题。

组播路由协议基础——组播分发树相关推荐

  1. 组播路由协议基础——组播表项和RPF机制

    IGMP组表 一旦设备在某个接口上激活了IGMP,该设备就会开始维护IGMP组表.初始情况下该数据表是空的,当设备在接口上收到直连网段中的主机发送出来的IGMP成员关系报告时,设备就会在IGMP组表中 ...

  2. 组播路由协议基础——PIM-SM RPT到SPT的切换过程

    问题背景 如下图所示,PC1是组播组239.1.1.87的接收者,R4在自己与RP之间建立了一段RPT的分支,而RP则在自己与R1之间建立了SPT.后续组播流量将从Source发出,沿着SPT先到达R ...

  3. 组播技术基础——组播网络架构

    组播网络角色 组播源(Multicast Source) 组播流量的发送源,一个典型例子是多媒体服务器.在典型的组播实现中,组播源不需要激活任何组播协议. 组播接受者(Multicast Receiv ...

  4. 组播路由协议基础——PIM-SM静态RP

    RP分类 RP在PIM-SM网络中的地位是非常关键的.PIM-SM路由器可以通过两种方式发现网络中的RP. 通过手工配置的方式(静态RP). 通过BSR动态发现(动态RP). 静态RP 优势 通过手工 ...

  5. 组播路由协议基础——PIM-SM RPT加入/剪枝过程

    RPT加入过程 运行PIM-SM的路由器通过PIM加入报文,构建一段到达RP的RPT分支,用于从RP接收组播流量. 示例 如下图所示是一个PIM-SM组播网络,这个网络包含6台路由器,它们都运行着PI ...

  6. 组播路由协议基础——PIM-SM BSR工作机制

    BSR RP相当于组播网络中的一个组播数据汇聚中心, 而BSR ( Bootstrap Router)则相当于组播网络中的管理中心,它管理着动态选举RP的整个过程. BSR工作机制简述 首先网络中会选 ...

  7. 组播技术基础——组播地址

    组播IP地址 在IPv4地址空间,A.B及C类IP地址用于单播通信,它们可以被分配给一台设备的某个接口. IANA (Intermnet Assigned Numbers Authority 互联网数 ...

  8. 2022-10-31 网工进阶(三十三) IP组播-流量模型、组播概念、组播报文结构、组播地址与MAC、组播网络架构、组播服务模型、组播数据转发原理(RPF检查、组播分发树、组播协议介绍)

    IP组播概念 流量模型 网络中存在各种各样的业务,从流量模型看一般可以将业务分为两类: 点到点业务:比如FTP,WEB业务,此类业务主要特点是不同的用户有不同的需求,比如用户A需要下载资料A,用户B需 ...

  9. 第十二章:组播 — 组播路由协议

    和单播路由协议类似,组播路由器在进行数据转发时也要依赖于组播路由协议.组播路由器依靠自己维护的组播路由表,对数据报文进行转发. 组播路由协议的主要作用: 确定朝向组播源的接口,这个接口被称为上游接口, ...

最新文章

  1. apkplug插件托管服务简化与简介-05
  2. 因特尔显卡自定义分辨率_蓝宝石RX 5600XT 6G D6 白金版OC显卡评测:两千价位段好选择...
  3. 读书笔记 UltraGrid(6)
  4. python字符串的split replace strip
  5. 数仓 调度_网易实时数仓实践
  6. C#趣味程序---求两个数的最大公约数和最小公倍数
  7. Python 学习笔记——文件对象和操作
  8. Apache下设置自动将http跳转到https方法
  9. ADSL与路由器密码大全及设置
  10. 随机过程通过线性系统matlab,随机信号分析实验:随机过程通过线性系统的分析.doc...
  11. 资源白朴收藏:图片、 视频、音频、字体、PPT模板类、动态图、壁纸、图标
  12. WebGL中实现三维融合视频投影技术
  13. java timezone 中国_Java中TimeZone类的常用方法
  14. xml中外部引用DTD文档
  15. SNP(单核苷酸多态性)准确性的验证,你造吗?
  16. python----语句
  17. 可位寻址与不可位寻址
  18. 当IM和同学录走到一起
  19. 全产业链落实循环减碳实践 宝马在华持续推进绿色转型
  20. C语言晦涩难懂?别怕! 我来C

热门文章

  1. android 电源管理 关闭屏幕,Android之PowerManager电源管理
  2. python list去掉引号_python的一些易忘知识点
  3. 计算机基础资料管理办法,计算机基础知识试题(答案_)资料.doc
  4. matlab相关的数字信号,数字信号处理及其MATLAB实现.ppt
  5. 程序员的24小时,简单纯粹又扎心...
  6. 每日一皮:程序猿的读书历程,最后一本​必备​!
  7. 【注意】关于Redis存在远程命令执行漏洞的安全公告
  8. php小程序地图处理,微信小程序 地图map详解及简单实例
  9. c语言检测四个方向键盘输入,如何既检测鼠标单击又检测键盘输入
  10. android安装apk时启动一个服务器,详解Android中App的启动界面Splash的编写方法