4. IGMP协议(Internet Group Management Protocol)
4.1 什么是组播(多播)
(1)单播同一个视频要发送90个副本,但支持收看者“快进”和“倒退”。
(2)组播:同一个多播组的90个成员只需发送一次,路由器在转发分组时复制成多个副本转发出去,即在因特网范围内的多播是靠路由器来实现的,能够运行多播协议的路由器称为多播路由器。当分组到达目的局域网时,由于局部网具有硬件多播功能,因此不需要复制分组,在局部网上的多播组成员都能收到这个视频分组。
4.2 组播IP和组播MAC地址
(1)组播分为两种
①只在本局域上进行硬件组播(使用组播MAC地址)
②在因特网范围进行组播(使用组播IP)
(2)组播IP
D类地址 |
说明 |
备注 |
224.0.0.0 |
基地址(保留) |
INAN指派的永久组地址,不能随意被使用! |
224.0.0.1 |
在本子网上的所有参加多播的主机和路由器 |
|
224.0.0.2 |
在本子网上的所有参加多播的路由器 |
|
224.0.0.4 |
DVMP路由器 |
|
…… |
||
224.0.1.0至 238.255.255.255 |
全球范围都可使用的多播地址 |
|
239.0.0.0至 239.255.255.255 |
限制在一个组织的范围 |
①组播数据报的目的地址不能为某个具体的主机IP,而是多播组的标识符,然后将加入到这个多播组的主机IP与多播组的标识符关联起来。
②多播组的标识符就是D类地址,每一个D类地址标志一个多播组。D类地址范围是224.0.0.0至239.255.255.255,共可标志238个多播组。
③组播数据报使用IGMP协议,“尽最大努力交付”数据报,但并不保证一定能够交付给多播组内的所有成员。
④组播地址只能用于目的地址,而不能用于源地址。此外,组播数据报不产生ICMP差错报文。因此,若ping一个多播地址,将永远得不到响应。
(2)组播MAC地址
①目标地址是组播IP地址的数据包到达以太网,就要使用组播MAC地址进行封装。组播MAC地址使用组播IP地址构造。
②组播MAC地址区间:01-00-5E-00-00-00到01-00-5E-7F-FF-FF。这是一个由48位组成的MAC地址,其中高25位是固定的,而低23位是由IP多播地址的低23位直接映射而来。
③组播IP和组播MAC地址的映射关系不是唯一的。如组播IP(224.168.64.32)和(224.0.64.32)构造出来的MAC地址都是01-00-5E-00-40-20。当收到组播数据报的主机,还要在IP层利用软件根据IP地址进行过滤,把不是本主机要接收的数据报丢弃。
4.3 IGMP:组播管理协议
(1)IGMP协议工作的两个阶段
①当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。
②在多播过程中,一个多播组中的成员是动态变化的。随时会有主机加入或离开这个多播组。本地多播路由器要周期性地查询本地局域网上的主机,以便知道这些主机是否继续是组的成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。但一个组在经过几次的探询后仍然没有一个主机响应,多播路由器就认为本网络上主机己经离开了这个组。因此,也就不再把这个组的成员关系转发给其他多播路由器。
(2)多播路由选择协议
①连接在局域网上的多播路由器还必须与因特网上的其他多播路由器协同工作,以便把多播数据报用最小代价传递给所有的组成员。这需要使用多播路由选择协议。
②多播路由选择实际上就是找出以源主机为根节点的多播转发树。在多播转发树上的路由器不会收到重复的多播数据报(即多播数据报不应在互联网中兜圈子)
③多播路由选择协议的实现有三种方法:洪泛与剪除、隧道技术和基于核心的发现技术等。
4.4 实战:跨网段观看组播视频
(1)网络拓扑图
(2)在Win2003虚拟机上架设流媒体多播服务器
①安装Window Media Services组件。(为方便,这里简称为“WMS”)
②打开“WMS”,新建发布点,这里使用默认的“Sample_Broadcast”。
③在“属性”选项卡→“多播流”→启用“WMS多播数据写入器”。然后查看该写入器的属性,可以看到所使用的多播地址、端口和多播数据包的TTL。
④发布公告:在“公告”选项卡→“运行多播公告向导” →……→“添加流格式”中通过浏览找到“racecar_300.wmv”,然后继续设置直到完成。注意,会生成一个“Sample_Broadcast.nsc”文件。
⑤将“Sample_Broadcast.nsc”文件从Win2003虚拟机拷贝到WinXP,双击运行可观看在Win2003流媒体服务器上正在多播的视频。
(3)路由器配置
①R1启用多播路由,接口为密集模式。R2路由器配置方法相同
R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#ip multicast-routing //启用多播路由协议 R1(config)#interface fastEthernet 0/0 R1(config-if)#ip pim dense-mode //接口为密集模式 R1(config-if)#exit R1(config)#interface serial 2/0 R1(config-if)#ip pim dense-mode //接口为密集模式 R1(config-if)#exit
②查看R2多播路由表
R2#show ip mroute (192.168.10.30, 239.192.2.67), 00:00:11/00:02:59, flags: T //多播路由 Incoming interface: Serial2/0, RPF nbr 172.16.0.1 //R2要请求239.192.2.67多播数据流,就要找172.16.0.1 Outgoing interface list: FastEthernet0/0, Forward/Dense, 00:00:08/00:00:00
③查看接口绑定的组播地址
R2#show ip igmp groups IGMP Connected Group Membership Group Address Interface Uptime Expires Last Reporter Group Accounted 239.255.255.250 FastEthernet0/0 00:25:10 00:02:14 192.168.80.50 239.192.2.67 FastEthernet0/0 00:00:44 00:02:15 192.168.80.50 //流媒体多播组(IP:239.192.2.67),接收者192.168.80.50 224.0.1.40 FastEthernet0/0 00:25:11 00:02:11 192.168.80.10
④查看启用IGMP协议的接口
R2#show ip igmp interface //本例中会fast0/0和serial2/0接口的启用IGMP的信息
⑤查看IGMP协议工作过程、主机加入和离开组播的报告
R2#debug ip igmp //查看 R2#undebug all //取消