一、IGMPv1的原理简介
前面我们大致了解了IGMP用于在连接组播组成员的组播路由器总通过交互IGMP报文生成IGMP组表项和IGMP路由表项。IGMP报文封装在IP报文中。到目前为止,IGMP有三个版本:IGMPv1、IGMPv2、IGMPv3。
今天主要学习IGMPv1的作用和工作原理。IGMPv1主要基于查询和响应机制完成组播组管理。
查询和响应机制由两种报文实现:
-
普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于查询哪些组播组存在成员。 -
成员关系报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。
由于IGMP报文是组播报文,因此一个多路访问网络里只需要一个组播路由器发送查询报文即可,该组播路由器被称为IGMP查询器(Querier)。只有查询器会发送查询报文。
就是类似于OSPF的DR机制,选择一个IGMP查询器,向广播网络发送查询报文,组播组成员回复成员关系报告,这样查询器就能知道网络中需要加入哪些组播组以及有哪些组播组成员。
1.1 IGMPv1报文格式
IGMPv1普遍组查询报文与成员关系报告报文均为组播报文,目的地址为224.0.0.1。IGMPv1普遍组查询报文与成员关系报告报文格式类似,其中最主要的是Version,Type,Group Address这三个字段:
字段 | 说明 |
---|---|
Version | IGMP版本,值为1 |
Type | 报文类型。该字段有以下两种取值:0x1:表示普遍组查询报文0x2:表示成员关系报告报文 |
Group Address | 组播组地址。在普遍组查询报文中,该字段设为0;在成员关系报告报文中,该字段为成员加入的组播组地址 |
1.2 IGMPv1组成员加组机制
通过普遍组查询报文与成员关系报告报文,IGMP查询器可以了解到该网段内哪些组播组存在成员。IGMPv1组成员加组基本流程如下:
IGMPv1普遍组查询和响应过程如下:
-
IGMP查询器发送目的地址为 224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。普遍组查询报文是周期性发送的,发送周期可以通过命令配置, 缺省情况下每隔60秒发送一次。组成员1和组成员2是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。 -
第一个定时器超时的组成员发送针对该组的报告报文。 -
IGMP查询器接收到组播组成员1的报告报文后,了解到本网段内存在组播组G1的成员,则由生成IGMP组表项与( ,G1)IGMP路由表项,“”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。
概述:IGMP查询器缺省60秒发送一次普遍组查询报文,如果有多个组成员加入同一个组,则通过Timer-G1定时器,先超时的组成员回应组成员关系报文,可以有效抑制组播泛洪和冗余。
成员关系报告报文抑制机制:
-
普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。组成员1和组成员2是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。 -
假设组成员1上的Timer-G1首先超时,组成员1向该网段发送目的地址为G1的报告报文。也想加入组G1的组成员2收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。
1.3 IGMPV1查询器选举
普遍组查询是组播报文,因此同一网段内只需要一台查询器即可查询所有组成员的加组信息。
IGMPv1没有基于IGMP的查询器选举机制,所以需要依赖组播路由协议(PIM)进行IGMP查询器选举。
IGMPv1将组播路由协议(PIM)选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询。
查询器和非查询器均能收到成员关系报告(目的地址224.0.0.1),因此均能形成IGMP路由表与IGMP组表项。
简单说就是IGMPv1没有定义选择查询器机制,需要依赖PIM协议,后续会学习到,先了解有这个概念即可。查询器会发送查询报文,非查询器不会发送查询报文,但都能收到成员关系报告报文,形成IGMP表项。
1.4 IGMPV1组成员离组机制
有加入就有退出机制。IGMPv1没有专门定义离开组消息,当组播组成员离开组播组时,将不会再对普遍组查询报文做出回应。
当网段内不存在特定组的组成员,IGMP查询器不会收到特定组成员的报告报文,则在一定时间(缺省值为130s)后,删除特定组所对应的组播转发表项。
总结:组播网络中通过PIM协议选举出查询器用于发送普遍组查询报文,60/s一次,目的地址为224.0.0.1,组成员接收到普遍组查询报文会进行回应,组成员离组在130/s后进行对应表项删除。
如果对文章感兴趣欢迎微信搜索公众号:不喜欢热闹的孩子
本文由 mdnice 多平台发布