PIM组播路由协议

  • 大家知道直播,小区视频点播等是怎么实现数据准确到达接收者的吗,和小罗一起学习今天的组播路由协议,相信大家会清晰很多

 

组播路由协议:运行在三层在组播设备之间,用于建立和维护组播路由表,并正确高效的转发组播报文

  • 建立了一个从组播源到组播接收者的无环传输路径,即组播分发树,组播分发树模型
    • SPT(Shortest Point Tree)模型:树根为组播源,从树根触发到达每一个接收者所经过的路径都是最优的
    • RPT(Rendezvous Point Tree)模型:树根为网络中某一台路由器称为RP(Rendezvous Point 汇聚点),所有接收者共享RP,组播源发出的数据必须首先到达RP,再由RP分发给各个接收者。无法保证路径最优
  • 根据不同的组播模型分为:基于ASM(任意信源模型),和基于SSM(指定信源模型)
    • 对于ASM模型,分为域内和域间组播路由协议
      • 域内组播路由协议用于在AS内发现组播源并构建组播分发树
      • 域间组播路由协议用于实现组播信息在AS之间传递,与域内侧重点不一样
    • SSM模型为指定源组播提供解决方案,IANA为SSM分配了特定的组播地址段:232.0.0.0~232.255.255.255
  • 根据应用环境中组播接收者疏密程度有密集和稀疏模式
    • 组播数据流采用“推”的方式从组播源泛洪道每一个角落,接收者被动接收。适用成员众多的场合
    • 组播数据流采用“拉”的方式从组播源发送到组播接收者,接收者主动向组播源发送接收请求,组播只会发送到真正有需求的端。适用较复杂但节省带宽,接收者较少场合,如小区视频点播
  • 域内组播路由协议:DVMRP(距离矢量组播路由协议),MOSPF(组播OSPF协议),PIM(协议无关组播)。知道计算路由算法是什么即可
    • PIM-DM
    • PIM-SM
    • PIM-SSM
 
PIM协议报文基于UDP协议,端口号103,专门组播IP地址224.0.0.13,根据实现机制不同分为三种
 

