概述

  • PIM-SM工作机制
    • 名词解析
    • RPT树的生成
    • SPT树的生成
    • (☆,☆,RP)路由项
    • BSR机制及RP发现
    • 组播报文的转发规则
    • PIM-SSM简介

工作需要,在网上搜集了关于PIM-SM相关资料,整理归纳便于学习记忆。
PIM-DM用于密集的小型网络,PIMS-SM用于稀疏模式下的大型网络,在应用场景上有区别。在传播信息方式上可以比喻为PIM-DM为“推(Push)模式”,PIM-SM使用“拉(Pull)模式”传播组播数据。

附上PIM-DM理论详解链接

PIM-SM的基本工作原理

  1. PIM-SM假设所有主机都不需要接收组播数据,只向明确提出需要组播数据的主机转发。PIM-SM组播路由协议构造并维护一个RPT(Rendezvous Point Tree,共享树或汇聚树),在PIM-SM域中选出一个根节点作为RP(Rendezvous Point,汇聚点),组播数据通过RP沿着RPT树转发给组播接受者。
  2. 初始化状态下,RPT是这样创建的,接收者向PIM-SM组播路由器发送IGMP加入报文,然后由该网段下的DR向RP发送加入报文(Join Message),经过的路径就形成了RPT的分支。所过之处,创建对应的(*,G)表象。后面会详细介绍流程。
  3. SPT树的创建。有组播报文到组播源侧的DR(Designated Router,指定路由器)时,会构造注册报文的发送,DR把注册报文(Register Message)通过单播方式发送给RP,该报文到达RP后触发建立SPT树(最短路径树),有别于RPT树。

注意
复制仅发生在分发树的分支处,这个过程能够自动重复直到数据包达到接收者。

PIM-SM工作机制

PIM-SM 是协议无关组播传送稀疏模式(Protocol Independent Multicast-Spare Mode)的缩写。是一种适合在稀疏环境下使用的组播协议。如果接收者分部比较密集,适合部署PIM-DM即密集模式。协议无关 是指PIM-SM不依赖具体的路由协议,而是直接使用单播路由表(FIB)作为组播路由信息的基础。

名词解析

上下游接口、RPF、DR、(S,G)、(,G)、(,*,RT)等等。

  • 上游接口(Upstream Interface):对一个指定的源站点S或集会点RP,接收到该源站点或集会点RP所发出的数据包且检查正确的接口,称为上游接口;
  • 下游接口(Downstream Interface):对于一个指定的源站点或集会点RP,所有不是上游接口的接口都被称为下游接口;
  • RPF(Reverse Path Forwarding Check:逆向路径转发检查):当设备收到一个组播包时,会做RPF检查。路由器在单播路由表中查找源或集会点的地址,确定组播包是否在到源或集会点的反向路径的接口上被收到。如果是检查通过,组播包被转发,否则丢弃;
  • STP–Source Trees源树:以组播源为根,接收者为枝叶的一颗树。这种扩散方式路径最短,所以称为最短路径树(SPT;
  • RPT(共享树):以RP为根接收者为枝叶的一颗树。RP为指定点(Rendezvous Point);
  • (S,G):表示一个组播流,可以指一个特定的组合源。S表示发送组播报文的源设备ip地址,G表示发送组播报文的目的地址,即组播组地址;
  • (*,G):表项存在于RPT树中,表示特定组在共享树中的状态。其源可以为任意源;
  • ,RP):表示关于特定共享树所有组播组的状态,组源可以为任意值;
  • (S,G,rpt):表示关于特定共享树特定(S,G)状态;
  • 组播路由表:在上层应用层体现的为一条(S,G),底层表项为一条IPMC表项;
  • BSR:Bootstrap Router,分为候选BSR,和选中BSR,其中选中BSR将周期性的发送RP集合信息,泛滥到全网。候选RP会单播rp信息到选中BSR,由BSR收集整理扩散;
  • RP:Rendezvous Point,集会点;

RPT树的生成

  1. 接收者侧的DR会定时发送组播组查询报文,查询其下有没有需要加入相关组播组的设备;
  2. 当一个组播接收者希望接收某个组播报文时,会发送igmp-report报文。这个报文会被连接这个接收者的一个路由器(当在共享网络上有多个组播路由器时,会选举出一个DR,处理igmp报文)处理;
  3. 接收者侧的DR本地会生成一个(*,G)表项,并定时向RP方向发送PIM JOIN消息;
  4. 沿途路由器都会建立一个(*,G)的多播路由项,于是就生成了一颗以RP为根的RPT树。这颗树又称为共享树,因为是整个组共享的,不特指摸个组播源。
  5. 当接收者侧的DR发现,其下没有需要该组播的成员时,它会向RP发送一个(*,G)Prune消息,会沿途裁剪这颗树。

