留言板

CCIE R&S v4.0 理论

当前位置: 首页CCIE资料库CCIE R&S v4.0 理论Multicast


Multicast

 

                                                       文档下载:

  目录

概述
组播的三个组成部分
组播地址
组成员机制
组播协议
PIM
组播树
组播反向路径转发
PIM模式
PIM-SM RP
PIM DR
PIM前转器
PIM-DM数据包
PIM-SM数据包
RP的确立
Pim Sparse-Dense-mode
PIM Dense Mode Fallback
共享树切换到源树
PIM-SM 之NBMA Mode
配置组播
配置PIM-DM
配置PIM-SM
PIM-SM的NBMA Mode
Source Specific Multicast(SSM)
MSDP (Multicast Source Discovery Protocol)
   PIM概述
   MSDP概述
   MSDP RPF检测
   MSDP RPF检测详细规则
   Default MSDP Peer
   MSDP Mesh Group
   MSDP SA Filter
   PIM-SM域边界
   组播流RPF检测详细规则
   Anycast RP
   配置一对一PIM-SM域的MSDP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置GRE Tunnel隧道
      4.配置MSDP
      5.通过单播路由表解决PIM-SM域间组播通信问题
      6.通过静态组播路由表解决PIM-SM域间组播通信问题
      7.通过MBGP解决PIM-SM域间组播通信问题
   配置3个PIM-SM域全互联的MSDP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置MSDP
      4.配置MBGP帮助MSDP的SA通过RPF检测
      5.测试default MSDP peer帮助MSDP的SA通过RPF检测
      6.测试MSDP Mesh Group帮助MSDP的SA通过RPF检测
   配置Anycast RP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置MSDP
      4.测试Anycast RP冗余性
IPv6 Multicast

 

概述

    在当前的IP网络中,某台主机将数据包发向另一台主机时,就需要在数据包的目标IP位置写上那台主机的IP地址,再将数据包发出去,这个数据包发出去后,只有那台主机才能收到并且打开,而其它主机是不能收到和打开的。如果还想发送数据包给别的主机,就需要为数据包重新写上别的主机的IP地址,然后发出去。要将数据包发给几台主机,就需要为每个独立的数据包写上相应的目标IP地址。一个数据包包含一个特定的目标IP地址,并且这个数据包只能由相应的某台主机能够接收并且查看,这样的数据包称为单播(Unicast)。当要将同一份数据发送给多台主机时,如果使用单播的传送方式,那么需要发给几台主机,就需要重新封装几次数据包,并且将每份数据包单独发送给每台主机。

    当使用广播来发送数据包时,目标IP为广播地址的数据将被网络中的每台主机接收并查看,但广播是不能被路由器转发的。

    在网络上,当需要将一份同样的数据发送给多台主机时,如数字电视、视频会议等应用,这样的数据有多种传送方式,如下面两种:

1.单播

    在使用单播的情况下,需要为每个接收者重复发送单播,如果接收者数目过多,那么数据源就需要多次发送而承受巨大的压大,并且低速的WAN链路也会成为潜在的瓶劲,如果数据对时延比较敏感,还会造成延迟。

2.广播

    在使用广播的情况下,数据源只需要将同一份数据发送一次,但是负担却转移到了网络中的其他主机,因为不管想不想接收这个数据,都必须接收;并且广播是不可跨越路由器的,如果接收者在远程网络,将会造成数据丢失的情况。

3.组播

    从上面的结论中可以看出,当需要将一份同样的数据发送给多台主机时,虽然使用单播可以跨越路由器,但是需要将同一份数据发送多次,不切实际;而使用广播只需要发送一次数据,但是却让网络中每个人都必须接收数据,并且数据不能穿越路由器,造成远程网络收不到数据,所以也不可行。考虑到这些因素,便开发出了一种新的数据传输方式,这样的传输方式结合了单播和广播的优势,即将一份数据发出去后,这样的数据可以同时被多台主机接收,并且数据可以穿越路由器,从而被路由到远程网络,这样的数据就是组播(Multicast),因此,组播数据发出去后,可以只被一组特定的主机接收,而不想接收的主机,是收不到的,组播还可以被路由器转发到远程网络,前提是路由器必须开启组播功能。在组播中,想要接收组播的主机,被称为组员,或组成员。

                           返回目录

组播的三个组成部分

1.组播地址(能被组播识别的地址集)

2.组成员机制(主机加入和退出组的机制)

3.组播路由协议(路由器有效传送组播到各个网络的组成员,且不会过度消耗网络资源的路由协议)

 

    当需要将一份同样的数据发送给多台主机时,在使用组播的情况下,就需要将需要接收数据包的主机标识出来,要区别于不接收的主机,只有想要接收的主机,才能收到相应的组播数据,这时就需要为组播数据包写上特定的IP地址,被写上组播地址的数据包,只能被特定的组成员接收,所以要将组播正常的发送到组成员,就必须为组播数据包写上组播地址,当网络中有多种组播数据时,每种数据应该写上不同的组播地址。

    当写上了组播地址的数据包在网络中传送时,这样的数据包只应该被特定组的组成员接收,只有属于同一个组的成员,才能接收该组的数据包,所以必须确认哪些主机是组成员,哪些主机不是。要想接收组播,主机要做的事就是加入特定的组,特定的组,就是由组播地址来区分的。当主机加入了某个组之后,便能收到该组的数据,而当主机不想接收组播时,就应该退出相应的组,这样就可以停止组播的接收和转发,要完成这一切,就需要一种主机加入和退出组的机制,要区别哪些是组成员,哪些不是。

    如果某个组的成员分布在不同的网络中,那么就需要路由器转发组播,才能保证远程主机能够收到组播数据。要让路由器为组播数据提供转发,就需要让路由器拥有像单播路由表一样的转发表,依据路由表来决定数据包该从哪个接口发出去。要让路由器依据路由表来转发组播,就需要有组播路由表,而路由器的组播路由器,就需要靠特定的组播路由协议来收集组播路由表,组播路由表指导路由器如何将组播正确转发到组成员。

    下面分别来详细介绍组播地址、组成员机制以及组播路由协议的工作过程:

                           返回目录

组播地址

 

组播IP地址

    在我们区分一个IP地址是哪类地址时,只需要看第一个字节便能得出结果。

    在IP地址一个字节的8 个bit中,相应bit位为1时,便得到相应的值,每个bit位的取值分别如下:

128  64  32  16  8  4  2  1

    A类IP地址第一字节的第1个bit总是为 0,后面7个bit可以随意设置,所以A类IP地址第一个字节的取值范围为:

0 0 0 0 0 0 0 0   (最小时,值为0)

0 1 1 1 1 1 1 1   (最大时,值为127)

 

    B类IP地址第一字节的前面2个bit总是为 1 0,后面6个bit可以随意设置,所以B类IP地址第一个字节的取值范围为:

1 0 0 0 0 0 0 0   (最小时,值为128)

1 0 1 1 1 1 1 1   (最大时,值为191)

 

    C类IP地址第一字节的前面3个bit总是为 1 1 0,后面5个bit可以随意设置,所以C类IP地址第一个字节的取值范围为:

1 1 0 0 0 0 0 0    (最小时,值为192)

1 1 0 1 1 1 1 1    (最大时,值为223)

 

    而D类IP地址第一字节的前面4个bit总是为 1 1 1 0,后面4个bit可以随意设置,所以D类IP地址第一个字节的取值范围为:

1 1 1 0 0 0 0 0     (最小时,值为224)

1 1 1 0 1 1 1 1     (最大时,值为239)

 

    组播地址采用DIP地址表示,因为IP地址共32 bit,D类地址前4 bit总是为1110,所以

    组播地址取值范围为224.0.0.0——239.255.255.255。

 

    组播地址可以是永久的,也可以是临时的,“永久”是指一个组地址被永久分配给某个协议,临时的可以自由定义。

 

部分永久的组播地址:

224.0.0.1   子网中的所有系统和主机

224.0.0.2   子网中的所有路由器

224.0.0.4   DVMRP路由器

224.0.0.5   所有OSPF路由器

224.0.0.6   OSPF指定路由器

224.0.0.9   RIP-2路由器

224.0.0.10  EIGRP路由器

224.0.0.13  PIM路由器

224.0.0.15  CBT路由器

224.0.1.39  Cisco-RP-Announce

224.0.1.40  Cisco-RP-Discovery

 

    组播地址除了分为永久地址和临时地址之外,还可以细分,我们需要知道的细分地址为:

 

保留给网络协议的地址范围:

224.0.0.0 ——224.0.0.255

全局地址范围:

224.0.1.0 ——238.255.255.255

限制私有地址范围:

239.0.0.0 ——239.255.255.255

 

组播二层地址:

    一个IP数据包要在网络中传送,必须依照OSI七层模型由上至下封装,比如先封装TCP或UDP端口号,然后封装IP地址,如果是组播数据包,那么目标IP为组播地址,最后再封装数据链路层地址,如果介质是以太网,那么就需要封装MAC地址。   

    当一个数据包为组播数据时,那么这个数据包将被多台主机接收,所以数据包的MAC地址不能为某台主机的真实MAC地址,这时就需要根据组播IP地址,来封装一个拥有对应关系的组播MAC地址,因为这个组播MAC是与组播IP地址对应的,且不是主机的真实MAC地址,所以能够被多台主机接收到。

组播的MAC地址和组播IP地址拥有对应关系,也就是说组播MAC地址是根据组播IP地址计算得到的。一个MAC地址为48 bit,使用十六进制表示,组播MAC地址的前面24 bit固定为01 00 5E,第25 bit固定为0,而剩下的23 bit则使用组播IP地址后23 bit填充。如下图表示:

 

    从上图中可以看出,组播MAC地址前面24 bit固定为01 00 5E,第25 bit 固定为0,而后面23 bit由组播IP地址的后面23 bit映射过来。

    一个组播IP地址为32 bit,而前面4个bit固定为1110,后面23 bit被映射到了组播MAC地址,所以中间还有多余的5个bit可以随意设置,正因为这5 bit可以随意取值,最终造成有2的5次方共32个IP地址被映射到同一MAC地址。如下面出现的结果:

组播IP地址为:

224.0.0.1后23 bit为00 00 01

映射出组播MAC地址为01 00 5E 00 00 01

 

225.0.0.1后23 bit为00 00 01

映射出组播MAC地址为01 00 5E 00 00 01

 

226.0.0.1后23 bit为00 00 01

映射出组播MAC地址为01 00 5E 00 00 01

等等······。

由上可以看出,将会有多个组播IP地址映射到同一个组播MAC地址,数量为32个,但是这并不会影响到组播的通信,因为即使组播的MAC地址相同,但是组播IP地址可能是不同的,所以数据量不会被混淆,即使组播IP地址是相同的,不同数据流也会使用不同的上层端口号,最终也能将不同数据流区分开来。

                           返回目录

 

 组成员机制

要将组播数据准确发送给组成员,必须先确定哪些网络的哪些主机是组成员,只有先确定了成员的位置,才能正确转发组播。当组成员不再需要接收组播的时候,就应该停止向成员发送组播,要确定组成员不再需要接收组播,就必须在成员退出时明确通告发送者。要确定组成员,有两种方式:查询和报告。

查询,就是一台路由器向网络中发出查询消息,查询是否要主机要加入组,如果有主机应答,那么路由器就可以请求上游路由器把组播流量前转到这个子网中,如果没有主机应答,则请求上游路由器停止向其前转组播流量。

报告,主机也可以不必等待路由器的查询,可以主动向路由器请求加入某个组,退出时也要向路由器发送退出消息,让路由器停止向其前转组播流量。

在网络中,要确定组成员,需要使用一种协议,这种协议就是IGMP (Internet Group Management Protocol)因特网组管理协议,IGMP运行在路由器和主机之间,因为当组播发送者和组成员在不同网络时,需要路由器为组播数据提供转发,那么路由器就必须确认自己直连的网络中是否存在组成员,可以使用查询和报告来发现组成员,IGMP就可以完成这样的工作。

IGMP共有3个版本,version 1,version 2,version 3,而思科路由器接口默认使用version 2,下面分别来介绍version 1和version 2,而version 3暂不介绍。

 

IGMP  version 1

因为IGMP是运行在路由器和主机之间的,所以当IGMP分别运行在路由器和主机上时具有不同的功能。

IGMP v1路由器:

运行了IGMP的路由器目的是确定哪些主机是组成员,主要靠发送queries(查询)来确定,当路由器发送queries查询主机时,使用目的地址为224.0.0.1,当有主机回复时,便认为网络中存在组成员,则将组播发送到该网络,并且queries每一分钟发送一次,主机每次都回复,如果连续三个queries没有回复,即三分钟,那么路由器便认为网络中的组成员已经离开,也就停止向网络中发送组播数据了。

IGMP v1主机:

    运行了IGMP的主机发送reports来告诉路由器自己是组成员,reports同时也可以用来回复路由器的queries。Reports的目标地址是需要加入的组的地址,所以其它路由器和主机都能收到此数据包。一个网络中,因为有一个组成员时,路由器需要向该网络转发组播数据,组播是发送一次,有多个组成员时,路由器还是只向该网络发送一次组播数据,所以当一个网络中有多台主机需要成为组成员时,并不需要每台主机都向路由器发送reports,一个网络中只需要一台主机向路由器发送reports即可,其它主机全部不发,因为一台发送了之后,其它要接收组播的主机也是能正常接收到的,也为了避免所有组员都发reports而充斥整个网络。

当网络中的组成员离开后,并没有特定的机制来通知路由器组员的离开,唯一的方法就是路由器在3分钟后没有收到组成员对queries的回复,也就认为网络中的组成员已经离开,便停止向网络中发送组播数据了。而其它主机还需要继续接收组播时,就需要再次向路由器发送reports要宣告自己的存在。

 

IGMP  version 2

    IGMP  version 2与version 1具有相同的功能,具有相同的数据包,但也有不同的数据包,下面分别来看IGMP  version 2运行在路由器和主机上的数据包:

IGMP v2主机:

    IGMP主机发送三种数据包来向IGMP路由器通告自己的状态:

1.Membership Report

2.Version 1 Membership Report

3.Leave Group

 

Membership Report

    Membership Report是主机发向路由器用来加入组的数据包,当路由器从接口上收到主机的Membership Report,便认为该网络上有组成员,就开始将组播转发到该网络。主机同样使用Membership Report来回复路由器的查询。Membership Report的目的地址是组地址,所以除了路由器之外,其它组员也能听到,一个网络中只会有一台主机向路由器发送Membership Report来通告网络中存在组员。

 

Version 1 Membership Report

    Version 1 Membership Report是兼容IGMP v1时发送的。

 

Leave Group

    在IGMP v1中,并没有特定的机制来通知路由器组员的离开,唯一的方法就是路由器在3分钟后没有收到组成员对queries的回复,也就认为网络中的组成员已经离开。但是在IGMP v2中,组成员离开时,需要向路由器发送Leave Group来通告自己的离开。但是只有向路由器发送过Membership Report的组成员离开时才需要发送Leave Group,其它组员离开时,也是没有任何动作的。Leave Group目的地址为224.0.0.2,也就是说组成员离开时,只有路由器知道,其它组员是不知道的。

 

IGMP v2路由器:

    IGMP路由器靠查询消息来确认组成员的存在,运行IGMP V2的路由器使用2种查询消息:

1General Query

2Group-Specific Query

 

General Query

    General Query的作用和IGMP v1中queries的作用是一样的,当路由器发送General Query查询主机时,使用目的地址为224.0.0.1,当有主机回复时,便认为网络中存在组成员,则将组播发送到该网络,并且General Query每一分钟发送一次,主机每次都回复,如果连续三个General Query没有回复,即三分钟,那么路由器便认为网络中的组成员已经离开,也就停止向网络中发送组播数据了。

 

Group-Specific Query

    在IGMP v2中,当网络中的组成员离开之后,会向路由器发送Leave Group来通告自己的离开,而只有向路由器发送过Membership Report的组成员离开时才需要发送Leave Group,其它组员离开时,也是没有任何动作的,因此当网络中的组成员离开后,路由器并不知道网络中是否还有其它组员,因为其它组员没有通告过自己的存在。所以如果路由器马上停止向子网转发组播的话,可能会造成某些还存在的组员无法接收组播。最终当路由器收到组成员离开时发来的Leave Group后,并不能马上停止组播的转发,还要向网络中发送Group-Specific Query,目的地址为组的地址,用来查询网络中是否还有别的组员存在,如果有组员回复了,那么组播流就不会中断。为了防止包丢失而误认为没有组员,路由器每1秒分别发两个Group-Specific Query。

  

IGMP v2 Querier

    由上图可以看出,当有两台或更多路由器连接到同一个网络时,路由器要确认网络中是否有组成员,发送General Query 就可以确认组员的存在,而当主机在使用Membership Report回复路由器的General Query时,因为Membership Report的目的地址是组地址,所以网络中所有路由器都能收到Membership Report。如果网络中的每一台路由器都发送General Query来查询组员的存在,那么每台路由器得到的结果都是一样的,这样也就没必要让网络中的每台路由器都进行组成员的查询。这时,就从网络的多台路由器中选举出唯一的一台路由器来查询组成员,这台路由器就是IGMP querier(IGMP查询器),只要IGMP查询器查询一次,所有路由器都能得到相同的结果。网络中拥有最低IP地址的路由器将被选举为IGMP查询器,因此上图中被选为IGMP查询器的路由器为12.1.1.1。当路由器正常启动IGMP v2后,就开始发送目标地址为224.0.0.1查询数据包,每台路由器收到后,查看数据包的源IP地址,最后得到结果谁是IGMP查询器,并且之后每一分钟发送一次查询数据包,如果路由器在两倍查询时间内没有收到查询器的查询数据包,便认为IGMP查询器已经失效,然后重新选举IP地址最小的为查询器。IGMP查询器在IGMP v1环境下是没有的。

                           返回目录

组播协议

    要让组播正常运行起来,需要一些协议的协同工作,如下图所示,下面分别来介绍各协议的功能:

IGMP

    因为组播数据只会朝着有组员的地方发去,所以要让想接收组播的主机正常收到组播数据,那主机就需要让发送者知道它的存在,当发送者知道了组成员的存在,就会向组成员发送组播数据。主机要宣告自己想要接收组播,可以发送一些数据包,而这些数据包,正是主机通过IGMP协议来发送的。当路由器想要知道网络中是否存在组成员时,同样也是发送IGMP数据包来查询的。在网络中确认组成员的存在,这就是IGMP协议的功能,可以看出,IGMP是主机与路由器之间运行的组播协议。

 

CGMP

    因为当路由器获知网络中存在组成员之后,就会将组播向该网络中转发。又因为网络中无论是一个组员,还是许多个组员,对于路由器来说,都得向网络中发送一份组播数据,如果网络中是用交换机连接了多台主机时,交换机收到组播后,会像转发广播一样,将组播发送给每一台主机。这样一来,如果只是部分主机是组成员的话,那么交换机的这种行为将导致组播转发的不精确,所以不能让交换机像处理广播那样处理广播,而必须将组播像处理单播一样,只发给需要接收的组成员。要实现这样的功能,就必须让交换机知道哪些主机才是组员,从而根据组员的MAC地址来转发组播。主机和交换机之间是没有协议的,却和路由器之间有协议,要准确的了解主机的MAC地址情况,就通过路由器得知,路由器再将此信息发送给交换机,最终使交换机能够像处理单播一样根据目标MAC地址来转发组播。这时就需要在路由器和交换机之间运行一种协议,那就是CGMP(Cisco Group Management Protocol),在CCIE R&S考试中,CGMP并不是考点,所以此篇中将不会对CGMP作出详细介绍。

 

PIM

    只有当组播发送者知道组成员的存在,才会向组成员的方向发送组播。在某些情况下,发送者和组成员可能在远程网络,那么这样一来,发送者发出的数据,必须经过路由器才能到达组成员的网络,所以要使组播数据准确地被转发到组成员的网络,就必须让中间的路由器也知道组成员网络的位置所在。两个不同网络的主机使用单播通信时,数据可以被中间路由器准确地转发,是因为路由器的单播路由表中能够找到目标网络的位置,如果要让路由器也能像转发单播数据一样,将组播根据路由表来精确地转发到目的地,那就需要让路由器拥有像单播路由表一样的组播路由表,从而让路由器在收到组播时,就像查单播一样,去查组播该从什么样的接口被发出去才能到达目标网络。要让路由器生成一张功能完全的组播路由表,就需要在路由器之间运行一种协议,这种协议可以让组播源和目的之间的路由表生成单播表一样地生成组播表,最后路由器根据这张组播路由表来完成组播的转发。这个协议就是PIM(Protocol Independent Multicast)。其实要让路由器知道目标组员的位置,完全可以依靠单播来找到组员,所以只要组播的源和目的之间单播是通的,那么组播路由表就能建立,而不用管单播运行的是动态路由协议还是静态路由协议,但是前提是PIM必须依靠单播路由表才能生成。

                           返回目录

PIM

    当组播的源和目的在远程网络时,需要依靠路由器转发组播数据,要让路由器像转发单播一样地转发组播,就必须生成一张组播路由表,而PIM协议正是用来帮助路由器生成组播路由表的协议,只有当路由器都拥有完整的组播路由表时,远程网络之间的组播才能正常通信。因为如果路由器不能对组播数据负责而随意转发组播,这将带来不可想象的结果,所以路由器必须像依靠单播路由表精确转发单播一样去转发组播,下面来详细介绍组播的重点知识,PIM组播路由协议:

                           返回目录

组播树    因为在需要将一份数据同时发给多个接收者时,而开发了组播技术,所以组播的发送者通常面临着要将数据发向多个接收者,并且这些接收者可以分布在任意网络的任意位置。如果接收者在远程网络,那么就需要路由器提供组播转发,所以要保证接收者能够正常收到组播,就必须让路由器知道自己该将组播从什么样的接口发出去,当组播到达下一跳路由器后,下一跳路由器同样也必须知道该将组播从什么样的接口发出去,即使接收者不是与自己直连的,只有这样让路由器之间协同工作,都能够记住组播的出口,最终在发送者与接收者之间形成一条连线,这样才能完成组播的转发。当多个网络存在接收者时,那么这样的连线就会有多条,组播发送者到接收者之间的这些转发线路,被称为组播转发树,而组播发送者就好比是组播树的树根,组播总是从根发向接收者。很容易想象得出,从发送者到接收者之间的路由器,都是在组播树上的,因为这些路由器在中间提供组播转发,那么如果一台根本没有与接收者相连的路由器,与组播树是没有任何关系的。要完成从发送者到接收者之间的组播转发,组播树上的路由器都应该记住组播的出口,每台中间路由器都记住出口之后,最终便形成了组播树,而要记住组播的出口信息,这就是组播路由表的工作。

                           返回目录

组播反向路径转发

    因为组播经常会有多个接收者分布在不同的网络,所以当路由器在转发组播时,也通常需要将同一份数据从多个接口发出去,如果别的路由器不小心或者由于各种原因再将组播发送回来,对于这样已经出现环路的数据,如果路由器收到后,再次将组播转发出去,那么只会形成组播风暴,最终危害整个网络。由此可以看出,转发组播的路由器,必须拥有发现环路、避免环路的能力。要实现这样的功能,所有的组播路由器就必须只将数据往接收者的方向转发,而绝不能往发送者的方向转发,因为向发送者的方向转发,就等于是将数据往回发,那就是引起路由环路的原因。让组播路由器只将数据往接收者的方向转发,而不能往发送者的方向转发,这样的机制被称为组播反向路径转发(mRPF),这也是组播路由器必须遵循的机制。组播路由器在收到组播数据后,都要对数据进行RPF检测,只有从源的方向发来的数据才能被转发,从其它接口过来的数据被认为是无效的。

    因为组播路由器在转发数据时,必须遵循组播反向路径转发(mRPF)机制,所以路由器除了要记住数据从什么接口发出去是接收者之外,还要记住组播发送者是在哪个接口,而数据是绝不能发向发送者的。由此可以看出,组播路由器在正常工作时,组播转发表中必须同时记住接收者的接口和发送者的接口,其它不相关的接口,可以不用记住,也可以记为剪除状态,被剪除的接口是没有组播流量的。

    组播路由表记住了接收者的接口后,就能正常将数据发给组成员,而记住了发送者的接口后,就可以避免路由器将数据往回发而产生路由环路了。组播路由器上朝发送者方向的接口被称为RPF接口,这个接口是在单播路由表中指向组播源地址的出口,因为从RPF接口发出去的数据就等于将数据发向发送者,所以组播只能发往除RPF接口之外的其它接口,并且收到的组播数据如果不是从RPF接口进来的,全部都将被丢弃。

                           返回目录

PIM模式

    在组播正常通信之前,组播路由器必须知道哪个接口是通往发送者的,即RPF接口,组播数据只能从RPF接口进来。组播路由器还必须知道哪些接口是通往接收者的,组播将从这些接口被转发出去。从组播源到接收者之间的所有路由器都记住了RPF接口和组播出口的组合,被称为组播树,组播树用来指导路由器如何转发组播,而组播树就是记录在组播路由表中的,因此,有了正确的组播转发表后,组播就能够正常通信了。

    要让组播路由器生成组播路由表,就是PIM协议的工作,PIM在组播路由器之间运行,通过路由器之间的协商,从而获得组播路由表,构建出组播树。PIM要为路由器学习组播路由表从而建立组播树,有两种不同的方式,这两种不同方式在PIM中分两种模式来运行,为PIM-DM(密集模式)和PIM-SM(稀疏模式),下面来详细介绍PIM的两种运行模式:

 

PIM-DM(密集模式)

    组播树是用来指导路由器如何正确转发组播的,它的相关信息全部都是记录在组播路由表中的,PIM用来帮助路由器生成组播路由表。要形成组播树,路由器需要知道哪些接口出去能够到达接收者,并记录下来,然后再记录到发送者的RPF口。要让路由器知道哪些接口存在接收者,有两种方式,第一种方法是接收者主动向路由器报告,第二种方法是路由器主动向网络中发出查询,而PIM-DM模式中,采用的方法为路由器主动向网络查询是否有接收者,如下图所示:

    在上图显示的PIM-DM工作模式中,组播源会向所有PIM邻居发出查询,查询数据包中包含组的地址,下一跳PIM邻居还会继续向它的邻居发出查询数据包,这些查询数据包会在所有PIM邻居之间传递。如果查询数据包发向一个连接了组成员的网络,这时路由器收到组成员的报告之后,就会向自己上一跳邻居(RPF接口方向的邻居)发送加入组的消息,以宣布自己要接收组播,从而将组播转发到组成员。在这些过程中,如果某些PIM路由器根本没有与组成员相连,那么它将会向自己的上一跳邻居发送剪除消息,以宣布自己不需要接收组播,最终组播从源发出后,只会沿着组播树被发到连接了组成员的网络,而其它不相关的网络是不会有组播流量的。

    以上的信息,路由器都会记录在组播路由表中,这个路由表是不同与单播路由表的,组播路由表拥有自己的格式,因为网络中可能存在多个组,所以路由器在记录时,应该记录下组地址,然后就是该组需要从哪些接口被发出去,最后还由于路由器需要对组播数据进行RPF检测,所以还必须记录与组对应的组播源地址,也就是记录发送组播数据的源IP地址。例如网络中有一个组,地址为:224.1.1.1,发送者为100.1.1.1,那么就应该记录为(100.1.1.1,224.1.1.1),除了记录下组地址和源IP地址之外,路由器还要记录的就是组播的出口,收到的组播就会从这些出口发出去。PIM-DM模式中这样记录组播的方式被称为(S,G),其中S就是组播源地址,G就是组地址,而出口则会被标为forwarding。

    如果只有一个组224.1.1.1,而发送者除了100.1.1.1之外,还有100.1.1.2和100.1.1.3,那么依照(S,G)的记录方式,就需要同时记录(100.1.1.1,224.1.1.1), (100.1.1.2,224.1.1.1), (100.1.1.3,224.1.1.1), 也就是说(S,G)的记录方式,会因为组源地址的增加而增加记录条目。

    可以看出,对于一个组,PIM-DM模式中,路由器需要记录组地址,源地址,出口信息,除了这些之外,比如路由器上有5个接口有PIM邻居,其中只有一个是出口,则这个接口被标为forwarding,再去掉1个RPF接口,那么还剩3个PIM接口是不需要接收组播的,对于不需要接收组播的PIM接口,PIM-DM模式照样会将其记录在路由表中,但被标为pruning。因为PIM-DM这样的记录方式,可以看出当路由器上只有少量的PIM接口与组成员相连时,PIM-DM会消耗更多的资源去记录一些没有组成员的不相关的接口,而这样的事情是可以避免的。

    在PIM-DM模式下,组播发送源将数据发给组播路由器,然后路由器依照组播路由表朝着接收者的方向转发,这样的路径,是依靠单播路由表计算出来的最短路径,也就是说从发送者到接收者之间的路径,总是最短的,所以PIM-DM模式建立起来的组播树,如(S,G)记录的组播树被称为最短路径树shortest-path tree (SPT),因为SPT中记录个每个组播发送者的源地址,故又被称为源树。

 

