组播路由协议——PIM DM工作机制

目录

扩散(Flooding)、剪枝(Prune)机制

嫁接(Graft)机制

状态刷新(State-refresh)机制

断言(Assert)机制


采用“推(Push)”的方式转发组播报文并生成组播表,建立SPT(最短路径树)转发组播报文。它假定每条链路都有接收者,在每条链路上都直接推送组播流量。

扩散(Flooding)、剪枝(Prune)机制

扩散、剪枝的作用

通过扩散、剪枝机制,建立从组播源到组成员的SPT

扩散过程——通过组播流量进行扩散

PIM-DM假设网络中的所有主机都准备接收组播数据,为实现所有主机都能够接收到组播数据,使用扩散机制实现

  1. 启动了PIM-DM协议的路由器在接收到组播流量后,首先对组播流量进行RPF检测
  2. RPF检查通过后,创建(S,G)表项,并将数据向所有下游接口转发,这个过程为扩散
  3. RPF检查没有通过,则丢弃报文不再继续扩散
  4. 只要路由器组播表项的下游接口为非空,报文就会继续扩散下去

通过RFC检测可知,全网设备必须知道去往组播源的路径,否则RFC检测失败,扩散结束

剪枝过程——通过Prune报文进行剪枝

当下游没有组播成员(即没有成员加入组播组),为避免带宽浪费,会使用剪枝机制

  1. 当报文扩散到末端路由器后,路由器发现没有直连组成员或者除RPF接口之外的接口也不存在PIM邻居,则认为下游接口Null,向上游设备发送剪枝报文。
  2. 上游设备收到剪枝报文后,将自身(S,G)表项中该下游接口剪除,被剪除的接口会自动关联一个210s的剪枝计时器(210s内不再下发该组组播流量,210s后被剪掉的接口会重新出现在下游接口列表中,组播数据会再次向该接口扩散,一直重复)——此处是不考虑状态刷新机制的情况
  3. 如果此上游设备的下游接口都被剪除(即下游接口为Null),会触发路由器继续沿着组播源的RPF发送剪枝
  4. 如果此上游设备(S,G)表项还存在其它下游接口,即下游接口非空,则剪枝结束

Prune Pending Timer   延缓剪枝计数器     Prune Timer    剪枝计时器

注意

  • 启用PIM-DM/SM协议的接口,收到IGMP的报告报文,会自动创建(*,G)表项。
  • 当有(*,G)表项时,创建(S,G)表项的下游接口直接从对应的(*,G)的下游接口复制过来。
  • DM模式不用关注(*,G)表项,DM模式通过(S,G)表项进行组播流量的转发

嫁接(Graft)机制

嫁接的作用

通过扩散和剪枝机制可知,在被剪枝的路由器上,如果其下游接口出现组播接收者,接收者需要等待最长210s才可以等到组播流量扩散,获取组播数据

而嫁接机制就是用来降低用户收到组播数据的等待时间,在剪枝定时器210超时前帮助用户收到组播数据

嫁接过程——通过Graft报文进行嫁接

  1. 当被剪枝的路由器从下游接口收到IGMP成员报告后,根据报告报文中的组地址,查询自身的(S,G)表项是否有对应的组播源S信息。
  2. 如果不存在对应的(S,G)表项,则无法实现嫁接。如果存在对应的(S,G)表项,则会在自身的(S,G)表项添加下游接口,并主动向上游RPF路由器发送Graft报文,并启动嫁接定时器(3s收不到嫁接确认报文会一直发送)
  3. 上游路由器收到Graft报文后,若下游接口处于还处于剪枝状态,则会把被剪除的接口重新添加到下游接口列表,引导组播流量下发,并回应嫁接确认报文。若下游接口已经处于转发状态,则直接回应嫁接确认报文。
  4. 若上游路由器在在收到Graft报文之前的下游接口为Null,收到后变为了非空,则会继续向上游发送Graft报文,依次类推
  5. 若上游路由器在在收到Graft报文之前的下游接口就为非空,则不再继续向上发送Graft报文。
  • 即:剪枝到哪里,就嫁接到哪里

注意

由嫁接过程可知,需要保证在组播源活跃期间,(S,G)表项不会老化

此要求通过周期性的 扩散和剪枝 来保证((S,G)表项老化时间210,组播流量210s扩散一次 )

状态刷新(State-refresh)机制

状态检测机制简称SR,属于PIM DM的可选功能(仅PIM v2支持)

此功能通过Hello报文进行协商,默认华为支持PIM DM状态刷新机制

状态检测机制的作用

  • 在PIM DM网络中,被剪枝的接口会进行周期扩散组播数据来维持剪枝状态,如果下游没有接收者,那这种扩散对于网络来说就增加了负荷
  • 状态刷新机制通过周期性的扩散SR控制报文(携带组播源与组播组信息)来取代周期扩散组播数据,使已剪枝的接口继续保持剪枝状态

注意

  • 当状态刷新机制开启后(只需要在连接组播源的接口上开启状态检测机制),只有初次扩散是组播数据,后续扩散都是SR控制报文
  • 当组播源不活跃时,不再产生状态刷新报文
  • 状态刷新报文是逐跳扩散的,每经过一跳,源接口IP的都是出接口IP,目标地址一直为224.0.0.13

状态刷新过程——通过SR报文进行状态刷新

  1. 初次扩散之后,离组播源最近的第一跳路由器会以60s周期性的产生状态刷新报文,并向全网扩散。
  2. 当设备收到SR报文后,判断报文是否从RPF邻居发来并从RPF接口接收的,如果不是,则丢弃。
  3. 如果通过RPF检测,并且有接口已经被剪除,则SR报文会复位接口的剪枝计时器(210s),使得接口一直处于剪枝状态,并向下游邻居扩散。如果没有接口被剪除,则直接此报文向下流转发。

断言(Assert)机制

在网络中,可能存在相同的组播报文被转发了多份的情况,加重了网络负担,此时就需要断言机制来解决

断言机制如何解决此问题

在Assert环境中,会选举出一个Winner,只有Winner才会发送状态刷新报文

触发断言机制的条件

  • 下游接口在发出组播数据的同时,又收到了同样的组播数据
  • 在下游接口收到了Assert(断言)报文或者状态刷新报文

断言机制的工作过程——发送Assert报文实现(以上图为例子)

  1. 当触发断言机制后,R1和R2都认为自己是Winner,分别发送Asssert报文(报文携带了各自路由表中自身到组播源的路由协议优先级和度量值)
  2. R1和R2收到对方发送的Assert报文后,提取出路由协议优先级和度量值进行对比,选举出Winner,其余的为Loser(Winner只有一个,Loser可以有多个)。成为Winner的设备继续发送组播数据
  3. 当R1成为Winner后,R2作为Loser会自动剪除自己的下游接口并立即发送一份剪枝报文给Winner,同时关联一个断言计时器Assert Timer(180s超时前接口会一直保持剪枝状态)。
  4. 断言计时器结束后会再次进行断言

对比原则

  • 单播路由协议优先级高的成为Winner(值越小越优)
  • 度量值越小的成为Winner
  • 自身接口IP地址大的称为Winner
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

静下心来敲木鱼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值