PIM是Protocol Independent Multicast(协议无关组播)的简称,表示可以利用静态路由或者任意单播路由协议(包括RIP、OSPF、IS-IS、BGP等)所生成的单播路由表为IP组播提供路由。组播路由与所采用的单播路由协议无关,只要能够通过单播路由协议产生相应的组播路由表项即可。PIM借助RPF(Reverse Path Forwarding,逆向路径转发)机制实现对组播报文的转发。当组播报文到达本地设备时,首先对其进行RPF检查:若RPF检查通过,则创建相应的组播路由表项,从而进行组播报文的转发;若RPF检查失败,则丢弃该报文。

根据实现机制的不同,PIM分为以下两种模式:

1.      PIM-DM(Protocol Independent Multicast-Dense Mode,协议无关组播—密集模式)

2.      PIM-SM(Protocol Independent Multicast-Sparse Mode,协议无关组播—稀疏模式)

PIM-SM简介

PIM-DM使用以“扩散—剪枝”方式构建的SPT来传送组播数据。尽管SPT的路径最短,但是其建立的过程效率较低,并不适合大中型网络。

PIM-SM属于稀疏模式的组播路由协议,使用“拉(Pull)模式”传送组播数据,通常适用于组播组成员分布相对分散、范围较广的大中型网络。

PIM-SM的基本原理如下:

l              PIM-SM假设所有主机都不需要接收组播数据,只向明确提出需要组播数据的主机转发。PIM-SM实现组播转发的核心任务就是构造并维护RPT(Rendezvous Point Tree,共享树或汇集树),RPT选择PIM域中某台路由器作为公用的根节点RP(Rendezvous Point,汇集点),组播数据通过RP沿着RPT转发给接收者;

l              连接接收者的路由器向某组播组对应的RP发送加入报文(Join Message),该报文被逐跳送达RP,所经过的路径就形成了RPT的分支;

l              组播源如果要向某组播组发送组播数据,首先由与组播源侧DR(Designated Router,指定路由器)负责向RP进行注册,把注册报文(Register Message)通过单播方式发送给RP,该报文到达RP后触发建立SPT。之后组播源把组播数据沿着SPT发向RP,当组播数据到达RP后,被复制并沿着RPT发送给接收者。

说明:

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

工作机制

1. 邻居发现

PIM-SM使用与PIM-DM类似的邻居发现机制,具体请参见“邻居发现”一节。

2. DR选举

借助Hello报文还可以为共享网络(如Ethernet)选举DR,DR将作为该共享网络中组播数据的唯一转发者。

无论是与组播源相连的网络,还是与接收者相连的网络,都需要选举DR。接收者侧的DR负责向RP发送加入报文;组播源侧的DR负责向RP发送注册报文。

&  说明:

l      各路由器之间通过比较Hello报文中所携带的优先级和IP地址,可以为多路由器网段选举DR。选举出的DR对于PIM-SM有实际的意义;而对于PIM-DM来说,其本身其实并不需要DR,但如果PIM-DM域中的共享网络上运行了IGMPv1,则需要选举出DR来充当共享网络上的IGMPv1查询器。

l      在充当DR的设备上必须使能IGMP,否则连接在该DR上的接收者将不能通过该DR加入组播组。

如图3所示,DR的选举过程如下:

(1)        共享网络上的各路由器相互之间发送Hello报文(携带有竞选DR优先级的参数),拥有最高优先级的路由器将成为DR;

(2)        如果优先级相同,或者网络中至少有一台路由器不支持在Hello报文中携带竞选DR优先级的参数,则根据各路由器的IP地址大小来竞选DR,IP地址最大的路由器将成为DR。

当DR出现故障时,其余路由器在超时后仍没有收到来自DR的Hello报文,则会触发新的DR选举过程。

3. RP发现

RP是PIM-SM域中的核心设备。在结构简单的小型网络中,组播信息量少,整个网络仅依靠一个RP进行组播信息的转发即可,此时可以在PIM-SM域中的各路由器上静态指定RP的位置;但是在更多的情况下,PIM-SM域的规模都很大,通过RP转发的组播信息量巨大。为了缓解RP的负担并优化RPT的拓扑结构,可以在PIM-SM域中配置多个C-RP(Candidate-RP,候选RP),通过自举机制来动态选举RP,使不同的RP服务于不同的组播组,此时需要配置BSR(BootStrap Router,自举路由器)。BSR是PIM-SM域的管理核心,一个PIM-SM域内只能有一个BSR,但可以配置多个C-BSR(Candidate-BSR,候选BSR)。这样,一旦BSR发生故障,其余C-BSR能够通过自动选举产生新的BSR,从而确保业务免受中断。

&  说明:

1.   一个RP可以同时服务于多个组播组,但一个组播组只能唯一对应一个RP。

2.   一台设备可以同时充当C-RP和C-BSR。

如图4所示,BSR负责收集网络中由C-RP发来的宣告报文(Advertisement Message),该报文中携带有C-RP的地址和优先级以及其服务的组范围,BSR将这些信息汇总为RP-Set(RP集,即组播组与RP的映射关系数据库),封装在自举报文(Bootstrap Message)中并发布到整个PIM-SM域。

图4 RP与BSR信息交互示意图