PIM-SM(稀疏模式)

    在PIM-DM模式中,组播树的生成是靠路由器发送查询消息来建立的,在组播路由表中记录下组地址,发送者的源IP地址,同时还需要记录下所有PIM接口状态,而不管这些接口是连接着组成员的,还是没有。

    而PIM-SM模式的工作过程和PIM-DM模式是不同的,在建立组播树时,PIM-SM并不会让路由器发送查询数据包去查询组成员,而组成员的发现是靠组成员自己主动向路由器发送报告数据包,当一台路由器从接口上收到组成员的报告之后,就会向自己的上一跳邻居发送加入消息,以通告自己需要接收组播,如果上一跳邻居还不是组播发送者,那么上一跳邻居会继续再向上一跳邻居发送加入消息,直到组播源收到加入消息为止,通过这样的方式,就可以建立组播源到组成员之间的组播树。

    PIM-SM模式和PIM-DM模式除了在发现组成员的方式上不同之外,记录路由表的方式也不一样,例如网络中有一个组,地址为:224.1.1.1,发送者为100.1.1.1,PIM-SM模式记录为(*,224.1.1.1),可以看出,PIM-SM模式并不关心组播的源地址,而统统将源地址使用星号*来表示,这样一来,PIM-SM为一个组只记录一个条目,而不管这个组有多少个发送者。这样的记录方式称为(*,G) ,其中*就是组播源地址,G就是组地址。如果有10个组,每个组有5个发送者,使用(S,G)的记录方式,需要记录10×5=50条,而使用(*,G)的记录方式,则只需要10条,所以使用PIM-SM模式,可以大大缩减组播路由表的空间,从而大大节省系统资源。

    PIM-SM模式不仅需要记录(*,G)信息,也和PIM-DM模式一样需要记录在该组中,哪些接口是出口,从此接口将数据发给接收者。但是与PIM-DM模式不同的是,PIM-SM模式只记录连接着接收者的接口,其它没有接收者,不需要接收组播的接口是不会被记录的。比如路由器上有5个接口有PIM邻居,其中只有一个是出口,再去掉1个RPF接口,还剩3个PIM接口是不需要接收组播的,在 PIM-DM模式中,会记录下一个RPF口和一个forwarding状态的出口,以及三个不需要接收组播的pruning状态的接口,而在PIM-SM模式中,只会记录一个RPF口和一个forwarding状态的出口,其它的都不作记录,因此,PIM-SM模式的接口记录方式会比PIM-DM模式更省资源。

                           返回目录

PIM-SM RP    在PIM-SM模式中,由于记录组播信息采用(*,G)的方式,而并不关心组播源地址,因此造成路由器不知道组播发送者的IP地址是什么,也就无法完成RPF反向路径检测。在这种情况下,PIM-SM在网络中选出一个组播会聚点,即Rendezvous Point (RP),RP就是组播网络的核心,发送者统一将组播数据发送到RP,然后RP再将数据发到接收者,也就是说接收者收到的数据,都是由RP转发过来的,路由器也就认为RP的地址,就是组播源的IP地址。

    在PIM-SM模式中,通过RP转发数据,如下图所示:

    因为数据总是先发送到RP,然后RP再发给组成员,如果RP出现了故障,也就意味着组播无法正常通信。组播中的一个组,只有一个RP是处于转发状态的,有时RP路由器的位置可能不是离每个组成员都是最近的,并且数据从源到RP然后再到组成员的路径也可能会很远,所以RP的位置,会导致源到组成员的数据包走的不是最优路径,也会在大流量的情况下,成为组播通信的瓶颈。但是在这种情况下,PIM-SM有自己的解决方法,就是在正常组播通信时,路径会切换到源到组成员最短的路径上,也就是挑选网络中的最优路径来转发,和源树的路径方式相同,这个规则可以随意更改,定义流量超过多少时可被启用,思科路由器默认收到第一个包后即启用。

 

    因为RP在PIM-SM中被当作核心,而(*,G)的记录方式中并不知道组播源的地址,大家都会认为RP就是组播源,最后PIM-SM中的组播树,即(*,G)形式的树被称为共享树(RPT)。

    PIM-SM模式中的RP,可以手工指定,也可以使用动态协议来选择。如果使用手工指定,当使用中的RP出现故障后,也必须手工更改,才能恢复通信。而使用动态协议,则可以配置多个备份RP,但活动RP只有一个,当活动中的RP出现故障后,协议会重新选择备用RP替换为当前的活动RP,能够实现冗余功能。

 

    在PIM-SM中,因为(*,G)形式的记录中不知道组播源的地址,也就无法完成RPF检测,但是又由于接收者收到的数据,都应该是RP发来的,路由器也就认为PIM-SM中的组播源地址,就是RP的地址,在这种情况下,路由器会以RP的地址为源地址做RPF检测,但是在下面的拓朴中,就会出现问题:

    如上图所示,当所有路由器都认为RP地址23.1.1.3就是组播源地址时,这样去做RPF检测,在R4上检测时,因为R4的路由表中会显示从接口S0/0出去可以到达23.1.1.3,所以组播从R4的S0/0被发进来时,则RPF检测可以通过,所以在R4上没有任何问题。

    当在R2上做RPF检测时,因为R2的路由表中显示到达23.1.1.3应该从接口F0/1出去,所以R2只会接收从接口F0/1发进来的组播,从其它接口发进来的,都会被认为是环路而被丢弃。因此在真正的源12.1.1.1将组播从R2的F0/0发进来时,R2会因为RPF检测失败,从而丢弃所有的组播数据,这样一来,组播也就无法通信了。

                           返回目录

PIM DR因为IGMP V1不选举IGMP查询器,如果有多台路由器连接同一个多路访问网段时,就必须选举PIM Designated Router (DR)来避免重复查询,这个DR的选举,是由PIM进行的,选择IP地址高的为DR。PIM DR路由器在IGMP v1中充当IGMP查询器的功能,来向主机发送IGMP查询。

在PIM-SM中,组播源没有机制用来宣告自己的存在,又因为PIM路由器都认为RP才是组播源,而当直接的组播源向RP发送组播时,会导致某些路由器RPF检测失败,因此在PIM网络中,真正的源需要向RP发送注册消息,以宣告自己的存在,而发送注册消息在多路访问的网络中则是由DR来代为完成的。真正的源向RP发出第一个组播包时,DR将此包封装在单播中发向RP,这称为注册,发送的注册消息会从DR到RP之间建立一条源树,也就是(S,G)的记录,这样,在源到RP之间创建的源树就可以帮助避免RPF检测失败,当RP和真正的源之间创建(S,G)条目之后,就会通知DR停止以单播发送,从而转回发送真正的组播。因为由于误认为RP是源而导致RPF检测失败的情况,只有在RP到源这段上游网络中的路由器才会存在,而RP到组成员的这段网络中是不会出现这种情况的。由此可以想象得出,当源所在的网络需要向RP发送数据包时,应该将DR的位置选为最靠近RP的路由器,否则也会因为RPF检测失败而导致组播不通。

    选择DR的数据包为30秒一次,105秒保持时间,如果过了保持时间没有收到DR的数据包,则会重新选举IP地址最高的为DR。

                           返回目录

PIM前转器

    从上图中可以看出,当组播源R1将数据发向组成员时,数据到达R2之后,可以分别从R3和R4两条路径到达组成员。要知道组播通常是应用在视频和语音环境下的,假如R2选择将数据包以两条路径负载均衡的方式发往组成员,当R3和R4两条路径之间的延时不相同时,数据包到达组成员就会出现明显的先后顺序,这在普通数据传输时是没有问题,但是如果当数据是视频时,那么就可能出现视频画面先后不一致的情况,又如果当传输的是语音时,对方在报数字,比如R2向组成员发送123456,在采用负载均衡传输时,将1发向R3,将2发向R4,再将3发向R3,再将4发向R4,再将5发向R3,再将6发向R4,当R3链路上的速度比R3快时,数据135就会先到达组成员,246就会后到达,最终导致R2发出的数据123456,在组成员收到时,就可能变成了135246。由于这些原因,组播负载均衡可能导致数据传输错误,所以当组播源到组成员之间有多条路径可走时,是一定要选出其中唯一的一条路径的,如上图中,就R2就必须选出要么从R3走,要么从R4走,而绝不能负载均衡,两个下一跳中被R2选中的路由器,称为PIM前转器,选PIM前转器的规则是,比较哪台路由器的路由表中,到组播源的路由的AD值最小,如果AD值相同(如使用同一种路由协议),再比较谁到源的metric值最小,如果metric值还相同,则选择IP地址大的。在上图中,如果R3和R4到组播源R1的路由条目中是使用同一个路由协议学到的,则比较metric值,如果metric值相同,则比较R3和R4的IP地址,这个IP地址是同网段相互建PIM邻居所使用的IP地址,因为34.1.1.4比34.1.1.3要大,所以前转器为R4,因此R2会选择从R4到达组成员,并且把到R3的出口剪除。

                           返回目录

 PIM-DM数据包

    在PIM-DM模式中,所使用的源树,会产生(S,G)条目,但是也会创建(*,G)的条目,创建(*,G)是为了作为(S,G)的“父”数据结构,所有PIM接口都会加入输出接口,而输入接口总是空的。

在运行PIM-DM时,路由器会发送5种数据包

1Hello

2Join/prune

3Graft

4Graft-Ack

5Assert

 

1Hello  

    PIM路由器用来发现邻居,会在启动了PIM的接口上周期性地发送Hello,默认30秒发送一个,有个保持时间,如果过了保持时间没有收到邻居的消息便认为邻居丢失,保持时间为Hello的3.5倍(105秒)。PIM邻居为0.0.0.0的, 表示邻居就是组播源。

2Join/prune

    PIM-DM启动后,组播源开始向所有邻居发送查询消息,邻居会再向自己的邻居发送查询消息,如果有路由器连接着组成员,那么就会向上一跳邻居发送join数据包,用来通告自己需要接收组播,从而将自己接入组播树。其它没有连接组成员或不需要接收组播的路由器则向上一跳邻居发送prune数据包,用来通告自己不需要接收组播,状态被标为prune,而不是forward。被标为剪除状态,是方便被剪除的路由器在必要时把自己接入树中。

3Graft

    在路由器向下一跳邻居发送查询数据包,查询是否有组成员存在时,邻居必须发送join数据包来通告自己需要接收组播,然后不需要接收的,则发送prune将自己剪除,如果剪除后的路由器后来需要再接收组播,是不能发送join数据包的,而必须发送graft来将自己接入组播树。当被剪除的路由器向上一跳邻居发送graft数据包后,上一跳会将邻居接口标为组播的出口,即forward状态。如果上一跳邻居也是被剪除的,那么也会再向上一跳邻居发送graft。

4 Graft-Ack

    当被剪除的路由器向上一跳邻居发送graft数据包后,上一跳除了会将邻居接口标为组播的出口之外,还会向下一跳邻居发送一个Graft-Ack。

 

Prune 消息覆盖

    当一台路由器收到PIM查询后,如果自己不需要接收组播,或者没有连接组成员,就会向上游发送Prune消息将自己剪除。如上图中,因为R1有两个PIM邻居,为R2和R3,当R1向网络中发出查询后,因为R2不需要接收组播,所以会发送prune消息将自己剪除,在正常情况下,R1是应该将出口剪除的,但是可以看出,R3连有组成员,是需要接收组播的,如果R1因为收到R2的剪除消息而将出口剪除后,那么R3发出的join消息是不能再收到组播的,而必须发送graft,因为这样,就会导致R3在收到查询后发送join却不能收到组播,要避免这样的事情发生,PIM路由器向网络中发出查询后,即使收到剪除消息,也不会马上将接口剪除,而会启动一个3秒的计时器,如果在3秒内,收到join后,就会覆盖前面的剪除消息,就不会将接口变成剪除状态,这被称为Prune 消息覆盖。

  

5Assert

    Assert是用来选举PIM前转器的,当从源到组成员有多条路径可走时,则选择其中唯一的一条路径,被选中的路由器称为PIM前转器。

    Assert消息中包括源和组地址,以及到源的单播路由AD值和metric值, 先选AD值低的,其次是Metric,最后是最高IP地址,落选的把自己的出口剪除。

                           返回目录

PIM-SM数据包

    PI-SM模式因为组播源要把数据包先发送到RP,然后RP再将数据发到组成员,这样的共享树可能出现走远路的情况,所以有时不如PIM-DM中的源树。但是又因为PIM-SM可以从共享树切换到源树,也就是同时支持共享树和源树,而且在记录组播路由表时,更节省资源,所以被多数选用。

    在运行PIM-DM时,路由器会发送5种数据包:

 

PIM-SM采用了7PIMv2消息:

1Hello

2Bootstarp

3Candidate-RP-Advertisement

4Join/Prune

5Assert

6Register

7Register-Stop

 

1Hello

    PIM-SM中的Hello同PIM-DM中的Hello功能相同,是用于PIM邻居的建立和维护。

2.Bootstarp

    Bootstarp用于RP的选举,稍微将详细介绍。

3.Candidate-RP-Advertisement

    Candidate-RP-Advertisement用于RP的选举,稍微将详细介绍。

4.Join/Prune

    PIM-SM中的Join/Prune同PIM-DM中的Join/Prune功能相同,是用于路由器加入组播树或将自己从中剪除。

5.Assert

    PIM-SM中的Assert同PIM-DM中的Assert功能相同,用于选举PIM前转路由器。

6.Register

    DR在功能,在前面已经提到过,就是在PIM-SM中,因为PIM路由器都认为RP才是组播源,而当直接的组播源向RP发送组播时,会导致中间路由器RPF检测失败,因此在PIM-SM网络中,真正的源需要向RP发送组播,就应该建立一条(S,G)的记录来避免RPF检测失败。当真正的源向RP发出第一个组播包时,DR将此包封装在单播中发向RP,这称为注册,也就是Register消息,发送的注册消息会从DR到RP之间建立一条源树,也就是(S,G)的记录,这样,在源到RP之间创建的源树就可以帮助避免RPF检测失败,当RP和真正的源之间创建(S,G)条目之后,就会通知DR停止以单播发送,从而转回发送真正的组播。

7Register-Stop

    因为PIM-SM中真正的源需要向RP发送Register消息来注册,从而建立(S,G)条目,将组播正常发向RP,当RP和真正的源之间创建(S,G)条目之后,就会发送Register-Stop通知对方停止发送单播,,从而转回发送真正的组播。

 

    最后可以看出,在PIM-DM中,不仅会建立(S,G)的记录,也会建立(*,G)的记录,而在PIM-SM中,除了建立(*,G)的记录之外,同样也有(S,G)的记录,组播树建立后,会周期性发送Join/Prune,60秒一个,保持时间为3倍,即180秒,也就是说在180秒之后没有正常的组播流量,那么这些组播树是会被清除的。

                           返回目录

RP的确立

    在PIM-SM中,组播源必须将数据发送到RP,再由RP转发给组成员,当网络中没有RP时,组播是不正常的,因为要保证组播的正常通信,首先要让所有PIM路由器知道RP的地址,在共享树建立之前,必须确立RP,可以单独为某个组配置一个RP,也可以为多个组配置一个RP,要确立RP,有三种方法,分别是:

1.手工静态配置

2.Bootstrap Router (BSR)来通告

3.自动RP(Auto-RP,思科独有协议)

 

1.手工静态配置

    一个网络中,PIM-SM的RP可以手工静态为每台PIM路由器配置,RP也需要配置,因为要让每台路由器都知道谁是RP,但是这种方式不能提供冗余功能的RP,当配置的RP失效后,必须手工更改,否则组播将不能通信。

 

2Bootstrap Router (BSR)来通告

    RP的确立,除了手工为每台路由器静态配置之外,还可以使用协议自动选择,使用协议的好处在于,可以在网络中配置多个RP,起到备份的作用,当正在使用的RP失效后,协议可以立即重新选择其它路由器成为活动RP。自举协议BSR的工作方式为在网络中配置多个RP,称为候选RP(C-RP),但只有一个RP是正在使用的活动RP,在多个C-RP中,要成为活动RP,选举规则为优先级最高的成为活动RP,优先级默认为0,范围0到255,数字越小,优先级越高,如果优先级都相同的情况下,再比较IP地址高的,所以每个C-RP都会有一个IP地址用来表示自己的身份,也通过此IP来竟选RP。如下图所示:

    上图中,如果同时将R3和R4都配置为C-RP,在不改变优先级的情况下,谁的IP地址最大,谁就是活动RP,但是如果因为某些原因,R3发出的RP竟选消息只被R1和R2收到,而R4发出的RP竟选消息只被R5和R6收到,那么R1和R2都会认为R3是RP,而R5和R6都会认为R4是RP,那么这样一来,网络中路由器得到的RP信息就变的不一致,从而导致组播故障,所以一个网络中,谁才是活动的RP,并不能让每台路由器自己去计算结果,因为可能会出现大家计算出不同的结果。要解决这个问题,方法就是在网络中选举出一个RP裁判,称为BSR,而所有C-RP将自己竟选RP的消息统一发送到BSR,是通过单播发向BSR的,最后由BSR从收到的竟选消息中,选择出活动RP,再将活动RP的地址统一发给网络的每台路由器,这样就能保证每台路由器得到的消息都是统一的,每台路由器获知的RP地址都是统一的。而C-RP发出的竟选消息是Candidate-RP-Advertisement。而BSR是通过路由器发送Bootstarp选出的,每一台候选BSR(C-BSR都)有一个0到255范围的优先级,默认为0,优先级相同的情况下,IP地址最高的为BSR。Candidate-RP-Advertisement和Bootstarp都是60秒发送一次。

 

3.自动RP(Auto-RP,思科独有协议)

    Auto-RP的工作过程与BSR相同,同样是在网络中配置多个候选RP和RP裁判,候选RP向RP裁判发送竟选消息(RP-Announce),最后RP裁判从候选RP的竟选消息中选出IP地址最高的为活动RP,然后发送RP-Discovery通告给每台路由器,不同的是,竟选活动RP只根据IP地址大小,没有优先级之分。在Auto-RP中,侯选RP仍然被称为C-RP,但RP裁判被称为映射代理(RP-mapping agent)。所有的C-RP向映射代理发送竟选消息,使用目的地址为224.0.1.39,每60秒发送一次,而映射代理从众多C-RP中选出活动RP后,以目的地址为224.0.1.40发给每台路由器,也是每60秒发送一次。

                           返回目录

Pim sparse-dense-mode

    组播路由器在运行PIM时,可以运行在SM模式下,也可以运行在DM模式下,当运行在SM模式下时,必须有RP,否则网络不通,而运行DM时,不需要RP组播就能通信。但PIM路由器可以同时运行两种模式,即sparse-dense-mode,当同时运行这两种模式时,如果一个组有RP时,则使用共享树,但是当RP失效时,则可以使用最短路径树来保证组播的通信。

在下图的网络情况下:

    如果在上图网络中仅运行SM模式,并且使用Auto-RP来选举RP,当配置R4为C-RP,配置R2为RP-mapping agent时,R4必须发送Announce来竞选RP,当R2收到R4的Announce后,才能得到最后的结果。配置SM模式时,在没有RP的情况下,组播是不通的,所以C-RP要发送Announce将RP选出来,但是C-RP在发送Announce时使用的目的地为224.0.1.39,这也就意味着C-RP发出的Announce是到达不了远程RP-mapping agent的,因为没有RP,所以最终导致没有RP的情况下,组播就不通,组播不通就选不出RP,结果是组播永远通不了,要解决这个问题,就是要在RP没选出来的情况下就要让组播能够通信,这种情况下,就可以将PIM模式配置为sparse-dense-mode,因为这种混合模式下,在没有RP时,可以走SPT从而连通组播,这样目的地为224.0.1.39的Announce也就能够正常发送到RP-mapping agent,就能选出RP了。

                           返回目录

PIM Dense Mode Fallback

    当将PIM路由器配置成sparse-dense-mode时,在RP不可用的情况下,将从RPT切换到SPT,这种特性被称为Dense mode fallback,默认是开启的,但是如果接口只配了PIM-SM,那么就不可能往SPT切换的,也就必须拥有RP才能通信。在配置sparse-dense-mode后,如果想阻止从RPT切换回SPT,可关闭Dense mode fallback功能,命令为全局模式下输入no ip pim dm-fallback。

                           返回目录

共享树切换到源树

    在PIM-SM中,组播源会先将数据发到RP,然后RP再发给组成员,数据从源到RP再到组成员,这样的路径在很多时候可能不是网络中的最优路径,所以为了从源到组成员之间走最短路径,而不希望走次优路径,这就需要使用最短路径树,即SPT。在路由器收到组播流量后,在源到组成员之间动态地创建最短路径树,从而替代共享树,这种行为在IOS中是默认开启的,但也可以单独为某个组开启,也可以关闭此特性。IOS默认收到第一个组播包后,就从共享树切换到最短路径树,可以手工定义在共享树中的流量超过多少kbps后开始切换,流量低下去之后,60少会再切换回去。通过在全局模式下配置命令ip pim spt-threshold,比如希望在流量超过4Kbps后切换到SPT,命令为ip pim spt-threshold 4 。而命令ip pim spt-threshold infinity表示永远使用共享树而不切换到最短路径树。

                           返回目录

PIM-SM 之NBMA Mode

    因为帧中继中没有内置的处理广播和组播的能力,所以在收到广播和组播时,会在所有配了关键字broadcast的PVC上转发,这样当帧中继接口对端有多个邻居,而只有部分邻居要接收组播时,那么组播的被当作广播转发的行为,将影响不需要接收组播的路由器,如下图:

    在上图中,当R1通过帧中继主接口连接多个对端时,在收到组播后,将从帧中继主接口发送给每一位配置了关键字broadcast的邻居,但并不是所有邻居都有组成员,而只有R3需要接收组播,这样就会影响到R2的R4。因此需要让组播路由器在帧中继环境下,只将组播转发给要接收组播的路由器,可以通过配置子接口或者将接口模式在PIM下改为NBMA Mode, 子接口类似多个物理接口,会建立多个邻居,所以会根据每个邻居情况进行组播转发,而配置NBMA Mode后,组播在主接口上会跟踪PIM-SM模式的join消息,以记录需要接收组播的路由器地址,之后就只会将组播转发到相应的地址中。如下图:

    通过将R1的帧中继主接口配置成NBMA Mode后,R1将在接口上跟踪join消息的源地址,所以可以得知只有R3需要接收组播,在需要转发组播时,只会转发给R3。NBMA Mode只能用在PIM-SM环境下,在PIM-DM下是不可用的。

                           返回目录

配置组播

    默认情况下,Cisco路由器的组播路由功能是关闭的,所以在配置组播之间,需要在路由器上全局输入ip multicast-routing 激活组播路由功能。

    在配置组播之前,必须保证全网的单播路由是通的。

                           返回目录

配置PIM-DM

说明:以下图为例,其中R1为组播源,R5为组成员,接收发往组224.2.2.2的数据。

1 配置单播(此步略)

说明:全网配置OSPF来完成单播通信。

 

2 开启组播路由功能

(1)在每台路由器上开启组播路由功能

R1:

R1(config)#ip multicast-routing

 

R2:

R2(config)#ip multicast-routing

 

R3:

R3(config)#ip multicast-routing

 

R4:

R4(config)#ip multicast-routing

 

R5:

R5(config)#ip multicast-routing

 

3 在接口上开启PIM Dense-Mode

说明:在全网所有路由器的所有接口上开启PIM,从而建立PIM邻居,要在所有接口开启,是因为要让PIM自己决定该在什么接口上转发组播,这样可以避免RPF检测失败,因为有可能只开部分接口,将导致接口不符合RPF接口而组播失败。

(1)在所有路由器的每个接口上开启PIM:(只举例一个接口,其它接口配置相同)

R1(config)#int f0/0

R1(config-if)# ip pim dense-mode

 

4 查看PIM邻居

说明:相邻的两台路由器,接口上开启PIM后,将成为PIM邻居

(1)查看R1的PIM邻居

r1#show ip pim neighbor

PIM Neighbor Table

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

12.1.1.2          FastEthernet0/0          00:01:08/00:01:35 v2    1 / DR S

r1#

说明:R1可以看到的PIM邻居有R2,结果正常。因为双方的DR优先级相同,而R2的IP地址大于R1,所以R1看到R2为DR。

 

(2)查看R2的PIM邻居

r2#show ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

12.1.1.1          FastEthernet0/0          00:00:55/00:01:19 v2    1 / S

32.1.1.3          Serial0/0                00:01:04/00:01:40 v2    1 / DR S

24.1.1.4          FastEthernet0/1          00:00:52/00:01:22 v2    1 / DR S

r2#

说明:R2可以看到的PIM邻居有R1,R3,R4,结果正常。

 

(3)查看R3的PIM邻居

r3#show ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

32.1.1.2          Serial0/0                00:01:28/00:01:44 v2    1 / S

50.1.1.5          FastEthernet0/0          00:01:11/00:01:31 v2    1 / DR S

50.1.1.4          FastEthernet0/0          00:01:19/00:01:32 v2    1 / S

r3#

说明:R3可以看到的PIM邻居有R2,R4,R5,结果正常。

 

(4)查看R4的PIM邻居

r4#show ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

50.1.1.3          FastEthernet0/0          00:01:28/00:01:15 v2    1 / S

50.1.1.5          FastEthernet0/0          00:01:28/00:01:44 v2    1 / DR S

24.1.1.2          FastEthernet0/1          00:01:33/00:01:40 v2    1 / S

r4#

说明:R4可以看到的PIM邻居有R2,R3,R5,结果正常。

 

(5)查看R5的PIM邻居

r5#show ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

50.1.1.3          FastEthernet0/0          00:01:20/00:01:24 v2    1 / S

50.1.1.4          FastEthernet0/0          00:01:49/00:01:24 v2    1 / S

r5#

说明:R4可以看到的PIM邻居有R3,R4,结果正常。

 

5 将R5加入组224.2.2.2

说明:组成员要加入组,使用的协议为IGMP,而Cisco路由器开启PIM后,接口上自动开启IGMP,所以R5在加入组时,无需额外开启IGMP而直接加入组224.2.2.2

(1)配置R5加入组224.2.2.2:

r5(config)#interface f0/0

r5(config-if)#ip igmp join-group 224.2.2.2

 

6 测试组播通信

说明:在没有组播数据之前,也就无法确认组播源的位置,在没有组播源的情况下,组播树是不能建立的。在测试R1向组224.2.2.2发送组播流量时,只需要ping 224.2.2.2,只要数据包的目标地址为组播地址,就是使用组播方式来传递的。在R1上ping组播,那么R1就是组播源。

(1)从组播源R1上ping 224.2.2.2

r1#ping 224.2.2.2

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.2.2.2, timeout is 2 seconds:

 

Reply to request 0 from 50.1.1.5, 8 ms

r1#

