PIM-DM简介(3)

PIM-DM嫁接过程

问题背景

PIM-DM在初始化过程中,组播流量被扩散到全网各个角落,不需要组播流量的组播路由器需通过PIM剪枝报文将自己所在的分支从SPT上剪除。在此之后,如果某个已经被剪枝的分支现在又需要组播流量了,不可能等上游设备接口的剪枝状态超时后,才能再次接收组播流量。

解决方法

PIM-DM定义了嫁接机制,使得组播路由器在需要组播流量时,可以主动将自己所在的分支嫁接到SPT中。

示例

如下图所示:
在这里插入图片描述

  • 五台路由器构成了一个组播网络,每台路由器都运行了PIM-DM,R1连接着组播源Source,而R3则连接着组播组239.1.1.81的接收者。
  • 网络初始化过程中,Source发出的(10.1.1.1,239.1.1.81)组播流量将被推送到全网,由于R4、R5并不需要(10.1.1.1,239.1.1.81)组播流量,因此它们各自向上游邻居发送PIM剪枝报文。网络稳定后,组播流量按照上图中所示的路径转发。
  • 现在,R5所直连的网络中,出现了组播组239.1.1.81的成员PC2(如图下图),为了将自己拉回SPT,R5将向其上游邻居R4发送一个嫁接报文。
    在这里插入图片描述

(1)组播接收者触发最后一跳路由:

  • R5通过PC2发送的IGMP成员关系报告发现直连网络中出现了组239.1.1.81的成员(一般情况下,终端组播设备采用IGMPv2 membership report,R5形成(*, G)表项),于是向上游邻居R4发送一个PIM嫁接报文,这是一个单播报文,如下图所示。嫁接报文的源IP地址是R5的接口地址10.1.45.5,目的IP地址是上游邻居R4的接口地址10.1.45.4(PIM邻居表+PIM路由协议表可以确定上游接口的IP地址),报文中填充着(10.1.1.1,239.1.1.81)的信息。
  • R5为上游接口GE0/0/1启动一个嫁接计时器(缺省3秒),如果在该计时器超时后,依然没有收到上游邻居发回的PIM嫁接确认报文则继续发送嫁接报文。
    在这里插入图片描述

(2)中间组播路由器处理流程:

  • R4将在其GE0/0/2接口上收到R5发送的嫁接报文,由于该接口当前处于剪枝状态,因此R4先将其切换到转发状态,
  • 之后,将GE0/0/2接口添加到(10.1.1.1,239.1.1.81)表项的下游接口列表中,
  • 然后,R4向R5发送一个嫁接确认报文。
  • 但是由于R4自己并未接收到(10.1.1.1,239.1.1.81)组播流量,因此它需要继续往自己的上游发送嫁接报文。
  • R4的上游接口GE0/0/1当前处于剪枝状态,R4先将其切换到转发状态,
  • 然后,从该接口GE0/0/1发送单播的嫁接报文给R1。
  • 最后,R4为该接口启动嫁接计时器,并等待R1的嫁接确认报文。

(3)第一跳路由器处理流程:

  • R1在GE0/0/1接口上收到R4发送的嫁接报文后,它将原来处于剪枝状态的GE0/0/1接口切换到转发状态,
  • 并且将该接口添加到(10.1.1.1,239.1.1.81)表项的下游接口列表中,
  • 然后,向R4发送一个嫁接确认报文。
  • 由于R1是第一跳路由器,属于SPT的分支,可以直接获得了(10.1.1.1,239.1.1.81)组播流量,因此R1直接将组播流量拷贝到下游接口GE0/0/1。如下图所示描述了这个过程。
    在这里插入图片描述

(4)新的组播分发树(SPT)已经构建完毕,组播流量沿着新的SPT从源转发到接收者,如图所示:
在这里插入图片描述

PIM-DM断言机制

问题背景