SPT树的生成

Registing

  • 发送Register报文当一个组播源想往RPT树发送组播包时,会有直连组播源的DR构造Register报文,向RP发送。构造过程是组播报文上送CPU,查找MRT表项失败,首先触发cache miss报文生成,然后再催发Register报文。这两种报文都是由内核催发,上送igmp报文。
  • RP接收Register报文RP收到此单播包后,解封装,再依照生成的共享树把组播包分发给所有的接收者。

Register Stop

  • 首先通过Register单播发送组播包效率低下,也不是实现的初衷,所以要把转发转移到以硬表转发的流程上。
  • 当第一个Register报文到达RP后,发现本身有对应组的(*,G)表项,随即本身创建一条(S,G)表项,并且还会向直连组播源的DR路由器,发送(S,G)Join消息。
  • (S,G)Join消息会在去往直连组播源的沿途创建(S,G)的组播路由条目。这样一颗SPT树就生成了。
  • 直连组播源到RP有SPT树,RP到接收者有RPT树,这样整个链路就通了。组播包会沿着这两颗树进行转发。
  • 此时单播Register报文还在发送,并未停止(为了保证多播流不因此间断)。当RP收到第一个未封装的组播包时,它将向S-DR发送一个RegisterStop消息。S-DR收到此消息后,停止注册报文的发送。

最短路径树-SPT

  • 为了避免接收组播包时通过RP饶一下,接收方的DR可以选择从共享树的RPT转移以S为根的最短路径树(SPT)。
  • 切换的流程是,接收者侧DR建立一个(S,G)组播路由表项,通过这个(S,G)状态向S-DR周期性的发送(S,G)Join消息。沿途路由相应的创建了一颗(S,G)树。
  • DR中的(S,G)表项中输出接口列表是从原来建立的(*,G)表项中拷贝过来的。
  • 此时DR将会收到两份组播数据流,一份是从RPT过来的,一份是从SPT过来的。所以当从SPT输入接口收到第一个(S,G)组播包后,说明SPT已经切换成功,DR(假如对这个DR而言,RPT和SPT的上游是同一个路由器,那么就从上游的RPT和SPT开始分支的地方的路由器)将向RP发送一个(S,G,rpt)Prune消息,来说明它不再想从共享树接收从S来的数据。
  • 如果接收到这个Join/Prune报文的路由器中有(S,G)组播路由表项,那么它就把这个报文到达的接口从(S,G)输出接口列表中删除掉。如果路由器只有(*,G)状态,那么它就生成一个共享标志位(RPT-bit)被设置为1的(S,G)组播路由表项,我们称之为带有RPT-bit的(S,G)表项以区别和一般的(S,G)表项。一个路由器不能同时有带有RPT-bit的(S,G)表项和一般的(S,G)表项

(☆,☆,RP)路由项

因为两个*打不出来,所以用五角星代替了。
为了支持系统工作能力,一种特殊的表项类型(☆,☆,RP)必须被所有的PIM路由器支持。

  • PMBR-组播边界路由器(PIM Multicast Border Routers):为在PIM域中的每个候选RP初始化(☆,☆,RP)状态,而这个状态促使PMBR向域中的每个活动RP发送(☆,☆,RP)Join消息。通过这种方式,以RP为根的分布树就被建立了,所有在PIM域内产生的数据报被传送到相应的RP,并沿着分布树传送到PMBR。由于每个RP对应着一系列组G,所以会有多条(☆,☆,RP)项来对应相应的组。
  • 在为组播报文询径时,若无法匹配(S,G)或者(*,G)组播路由项,而目标组G能够匹配上某个RP,则依据对应的(☆,☆,RP)项进行转发。
  • PMBR也负责将外部产生的数据报传送给PIM域内的路由器。它把外部生成的数据报封装起来,封装到Register报文中并把他们单播给PIM域中相应的RP。在Register报文中有一个bit用来指示它是由边界路由器产生的,并且RP将生成这个报文的PMBR的地址也高速缓存到路由表项中(这样做的目的是当收到其它PMBR的复制的Register报文时,它可以通过向对方单播一个Register-Stop报文来减少这种情况的发生)。

BSR机制及RP发现

在一个PIM-SM域中,所有的PIM-SM路由器都必须把一批全局的组播地址映射到一个RP上。同时一个PIM域还可以被划分为多个管理域,每个管理域内的路由器也要能把此域映射到同一个RP上。PIM-SM采用BSR机制来进行RP管理以及管理域边界的确定。