说明:从回包中看出,已经收到组成员50.1.1.5的回包,说明组播成功被转发到组成员R5。

 

7 查看IGMP查询器

说明:因为R3和R4同时连接着同网段的组成员R5,所以为了避免重复查询,会选举出一个IGMP查询器,网络中IP地址最小的路由器将成为查询器。

(1)查看网络中的IGMP查询器

r5#show ip igmp interface f0/0

FastEthernet0/0 is up, line protocol is up

  Internet address is 50.1.1.5/24

  IGMP is enabled on interface

  Current IGMP host version is 2

  Current IGMP router version is 2

  IGMP query interval is 60 seconds

  IGMP querier timeout is 120 seconds

  IGMP max query response time is 10 seconds

  Last member query count is 2

  Last member query response interval is 1000 ms

  Inbound IGMP access group is not set

  IGMP activity: 2 joins, 0 leaves

  Multicast routing is enabled on interface

  Multicast TTL threshold is 0

  Multicast designated router (DR) is 50.1.1.5 (this system)

  IGMP querying router is 50.1.1.3 

  Multicast groups joined by this system (number of users):

      224.0.1.40(1)  224.2.2.2(1)

r5#

说明:从结果中可以看出,R3在网络中拥有最小地址50.1.1.3,所以被选为IGMP查询器。

 

8 查看PIM前转器

说明:因为从组播源R1到组成员R5的路径中,有两条可选择,即经过R3或者经过R4,被选择的路由器就是PIM前转器,选择的规则为比较双方到组播源R1的单播AD值,其次是metric值,最后是IP地址最大的。

(1)查看R3和R4到组播源的单播路由表

R3:

r3#show ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     50.0.0.0/24 is subnetted, 1 subnets

C       50.1.1.0 is directly connected, FastEthernet0/0

     32.0.0.0/24 is subnetted, 1 subnets

C       32.1.1.0 is directly connected, Serial0/0

     24.0.0.0/24 is subnetted, 1 subnets

O       24.1.1.0 [110/2] via 50.1.1.4, 00:13:41, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/3] via 50.1.1.4, 00:13:41, FastEthernet0/0

r3#

 

R4:

r4#show ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     50.0.0.0/24 is subnetted, 1 subnets

C       50.1.1.0 is directly connected, FastEthernet0/0

     32.0.0.0/24 is subnetted, 1 subnets

O       32.1.1.0 [110/65] via 50.1.1.3, 00:14:35, FastEthernet0/0

                 [110/65] via 24.1.1.2, 00:14:35, FastEthernet0/1

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/2] via 24.1.1.2, 00:14:35, FastEthernet0/1

r4#

说明:在AD值相同的情况下,因为R4到组播源的metric值为2,而R3到源的metric值为3,所以R4将被选为PIM前转器,最后结果将在组树路由表中体现出来。

 

9 分析组播树

说明:在组播路由表的输出中,将尽量只保留有用的信息给大家,其它信息将被抑制。

(1)查看R1的组播树情况

说明:查看组播树,即查看组播路由表

r1#show ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.0.1.40), 00:07:14/00:02:15, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Dense, 00:07:14/00:00:00

 

r1#

说明:在组播源上,不会有任何组的记录信息。

 

(2)查看R2的组播树

说明:在R2上,即可看出R3和R4谁才是PIM前转器,前转器将成为组的出口。

r2#show ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

 

(*, 224.2.2.2), 00:06:18/stopped, RP 0.0.0.0, flags: D

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:06:18/00:00:00

    Serial0/0, Forward/Dense, 00:06:18/00:00:00

    FastEthernet0/0, Forward/Dense, 00:06:20/00:00:00

 

(12.1.1.1, 224.2.2.2), 00:01:57/00:02:56, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    Serial0/0, Prune/Dense, 00:01:53/00:01:06, A

    FastEthernet0/1, Forward/Dense, 00:01:57/00:00:00

 

 

(*, 224.0.1.40), 00:12:45/00:02:50, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:12:12/00:00:00

    Serial0/0, Forward/Dense, 00:12:25/00:00:00

    FastEthernet0/0, Forward/Dense, 00:12:45/00:00:00

 

r2#

说明:可以看出,PIM-DM模式中同样会有(*,G)的记录,而所有正常的PIM接口都为输出接口,输入接口为空。在(S,G)中可以看出,进口为F0/0,所以此接口就是组播源所在的接口,因此就是RPF接口,而PIM邻居为0.0.0.0,表示对方邻居就是组播源。而在出口中,可以看到有两个出口,分别为S0/0和F0/1,但是由于R4被选为PIM前转器,所以连R4的接口F0/0的状态就是Forward状态,而S0/0则被剪除了。

 

(3)查看R4的组播树

r4#show ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.2.2.2), 00:16:36/stopped, RP 0.0.0.0, flags: DC

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:16:36/00:00:00

    FastEthernet0/0, Forward/Dense, 00:16:36/00:00:00

 

(12.1.1.1, 224.2.2.2), 00:00:12/00:02:52, flags: T

  Incoming interface: FastEthernet0/1, RPF nbr 24.1.1.2

  Outgoing interface list:

    FastEthernet0/0, Forward/Dense, 00:00:12/00:00:00

 

(*, 224.0.1.40), 00:19:08/00:02:01, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:19:04/00:00:00

    FastEthernet0/0, Forward/Dense, 00:19:08/00:00:00

 

r4#

说明:从输出中看出,(*,G)的内容同R3,而(S,G)中显示R4的F0/1为进口,而连着组成员的接口F0/0被标为Forward,因此结果正常。

 

(4)查看R2的组播树

r3#show ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.2.2.2), 00:17:44/stopped, RP 0.0.0.0, flags: DC

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Dense, 00:17:44/00:00:00

    Serial0/0, Forward/Dense, 00:17:44/00:00:00

 

(12.1.1.1, 224.2.2.2), 00:01:19/00:01:46, flags: PT

  Incoming interface: FastEthernet0/0, RPF nbr 50.1.1.4

  Outgoing interface list:

    Serial0/0, Prune/Dense, 00:01:20/00:01:39

 

(*, 224.0.1.40), 00:20:25/00:02:57, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Dense, 00:20:15/00:00:00

    Serial0/0, Forward/Dense, 00:20:25/00:00:00

 

r3#

说明:(*,G)的内容同其它路由器,但是(S,G)中显示没有出口是Forward,因此R3不提供组播转发,在网络中属正常。

 

10 改变PIM前转器

说明:因为R3和R4到组播源R1的单播路由表中,R4拥有最小metric值,所以被选为PIM前转器,所有从组播源到组成员的流量均从R4被转发,要想控制从R3被转发,则可通过调整R3到组播源的单播metric值,只要比R4到组播源的metric值小就行。

(1)改变R3接口S0/0的cost值

r3(config)#int s0/0

r3(config-if)#ip ospf cost 1

(2)查看R3到组播源R1的metric值

r3#show ip route 12.1.1.0

Routing entry for 12.1.1.0/24

  Known via "ospf 2", distance 110, metric 2, type intra area

  Last update from 32.1.1.2 on Serial0/0, 00:01:37 ago

  Routing Descriptor Blocks:

  * 32.1.1.2, from 2.2.2.2, 00:01:37 ago, via Serial0/0

      Route metric is 2, traffic share count is 1

 

r3#

说明: R3到组播源R1的metric值为2,同R4到组播源R1的metric值相同。

 

(3)查看PIM前转器结果:

r2#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.2.2.2), 00:13:59/stopped, RP 0.0.0.0, flags: D

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:13:59/00:00:00

    Serial0/0, Forward/Dense, 00:13:59/00:00:00

    FastEthernet0/0, Forward/Dense, 00:14:00/00:00:00

         

(12.1.1.1, 224.2.2.2), 00:00:59/00:02:54, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    Serial0/0, Prune/Dense, 00:01:00/00:01:59

    FastEthernet0/1, Forward/Dense, 00:01:00/00:00:00

                

(*, 224.0.1.40), 00:33:34/00:02:34, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:33:02/00:00:00

    Serial0/0, Forward/Dense, 00:33:16/00:00:00

    FastEthernet0/0, Forward/Dense, 00:33:36/00:00:00

         

r2#

说明:因为R3和R4到组播源R1的metric值相同,所以由最大IP地址的路由器成为PIM前转器,而R3和R4建PIM邻居的地址分别为50.1.1.3和50.1.1.4,因为R4的地址比R3大,所以前转器仍然是路由器R4。

 

(4)改大R3的IP地址

说明:只要将R3和R4建PIM邻居的地址改大后,方可成为PIM前转器

r3(config)#int f0/0

r3(config-if)#ip address 50.1.1.10 255.255.255.0

 

(5)查看PIM前转器结果:

r2#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

 

(*, 224.2.2.2), 00:16:24/stopped, RP 0.0.0.0, flags: D

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:16:24/00:00:00

    Serial0/0, Forward/Dense, 00:16:24/00:00:00

    FastEthernet0/0, Forward/Dense, 00:16:24/00:00:00

         

(12.1.1.1, 224.2.2.2), 00:03:23/00:00:31, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    Serial0/0, Forward/Dense, 00:01:43/00:00:00

    FastEthernet0/1, Prune/Dense, 00:00:25/00:02:34

 FastEthernet0/1, Forward/Dense, 00:35:38/00:00:00

         

(*, 224.0.1.40), 00:35:56/00:02:39, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Dense, 00:35:23/00:00:00

    Serial0/0, Forward/Dense, 00:35:36/00:00:00

    FastEthernet0/0, Forward/Dense, 00:35:56/00:00:00

         

r2#

说明:因为R3的地址已经改为50.1.1.10,而R4的地址为50.1.1.4,所以在AD和metric值相同的情况下,R3的IP地址最大,所以被选为PIM前转器。

                           返回目录

配置PIM-SM

说明:在下图中,R1为组播源,R6为组成员,接收发往组224.6.6.6的数据。

每台路由器均配有loopback地址,分别为R1:1.1.1.1,R2:2.2.2.2,R3:3.3.3.3,R4:4.4.4.4,R5:5.5.5.5,R6:6.6.6.6,因为配置PIM-SM模式,所以网络中必须存在RP。

1 配置单播(此步略)

说明:全网配置OSPF来完成单播通信。

 

2 开启组播路由功能

(1)在每台路由器上开启组播路由功能

R1:

R1(config)#ip multicast-routing

 

R2:

R2(config)#ip multicast-routing

 

R3:

R3(config)#ip multicast-routing

 

R4:

R4(config)#ip multicast-routing

 

R5:

R5(config)#ip multicast-routing

 

R6:

R6(config)#ip multicast-routing

 

3 在接口上开启PIM Sparse-Mode,并建立PIM邻居。

说明:在全网所有路由器的所有接口上开启PIM,从而建立PIM邻居,要在所有接口开启,是因为要让PIM自己决定该在什么接口上转发组播,这样可以避免RPF检测失败,因为有可能只开部分接口,将导致接口不符合RPF接口而组播失败。

(1)在所有路由器的每个接口上开启PIM:(只举例一个接口,其它接口配置相同)

R1(config)#int f0/0

R1(config-if)# ip pim sparse-mode

 

4 将R6加入组224.6.6.6

(1)配置R6加入组224.6.6.6

r6(config)#int s0/0

r6(config-if)#ip igmp join-group 224.6.6.6

 

5 静态配置R4为RP

说明:将R4的loopback地址4.4.4.4配置为RP,静态配置RP时,RP地址的接口可以不用开启PIM。RP的配置方法有多种,此处首先采用手工静态配置方法,并且需要在每一台路由器上手工配置静态RP。

(1)在R1上静态配置R4为RP (每台路由器的配置同R1)

R1(config)#ip pim rp-address 4.4.4.4

说明:配置后面不跟ACL限制,默认为所有组的RP。

 

(2)查看PIM路由器的RP情况 (所有路由器的结果都应该相同)

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s): 224.0.0.0/4, Static

    RP: 4.4.4.4 (?)

r1#

说明:R1已经正常看到所有组的RP为4.4.4.4。

 

6 查看RP到组成员的组播树情况

说明:因为PIM-SM模式中,组成员会主动加入组,所以RP到组成员之间在没有源的情况下,也会形成组播树。

(1)在RP:R4上查看组播路由表:

r4#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 00:02:16/00:03:07, RP 4.4.4.4, flags: S

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:02:16/00:03:07

 

(*, 224.0.1.40), 00:06:13/00:03:06, RP 4.4.4.4, flags: SJCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Sparse, 00:01:35/00:02:53

    FastEthernet0/0, Forward/Sparse, 00:02:22/00:03:05

 

r4#

说明:可以看到,RP到组成员方向的接口已经被标为Forward状态,所以RP在有组播流量的情况下,是会向组成员发送的。

 

(2)查看R5上的组播路由表:

r5#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 00:05:36/00:02:45, RP 4.4.4.4, flags: SJC

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:02:41/00:02:45

 

(*, 224.0.1.40), 00:06:26/00:02:47, RP 4.4.4.4, flags: SJCL

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    FastEthernet0/1, Forward/Sparse, 00:01:55/00:02:33

    Serial0/0, Forward/Sparse, 00:02:42/00:02:45

 

r5#

说明:R5上连RP的接口F0/0就是组播的进口,而连组成员R6的接口S0/0已经是出口,状态为Forward,所以正常。

注:从PIM-SM的组播路由表中看出,只记录Forward状态的出口,被剪除的出口是不做记录的,而PIM-DM会将所有出口记录下来,其中包括被剪除的接口。

 

6 测试组播通信

(1)从组播源R1上ping 224.6.6.6

r1#ping 224.6.6.6

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.6.6.6, timeout is 2 seconds:

 

Reply to request 0 from 56.1.1.6, 128 ms

r1#

说明:从回包中看出,已经收到组成员56.1.1.6的回包,说明组播成功被转发到组成员R6。

 

 

7 查看组播树的情况:

(1)查看R1的组播树情况

r1#show ip mroute    

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.0.1.40), 00:10:04/00:02:52, RP 4.4.4.4, flags: SJPL

  Incoming interface: Serial0/0, RPF nbr 12.1.1.2

  Outgoing interface list: Null

 

r1#

说明:在组播源上,不会有任何组的记录信息。

 

(2)查看R2的组播树

r2#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 00:02:05/stopped, RP 4.4.4.4, flags: SPF

  Incoming interface: FastEthernet0/1, RPF nbr 24.1.1.4

  Outgoing interface list: Null

 

(12.1.1.1, 224.6.6.6), 00:02:05/00:03:24, flags: FT

  Incoming interface: Serial0/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Sparse, 00:02:05/00:03:22

 

(*, 224.0.1.40), 00:10:33/00:02:25, RP 4.4.4.4, flags: SJCL

  Incoming interface: FastEthernet0/1, RPF nbr 24.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:10:33/00:01:59

 

r2#

说明:可以看出,(*,G)中说明了RP是4.4.4.4,但是组播源到RP之间会创建(S,G)的记录,并且通往RP的路径正常。RPF邻居为0.0.0.0,也正常。

 

(3)再次查看RP上的组播树

r4#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 00:07:39/00:02:39, RP 4.4.4.4, flags: S

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:07:39/00:02:39

 

(12.1.1.1, 224.6.6.6), 00:03:35/00:02:01, flags: T

  Incoming interface: FastEthernet0/1, RPF nbr 24.1.1.2

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:03:35/00:02:50

 

(*, 224.0.1.40), 00:11:37/00:02:58, RP 4.4.4.4, flags: SJCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/1, Forward/Sparse, 00:07:00/00:03:22

    FastEthernet0/0, Forward/Sparse, 00:07:45/00:02:38

 

r4#

说明:RP上也有了(S,G)的记录,并且接口状态都是正常。

 

(4)再次查看R5上的组播树

r5#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 00:11:55/00:03:21, RP 4.4.4.4, flags: SJC

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:09:00/00:03:21

 

(12.1.1.1, 224.6.6.6), 00:04:55/00:02:11, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:04:55/00:03:21

 

(*, 224.0.1.40), 00:12:47/00:03:21, RP 4.4.4.4, flags: SJCL

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    FastEthernet0/1, Forward/Sparse, 00:08:16/00:03:08

    Serial0/0, Forward/Sparse, 00:09:01/00:03:21

 

r5#

说明:同样也有(S,G)的记录,方面后面从RPT切换到SPT,正常。

 

(5)再次查看R3上的组播树

r3#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.0.1.40), 00:15:23/00:02:22, RP 4.4.4.4, flags: SJCL

  Incoming interface: FastEthernet0/1, RPF nbr 35.1.1.5

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:15:23/00:02:22

 

r3#

说明:因为R3不需要转发组播,所以没有任何记录。

 

注:IGMP查询器,PIM前转器不再查看和控制,方法同PIM-DM模式。

配置Auto-RP

说明:以上配置为静态RP的方式,下面配置Auto-RP

 

1 配置C-RP

说明:配置为RP的接口必须开启PIM。

(1)配置R3为C-RP:

r3(config)#access-list 24 permit 224.5.5.5

r3(config)#access-list 24 permit 224.6.6.6

 

r3 (config)#int loopback 0

r3 (config-if)# ip pim sparse-mode

 

r3(config)#ip pim send-rp-announce loopback 0 scope 10 group-list 24

说明:配置R3的loopback 0 为RP地址,并且使用ACL限制只做组224.5.5.5和224.6.6.6的RP。

 

(2)配置R4为C-RP:

R4(config)#access-list 24 permit 224.5.5.5

R4(config)#access-list 24 permit 224.6.6.6

 

R4 (config)#int loopback 0

R4 (config-if)# ip pim sparse-mode

 

R4(config)#ip pim send-rp-announce loopback 0 scope 10 group-list 24

说明:配置R4的loopback 0 为RP地址,并且使用ACL限制只做组224.5.5.5和224.6.6.6的RP。

 

2 配置RP-mapping agent

(1)配置R1为RP-mapping agent

R1 (config)#int loopback 0

R1 (config-if)# ip pim sparse-mode

 

R1(config)#ip pim send-rp-discovery loopback 0 scope 16

说明:配置R1的loopback 0为RP-mapping agent。

 

3查看RP信息

说明:所有C-RP的竞选消息都发送到224.0.1.39,由RP-mapping agent接收后将选为RP的地址公布给所有PIM路由器,要让RP-mapping agent成功收到C-RP的竞选消息,就必须能够接收组播到224.0.1.39的数据。

(1)查看RP-mapping agent的组加入情况

r1#show ip igmp interface

Serial0/0 is up, line protocol is up

  Internet address is 12.1.1.1/24

  IGMP is enabled on interface

  Current IGMP host version is 2

  Current IGMP router version is 2

  IGMP query interval is 60 seconds

  IGMP querier timeout is 120 seconds

  IGMP max query response time is 10 seconds

  Last member query count is 2

  Last member query response interval is 1000 ms

  Inbound IGMP access group is not set

  IGMP activity: 2 joins, 0 leaves

  Multicast routing is enabled on interface

  Multicast TTL threshold is 0

  Multicast designated router (DR) is 12.1.1.2 

  IGMP querying router is 12.1.1.1 (this system)

  Multicast groups joined by this system (number of users):

      224.0.1.39(1)

Loopback0 is up, line protocol is up

  Internet address is 1.1.1.1/24

  IGMP is enabled on interface

  Current IGMP host version is 2

  Current IGMP router version is 2

  IGMP query interval is 60 seconds

  IGMP querier timeout is 120 seconds

  IGMP max query response time is 10 seconds

  Last member query count is 2

  Last member query response interval is 1000 ms

  Inbound IGMP access group is not set

  IGMP activity: 2 joins, 0 leaves

  Multicast routing is enabled on interface

  Multicast TTL threshold is 0

  Multicast designated router (DR) is 1.1.1.1 (this system)

  IGMP querying router is 1.1.1.1 (this system)

  Multicast groups joined by this system (number of users):

      224.0.1.40(1)  224.0.1.39(1)

r1#

说明:可以看出,配置成为RP-mapping agent后,所有的接口都已加入了224.0.1.39,但是这并不能保证RP-mapping agent就一定能够收到C-RP的竞选消息,因为PIM-SM模式下,没有RP时,组播是不通的。

 

4 解决RP-mapping agent接收C-RP竞选消息

说明:因为组播不通,所以当RP-mapping agent和C-RP不是同一台路由器时,无法接收C-RP的竞选消息,可以通过在路由器上配置Autorp listener来解决,网络中最好所有路由器都配置。

(1)配置Autorp listener(此处只举例配置R1,所有路由器配置相同)

R1 (config)#ip pim autorp listener

 

注:解决方法还有就是将PIM的模式都改为sparse-dense-mode,此模式配置省略。

 

5 查看RP情况

(1)查看R1的RP情况:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.5.5.5/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:05:49, expires: 00:02:11

  RP 3.3.3.3 (?), v2v1

    Info source: 3.3.3.3 (?), via Auto-RP

         Uptime: 00:05:14, expires: 00:02:43

Group(s) 224.6.6.6/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:05:49, expires: 00:02:10

  RP 3.3.3.3 (?), v2v1

    Info source: 3.3.3.3 (?), via Auto-RP

         Uptime: 00:05:14, expires: 00:02:45

r1#

说明:RP-mapping agent上,同时看到所有信息,因为R4的地址最大,所以被选举为两个组的RP。

 

(2)查看R5的RP情况:

r5#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.5.5.5/32

  RP 4.4.4.4 (?), v2v1

    Info source: 1.1.1.1 (?), elected via Auto-RP

         Uptime: 00:01:25, expires: 00:02:31

Group(s) 224.6.6.6/32

  RP 4.4.4.4 (?), v2v1

    Info source: 1.1.1.1 (?), elected via Auto-RP

         Uptime: 00:01:25, expires: 00:02:32

r5#

说明:R5正常学习到RP信息,其它路由器都应该正常学习到RP信息。

 

 

6测试组播通信

(1)测试R1到各组的通信情况:

r1#ping 224.5.5.5

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.5.5.5, timeout is 2 seconds:

 

Reply to request 0 from 56.1.1.6, 129 ms

Reply to request 0 from 56.1.1.6, 165 ms

r1#ping 224.6.6.6

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.6.6.6, timeout is 2 seconds:

 

Reply to request 0 from 56.1.1.6, 124 ms

Reply to request 0 from 56.1.1.6, 152 ms

r1#

说明:R1到组224.5.5.5和224.6.6.6通信正常。

 

7 限制RP竞选消息

说明:在C-RP上可以控制只竞选特定组的RP,而在RP-mapping agent上,可以配置只接收某个RP竞选某特定组的消息,那么其它消息都将被过滤。

(1)配置RP-mapping agent限制R4的竞选消息

说明:配置RP-mapping agent只接收R4竞选224.6.6.6的消息,那么R4也就不可能竞选组224.5.5.5的RP了。

r1(config)#access-list 4 permit 4.4.4.4

r1(config)#access-list 6 permit 224.6.6.6

r1(config)#ip pim rp-announce-filter rp-list 4 group-list 6

 

8 查看RP情况

(1)在R1上查看RP信息:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.5.5.5/32

  RP 3.3.3.3 (?), v2v1

    Info source: 3.3.3.3 (?), elected via Auto-RP

         Uptime: 00:02:42, expires: 00:02:17

Group(s) 224.6.6.6/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:08:18, expires: 00:02:40

  RP 3.3.3.3 (?), v2v1

    Info source: 3.3.3.3 (?), via Auto-RP

         Uptime: 00:07:43, expires: 00:02:17

r1#

说明:因为R4竞选组224.5.5.5的消息被过滤了,所以组224.5.5.5的RP只有R3。

 

(2)在R2上查看RP信息:

r2#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.5.5.5/32

  RP 3.3.3.3 (?), v2v1

    Info source: 1.1.1.1 (?), elected via Auto-RP

         Uptime: 00:00:59, expires: 00:02:57

Group(s) 224.6.6.6/32

  RP 4.4.4.4 (?), v2v1

    Info source: 1.1.1.1 (?), elected via Auto-RP

         Uptime: 00:20:01, expires: 00:02:56

r2#

说明:R2上的RP信息和预料中相同。

 

配置BSR

说明:在BSR中,在不修改IP地址的情况下,可以通过修改优先级来控制竞选。

1 配置C-RP

(1)配置R3为C-RP,优先级为10(数字越大,优先级越高)

R3(config)#access-list 24 permit 224.5.5.5

R3(config)#access-list 24 permit 224.6.6.6

 

R3(config)#int loopback 0

R3 (config-if)# ip pim sparse-mode

 

R3(config)#ip pim rp-candidate loopback 0 group-list 24 priority 10

 

(2) 配置R4为C-RP,优先级默认为0

R4(config)#access-list 24 permit 224.5.5.5

R4(config)#access-list 24 permit 224.6.6.6

 

R4(config)#int loopback 0

R4 (config-if)# ip pim sparse-mode

 

R4(config)#ip pim rp-candidate loopback 0 group-list 24

 

 

2配置C-BSR

(1)配置R1为C-BSR

R1(config)#int loopback 0

R1 (config-if)# ip pim sparse-mode

 

R1(config)#ip pim bsr-candidate loopback 0

 

 

3 查看RP情况

(1)查看BSR情况

r1#sh ip pim bsr-router

PIMv2 Bootstrap information

This system is the Bootstrap Router (BSR)

  BSR address: 1.1.1.1 (?)

  Uptime:      00:01:45, BSR Priority: 0, Hash mask length: 0

  Next bootstrap message in 00:00:14

r1#

说明:因为C-BSR只有R1,所以被选为BSR的也是R1。

 

(2)查看RP结果:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is the Bootstrap Router (v2)

 

Group(s) 224.5.5.5/32

  RP 3.3.3.3 (?), v2

    Info source: 23.1.1.3 (?), via bootstrap, priority 10

         Uptime: 00:13:25, expires: 00:02:08

  RP 4.4.4.4 (?), v2

    Info source: 24.1.1.4 (?), via bootstrap, priority 20

         Uptime: 00:09:43, expires: 00:02:00

Group(s) 224.6.6.6/32

  RP 3.3.3.3 (?), v2

    Info source: 23.1.1.3 (?), via bootstrap, priority 10

         Uptime: 00:13:25, expires: 00:02:07

  RP 4.4.4.4 (?), v2

    Info source: 24.1.1.4 (?), via bootstrap, priority 20

         Uptime: 00:12:43, expires: 00:01:58

r1#

说明:通过查看RP,无法看出BSR选择了谁成为RP。

 

(3)查看其它路由器的RP结果:

r2#sh ip pim rp mapping in-use

PIM Group-to-RP Mappings

 

Group(s) 224.5.5.5/32

  RP 3.3.3.3 (?), v2

    Info source: 1.1.1.1 (?), via bootstrap, priority 10, holdtime 98

         Uptime: 00:14:10, expires: 00:01:19

  RP 4.4.4.4 (?), v2

    Info source: 1.1.1.1 (?), via bootstrap, priority 20, holdtime 91

         Uptime: 00:10:28, expires: 00:01:14

Group(s) 224.6.6.6/32

  RP 3.3.3.3 (?), v2

    Info source: 1.1.1.1 (?), via bootstrap, priority 10, holdtime 98

         Uptime: 00:14:10, expires: 00:01:20

  RP 4.4.4.4 (?), v2

    Info source: 1.1.1.1 (?), via bootstrap, priority 20, holdtime 89

         Uptime: 00:13:27, expires: 00:01:12

 

Dynamic (Auto-RP or BSR) RPs in cache that are in use:

Group(s): 224.6.6.6/32, RP: 3.3.3.3, expires: 00:00:51

Group(s): 224.5.5.5/32, RP: 3.3.3.3, expires: 00:00:53

r2#

说明:在R2上看出,因为C-RP的数字越 小,优先级越高,所以RP为3.3.3.3。

                           返回目录

PIM-SM的NBMA Mode

