组播与igmp-snoooping组播简介组播协议IGMPsnooping测试技巧组播简介为什么采用组播?•向多位收件人发送相同的信息•一对多,多对多•只在需要时进行包复制•提高带宽利用率•成员可以动态加入或退出应用•资源发现/服务广告•视频/语音会议,股票分发单播和组播的比较组播地址IP组地址D类地址(224.0.0.0)范围;224.0.0.0--239.255.255.255已被IANA分配的地址预留地址;224.0.0.1--224.0.0.255224.0.0.1---子网上所有的组播系统224.0.0.2---子网上所有的IGMP路由器224.0.0.22---子网上所有的IGMPv3路由器临时地址,动态的分配与回收全局范围:224.0.1.0-238.255.255.255-------公网有限制的范围:239.0.0.0-239.255.255.255—私网组播地址是作为目的地址使用组播地址映射以太网的MAC地址01:00:5E:00:00:00到01:00:5E:7F:FF:FF用于将三层IP组播地址映射为二层地址,即IP组播地址中的低23位放入MAC地址的低23位。IP组播地址有28位地址空间,但只有23位被映射到MAC地址,这样会有32个IP组播地址映射到同一MAC地址上IGMPV1报文格式4位IGMP版本(1)4位IGMP类型(1-2)未用16位校验和32位组地址(D类IP地址,查询报文中该域为0)034781516318byteIGMP报文格式IGMPv1IGMPv1–报告•一个主机想加入某个组,或响应查询报文时,发送IGMP报告–查询•查询者将IGMP查询信息发送到224.0.0.1,TTL=1•局域网上的一个组播路由器被选中发送上述查询•查询间隔60–120秒IGMPV2报文格式8位IGMP报文类型最大响应时间16位校验和32位组地址0781516318byteIGMPv2增加离开报文----主机退出组播组时,如果它是该组的最后一个成员,则发送退出消息(同v1相比,降低了退出延迟)增加特定组查询报文----路由器在停止向某一子网发送数据之前要发送与该组相关的查询来确认该子网已无该组播组成员IGMPv3增加的主要功能是成员可以指定接收或指定不接收某些组播源的报文IGMP—加入组播组成员在加入(组播组224.1.1.1)时,立即向224.1.1.1发送报告报文224.1.1.1报告1.1.1.1H1H2H3向224.0.0.1的通用查询H1H2H3IGMP—通用查询定期向224.0.0.1发送成员资格查询向224.0.0.1查询IGMPv1H1H2H3IGMPv1—退出组播组主机“安静”退出组播组路由器发送定期查询路由器继续发送定期查询路由器在一定时间内收不到报告组播组超时IGMPv2—退出组播组退出至224.0.0.2H2退出组;发送退出消息到224.0.0.2路由器发送特定组查询到224.1.1.1保留的主机成员发送报告组播组仍然活动降低退出延迟,节约网络带宽和主机CPU占用报告至224.1.1.1对224.1.1.1的特定组查询224.1.1.11.1.1.1IGMPv2H1H2H3224.1.1.1#2#3#1IGMPSnooping(IGMP监听)为什么引入IGMPSnooping(IGMP监听)?•IGMP组播成员管理机制是针对第三层设计的•组播报文经过一些第二层交换设备时,就会转发给第二层交换设备的所有端口•IGMPSnooping功能用于改善二层交换机对组播流转发机制没有igmpsnooping时,组播数据流在二层交换机被广播发送有了igmp-snooping,组播数据流只会向特定的组播用户发送,避免了组播数据流泛滥。IGMPsnooping基本概念路由端口:设备端口中收到IGMP查询报文的端口称之为组播路由端口。路由端口老化时间:路由端口老化定时器设置时间。如果在此定时器超时的时候还没收到查询报文,则老化此路由端口。响应查询最晚时间:当以太网交换机收到特定组查询报文时,会在收到IGMPLeave报文的端口上启动一个响应查询定时器。如果在响应查询最晚时间内没有收到报告报文,就把该端口从组播组端口成员中删除。组播组成员端口老化时间:当一个端口加入组播组中的时候会同时启动该端口的老化定时器。如果在此定时器超时的时候没有收到IGMP报告报文,则老化该组播成员端口IGMPSnooping的工作原理组播路由器向下面周期性的发送通用查询报文,交换机收到查询报文的端口会被学习为路由端口,并把收到的查询报文会向其它的端口转发动态学习到的路由端口:switch(config)#shigmp-snoopingrouter-dynamicPortVIDAgeTypee0/0/126300{QUERY}TotalRecord:1PC想离开某个组,发送离开报文,交换机收到离开报文后,该组对应的端口成员会被删除,组播流就不会再往PC所在的端口转发。IGMPSnooping的工作原理PC收到查询报文后,想加入某个组,发送IGMPreport报文,report报文经过交换机交换机对这个报文进行监听,并根据report报文的内容形成一张组播表,即组成员和端口的对应关系。该report报文只会向路由端口转发。组播表switch(config)#showmulticastshowmulticasttableinformationTimeintervalofmulticastproxyis10sMACAddress:01:00:5e:00:02:02组mac地址VLANID:26Staticportlist:IGMPportlist:e0/0/4,e0/0/6.组播成员端口Dynamicportlist:Proxyportlist:Totalentries:1.组播源收到路由端口转发过来的report报文后,向路由端口发送对应的组播业务流,交换机收到组播流后,根据组播表发送到相应的成员端口。IGMPSnooping的工作原理PC不想再接收某个组的组播流时,发送该组的igmpleave报文,交换机端口收到igmpleave报文,会把该端口从该组删除,PC就不会再收到该组的组播流。交换机收到igmpleave报文,会向路由端口转发。测试1、交换机1端口接组播源,2、3端口接用户,开启igmp-snooping;2、组播源向交换机发送通用查询报文,2、3用户是否能收到?哪个端口会被学习为路由端口?3、组播源向交换机发送组播流,2、3用户是否能收到?4、2用户发送report报文,加入该组播流的组,2、3是否能收到组播流?哪些端口能收到2发的report报文?答案:2:2、3用户能收到通用查询报文,1端口被学习为路由端口3:2、3用户能收到组播流4:2用户能收到组播流,3用户不能;report报文往路由端口转发,所以1端口能收到。