MSDP(组播源发现协议)当网络跨越了公网,或者网络需要各自独立时,如果每个独立的网络,或者是每个AS之间都需要组播通信的情况下,我们需要在不影响网络独立的前提下连通网络间的组播。不各个独立的网络中,又希望自己的组播路由器可以由自己完全控制,那么就需要将各个网络配置成独立的PIM-SM域。要将不同的PIM-SM域之间连通组播,就必须先有正常的组播树,而PIM-SM组播树的建立,必须了解到网络中的RP信息,以及组播源的位置。要连通不同的PIM-SM域,就必须在域之间建立MSDP连接,MSDP在PIM-SM域间传递组播源的信息,以及保持域间RP的信息。在使用MSDP将多个PIM-SM域连接时,每一个PIM-SM都可以在域中配置各自的RP,以实现自治。在不同的PIM-SM域之间建立MSDP连接时,是使用TCP639,IP地址高的初始化TCP连接,60秒一次keepalive,75秒后没数据或keepalive则重建TCP。建立连接的双方均是各自区域的RP,组播源向RP注册之后,那么RP将这些源信息通过在MSDP连接上发送Source-Active(SA)到远程RP,以提供组播源的信息。因为RP收到Source-Active(SA)后,也是要做RPF检测的,检测是根据BGP来做的,在这里,需要使用MP-BGP之组播MP-BGP,组成员的网络信息和建立MSDP连接的peer地址理论上都需要在MP-BGP中进行通告,一是防止RPF检测失败,二是由此来决定组播数据的传递,所以十分重要。但是如果不需要在PIM-SM域之间开启MP-BGP,就会有RPF检测失败的危险,失败后,Source-Active(SA)将被丢弃,所以要想在不开启MP-BGP的情况下,又要接收所有的Source-Active(SA),则将接收端配置成defaultMSDP,那么该域将接收任何SA信息。在配置defaultMSDP时,需要指定从何处接收SA,就需要指定对端MSDPpeer,使用ipmsdpdefault-peer指定,之后从对端过来的SA将不做RPF检测而完全被接收。在不同的域中配置的RP,被称为LogicalRP,但在网络中也可以配置多个RP,如果将多个RP配置成同一个地址时,那么多个具有相同地址的RP被称为AnycastRP,而且AnycastRP必须是32位掩码的地址,且需要在单播里通告,各个源和组成员均选用离自己最近的RP,从而提供冗余功能。所有AnycastRP都要配置成MSDPpeers,每个注册的消息,都传给所有RP在配置MSDPpeer时,可以指定originator-id,此ID即在SA中写出RP的地址,也可以不配。必须的配置只是msdppeer而已。MSDP只能在PIM-SM下使用,并且域间建立peer的RP应该是直连的。当两个远程网络需要使用组播时,由于中间可以隔了多个网络,也可以利用MSDP连接在不需要中间网络支持组播的情况下,连通远程网络的组播,所以MSDP类似于组播VPN。但需要解决直连问题,解决的方法可以配置tunnel。配置MSDP说明:以下图为例,配置MSDP,连通AS1和AS2的组播流量,其中R1为组成员,R4和R5为组播源,AS1的RP为1.1.1.1,AS2的RP为3.3.3.3。$2$2$21配置单播(此步略)说明:全网配置OSPF来完成单播通信。2在R1和R3之间创建隧道说明:因为两个AS并不是直连,所以需要在两台peer之间创建Tunnel以达到直连效果。(1)在R1上配置tunnelr1(config)#inttunnel0r1(config-if)#ipaddress100.1.1.1255.255.255.0r1(config-if)#tunnelsourceloopback0r1(config-if)#tunneldestination3.3.3.3(2)在R3上配置tunnelr3(config)#inttunnel0r3(config-if)#ipaddress100.1.1.3255.255.255.0r3(config-if)#tunnelsourceloopback0r3(config-if)#tunneldestination1.1.1.1r3(config-if)#(3)测试tunnel连通性:r1#ping100.1.1.3Typeescapesequencetoabort.Sending5,100-byteICMPEchosto100.1.1.3,timeoutis2seconds:!!!!!Successrateis100percent(5/5),round-tripmin/avg/max=1/3/4msr1#说明:peer之间tunnel连通性正常。3开启组播路由功能说明:分别开启AS1的组播和AS2的组播,而R2不能配置任何组播。R1:R1(config)#ipmulticast-routingR3:R3(config)#ipmulticast-routingR4:R4(config)#ipmulticast-routingR5:R5(config)#ipmulticast-routing4在接口上开启PIMSparse-Mode(1)在R1的loopback0接口上开启PIM-SMr1(config)#intloopback0r1(config-if)#ippimsparse-mode(2)在R1的tunnel0接口上开启PIM-SMr1(config)#inttunnel0r1(config-if)#ippimsparse-mode(3)在R3的loopback0接口上开启PIM-SMr1(config)#intloopback0r1(config-if)#ippimsparse-mode(4)在R3的tunnel0接口上开启PIM-SMr3(config)#inttunnel0r3(config-if)#ippimsparse-mode(5)在R3的f0/0接口上开启PIM-SMr3(config)#intf0/0r3(config-if)#ippimsparse-moder3(config-if)#exi(6)在R5的f0/0接口上开启PIM-SMr4(config)#intf0/0r4(config-if)#ippimsparse-mode5查看PIM邻居:(1)查看R1的PIM邻居r1#shippimneighborPIMNeighborTableNeighborInterfaceUptime/ExpiresVerDRAddressPrio/Mode100.1.1.3Tunnel000:01:09/00:01:35v21/Sr1#说明:R1通过tunnel正常与R3建立PIM邻居。(2)查看R3的PIM邻居r3#shippimneighborPIMNeighborTableMode:B-BidirCapable,DR-DesignatedRouter,N-DefaultDRPriority,S-StateRefreshCapableNeighborInterfaceUptime/ExpiresVerDRAddressPrio/Mode100.1.1.1Tunnel000:00:51/00:01:23v21/S34.1.1.4FastEthernet0/000:00:41/00:01:32v21/DRSr3#说明:R3通过tunnel正常与R3建立PIM邻居,并且正常与R4建立PIM邻居。(3)查看R4的PIM邻居r4#shippimneighborPIMNeighborTableMode:B-BidirCapable,DR-DesignatedRouter,N-DefaultDRPriority,S-StateRefreshCapableNeighborInterfaceUptime/ExpiresVerDRAddressPrio/Mode34.1.1.3FastEthernet0/000:00:26/00:01:18v21/Sr4#说明:R4与R3建立PIM邻居。6配置RP说明:分别为AS1和AS2单独配置各自的RP(1)在AS1中配置R1为RPr1(config)#access-list24permit224.2.2.2r1(config)#ippimsend-rp-announceloopback0scope10group-list24r1(config)#ippimsend-rp-discoveryloopback0scope10(2在AS2配置R3为RPR3(config)#access-list24permit224.2.2.2R3(config)#ippimsend-rp-announceloopback0scope10group-list24R3(config)#ippimsend-rp-discoveryloopback0scope10(3)查看R3上的RP情况:r3#shippimrpmappingPIMGroup-to-RPMappingsThissystemisanRP(Auto-RP)ThissystemisanRP-mappingagent(Loopback0)Group(s)224.2.2.2/32RP3.3.3.3(?),v2v1Infosource:3.3.3.3(?),electedviaAuto-RPUptime:00:01:09,expires:00:02:48r3#说明:R3的RP信息正常。(4)查看R4上的RP情况:r4#shippimrpmappingPIMGroup-to-RPMappingsGroup(s)224.2.2.2/32RP3.3.3.3(?),v2v1Infosource:3.3.3.3(?),electedviaAuto-RPUptime:00:01:18,expires:00:02:38r4#说明:R4的RP信息正常。7配置MSDP(1)在R1上配置指向R3的MSDP连接r1(config)#ipmsdppeer3.3.3.3connect-sourceLoopback0r1(config)#ipmsdporiginator-idLoopback0(当loopback0为RP时,此步可省略)(2)在R3上配置指向R1的MSDP连接r3(config)#ipmsdppeer1.1.1.1connect-sourceLoopback0r3(config)#ipmsdporiginator-idLoopback0(3)在R1上查看MSDPpeer情况r1#shipmsdppeerMSDPPeer3.3.3.3(?),AS?Description:Connectionstatus:State:Up,Resets:0,Connectionsource:Loopback0(1.1.1.1)Uptime(Downtime):00:00:13,Messagessent/received:2/0Outputmessagesdiscarded:0Connectionandcounterscleared00:01:13agoSAFiltering:Input(S,G)filter:none,route-map:noneInputRPfilter:none,route-map:noneOutput(S,G)filter:none,route-map:noneOutputRPfilter:none,route-map:noneSA-Requests:Inputfilter:noneSendingSA-Requeststopeer:disabledPeerttlthreshold:0SAslearnedfromthispeer:0Inputqueuesize:0,Outputqueuesize:0r1#说明:从结果中可以看出,AS1中的R1已经与AS2中的R3正常建立MSDP连接。(4)在R3上查看MSDPpeer情