说明:因为帧中继中没有内置的处理广播和组播的能力,所以在收到广播和组播时,会在所有配了关键字broadcast的PVC上转发,这样当帧中继接口对端有多个邻居,而只有部分邻居要接收组播时,那么组播的被当作广播转发的行为,将影响不需要接收组播的路由器,因此需要配置NBMA模式来跟踪要接收组播的邻居,从而是只将组播发送给要接收的邻居。NBMA模式只支持PIM-SM模式,因为是跟踪PIM-SM模式的join消息。帧中继下的解决方法除了NBMA Mode之外,还有配置子接口,子接口类似多个物理接口,会建立多个邻居,此处不对子接口作过多解释。

 

没配之前:

 

1.查看R5没有配置NBMA Mode的组播树

r5#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 01:53:44/00:03:13, RP 3.3.3.3, flags: SCF

  Incoming interface: FastEthernet0/1, RPF nbr 35.1.1.3

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:01:16/00:03:13

    Serial0/0, Prune/Sparse, 00:01:17/00:00:00

 

(1.1.1.1, 224.6.6.6), 00:00:48/00:03:24, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:00:49/00:03:12

 

(12.1.1.1, 224.6.6.6), 00:00:49/00:03:23, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:00:49/00:03:12

 

(*, 224.5.5.5), 01:16:35/00:03:00, RP 3.3.3.3, flags: SC

  Incoming interface: FastEthernet0/1, RPF nbr 35.1.1.3

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:00:30/00:02:59

    Serial0/0, Prune/Sparse, 00:01:21/00:00:00

         

(1.1.1.1, 224.5.5.5), 00:02:04/00:02:41, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:01:05/00:03:22

    Serial0/0, Prune/Sparse, 00:01:22/00:00:00

         

(12.1.1.1, 224.5.5.5), 00:02:04/00:02:41, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, Forward/Sparse, 00:01:05/00:03:24

    Serial0/0, Prune/Sparse, 00:01:22/00:00:00

         

(*, 224.0.1.40), 00:55:08/00:02:59, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    Loopback0, Forward/Sparse, 00:55:09/00:00:00

    Serial0/0, Forward/Sparse, 00:55:09/00:00:00

    FastEthernet0/1, Forward/Sparse, 00:55:10/00:00:00

    FastEthernet0/0, Forward/Sparse, 00:55:10/00:00:00

         

r5#

说明:从结果中看出,因为没有配置NBMA Mode,所以R5将收到的组播从S0/0的每一条PVC发出去。(虽然本例中只配了一条PVC)

 

2.配置R5连组成员R6的帧中继接口S0/0为NBMA Mode(最好双方都配置)

r5(config)#int s0/0

r5(config-if)#ip pim nbma-mode

 

3.查看R5配置NBMA Mode之后的组播树

r5#sh ip mroute

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.6.6.6), 01:54:34/00:03:22, RP 3.3.3.3, flags: SCF

  Incoming interface: FastEthernet0/1, RPF nbr 35.1.1.3

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:07/00:03:22

 

(1.1.1.1, 224.6.6.6), 00:01:38/00:02:34, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:07/00:03:22

 

(12.1.1.1, 224.6.6.6), 00:01:39/00:02:33, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:09/00:03:20

 

(*, 224.5.5.5), 01:17:25/00:03:09, RP 3.3.3.3, flags: SC

  Incoming interface: FastEthernet0/1, RPF nbr 35.1.1.3

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:20/00:03:09

         

(1.1.1.1, 224.5.5.5), 00:02:56/00:03:20, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:26/00:03:29

         

(12.1.1.1, 224.5.5.5), 00:03:02/00:03:13, flags: T

  Incoming interface: FastEthernet0/0, RPF nbr 45.1.1.4

  Outgoing interface list:

    Serial0/0, 56.1.1.6, Forward/Sparse, 00:00:32/00:03:25

         

(*, 224.0.1.40), 00:56:07/00:02:55, RP 0.0.0.0, flags: DCL

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    Loopback0, Forward/Sparse, 00:56:07/00:00:00

    Serial0/0, Forward/Sparse, 00:56:11/00:00:00

    FastEthernet0/1, Forward/Sparse, 00:56:11/00:00:00

    FastEthernet0/0, Forward/Sparse, 00:56:11/00:00:00

          

r5#

说明:R5在帧中继接口上配置了NBMA Mode,所以看到组播树中,明确显示组播将会发给特定的邻居(56.1.1.6),由于在组播树中记录了对端邻居的地址,所以在接口对端有多台路由器时,组播不会发给不想接收组播的路由器。

                           返回目录

Source Specific Multicast(SSM)

概述

在组播树中,被记录为(*,G)的组条目表示,对于一个特定的组,任何主机都可以向该组发起组播流量,也就是说,一个组可以拥有多个组播源,任何组播源都可以发送组播流量,这样的组播被称为任意源组播Any Source Multicast (ASM)。

因为一个组一般表示一个应用,如果网络中两个应用使用了同一个组地址,这样就会造成组成员将两个不同应用的流量误当作同一个应用来处理,就会造成数据的混乱或错误,所以当两个应用不小心使用了同一个组地址,这样会给应用带来问题。

如果一个组成员想要接收某个组的组播流量,可以通过IGMP向路由器报告,例如IGMP ver1,IGMP ver2,报告中指出了组成员想要接受的组地址,当路由器收到IGMP报告之后,就会将发往相应组地址的流量转发到组成员。

    正因为路由器会将任何组播源发到同一个组的流量转发给相同组成员,所以可能会造成多个应用使用同一个组地址时,不能只将组成员想要接收的流量发到组成员。如果要实现只将特定组播源发来的流量转发给相应的组成员,那么这样的组播机制,被称为特定源组播Source Specific Multicast(SSM)。

因为特定源组播(SSM)只将特定的组播源发来的流量,而不是任何源发来的流量转发给组成员,所以组成员在向路由器报告自己想要接受的组播流量时,除了明确指出组地址之外,还必须指出组播源地址,而这样的IGMP报告,需要IGMP ver3来支持。

并且可以想象,如果多个应用程序在同一个源,那么就要多个组,但如果多个应用在不同源,那么组地址就可以相同,也可以不同,因为SSM可以根据源地址区分出不同的应用程序。

    在运行SSM时,需要两个组件

•Protocol Independent Multicast source-specific mode (PIM-SSM)

•Internet Group Management Protocol Version 3 (IGMPv3)

 

其中IGMP ver3可以代替ver 1和ver 2的功能,但是与ver 1和ver 2不同之处在于,IGMP ver 3支持对源地址的过滤,IGMP ver 3 在报告中,会明确指出想要接收的组播源地址。

 

SSM基于(S, G) 传输, 但SSM也可以和其它组播树共存,只要配好自己的组地址范围即可,为SSM保留地址范围是:

232.0.0.0 - 232.255.255.255 (232.0.0.0/8)

但思科IOS可任意配地址范围。

 

虽然如此,要先有PIM SM,才能有SSM,但SSM也可以独立存在。

如果已经有了PIM-SM,那么只有最后一跳路由器需要开启SSM即可,也就是说只需要直接连接着组成员,直接接收组成员IGMP数据包的路由器需要开启SSM。

 

注:SSM不需要RP,当最后一跳路由器开启SSM后,正常的PIM-SM就失去意义了。

 

配置SSM

说明:只在直接连接着组成员,直接接收组成员IGMP数据包的路由器 上开启SSM

 

1.全局开启组播

1)全局开启组播路由功能

Router(config)#ip multicast-routing

2.配置SSM组地址范围

1)配置默认的SSM组地址范围

Router(config)#ip pim ssm default

说明:配置此命令后,默认的SSM组地址范围为:232.0.0.0 - 232.255.255.255

2)配置SSM组地址为232.1.1.1

Router(config)#access-list 1 permit 232.1.1.1

Router(config)#ip pim ssm range 1

说明:ACL 1所匹配的地址即为SSM的组地址范围。

3.在接口开启SSM

(1)在接口开启PIM

Router(config-if)#ip pim sparse-mode

说明:必须在接口开启sparse-mode或sparse-dense-mode

(2)在接口开启IGMP ver 3

Router(config-if)#ip igmp version 3

 说明:默认为IGMP ver 2.

附:SSM查看命令

Router# show ip igmp groups

Router# show ip mroute

 

                           返回目录

MSDP (Multicast Source Discovery Protocol)

 

                                                        单独下载: 

   PIM概述
   MSDP概述
   MSDP RPF检测
   MSDP RPF检测详细规则
   Default MSDP Peer
   MSDP Mesh Group
   MSDP SA Filter
   PIM-SM域边界
   组播流RPF检测详细规则
   Anycast RP
   配置一对一PIM-SM域的MSDP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置GRE Tunnel隧道
      4.配置MSDP
      5.通过单播路由表解决PIM-SM域间组播通信问题
      6.通过静态组播路由表解决PIM-SM域间组播通信问题
      7.通过MBGP解决PIM-SM域间组播通信问题
   配置3个PIM-SM域全互联的MSDP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置MSDP
      4.配置MBGP帮助MSDP的SA通过RPF检测
      5.测试default MSDP peer帮助MSDP的SA通过RPF检测
      6.测试MSDP Mesh Group帮助MSDP的SA通过RPF检测
   配置Anycast RP实验
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置MSDP
      4.测试Anycast RP冗余性

 

 

PIM概述

通过路由器组建的网络需要通信,前提是所有路由器上都必须拥有正确的路由表,对于单播是这样子,而如果需要使用组播通信;同样道理,所有路由器上都必须拥有正确的组播路由表,准确的说,是必须拥有正确的组播树,组播树从组播源到组成员(组播接收者)之间建立,组播源发出的数据沿着组播树流向组成员,从而保证组播通信正常。换句话说就是,如果没有组播树,或组播树不正常,那么组播是不能通信的。

组播路由器需要靠组播路由协议的配合来建立组播树,目前最为流行的组播路由协议为Protocol Independent Multicast (PIM),PIM可工作在两种模式下,分别为PIM dense mode (PIM-DM)和PIM sparse mode (PIM-SM),PIM-DM就是一个纯傻瓜式的工作方式,它就像咱们平时见到的傻瓜式交换机一样,交换机打开之后不需要做任何配置就能用,并且谁都会用,PIM-DM只要在相应的路由器的相应接口上开启之后,就算是大功告成,组播源只要一发数据,组播树铁定就能正确建立,组成员也一定能够收到数据,相当快捷方便;但遗憾的是PIM-DM虽然简洁,但缺乏控制力度,就相当于傻瓜式交换机虽然好用,但你无法在上面做太多的策略来控制流量,并且更遗憾的是在CCIE考试中,基本上不考你PIM-DM。

除PIM-DM之外,PIM-SM是个重点,也是个难点,并且还是个考点,所以我们通常在解决组播问题的时候,可以说都是在解决PIM-SM的问题。在PIM-SM中,所有的流量都不是组播源直接发向组成员的,组播流量是由组播源发给Rendezvous Point (RP),然后RP再将流量转发给组成员,如果说没有了RP,那么组播源也就不知道把流量该发给谁,而也就再也没有谁会给组成员发流量了,所以RP是否正常,直接关系到组播是否能通信。PIM在建立组播树时,在PIM-SM中,这棵树是围绕RP来建立的,所以RP就是组播树的根,要完成组播树的建立,RP必须要知道谁是组播源以及谁是组成员,这一点请牢记;那么RP是如何知道谁是组播源以及谁是组成员的呢?这一点也请牢牢地记住,过程是:组播源和组成员主动告诉RP,因为RP是不会主动问它们的,事实上真正告诉RP的是离组播源最近的路由器以及离组成员最近的路由器,无论组播源和组成员本身是不是路由器都是这样,为什么要由路由器代为发起呢?因为通常组播员和组成员是一台PC或服务器,只是我们在做实验时,是用了路由器,而PC或服务器准确地讲是不会运行PIM协议的;组播源告诉RP自己是组播源的这个过程称为register(注册),而组成员告诉RP自己是组成员的这个过程称为report(报告),但也可以称为注册,Cisco文档上也有时会把它们都称为是注册。

     一个正常工作的组播网络中应该只有一个RP,这样的只围绕一个RP建立组播树的组播网络被称为一个PIM-SM域。在某些情况下,比如一个大公司在全国各个城市都有分公司,而这个公司许多应用是靠组播来传递的,如视频会议,如果这个公司全国范围内都设计成一个PIM-SM域,那么就表示全国的分公司都需要使用一个共同的RP,所以如果这个RP是放在北京分公司的,那么北京的这台RP路由器是不能关的,可能会面临着其它各个城市在开会时出现任何通信问题都往北京打电话讯问RP路由器是否运行正常或已被关闭;对于各个分公司的IT人员来说也不希望如此,他们一定是希望RP路由器放在自己的分公司或者自己的分公司有自己独立可控的RP路由器,这样就不需要依靠于其它分公司的RP来通信,便于在出现通信故障时能够全面地排错。ISP的某些业务也是通过组播来开展的,并且这些业务可能需要跨ISP来工作,可想而知,如果将所有ISP都规划成一个PIM-SM域,势必会造成某些ISP在网络控制上出现被动局面,对于ISP来说,它不可能希望自己的组播网络依懒竞争对手的RP路由器来维持通信,基于以上种种原因,需要在各环境下部署独立的PIM-SM域,即在各个分公司或各个ISP都建立各自独立的PIM-SM域,从而保证各个组播网络的独立性与自治性。但是请不要忘记,这些PIM-SM域之间还是要相互通信的。

                                                                         返回目录

 

MSDP概述 

     在PIM-SM域之间要通信,是否会存在问题呢?答案是肯定的,究竟会存在什么样的问题呢?回想一下组播要正常通信的前提条件,那就是必须建立组播树,而组播树要正常建立,RP就必须要知道组播源和组成员,如果是同一个PIM-SM域内,RP想要知道所有的组播源和组成员是非常轻松的事,但RP却没有办法知道其它PIM-SM域中的组播源,那这个问题怎么解决呢?方法也很简单,那就是让一个PIM-SM域中的RP把自己知道的组播源信息告诉其它PIM-SM域中的RP就可以了,所以我们要想办法让不同PIM-SM之间的RP能够互相共享和交换组播源信息,这个信息被称为Source Active(SA),那么不同PIM-SM之间的RP是否会自动交换SA信息呢?当然不会,所以需要通过一个协议来强制这些RP之间交换SA信息,这个协议就是Multicast Source Discovery Protocol(MSDP),即组播源发现协议,如下图所示:

从上图中可以看出,PIM-SM Domain 1的RP为2.2.2.2,R1是组播源,PIM-SM Domain 2的RP为4.4.4.4,R5是组成员,而正常情况下,PIM-SM Domain 2中的组成员R5想要收到PIM-SM Domain 1中组播源R1发出的数据包是不可能的,因为PIM-SM Domain 2中的RP虽然知道R5是组成员,却不知道谁是组播源,因此无法建立组播树。但当两个PIM-SM域的RP之间建立MSDP连接之后,PIM-SM Domain 1中的RP就会将组播源信息通过SA数据包发给PIM-SM Domain 2中的RP,当PIM-SM Domain 2中的RP学习到组播源和组成员信息之后,两个域之间就能正常建立组播组,最终实现PIM-SM域间组播通信。

     说到这里,谨慎的你应该发现似乎漏掉了一个问题,上图中,因为PIM-SM Domain 2中的RP只知道组成员信息,而不知道组播源信息,所以当PIM-SM Domain 1中的RP通过MSDP的SA数据包将组播源信息发给它之后事情就完美了,但是不难看出,PIM-SM Domain 1中的RP也只是知道谁是组播源,却不知道谁是组成员,为什么在只知道组播源而不知道组成员的情况下能够建立组播树的呢?为什么只考虑让MSDP共享组播源信息,却没有说共享组成员信息呢?难道只需要知道组播源,不知道谁是组成员也可以建立组播树吗?原因是这样的:试想一下如果你是个非常有钱的大富翁,现在你就是想把你的钱拿到街上去洒发给普通人,你能把你的钱顺利洒掉并让普通人捡到吗(当然这里不考虑街上是否有城管、ZF、以及怪兽)?其实答案咱们很清楚,是可以的,因为只要让普通人(接收者)知道你这个富翁(发送者)要洒钱,知道你是在哪里洒钱即可,而根本就不需要你(发送者)去了解普通人(接收者)有哪些且现在在哪里,也就是说只需要他们知道怎么能够找到你就OK,你不需要知道怎么找到他们,因为他们会自动来找你;这里的你好比就是组播源,而普通人就好比是组成员,只要组成员知道了谁是组播源,就会一拥而上去找组播源,不需要组播源费脑筋去找组成员。并且这也是因为PIM-SM模式是靠PULL(拉)的方式来建组播树的,也就是谁要接收流量,是由需要接收组播的组成员自己去跟RP申请,而不是RP去追着问到底谁要接收组播,但如果换了是PIM-DM模式,它就是靠PUSH(推)的方式来建组播树的,就是组播源去追着每个人问到底要不要收组播,这就是区别。

     需要重点强调的是,MSDP协议的功能和目的只有一个,就是把一个PIM-SM域内的组播源信息(SA)发送给其它PIM-SM域的RP,从而让PIM-SM域间的组播通信正常,MSDP只是在PIM-SM域之间传个消息而已,相当于给对方RP打个电话,告诉对方组播源是谁,然后挂了电话就再也没MSDP任何事了,至于后面组播是通还是不通,都不是MSDP的责任;在应用中,如果一个PIM-SM域的RP已经通过MSDP收到了组播源信息(SA),那么就表示MSDP的工作已经做到位了,MSDP只负责SA的传递,而不负责组播流量是否正常,如果PIM-SM域之间的组播还是不通,这个时候请不要再怀疑是不是MSDP出了问题,问题绝对不在MSDP身上,所以这时你应该把精力放到其它地方,MSDP只关系到SA,而不关系到组播数据流。

    单个域内的PIM-SM要通信,是建立的(*,G)条目,如果PIM-SM域之间要通信,建立的是(S,G)条目,相当于是距离矢量的路径方式。

注:只有PIM-SM才有MSDP,PIM-DM是没有MSDP的,因为只有PIM-SM才有域的概念,才有域间组播通信的概念,PIM-DM没有域的概念,不存在域间组播通信。

指定MSDP peer的命令为:ip msdp peer xxx (xxx为对端MSDP路由器地址)。

                                                                         返回目录

 

MSDP RPF检测

    理论上,PIM-SM域之间建立MSDP连接来交换组播源信息,是在RP与RP之间建立的,不建议在非RP上建立,MSDP是通过TCP来建立的,端口号为639,和BGP的邻居建立相似,所以要建立MSDP,必须手工指定MSDP peer的地址,TCP由地址小的一端主动发起连接,而地址高的一端则在LISTEN状态等待连接。 待MSDP peer建立成功之后,便开始传递SA信息,MSDP之间的Keepalive包每60秒一个,如果75秒没有收到Keepalive包,则会话被重置,而发送的SA信息也可以被当作Keepalive,即如果75秒没有收到Keepalive但收到了SA,也表示连接正常。当一个RP拥有多个MSDP peer时,在从一个peer那里收到SA之后,会转发给除发送者之外的其它所有peer,如下图:

在上图中,PIM-SM Domain 1中的RP路由器R2与PIM-SM Domain 2中的RP路由器R3以及PIM-SM Domain 3中的RP路由器R5之间建立全互联的MSDP连接,R2从R3收到的SA会转发给R5,从R5收到的SA也会转发给R3,并且R3从R2收到的SA会转发给R5,从R5收到的SA也会转发给R2,R5的动作和R2与R3一样,也会将自己收到的SA转发给其它MSDP peer,这样的转发结果就是对于同一个组播源信息会从多个MSDP peer收到多次重复的,比如对于PIM-SM Domain 2中的组播源信息,R5会同时从R3和R2收到,那么对于哪一条是正确的,在收到的时候会做一个检测,然后将正常的SA缓存起来,如上图中,R5只应该接收R3发来的SA,而R3也应该只接收R5发来的SA,对于PIM-SM Domain 2的SA,R2只应该接收R3发来的,对于PIM-SM Domain 3的SA,R2只应该接收R5发来的;(至于SA是谁发来的,是不是从正常路径发来的,我本人认为这并不重要,全部接收好了,我觉得没什么,因为它只是一个消息而已,并且不管是谁发来的,消息的内容都是一模一样的,有什么好纠结的呢?是谁发来的只要消息是对的,并不影响组播流量的转发!),路由器从MSDP peer收到SA之后,需要做Reverse Path Forwarding (RPF)检测,即反向路径检测,普通的RPF检测的方法是查看自己的路由表中去往发送者IP的数据包该从哪个接口出去,那么从哪个接口收到的数据包就被认为是合法有效的,这个合法的接口也被称为RPF接口,事实上MSDP对于SA数据包的RPF检测要比普通RPF检测复杂的多,但这是MSDP唯一的重点,也是唯一的难点,如果RPF检测失败,就表示SA信息被丢弃,那么组播树就无法建立,组播也就无法通信。

 

注:在当前的IOS版本中,将MSDP的SA信息缓存起来是强制执行的,不能人为手工开启或关闭,默认情况下,当MSDP邻居配置之后,命令“ip multicast cache-sa-state”将被自动添加到running configuration中,如果IOS版本早于IOS Releases 12.1(7) 和12.0(14)S1,默认是不开启SA信息缓存功能的,但可以通过手工输入命令“ip multicast cache-sa-state”来开启SA缓存功能。

 

     对于SA的数据包内容,我们不用研究太深,也没必须研究太深,但有一样东西是必须掌握的,就是某个PIM-SM域把SA发来之后,SA数据包里面明确写清楚了那个PIM-SM域内的RP地址是多少,这是SA数据包内我们唯一需要关心的内容,因为该RP地址对SA数据包的RPF检测至关重要,但是这个SA里面写的RP地址可以被人为更改,更改命令为ip msdp originator-id加接口,则使用相应接口的IP地址为SA内的RP地址。

     对收到的SA数据包做RPF检测,和普通的RPF检测不一样,普通的RPF检测是根据所有的IGP路由表以及所有的BGP单播路由表来做检测的,即命令“show ip route”看到的路由表,而对SA数据包做的RPF检测只能根据BGP路由表来做检测,单播BGP和组播BGP都可以,即Unicast Border Gateway Protocol (uBGP)和Multicast Border Gateway Protocol (MBGP),MBGP是Multiprotocol-Border Gateway Protocol (MP-BGP)应用的一种,因为MP-BGP不仅可以扩展到组播,还可以扩展到IPv6以及MPLS。如果同时存在MBGP和单播BGP,则MBGP优先,既然对SA数据包做的RPF检测必须依靠BGP路由表,那就意味着PIM-SM域之间必须运行BGP,如果没有BGP,那么SA的RPF检测将失败,最终导致SA数据包被丢弃。

                                                                         返回目录

 

MSDP RPF检测详细规则

 

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

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

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

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

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

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

 

1.MSDP peer是iBGP邻居;

2.MSDP peer是eBGP邻居;

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

 

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

 

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

1.当MSDP peer是iBGP邻居

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

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

