IP Multicast: MSDP RPF检测详细规则(转)

来源:互联网 发布:软件研发合同 编辑:程序博客网 时间:2024/05/16 14:49

转发于:http://blog.sina.com.cn/s/blog_4b5039210102e13x.html


http://www.china-ccie.com/ccie/lilun/Multicast/Multicast.html#34 RPF检测的情况太多,暂时没时间去敲实验验证了。另外讲inter-domainmulticast有个NANOG里的PPT写的非常好,118页,内容丰富,参考http://www.nanog.org/meetings/nanog28/abstracts.php?pt=NzA4Jm5hbm9nMjg=&nm=nanog28


MSDP检测详细规则

在以下3种情况下收到的SA是不需要做RPF检测的:(相当重要

1.发送方MSDPpeer是default MSDP peer或是唯一的1个MSDP peer(即只配置了1条ip msdppeer命令)的情况下;

2.发送方MSDPpeer是MSDP Mesh Group中的一员;

3.发送方MSDPpeer的IP地址与SA数据包中的RP地址相同。

所以在以上3种情况下,BGP和MBGP都是不需要的。

通常情况下,MSDP peer就是BGP或MBGP邻居,但也有不是的情况,因为BGP的邻居类型分interior BGP (iBGP)和exterior(eBGP),所以SA的RPF具体检测过程也分如下3种:

 

1.MSDPpeer是iBGP邻居;

2.MSDPpeer是eBGP邻居;

3.MSDPpeer不是BGP邻居(但域之间也必须有BGP)。

 

注:在以上3种检测情况下,都需要对比SA中RP的IP地址信息,所以务必保证将SA中RP的IP地址通告进BGP中;同样的,也建议使用建立MSDPpeer的地址来建立BGP邻居,更能保证RPF的检测通过。

 

SA的RPF具体检测细节如下:

1.当MSDPpeer是iBGP邻居

如果BGP路由表中显示去往SA数据包中RP地址的最佳路径就是走这个iBGP邻居,则检测通过,否则检测失败。(先查多播路由表(MRIB),再查单播路由表(URIB)

解释:BGP路由表中去往SA数据包中RP地址的最佳路径的下一跳地址等于发送该SA数据包的MSDPpeer的地址。

所以建议建BGP和建MSDP的地址使用同一个地址。

 

2.当MSDP peer是eBGP邻居;

如果BGP路由表中显示去往SA数据包中RP地址的最佳路径的下一跳AS号码就是这个eBGP邻居的AS号码,则检测通过,否则检测失败。(先查多播路由表(MRIB),再查单播路由表(URIB)

解释:最佳路径的下一跳AS就是AS_PATH中的第1个AS,即AS_PATH中最左边的AS。

 

3.当MSDP peer不是BGP邻居(但域之间也必须有BGP)

如果BGP路由表中显示去往SA数据包中RP地址的最佳路径的下一跳AS号码和去往MSDPpeer的最佳路径的下一跳AS号码相同,则检测通过,否则检测失败。(先查多播路由表(MRIB),再查单播路由表(URIB)

解释:不需要再解释。

DefaultMSDP Peer

当MSDP路由器收到SA的时候,必须依靠BGP来做RPF检测,这就强制PIM-SM域中的路由器运行BGP,否则SA数据包会因为RPF检测不通过而被丢弃。然而在很多时候,这是不现实的,例如这个网络是个末节网络,或者是用户与ISP互联的网络,通常这样的网络只有一个出口,只需要配一条默认路由指出去就足够了,根本用不着配BGP,如下图:

IP <wbr>Multicast: <wbr>MSDP <wbr>RPF检测详细规则(转)

 

如上图所示,PIM-SM Domain1是个末节网络,对外面只有一个出口,所以只需要对外写一条默认路由即可,不需要配置BGP,但是很明显,对于MSDP收到的所有SA都是应该接收的,并且也没有必要对SA数据包做RPF检测,因为没有其它办法能够收到SA数据包了,所以从唯一的出口收到的SA统统都有效。在上述情况下,就可以通过在PIM-SMDomain 1的MSDP路由器R1上将它的MSDP peer指定为Default MSDP Peer,也就是将PIM-SMDomain 2中的R2指定为Default MSDPPeer,这样一来,R1从R2收到的所有SA都不需要再做RPF检测就能够缓存起来并使用。在某些情况下,为了网络的冗余性,一个PIM-SM域也可能对连了多个PIM-SM域,但之间并没有运行BGP,或者为了使MSDP有冗余功能,可以为一个DefaultMSDP Peer再配置一个备份Default MSDP Peer,当主Default MSDPPeer失效之后,再从备份Default MSDP Peer接收SA,如下图:

IP <wbr>Multicast: <wbr>MSDP <wbr>RPF检测详细规则(转)

 

如上图所示,PIM-SM Domain 1同时与PIM-SMDomain 2和PIM-SM Domain3建立MSDP连接,但之间并未运行BGP,在这种情况下,R1可以同时将R2与R3都指定为Default MSDPPeer,但配置命令会存在先后顺序,例如先指定了R2,再指定了R3,那么在正常情况下,只能从先指定的R2那里接收SA,只有在R2失效后,才能从R3接收SA;在指定了多个DefaultMSDP Peer的情况下,一开始只能从第一个Default MSDPPeer那里接收SA,只有当第一个不可用了,才能从第二个Default MSDPPeer那里接收SA,第二个不可用再从第三个接收,依此类推。

指定Default MSDP Peer的命令为:ip msdpdefault-peer xxx(xxx为对端MSDP路由器地址);

在配置此命令之前,必须已经通过命令 ip msdp peerxxx指定过常规MSDP peer。

 

但也可以在指定多个Default MSDPPeer的情况下从多个Default MSDP Peer那里同时接收SA,在这里有个条件限制,那就是为每个Default MSDPPeer配置Prefix List来限制只从特定Default MSDP Peer接收特定的SA。

 

为Default MSDP Peer指定PrefixList的命令为:ip msdp default-peer xxxyyy(xxx为对端MSDP路由器地址,yyy为PrefixList名)。

 

Default MSDPPeer的优势:

与Default MSDPPeer之间不需要运行BGP,从Default MSDP Peer收到的所有SA都不需要做RPF检测。

 

重点说明:

如果MSDP路由器上只使用了单条ip msdppeer命令指定了唯一的1个MSDP peer,那么该MSDP peer等同于Default MSDPPeer。

MSDP MeshGroup

MSDP MeshGroup的中文意思是MSDP全互联组,从字面意思就可以看出,MSDPPeer之间的连接应该是全互联的,何为全互联?全互联就是指每两个MSDP Peer之间都有一条MSDP连接,换句话说就是每一个MSDPPeer都和其它任何MSDP Peer拥有MSDP连接。在全互联的模式下,每一个MSDP Peer收到任何SA都不会转发给其它MSDPPeer,为什么呢?例如有A、B、C共3个MSDP路由器,它们之间是全互联的,当B从A那里收到SA之后,是不会转发给C的,因为A和B有MSDP连接,A和C也有MSDP连接,既然B能收到A的SA,那说明A也将同样的SA发过给C了,既然C也能收到和B收到的一样的SA,那么B也没必须多此一举将自己收到的SA发给别人,自己能收到,证明别人也能收到,因为这个网络是全互联的。

因为MSDP Mesh Group中的任何MSDPPeer在收到SA之后都不会转发给其它MSDP Peer,这就表明对于同一份SA数据包来说,MSDP Peer永远只能从单个MSDPPeer那里收到,并且发送SA的那个MSDP Peer就是初始MSDP Peer,这也保证了MSDPPeer所收到的SA永远都是对的,MSDP Peer永远不可能从一个错误的路径收到不可信任的SA。既然这样,从MSDP MeshGroup中的MSDP Peer收到的所有SA都不再需要做RPF检测便被缓存起来使用。

指定MSDP Mesh Group的命令为:ip msdpmesh-group test-mesh-group xxx(xxx为对端MSDP路由器地址,test-mesh-group为MeshGroup的组名,可以为每个MSDP peer配置不同的组名)。

在配置此命令之前,必须已经通过命令 ip msdp peerxxx指定过常规MSDP peer。

MSDP MeshGroup的优势:

与MSDP Mesh Group中的MSDP Peer之间不再需要运行BGP,从MSDPMesh Group中的MSDP Peer收到的所有SA都不再需要做RPF检测。

杜绝了SA流量泛洪,减少了不必要的SA数据包转发。


原创粉丝点击