单播转发数据--重复流量过多;广播转发数据--不安全,容易出现二层环路,不能满足有偿性
组播路由协议:PIM(协议无关组播)(无关指的是与底层的IP单播协议无关)
OSPF---MOSPF 组播开放式最短路径优先
RIP----DVMRP 距离矢量组播路由协议
PIM协议基于IP协议运行,协议号:103 组播IP地址:224.0.0.13
PIM的作用:用做组播数据的传输与转发
传输:组播源到源端路由器(第一跳路由器)之间
转发:源端路由器到成员端路由器(最后一跳路由器)之间,
在第一跳路由器到最后一跳路由器之间的路由器叫做叶子路由器
RPF:逆向路径转发
根据IP单播路由表,寻找最优去往组播源的出接口,称为RPF接口,数据经过RPF接口转发
PIM的模式:
PIM-DM:作用于ASM模型下
应用在接收人数总量少而分布密集的环境下
PIM-SM:作用于ASM和SSM模型下
应用在接收人数总量多而分布稀疏的环境下
PIM-DM中的机制:
邻居发现机制
扩散机制
剪枝机制
嫁接机制
状态刷新机制
断言机制
DR选举机制
PIM-DM的关键作用:计算出一颗SPT树,用来转发最优组播数据
PIM-DM的原理:
①、运行了PIM协议的设备之间,进行组播数据的扩散,将组播数据泛洪到整个组播网络
②、对于不想接收组播数据流的设备,会发起剪枝流程,剪掉不接受组播数据的对应接口
③、通过周期性的扩散-剪枝过程,来构建并维护组播网络中的一颗最优无环的单向SPT树,来转发组播数据
PIM-DM的工作过程:
①、邻居发现过程:
运行了PIM协议,在启动PIM之后,接口就会开始触发发送PIM hello报文随后以周期性30秒进行发送。双方设备收到对方的PIM hello报文之后,就会建立PIM邻居关系
在建立邻居关系之后,PIM会在每个网段进行DR的选举,如果此时部署了IGMPv1,那么选举出来的DR会成为IGMPv1的查询器
DR的选举过程:*优先级越大越优先:范围:1-2^32,默认为1
*优先级一致,比较IP地址,以大为优
②、PIM-DM的SPT的构建过程:(扩散-剪枝机制是周期进行 180s一次,为了检查组播网络中是否存在新接入的设备)
* 数据的扩散机制:组播源产生组播数据之后,会向第一条路由器发送组播数据。第一条路由器收到组播数据进行RPF检查,通过之后接收组播数据,并 且向所有邻居设备进行数据的泛洪。其他叶子路由器在接收到组播数据后,同样进行RPF检查,通过则接收组播数据,未通过丢弃。依次类推过程依次向下进行,直到组播数据通告至整个组播网络中。
通过RPF检查的设备会建立(S,G)表项,后续就以此表项进行转发
*数据的剪枝机制:当设备下游无接收者时,或者当接收者离开当前组播网络时。设备在接收到组播 数据后,发现下游无接收者会向上游邻居发起邻居发起剪枝报文(Prune),收到下游设备的剪枝报文,会删除在组播路由表中的下行接口。不在向被剪枝网段发送组播数据,节省链路带宽。
被剪枝接口会维护一个剪枝定时器(210s),超时后,接口会重新
*状态刷新机制:为了避免被剪枝接口的210s定时器结束后恢复转发,由离组播源最近的第一跳路由器发起一个状态刷新报文,收到状态刷新报文的设备,会重新刷新被剪枝接口的剪枝定时器,从而使得被剪枝接口一直处于抑制状态(状态刷新报文周期60s发送)
状态刷新带来的问题:当下游有接收者出现会一直无法获得组播信息
*嫁接机制:因为状态刷新,会导致接口一直处于抑制状态,所以当前设备下游重新出现接收者时,会向上游设备发送嫁接报文,上游设备收到嫁接报文之后,回复嫁接ACK确认并且在组播路由器表中添加下行接口,进而恢复数据转发
*断言机制:当有多台设备同时属于一个多路(广播)网络时,会出现多台设备转发同一份组播数据,这时候需要进行断言机制,分为两种角色
---断言胜者:winner
---断言败者:loser
断言机制选举结束之后,由断言胜者负载后续的组播数据转发
断言败者会每180s重新发起断言选举,重新比较选举
断言者选举机制:**先比较设备去往组播源所使用的单播路由协议优先级
**比较设备去往组播源的开销最小者
**比较设备下行接口IP地址最大者
PIM-SM(ASM):
选择RP汇聚点设备
RP是在PIM-SM中的新增设备角色。
在整个网络中的作用:
①、向着接收者的最后一跳路由器构建RPT树;为了使得RP设备向接收者转发组播数据时,提供最优路径
②、向着源端的第一跳路由器构建SPT树;为了源端设备向RP转发组播数据时,提供最优路径
先构建RPT树,再构建SPT树
PIM-SM的机制:
①、邻居的发现(和DM中一致)
②、SM中的DR选举机制(和DM中一致)
③、RP的发现:
---手工指定设备
---动态选举RP设备
④、RPT树的构建(SM新增机制)
⑤、组播源的注册机制(SM新增机制)
⑥、SPT树的构建
⑦、Switch Over机制:SPT树切换机制(SM的新增机制)
⑧、断言机制
⑨、存在剪枝机制
RP的选举过程:
①、在网络中指定C-BSR设备,C-BSR之间互相通过自荐报文,进行BSR的选举,最后选举出来的BSR设备收集网络中的C-RP信息,进行RP得竞选
②、在网络中指定C-RP设备。在选举出BSR设备之后,C-RP设备通过报文将自身的IP地址以及优先级等参数告知BSR设 备,由BSR设备进行选举
③、BSR将收到的C-RP信息收集生成RP-set,通知给各个C-RP设备,C-RP设备之间通过RP-set列表根据选举机制,选举最终的RP设备
动态选举RP机制:
C-BSR:候选主持人BSR设备,先在C-BSR设备中选举出BSR
BSR竞选规则如下:
*优先级较高者获胜(优先级数值越大优先级越高)。
*如果优先级相同,IP地址较大者获胜。
C-RP:候选RP设备,再由BSR设备从C-RP中选出RP设备
RP竞选规则如下:
*与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。
*如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。
*如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。
*如果以上比较结果都相同,则C-RP的IP地址较大者获胜。
Static-RP x.x.x.x 静态指定RP设备
C-BSR(接口) */指定候选BSR
C-PR(接口) */指定候选PR
如果是静态指定RP场景,必须在所有设备上指定RP的地址
不管是动态还是静态,用作RP的地址以及候选RP地址和后续BSR地址都要IP单播可达
PIM-SM中的RPT树的构建:
构建因数:由于IGMP的加组触发。有成员加入组播组,通过IGMP报告报文,设备收到报告报文之后,触发向RP设备发起RPT构建
过程:最后一跳路由器沿着RP的方向发起Join加入报文,收到的沿途所有设备,构建(*,G)表项,直到RP收到Join加入报文 。
RPT树只是从RP设备最后一跳路由器之间。
后续RP在转发组播数据时,就沿着RPT树的方向进行最优转发。
PIM-SM中的SPT树的构建:
①、第一跳路由器设备收到一份组播数据之后,将组播数据封装进单播注册报文中,沿着IP单播路由表的最优路径发送给RP设备
②、RP设备收到注册报文,解封装出内部的组播数据
--将组播数据沿着已经建立成功的RPT树直接转发给组播接收者
--根据IP单播路由表的路径向源端DR设备发起Join加入报文,沿途所有设备收到Join报文之后建立(S,G)表项
③、当(S,G)表项建立成功之后,就代表SPT树建立完成,后续的组播数据转发直接沿着SPT树发送给RP设备
④、当RP设备通过SPT树收到组播数据之后,向着源端设备发起注册停止报文(单播),告知源端设备停止发送注册报文
PIM-SM中,RPT树和SPT树不能保证组播数据转发过程中的最优路径
SPT树的切换机制:
为了解决SPT+RPT在SM中可能出现的次优路径现象:
当成员端收到第一份组播数据之后,就会由成员端设备向着源端设备发起Join加入报文(根据IP单播路由表),收到Join加入报文的沿途设备生成(S,G)表项,直接构建从源端设备到用户端设备的SPT树;当SPT树建立完成后,用户端向RP设备发起剪枝报文将原有的RPT树删除。
PIM-SM(SSM):IGMPv3指定了组播源,可直接与组播源构建SPT树,沿途设备创建(S,G)表
PIM模型比较: