Posted in: PIM

组播服务模型之SSM

组播服务模型之SSM

技术背景

  • 在ASM(Any-Source Multicast,任意源组播)组播服务模型中,对于每个组播组而言,任意的设备都可以成为组播源。
  • 对于组播接收者而言,它们事先并不知晓组播源的地址,只要它们加入了一个组播组,当任意的源向该组发送组播流量时,组播接收者会收到这些流量。
  • PIM-DM及PIM-SM都支持ASM。
  • PIM-DM适用于组成员分布较为密集的小型网络,而PIM-SM则适用于组成员分布较为稀疏的大型网络。

引入问题

  • 对于PIM-SM而言,由于事先并不知晓组播源的地址,因此最后一跳路由器在发现其直连网络中出现组成员之后,首先朝着RP的方向构建一段RPT的分支从而在RPT上接收组播流量,然后为了确保在到达组播源的最优路径上接收组播流量,还需在获知组播源的IP地址后进行SPT的切换,这个过程是可以进行优化的。
  • 在ASM中,为了保证组播流量在接收者这里不会产生冲突,同一个组播组地址在同一时间只能够被一个组播应用使用,即同一时间只允许一个组播源向某个特定的组播组发送组播流量。这个限制将直接造成组播IP地址紧缺。

解决方法

SSM ( Source-Specific Multicast,特定源组播)组播服务器模型可以解决上述问题。

  • 在SSM中,组播接收者在加入组播组时,可以指定接收或者拒绝来自特定组播源的组播流量——特定源组播因此得名。也就是说,组播接收者通过IGMP成员关系报告加组时,除了指定期望加入的组播组地址,还能够指定组播源的地址。
  • 为了实现这样的需求,IGMPv1及IGMPv2都是无法直接胜任的,而IGMPv3则天然拥有这方面的能力和优势。
  • SSM+IGMPv3的组合,使得最后一跳路由器在初始时就知晓了组播源的地址,并且直接朝着源的方向构建SPT的分支,于是组播流量就能够沿着构建好的SPT直接到达接收者,而不用经过RP,实际应用场景上完全不需要用到RP。
  • 此外,SSM也缓解了组播IP地址紧缺的问题,在SSM中,在同一时间内,不同的组播源可以向同一个组播IP地址发送数据,因此,每个组播应用无需独占一个组播IP地址。(SSM中,组播接收者通过IGMPv3明确了其感兴趣的组播源和组播组地址,同一时间,即使存在多个组播源向同一个组播地址发送组播流量,如果不是组播接收者感兴趣的组播源,最后一跳路由器也不会向接收者传递组播流量)
  • IANA规定,232.0.0.0/8这个组播地址段专门用于SSM。SSM在PIM-SM的基础上实现,部署SSM时,只需要在设备上激活PIM-SM即可,最后一跳路由器根据组播组地址来选择PIM-SM或PIM-SSM工作模式(HW),缺省情况下,针对232.0.0.0/8地址范围的组播组不执行RPT加入过程。

PIM-SSM优点

PIM-SSM的出现,解决了ASM存在的诸多短板,也体现了诸多优势。

  1. 由于组播接收者在宣告自己加入组播组的时候,同时还指定了组播源的地址,因此最后一跳路由器在最开始的时候便知晓了组播源的地址,它可以直接朝着源的方向建立SPT的分支,而不用朝着RP的方向建立RPT的分支,然后等待组播流量到达之后再进行SPT切换,效率得到了提升。
  2. 由于组播接收者明确了其感兴趣的组播源,因此如果存在其他组播源向该组播组发送流量,那么这些流量将不会被转发给组播接收者。
  3. 在SSM中,多个不同的组播应用,可以使用相同的组播组地址。因为有了组播源的加入,组播网络可以在目的IP地址相同的组播流量中,根据源IP地址区分不同的应用。这个特点极大地缓解了组播IPv4地址短缺的问题。

PIM-SSM的工作机制

如下图所示,Rl、R2、R3及R4是PIM-SM组播路由器,这些路由器都运行了OSPF,并通过OSPF获知了到达全网各个网段的路由。其中R4在自己连接终端PC的接口上激活了IGMPv3。

file

(1)组播接收者触发:

PC希望接收组播源10.1.1.1发往组播组232.1.1.1的流量,PC运行的IGMPv3使得这个需求的实现变得非常简单。它向网络中发送一个IGMPv3 membership report,在该报文中,包含一个group record,该组记录的类型为Mode Is Include,组地址为232.1.1.1,而组播源为10.1.1.1。

(2)最后一跳路由器处理流程:

  • 最后一跳路由器R4收到这个IGMPv3报文后,意识到其接口直连的网络中出现了组播组232.1.1.1的接收者,并且该接收者指定的组播源为10.1.1.1。
  • 由于组地址232.1.1.1是SSM地址,因此R4采用PIM-SSM模式进行后续的工作。
  • R4在自己的单播路由表中查询到达组播源10.1.1.1的路由,记录目的路由的出接口,然后立即在其PIM路由表中创建(10.1.1.1,232.1.1.1)表项,将到达10.1.1.1的路由的出接口作为上游接口,将收到IGMPv3成员关系报告报文的接口添加到下游接口列表。
  • 然后R4将在自己与组播源之间建立一段SPT的分支。它从上游接口发送一个(10.1.1.1,232.1.1.1)的PIM加入报文(其实PM-SSM的工作无需RP,也不用执行RPT加入过程。)。

(3)中间路由器处理流程:

  • R2收到下游PIM邻居R4发送的(10.1.1.1,232.1.1.1)加入报文后,在其PIM路由表中创建(10.1.1.1,232.1.1.1)表项,将接收加入报文的接口添加到该表项的下游接口列表中,将到达组播源10.1.1.1的接口作为上游接口。
  • 然后,R2从上游接口向上游邻居R1发送(10.1.1.1,232.1.1.1)PIM加入报文。

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

  • 第一跳路由器R1收到R2发送的(10.1.1.1,232.1.1.1)PIM加入报文后,如果已经存在(10.1.1.1, 232.1.1.1)表项,则将收到加入报文的接口添加到该表项的下游接口列表中,如果没有就创建(10.1.1.1, 232.1.1.1)PIM表项,并且将接收PIM加入报文的接口添加到该表项的下游接口列表中。
  • 当10.1.1.1开始向232.1.1.1发送组播流量时,组播流量便能够沿着已经建立好的SPT流向PC。
Back to Top