Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于 IP 主机向任一个直接相邻的路由器报告他们的组成员情况。IGMP 信息封装在 IP 报文中,其 IP 的协议号为2。IGMP 具有三种版本,即 IGMP v1、v2 和 v3。
- IGMPv1:主机可以加入组播组。没有离开信息(leave messages)。路由器使用基于超时的机制去发现其成员不关注的组。
- IGMPv2:该协议包含了离开信息,允许迅速向路由协议报告组成员终止情况,这对高带宽组播组或易变型组播组成员而言是非常重要的。
- IGMPv3:与以上两种协议相比,该协议的主要改动为:允许主机指定它要接收通信流量的主机对象。来自网络中其它主机的流量是被隔离的。IGMPv3 也支持主机阻止那些来自于非要求的主机发送的网络数据包。
IGMP 协议变种有:
- 距离矢量组播路由选择协议(DVMRP:Distance Vector Multicast Routing Protocol)
- IGMP 用户认证协议(IGAP:IGMP for user Authentication Protocol)
- 路由器端口组管理协议(RGMP:Router-port Group Management Protocol)
协议结构
IGMP v3 必须实现5种基本信息类型且与以前的版本相兼容:
- 0x11:会员查询
- 0x22:第3版本会员报告
- 0x12:第2版本会员报告
- 0x16:第2版本会员报告
- 0x17:第2版本离开组
例如,0x11(会员查询)信息格式如下所示:
| 8 | 16 | 32bit | ||
| Type | Max Response Time | Checksum | ||
| Group address | ||||
| RSV | S | QRV | QQIC | Number of Source |
| Source Address (1) | ||||
| …… | ||||
| Source Address (N) | ||||
- Type ― 0x11信息类型(会员查询)
- Max Response Time ― 只用于会员查询信息。规定每1/10秒中发送响应报告之前的最大允许时间。在所有其它信息中,发送方设置该值为0,而接收方忽略不计。
- Checksum ― 信息差错的校验和。
- Group Address ― 当发送一个通用查询时,Group Address 设为0。当发送一个特定组查询或组及特定源查询时,它被设置为正在查询的 Group Address。在离开组信息的会员报告中,该字段用于保存将要报告或离开的组的 IP 组播组地址。
- RSV ― 预留。传输过程中设置为0,接收方忽略不计。
- QQIC ― 查询者的查询间隔代码。
- Number of Source (N) ― 信息中源地址的数目。
- Source Address ― IP 单播地址向量。
有关其它信息类型的具体内容情参照相关链接中的 RFC 1112、2236和3376。
组织来源:IGMP 由 IETF(www.ietf.org)定义在 RFC 1112、RFC 2236和 RFC 3376中。
相关链接:
http://www.javvin.com/protocol/rfc1112.pdf:IGMP version 1 specification
http://www.javvin.com/protocol/rfc2236.pdf:IGMP version 2 specification
http://www.javvin.com/protocol/rfc3376.pdf:IGMP version 3 specification