网络中的各路由器将依据RP-Set提供的信息,使用相同的规则从众多C-RP中为特定组播组选择其对应的RP,具体规则如下:

(1)        首先比较C-RP的优先级,优先级较高者获胜。

(2)        若优先级相同,则使用哈希(Hash)函数计算哈希值,该值较大者获胜。

(3)        若优先级和哈希值都相同,则C-RP地址较大者获胜。

哈希函数的表达式为:Value (G, M, Ci) = (1103515245 * ( (1103515245 * (G & M) + 12345) XOR Ci) + 12345) mod 231,其中各符号的含义如表1所示。

表1 哈希函数中各符号含义

符号

含义

Value

哈希值

G

IP组播组的地址

M

哈希掩码长度(Hash Mask Length)

Ci

C-RP的IP地址

&

逻辑运算符,表示与运算

XOR

逻辑运算符,表示异或运算

mod

算术运算符,表示整除取余

(转载)PIM-SM协议初探(一)路由角色选举的更多相关文章

  1. HTTP协议初探

    HTTP协议初探 HTTP协议初探 什么是http协议? 遵守协议的双方 再来回答什么是http协议 抓到这两段文本 可以总结出以下规律 HTTP 请求命令(动作,谓词 ,METHOD) GET 和 ...

  2. gopher 协议初探

    Gopher 协议初探 最近两天看到了字节脉搏实验室公众号上有一篇<Gopher协议与redis未授权访问>的文章,其中对gopher协议进行了比较详细的介绍,所以打算跟着后面复现学习一下 ...

  3. (转载)RTMP协议中的AMF数据 http://blog.csdn.net/yeyumin89/article/details/7932585

    为梦飞翔   (转载)RTMP协议中的AMF数据 http://blog.csdn.net/yeyumin89/article/details/7932585 这里有一个连接,amf0和amf3的库, ...

  4. Keepalived中Master和Backup角色选举策略

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ixdba.blog.51cto.com/2895551/1544858 在Kee ...

  5. Keepalived详解(五):Keepalived集群中MASTER和BACKUP角色选举策略【转】

    一.Keepalived集群中MASTER和BACKUP角色选举策略 在keepalived集群中,其实并没有严格意义上的主.备节点,虽然可以在keepalived配置文件中设置state选项为MAS ...

  6. Keepalived 角色选举

    简介: 1.在 Keepalived 集群中,其实并没有严格意思上的主.备节点,虽然可以在 keepalived.conf 中定义 state 选项为 MASTER 状态,但是这并不意味着此节点就一直 ...

  7. 【转载】TCP协议疑难杂症全景解析

    说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人. ...

  8. 神州数码静态路由及直连网段引入到RIP协议配置(路由重定向)

    实验要求:掌握静态路由及直连网段引入协议当中的配置 拓扑如下 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface g0/6 进入端口 i ...

  9. 【转载】TCP协议要点和难点全解

    说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的 ...

随机推荐

  1. 十一届河南省赛-checkpoints(个人解法)-能AC代码

    大致题意: zznuoj,大致题意:从A点出发达到B点去解救人质,再从B点返回到A点,经历第二遍的点只计算一次即可,AB两点不计数!求完成任务最少需要经过的点数. 大致思路:暴力!从起点到终点,和从终 ...

  2. linux下top命令的使用

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 视图参数含义 top视图分为两部分:操作系统资源概况信息和进程信息.首先分析资源 ...

  3. (转)VMware虚拟机三种网络模式的区别及配置方法;

    我的一点实际经验理解桥接和NAT 桥接是虚拟机完全作为一个独立的地址接在局域网中,NAT是虚拟机依赖宿主主机地址转换的一种方式 例子我的虚拟机如果用桥接模式,连接外部网站如百度时会提示此pc没有装公司 ...

  4. SQL查询CASE遇上NULL怎么办?

    原SQL: case userName when  null THEN '空' else '有值' end, 这种写法不好使: 换一种:case when userName is null THEN ...

  5. ubuntu彻底删除git

    参考:ubuntu彻底卸载软件 找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremo ...

  6. Oracle 开窗函数--转

    oracle的分析函数over 及开窗函数 转自:http://zonghl8006.blog.163.com/blog/static/4528311520083995931317/一:分析函数ove ...

  7. adreno的tbdr

    看完apple的(&&powervr) 再来撸高通的.. FlexRender 能自己选三种模式 Direct Binning 这个只是分块 HWVizBinning 这个估计就是tb ...

  8. Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH)

    Filtering Approaches for Real-Time Anti-Aliasing(2011 SIGGRAPH) 在2011的SIGGRAPH上,NVIDA提出了FXAA3.1,本文主要 ...

  9. vue-quill-editor的用法

    1. main.js引入vue-quill-editor import VueQuillEditor from 'vue-quill-editor' import 'quill/dist/quill. ...

  10. 单调栈求全1(或全0)子矩阵的个数 洛谷P5300与或和 P3400仓鼠窝

    爆零好爽,被中学生虐好爽,还好我毕业得早 求全1(或全0)子矩阵的个数,看了题解有好几种思路,我学了三种,但有两种不是很理解,而且也没另外那个跑得快,所以简单讲述一一下我会的那种来自Caro23333 ...