所以建议建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号码和去往MSDP peer的最佳路径的下一跳AS号码相同,则检测通过,否则检测失败。(先查多播路由表(MRIB),再查单播路由表(URIB)

解释:不需要再解释。

                                                                         返回目录

Default MSDP Peer

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

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

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

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

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

 

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

 

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

 

Default MSDP Peer的优势:

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

 

重点说明:

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

                                                                         返回目录

 

MSDP Mesh Group

     MSDP Mesh Group的中文意思是MSDP全互联组,从字面意思就可以看出,MSDP Peer之间的连接应该是全互联的,何为全互联?全互联就是指每两个MSDP Peer之间都有一条MSDP连接,换句话说就是每一个MSDP Peer都和其它任何MSDP Peer拥有MSDP连接。在全互联的模式下,每一个MSDP Peer收到任何SA都不会转发给其它MSDP Peer,为什么呢?例如有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中的任何MSDP Peer在收到SA之后都不会转发给其它MSDP Peer,这就表明对于同一份SA数据包来说,MSDP Peer永远只能从单个MSDP Peer那里收到,并且发送SA的那个MSDP Peer就是初始MSDP Peer,这也保证了MSDP Peer所收到的SA永远都是对的,MSDP Peer永远不可能从一个错误的路径收到不可信任的SA。既然这样,从MSDP Mesh Group中的MSDP Peer收到的所有SA都不再需要做RPF检测便被缓存起来使用。

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

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

MSDP Mesh Group的优势:

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

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

                                                                         返回目录

 

MSDP SA Filter

     对于SA,无论是发出去的还是收到的,无论是源自其它MSDP Peer还是自己产生的,都可以通过Filter List来做过滤,所过滤的条件可基于ACL、route map、RP access list、RP route map,这里的ACL必须是扩展ACL。

对接收的SA做过滤的命令为:ip msdp sa-filter in xxx yyy(xxx为对端MSDP路由器地址,yyy为ACL、route map、RP access list、RP route map,如果不跟yyy,则表示所有SA);

对发出去的SA做过滤的命令为:ip msdp sa-filter out xxx yyy(xxx为对端MSDP路由器地址,yyy为ACL、route map、RP access list、RP route map,如果不跟yyy,则表示所有SA)。

                                                                          返回目录

 

PIM-SM域边界

   我们所定义的PIM-SM域,其实就是所有组播路由器都拥有同一个RP的网络范围,如果在网络里一部分组播路由器使用某一个RP,而另一部分组播路由器使用另一个RP,那么它们就属于两个不同的PIM-SM域。为组播网络指定RP的方法有3种,分别为:手工静态指定,Auto-RP(Cisco私有),BootStrap Router (BSR),如果使用手工静态指定的方法,要明确划分PIM-SM域是非常简单的,因为想让某台路由器使用某个RP只要使用命令强制指定即可,并且任何时候都不会变动,如下图:

 

 

如上图所示,网络中有4台路由器,要让R1和R2在PIM-SM Domain 1中,使用R1(1.1.1.1)作为PIM-SM Domain 1的RP,让R3和R4在PIM-SM Domain 2中,使用R4(4.4.4.4)作为PIM-SM Domain 2的RP,在使用手工静态指定的情况下,只需要使用命令强制指定R1和R2的RP为1.1.1.1,强制指定R3和R4的RP为4.4.4.4即可。

    而在使用Auto-RP时,我们知道它是个动态分发RP的协议,组播网络中的RP是谁,需要靠协议自动去计算,然后自动通告出去,所以结果可能并非我们所预期的那样,如果整个组播网络中都使用Auto-RP来分发RP,那么结果可想而知,这里只可能出现一个PIM-SM域,因为全网通过Auto-RP所获得的RP信息都是一致的,如果在使用Auto-RP的情况下也要划分出像上图所示的2个PIM-SM域,就必须让Auto-RP的协议流量只在单个域范围内通告,在上图中就是PIM-SM Domain 1内的Auto-RP通告信息只能在R1和R2之间传递,无法穿过R2的F0/1接口到达PIM-SM Domain 2,而PIM-SM Domain 2内的Auto-RP通告信息也只能在R3和R4之间传递,无法穿过R3的F0/1接口到达PIM-SM Domain 1,这样两个PIM-SM域在使用Auto-RP的情况下也能保证互不影响,相互独立。要让Auto-RP的通告信息无法穿过R2的F0/1或者无法穿过R3的F0/1,可以使用过滤组播流量的方法来实现,我们都知道Auto-RP的流量使用的组播地址为224.0.1.39 和 224.0.1.40,所以我们只要在R2或R3的F0/1接口上将这两个组的流量过滤掉即可,但其它组的流量必须放行,要不然正常的组播流量也被过滤掉了,那么组播就不通了。过滤组播流量的方法为在接口下使用命令“ip multicast boundary xxx”,其中xxx表示匹配组播地址的ACL名,该命令在接口上应用之后,将同时过滤掉接口进来和出去的所有流量,按上面所提到的需求,那就只需要在R2或R3上做如下配置即可:

access-list 1 deny   224.0.1.39

access-list 1 deny   224.0.1.40

access-list 1 permit any

 

interface f0/1

ip multicast boundary 1

该配置定义了将组播地址为224.0.1.39 和 224.0.1.40的流量过滤掉,而放行其它所有组播流量,并将该过滤应用到接口F0/1上,这样一来,Auto-RP的流量就无法通过R2或R3的F0/1接口了,从而实现了PIM-SM Domain 1与PIM-SM Domain 2的相互独立,互不干扰。

对于在使用BSR的情况下划分PIM-SM域,方法同使用Auto-RP的情况类似,区别就是使用的命令不同,过滤BSR信息的方法为在接口下使用命令“ip pim bsr-border”,后面不需要跟任何参数,包括ACL,这条命令将阻止接口上收到或发出的所有BSR数据,按上面所提到的需求,那就只需要在R2或R3上做如下配置即可:

interface f0/1

ip pim bsr-border

该配置定义了BSR的流量在R2或R3的F0/1接口上被过滤掉,但放行其它所有组播流量,这样一来,BSR的流量就无法通过,从而实现了PIM-SM Domain 1与PIM-SM Domain 2的相互独立,互不干扰。

 

重点说明:

在划分多个PIM-SM域之后,如果PIM-SM域之间还需要组播通信,这两个PIM-SM域之间必须还有PIM-SM连接通路,即还有PIM-SM邻居,否则两个域之间连最基本的PIM-SM通路都没了,组播流量就无从转发;虽然PIM-SM域之间有MSDP连接,但不要忘记,MSDP的作用是传递SA的,它与普通的组播流量无关。如果两个PIM-SM域之间被ISP隔开,则可通过创建Generic Routing Encapsulation (GRE) Tunnel的方式来实现PIM-SM互联,所以也必须在GRE Tunnel上配开启PIM-SM。

                                                                         返回目录

 

组播流RPF检测详细规则

这里所提到的组播流RPF检测是指对普通组播流量的RPF检测,即对用户组播流量的RPF检测,它与SA数据包的RPF检测毫无关系,两个是相互独立,毫无关联的。

    之前我们已经重点强调过,MSDP协议的功能和目的只有一个,就是把一个PIM-SM域内的组播源信息(SA)发送给其它PIM-SM域的RP,从而让PIM-SM域间的组播通信正常,MSDP只是在PIM-SM域之间传个消息而已,只要PIM-SM域之间的SA已经确认收到了,那么就表示MSDP的工作已经做到位了,至于后面组播是通还是不通,都不是MSDP的责任;所以这时你应该把精力放到其它地方,在PIM-SM域之间的SA数据包已经正常的情况下,最有可能影响到组播流量不通的情况就是普通组播流的RPF检测,所以下面我们来详细介绍普通组播流的RPF检测如何工作。

     前面所提到的对SA数据包的RPF检测只能基于BGP路由表,而普通组播流的RPF检测可以基于任何路由表,其中包括了BGP和MBGP路由表,可用的路由表如下:

1.单播路由表,即命令“show ip route”看到的所有路由表,包括BGP。

2.MBGP路由表,也就是组播BGP专用的路由表。

3.Distance Vector Multicast Routing Protocol (DVMRP) 路由表(目前无须掌握)。

4.静态组播路由表(就像静态指定单播路由表一样指定组播路由表)。

在对普通组播流做RPF检测时,是根据以上所有路由表AD值来决定先后顺利的,当收到组播流量以后,先查看发送该数据的源IP地址是什么,然后在以上路由表中查看去往源IP的数据包该从哪个接口出去,那么从哪个接口收到的数据包就被认为是合法有效的,这个合法的接口也被称为RPF接口,只有从RPF接口收到的流量才能转发,从其它所有接口收到的组播流量都将被丢弃。

 

注:如果是共享树(Share-Tree),则RP的地址被视为源IP地址的。

当以上路由表中路由条目的AD值完全一样时,则按以下顺序来做RPF检测:

如果都一样,那就最长匹配

 

1.静态组播路由表

2.DVMRP路由表

3.MBGP路由表

4.单播路由表

.

如果在同一个路由表中发现多条去往源IP的路由,则选择最长掩码匹配,因为在这里同一个路由表中不可能出现多条掩码相同的路由,所以一定能够选出结果,如果在负载均衡时路由出口有多个,则每个接口都被认为有效。

 

注:如果接口没有开启PIM,将不参与RPF检测,如果需要看到更多情况下的RPF检测效果,请尽可能多的开启组播接口。

                                                                         返回目录

 

Anycast RP

在PIM-SM模式下,组播想要通信,就必须拥有正常运行的RP,指定RP的方法有3种:手工静态指定,Auto-RP,BSR,其中通过手工静态指定的RP在任何时候都不会变动,只要该RP路由器出现故障,组播流量将中断,不能拥有备份RP;如果使用Auto-RP或BSR,则可以设置多个RP,但同一时间只能有一个RP是工作的,只要工作的RP出现故障,就会选举备份RP接替之前的工作,使用Auto-RP或BSR能够实现多个RP的冗余备份功能,在出现故障时能够快速切换,但是多个RP中只能有一个RP可以工作,可想而知这个RP在大流量组播的情况下就会出现瓶胫,虽然配置了多个RP,但这些RP并不能分担组播流量。

    Auto-RP和BSR最大的优势是能够通过多个RP实现备份功能,但是却不能实现多个RP负载均衡,为了能够在网络中配置多个RP既能实现备份功能,又能让所有RP同时工作实现流量负载功能,所以在MSDP的应用下扩展出了Anycast RP。Anycast RP采用了一种很新颖的思路来实现多个RP的负载与冗余,它通过在组播网络中将2个或者2个以上的RP配置成相同的RP地址来实现冗余和备份功能,每个RP路由器上都创建一个loopback接口来充当RP,并且该接口地址的掩码必须是/32位的,然后将该地址通过动态路由协议发布到网络中,因为所有RP的这个loopback接口地址全部是一样的,所以能够实现冗余功能,当其中某一台RP出现故障后,流量可以很平滑地被转移到另一台RP上,这都是因为所有RP的地址是同一个地址,如下图:

 

在上图中,全网运行OSPF路由协议,其中R2、R3、R5共3台路由器上都创建了接口Loopback 10,并且配置的IP地址都是10.1.1.1/32,然后将该地址发布到OSPF中,3台路由器都以接口Loopback 10的地址发布为RP,最终所有路由器都认为RP地址是10.1.1.1,这样一来,3个RP都能为网络中提供组播流量转发,无论其中哪台RP出现故障,只要网络中还剩一台可用RP,那么组播流量还能正常通信,这就是Anycast RP实现的RP冗余功能。并且因为所有RP的Loopback 10接口地址都发布进了OSPF,所以所有路由器选择去往10.1.1.1都是通过OSPF来选择最近的路径,例如R4一定是从F0/1出去选择R3的10.1.1.1,而R6一定是从F0/0出去选择R5的10.1.1.1,而R1一定是从S1/0出去选择R2的10.1.1.1,这样一来,Anycast RP不仅实现了RP冗余功能,同时还实现了RP的流量负载均衡功能,因为这时所有的流量是被分摊到多个RP同时传输的,如果当某个RP出现故障,那么流量将被转移至下一台最近的RP,例如当R5出现故障后,R6将从S1/0出去选择R3的10.1.1.1,从而维持了组播通信。

    从上述环境中我们还可以看出,组播源R4和R6以及组成员R1都注册到了不同的RP,这么一来,就没有一个RP拥有完整的组播源和组成员信息,这样就不可能建立正常的组播树,所以必须寻求一种办法让所有的RP都拥有完整一致的组播源和组成员信息,这个目标可以通过在RP之间创建MSDP来实现,在上图中,当在R2、R3和R5之间建立MSDP之后,通过相互交换SA信息,就能够让所有的RP都学习到完整的组播源和组成员信息,从而保证组播正常通信。这里的MSDP可以是全互联,也可以不全互联,只要保护SA信息能够让每个RP都收到即可。

     之前提到过,MSDP路由器发出的SA数据包里面明确写清楚了RP地址是多少,但在布署Anycast RP的环境下,所有MSDP发出的SA数据包里面的RP地址全是相同的,这种情况可能会导致SA无法传递,因为在遇到对SA数据包做RPF检测时,肯定是会失败的,所以需要手工配置命令将其改掉,更改命令为ip msdp originator-id加接口,则使用相应接口的IP地址为SA数据包内的RP地址。

     因为不同的PIM-SM域之间的RP地址是不同的,而Anycast RP要求所有的RP地址相同,所以Anycast RP只能在单个PIM-SM域范围内设计和使用,在PIM-SM域之间不需要实施Anycast RP

  

注:无论在配置PIM-SM单域还是PIM-SM多域,都应该事先保证全网单播互通。

                                                                         返回目录

 

配置一对一PIM-SM域的MSDP实验

配置任务包含:
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置GRE Tunnel隧道
      4.配置MSDP
      5.通过单播路由表解决PIM-SM域间组播通信问题
      6.通过静态组播路由表解决PIM-SM域间组播通信问题
      7.通过MBGP解决PIM-SM域间组播通信问题

 

实验说明:

以下图为环境配置一对一PIM-SM域的MSDP实验:

 

上图中两个PIM-SM域通过Internet相连,其中R1和R2在PIM-SM Domain 1中,R4、R5和R6在PIM-SM Domain 2中,R3模拟Internet路由器,所以R3不需要参与组播,也不允许参与组播;PIM-SM Domain 1和PIM-SM Domain 2之间需要创建Tunnel来穿越Internet实现组播通信,其中R5和R6为组224.1.1.1的组播源,R1为组成员。

除了图上所标识出的接口地址外,R2和R4还配有Loopback接口,分别为:

R2(Loopback 0 :2.2.2.2/24)

R4(Loopback 0 :4.4.4.4/24)

PIM-SM Domain 1的RP为2.2.2.2,即R2,PIM-SM Domain 2的RP为4.4.4.4,即R4,

所有路由器上都运行OSPF,并将所有接口都发布进OSPF,以保证全网单播互通。

                                                                         返回目录

 

1.配置初始网络环境

(1)配置R1:

r1(config)#int f0/0

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no shutdown

r1(config-if)#exit

 

r1(config)#router ospf 1

r1(config-router)#network 0.0.0.0 0.0.0.0 area 0

r1(config-router)#exit

说明:为R1的F0/0配置接口地址,并将所有接口发布进OSPF。

 

(2)配置R2:

r2(config)#int loopback 0

r2(config-if)#ip add 2.2.2.2 255.255.255.0

r2(config-if)#ip ospf network point-to-point

r2(config-if)#exit

r2(config)#

 

r2(config)#int f0/0

r2(config-if)#ip add 12.1.1.2 255.255.255.0

r2(config-if)#no shutdown

r2(config-if)#exit

 

r2(config)#int f0/1

r2(config-if)#ip add 23.1.1.2 255.255.255.0

r2(config-if)#no shutdown

r2(config-if)#exit

r2(config)#

r2(config)#router ospf 1

r2(config-router)#network 0.0.0.0 0.0.0.0 area 0

r2(config-router)#exit

说明:为R2的Loopback 0,F0/0,F0/1配置接口地址,并将所有接口发布进OSPF。

 

(3)配置R3:

r3(config)#int f0/1

r3(config-if)#ip add 23.1.1.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#exit

r3(config)#

 

r3(config)#int f0/0

r3(config-if)#ip add 34.1.1.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#exit

r3(config)#router ospf 1

r3(config-router)#network 0.0.0.0 0.0.0.0 area 0

r3(config-router)#exit

说明:为R3的F0/1,F0/0配置接口地址,并将所有接口发布进OSPF。

 

(4)配置R4:

r4(config)#int loopback 0

r4(config-if)#ip add 4.4.4.4 255.255.255.0

r4(config-if)#ip ospf network point-to-point

r4(config-if)#exit

r4(config)#

r4(config)#int f0/0

r4(config-if)#ip add 34.1.1.4 255.255.255.0

r4(config-if)#no shutdown

r4(config-if)#exit

r4(config)#int f0/1

r4(config-if)#ip add 45.1.1.4 255.255.255.0

r4(config-if)#no shutdown

r4(config-if)#exit

r4(config)#

r4(config)#int s1/0

r4(config-if)#encapsulation frame-relay

r4(config-if)#no frame-relay inverse-arp

r4(config-if)#no arp frame-relay

r4(config-if)#ip add 46.1.1.4 255.255.255.0

r4(config-if)#no shutdown

r4(config-if)#frame-relay map ip 46.1.1.6 406 broadcast

r4(config-if)#ip ospf network point-to-point

r4(config-if)#exit

r4(config)#

说明:为R4的Loopback 0,F0/0,F0/1,S1/0配置接口地址,并将所有接口发布进OSPF。

 

(5)配置R5:

r5(config)#int f0/1

r5(config-if)#ip add 45.1.1.5 255.255.255.0

r5(config-if)#no shutdown

r5(config-if)#exit

r5(config)#router ospf 1

r5(config-router)#network 0.0.0.0 0.0.0.0 area 0

r5(config-router)#exit

说明:为R5的F0/1配置接口地址,并将所有接口发布进OSPF。

 

(6)配置R6:

r6(config)#int s1/0

r6(config-if)#encapsulation frame-relay

r6(config-if)#no frame-relay inverse-arp

r6(config-if)#no arp frame-relay

r6(config-if)#ip add 46.1.1.6 255.255.255.0

r6(config-if)#no shutdown

r6(config-if)#frame-relay map ip 46.1.1.4 604 broadcast

r6(config-if)#ip ospf network point-to-point

r6(config-if)#exit

r6(config)#router ospf 1

r6(config-router)#network 0.0.0.0 0.0.0.0 area 0

r6(config-router)#exit

说明:为R6的S1/0配置接口地址,并将所有接口发布进OSPF。

 

(7)查看R1的路由学习情况:

r1#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/3] via 12.1.1.2, 00:02:19, FastEthernet0/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/2] via 12.1.1.2, 00:02:19, FastEthernet0/0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/4] via 12.1.1.2, 00:02:19, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/2] via 12.1.1.2, 00:02:19, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/67] via 12.1.1.2, 00:02:19, FastEthernet0/0

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/4] via 12.1.1.2, 00:02:19, FastEthernet0/0

r1#

说明:R1已经学习到全网的每一条路由。

 

(8)查看R2的路由学习情况:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:02:50, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/3] via 23.1.1.3, 00:02:50, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/66] via 23.1.1.3, 00:02:50, FastEthernet0/1

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/3] via 23.1.1.3, 00:02:50, FastEthernet0/1

r2#

说明:R2已经学习到全网的每一条路由。

  

(9)查看R3的路由学习情况:

R3:

r3#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

C       34.1.1.0 is directly connected, FastEthernet0/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/2] via 23.1.1.2, 00:03:14, FastEthernet0/1

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/2] via 34.1.1.4, 00:03:14, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/2] via 23.1.1.2, 00:03:14, FastEthernet0/1

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/65] via 34.1.1.4, 00:03:14, FastEthernet0/0

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/2] via 34.1.1.4, 00:03:15, FastEthernet0/0

r3#

说明:R3已经学习到全网的每一条路由。

 

(10)查看R4的路由学习情况:

R4:

r4#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

C       34.1.1.0 is directly connected, FastEthernet0/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/3] via 34.1.1.3, 00:03:22, FastEthernet0/0

     4.0.0.0/24 is subnetted, 1 subnets

C       4.4.4.0 is directly connected, Loopback0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/2] via 34.1.1.3, 00:03:22, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/3] via 34.1.1.3, 00:03:22, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

C       46.1.1.0 is directly connected, Serial1/0

     45.0.0.0/24 is subnetted, 1 subnets

C       45.1.1.0 is directly connected, FastEthernet0/1

r4#

说明:R4已经学习到全网的每一条路由。

(11)查看R5的路由学习情况:

R5:

r5#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 45.1.1.4, 00:03:48, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/4] via 45.1.1.4, 00:03:48, FastEthernet0/1

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/2] via 45.1.1.4, 00:03:48, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/3] via 45.1.1.4, 00:03:48, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/4] via 45.1.1.4, 00:03:48, FastEthernet0/1

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/65] via 45.1.1.4, 00:03:48, FastEthernet0/1

     45.0.0.0/24 is subnetted, 1 subnets

C       45.1.1.0 is directly connected, FastEthernet0/1

r5#

说明:R5已经学习到全网的每一条路由。

 

(12)查看R6的路由学习情况:

R6:

r6#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/65] via 46.1.1.4, 00:04:11, Serial1/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/67] via 46.1.1.4, 00:04:11, Serial1/0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/65] via 46.1.1.4, 00:04:11, Serial1/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/66] via 46.1.1.4, 00:04:11, Serial1/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/67] via 46.1.1.4, 00:04:11, Serial1/0

     46.0.0.0/24 is subnetted, 1 subnets

C       46.1.1.0 is directly connected, Serial1/0

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/65] via 46.1.1.4, 00:04:11, Serial1/0

r6#

说明:R6已经学习到全网的每一条路由。

 

(13)在R1上测试到其它网段的连通性:

r1#ping

r1#ping 2.2.2.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 28/47/80 ms

r1#

r1#ping 4.4.4.4

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 4.4.4.4, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 108/191/240 ms

r1#

r1#ping 45.1.1.5

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 45.1.1.5, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 124/216/288 ms

r1#

r1#ping 46.1.1.6

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 46.1.1.6, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 140/212/268 ms

r1#

说明:R1与2.2.2.0/24、4.4.4.0/24、45.1.1.0/24、46.1.1.0/24通信正常,说明已经全网单播互通。

                                                                         返回目录

 

2.配置PIM-SM

(1)在R1上配置PIM-SM:

r1(config)#ip multicast-routing

r1(config)#

r1(config)#int f0/0

 

r1(config-if)#ip pim sparse-mode

r1(config-if)#ip igmp join-group 224.1.1.1

r1(config-if)#exit

r1(config)#

说明:在R1上开启组播功能,并且在接口F0/0下开启PIM-SM模式,接口F0/0加入组224.1.1.1,成为组成员。

 

(2)在R2上配置PIM-SM:

r2(config)#ip multicast-routing

 

r2(config)#int loopback 0

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

 

r2(config)#int f0/0

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

 

r2(config)#int f0/1

r2(config-if)#ip pim sparse-mode

r2(config-if)#exi

r2(config)#

说明:在R2上开启组播功能,并且在接口Loopback 0,F0/0,F0/1下开启PIM-SM模式;虽然R3不参与组播,但连接R3的接口F0/1还是开了PIM,是因为如果接口没有开启PIM,将不参与RPF检测,所以为了尽量看到RPF检测的效果,尽可能多的开了组播接口。

 

(3)在R4上配置PIM-SM:

r4(config)#ip multicast-routing

r4(config)#int loopback 0

r4(config-if)#ip pim sparse-mode

r4(config-if)#exit

 

r4(config)#int f0/1

r4(config-if)#ip pim sparse-mode

r4(config-if)#exit

 

r4(config)#int s1/0

r4(config-if)#ip pim sparse-mode

r4(config-if)#exit

r4(config)#

说明:在R3上开启组播功能,并且在接口Loopback 0,F0/1,S1/0下开启PIM-SM模式。

 

(4)在R5上配置PIM-SM:

r5(config)#ip multicast-routing

r5(config)#

r5(config)#int f0/1

r5(config-if)#ip pim sparse-mode

r5(config-if)#exit

说明:在R5上开启组播功能,并且在接口F0/1下开启PIM-SM模式。

 

(5)在R6上配置PIM-SM:

r6(config)#ip multicast-routing

r6(config)#

r6(config)#int s1/0

r6(config-if)#ip pim sparse-mode

r6(config-if)#exit

说明:在R6上开启组播功能,并且在接口S1/0下开启PIM-SM模式。

 

(6)在R2上查看PIM邻居情况:

r2#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

12.1.1.1          FastEthernet0/0          00:02:42/00:01:30 v2    1 / S

r2#

说明:在PIM-SM Domain 1中,只有R2和R1是PIM邻居。

 

(7)在R4上查看PIM邻居情况:

r4#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

45.1.1.5          FastEthernet0/1          00:01:21/00:01:22 v2    1 / DR S

46.1.1.6          Serial1/0                00:00:53/00:01:20 v2    1 / DR S

r4#

说明:在PIM-SM Domain 2中,只有R4和R5与R6是PIM邻居。

 

(8)将R2配置为PIM-SM Domain 1的RP:

r2(config)#access-list 24 permit 224.1.1.1

r2(config)#ip pim send-rp-announce loopback 0 scope 16 group-list 24

r2(config)#ip pim send-rp-discovery loopback 0 scope 16

说明:R2以Loopback 0作为组224.1.1.1的RP和映射代理。

 

(9)将R4配置为PIM-SM Domain 1的RP:

r4(config)#access-list 24 permit 224.1.1.1

r4(config)#ip pim send-rp-announce loopback 0 scope 16 group-list 24

r4(config)#ip pim send-rp-discovery loopback 0 scope 16

说明:R4以Loopback 0作为组224.1.1.1的RP和映射代理。

  

(10)在R1上查看RP学习情况:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 2.2.2.2 (?), v2v1

    Info source: 2.2.2.2 (?), elected via Auto-RP

         Uptime: 00:00:47, expires: 00:02:09

r1#

说明:和预期一样,PIM-SM Domain 1的R1学习到的RP正是2.2.2.2,因为目前PIM-SM Domain 1与PIM-SM Domain 2之间没有PIM通路,所以两边的RP信息互不传递,互不影响。

 

(11)在R2上查看RP学习情况:

r2#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 2.2.2.2 (?), v2v1

    Info source: 2.2.2.2 (?), elected via Auto-RP

         Uptime: 00:01:03, expires: 00:02:58

r2#

说明:和预期一样,PIM-SM Domain 1的R2学习到的RP也是2.2.2.2。

 

(12)在R4上查看RP学习情况:

r4#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:00:40, expires: 00:02:16

r4#

说明:和预期一样,PIM-SM Domain 2的R4学习到的RP正是4.4.4.4,,因为与PIM-SM Domain 1之间没有PIM通路,所以两边保持着PIM-SM域独立。

 

(13)在R5上查看RP学习情况:

r5#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:00:58, expires: 00:02:00

r5#

说明:和预期一样,PIM-SM Domain 2的R5学习到的RP也是4.4.4.4。

 

(14)在R6上查看RP学习情况:

r6#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:01:13, expires: 00:02:42

r6#

说明:和预期一样,PIM-SM Domain 2的R6学习到的RP也是4.4.4.4。

 

 

(15)测试R1到组224.1.1.1的通信情况:

r1#ping 224.1.1.1

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 4 ms

r1#

说明:在单个域内,组播通信没问题。

  

(16)测试R2到组224.1.1.1的通信情况:

r2#ping 224.1.1.1

 

Type escape sequence to abort.

Sending 1, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 168 ms

Reply to request 0 from 12.1.1.1, 180 ms

r2#

 

(17)测试PIM-SM Domain 2到组224.1.1.1的通信情况:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r4#

 

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r5#

 

R6:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r6#

说明:因为PIM-SM Domain 2与PIM-SM Domain 1之间连最基本的PIM通路都没有,所以组播不通是正常的,要通了才怪了。

                                                                         返回目录

  

3.配置GRE Tunnel隧道

(1)在R2上配置连接R4的GRE Tunnel隧道:

r2(config)#int tunnel 24

r2(config-if)#ip address 24.1.1.2 255.255.255.0

r2(config-if)#tunnel source loopback 0

r2(config-if)#tunnel destination 4.4.4.4

r2(config-if)#exit

说明:配置连接PIM-SM Domain 1和PIM-SM Domain 2的GRE Tunnel隧道,使用双方的Loopback 0地址作为GRE Tunnel隧道两端的端点。

 

(2)在R4上配置连接R2的GRE Tunnel隧道:

r4(config)#int tunnel 24

r4(config-if)#ip add 24.1.1.4 255.255.255.0

r4(config-if)#tunnel source loopback 0

r4(config-if)#tunnel destination 2.2.2.2

r4(config-if)#exit

说明:配置连接PIM-SM Domain 1和PIM-SM Domain 2的GRE Tunnel隧道

 

(3)测试GRE Tunnel隧道的连通性:

r2#ping 24.1.1.4

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 24.1.1.4, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 124/223/360 ms

r2#

 

r4#ping 24.1.1.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 24.1.1.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 72/145/276 ms

r4#

说明:目前连接PIM-SM Domain 1和PIM-SM Domain 2的GRE Tunnel隧道通信正常。

 

 

(4)再次测试PIM-SM Domain 2到组224.1.1.1的通信情况:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r4#

 

 

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r5#

说明:即使配置了连接PIM-SM Domain 1和PIM-SM Domain 2的GRE Tunnel隧道,但域间组播还是无法通信,因为两个PIM-SM域之间连最基本的PIM通路都没有,如果没有PIM通路,这种做了GRE Tunnel隧道的环境跟没做是一样的。

 

 

(5)在R4上查看关于组224.1.1.1的PIM-SM组播树情况:

r4#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:06:46/stopped, RP 4.4.4.4, flags: SP

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(4.4.4.4, 224.1.1.1), 00:01:01/00:02:24, flags: PT

  Incoming interface: Loopback0, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(45.1.1.4, 224.1.1.1), 00:01:01/00:02:16, flags: P

  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(45.1.1.5, 224.1.1.1), 00:00:50/00:02:34, flags: PT

  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(46.1.1.4, 224.1.1.1), 00:01:00/00:02:16, flags: P

  Incoming interface: Serial1/0, RPF nbr 0.0.0.0

  Outgoing interface list: Null

         

r4#

说明:由以上组播树可以看出,R4根本就没有能够去往PIM-SM Domain 1的组播出口。

 

(6)将GRE Tunnel隧道加入PIM,形成PIM-SM Domain 1和PIM-SM Domain 2的PIM通道:

r2(config)#int tunnel 24

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

 

r4(config)#int tunnel 24

r4(config-if)#ip pim sparse-mode

r4(config-if)#exit

说明:R2和R4都已经在GRE Tunnel隧道上开启PIM功能,但不要忘记,GRE Tunnel隧道接口也已经被通告进了OSPF进程,因为在配置OSPF时,是将所有接口通告进去的。

 

(7)查看R4的PIM邻居情况:

r4#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

45.1.1.5          FastEthernet0/1          00:14:49/00:01:42 v2    1 / DR S

46.1.1.6          Serial1/0                00:14:22/00:01:39 v2    1 / DR S

24.1.1.2          Tunnel24                 00:00:25/00:01:19 v2    1 / S

r4#

说明:R4已经通过GRE Tunnel隧道和R2形成PIM邻居关系,说明PIM-SM Domain 1已经通过PIM和PIM-SM Domain 2正式连通。

 

(8)查看所有组播路由器的RP情况:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 2.2.2.2 (?), elected via Auto-RP

         Uptime: 00:09:09, expires: 00:02:58

r1#

 

r2#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 00:12:08, expires: 00:02:00

  RP 2.2.2.2 (?), v2v1

    Info source: 2.2.2.2 (?), via Auto-RP

         Uptime: 01:21:36, expires: 00:02:55

r2#

 

r4#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:21:02, expires: 00:02:45

r4#

 

r5#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:21:14, expires: 00:02:19

r5#

r5#

 

 

r6#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:21:29, expires: 00:02:06

r6#

说明:因为PIM-SM Domain 1和PIM-SM Domain 2已经在GRE Tunnel隧道上通过PIM连通,所以所有路由器就等于在同一个PIM-SM大域里面,由于RP 4.4.4.4的地址高于RP 2.2.2.2,导致所有组播路由器将得到RP是4.4.4.4的消息,因此要规划PIM-SM域间组播,就必须在

PIM-SM Domain 1和PIM-SM Domain 2之间划分域边界来隔离两个组播网络。

 

(9)在R2上划分PIM-SM域边界:

r2(config)#access-list 1 deny   224.0.1.39

r2(config)#access-list 1 deny   224.0.1.40

r2(config)#access-list 1 permit any

 

r2(config)#int tunnel 24

r2(config-if)#ip multicast boundary 1

r2(config-if)#exit

r2(config)#

