「IGMPv1」- 工作原理

  CREATED BY JENKINSBOT

概述介绍

IGMPv1 主要基于 Query 和 Report 机制完成组播组管理。在网络中,大致工作过程如下:
1)组播路由器被称为 IGMP Querier(Querier 查询器),向共享网络上所有主机和路由器发送的 Membership Query(普遍组查询报文)查询,用于查询哪些组播组存在成员。
2)主机向 IGMP Querier 发送的 Membership Report(成员关系报告报文)报文,用于申请加入某个组播组或者应答查询报文;

通过 Query 与 Report 报文,IGMP Querier 可以解到该网段内哪些组播组存在成员。
查询器和非查询器均能收到成员关系报告(目的地址 224.0.0.1),因此均能形成 IGMP Route Table 与 IGMP Group Table;

查询器选举机制

鉴于 Memebership Query 报文是组播报文,所以在多路访问网络中只需要一个 IGMP Querier 发送查询报文,即可查询所有组成员的加组信息。

IGMPv1 没有基于 IGMP 的查询器选举机制,所以需要依赖 PIM 进行 IGMP Querier 选举。IGMPv1 将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert Winner 或 DR,用于转发组播流量)作为 IGMPv1 Querier,负责该网段的组成员关系查询。

组成员加组机制

在初始时,IGMPv1 组成员将主动发送 IGMPv1 Memebership Report 报文,来加组。

组成员探测机制

当网络稳定后,IGMP Querier 需要了解网络内是否有存活组播成员。

IGMPv1 组成员存活的基本流程如下:

IGMP Querier 发送目的地址为 224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;普遍组查询报文是周期性发送的(默认每 60 秒发送,可通过命令配置)。

收到该 Query 报文的 Membership 启动定时器。该示例的 Membership-1 和 Membership-2 是 Multicast-Group-G1 的成员,则在本地启动定时器 Timer-G1(缺省情况下,定时器的范围为 0s~10s 间的随机值)。首个定时器超时的组成员,将发送针对该组的报告报文。

IGMP Querier 接收到 Membership-1 的报告报文后,了解到在本网段的 Multicast-Group-G1 中存在成员,则由生成 IGMP Group Table 与 IGMP Route Table((*, G),“*”代表任意组播源)。而后在网络中一旦有组播组 Multicast-Group-G1 的数据到达路由器,将向该网段转发。

抑制 Membership Report 报文(定时器)

1)Membership-1 和 Membership-2 是 Multicast-Group-G1 的成员,当收到 Membership Query 报文后,则分别在本地启动 Timer-G1 定时器。
2)假设 Membership-1 上的 Timer-G1 先超时,则 Membership-1 向该网段发送目的地址为 G1 的报告报文。
3)也想加入 Multicast-Group-G1 的 Membership-2 收到此报告报文,则停止 Timer-G1 定时器,不再发送针对 G1 的 Report 报文;

通过这种即使,这样 Report 报文被抑制,能够减少网段上的流量。

注意事项:实际场景,PC 的抑制机制不一定生效,取决于终端的实现方式;

组成员离组机制

IGMPv1 没有专门定义离开组消息,

1)当所有组播组成员离开组播组时,将不会存在响应 Query 报文的设备;
2)IGMP Querier 不会收到特定组成员的报告报文,则在一定时间(缺省值为130s,2 * 查询时间 + 10s)后,删除特定组所对应的组播转发表项。