PIM-DM(Protocol Independent Multicast-Dense Mode-密集模式)是基于SPT模型且采用密集模式的组播路由协议,采用“推”的方式将组播流量周期性的扩散到网络中所有设备上,适用于组播组成员较密集的小型网络。

  • 邻居发现机制
    • 周期性以组播方式发送PIM Hello消息,地址为224.0.0.13,所有PIM路由器都是该组播组成员,发现PIM邻居并建立维护PIM邻居关系
    • 仅当组播接收者共享网段上有多台路由器,且路由器运行IGMPv1时才选举DR,通过PIM的Hello消息为该网段接收者主机选举DR,且DR充当IGMPv1的查询器(发布查询报文的路由器)
      • 选举规则:Hello消息优先级,路由器接口IP地址。越大越优先
      • 超时没有收到DR发送的Hello消息触发新的DR选举
    •  
  • 扩散过程
    • 将组播报文扩散到每一个运行PIM-DM网段沿途每一台路由器都创建(S,G)表项。
      • 从入接口接收,进行RPF检查,检查正确,从除RPF接口外所有连接PIM-DM邻居接口(只有PIM-DM网段才有扩散)以及直接连接组播组G成员主机的接口转发出去
    •  
  • 剪枝/加入过程:Prune消息,Join消息组播
    • 如果不需要PIM邻居发送组播报文给自己,发送Prune消息给PIM邻居,收到消息后不再转发该组播组报文到本网段
    • 如果共享网段上有路由器连接接收者,则向上游发送Join消息覆盖自己收到的其他路由器的Prune消息
    • 两种情况发生Prune消息:将接收到Prune消息接口从出接口列表删除
      • 路由器维护的(S,G)表项中出接口列表为空,向 上游RPF邻居发生Prune消息
      • 路由器从非RPF接口收到组播报文,触发Assert过程,Assert失败的一方向获胜的一方发送Prune消息
    • 发送Join消息(加入需要Prune消息激活):将接收到Join消息接口加入出接口列表
      • 路由器从RPF接口收到Prune消息,但下游还存在接收者时,向RPF邻居发生Join消息
    •  
  • SPT的形成
    • SPT的形成即是扩散-剪枝的过程才形成组播源和接收者之间的SPT
    • 网络中所有路由器都会维护(S,G)表项,只有当组播源S不再发生组播流之后,才会删除该组播源对应的(S,G)表项信息
    • 剪枝计时器,扩散-剪枝是周期性发生的,各个被剪枝的接口提供超时机制
    •  
  • 嫁接过程:Graft消息,Graft ACK消息单播
    • 被剪枝的路由器上出现组播接收者,不需要等待下一次的扩散
    • Graft机制快速恢复上游RPF邻居对组播报文的转发,收到Graft消息的将收到Graft消息的接口添加到(S,G)表项出接口列表中,并回复Graft ACK消息
    •  
  • 断言机制
    • 同一网段出现多台转发组播路由器,相同的组播报文可能被重复发送到此网段
    • 断言机制选择网段唯一组播数据转发者,在收到重复组播报文接口上发生Assert消息,其中携带了组播源S,组播组G,到达组播源的单播路由优先级和度量值
      • 选举规则:
        • 1.到S的单播路由优先级,值小获胜
        • 2.到S的度量值,值小获胜
        • 3.接口IP地址,值大获胜
    • 唯一转发者上游接口故障时,会发送度量值无穷大的Assert消息引发新一轮的断言
    •  
  • PIM-DM状态刷新机制
    • 通过“扩散-剪枝”过程可以快速建立组播源到接收者的SPT,但由于存在剪枝计时器,该过程是周期性的,过一段时间后被剪枝的接口又会向下游设备发送组播报文,网络中每隔一段时间就充斥组播报文,而不需要接收组播报文的接口又需要重新发送剪枝消息,很浪费占用带宽
    • 使用周期性的协议报文代替周期性的组播数据扩散,减少网络消耗,优化网络资源
    • PIM-DM状态刷新机制,和组播源直接相连的路由器发出State Refresh消息,沿途收到此消息后都会重置剪枝超时定时器,同时向除入接口之外的所有连接PIM邻居的接口发送State Refresh消息,处于转发状态时剪枝标志位置0,剪枝状态时剪枝标志位置1
    •  
 
  • 关于查询器,DR,断言:都是选举出来负责转发组播数据。当只配置IGMP协议,查询器负责,当配置了PIM协议,DR负责,当Assert竞选则Assert负责
 