说明:因为GRE Tunnel隧道是导致PIM-SM Domain 1和PIM-SM Domain 2成为同一个PIM-SM域的根本原因,所以在GRE Tunnel隧道上将分发RP信息的Auto-RP流量过滤掉,从而实现PIM-SM域的分割,因为过滤是对进和出流量同时生效,所以只需要在R2一边做即可,不需要在R4上重复做。

 

(10)再次查看所有组播路由器的RP情况:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 2.2.2.2 (?), v2v1

    Info source: 2.2.2.2 (?), elected via Auto-RP

         Uptime: 00:00:44, expires: 00:02:15

r1#

 

r2#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 2.2.2.2 (?), v2v1

    Info source: 2.2.2.2 (?), elected via Auto-RP

         Uptime: 01:26:30, expires: 00:02:00

r2#

 

 

r4#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback0)

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:25:52, expires: 00:02:58

r4#

 

 

 

r5#sh ip pim rp mapping        

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:26:05, expires: 00:02:26

r5#

r5#

 

r6#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 4.4.4.4 (?), v2v1

    Info source: 4.4.4.4 (?), elected via Auto-RP

         Uptime: 01:26:16, expires: 00:02:19

r6#

 

说明:划分PIM-SM域边界后,PIM-SM Domain 1中的R1和R2学习到2.2.2.2是RP,PIM-SM Domain 2中的R4,R5和R6学习到4.4.4.4是RP,和预期的一样,从而实现了PIM-SM Domain 1和PIM-SM Domain 2的PIM-SM域独立。

                                                                          返回目录

 

4.配置MSDP

(1)在PIM-SM Domain 1与PIM-SM Domain 2之间配置MSDP连接:

r2(config)#ip msdp peer 4.4.4.4 connect-source loopback 0

 

r4(config)#ip msdp peer 2.2.2.2 connect-source loopback 0

 

说明:在PIM-SM Domain 1的RP路由器R2和PIM-SM Domain 2的路由器R4上使用Loopback 0建立MSDP连接。

 

(2)查看MSDP的连接情况:

r2#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

4.4.4.4          ?     Down     00:00:48 0     0     ?

r2#

 

r4#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

2.2.2.2          ?     Listen   00:00:27 0     0     ?

r4#

说明:因为R4的IP地址大,所以停留在Listen状态对方发起连接。

 

(3)再次查看MSDP的连接情况:

r2#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

4.4.4.4          ?     Up       00:01:07 0     0     ?

r2#

 

r4#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

2.2.2.2          ?     Up       00:01:16 0     0     ?

r4#

说明:MSDP已经正常连接,说明已经可以传递SA信息。

 

(4)在R2上查看SA信息:

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 0 entries

r2#

说明:因为目前没有路由器发起组播流量,也就没有组播源,那么也就不会产生SA信息。

 

(5)在组播源路由器R5上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

在MSDP路由器R2上开启Debug:

r2#debug ip msdp peer

MSDP Peer debugging is on

r2#

r2#debug ip msdp detail

MSDP Detail debugging is on

r2#

 

在组播源路由器R5上发起组播流量:

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r5#

说明:组播不通,后面将根据实际情况一步一步解决。

观察R2上的Debug信息:

r2#

*Mar  1 00:49:41.563: MSDP(0): Received 20-byte TCP segment from 4.4.4.4

*Mar  1 00:49:41.567: MSDP(0): Append 20 bytes to 0-byte msg 6 from 4.4.4.4, qs 1

*Mar  1 00:49:41.567: MSDP(0): 4.4.4.4: Received 20-byte msg 6 from peer

*Mar  1 00:49:41.567: MSDP(0): 4.4.4.4: SA TLV, len: 20, ec: 1, RP: 4.4.4.4

*Mar  1 00:49:41.571: MSDP(0): 4.4.4.4: Peer RPF check passed for single peer

*Mar  1 00:49:41.571: MSDP(0): WAVL Insert SA Source 45.1.1.5 Group 224.1.1.1 RP 4.4.4.4 Successful

r2#

说明:因为目前R2只有单个MSDP peer,所以对于收到的SA也就没必要进行RPF检测,最后R2顺利将起始PIM-SM域的MSDP路由器4.4.4.4发来的SA缓存起来,从Debug信息中可以看出,SA信息中的组播源是45.1.1.5,正是我们发起组播流量的R5,而组地址224.1.1.1也是正确的,对方的RP是4.4.4.4也正确。

  

(6)在MSDP路由器R2上查看SA信息的接收情况:

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 1 entries

(45.1.1.5, 224.1.1.1), RP 4.4.4.4, AS ?,00:01:04/00:04:55, Peer 4.4.4.4

Learned from peer 4.4.4.4, RPF peer 4.4.4.4,

SAs received: 1, Encapsulated data received: 0

r2#

说明:MSDP路由器R2已经正常接收到PIM-SM Domain 1的SA,但组播还是不通,这个原因在理论部分我们已经重点强调过,MSDP的责任只是负责SA的传递,只要SA已经收到,那么MSDP的工作就已经完成,如果组播仍然不通,就不再是MSDP的问题,一定是其它问题,而通常影响组播不通的最大问题可能就是组播流的RPF检测,所以下面我们着手检查组播流RPF的情况,从而解决组播的通信问题。

因为普通组播流量的RPF检测是先查看发送该数据的源IP地址是什么,然后在路由表中查看去往源IP的数据包该从哪个接口出去,那么从哪个接口收到的数据包就被认为是合法有效的,而查看的路由表共包括:单播路由表,MBGP路由表,DVMRP 路由表以及静态组播路由表,但目前我们只有单播路由表,其它都没有配,所以我们首先从单播路由表下手,并且也只能从单播路由表下手。

 

(7)在R2上查看去往组播源45.1.1.5的单播路由表情况:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:06:01, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/3] via 23.1.1.3, 00:06:01, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, Tunnel24

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/66] via 23.1.1.3, 00:06:01, FastEthernet0/1

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/3] via 23.1.1.3, 00:06:01, FastEthernet0/1

r2#

说明:从R2的单播路由表可知,R2认为去往组播源45.1.1.5的流量应该从接口F0/1出去,那么源地址为45.1.1.5的流量也必须从接口F0/1进来,如果从其它接口进来就被认为是不合法的,统统都会被丢弃,但是我们应该知道,从PIM-SM Domain 1发来的组播流量一定是从GRE Tunnel隧道进来的,因为是GRE Tunnel隧道通过PIM将PIM-SM Domain 1与PIM-SM Domain 2连接起来的。

 

(8)查看GRE Tunnel隧道在OSPF下的情况:

r2#sh ip ospf interface tunnel 24

Tunnel24 is up, line protocol is up

  Internet Address 24.1.1.2/24, Area 0

  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_POINT, Cost: 11111

  Transmit Delay is 1 sec, State POINT_TO_POINT

  Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5

    oob-resync timeout 40

    Hello due in 00:00:02

  Supports Link-local Signaling (LLS)

  Cisco NSF helper support enabled

  IETF NSF helper support enabled

  Index 4/4, flood queue length 0

  Next 0x0(0)/0x0(0)

  Last flood scan length is 1, maximum is 2

  Last flood scan time is 0 msec, maximum is 4 msec

  Neighbor Count is 1, Adjacent neighbor count is 1

    Adjacent with neighbor 4.4.4.4

  Suppress hello for 0 neighbor(s)

r2#

说明:虽然GRE Tunnel隧道接口已经被通告进OSPF进程,但R2去往组播源45.1.1.5的路径还是通过物理接口F0/1出去的,仍然没有走GRE Tunnel隧道,从上可以看出,这是因为GRE Tunnel隧道的OSPF Cost为11111,远大于走F0/1的路径。

 

(9)查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5

RPF information for ? (45.1.1.5)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 45.1.1.0/24

  RPF type: unicast (ospf 1)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:从以上可以看出,R2的系统对45.1.1.5的RPF检测结果为从物理接口F0/1出去,和我们之前所看到的一样,并且这个结果是通过unicast (ospf 1)的信息获得的,但事实上这个结果与真实的组播路径不吻合,所以组播流量遭到了丢弃,如果要让组播正常通信,就要改变系统的RPF检测结果,让其认为从GRE Tunnel隧道进来的组播流量才是正确的。

                                                                          返回目录

 

5.通过单播路由表解决PIM-SM域间组播通信问题

说明:因为R2的系统对45.1.1.5的RPF检测结果是通过unicast (ospf 1)的信息获得的,OSPF路由的AD值为110,这时我们完全可以通过手工配置单播静态路由来取代OSPF学习到的路由,手工配置单播静态路由将45.1.1.5指向GRE Tunnel隧道,让从GRE Tunnel隧道过来的组播流量能够通过RPF检测。

 

(1)在R2上配置单播静态路由:

r2(config)#ip route 45.1.1.5 255.255.255.255 tunnel 24

说明:手工配置单播静态路由将组播源地址45.1.1.5指向GRE Tunnel隧道,让从GRE Tunnel隧道过来的组播流量能够通过RPF检测。

 

(2))在R2上再次查看去往组播源45.1.1.5的单播路由表情况:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:13:37, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/3] via 23.1.1.3, 00:13:37, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, Tunnel24

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/66] via 23.1.1.3, 00:13:37, FastEthernet0/1

     45.0.0.0/8 is variably subnetted, 2 subnets, 2 masks

S       45.1.1.5/32 is directly connected, Tunnel24

O       45.1.1.0/24 [110/3] via 23.1.1.3, 00:13:37, FastEthernet0/1

r2#

说明:手工配置的将组播源地址45.1.1.5指向GRE Tunnel隧道的单播静态路由已经生效,虽然OSPF路由保持不变,但静态路由的子网掩码为/32位,优于任何路由。

 

(3)再次查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5

RPF information for ? (45.1.1.5)

  RPF interface: Tunnel24

  RPF neighbor: ? (24.1.1.4)

  RPF route/mask: 45.1.1.5/32

  RPF type: unicast (static)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:通过手工配置将组播源地址45.1.1.5指向GRE Tunnel隧道的单播静态路由之后,目前系统的RPF检测结果已经成功认为从GRE Tunnel隧道接口进来的组播流量是合法的了,这样一来,PIM-SM Domain 1与PIM-SM Domain 2之间的组播就可以通信了。

 

(4)再次测试从PIM-SM Domain 2的组播源45.1.1.5向PIM-SM Domain 1发送组播:

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 328 ms

Reply to request 0 from 12.1.1.1, 516 ms

Reply to request 1 from 12.1.1.1, 316 ms

Reply to request 2 from 12.1.1.1, 236 ms

Reply to request 3 from 12.1.1.1, 236 ms

Reply to request 4 from 12.1.1.1, 268 ms

Reply to request 5 from 12.1.1.1, 196 ms

Reply to request 6 from 12.1.1.1, 236 ms

Reply to request 7 from 12.1.1.1, 212 ms

Reply to request 8 from 12.1.1.1, 268 ms

Reply to request 9 from 12.1.1.1, 204 ms

r5#

说明:已经通过手工配置单播静态路由成功解决PIM-SM Domain 1与PIM-SM Domain 2的域间组播通信。

查看当前环境中所有路由器的配置信息请点击“running-config

                                                                          返回目录

 

6.通过静态组播路由表解决PIM-SM域间组播通信问题

(1)将之前手工配置的单播静态路由删除,以恢复组播故障问题:

r2(config)#no ip route 45.1.1.5 255.255.255.255 tunnel 24

r2(config)#exit

r2#sh ip route      

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:15:10, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/3] via 23.1.1.3, 00:15:10, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, Tunnel24

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/66] via 23.1.1.3, 00:15:10, FastEthernet0/1

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/3] via 23.1.1.3, 00:15:11, FastEthernet0/1

r2#

说明:之前手工配置的将组播源地址45.1.1.5指向GRE Tunnel隧道的单播静态路由已被删除,目前又重新选择了错误的OSPF路由。

 

(2)查看当前R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5

RPF information for ? (45.1.1.5)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 45.1.1.0/24

  RPF type: unicast (ospf 1)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:R2的系统对45.1.1.5的RPF检测结果又回到了依靠OSPF做检测的状态,此状态为错误状态。

 

(3)测试从PIM-SM Domain 2的组播源45.1.1.5向PIM-SM Domain 1发送组播:

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r5#

说明:删除了手工配置的单播静态路由之后,组播问题依旧。

 

(4)在R2上配置组播静态路由:

r2(config)#ip mroute 45.1.1.5 255.255.255.255 tunnel 24

说明:手工配置组播静态路由将组播源地址45.1.1.5指向GRE Tunnel隧道,让从GRE Tunnel隧道过来的组播流量能够通过RPF检测。

 

(5)在R2上查看组播静态路由表:

r2#sh ip mroute static

Mroute: 45.1.1.5/32, interface: Tunnel24

  Protocol: none, distance: 0, route-map: none

r2#

说明:手工配置的将组播源地址45.1.1.5指向GRE Tunnel隧道的组播静态路由已生效。

 

(6)再次查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5

RPF information for ? (45.1.1.5)

  RPF interface: Tunnel24

  RPF neighbor: ? (24.1.1.4)

  RPF route/mask: 45.1.1.5/32

  RPF type: unicast (static)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

 

说明:和预期的一样,系统的RPF检测结果已经成功认为从GRE Tunnel隧道接口进来的组播流量是合法的。

 

(7)再次测试从PIM-SM Domain 2的组播源45.1.1.5向PIM-SM Domain 1发送组播:

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 384 ms

Reply to request 1 from 12.1.1.1, 236 ms

Reply to request 2 from 12.1.1.1, 264 ms

Reply to request 3 from 12.1.1.1, 236 ms

Reply to request 4 from 12.1.1.1, 224 ms

Reply to request 5 from 12.1.1.1, 248 ms

Reply to request 6 from 12.1.1.1, 280 ms

Reply to request 7 from 12.1.1.1, 220 ms

Reply to request 8 from 12.1.1.1, 232 ms.

r5#

说明:通过手工配置组播静态路由也能成功解决PIM-SM Domain 1与PIM-SM Domain 2的域间组播通信。

 

查看当前环境中所有路由器的配置信息请点击“running-config

                                                                         返回目录

 

7.通过MBGP解决PIM-SM域间组播通信问题

说明:除了单播路由表和静态组播路由表之外,还可以通过MBGP来解决组播流的RPF检测问题,当然不要忘记还有DVMRP,但这不是我们讨论的范围,如果这4种路由表同时出现,则靠路由条目的AD值来决定选谁,但如果AD值全部一样,请注意他们的先后顺序是:

1.静态组播路由表

2.DVMRP路由表

3.MBGP路由表

4.单播路由表

 

(1)在R2上删除组播静态路由,恢复组播故障:

r2(config)#no ip mroute 45.1.1.5 255.255.255.255 tunnel 24

r2(config)#exit

r2#

r2#

r2#sh ip mroute static

 

r2#

r2#sh ip rpf 45.1.1.5 

RPF information for ? (45.1.1.5)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 45.1.1.0/24

  RPF type: unicast (ospf 1)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

 

r5#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r5#

 

说明:从上面看到,删除组播静态路由后,系统对组播源45.1.1.5的RPF检测又回到了选择OSPF的错误状态,并且最后组播不通。

 

(2)在R2和R4之间配置MBGP:

R2:

r2(config)#router bgp 2

r2(config-router)#bgp router-id 2.2.2.2

r2(config-router)#neighbor 4.4.4.4 remote-as 4

r2(config-router)#neighbor 4.4.4.4 update-source loopback 0

r2(config-router)#neighbor 4.4.4.4 ebgp-multihop

r2(config-router)#address-family ipv4 multicast

r2(config-router-af)#neighbor 4.4.4.4 activate

r2(config-router-af)#exit

r2(config-router)#exit

r2(config)#

 

R4:

r4(config)#router bgp 4

r4(config-router)#bgp router-id 4.4.4.4

r4(config-router)#neighbor 2.2.2.2 remote-as 2

r4(config-router)#neighbor 2.2.2.2 update-source loopback 0

r4(config-router)#neighbor 2.2.2.2 ebgp-multihop

r4(config-router)#address-family ipv4 multicast

r4(config-router-af)#neighbor 2.2.2.2 activate

r4(config-router-af)#exi

r4(config-router)#exi

r4(config)#

说明:R2与R4通过双方的Loopback 0来建MBGP邻居,所以请注意,通过Loopback 0来建MBGP邻居,那么Loopback 0的地址就会影响到MBGP的路由走向,因为BGP的路由是根据到达邻居的地址然后去IGP路由表做递归路由查询的。

 

 

(3)查看BGP与MBGP邻居状态:

r2#sh ip bgp summary

BGP router identifier 2.2.2.2, local AS number 2

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

4.4.4.4         4     4       4       4        1    0    0 00:01:11        0

r2#

 

 

r2#show ip bgp ipv4 multicast summary

BGP router identifier 2.2.2.2, local AS number 2

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

4.4.4.4         4     4       5       5        1    0    0 00:02:09        0

r2#

说明:BGP和MBGP的邻居均已建立。

 

(4)查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5 

RPF information for ? (45.1.1.5)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 45.1.1.0/24

  RPF type: unicast (ospf 1)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:虽然已经配置了MBGP,但是R2的系统对组播源45.1.1.5的RPF检测结果还是选择了使用OSPF路由,导致最终结果错误。

 

(5)查看MBGP路由表:

r2#show ip bgp ipv4 multicast        

 

r2#

说明:因为之前并没有在MBGP里面通告关于组播源地址45.1.1.5的路由信息,所以虽然配置了MBGP,但毫无作用,所以需要将关于组播源地址45.1.1.5的路由发布进MBGP。

 

(6)在MBGP中发布路由:

r4(config)#router bgp 4

r4(config-router)#address-family ipv4 multicast

r4(config-router-af)#network 45.1.1.0 mask 255.255.255.0

r4(config-router-af)#exit

r4(config-router)#exit

说明:在R4上将组播源地址45.1.1.5的路由发布进MBGP,使45.1.1.5能够依靠MBGP路由顺利通过RPF检测。

 

(7)再次查看MBGP路由表:

r2#show ip bgp ipv4 multicast

BGP table version is 2, local router ID is 2.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 45.1.1.0/24      4.4.4.4                  0             0 4 i

r2#

说明:已经从MBGP正常学习到关于组播源地址45.1.1.5的路由,该路由可用作对45.1.1.5的RPF检测。

 

(8)再次查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5                

RPF information for ? (45.1.1.5)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 45.1.1.0/24

  RPF type: mbgp

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:从上面可以看出,R2的系统已经使用MBGP的路由对组播源地址45.1.1.5进行RPF检测,但是检测的结果却是错误的,这里我们需要注意,从之前的MBGP路由表可以得知,MBGP认为去往45.1.1.5的数据包应该发到4.4.4.4,即发给它的MBGP邻居R4,然后4.4.4.4并不是与之直连的网络,所以MBGP就得需要到单播路由表中做递归查询去往4.4.4.4究竟该如何去。

 

(9)查询R2去往4.4.4.4的单播路由表:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:10:15, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     4.0.0.0/24 is subnetted, 1 subnets

O       4.4.4.0 [110/3] via 23.1.1.3, 00:10:15, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/1

     24.0.0.0/24 is subnetted, 1 subnets

C       24.1.1.0 is directly connected, Tunnel24

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, FastEthernet0/0

     46.0.0.0/24 is subnetted, 1 subnets

O       46.1.1.0 [110/66] via 23.1.1.3, 00:10:16, FastEthernet0/1

     45.0.0.0/24 is subnetted, 1 subnets

O       45.1.1.0 [110/3] via 23.1.1.3, 00:10:16, FastEthernet0/1

r2#

说明:从单播路由表中可以看出,去4.4.4.4的数据包应该从物理接口F0/1出去,所以MBGP路由表的结果就是去45.1.1.5的数据包也应该顺着4.4.4.4的路径从物理接口F0/1出去,这就与我们预期的从GRE Tunnel隧道出去不相符,所以我们只有想办法让R2从GRE Tunnel隧道接口去4.4.4.4,才能改变让MBGP去往45.1.1.5从GRE Tunnel隧道出去,这样对组播源45.1.1.5的RPF检测才能变成GRE Tunnel隧道。

 

(10)在R2上手工配置从GRE Tunnel隧道去4.4.4.4的静态路由:

r2(config)#ip route 4.4.4.4 255.255.255.255 24.1.1.4

说明:配置静态路由从GRE Tunnel隧道去4.4.4.4,在这里,请你注意,请你一定要注意,如果你不注意这个,那么通过这种方式配置的MBGP将不生效,将前功尽弃,需要注意的就是这条静态路由一定要指定下一跳地址,而不能指定出接口,所以你千万不要配成“ip route 4.4.4.4 255.255.255.255 tunnel 24”,如果你这么配了,你可以试一下,你的组播看似正常,但却不通。

 

(11)在R2上查看GRE Tunnel隧道情况:

r2#sh ip int brief tunnel 24

Interface                  IP-Address      OK? Method Status                Protocol

Tunnel24                   24.1.1.2        YES manual up                    down   

r2#

说明:无意间,两个PIM-SM域之间的关键点GRE Tunnel隧道的状态居然变成了“down”,这是因为我们配置的GRE Tunnel隧道是靠R2与R4双方的Loopback 0来通信的,而刚才我们配置的静态路由居然要让去往R4的Loopback 0(4.4.4.4)靠GRE Tunnel隧道来通信,这里就形成了死循环,因为必须双方的Loopback 0通了,GRE Tunnel隧道才能通,但现在又变成了必须GRE Tunnel隧道通了,Loopback 0才能过,这就前后矛盾了,所以我们既然强制Loopback 0靠GRE Tunnel隧道来通信,那么我们就必须让GRE Tunnel隧道靠其它接口来通信而不能靠Loopback 0口,那我们就可以更改GRE Tunnel隧道靠R2与R4的物理口来通信。

 

(12)更改GRE Tunnel隧道的通信方式:

R2:

r2(config)#int tunnel 24

r2(config-if)#tunnel source f0/1

r2(config-if)#tunnel destination 34.1.1.4

r2(config-if)#exit

r2(config)#

 

R4:

r4(config)#int tunnel 24

r4(config-if)#tunnel source f0/0

r4(config-if)#tunnel destination 23.1.1.2

r4(config-if)#exit

说明:更改GRE Tunnel隧道靠R2与R4的物理口来通信。

 

(13)再次查看GRE Tunnel隧道情况:

r2#sh ip int brief tunnel 24

Interface                  IP-Address      OK? Method Status                Protocol

Tunnel24                   24.1.1.2        YES manual up                    up     

r2#

r2#ping 24.1.1.4

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 24.1.1.4, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 88/164/216 ms

r2#

说明:更改GRE Tunnel隧道靠R2与R4的物理口来通信之后,目前GRE Tunnel隧道工作正常。

 

 

(14)再次查看R2的系统对组播源45.1.1.5的RPF检测结果:

r2#sh ip rpf 45.1.1.5

RPF information for ? (45.1.1.5)

  RPF interface: Tunnel24

  RPF neighbor: ? (24.1.1.4)

  RPF route/mask: 45.1.1.0/24

  RPF type: mbgp

  RPF recursion count: 1

  Doing distance-preferred lookups across tables

r2#

说明:现在R2的系统已经靠MBGP的路由正确对组播源45.1.1.5做出了RPF检测,如果您之前将从GRE Tunnel隧道去4.4.4.4的静态路由“ip route 4.4.4.4 255.255.255.255 24.1.1.4”误写成指向出接口的“ip route 4.4.4.4 255.255.255.255 tunnel 24”,那么R2的系统对组播源45.1.1.5做出的RPF检测结果将如下:

r2#sh ip rpf 45.1.1.5      

RPF information for ? (45.1.1.5)

  RPF interface: Tunnel24

  RPF neighbor: ? (4.4.4.4)

  RPF route/mask: 45.1.1.0/24

  RPF type: mbgp

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

而这个结果将使域间组播无法通信,您应该能发现两者的RPF neighbor有所区别,正确的应该是真正的直连地址,错误的却是远程非直连地址。

 

(15)再次测试从PIM-SM Domain 2的组播源45.1.1.5向PIM-SM Domain 1发送组播:

r5#ping 224.1.1.1 repeat 10      

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 232 ms

Reply to request 1 from 12.1.1.1, 188 ms

Reply to request 2 from 12.1.1.1, 236 ms

Reply to request 2 from 12.1.1.1, 316 ms

Reply to request 3 from 12.1.1.1, 200 ms

Reply to request 4 from 12.1.1.1, 204 ms

Reply to request 5 from 12.1.1.1, 356 ms.

Reply to request 7 from 12.1.1.1, 236 ms

Reply to request 8 from 12.1.1.1, 216 ms

Reply to request 9 from 12.1.1.1, 204 ms

r5#

说明:通过配置MBGP也成功解决了PIM-SM Domain 1与PIM-SM Domain 2的域间组播通信,请认真观察,认真体会三种方法解决组播通信的关键所在。

 

附:在这里需要说明:在配置MBGP解决PIM-SM域间组播通信时,我们遇到的问题是由于MBGP的路由依靠单播路由表对MBGP路由的下一跳做递归查询时,错将组播源地址走向了物理接口而并非GRE Tunnel隧道接口,所以我们将被MBGP路由用来作递归查询的单播路由静态指向了GRE Tunnel隧道口,从而使得MBGP在单播路由表做递归查询时能被正确引导到GRE Tunnel隧道接口,在这里还有另外一个做法就是直接使用GRE Tunnel隧道接口地址来建立MBGP邻居,这样MBGP的路由不需要做递归查询就知道直接走GRE Tunnel隧道,从而就不会有以上那么多步骤,但还请不要忘记,并不建议使用GRE Tunnel隧道建立BGP或MBGP邻居,通常是保持建立MSDP连接的地址和建立BGP或MBGP的地址为相同地址,因为这样做可以保证在出现3个或3个以上的PIM-SM域时对SA数据包所做的RPF检测能够顺利通过,虽然我们这里只有两个PIM-SM域。

 

如果使用GRE Tunnel隧道建邻居,则R2和R4的配置如下:

r2(config)#router bgp 2

r2(config-router)#no neighbor 4.4.4.4

r2(config-router)#neighbor 24.1.1.4 remote-as 4

r2(config-router)#address-family ipv4 multicast

r2(config-router-af)#neighbor 24.1.1.4 activate

r2(config-router-af)#exit

 

 

r4(config)#router bgp 4

r4(config-router)#no neighbor 2.2.2.2

r4(config-router)#neighbor 24.1.1.2 remote-as 2

r4(config-router)#address-family ipv4 multicast

r4(config-router-af)#neighbor 24.1.1.2 activate

r4(config-router-af)#network 45.1.1.0 mask 255.255.255.0

r4(config-router-af)#exit

  

(16)测试从PIM-SM Domain 2的组播源46.1.1.6(即R6)向PIM-SM Domain 1发送组播:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r6#

说明:种种原因,PIM-SM Domain 2的组播源46.1.1.6(即R6)与PIM-SM Domain 1的组播还无法通信。

 

(17)在R2上查看SA信息:

r2#sh ip msdp sa-cache     

MSDP Source-Active Cache - 1 entries

(45.1.1.5, 224.1.1.1), RP 4.4.4.4, BGP/AS 0, 00:02:53/00:05:43, Peer 4.4.4.4

r2#

说明:R2上连关于组播源46.1.1.6的SA都没有,问题很严重,其实我们不难看出,R5和R6的架构完全相同,但唯一的区别就是R6是使用的帧中继链路与R4相连的,而很不巧的是,R6的S1/0地址大于R4的S1/0地址,所以在在PIM选举DR时,结果R6成了DR,如下:

r4#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

24.1.1.2          Tunnel24                 00:06:04/00:01:34 v2    1 / S

45.1.1.5          FastEthernet0/1          00:07:33/00:01:33 v2    1 / DR S

46.1.1.6          Serial1/0                00:05:59/00:01:41 v2    1 / DR S

r4#

 

(18)提高R4的S1/0的DR优先级:

r4(config)#int s1/0

r4(config-if)#ip pim dr-priority 4

