PIM利用单播路由表的路由信息进行组播报文RPF检查创建组播路由表转发组播
路由器需要依据哪些信息进行转发
各接口所在网段有无潜在接收者
接收者需要接收哪些组的数据
PIM
运行与组播路由器之间
负责建立和维护组播路由器 并正确 高效地转发组播数据包
建立从组播源到多个接收端的无环转发路径 即组播分发树(SPT RPT)
工作原理
给组播提供路由信息可是任何一种单播路由协议
组播路由器和单播路由协议无关 (这无关是指单播路由协议怎么形成的路由信息我不管)只要通过单播路由协议能够产生相应组播路由表项即可
PIM有2种模式
密集模式
PIM-DM
使用推方式传输数据
适用于小型网络 组播成员相对密集
PIM-DM
邻居发现 :PIM路由器会周期发送hello包周期性发送 (30s 死亡105s)并且选举DR(优先级高或者IP地址大变成DR)同时这个DR会是IGMPv1的查询器
扩散:假设网络中每个网段都有接收者对一个组播源感兴趣 因此组播数据将被扩散到网络中所有点 与此伴随着资源消耗
剪枝:对没有需求的分支进行剪枝操作只保留包含接收者的分支(会向上游发送prune信息)
嫁接阶段:当被剪枝的节点出现了组播成员时 就使用嫁接机制恢复对其组播数据转发构建(会向上游发送join信息)并且维护SPT (建立SPT会进行RPF检查 数据包转发过程中会出现上下游的概念)
Assert机制:又叫断言机制 当一个路由器上游接收到2个一样的组播源但是转发者不一样 就会启用 选举规则 到组播源优先级高的 度量值小的 本地ip地址大的继续发 失败的闭嘴
状态刷新:每60s发送一次
稀疏模式
PIN-SM
使用拉方式传输数据
适用于大型 范围广的网络 组成员分散
PIM-SM工作流程
稀疏模式 只有某网段出现成员才构建组播路由 向该网段发送组播 构建RPT
要有一个思想 源到RP看成一块 RP到接收者看成一块
(选择某台路由器作为公用节点RP 组播数据通过RP沿着RPT转发给接收者
接收者的路由器向某组播对应的RP发送加入报文(join)该报文会发给RP 所经过的路径)
组播源向接收者发送组播数据 首先与组播源测的DR 负责向RP注册 把注册报文以单播发送给RP ,RP接收后就触发建立SPT 之后组播源会把组播数据沿着SPT发送给RP 当组播数据到达RP后 被复制并沿着RPT发送给接收者
形成RPT分支
邻居发现 发现与PIM-DM一样
DR选举 共享网段需要一个DR 作为该网段的唯一转发者 (选举规则 优先级高ip地址大)
(注意有2个DR 一个靠近源的DR负责发送RP注册报文 一个靠近接收者DR负责向RP发送加入报文)
RP发现:在RPT里所有的组播数据都是通过RP转发 一个RP可以同时服务多个组播组 但一个组播只能对应一个RP(RP有静态RP 和动态RP。 静态RP就是手动指定 所有的路由指定同一台路由器作为RP, 动态RP C-RP是RP后选人 c-BSR是候选主持人,所有候选RP把信息发给BSR BSR通过比较后决定谁是RP 在通告所有参选的设备谁是RP (RP选举规则先比较优先级 小的优 优先级一样就比较哈希值 数值大的优 哈希一样 就比较C-RP地址 大的优))
加入:刚开始DR 是不会认为整个网段有人 但DR接收到IGMP报文 就会向RP发送加入(join)并且沿途构建RPT(*,G)
注册register报文 单播发送给RP RP会回一个join 并且构建SPT(S,G) 然后源会发送一个注册停止
SPT切换 考虑到RP工作量太大 而且有的源到接收者路径不是最优的 所以可以RPT切换到SPT(切换参考单播路由最优路径)当收到第一个RPT共享树给的组播数据就可以开始切换(可以关 可以开)
剪枝 RPT切换成SPT后 原本的路就会发送PRUNE剪枝报文删除掉