首页 » 技术分享 » 华为NP课程笔记14-PIM-SM和SPT切换

华为NP课程笔记14-PIM-SM和SPT切换

 

一、PIM-SM

1、PIM-SM(Protocol independent multicast-sparse Mode),协议无关组播-稀疏模式。属于稀疏模式的组播路由协议,适用于组成员相对分散、范围较广、大规模的网络。PIM-SM会在源到RP之间建立SPT树,在RP到接受者之间建立RPT树。

2、工作机制

(1)邻居发现Hello报文,接口互相发送hello报文,优先级高的或者IP地址大的成为DR。其中第一跳和最后一跳的DR才有实际意义。最后一跳DR向RP方向传递(*,G)表项,构建SPT树,第一跳DR向RP发送组播源注册消息。

(2)RP(Rendezvous Point)发现

既可以静态指定,也可以动态发现。

静态指定就是在每台路由器上配置指定具体的静态RP

(3)RPT共享树加入

新加入接收者,向路由器发送IGMP report报文,DR路由器收到后生成(*,G)报文,并逐跳向RP方向发送(*,G)Join报文,沿途创建(*,G)表项,生成一棵以RP为根的RPT。

(4)组播源注册过程

在PIM-SM网络中,任何一个新出现的组播源都必须首先在RP处“注册”,继而才能将组播报文传输到组成员。

 

组播源向第一条DR发送第一个组播报文,源端DR将该组播报文封装成Register报文并以单播方式发送给相应的RP,RP收到注册消息后,一方面从Register消息中提取出组播报文,并将该组播报文沿RPT分支转发给接收者。

另一方面,RP向源端DR发送(S,G)Join消息,沿途路由器上都会生成相应(S,G)表项。从而建立了一颗由组播源至RP的SPT树。

SPT树建立后,组播源发出的组播报文沿该SPT转发至RP。

RP沿SPT收到该组播报文后,向源端DR单播发送Register-stop消息。

 

3、配置命令

DR:

multicast routing-enable

int g0/0/0

   pim sm

   quit

pim

  static-rp 3.3.3.3   //指定RP地址,一般使用环回口地址

RP:

multicast routing-enable

int lo0

   pim sm

int g0/0/0

   pim sm

   quit

pim

  static-rp 3.3.3.3   //指定自己的地址

 

二、SPT切换

1、PIM-SM同时包含了SPT和RPT。通常情况下,组播源发出的组播报文会沿SPT到达RP,然后从RP沿RPT到达接收者。

在这种情况下,从组播源到接收者的路径不一定是最优的,并且RP的工作负担非常大。为此,我们可以启用RPT向SPT进行的切换机制。

 

2、PIM-SM通过指定一个利用带宽的SPT阈值可以实现RPT到SPT的切换。

用户端DR周期性检测组播报文的转发速率,一旦发现从RP发往组播组G的报文速率超过阈值,则触发SPT切换:

用户端DR逐跳向源端DR发送(S,G)Join报文并创建(S,G)表项,建立源端DR到用户端DR的SPT。

SPT建立后,用户端DR会沿着RPT逐跳向RP发送剪枝报文,收到剪枝报文的路由器将(*,G)复制成相应的(S,G),并将相应的下游接口置为剪枝状态。剪枝结束后,RP不再沿RPT转发组播报文到组成员端。

如果SPT不经过RP,RP会继续向源端DR逐跳发送剪枝报文,删除(S,G)表项中相应的下游接口。剪枝结束后,源端DR不再沿“源端DR-RP”的SPT转发组播报文到RP。

在VRP中,缺省情况下连接接收者的路由器在探测到组播源之后(即接收到第一个数据报文),便立即加入最短路径树,即从RPT向SPT切换。

通过RPT树到SPT树的切换,PIM-SM能够以比PIM-DM更精确的方式建立SPT转发树。

 

SPT切换默认是开启的

pim

  spt-switch-threshold infinity   设置STP切换阀值为无穷大    

切换阀值默认是0,STP切换默认开启,设为无穷大就是关闭了SPT切换。

    2、案例理解

拓扑图:

分析过程:

(1)配置各接口地址IP,配置OSPF实现全网互通,具体配置过程省略,为方便分析,3台PC暂时关闭。

(2)路由器接口配置PIM-SM模式,AR2、AR7、AR8配置IGMPv2,AR4为静态RP,部分配置命令如下:

AR1:

multicast routing-enable

int g0/0/0

  pim sm

int g0/0/1

  pim sm

int g0/0/2

  pim sm

pim

  static-rp 4.4.4.4

 

AR4:

multicast routing-enable

int g0/0/0

  pim sm

int g0/0/2

  pim sm

int lo0

  pim sm

pim

  static-rp 4.4.4.4

 

AR7:

multicast routing-enable

int g0/0/0

  pim sm

  igmp enable

int g0/0/1

  pim sm

pim

  static-rp 4.4.4.4

 

 

(3)PC1,配置加入224.1.1.1,配置MCS1组播信息

开启PC1后,AR4、AR6、AR8的pim routint-table生成(*,G)表项,构成RPT树,其他路由器pim routing-table是空的:

开启MCS1,启动组播流,AR1、AR5、AR6、AR8的pim routing-table里面出现了(*,G)和(S,G)表项,形成SPT树,而AR2、AR3上依然是空表项,AR4上也有这两类表项,但上游邻居和下游接口因为SPT切换产生的剪枝报文都是空的:

 

 

(4)shutdown掉AR5的g0/0/0端口,在重新开启MCS1组播流,此时AR2、AR3的pim routing-table出现(S,G)表项,AR4中的两类表项的上下游接口正常出现,AR1、AR2、AR3、AR4构成SPT树,AR4、AR6、AR8构成RPT树:

 

 

(5)关闭PC1,开启PC2,PC2加入组播组224.1.1.1 。

   PC2开启后,向AR2发送igmp report报文,AR2生成(*,G)表项,并向AR4方向传递,构成RPT树,其中G0/0/0口为上游接口,G0/0/2为下游接口;AR3生成(*,G)表项,上游接口为g0/0/2,下游接口为g0/0/0; AR4生成(*,G)表项,g0/0/2为下游接口,上游接口为空;

   PC2开启,组播流量没开启前的PIM routing-table:

 

  当组播流下来的时候,AR1向AR4发送单播注册,AR4生成(S,G)表项,根据RPF检测,G0/0/2为上游接口,同时向AR1方向建立SPT树;AR3生成(S,G)表项,其中g0/0/0为上游接口,下游接口拷贝 (*,G)中的下游接口,在(*,G)中g0/0/0还是下游接口,这时候,只有g0/0/2被拷贝成(S,G)中的下游接口(因为规定上游接口不能同时成为下游接口),AR3同时拥有(*,G)、(S,G)表项,会向上游接口发送(S,G)join报文;AR2收到AR3的(S,G)join报文后,生成(S,G)表项,根据rpf检测,G0/0/1成为上游接口,g0/0/2、g0/0/0成为下游接口。这样就形成了AR1-AR2的SPT树,组播流量会直接经AR1-->AR2到达PC2,在AR2还有一份去往AR3的流量。

 

 

组播流量开启后的PIM routing-table:

 

 

 

转载自原文链接, 如需删除请联系管理员。

原文链接:华为NP课程笔记14-PIM-SM和SPT切换,转载请注明来源!

0