组播概述
在网络中,存在着三种发送报文的方式:单播、广播、组播。数据采用单播(Unicast)方式传输时,服务器会为每一个接收者单独传输一份信息,如果有多个接收者存在,网络上就会重复地传输多份相同内容的信息,这样将会大量占用网络资源。数据采用广播(Broadcast)方式传输时,系统会把信息一次性的传送给网络中的所有用户,不管他们是否需要,任何用户都会接收到广播来的信息。
当前,诸如视频会议和视频点播等单点发送、多点接收的多媒体业务正在成为信息传送的重要组成部分。在一点发送多点接收的前提下,单播方式适合用户较少的网络,而广播方式适合用户稠密的网络,当网络中需求某信息的用户量不确定时,单播和广播方式效率很低。这时组播(multicast)应运而生,它实现了网络中单点到多点的高效数据传送,能够节约大量网络带宽,降低网络负载。组播传输信息的方式如图所示。
组播的特点是:
服务对象不固定,通常是一对多的关系;
把服务对象看成一个组,发送端只需要发送一次数据到相关网络设备即可;
每个用户可以随时加入或退出组播组;
实时性要求较高,允许一定的丢帧现象发生。
组播地址
组播IP地址:
根据IANA(Internet Assigned Numbers Authority,因特网编号授权委员会)规定,组播报文的IP地址使用D类IP地址,组播IP地址范围是224.0.0.0~239.255.255.255。其中,几个特殊组播IP地址段的范围及说明如下:
组播MAC地址:
以太网传输单播IP报文的时候,目的MAC地址使用的是接收者的MAC地址。但是在传输组播报文时,传输目标不再是一个具体的接收者,而是一个成员不确定的组,所以需要使用组播MAC地址作为目的地址,组播MAC地址是一个逻辑的MAC地址。
IANA规定,组播MAC地址的高24bit位是以01-00-5E开头,低23bit为组播IP地址的低23bit,映射关系如图所示:
由于IP组播地址的高4bit是1110,标识了组播组,而低28bit中只有23bit被映射到组播MAC地址上,这样IP组播地址中就会有5bit没有使用,从而出现了32个IP组播地址映射到同一MAC地址上的结果。
组播地址表
交换机在转发组播数据时是根据组播地址表来进行的。由于组播数据不能跨越VLAN传输,因此组播地址表的第一部分是VLAN ID,当交换机收到组播数据包时,数据包只能在接收端口所在的VLAN内转发。组播地址表对应的出口端口不是一个,而是一组端口列表。转发数据时,交换机根据组播数据的目的组播地址查找组播地址表,如果在组播地址表中查不到相应的条目,则把该组播数据广播,即向接收端口所在VLAN内的所有端口上转发;如果能查找到对应的条目,则目的地址应该是一组端口列表,于是交换机把这个组播数据复制成多份,每份转发到一个端口,从而完成组播数据的交换。组播地址表一般格式如图所示。
IGMP侦听
网络中的主机通过发送IGMP(Internet Group Management Protocol,互联网组管理协议)报文向临近的路由器申请加入(或离开)组播组,当上层路由设备将组播数据转发下来后,交换机负责将组播数据转发给主机。IGMP侦听(IGMP Snooping)是组播约束机制,交换机用他来完成组播组的动态注册,运行IGMP侦听的交换机通过侦听和分析主机与组播路由器之间交互的IGMP报文来管理和控制组播组,从而可以有效抑制组播数据在网络中扩散。
IGMP侦听的工作过程
交换机侦听用户主机与路由器之间的交互IGMP报文,跟踪组播信息及其申请的端口。当交换机侦听到主机向路由器发出报告报文(IGMP Report)时,交换机便把该端口加入组播地址表中;当交换机侦听到主机发送的离开报文(IGMP Leave)时,路由器会发送该端口的特定组查询报文(Group-Specific Query),若还有其它主机需要该组播,则将回应报告报文,若路由器收不到任何主机的回应,交换机便把该端口从组播地址表中删除。路由器会定时发查询报文(IGMP Query),交换机收到查询报文后,如果在一定的时间段内没有收到主机的报告报文,便把该端口从组播表中删除。