1第二十三章组播R&S—23-2本章提要1.组播的基本概念2.PIMDM和PIMSM工作原理3.PIMDM配置4.PIMSM配置、AutoRP的配置R&S—23-3知识要点R&S—23-4Unicast(单播)和Multicast(组播)R&S—23-5组播的IP地址组播的IP地址:•D类地址•224.0.0.0--239.255.255.255R&S—23-6组播的MAC地址组播的MAC和组播的IP是对应的R&S—23-7IGMP(InternetGroupManagerProtocol)为了确定是否应该往某个网络转发组播流,路由器使用IGMP和主机之间通信,确定这个网络是否有某个组的成员。IGMP有多种版本:V1、V2、V3R&S—23-8IGMPv2—加入到组中R&S—23-9IGMPv2—离开一个组1.H2发送一个离开消息2.rtr-a发送查询,是否还有该组的成员3.H3发送成员报告,说明自己还是该组的成员,所以该组还保持活动R&S—23-10IGMPv2—离开一个组(Cont.)R&S—23-11IGMPv2—离开一个组(Cont.)R&S—23-12交换机与组播通常二层交换机接收到组播包会把包进行泛洪(Flood),这样会导致带宽的浪费。R&S—23-13二层交换机对组播的解决方案•CiscoGroupManagementProtocol(CGMP):•简单、Cisco专有、交换机和路由器之间使用•IGMPsnooping:•复杂、通用、监听路由器和主机间的通信R&S—23-14CGMP•交换机和路由器之间运行•路由器向交换机某一组有什么成员•CGMP包包含以下内容:–joinorleave–IGMP客户的MAC地址–组播组的MAC地址•交换机使用这些CGMP信息为特定组播组添加或者删除MAC地址R&S—23-15IGMPSnooping•交换机监听路由器和主机间的通信•交换机必须了解IGCP消息以决定什么接口需要转发什么组播流:–IGMP成员报告–IGMP离开消息R&S—23-16基于源的树为不同的源建立一棵转发树R&S—23-17基于源的树(Cont.)R&S—23-18共享树每个组建立一棵转发树R&S—23-19共享树(Cont.)R&S—23-20RPF(反向路径转发)检查本路由器到达源151.10.3.21的最近路径是S1口,如果组播包不是从S1口接收到,数据包将被丢弃。R&S—23-21Multicast的转发组播包的转发和单播包转发不同:•单播包转发关心的是包要到达哪里•组播包转发关心的包从哪里来•组播路由协议使用RPF来避免转发环路(forwardingloop).R&S—23-22PIM-Dense模式PIM-DM中,有组播源出现时,组播流是先泛洪到整个网络R&S—23-23PIM-DM(Cont.)然后才修剪掉不需要流量的网络R&S—23-24PIM-DM(Cont.)每3分钟就会重复一次泛洪和修剪过程。每个路由器会有每个源的转发组播路由表。R&S—23-25PIMSparse模式•支持基于源的树和共享树•是一种拉的模式•使用RP(集中点)•和发送者连接的路由器在RP注册源•和接收者连接的路由器(DR)加入到共享树中R&S—23-26PIM-SM:加入到共享树R&S—23-27AutoRPSharedDistributionTreeR&S—23-28实验1PIMDenseR&S—23-29实验目的1.理解PIMDense的工作原理2.掌握PIMDense的配置R&S—23-30实验拓扑拓扑中R2的g0/0接口以及PC1也是接在交换机S1上的,我们把这两个接口单独划分在一个VLAN中PC1将做为组播源,要观察各路由器将如何转发组播包R&S—23-31实验步骤1:划分VLANS1(config)#vlan2S1(config)#intf0/2S1(config-if)#switchmodeaccessS1(config-if)#switchaccessvlan2S1(config)#intf0/5S1(config-if)#switchmodeaccessS1(config-if)#switchaccessvlan2R&S—23-32实验步骤2:配置路由协议R1(config)#routerripR1(config-router)#network1.0.0.0R1(config-router)#network192.168.12.0R1(config-router)#network192.168.134.0R2(config)#routerripR2(config-router)#network192.168.12.0R2(config-router)#network192.168.23.0R2(config-router)#network192.168.2.0R2(config-router)#network2.0.0.0R&S—23-33R3(config)#routerripR3(config-router)#network192.168.23.0R3(config-router)#network192.168.134.0R3(config-router)#network3.0.0.0R4(config)#routerripR4(config-router)#network192.168.134.0R4(config-router)#network4.0.0.0R&S—23-34实验步骤3:配置PIMDenseR1(config)#ipmulticast-routing//以上是启用组播路由功能R1(config)#intloopback0R1(config-if)#ippimdenseR1(config)#ints0/0/0//组播的配置相当简单,在接口上运行pimdense协议即可R1(config-if)#ippimdenseR1(config)#intg0/0R1(config-if)#ippimdenseR&S—23-35R2(config)#ipmulticast-routingR2(config)#intloopback0R2(config-if)#ippimdenseR2(config)#ints0/0/0R2(config-if)#ippimdenseR2(config)#ints0/0/1R2(config-if)#ippimdenseR2(config)#intg0/0R2(config-if)#ippimdenseR&S—23-36R3(config)#ipmulticast-routingR3(config)#intloopback0R3(config-if)#ippimdenseR3(config)#ints0/0/1R3(config-if)#ippimdenseR3(config)#intg0/0R3(config-if)#ippimdenseR&S—23-37R4(config)#ipmulticast-routingR4(config)#intloopback0R4(config-if)#ippimdenseR4(config-if)#ipigmpjoin-group237.0.0.1//该接口加入到237.0.0.1组中,我们要利用237.0.0.1组做测试R4(config)#intg0/0R4(config-if)#ippimdenseR&S—23-38实验调试1:检查pim邻居、检查组播路由R1#showippimneighborPIMNeighborTableMode:B-BidirCapable,DR-DesignatedRouter,N-DefaultDRPriority,S-StateRefreshCapableNeighborInterfaceUptime/ExpiresVerDRAddressPrio/Mode192.168.12.2Serial0/0/006:57:59/00:01:27v21/S192.168.134.3GigabitEthernet0/006:25:46/00:01:29v21/S192.168.134.4GigabitEthernet0/006:25:46/00:01:24v21/DRS//以上显示了R1上pim邻居R&S—23-39R2#showipmroute(此处省略)(*,237.0.0.1),00:03:07/stopped,RP0.0.0.0,flags:DIncominginterface:Null,RPFnbr0.0.0.0Outgoinginterfacelist:Serial0/0/1,Forward/Dense,00:03:07/00:00:00Serial0/0/0,Forward/Dense,00:03:07/00:00:00(192.168.2.100,237.0.0.1),00:03:07/00:02:52,flags:TIncominginterface:GigabitEthernet0/0,RPFnbr0.0.0.0//以上表明R2是从g0/0接口接收到多播流的Outgoinginterfacelist:Serial0/0/1,Forward/Dense,00:03:08/00:00:00Serial0/0/0,Prune/Dense,00:01:09/00:01:50R&S—23-40步骤步骤4:把R1上的loopback0接口也加入到组237.0.0.1R1(config)#intloopback0R1(config-if)#ipigmpjoin-group237.0.0.1R&S—23-41实验调试2:观察组播路由的变化R2#showipmroute(此处省略)(192.168.2.100,237.0.0.1),00:10:21/00:02:58,flags:TIncominginterface:GigabitEthernet0/0,RPFnbr0.0.0.0Outgoinginterfacelist:Serial0/0/1,Forward/Dense,00:10:22/00:00:00Serial0/0/0,Forward/Dense,00:00:03/00:00:00//可以看到R2上的s0/0/0接口开始转发数据了,原因在于R1上有组成员了。可见PIMDense会根据组成员的加入或者退出,动态地维护转发树。(此处省略)R&S—23-42R1#showipmroute(此处省略)(192.168.2.100,237.0.0.1),00:10:44/00:02:59,flags:LTIncominginterface:Serial0/0/0,RPFnbr192.168.12.2Outgoinginterfacelist:Loopback0,Forward/Dense,00:02:25/00:00:00GigabitEthernet0/0,Prune/Dense,00:01:43/00:01:16//可以看到R1上的g0/0处于修剪状态,因为R3已经往192.168.134.0/24网段转发数据了,这样该网段才不会有2份组播流量。(此处省略)R&S—23-43R3#showipmroute(此处省略)(192.168.2.100,237.0.0.1),06:42:14/00:02:58,flags:TIncominginterface:Serial0/0/1,RPFnbr192.168.23.2Outgoinginterfacelist:GigabitEthernet0/0,Forward/Dense,00:13:21/00:00:00,A//可以是看到R3在往192.168.134.0/24网段转发数据。(此处省略)R&S—23-44实验调试3:查看IGMP组成员R1#showipigmpgroupsIGMPConnectedGroupMember