若多台组播路由器向同一个网段转发重复的组播流量,这种组播转发显然是没有意义的,况且大量重复的组播流量还会造成网络带宽及设备资源的浪费。

解决方法

断言(Assert)机制可以很好地解决这个问题。这个机制依赖于PIM的断言报文,该机制在PIM-DM及PIM-SM中均被使用。

  1. 当组播路由器的某个接口被指定为(S,G)表项的下游接口,并且该接口收到了(S,G)的组播流量时,断言机制将被触发,这种现象意味着在同一个网段内,还有其他设备在发送重复的组播流量,
  2. 因此一场选举将会展开,从选举中胜出的一方继续向该网段转发(S,G)组播流量,而失败的一方则停止向该网段转发(S,G)组播流量。

示例

如下图所示的网络中展示了断言机制触发场景:

  • 存在4台组播路由器,它们都运行了PIM-DM,其中R2、R3及R4各自有一个接口连接到同一台二层交换机。
  • PC是组播组239.1.1.37的成员,当组播源Source开始向239.1.1.37发送组播流量时,R1会将组播流量转发给R2及R3。
  • R2及R3各自对接收的组播流量进行RPF检查,检查通过后将流量从自己的下游接口GE0/0/1接口转发出去。
  • 此时,R3及R4会收到R2从GE0/0/1接口发出的组播流量,R3同理。结果便是R4将在自己的GE0/0/1接口收到两份重复的组播报文。
    在这里插入图片描述

断言机制工作原理

(1)R2、R3在自己的上游接口收到(10.1.1.1, 239.1.1.37)组播报文,该报文经RPF检查通过后,被R2、R3从下游接口GE0/0/1转发出去。
(2)R2在自己的(10.1.1.1, 239.1.1.37)下游接口GE0/0/1上收到了R3转发的(10.1.1.1, 239.1.1.37)组播报文,该报文无法通过RPF检查,因此直接被R2丢弃,与此同时,R2在GE0/0/1接口上启动断言机制。R3同理。
(3)最开始双方都认为自己是胜利的一方(Winner ),各自从GE0/0/1接口发送PIM断言报文(如下图所示)。
(4)假设在上图中R2通过OSPF获知到达Source的路由(OSPF内部路由),并且路由的度量值为2,而R3则并未运行OSPF,而是配置了到达Source的静态路由,静态路由的缺省度量值为0。
(5)那么R2发送出去的断言报文,源IP地址即R2的接口IP地址,目的IP地址为组播地址224.0.0.13,而报文中的PIM载荷部分包含4个关键字段:组播组地址、组播源地址、优先级和度量值。其中组播组地址为239.1.1.37,组播源地址为10.1.1.1,优先级则是R2到达Source的单播路由的优先级,此处值为10(因为R2是通过OSPF发现到达10.1.1.1的路由,OSPF内部路由的缺省优先级值为10),度量值则为2。
(6)与此同时,R3发出的断言报文中,优先级值为60(静态路由缺省优先级值为60),度量值为0,组播源和组播组地址和R2相同。
在这里插入图片描述
(7)R2及R3收到对方发送的断言报文后,便会进行比较,比较的内容及顺序如下。

  1. 比较双方到达组播源的单播路由优先级,优选值最小一方;
  2. 比较双方到达组播源的单播路由度量值,优选值最小的一方;
  3. 比较双方的接口IP地址,优选IP地址最大的一方。
    (8)根据上面的比较顺序,首先R2到达Source的单播路由优先级值为10,而R3该值为60,值更小的一方胜出,因此R2在本次选举中胜出。R2的GE0/0/1接口作为胜出的一方,保持转发状态,继续向直连网段转发(10.1.1.1,239.1.1.37)组播流量,而选举失败的R3则不再从自己的GE0/0/ 1接口转发(10.1.1.1,239.1.1.37)组播流量。
发布了17 篇原创文章 · 获赞 1 · 访问量 222

猜你喜欢

转载自blog.csdn.net/mn3321/article/details/105667775
PIM
dm