BSR–Bootstrap router

  • PIM-SM域中允许配置多个BSR,称为C-BSR(候选BSR)。在这些C-BSR中需要选举出一个BSR,而域内所有的RP将向此BSR通报他们的候选资格。
  • BSR从这些候选RP中选出一个子集,并将此信息通过BootStrap消息发送给域内所有的路由器。

BSR机制

  1. BSR选举:每个候选BSR发出Bootstrap消息。此消息中包含BSR优先级。这个消息在整个域内扩散。当一台候选BSR发现有比自己优先级更高的候选BSR后,停止发送Bootstrap消息。最终只有一台BSR保留下来,称为当选BSR。而他将持续发送Bootstrap消息,扩散到全域,使域内所有的PIM路由器都知道当前BSR在哪。
  2. 候选RP通告:所有候选RP将周期性地向BSR发送候选RP通告(C-RP-Adv).
  3. 候选RP组的编订:BSR搜集归纳所有的候选RP信息,并将其中一个子集编程候选RP组(C-RP-Set)。编组的原则:既不能让这个组太大,而包括了域中的所有路由器;也不能太小,使得所有的流量都集中到一台RP上;同事尽量保持这个组不经常发生变动。
  4. RP组的扩散:BSR把编好的RP组放进Bootstrap消息中,周期性的扩散到整个域内。

组播报文的转发规则

组播转发不同于单播,单播转发流程中不关心源地址,只对目的地址进行路由,决定向那个接口转发。组播转发过过程中必须根据源和目的地址确定出上游和下游方向,把组播报文沿着原理组播源的方向进行转发。这个过程称为RPF(Reverse Path Forwarding 逆向路径转发)。这里采用单播路由表来确定上下游邻接结点,只有当报文是从上游结点对应的接口(RPF接口)到达时才能向下游转发。
RPF作用:1.可以正确的按照组播路由的配置转发报文。2.避免由于各种原因造成的环路。

RPF检查流程

  1. 如果多播源就在本路由器直连网络中,则要为此(S,G)组合创建一个Keepalive定时器;
  2. 检查此S,G组合在本路由器上是否已经被切换到SPT,若是则设置报文中的SPT bit;
  3. 路由器在单播路由表中查找组播源或RP对应的RPF接口(当使用信源树时查找组播源对应的RPF接口,使用共享树时查RP对应的RPF接口),某个地址对应的RPF接口是指从路由器向该地址发送单播报文时的输出接口;
  4. 如果组播报文是从RPF接口接收下来的,则RPF检查通过。可以创建输出接口列表。对于S,G的情况,如果输出接口列表不为空,则启动一个(S,G)keepalive定时器,用以判断分支是否超时;
  5. 否则丢弃该报文;

PIM-SSM简介

PIM-SSM是对传统PIM协议的扩展,使用SSM,用户能直接从组播源接收组播组播业务量,PIM-SSM利用PIM-SM的功能,在组播源和客户端之间,产生一个SPT树。但PIM-SSM在产生SPT树时,不需要汇聚点RP的帮助。

SSM-Source Specific Mulitcast源特定组播

  1. 不同于传统组播的新业务模型,使用组播组地址和组播源地址同时来标识一个组播会话,而不是像传统的组播服务那样只使用组播组地址来标识一个组播会话;
  2. SSM保留了传统PIM-SM模式中的主机显示加入组播组的高效性,但是跳过了PIM-SM模式中的共享树和RP(Rendezvous Point)规程;
  3. 传统PIM-SM中,共享树和RP规程使用(*,G)组来表示一个组播会话,G表示一个特定的IP组播组,而 * 表示发现组播组G的任何一个组播源;
  4. SSM直接建立由(S,G)标识的一个组播最短路径树**(SPT:Shortest Path Tree)**,其中G表示一个特定的IP组播组地址,S表示发向组播组G的特定源的IP地址;
  5. SSM的一个(S,G)对也被称为一个频道(Channel),以区分传统PIM-SM组播中任意源组播组;

