【数通面试私房菜之组播专题】第一期: IGMPv1详解

IGMP定义


IGMP是Internet Group Management Protocol的简称,又被称为互联网组管理协议,是TCP/IP协议族中负责IPv4组播成员管理的协议。IGMP用来在接收者主机和与其直接相邻的组播路由器之间建立和维护组播组成员关系。IGMP通过在接收者主机和组播路由器之间交互IGMP报文实现组成员管理功能,IGMP报文封装在IP报文中。

 

IGMPv1报文


IGMPv1包括两种类型的报文:


Ø 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播组存在成员。


Ø 成员报告报文(Report):主机向查询器发送的报告报文,用于申请加入某个组播组或者应答查询报文。

扫描二维码关注公众号,回复: 11129853 查看本文章


IGMPv1的文格式如下所示:

 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


普遍组查询和响应机制


组查询和响应,IGMP查询器可以了解到该网段内哪些组播组存在成员。如下图所示:

 

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


a) IGMP查询器发送目的地址为224.0.0.1的普遍组查询报文;收到该查询报文的组成员启动定时器。HostA和HostB是组播组G1的成员,则在本地启动定时器Timer-G1。缺省情况下,定时器的范围为0~10秒之间的随机值。


b) 第一个定时器超时的组成员发送针对该组的报告报文。假设HostA上的Timer-G1首先超时,HostA向该网段发送目的地址为G1的报告报文。也想加入组G1的HostB收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。


c) IGMP查询器接收到HostA的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。

 

新组成员加入机制

 

机HostC加入组播组G2的过程如下:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1


a) 主机HostC不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。


b) IGMP查询器接收到HostC的报告报文后,了解到本网段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。

 

组成员离开机制


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


Ø 当Client离开组播组时,将不会再对普遍组查询报文做出回应。假设所有Client退出组播组,Client将不再对普遍组查询报文进行响应。由于网段上不存在组播组的其他成员,RTA不会收到任何成员报告报文,则在一定时间(130秒=120*2+10,即组成员关系超时时间=IGMP普遍查询消息发送间隔 × 健壮系数 + 最大查询响应时间)后,删除对应的组播转发项。


猜你喜欢

转载自blog.51cto.com/14417173/2490335