第十二章:组播 — RPF和PIM-DM

12.5.3 RPF

RPF(Reverse Path Forwarding, 反向路径转发)为组播路由协议的一个防环机制,防环原理是保证组播报文从正确的接口到达。运作过程:当RPF接口收到组播报文时,会利用单播路由对组播报文的源IP地址进行检查,查询本地到达此IP地址的单播路由,如果单播路由的出接口和组播报文到达的接口不一致,那就意味着RPF检查不通过,组播报文会被丢弃。

在SPT中,路由器在进行SPT检查时,使用的是组播报文的源IP地址,也就是组播源的IP地址;在RPT中,使用的是RP的地址,因为在RPT中RP是RPT的树根。

12.5.4 PIM概述

PiM(Protocol Independent Multicast, 协议无关组播)是目前使用最广泛的域内组播路由协议。目前PIM有两个版本,PIMv1几乎已经不用了,主要使用的是PIMv2版本,以下介绍的也都是PIMv2。

PIMv2依赖设备的单播路由表,之所以叫“协议无关”,是因为PIMv2并不关注设备运行的是哪些单播路由协议,OSPF、ISIS、RIP、BGP甚至静态路由都能为PIM提供服务。

PIM主要存在两种工作模式:密集模式(Dense Mode)以及稀疏模式(Sparse Mode)。

12.6 PIM-DM

密集模式适用于组播接受者比较密集的紧凑型网络,PIM-DM开始用作后,初始情况下会将形成的组播分发树覆盖全网(PIM-DM使用的是SPT),这样会造成并没有组播接收者的分支也收到了组播流量,此时不需要这些组播流量的网络设备采用一种剪枝(Prune)的方式将自己从组播分发树上剪除。如果后来

上图中,全网的路由器都激活了PIM-DM,当组播源开始向239.1.1.56发送组播流量时,R1收到组播流量后,在完成RPF检查后,会将组播流量从除过上游的接口之外的所有存在PIM邻居的接口发出,R2、R3、R4的行为也和R1的 行为一致。但R3并不需要这些组播流量,所以会发起一个剪枝过程,将自己从SPT上剪除。但如果R3下联的网络中出现了239.1.1.56的组播接受者,R3会立即发起嫁接(Graft)动作,将自己所在的分支嫁接到SPT上,从而获取对应的组播流量。

由此可以看出,PIM-DM更适用于网络规模小、组播接收者分布比较密集的网络。

12.6.1 协议报文

12.6.2 邻居关系

激活PIM后,接口会周期性的发送PIM Hello报文,Hello报文的的源IP地址为本接口的IP地址,目的IP地址为PIMv2路由器的组播IP地址(224.0.0.13)。缺省间隔为30s,可以通过pim timer hello命令修改。PIM Hello报文的作用包括邻居关系建立和维护、DR的选举。

路由器发现PIM邻居后,会启动一个计时器,计时器的值为对方PIM Hello报文中携带的Holdtime,缺省为105s,计时器会在收到该邻居发送的PIM Hello报文时刷新,计时器超时后,该邻居会被立即删除。Holdtime可通过pim hello-option holdtime命令修改。

12.6.3 扩散过程

 在上图中,网络中所有的路由器运行着OSPF,R2和R4在其连接PC 的接口上激活了IGMPv2,最后在路由器的相关接口上激活了PIM-DM。

这时组播源10.1.1.1以239.1.1.15发送组播报文,R1收到后,首先会进行RPF检查,检查通过后会在PIM表项中创建一个(10.1.1.1,239.1.1.15)表项,并将GE2/0/0设指定为上游接口,将除过GE2/0/0以外的连接PIM邻居的接口指定为下游接口。随后对组播报文进行拷贝,发往所有的下游接口。需要注意的是,R1并不会在每次组播报文到达时都进行RPF检查,而是在创建(10.1.1.1,239.1.1.15)表项后,在该表项中标记上游接口GE2/0/0,后续(10.1.1.1,239.1.1.15)的组播报文到达后,R1会先查询组播转发表,如果查到的对应接口和实际到达接口一致,组播报文就会被继续向下游转发出去。