r4(config-if)#exit

 

r4#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

24.1.1.2          Tunnel24                 00:06:25/00:01:44 v2    1 / S

45.1.1.5          FastEthernet0/1          00:07:54/00:01:43 v2    1 / DR S

46.1.1.6          Serial1/0                00:06:19/00:01:21 v2    1 / S

r4#

 

说明:提高R4的S1/0接口的DR优先级后,R4成为了DR,这里不再详细讨论到底是为什么,不清楚的请复习组播前部分的理论知识。

 

(19)R6再次发起组播数据并在R2上查看SA信息:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r6#

 

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 2 entries

(45.1.1.5, 224.1.1.1), RP 4.4.4.4, BGP/AS 0, 00:04:21/00:05:14, Peer 4.4.4.4

(46.1.1.6, 224.1.1.1), RP 4.4.4.4, BGP/AS 0, 00:00:45/00:05:14, Peer 4.4.4.4

r2#

说明:组播仍然不通,但关于组播源46.1.1.6的SA已经正常传递,那么剩下的问题就不可能是MSDP的问题。

 

(20)查看R2的系统关于组播源46.1.1.6的RPF检测结果:

r2#sh ip rpf 46.1.1.6

RPF information for ? (46.1.1.6)

  RPF interface: FastEthernet0/1

  RPF neighbor: ? (23.1.1.3)

  RPF route/mask: 46.1.1.0/24

  RPF type: unicast (ospf 1)

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:由于R2的系统还是基于OSPF路由对组播源46.1.1.6做的RPF检测,所以路径错误。

 

(21)在R2上配置组播静态路由解决PIM-SM Domain 2的组播源46.1.1.6与PIM-SM Domain 1的组播通信:

r2(config)#ip mroute 46.1.1.6 255.255.255.255 tunnel 24

说明:解决PIM-SM Domain 2的组播源46.1.1.6与PIM-SM Domain 1组播通信的方法有

单播路由、MBGP、组播静态路由,而我们这里采用了组播静态路由。

 

(22)再次查看R2的系统关于组播源46.1.1.6的RPF检测结果:

r2#sh ip rpf 46.1.1.6

RPF information for ? (46.1.1.6)

  RPF interface: Tunnel24

  RPF neighbor: ? (24.1.1.4)

  RPF route/mask: 46.1.1.6/32

  RPF type: static

  RPF recursion count: 0

  Doing distance-preferred lookups across tables

r2#

说明:配置了组播静态路由后,R2对组播源46.1.1.6做的RPF检测成功指向GRE Tunnel隧道。

 

(23)再次测试从PIM-SM Domain 2的组播源46.1.1.6向PIM-SM Domain 1发送组播:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 420 ms

Reply to request 1 from 12.1.1.1, 312 ms

Reply to request 2 from 12.1.1.1, 312 ms

Reply to request 3 from 12.1.1.1, 204 ms

Reply to request 4 from 12.1.1.1, 200 ms

Reply to request 5 from 12.1.1.1, 280 ms

Reply to request 6 from 12.1.1.1, 216 ms

Reply to request 7 from 12.1.1.1, 248 ms

Reply to request 8 from 12.1.1.1, 248 ms

Reply to request 9 from 12.1.1.1, 220 ms

r6#

说明:所有问题解决后,PIM-SM Domain 1与PIM-SM Domain 2之间的组播畅通无阻。

 

(24)查看组播树:

R2:

r2#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:22:53/00:02:32, RP 2.2.2.2, flags: SJC

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:22:53/00:02:40

 

(45.1.1.5, 224.1.1.1), 00:03:29/00:02:56, flags: MT

  Incoming interface: Tunnel24, RPF nbr 24.1.1.4, Mbgp

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:03:29/00:02:40

 

(46.1.1.6, 224.1.1.1), 00:16:55/00:02:56, flags: MT

  Incoming interface: Tunnel24, RPF nbr 24.1.1.4, Mroute

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:16:55/00:02:40

 

r2#

 

 

R4:

r4#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:21:18/stopped, RP 4.4.4.4, flags: SP

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(45.1.1.5, 224.1.1.1), 00:04:02/00:03:23, flags: TA

  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0

  Outgoing interface list:

    Tunnel24, Forward/Sparse, 00:02:00/00:03:18

 

(46.1.1.6, 224.1.1.1), 00:21:06/00:03:23, flags: TA

  Incoming interface: Serial1/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    Tunnel24, Forward/Sparse, 00:16:38/00:02:51

 

r4#

说明:从组播树中可以看见,PIM-SM域之间的通信使用的是(S,G),而并非PIM-SM模式传统的(*,G),如果您之前将从GRE Tunnel隧道去4.4.4.4的静态路由“ip route 4.4.4.4 255.255.255.255 24.1.1.4”误写成指向出接口的“ip route 4.4.4.4 255.255.255.255 tunnel 24”,那么组播树将如下:

r4#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:22:34/stopped, RP 4.4.4.4, flags: SP

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(45.1.1.5, 224.1.1.1), 00:05:18/00:02:56, flags: PTA

  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(46.1.1.6, 224.1.1.1), 00:22:22/00:03:26, flags: TA

  Incoming interface: Serial1/0, RPF nbr 0.0.0.0

  Outgoing interface list:

    Tunnel24, Forward/Sparse, 00:17:55/00:02:33

 

r4#

 

R2:

r2#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:25:03/00:00:22, RP 2.2.2.2, flags: SJC

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:25:03/00:02:27

 

(45.1.1.5, 224.1.1.1), 00:05:39/00:02:26, flags: M

  Incoming interface: Tunnel24, RPF nbr 4.4.4.4, Mbgp

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:05:39/00:02:27

 

(46.1.1.6, 224.1.1.1), 00:19:05/00:02:56, flags: MT

  Incoming interface: Tunnel24, RPF nbr 24.1.1.4, Mroute

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:19:05/00:02:27

 

r2#

 

说明:R2上正常的flags为MT,而写错静态路由的flags为M;R4上正常的flags为TA,而写错静态路由的flags为PTA。

查看当前环境中所有路由器的配置信息请点击“running-config

 

                                                                         返回目录

 

配置3个PIM-SM域全互联的MSDP实验

配置任务包含:
      1.配置初始网络环境
      2.配置PIM-SM
      3.配置MSDP
      4.配置MBGP帮助MSDP的SA通过RPF检测
      5.测试default MSDP peer帮助MSDP的SA通过RPF检测
      6.测试MSDP Mesh Group帮助MSDP的SA通过RPF检测 

 

实验说明:

以下图为环境配置3个PIM-SM域全互联的MSDP实验:

  

上图中3个PIM-SM域互连,其中R1和R2在PIM-SM Domain 1中,R3和R4在PIM-SM Domain 2中,R5和R6在PIM-SM Domain 3中;R4和R6为组224.1.1.1的组播源,R1为组成员。

除了图上所标识出的接口地址外,R2、R3和R5还配有2个Loopback接口,分别为:

R2(Loopback 0 :2.2.2.2/24;Loopback 1 :22.2.2.2/24)

R3(Loopback 0 :3.3.3.3/24;Loopback 1 :33.3.3.3/24)

R5(Loopback 0 :5.5.5.5/24;Loopback 1 :55.5.5.5/24)

 

PIM-SM Domain 1的RP为22.2.2.2,即R2,PIM-SM Domain 2的RP为33.3.3.3,即R3,PIM-SM Domain 3的RP为55.5.5.5,即R5;

3个PIM-SM域之间建立全互联的MSDP连接,连接情况如下:

R2(2.2.2.2)—— R3(3.3.3.3)

R2(2.2.2.2)—— R5(55.5.5.5)

R3(3.3.3.3)—— R5(55.5.5.5)

 

所有路由器上都运行OSPF,并将所有接口都发布进OSPF,以保证全网单播互通。

                                                                         返回目录

 

 

1.配置初始网络环境

(1)配置R1:

r1(config)#int s1/0

r1(config-if)#encapsulation frame-relay

r1(config-if)#no frame-relay inverse-arp

r1(config-if)#no arp frame-relay

r1(config-if)#ip add 12.1.1.1 255.255.255.0

r1(config-if)#no shutdown

r1(config-if)#frame-relay map ip 12.1.1.2 102 broadcast

r1(config-if)#ip ospf network point-to-point

r1(config-if)#exit

 

r1(config)#router ospf 1

r1(config-router)#network 0.0.0.0 0.0.0.0 area 0

r1(config-router)#exit

说明:为R1的S1/0配置接口地址,并将所有接口发布进OSPF。

 

(2)配置R2:

r2(config)#int loopback 0

r2(config-if)#ip add 2.2.2.2 255.255.255.0

r2(config-if)#ip ospf network point-to-point

r2(config-if)#exit

r2(config)#

 

 

r2(config)#int loopback 22

r2(config-if)#ip add 22.2.2.2 255.255.255.0

r2(config-if)#ip ospf network point-to-point

r2(config-if)#exit

r2(config)#

r2(config)#int s1/0

r2(config-if)#encapsulation frame-relay

r2(config-if)#no frame-relay inverse-arp

r2(config-if)#no arp frame-relay

r2(config-if)#ip add 12.1.1.2 255.255.255.0

r2(config-if)#no shutdown

r2(config-if)#frame-relay map ip 12.1.1.1 201 broadcast

r2(config-if)#ip ospf network point-to-point

r2(config-if)#exit

r2(config)#

r2(config)#int f0/0

r2(config-if)#ip add 23.1.1.2 255.255.255.0

r2(config-if)#no shutdown

r2(config-if)#exit

r2(config)#int f0/1

r2(config-if)#ip add 25.1.1.2 255.255.255.0

r2(config-if)#no shutdown

r2(config-if)#exit

r2(config)#router ospf 1

r2(config-router)#network 0.0.0.0 0.0.0.0 area 0

r2(config-router)#exit

说明:为R2的Loopback 0,Loopback 22,S1/0,F0/0,F0/1配置接口地址,并将所有接口发布进OSPF。

  

(3)配置R3:

r3(config)#int loopback 0

r3(config-if)#ip add 3.3.3.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#ip ospf network point-to-point

r3(config-if)#exit

r3(config)#

r3(config)#int loopback 33

r3(config-if)#ip add 33.3.3.3 255.255.255.0

r3(config-if)#ip ospf network point-to-point

r3(config-if)#exit

 

r3(config)#int f0/0

r3(config-if)#ip add 23.1.1.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#exit

r3(config)#

r3(config)#int f0/1

r3(config-if)#ip add 34.1.1.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#exit

r3(config)#int s1/0

r3(config-if)#encapsulation frame-relay

r3(config-if)#no frame-relay inverse-arp

r3(config-if)#no arp frame-relay

r3(config-if)#ip add 35.1.1.3 255.255.255.0

r3(config-if)#no shutdown

r3(config-if)#frame-relay map ip 35.1.1.5 305 broadcast

r3(config-if)#ip ospf network point-to-point

r3(config-if)#exit

r3(config)#router ospf 1

r3(config-router)#network 0.0.0.0 0.0.0.0 area 0

r3(config-router)#exit

r3(config)#

说明:为R3的Loopback 0,Loopback 33,S1/0,F0/1,F0/0配置接口地址,并将所有接口发布进OSPF。

 

(4)配置R4:

 

r4(config)#int f0/1

r4(config-if)#ip add 34.1.1.4 255.255.255.0

r4(config-if)#no shutdown

r4(config-if)#exit

r4(config)#router ospf 1

r4(config-router)#network 0.0.0.0 0.0.0.0 area 0

r4(config-router)#exit

r4(config)#

说明:为R4的F0/1配置接口地址,并将所有接口发布进OSPF。

 

(5)配置R5:

r5(config)#int loopback 0

r5(config-if)#ip address 5.5.5.5 255.255.255.0

r5(config-if)#ip ospf network point-to-point

r5(config-if)#exit

r5(config)#

r5(config)#int loopback 55

r5(config-if)#ip add 55.5.5.5 255.255.255.0

r5(config-if)#ip ospf network point-to-point

r5(config-if)#exit

r5(config)#int f0/0

r5(config-if)#ip address 56.1.1.5 255.255.255.0

r5(config-if)#no shutdown

r5(config-if)#exit

r5(config)#int f0/1

r5(config-if)#ip add 25.1.1.5 255.255.255.0

r5(config-if)#no shutdown

r5(config-if)#exit

r5(config)#

r5(config)#int s1/0

r5(config-if)#encapsulation frame-relay

r5(config-if)#no frame-relay inverse-arp

r5(config-if)#no arp frame-relay

r5(config-if)#ip add 35.1.1.5 255.255.255.0

r5(config-if)#no shutdown

r5(config-if)#frame-relay map ip 35.1.1.3 503 broadcast

r5(config-if)#ip ospf network point-to-point

r5(config-if)#exit

说明:为R5的Loopback 0,Loopback 55,S1/0,F0/1,F0/0配置接口地址,并将所有接口发布进OSPF。

 

(6)配置R6:

r6(config)#int f0/0

r6(config-if)#ip address 56.1.1.6 255.255.255.0

r6(config-if)#no shutdown

r6(config-if)#exit

r6(config)#

说明:为R6的F0/0配置接口地址,并将所有接口发布进OSPF。

 

(7)查看R1的路由学习情况:

r1#sh ip route

*Mar  1 00:28:10.043: %SYS-5-CONFIG_I: Configured from console by console

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/66] via 12.1.1.2, 00:01:23, Serial1/0

     35.0.0.0/24 is subnetted, 1 subnets

O       35.1.1.0 [110/129] via 12.1.1.2, 00:01:23, Serial1/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/65] via 12.1.1.2, 00:01:23, Serial1/0

     33.0.0.0/24 is subnetted, 1 subnets

O       33.3.3.0 [110/66] via 12.1.1.2, 00:01:23, Serial1/0

     3.0.0.0/24 is subnetted, 1 subnets

O       3.3.3.0 [110/66] via 12.1.1.2, 00:01:23, Serial1/0

     55.0.0.0/24 is subnetted, 1 subnets

O       55.5.5.0 [110/66] via 12.1.1.2, 00:01:23, Serial1/0

     5.0.0.0/24 is subnetted, 1 subnets

O       5.5.5.0 [110/66] via 12.1.1.2, 00:01:24, Serial1/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/65] via 12.1.1.2, 00:01:24, Serial1/0

     22.0.0.0/24 is subnetted, 1 subnets

O       22.2.2.0 [110/65] via 12.1.1.2, 00:01:24, Serial1/0

     25.0.0.0/24 is subnetted, 1 subnets

O       25.1.1.0 [110/65] via 12.1.1.2, 00:01:24, Serial1/0

     56.0.0.0/24 is subnetted, 1 subnets

O       56.1.1.0 [110/66] via 12.1.1.2, 00:01:24, Serial1/0

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, Serial1/0

r1#

说明:R1已经学习到全网的每一条路由。

 

(8)查看R2的路由学习情况:

r2#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/2] via 23.1.1.3, 00:01:41, FastEthernet0/0

     35.0.0.0/24 is subnetted, 1 subnets

O       35.1.1.0 [110/65] via 25.1.1.5, 00:01:41, FastEthernet0/1

                 [110/65] via 23.1.1.3, 00:01:41, FastEthernet0/0

     2.0.0.0/24 is subnetted, 1 subnets

C       2.2.2.0 is directly connected, Loopback0

     33.0.0.0/24 is subnetted, 1 subnets

O       33.3.3.0 [110/2] via 23.1.1.3, 00:01:41, FastEthernet0/0

     3.0.0.0/24 is subnetted, 1 subnets

O       3.3.3.0 [110/2] via 23.1.1.3, 00:01:41, FastEthernet0/0

     55.0.0.0/24 is subnetted, 1 subnets

O       55.5.5.0 [110/2] via 25.1.1.5, 00:01:41, FastEthernet0/1

     5.0.0.0/24 is subnetted, 1 subnets

O       5.5.5.0 [110/2] via 25.1.1.5, 00:01:42, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/0

     22.0.0.0/24 is subnetted, 1 subnets

C       22.2.2.0 is directly connected, Loopback22

     25.0.0.0/24 is subnetted, 1 subnets

C       25.1.1.0 is directly connected, FastEthernet0/1

     56.0.0.0/24 is subnetted, 1 subnets

O       56.1.1.0 [110/2] via 25.1.1.5, 00:01:42, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

C       12.1.1.0 is directly connected, Serial1/0

r2#

说明:R2已经学习到全网的每一条路由。

  

(9)查看R3的路由学习情况:

r3#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

C       34.1.1.0 is directly connected, FastEthernet0/1

     35.0.0.0/24 is subnetted, 1 subnets

C       35.1.1.0 is directly connected, Serial1/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/2] via 23.1.1.2, 00:01:56, FastEthernet0/0

     33.0.0.0/24 is subnetted, 1 subnets

C       33.3.3.0 is directly connected, Loopback33

     3.0.0.0/24 is subnetted, 1 subnets

C       3.3.3.0 is directly connected, Loopback0

     55.0.0.0/24 is subnetted, 1 subnets

O       55.5.5.0 [110/3] via 23.1.1.2, 00:01:56, FastEthernet0/0

     5.0.0.0/24 is subnetted, 1 subnets

O       5.5.5.0 [110/3] via 23.1.1.2, 00:01:57, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

C       23.1.1.0 is directly connected, FastEthernet0/0

     22.0.0.0/24 is subnetted, 1 subnets

O       22.2.2.0 [110/2] via 23.1.1.2, 00:01:57, FastEthernet0/0

     25.0.0.0/24 is subnetted, 1 subnets

O       25.1.1.0 [110/2] via 23.1.1.2, 00:01:57, FastEthernet0/0

     56.0.0.0/24 is subnetted, 1 subnets

O       56.1.1.0 [110/3] via 23.1.1.2, 00:01:57, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/65] via 23.1.1.2, 00:01:57, FastEthernet0/0

r3#

说明:R3已经学习到全网的每一条路由。

 

(10)查看R4的路由学习情况:

r4#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

C       34.1.1.0 is directly connected, FastEthernet0/1

     35.0.0.0/24 is subnetted, 1 subnets

O       35.1.1.0 [110/65] via 34.1.1.3, 00:02:09, FastEthernet0/1

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/3] via 34.1.1.3, 00:02:09, FastEthernet0/1

     33.0.0.0/24 is subnetted, 1 subnets

O       33.3.3.0 [110/2] via 34.1.1.3, 00:02:09, FastEthernet0/1

     3.0.0.0/24 is subnetted, 1 subnets

O       3.3.3.0 [110/2] via 34.1.1.3, 00:02:09, FastEthernet0/1

     55.0.0.0/24 is subnetted, 1 subnets

O       55.5.5.0 [110/4] via 34.1.1.3, 00:02:09, FastEthernet0/1

     5.0.0.0/24 is subnetted, 1 subnets

O       5.5.5.0 [110/4] via 34.1.1.3, 00:02:10, FastEthernet0/1

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/2] via 34.1.1.3, 00:02:10, FastEthernet0/1

     22.0.0.0/24 is subnetted, 1 subnets

O       22.2.2.0 [110/3] via 34.1.1.3, 00:02:10, FastEthernet0/1

     25.0.0.0/24 is subnetted, 1 subnets

O       25.1.1.0 [110/3] via 34.1.1.3, 00:02:10, FastEthernet0/1

     56.0.0.0/24 is subnetted, 1 subnets

O       56.1.1.0 [110/4] via 34.1.1.3, 00:02:10, FastEthernet0/1

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/66] via 34.1.1.3, 00:02:10, FastEthernet0/1

r4#

 

说明:R4已经学习到全网的每一条路由。

 

(11)查看R5的路由学习情况:

r5#sh ip route

*Mar  1 00:29:03.083: %SYS-5-CONFIG_I: Configured from console by console

r5#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/3] via 25.1.1.2, 00:02:25, FastEthernet0/1

     35.0.0.0/24 is subnetted, 1 subnets

C       35.1.1.0 is directly connected, Serial1/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/2] via 25.1.1.2, 00:02:25, FastEthernet0/1

     33.0.0.0/24 is subnetted, 1 subnets

O       33.3.3.0 [110/3] via 25.1.1.2, 00:02:25, FastEthernet0/1

     3.0.0.0/24 is subnetted, 1 subnets

O       3.3.3.0 [110/3] via 25.1.1.2, 00:02:25, FastEthernet0/1

     55.0.0.0/24 is subnetted, 1 subnets

C       55.5.5.0 is directly connected, Loopback55

     5.0.0.0/24 is subnetted, 1 subnets

C       5.5.5.0 is directly connected, Loopback0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/2] via 25.1.1.2, 00:02:25, FastEthernet0/1

     22.0.0.0/24 is subnetted, 1 subnets

O       22.2.2.0 [110/2] via 25.1.1.2, 00:02:25, FastEthernet0/1

     25.0.0.0/24 is subnetted, 1 subnets

C       25.1.1.0 is directly connected, FastEthernet0/1

     56.0.0.0/24 is subnetted, 1 subnets

C       56.1.1.0 is directly connected, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/65] via 25.1.1.2, 00:02:25, FastEthernet0/1

r5#

 

 

说明:R5已经学习到全网的每一条路由。

 

(12)查看R6的路由学习情况:

r6#sh ip route

Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP

       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area

       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2

       E1 - OSPF external type 1, E2 - OSPF external type 2

       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2

       ia - IS-IS inter area, * - candidate default, U - per-user static route

       o - ODR, P - periodic downloaded static route

 

Gateway of last resort is not set

 

     34.0.0.0/24 is subnetted, 1 subnets

O       34.1.1.0 [110/4] via 56.1.1.5, 00:02:38, FastEthernet0/0

     35.0.0.0/24 is subnetted, 1 subnets

O       35.1.1.0 [110/65] via 56.1.1.5, 00:02:38, FastEthernet0/0

     2.0.0.0/24 is subnetted, 1 subnets

O       2.2.2.0 [110/3] via 56.1.1.5, 00:02:38, FastEthernet0/0

     33.0.0.0/24 is subnetted, 1 subnets

O       33.3.3.0 [110/4] via 56.1.1.5, 00:02:38, FastEthernet0/0

     3.0.0.0/24 is subnetted, 1 subnets

O       3.3.3.0 [110/4] via 56.1.1.5, 00:02:38, FastEthernet0/0

     55.0.0.0/24 is subnetted, 1 subnets

O       55.5.5.0 [110/2] via 56.1.1.5, 00:02:38, FastEthernet0/0

     5.0.0.0/24 is subnetted, 1 subnets

O       5.5.5.0 [110/2] via 56.1.1.5, 00:02:38, FastEthernet0/0

     23.0.0.0/24 is subnetted, 1 subnets

O       23.1.1.0 [110/3] via 56.1.1.5, 00:02:38, FastEthernet0/0

     22.0.0.0/24 is subnetted, 1 subnets

O       22.2.2.0 [110/3] via 56.1.1.5, 00:02:38, FastEthernet0/0

     25.0.0.0/24 is subnetted, 1 subnets

O       25.1.1.0 [110/2] via 56.1.1.5, 00:02:38, FastEthernet0/0

     56.0.0.0/24 is subnetted, 1 subnets

C       56.1.1.0 is directly connected, FastEthernet0/0

     12.0.0.0/24 is subnetted, 1 subnets

O       12.1.1.0 [110/66] via 56.1.1.5, 00:02:38, FastEthernet0/0

r6#

说明:R6已经学习到全网的每一条路由。

 

(13)在R1上测试到其它网段的连通性:

r1#ping 2.2.2.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 8/98/200 ms

r1#

r1#ping 22.2.2.2

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 22.2.2.2, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/136/196 ms

r1#

r1#

r1#ping 3.3.3.3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 3.3.3.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 76/124/172 ms

r1#

r1#ping 33.3.3.3

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 33.3.3.3, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 60/136/240 ms

r1#

r1#

r1#ping 5.5.5.5

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 5.5.5.5, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/135/252 ms

r1#

r1#ping 55.5.5.5

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 55.5.5.5, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 64/80/104 ms

r1#

r1#ping 34.1.1.4

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 34.1.1.4, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 76/191/276 ms

r1#

r1#

r1#ping 56.1.1.6

 

Type escape sequence to abort.

Sending 5, 100-byte ICMP Echos to 56.1.1.6, timeout is 2 seconds:

!!!!!

Success rate is 100 percent (5/5), round-trip min/avg/max = 88/134/220 ms

r1#

说明:R1与2.2.2.0/24、22.2.2.0/24、3.3.3.0/24、33.3.3.0/24、5.5.5.0/24、55.5.5.0/24、34.1.1.0/24、56.1.1.0/24通信正常,说明已经全网单播互通。

                                                                         返回目录

 

2.配置PIM-SM

(1)在R1上配置PIM-SM:

r1(config)#ip multicast-routing

r1(config)#int s1/0

r1(config-if)#ip pim sparse-mode

r1(config-if)#ip igmp join-group 224.1.1.1

r1(config-if)#exit

说明:在R1上开启组播功能,并且在接口S1/0下开启PIM-SM模式,接口S1/0加入组224.1.1.1,成为组成员。

 

(2)在R2上配置PIM-SM:

r2(config)#ip multicast-routing

r2(config)#int s1/0

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

r2(config)#int f0/0

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

r2(config)#

r2(config)#int f0/1

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

r2(config)#int loopback 22

r2(config-if)#ip pim sparse-mode

r2(config-if)#exit

r2(config)#

说明:在R2上开启组播功能,并且在接口Loopback 22,F0/0,F0/1,S1/0下开启PIM-SM模式,因为Loopback 0只用来建MSDP邻居,并不运行组播,所以没有必要运行PIM。

 

(3)在R3上配置PIM-SM:

r3(config)#int f0/0

r3(config-if)#ip pim sparse-mode

r3(config-if)#exit

r3(config)#

r3(config)#int f0/1

r3(config-if)#ip pim sparse-mode

r3(config-if)#exit

r3(config)#int s1/0

r3(config-if)#ip pim sparse-mode

r3(config-if)#exit

r3(config-if)#int loopback 33

r3(config-if)#ip pim sparse-mode

r3(config-if)#exit

r3(config)#

 

说明:在R3上开启组播功能,并且在接口Loopback 33,F0/0,F0/1,S1/0下开启PIM-SM模式,因为Loopback 0只用来建MSDP邻居,并不运行组播,所以没有必要运行PIM。

 

(4)在R4上配置PIM-SM:

r4(config)#ip multicast-routing

r4(config)#int f0/1

r4(config-if)#ip pim sparse-mode

r4(config-if)#exit

说明:在R4上开启组播功能,并且在接口F0/1下开启PIM-SM模式。

 

 

(5)在R5上配置PIM-SM:

r5(config)#ip multicast-routing

r5(config)#int f0/1

r5(config-if)#ip pim sparse-mode

r5(config-if)#exit

r5(config)#int f0/0

r5(config-if)#ip pim sparse-mode

r5(config-if)#exit

r5(config)#

r5(config)#int s1/0

r5(config-if)#ip pim sparse-mode

r5(config-if)#exit

r5(config)#int loopback 55

r5(config-if)#ip pim sparse-mode

r5(config-if)#exit

说明:在R5上开启组播功能,并且在接口Loopback 55,F0/0,F0/1,S1/0下开启PIM-SM模式。

 

 

(6)在R6上配置PIM-SM:

r6(config)#ip multicast-routing

r6(config)#int f0/0

r6(config-if)#ip pim sparse-mode

r6(config-if)#exit

说明:在R6上开启组播功能,并且在接口F0/0下开启PIM-SM模式

 

(7)在R2上查看PIM邻居情况:

r2#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

12.1.1.1          Serial1/0                00:09:22/00:01:15 v2    1 / S

23.1.1.3          FastEthernet0/0          00:04:22/00:01:19 v2    1 / DR S

25.1.1.5          FastEthernet0/1          00:01:59/00:01:43 v2    1 / DR S

r2#

说明:R2与R1,R3以及R5建立PIM邻居关系,一切正常。

 

(8)在R3上查看PIM邻居情况:

r3#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

23.1.1.2          FastEthernet0/0          00:04:41/00:01:29 v2    1 / S