PIM-SM--理论详解相关推荐

  1. 大数据时代 | 数据分析方法及理论详解

    大数据时代 | 数据分析方法及理论详解 1 数据分析前,我们需要思考 像一场战役的总指挥影响着整个战役的胜败一样,数据分析师的思想对于整体分析思路,甚至分析结果都有着关键性的作用. 2 分析问题和解决 ...

  2. 手机摄影中多摄融合理论详解与代码实战

    转载AI Studio项目链接https://aistudio.baidu.com/aistudio/projectdetail/3465839 手机摄影中多摄融合理论详解与代码实战 前言   从20 ...

  3. Data Guard ----理论详解(四)

    1.Data Guard 第一章详细部分阅读–传送门 2 DG Services 详解 – Redo Transport Services 第二章详细部分阅读–传送门 3 DG Services 详解 ...

  4. Python实战——VAE的理论详解及Pytorch实现

    参考的论文: Tutorial on Variational Autoencoders Auto-Encoding Variational Bayes 建议参考的文章: Pytorch里的CrossE ...

  5. TB级别分布式关系型数据库OceanBase理论详解

    OceanBase是阿里开发的分布式关系型(SQL)数据库,其目标是支持数百TB的数据量以及数十万TPS.数百万QPS的访问量,无论是数据量还是访问量,即使采用非常昂贵的小型机甚至是大型机,单台关系数 ...

  6. 【视觉SLAM十四讲】第一章理论详解

    文章目录 第一讲 概述与预备知识 SLAM是什么 室内/室外定位 稀疏-半稠密重建 稠密重建 SLAM可以用在哪些地方? **作业1.** SLAM会在哪些场合中⽤到?⾄少列举三个⽅向. SLAM: ...

  7. [PXE] Linux(centos6)中PXE 服务器搭建,PXE安装、启动及PXE理论详解

    本篇blog主要讲述了[PXE] linux(centos)PXE无盘服务器搭建,安装,启动及pxe协议详解 , Kickstart (PXE+DHCP+TFTP+HTTP). PXE环境概述 作为中 ...

  8. 集群理论详解(续一)

    扩展知识二: 使用heartbeatV2的CRM组件进行高可用集群的"集群资源管理crm" 1.更改原来haresources资源管理配置文件的方法可用通过/usr/lib64/h ...

  9. GlusterFS/GFS 分布式文件系统--理论详解

    文章目录 一.文件系统简介 1.组成 2.作用 3.文件系统的挂载使用 二.GFS分布式文件系统概述 1.GFS简介 2.GFS的特点 3.GFS专业术语 4. 模块化堆栈式架构 5. GFS 工作流 ...

  10. Vision Transformer(ViT) 1: 理论详解

    Vison Transformer 介绍 Vison Transformer论文- An Image is Worth 16x16 Words: Transformers for Image Reco ...

最新文章

  1. GATB=The Genome Analysis Toolbox with de-Bruijn graph 带有de-Bruijn图的基因组分析工具箱
  2. 瓜分340亿美元物联网芯片半导体市场!机会在这五大行业【附下载】| 智东西内参...
  3. C#实现的ReplaceFirst和ReplaceLast
  4. OTL调用Oracle存储过程
  5. Eclipse 每行 79 字符限制的提示线
  6. python输入球的半径_基于用户输入半径的Myro移动机器人
  7. codeforces C. Diverse Permutation(构造)
  8. Github pull request 工作流总结
  9. vscode 默认初始化_Visual Studio Code(vscode)使用介绍
  10. python 动态调整控件大小_python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例...
  11. centos7mysql语句创建表格_CentOS7中安装MySQL(简便)及 网站的搭建
  12. Pytest-ordering自定义用例执行顺序
  13. 前端开发技术:HTML5 JS 前端开发主要功能!
  14. 转换时间格式24小时_昼夜节律|来认识下你身体24小时的时间表
  15. [转载] 细思极恐的星座分析(下)- 外太空?内子宫?人类的天赋从何而来?
  16. java虚拟器安装教程_Java虚拟机安装教程都有什么?该如何下载?
  17. 125、什么是核心交换机的链路聚合、冗余、堆叠、热备份
  18. latex引用文献,带DOI
  19. java大作穿越arpg,超任帝国最后的挽歌 篇二:ARPG篇(动作角色扮演游戏)
  20. OBS,vMIX,Wirecast,TCliveSP直播串流导播软件区别及比较

热门文章

  1. 解决双屏同时只能一个工作,另一个黑屏问题
  2. Oracle之函数concat、lpad
  3. [万字]java后端研发岗秋招常见面经总结
  4. 【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )
  5. RTT简介及其简单应用
  6. 海驾学车过程全揭秘——第六篇:辛苦的学车全过程
  7. glassfish java ee_GlassFish 3.1.2发布 开源的JavaEE应用服务器
  8. IPTV系统云桌面管理:开机广告+三方apk管理+图文介绍
  9. Linux系统中的mount挂载命令及参数详解
  10. 9种数据类型,数据类型区别及判断数据类型方法