R2收到组播报文后,也会和R1一样首先会进行RPF检查,然后为其创建(10.1.1.1,239.1.1.15)表项,在表项中标记GE0/0/0接口,指定上游接口和下游接口。在指定下游接口过程中,除了R1以外R2并没有发现其他的PIM邻居,但在本地的IGMP路由表中存在一条(*, 239.1.1.15)的表项,并且该表项的对应接口是GE0/0/1。于是R2将GE0/0/1接口添加到组播路由(10.1.1.1,239.1.1.15)的下游接口列表中,至此PC1就可以接收到239.1.1.15的组播流量了。

R4在接收到组播报文后,与R2的行为类似。

R3在接收到组播报文后,与R1的行为类似,在进行RPF检查,路由表项创建,指定上游接口和下游接口后,会将组播报文继续向下游接口转发。

12.6.4 剪枝过程

在上图中,R5的(10.1.1.1,239.1.1.15)的路由表项中并没有下游接口,所以它会向上游PIM邻居发送PIM剪枝报文,将自己从SPT上剪除。

 

 上图是R5发送的剪枝报文,报文的源IP为连接上游PIM邻居接口的IP地址10.1.35.5,目的IP地址为224.0.0.13(PIM协议侦听地址)。R3收到剪枝报文后,会立即将这个下游接口从(10.1.1.1,239.1.1.15)表项中移除,并启动一个计时器,然后会继续向这个下游接口发送(10.1.1.1,239.1.1.15)组播流量。如果在计时器超时之前,R3再次收到了剪枝报文,那么计时器会被重置,此接口会保持移除状态。如果计时器在任何时候超时,剪枝状态会被取消,这个下游接口会被重新添加到(10.1.1.1,239.1.1.15)路由表项中。

对于R3而言,连接R5的接口被剪枝后,本地的(10.1.1.1,239.1.1.15)路由表项也没有下游接口,于是R3也会向上游PIM邻居R1发起剪枝动作,最终R1只会将(10.1.1.1,239.1.1.15)的组播流量发给R2和R4。

12.6.5 嫁接过程

由剪枝过程可以得知,当剪枝动作完成后,如果组播路由器又需要这个组播流量,会停止发送剪枝报文,计时器超时后剪枝状态会被取消,但时依靠这个机制是不现实的。在组播路由器在剪枝动作后,又需要这个组播流量,它将会主动发起嫁接动作。

嫁接过程:组播路由器会向上游PIM邻居发送PIM嫁接报文,目的IP地址为邻居的接口IP,报文中填充着组播路由表项(10.1.1.1,239.1.1.15),同时在本地接口启动一个嫁接计时器,缺省3s,在超时后如果没有收到PIM嫁接确认报文,会继续发送嫁接报文。

对于上游PIM路由器而言,在收到PIM嫁接报文后,根据报文中的路由表项,将这个下游接口添加到对应的组播路由表项中。

12.6.6 断言机制 

上图中,路由器都运行PIM-DM,R2、R3、R4接入同一个二层交换机,PC为239.1.1.37的组播接收者。

 在这个组播网络中,R4会收到分别来自R2和R3的两份相同的组播流量,断言机制可以避免这种问题的出现,断言机制被使用在PIM-DM和PIM-SM中,当路由器(S,G)的下游接口收到了(S,G)的组播流量时,断言机制会被触发,此时重复发送组播流量路由器之间会进行选举,胜出者继续发送对应的组播报文,选举失败的会停止转发对应组播的报文。

断言机制运行过程:R2在接口GE0/0/1收到了(10.1.1.1,239.1.1.37)报文,对其进行SPF检查,未通过,同时触发断言机制,R3同理。R2和R3都在本地的GE0/0/1发送断言报文进行比较,目的IP地址为224.1.1.13,报文中的PIM载荷有四部分:组播组地址、组播源地址、优先级、度量值。(优先级为到达组播源的单播路由优先级、度量值为2)。

比较依据:

优先级小优 —> 度量值小优 —> 接口IP地址小优

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值