34.1.1.4          FastEthernet0/1          00:02:42/00:01:29 v2    1 / DR S

35.1.1.5          Serial1/0                00:02:07/00:01:35 v2    1 / DR S

r3#

说明:R3与R2,R4以及R5建立PIM邻居关系,一切正常。

 

(9)在R5上查看PIM邻居情况:

r5#sh ip pim neighbor

PIM Neighbor Table

Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,

      S - State Refresh Capable

Neighbor          Interface                Uptime/Expires    Ver   DR

Address                                                            Prio/Mode

25.1.1.2          FastEthernet0/1          00:02:02/00:01:39 v2    1 / S

56.1.1.6          FastEthernet0/0          00:01:08/00:01:35 v2    1 / DR S

35.1.1.3          Serial1/0                00:02:20/00:01:22 v2    1 / S

r5#

说明:R5与R2,R3以及R6建立PIM邻居关系,一切正常。

 

(10)将R2配置为PIM-SM Domain 1的RP:

r2(config)#access-list 1 deny   224.0.1.39

r2(config)#access-list 1 deny   224.0.1.40

r2(config)#access-list 1 permit any

r2(config)#

r2(config)#access-list 24 permit 224.1.1.1

r2(config)#

r2(config)#int f0/0

r2(config-if)#ip multicast boundary 1

r2(config-if)#exit

r2(config)#

r2(config)#int f0/1

r2(config-if)#ip multicast boundary 1

r2(config-if)#exit

r2(config)#ip pim send-rp-announce loopback 22 scope 16 group-list 24

r2(config)#ip pim send-rp-discovery loopback 22 scope 16

说明:R2以Loopback 22作为组224.1.1.1的RP和映射代理;因为网络划分为PIM-SM Domain 1、PIM-SM Domain 2以及PIM-SM Domain 3共3个PIM-SM域,所以必须配置PIM-SM域边界,这里将R2连接PIM-SM Domain 2与PIM-SM Domain 3的接口F0/0和F0/1都配置成了PIM-SM域边界,后面还需在PIM-SM Domain 2与PIM-SM Domain 3之间配置PIM-SM域边界,在R3或R5上配置都可以。

 

(11)将R3配置为PIM-SM Domain 2的RP:

r3(config)#access-list 1 deny   224.0.1.39

r3(config)#access-list 1 deny   224.0.1.40

r3(config)#access-list 1 permit any

r3(config)#

r3(config)#access-list 24 permit 224.1.1.1

r3(config)#

r3(config)#int s1/0

r3(config-if)#ip multicast boundary 1

r3(config-if)#exit

r3(config)#ip pim send-rp-announce loopback 33 scope 16 group-list 24

r3(config)#ip pim send-rp-discovery loopback 33 scope 16

说明:R3以Loopback 33作为组224.1.1.1的RP和映射代理;并将连接PIM-SM Domain 3的接口S1/0都配置成了PIM-SM域边界,到这里为止,PIM-SM Domain 1、PIM-SM Domain 2以及PIM-SM Domain 3已经被成功分割开,相互独立。

 

 

(12)将R5配置为PIM-SM Domain 3的RP:

 

r5(config)#access-list 24 permit 224.1.1.1

r5(config)#

r5(config)#ip pim send-rp-announce loopback 55 scope 16 group-list 24

r5(config)#ip pim send-rp-discovery loopback 55 scope 16

说明:R5以Loopback 55作为组224.1.1.1的RP和映射代理。

 

(13)在R1上查看RP学习情况:

r1#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 22.2.2.2 (?), v2v1

    Info source: 22.2.2.2 (?), elected via Auto-RP

         Uptime: 00:02:37, expires: 00:02:21

r1#

说明:PIM-SM Domain 1中的R1学习到的RP正是22.2.2.2,和预期一样,也证明PIM-SM域已被成功隔离。

 

(14)在R2上查看RP学习情况:

r2#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback22)

 

Group(s) 224.1.1.1/32

  RP 22.2.2.2 (?), v2v1

    Info source: 22.2.2.2 (?), elected via Auto-RP

         Uptime: 00:02:50, expires: 00:02:07

r2#

说明:PIM-SM Domain 1中的R2学习到的RP正是22.2.2.2,和预期一样,也证明PIM-SM域已被成功隔离。

 

(15)在R3上查看RP学习情况:

r3#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback33)

 

Group(s) 224.1.1.1/32

  RP 33.3.3.3 (?), v2v1

    Info source: 33.3.3.3 (?), elected via Auto-RP

         Uptime: 00:01:34, expires: 00:02:23

r3#

说明:PIM-SM Domain 2中的R3学习到的RP正是33.3.3.3,和预期一样,也证明PIM-SM域已被成功隔离。

 

(16)在R4上查看RP学习情况:

r4#sh ip pim rp mapping

PIM Group-to-RP Mappings

 

Group(s) 224.1.1.1/32

  RP 33.3.3.3 (?), v2v1

    Info source: 33.3.3.3 (?), elected via Auto-RP

         Uptime: 00:01:47, expires: 00:02:12

r4#

说明:PIM-SM Domain 2中的R4学习到的RP正是33.3.3.3,和预期一样,也证明PIM-SM域已被成功隔离。

 

(17)在R5上查看RP学习情况:

r5#sh ip pim rp mapping

PIM Group-to-RP Mappings

This system is an RP (Auto-RP)

This system is an RP-mapping agent (Loopback55)

 

Group(s) 224.1.1.1/32

  RP 55.5.5.5 (?), v2v1

    Info source: 55.5.5.5 (?), elected via Auto-RP

         Uptime: 00:01:11, expires: 00:02:47

r5#

说明:PIM-SM Domain 3中的R5学习到的RP正是55.5.5.5,和预期一样,也证明PIM-SM域已被成功隔离。

 

(18)在R6上查看RP学习情况:

说明:PIM-SM Domain 3中的R6学习到的RP正是55.5.5.5,和预期一样,也证明PIM-SM域已被成功隔离。

 

(19)测试组播源R4和R6到组224.1.1.1的通信情况:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r4#

 

 

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r6#

说明:因为PIM-SM域之间已经被隔离,各自的RP都没有完整的组播源和组成员信息,所以在没有MSDP共享组播源信息的情况下,域间组播是不可能过的。

                                                                         返回目录

 

3.配置MSDP

(1)在2个PIM-SM域之间建立MSDP连接:

r2(config)#ip msdp peer 3.3.3.3 connect-source loopback 0

r2(config)#ip msdp peer 55.5.5.5 connect-source loopback 0

 

r3(config)#ip msdp peer 2.2.2.2 connect-source loopback 0

r3(config)#ip msdp peer 55.5.5.5 connect-source loopback 0

 

r5(config)#ip msdp peer 2.2.2.2 connect-source loopback 55

r5(config)#ip msdp peer 3.3.3.3 connect-source loopback 55

 

说明:R2,R3以及R5之间建立全互联的MSDP邻居关系,其中R2和R3都是使用接口Loopback 0的地址作为MSDP源地址,而R5使用接口Loopback 55的地址作为MSDP源地址,连接情况如下:

R2(2.2.2.2)—— R3(3.3.3.3)

R2(2.2.2.2)—— R5(55.5.5.5)

R3(3.3.3.3)—— R5(55.5.5.5)

正因为R5的RP地址也是55.5.5.5,而MSDP的源地址也是55.5.5.5,如果收到的SA数据包的发送方MSDP peer的IP地址与SA数据包中的RP地址相同时,是不对SA数据包作RPF检测的,所以在任何MSDP peer收到R5的SA时都不做RPF检测。

 

(2)查看MSDP的连接情况:

r2#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

3.3.3.3          ?     Up       00:01:17 0     0     ?

55.5.5.5         ?     Up       00:00:17 0     0     ?

r2#

 

 

r3#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

2.2.2.2          ?     Up       00:01:41 0     0     ?

55.5.5.5         ?     Up       00:01:03 0     0     ?

r3#

 

 

R5:

r5#sh ip msdp summary

MSDP Peer Status Summary

Peer Address     AS    State    Uptime/  Reset SA    Peer Name

                                Downtime Count Count

2.2.2.2          ?     Up       00:00:53 0     0     ?

3.3.3.3          ?     Up       00:01:16 0     0     ?

r5#

说明:R2,R3以及R5之间的全互联MSDP连接已经全部正常建立。

 

 

(3)在R2上查看SA信息:

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 0 entries

r2#

说明:因为目前没有路由器发起组播流量,也就没有组播源,那么也就不会产生SA信息。

 

(4)在组播源路由器R4上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

在MSDP路由器R2上开启Debug:

r2#debug ip msdp peer

MSDP Peer debugging is on

r2#

r2#debug ip msdp detail

MSDP Detail debugging is on

r2#

 

在组播源路由器R4上发起组播流量:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r4#

说明:组播不通,后面将根据实际情况一步一步解决。

 

观察R2上的Debug信息:

r2#

*Mar  1 01:02:35.471: MSDP(0): Received 20-byte TCP segment from 3.3.3.3

*Mar  1 01:02:35.475: MSDP(0): Append 20 bytes to 0-byte msg 16 from 3.3.3.3, qs 1

*Mar  1 01:02:35.475: MSDP(0): 3.3.3.3: Received 20-byte msg 16 from peer

*Mar  1 01:02:35.475: MSDP(0): 3.3.3.3: SA TLV, len: 20, ec: 1, RP: 33.3.3.3

*Mar  1 01:02:35.479: MSDP(0): 3.3.3.3: Peer RPF check failed for 33.3.3.3, used ? route's peer 0.0.0.0

r2#

说明:因为目前R2有1个以上的MSDP peer(R3和R5共2个),所以对于收到的SA必须进行RPF检测,而对SA的RPF检测必须依靠BGP或MBGP路由表,而我们并没有配置BGP和MBGP,所以Debug信息中显示对于MSDP peer 3.3.3.3发来的SA做RPF检测失败了,在这里还请记住,如果收到的SA数据包的发送方MSDP peer的IP地址与SA数据包中的RP地址相同时,是不对SA数据包作RPF检测的,但因为R3的MSDP地址是3.3.3.3,而它发出的SA里面的RP地址是33.3.3.3,不满足不做RPF检测的要求,所以必须对R3发来的SA做RPF检测。

 

(5)在R2上再次查看SA信息:

r2#sh ip msdp sa-cache 

MSDP Source-Active Cache - 0 entries

r2#

说明:由于对R3发来的SA数据包RPF检测失败,所以R2并没有缓存任何可用的SA信息。

 

(6)尝试在组播源路由器R6上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 368 ms

Reply to request 1 from 12.1.1.1, 296 ms

Reply to request 2 from 12.1.1.1, 208 ms

Reply to request 3 from 12.1.1.1, 264 ms

Reply to request 4 from 12.1.1.1, 248 ms

Reply to request 5 from 12.1.1.1, 264 ms

Reply to request 6 from 12.1.1.1, 248 ms

Reply to request 7 from 12.1.1.1, 224 ms

Reply to request 8 from 12.1.1.1, 248 ms

Reply to request 9 from 12.1.1.1, 264 ms

r6#

说明:PIM-SM Domain 3与PIM-SM Domain 1的组播居然通了,观察R2上的Debug信息,看看发生了什么:

r2#

*Mar  1 01:04:39.351: MSDP(0): Received 120-byte TCP segment from 55.5.5.5

*Mar  1 01:04:39.355: MSDP(0): Append 120 bytes to 0-byte msg 21 from 55.5.5.5, qs 1

*Mar  1 01:04:39.355: MSDP(0): 55.5.5.5: Received 120-byte msg 21 from peer

*Mar  1 01:04:39.355: MSDP(0): 55.5.5.5: SA TLV, len: 120, ec: 1, RP: 55.5.5.5, with data

*Mar  1 01:04:39.359: MSDP(0): 55.5.5.5: Peer RPF check passed for 55.5.5.5, peer is RP

*Mar  1 01:04:39.359: MSDP(0): WAVL Insert SA Source 56.1.1.6 Group 224.1.1.1 RP 55.5.5.5 Successful

r2#

说明:因为R5的MSDP peer地址55.5.5.5与SA数据包中的RP地址55.5.5.5相同,满足不对SA数据包作RPF检测的条件,所以R5发来的SA数据包可以直接使用,从R2的Debug信息中也看出的确如此,这就是最终PIM-SM Domain 3与PIM-SM Domain 1组播通信成功的原因。

 

(7)在R2上再次查看SA信息:

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 1 entries

(56.1.1.6, 224.1.1.1), RP 55.5.5.5, AS ?,00:03:54/00:04:42, Peer 55.5.5.5

Learned from peer 55.5.5.5, RPF peer 55.5.5.5,

SAs received: 4, Encapsulated data received: 1

r2#

说明:R5发来的SA信息已被成功缓存并使用。

                                                                          返回目录

 

4.配置MBGP帮助MSDP的SA通过RPF检测

说明:因为对SA的RPF检测必须依靠BGP或MBGP路由表来完成,所以我们在这里选择采取配置MBGP的方式,来帮助R2对PIM-SM Domain 3的R3发来的SA通过RPF检测,从而实现两个PIM-SM域之间的组播通信。

 

(1)在R2和R3之间配置MBGP:

R2:

r2(config)#router bgp 1

r2(config-router)#neighbor 3.3.3.3 remote-as 2

r2(config-router)#neighbor 3.3.3.3 update-source loopback 0

r2(config-router)#neighbor 3.3.3.3 ebgp-multihop

r2(config-router)#address-family ipv4 multicast

r2(config-router-af)#neighbor 3.3.3.3 activate

r2(config-router-af)#exit

r2(config-router)#exit

r2(config)#

 

 

R3:

r3(config)#router bgp 2

r3(config-router)#neighbor 2.2.2.2 remote-as 1

r3(config-router)#neighbor 2.2.2.2 update-source loopback 0

r3(config-router)#neighbor 2.2.2.2 ebgp-multihop

r3(config-router)#address-family ipv4 multicast

r3(config-router-af)#neighbor 2.2.2.2 activate

r3(config-router-af)#network 33.3.3.0 mask 255.255.255.0

r3(config-router-af)#exit

r3(config-router)#exit

r3(config)#

 

说明:为了更好的帮助SA通过RPF检测,所以使用了与建立MSDP peer相同的地址来建立MBGP;因为SA的RPF检测是基于SA中RP的IP地址的,所以这里将RP的地址段33.3.3.0/24发布进了MBGP,但并没有将组播源的地址段34.1.1.0/24发布进MBGP,因为这条路由在IGP里面已经有了,对普通组播流的RPF检测可以基于静态组播路由表、DVMRP路由表、MBGP路由表、单播路由表等多种形式。

 

(2)查看BGP与MBGP邻居状态:

r2#show ip bgp summary

BGP router identifier 22.2.2.2, local AS number 1

BGP table version is 1, main routing table version 1

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

3.3.3.3         4     2       2       2        0    0    0 00:00:26        0

r2#

 

r2#sh ip bgp ipv4 multicast summary

BGP router identifier 22.2.2.2, local AS number 1

BGP table version is 2, main routing table version 2

1 network entries using 129 bytes of memory

1 path entries using 48 bytes of memory

2/1 BGP path/bestpath attribute entries using 248 bytes of memory

1 BGP AS-PATH entries using 24 bytes of memory

0 BGP route-map cache entries using 0 bytes of memory

0 BGP filter-list cache entries using 0 bytes of memory

BGP using 449 total bytes of memory

BGP activity 1/0 prefixes, 1/0 paths, scan interval 60 secs

 

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

3.3.3.3         4     2       4       3        2    0    0 00:00:32        1

r2#

说明:R2与R3之间的BGP和MBGP邻居均已建立,并且邻居类型为eBGP,请注意对方R3的AS号码为2,这个AS号码关系到它发来的SA能不能通过RPF检测,因为当MSDP peer是eBGP邻居的情况下,是看去往SA数据包中RP地址的最佳路径的下一跳AS号码是不是这个eBGP邻居的AS号码,如果是,则检测通过,否则检测失败,这里只要去往RP的地址33.3.3.3的BGP最佳路径的下一跳AS号码和R3的AS号码2一样,那么就能SA通过RPF检测,否则失败。

 

(3)查看MBGP路由表:

r2#sh ip bgp ipv4 multicast

BGP table version is 8, local router ID is 22.2.2.2

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,

              r RIB-failure, S Stale

Origin codes: i - IGP, e - EGP, ? - incomplete

 

   Network          Next Hop            Metric LocPrf Weight Path

*> 33.3.3.0/24      3.3.3.3                  0             0 2 i

r2#

说明:MBGP路由表中已经正常收到关于R3发来的SA数据包中的RP地址段,并且显示最佳路径的下一跳AS号码正是eBGP邻居R3的AS号码2相同,所以RPF检测一定通过。

 

(4)再次在组播源路由器R4上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 396 ms

Reply to request 0 from 12.1.1.1, 444 ms

Reply to request 1 from 12.1.1.1, 240 ms

Reply to request 2 from 12.1.1.1, 288 ms

Reply to request 3 from 12.1.1.1, 220 ms

Reply to request 4 from 12.1.1.1, 216 ms

Reply to request 5 from 12.1.1.1, 288 ms

Reply to request 6 from 12.1.1.1, 304 ms

Reply to request 7 from 12.1.1.1, 240 ms

Reply to request 8 from 12.1.1.1, 196 ms

Reply to request 9 from 12.1.1.1, 188 ms

r4#

说明:和预期一样,通过MBGP解决SA的RPF检测问题之后,PIM-SM Domain 2与PIM-SM Domain 1的组播通信已经变的正常。

 

观察R2上的Debug信息:

r2#

*Mar  1 01:19:43.883: MSDP(0): Received 120-byte TCP segment from 3.3.3.3

*Mar  1 01:19:43.883: MSDP(0): Append 120 bytes to 0-byte msg 56 from 3.3.3.3, qs 1

*Mar  1 01:19:43.887: MSDP(0): 3.3.3.3: Received 120-byte msg 56 from peer

*Mar  1 01:19:43.887: MSDP(0): 3.3.3.3: SA TLV, len: 120, ec: 1, RP: 33.3.3.3, with data

*Mar  1 01:19:43.887: MSDP(0): 3.3.3.3: Peer RPF check passed for 33.3.3.3, used EMBGP peer

*Mar  1 01:19:43.891: MSDP(0): Forward decapsulated SA data for (34.1.1.4, 224.1.1.1) on Serial1/0

r2#

说明:和预期一样,R2基于MBGP对R3发来的SA做RPF检测成功。

 

 

(5)在R2上再次查看SA信息:

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 2 entries

(34.1.1.4, 224.1.1.1), RP 33.3.3.3, MBGP/AS 2, 00:00:16/00:05:43, Peer 3.3.3.3

(56.1.1.6, 224.1.1.1), RP 55.5.5.5, BGP/AS 0, 00:00:27/00:05:32, Peer 55.5.5.5

r2#

说明:R3和R5发来的SA信息已被R2成功缓存并使用,所以现在3个PIM-SM域之间的组播通信均正常。

 

(6)查看组播树情况:

R3:

r3#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:08:20/stopped, RP 33.3.3.3, flags: SP

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list: Null

 

(34.1.1.4, 224.1.1.1), 00:00:13/00:03:24, flags: TA

  Incoming interface: FastEthernet0/1, RPF nbr 0.0.0.0

  Outgoing interface list:

    FastEthernet0/0, Forward/Sparse, 00:00:13/00:03:16

 

r3#

 

R2:

r2#sh ip mroute 224.1.1.1

IP Multicast Routing Table

Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,

       L - Local, P - Pruned, R - RP-bit set, F - Register flag,

       T - SPT-bit set, J - Join SPT, M - MSDP created entry,

       X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,

       U - URD, I - Received Source Specific Host Report,

       Z - Multicast Tunnel, z - MDT-data group sender,

       Y - Joined MDT-data group, y - Sending to MDT-data group

Outgoing interface flags: H - Hardware switched, A - Assert winner

 Timers: Uptime/Expires

 Interface state: Interface, Next-Hop or VCD, State/Mode

 

(*, 224.1.1.1), 00:49:23/00:02:28, RP 22.2.2.2, flags: SJC

  Incoming interface: Null, RPF nbr 0.0.0.0

  Outgoing interface list:

    Serial1/0, Forward/Sparse, 00:49:23/00:02:54

 

(34.1.1.4, 224.1.1.1), 00:00:31/00:02:37, flags: MT

  Incoming interface: FastEthernet0/0, RPF nbr 23.1.1.3, Mbgp

  Outgoing interface list:

    Serial1/0, Forward/Sparse, 00:00:31/00:02:54

 

(56.1.1.6, 224.1.1.1), 00:02:43/00:01:07, flags: T

  Incoming interface: FastEthernet0/1, RPF nbr 25.1.1.5

  Outgoing interface list:

    Serial1/0, Forward/Sparse, 00:02:43/00:02:53

 

r2#

说明:从组播树中可以看见,PIM-SM域之间的通信使用的是(S,G),而并非PIM-SM模式传统的(*,G),各组流量走向进出口完全和拓朴中一致。

 

查看当前环境中所有路由器的配置信息请点击“running-config

 

 

5.测试default MSDP peer帮助MSDP的SA通过RPF检测

说明:目前3个PIM-SM域之间的组播通信完全正常,所以想要测试default MSDP peer帮助MSDP的SA通过RPF检测,首先必须制造SA无法通过RPF检测的环境,才能够利用default MSDP peer帮助MSDP的SA通过RPF检测;根据上图的实验环境,我们采用过滤掉PIM-SM Domain 3的R5直接向PIM-SM Domain 1的R2发送SA,但还是正常发给PIM-SM Domain 2的R3,这样一来,PIM-SM Domain 3和PIM-SM Domain 2的SA都必须通过R3发给R2,这就势必会造成PIM-SM Domain 3的SA因为RPF检测不通过而被R2丢弃,但PIM-SM Domain 2的SA和之前一样保持正常。

 

(1)将PIM-SM Domain 3的R5向PIM-SM Domain 1的R2发送的SA全部过滤掉:

r5(config)#ip msdp sa-filter out 2.2.2.2

说明:如果命令后面不跟任何匹配工具,则表示所有SA。

 

2)清除R2上的SA缓存信息:

r2#clear ip msdp sa-cache

r2#

r2#sh ip msdp sa-cache

MSDP Source-Active Cache - 0 entries

r2#

说明:R2上的SA缓存信息已被全部清空。

 

3)在组播源路由器R6上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

..........

r6#

说明:和预期一样,PIM-SM Domain 3与PIM-SM Domain 1的组播不通,这一定是SA数据包无法通过RPF检测引起的.

观察R2上的Debug信息:

r2#

*Mar  1 01:35:56.891: MSDP(0): Received 120-byte TCP segment from 3.3.3.3

*Mar  1 01:35:56.891: MSDP(0): Append 120 bytes to 0-byte msg 102 from 3.3.3.3, qs 1

*Mar  1 01:35:56.891: MSDP(0): 3.3.3.3: Received 120-byte msg 102 from peer

*Mar  1 01:35:56.891: MSDP(0): 3.3.3.3: SA TLV, len: 120, ec: 1, RP: 55.5.5.5, with data

*Mar  1 01:35:56.895: MSDP(0): 3.3.3.3: Peer RPF check failed for 55.5.5.5, used IBGP route's peer 0.0.0.0

r2#

说明:正因为PIM-SM Domain 3的R5直接向PIM-SM Domain 1的R2发送的SA被过滤掉了,所以这时PIM-SM Domain 3的SA是先发给PIM-SM Domain 2的R3,然后由R3再发给R2的,这样一来,在对收到的SA做RPF检测时,由于SA数据包中RP地址55.5.5.5根本就无法在BGP或MBGP路由表中找到,也就无法做RPF检测,所以最终因检测失败而被丢弃了。

 

(4)再次在组播源路由器R4上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

r4#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 296 ms

Reply to request 1 from 12.1.1.1, 188 ms

Reply to request 2 from 12.1.1.1, 344 ms

Reply to request 3 from 12.1.1.1, 320 ms

Reply to request 4 from 12.1.1.1, 392 ms

Reply to request 5 from 12.1.1.1, 336 ms

Reply to request 6 from 12.1.1.1, 168 ms

Reply to request 7 from 12.1.1.1, 172 ms

Reply to request 8 from 12.1.1.1, 324 ms

Reply to request 9 from 12.1.1.1, 308 ms

r4#

说明:因为PIM-SM Domain 2与PIM-SM Domain 1之间并没有任何变化,所以组播通信仍然保持正常.

观察R2上的Debug信息:

r2#

*Mar  1 01:37:11.759: MSDP(0): Received 120-byte TCP segment from 3.3.3.3

*Mar  1 01:37:11.763: MSDP(0): Append 120 bytes to 0-byte msg 105 from 3.3.3.3, qs 1

*Mar  1 01:37:11.763: MSDP(0): 3.3.3.3: Received 120-byte msg 105 from peer

*Mar  1 01:37:11.767: MSDP(0): 3.3.3.3: SA TLV, len: 120, ec: 1, RP: 33.3.3.3, with data

*Mar  1 01:37:11.767: MSDP(0): 3.3.3.3: Peer RPF check passed for 33.3.3.3, used EMBGP peer

*Mar  1 01:37:11.767: MSDP(0): WAVL Insert SA Source 34.1.1.4 Group 224.1.1.1 RP 33.3.3.3 Successful

r2#

说明:PIM-SM Domain 2中的SA还是被R2正常接收并缓存。

 

(5)在R2上再次查看SA信息:

r2#sh ip msdp sa-cache 

MSDP Source-Active Cache - 1 entries

(34.1.1.4, 224.1.1.1), RP 33.3.3.3, MBGP/AS 2, 00:00:49/00:05:44, Peer 3.3.3.3

Learned from peer 3.3.3.3, RPF peer 3.3.3.3,

SAs received: 2, Encapsulated data received: 1

r2#

说明:从结果中看出,PIM-SM Domain 2中的SA被R2正常接收并缓存,而PIM-SM Domain 3还在故障中。

 

(6)通过default MSDP peer帮助MSDP的SA通过RPF检测

r2(config)#ip msdp default-peer 3.3.3.3

说明:因为从Default MSDP Peer收到的所有SA都不需要做RPF检测,所以无论是PIM-SM Domain 2中的SA,还是PIM-SM Domain 3先发给PIM-SM Domain 2的R3,然后再由R3发过来的SA,R2都不再做RPF检测,结果就是所有SA都被有效缓存。

 

(7)再次在组播源路由器R6上发起组播,并在MSDP路由器R2上通过Debug观察MSDP信息:

r6#ping 224.1.1.1 repeat 10

 

Type escape sequence to abort.

Sending 10, 100-byte ICMP Echos to 224.1.1.1, timeout is 2 seconds:

 

Reply to request 0 from 12.1.1.1, 456 ms

Reply to request 1 from 12.1.1.1, 408 ms

Reply to request 2 from 12.1.1.1, 220 ms

Reply to request 3 from 12.1.1.1, 200 ms

Reply to request 4 from 12.1.1.1, 192 ms

Reply to request 5 from 12.1.1.1, 280 ms

Reply to request 6 from 12.1.1.1, 264 ms

Reply to request 7 from 12.1.1.1, 248 ms

Reply to request 8 from 12.1.1.1, 312 ms

Reply to request 9 from 12.1.1.1, 276 ms

r6#

说明:default MSDP peer已经成功解决PIM-SM域间的SA检测与组播通信问题.

观察R2上的Debug信息:

r2#

*Mar  1 01:44:04.047: MSDP(0): Received 120-byte TCP segment from 3.3.3.3

*Mar  1 01:44:04.047: MSDP(0): Append 120 bytes to 0-byte msg 118 from 3.3.3.3, qs 1

*Mar  1 01:44:04.047: MSDP(0): 3.3.3.3: Received 120-byte msg 118 from peer

*Mar  1 01:44:04.051: MSDP(0): 3.3.3.3: SA TLV, len: 120, ec: 1, RP: 55.5.5.5, with data