主机IP软件需要进行组播扩展,才能使主机能够在本地网络上收发组播分组。但仅靠这一点是不够的,因为跨越多个网络的组播转发必须依赖于路由器。路由器为建立组播转发路由必需了解每个组员在Internet中的分布,这要求主机必须能将其所在的组播组通知给本地路由器,这也是建立组播转发路由的基础。主机与本地路由器之间使用Internet组管理协议(IGMP,Internet Group Management Protocol)来进行组播组成员信息的交互。在此基础上,本地路由器再你信息与她组播路由器通信,传播组播组的成员信息,并建立组播路由。这个过程与路由器之间的常规单播路由。这个过程与路由器之间的常规单播路由的传播十分相似。
IGMP是TCP/IP中重要标准之一,所有IP组播系统(包括主机和路由器)都需要支持IGMP协议。组播协议包括组成员管理协议和组播路由协议。组成员管理协议用于管理组播组成员的加入和离开,组播路由协议负责在路由器之间交互信息来建立组播树。IGMP属于前者,是组播路由器用来维护组播组成员信息的协议,运行于主机和和组播路由器之间。IGMP 信息封装在IP报文中,其IP的协议号为2。若一个主机想要接收发送到一个特定组的组播数据包,它需要监听发往那个特定组的所有数据包。为解决Internet上组播数据包的路径选择,主机需通过通知其子网上的组播路由器来加入或离开一个组,组播中采用IGMP来完成这一任务。这样,组播路由器就可以知道网络上组播组的成员,并由此决定是否向它们的网络转发组播数据包。当一个组播路由器收到一个组播分组时,它检查数据包的组播目的地址,仅当接口上有那个组的成员时才向其转发。IGMP提供了在转发组播数据包到目的地的最后阶段所需的信息,实现如下双向的功能:
主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。
路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。
IGMP共有三个版本,即IGMP v1、v2 和 v3。
IGMPv1 定义了主机只可以加入组播组,但没有定义离开成员组的信息,路由器基于成员组的超时机制发现离线的组成员。
IGMPv1 主要基于查询和响应机制来完成对组播组成员的管理。当一个网段内有多台组播路由器时,由于它们都能从主机那里收到IGMP 成员关系报告报文(Membership Report Message),因此只需要其中一台路由器发送IGMP查询报文(Query Message)就足够了。这就需要有一个查询器(Querier)的选举机制来确定由哪台路由器作为IGMP 查询器。对于IGMPv1 来说,由组播路由协议(如PIM)选举出唯一的组播信息转发者DR(Designated Router,指定路由器)作为IGMP 查询器。IGMPv1 没有专门定义离开组播组的报文。当运行IGMPv1 的主机离开某组播组时,将不会向其要离开的组播组发送报告报文。当网段中不再存在该组播组的成员后,IGMP路由器将收不到任何发往该组播组的报告报文,于是IGMP 路由器在一段时间之后便删除该组播组所对应的组播转发项。