IGMPv2的工作原理

佚名 举报 | 买帖

问题描述

IGMPv1 有一定缺陷:
1)IGMPv1离组使用超时机制,组成员只能静默离组。在未超时的时间内,组播流量依然会被组播路由器转发。
2)IGMPv1 IGMP Querier 选举必须要依赖PIM协议,导致 IGMP Querier 选举不够灵活。

解决方案

IGMPv2 vs. IGMP v1

lIfE54.zhILi123.com

在保持对 IGMPv1 兼容的同时,IGMPv2 还改善 IGMPv1 的缺陷。

lIfE54.zhILi123.com

相同点:
1)协议兼容:IGMPv2 能与 IGMPv1 兼容。
2)加组机制:IGMPv2 组成员加组机制与 IGMPv1 基本相同

改进点:
1)选举机制:IGMPv2 增加 IGMP Querier 选举机制;
2)离组机制:IGMPv2 增加 离开组机制;

查询器选举机制

与 IGMPv1 比,IGMPv2 IGMP Querier 选举机制有较大改进,IGMPv2 使用独立的 IGMP Querier 选举机制。

当网络上存在多个 Multicast Router 时,IP Address 最小的路由器成为 IGMP Querier 角色:
1)初始状态都认为自己是 IGMP Querier ,并且都会发送 IGMP 普遍组查询报文;
2)当收到对端报文后,接口 IP Address 最小的 Multicast Router 自动成为 IGMP Querier ;
3)非 IGMP Querier 上都会启动一个定时器(即其他 IGMP Querier 存在时间定时器 Other Querier Present Timer,默认 120s)。在该定时器超时前,如果收到来自 IGMP Querier 的 Query 报文,则重置该定时器;否则认为原 IGMP Querier 失效,并发起新的 IGMP Querier 选举过程。

组成员加组机制

IGMPv2 组成员加组机制与 IGMPv1 一致,不再赘述。

组成员探测机制

在 IGMPv2 中,引入组成员离组机制,所以无需特意来探测组内是否存在成员。

组成员离组机制

新增两种报文

为了改善组成员离开机制,IGMPv2 新增 Leave Group 报文与 Group-Specific Query 报文,来加速感知 IGMPv2 组成员离开。

1)成员离开报文(Leave Group):成员离开组播组时主动向 IGMP Querier 发送该报文,以宣告自己离开某个组播组。成员离开报文目的地址为 224.0.0.2(仅 IGMP Querier 处理)。

2)特定组查询报文(Group-Specific Query):IGMP Querier 向共享网段内指定组播组发送的 Query 报文,用于查询该组播组是否存在成员。特定组查询报文目的地址为所查询组播组的组地址。(IGMPv1 中,Query 报文会查询所有组,而无法查询特定组)

IGMPv2 对 Query 报文格式进行改进,添加 Max Response Time(最大响应时间)字段。此字段取值可以通过命令配置,用于控制成员对于查询报文的响应速度(终端将生成 Max Response Time 以内的随机数,而非 IGMPv1 中默认 10s 时间,这实现根据需要来控制 Report 报文的响应速度)。

离组机制细节

当组成员离组时,组播组成员向本地网段内的所有组播路由器(DST-IP-Address 224.0.0.2)发送针对组 G1 的 Leave Group 报文:
1) IGMP Querier 收到离开报文,会发送针对组G1的特定组查询报文。发送间隔和发送次数可以通过命令配置,缺省情况下每隔1秒发送一次,共发送两次。同时 IGMP Querier 启动组成员关系定时器(Timer-Membership=发送间隔x发送次数)。
—- 如果该网段内还存在组G1的其他成员,这些成员在收到 IGMP Querier 发送的特定组查询报文后,会立即发送针对组G1的报告报文(默认每隔1秒发送一次,共发送两次,所以终端设备要立即响应,而不能使用默认的 Max Response Time 中设置的时间)。 IGMP Querier 收到针对组G1的报告报文后将继续维护该组成员关系。
—- 如果该网段内不存在组G1的其他成员, IGMP Querier 将不会收到针对组G1的报告报文。在Timer-Membership超时后, IGMP Querier 将删除(*,G1)对应的IGMP组表项。当有组G1的组播数据到达 IGMP Querier 时, IGMP Querier 将不会向下游转发。

设备厂商的实现可能有所不同:
1)如果 Last Report 未离组,那么其他终端设备离组时,IGMP Querier 不会发送特定组查询报文。

补充说明

lIfE54.zhILi123.com

1)如果 Last Report 直接拔出网线,即没有及时发送 Leave 报文。只能等待时间超时(130s),

The post 「IGMPv2」- 工作原理 appeared first on K4NZ BLOG.