计算机网络-PIM-SM(ASM)基础

一、PIM-SM(稀疏模式)

前面我们学习了PIM-DM模式并且完成了简单的组播实验,我们知道了PIM-DM是通过泛洪和剪枝实现组播组成员的管理和组播分发树的建立的。但是在现实环境中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到组多问题:

  • 使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击。
  • 所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数据。
  • 对于组成员较为稀疏的组播网络,使用"扩散-剪枝"形成组播分发树的效率不高。
PIM-DM的不足
PIM-DM的不足

简单说就是PIM-DM模式效率不高,全网泛洪和维护PIM路由表占用了无关路由器的性能,存在其缺陷,因此一般用于较为密集的组播网络中。因此也出现了PIM-SM模式,PIM-SM模式根据组播服务模型又可以分为:

  • PIM-SM(ASM):为任意源组播建立组播分发树。
  • PIM-SM(SSM):为指定源组播建立组播分发树。

二、PIM-SM(ASM)介绍

PIM-SM(ASM)模型形成组播分发树的方法是:

  • 将组成员的位置事先告知某台组播路由器(Rendezvous Point,RP),形成RPT(RP Tree)。
  • 组播源在发送组播数据时,组播网络先将组播数据发送至RP,然后由RP再将组播数据转发给组成员。
  • 对于部分次优的组播转发路径,PIM-SM(ASM)能自动优化为最优路径(SPT)。
PIM-SM(ASM)
PIM-SM(ASM)

PIM-SM(ASM)优点,通过PIM-SM(ASM)模式形成组播分发树有如下好处:

  • 只有组播转发路劲上的组播路由器需要维护组播路由表。
  • 通过RP可以让所有组播路由器获知组成员的位置。
  • 避免“扩散-剪枝”机制,提高组播分发树的形成效率。

三、PIM-SM(ASM)协议报文

3.1 协议报文类型

报文类型报文功能
Hello用于PIM邻居发现,协议参数协商,PIM邻居关系维护等
Register(注册)用于事先源的注册过程。这是一种单播报文,在源的注册过程中,组播数据被第一跳路由器封装在单播注册报文中发往RP
Register-Stop(注册停止)RP使用该报文通知第一跳路由器停止通过注册报文发送组播流量
Join/Prune(加入/剪枝)加入报文用于加入组播分发树,剪枝则用于修剪组播分发树
Assert(断言)用于断言机制
Bootstrap(自举)用于BSR选举。另外BSR也使用该报文向网络中扩散C-RP(Candidate-RP,候选RP)的汇总信息
Candidate-RP-Advertisement(候选RP通告)C-RP使用该报文向BSR发送通告,报文中包含该C-RP的IP地址及优先级等信息

3.2 RP的选举

汇聚点RP(Rendezvous Point) 为网络中一台重要的PIM路由器,用于处理源端DR注册信息及组成员加入请求,网络中的所有PIM路由器都必须知道RP的地址,类似于一个供求信息的汇聚中心。RP相当于中介,组播源需要注册到SPT,组播组成员到需要构建RPT到达RP。

目前可以通过以下方式配置RP:

  • 静态RP:在网络中的所有PIM路由器上配置相同的RP地址,静态指定RP的位置。
  • 动态RP:通过选举机制在多个C-RP(Candidate-RP,候选RP)之间选举出RP。
RP选举
RP选举

静态RP或者是动态RP在设置时均可以指定该RP为哪些组播组提供服务。

动态RP选举:动态选举RP会涉及两类角色C-BSR(Candidate-Bootstrap Router)C-RP(Candidate-RP)

  • C-BSR通过竞选能选举出一个唯一的BSR。
  • BSR的作用是收集C-RP的信息并形成RP-Set信息,BSR通过PIM报文将RP-Set信息扩散给所有PIM路由器。
  • PIM路由器收到RP-Set消息后,根据RP选举规则选举出合适的RP。
BSR选举
BSR选举

动态选举时先选举出BSR,BSR收集RP的信息发送给所有PIM路由器进而选举出RP。

BSR竞选规则如下:

  • 优先级较高者获胜(优先级数值越大优先级越高)。
  • 如果优先级相同,IP地址较大者获胜。

RP竞选规则如下:

  • 与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。
  • 如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。
  • 如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。
  • 如果以上比较结果都相同,则C-RP的IP地址较大者获胜。

3.3 首次形成组播分发树

PIM-SM(ASM)模式首次形成组播分发树主要依赖RPT构建机制,组播源注册机制与DR选举机制。

  • RPT构建机制:组播叶子路由器主动建立到RP的组播分发树(RPT)
  • 组播源注册机制:通过该机制形成组播源到RP的组播分发树(SPT)
  • DR选举机制:DR负责源端或组成员端组播报文的收发,避免重复组播报文,同时成员端DR还负责发送Join加组消息。