PIM-SM(Protocol Independent Multicast-Sparse Mode-稀疏模式)是稀疏模式的组播路由协议,采用“拉”的方式根据接收者的需求在组播源和接收者之间建立RPT组播分发树,适用于任何形式的网络。

  • PIM-SM与DM不同,使用了RP汇聚点
    • 组播源侧的DR向RP注册
    • 接收者侧的DR向RP发起加入
  • 邻居发现和DR选举
    • 邻居发现和PIM-DM过程相同组播发送Hello消息
    • DR选举,与PIM-DM不同,PIM-SM无论路由器运行什么样的IGMP版本,接收者侧或发送源侧路由器都需要进行DR选举
      • 选举规则:和PIM-DM一样,Hello消息后接口IP地址,大优先
    •  
  • 加入过程
    • 接收侧
      • 接收者发送Report通知DR加入某组播组,DR在本地建立(*,G)表项,向RP发送Join消息,接收Report接口加入表项出接口列表,指向RP单播路由下一跳出接口作为表项入接口。
        • (助理解:因为是接收者主动发起的join还并没有任何组播源的信息,所以建立的是(*,G)表项,不像PIM-DM是组播源扩散是带有组播源信息建立的是(S,G)表项)
      • Join消息指向RP沿途经过的路由器建立对应的(*,G)表项
      • 只要DR有组播组G接收者,就会周期性向上游发送Join消息,当没有组播组G的接收者即出接口列表空,发送Prune消息
      •  
    • 组播源侧如下
  • 组播源注册:Register消息单播
    • 组播源不关心有没有接收者,会一直向某组播组G发送组播数据,组播源侧DR收到组播组G报文时,会建立(S,G)表项同时选择入出接口
    • DR将收到的报文封装在Register消息中,单播到对应的RP,RP收到后将查看(*,G)表项是否存在将组播报文从(*,G)表项出接口列表转发
    • RP为该组播源建立(S,G)表项,并选择入出接口,随后向组播源发送特定源和组的Join消息沿途建立(S,G)表项形成一棵组播源DR到RP的SPT
    •  
  • 组播源注册停止
    • 组播源发出的报文会有两种形式到达RP
      • 单播封装在注册报文中到达;通过DR本地的(S,G)表项沿着SPT到达
    • 两种报文到达RP时,RP会丢弃单播注册封装的报文,而以组播方式将接收到的报文发送到RPT上。同时,也向组播源侧DR发送Register Stop单播消息通知DR停止发送注册报文
    • 注册抑制计时器,组播源侧DR维护,定时器范围内第一次接收到stop消息后有的定时器,以组播方式发送数据而不通过单播注册发送组播数据。
      • 在定时器快超时之前,DR为了提示RP该发送Register Stop消息了,DR会发送一些空的没有封装组播数据的Register消息
      • RP收到之后,更新本地(S,G)表项(其实我觉得是(*,G)表项因为单播会通过此表项出接口列表转发),回应Register Stop消息。DR收到Stop重置注册抑制计时器
    •  
  • RPT向SPT切换
    • DR收到第一个组播报文时,可以获取到组播源地址,为了获得更小的报文延迟,会向组播源发送特定源组的Join消息沿途建立路由器建立(S,G)表示生成一棵接收者DR到组播源的SPT
      • 此后,组播源的报文会沿着两个方向到达接收者侧DR,沿着SPT和沿着RP来的RPT。收到两封报文的路由器会丢弃从RP收到的报文并向RP发送Prune消息(即是RPT上RP的下游发出的Prune消息),而RP当出接口列表为空了,也向组播源DR发送Prune消息
        • 1.向组播源发送特定源组的Join消息沿途建立路由器建立(S,G)表示生成一棵接收者DR到组播源的SPT
    •  
      • 2.收到两封报文的路由器会丢弃从RP收到的报文并向RP发送Prune消息(即是RPT上RP的下游发出的Prune消息)
    •  
      • 3.最终形成组播源到接收者的SPT
    •  
    •  
  • RP的选择
    • 静态指定RP
      • 但当网络规模比较大,RP转发组播信息量巨大,所以为了缓解RP优化RPT的拓扑结构
    • 动态选举
      • 在PIM-SM域中配置多个候选C-RP,通过BootStrap机制动态选举RP,使不同的RP服务于不同的组播组
      • BSR自举路由器是PIM-SM域的管理核心,一个域内只能有一个BSP,多个C-BSR备份自动选举BSR,它可以将所有C-RP的信息收集起来汇总成一个RP-Set集然后发布到整个PIM-SM域内
      • C-RP周期性单播发送宣告报文(包括C-RP地址,优先,服务组播组范围)给BSR,BSR收集所有C-RP信息汇总成RP-Set集封装在BootStrap报文中以组播方式发送到整个PIM-SM域内,路由器自行比较选举出RP
        • RP选举规则:
          • C-RP优先级,值低获胜
          • 计算出的Hash值,较大获胜
          • C-RP地址,较大获胜
        • BSP选举规则:
          • 优先级,值低获胜
          • 接口IP地址,较大获胜
      •  

 

PIM-SSM可以看作是PIM-SM的子集,采用PIM-SM一部分技术实现PIM-SSM,机制包含邻居发现和DR选举以及加入过程,邻居发现和DR选举和PIM-SM机制相同,由于通过某些途径接收者事先知道了组播源的IP地址,加入过程有点区别

  • PIM-SSM接收者加入过程,必须
    • 主机端DR会周期发送IGMPv3查询报文,若网段上有主机想要接入某特定源的组播报文,回复Report报文包含组播源S和组播组G。或当主机想要接收某组播源发送的报文时,也可以主动发起Report报文向DR发出请求。
    • DR收到Report报文,判断组播组是否属于SSM模型规定的232.0.0.0~232.255.255.255范围内,若是则维护组成员信息,建立(S,G)表项,随后DR向组播源发出Join消息,途径路由器建立(S,G)表项形成一棵从组播源到接收者的SPT
 

好了,写了这么多,PIM组播路由协议就先介绍到这啦,相信看到这里的小伙伴或多或少会有你的收获 ,能帮助到大家当然最好了,喜欢小罗的笔记的话记得点赞关注哦,咱们一起进步!

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值