首次形成组播分发树
首次形成组播分发树

3.4 RPT构建

RPT:组播成员DR到RP的路径,也就是连接组播组成员的路由器到达RP的路径。

RPT(RP Tree)是一棵以RP为根,以存在组成员关系的PIM路由器为叶子的组播分发树。

当网络中出现组成员(形成IGMP表项)时,组成员端DR向RP发送Join报文,在通向RP的路径上逐跳创建(*,G)表项,生成一棵以RP为根的RPT。

RPT构建
RPT构建

3.5 组播源SPT构建

SPT:组播源到RP的路径,由于没有IGMP,不能生成Join报文,只能使用register与RP交互形成SPT树。

PIM-SM(ASM)模型中,源端DR到RP的组播分发树无法使用Join报文创建,因此需要组播源注册机制帮助形成源端DR到RP的组播分发树(SPT)。

形成SPT需要基于Register报文与Join报文,具体过程如下:

SPT
SPT

组播源信息注册到RP后,就形成了组播源到RP的SPT,但源端DR此时仍然会将组播数据包封装入Register报文,该方式会造成一些问题:

源端DR最初发送的是单播Register报文,但是该方式会加重源端DR与RP的工作量。

源端DR形成到RP的SPT后,会同时发送单播Register报文和组播报文,造成重复组播包的问题。

转发数据报文
转发数据报文

组播源DR与RP形成SPT后,RP发送停止注册报文通知采用组播报文发送数据。

组播数据转发流程:组播源到RP形成SPT组播成员到RP形成RPT数据从SPT转发到RPT,由RP进行维护。

3.6 PIM DR选举

在源端网络或者成员端网络中,有可能有多台组播路由器转发组播流量,从而造成重复组播报文的问题。

PIM DR(Designated Router)是源端网络或者成员端网络的唯一组播转发者,由于不存在别的组播转发路由器就避免了重复组播报文的问题。就是直连组播源或者组播组成员可能存在多个路由器的情况,选举一台最优的进行转发数据,另外的路由器不转发组播流量。

重复报文
重复报文

PIM DR的选举:

  • 在PIM-SM(ASM)中各路由器通过比较Hello消息上携带的 优先级IP地址,为多路访问网络选举指定路由器DR。
  • 接口DR优先级高的路由器将成为该MA网络的DR,在优先级相同的情况下, 接口IP地址大的路由器将成为DR。
  • 当DR出现故障后,邻居路由器之间会重新选举DR。
  • DR优先级默认为1,数值越大越优。
  • 对于成员端网络,如果有多台组播路由器,则组播路由器的下行接口需要同时开启IGMP与PIM。
  • DR还可充当IGMPv1的查询器。
PIM DR选举
PIM DR选举

3.7 RPT次优路径问题

在PIM-SM网络中,一个组播组只对应一个RP。因此组播数据最初都会发往RP,由RP进行转发,这会导致两个问题:

  • 过大的组播流量会对RP形成巨大的负担。
  • 组播转发路径有可能是次优路径。
次优路径
次优路径

简单说就是所有流量到RP可能走的路径不是最优。

3.8 SPT切换

当数据发送至RP后,RP会沿RPT将数据发送给成员端DR。为了解决RPT潜在的次优路径问题,成员端DR会基于组播数据包中的源IP,反向建立从成员端DR到源的SPT。

设备沿最短路径发送Join消息,该最短路径基于RPF选举规则决定。

设备将Join消息从RPF选举得出的上行接口发出。多路访问网络在SPT切换的过程中可能会存在重复报文,需要利用断言机制快速选定下行接口。

SPT切换
SPT切换

当组播分发树(SPT或RPT)稳定后,成员端DR会周期性发送Join/Prune报文,用于维护组播分发树。如果组播在一段时间后(默认210s)没有流量则SPT树会消失,成员端DR恢复到RP的RPT树。

维护组播分发树
维护组播分发树

总结:PIM-SM(ASM)依据RP为核心,建立组播源到RP的SPT组播分发树,RP作为核心建立到达组播组成员DR的RPT组播分发树,组播数据从组播源经过SPT-RP-RPT-组播组成员转发。动态RP的大致工作步骤:

  1. 选举BSR,BSR再发送RP-set选举出RP
  2. 基于组播源注册机制,源端DR发送Register(注册)报文到RP建立SPT,完成后RP发送Register-Stop(注册停止)完成SPT建立
  3. 成员端DR向RP发送Join报文,沿途路由器生成(*,G)表项,构建RPT
  4. 组播源通过SPT转发组播数据,当数据发送至RP后,RP会沿RPT将数据发送给成员端DR。

如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子 不喜欢热闹的孩子

本文由 mdnice 多平台发布

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢热闹的孩子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值