IP组播协议-IGMPv1工作原理
01
IGMPv1报文
近年来,随着Internet的迅速普及和快速发展,在Internet上产生了许多新的应用,其中IP组播技术为多数研究热点,其独特的优越性在于,在组播网络中,即使用户数量成倍增长,主干带宽不需要随之增加。这个优点使它成为当前网络技术中的研究热点之一。
本期小普主要介绍IP组播协议-IGMPv1工作原理,希望通过本文能使读者对组播技术有简单的了解。
而想要理解IGMPv1的工作原理,首先要了解IGMPv1有哪些的报文类型,IGMPv1有以下两种类型的报文,分别是:
1、 普遍组查询报文(General Query):查询器向共享网络上所有主机和路由器发送的查询报文,用于了解哪些组播成员存在。
(Report):主机向查询器发送的报告报文,用于申请加入某个组播组成员或者应答。
IGMPv1的报文格式:
以下是IGMPv1报文的字段说明:
Version——GIMP版本,值为1
Type——报文类型:0x1(表示普遍组查询报文);0x2(表示成员报告报文)
Unused——在IGMPv1当中,该字段在发送时被设为0,并在接收时被忽略
Checksum——IGMP报文的校验和:校验和是IGMP报文长度(即IP报文的整个有效负载)的16位检测,表示IGMP信息补码之和的补码。CheckSum字段在进行校验计算时设为0.当发送报文时,必须计算校验和并插入到CheckSum字段中去。当接收报文时,校验和必须在处理该报文之前进行校验。
Group Address——组播组地址:在普遍组查询报文中,该字段设为0;在成员报告报文中,该字段为成员计入的组播组地址
02
IGMPv1工作机制
IGMPv1协议主要基于查询和响应机制完成组播组管理。当一个网段内有多个组播路由器时,由于他们都可以接收到主机发送的成员报告报文,因此只需要选取其中一台组播路由器发送查询报文就足够了,该组播路由器称为IGMP查询器(Querier)。在IGMPv1中,由组播路由器PIM选举出唯一的组播信息转发者(Assert Winner或DR)作为IGMPv1的查询器,负责该网段的组成员关系查询。
IGMPv1的工作机制可以分为:普遍组查询和响应机制、新组成员计入机制和组成员离开机制。
1、 普遍组查询和响应机制
通过普遍组查询和响应,IGMP查询器可以了解到该网段内有哪些组播存在成员。
如上图,普遍组查询和响应过程如下:
第一步:
IGMP查询器发送目的地址224.0.0.1(表示同一网段内所有主机和路由器)的普遍组查询报文;收到该查询报文的组成员启动定时器。普遍组查询报文是周期性发送的,发送周期可以通过命令配置,缺省情况下每隔60秒发送一次。例如PC8和PC9是组播组G1的成员,则在本地启动定时器Time-G1,缺省情况下,定时器的范围为0~10秒之间的随机值。
第二步:
第一个定时器超时的组成员发送针对该组的报告报文。假设PC8的Timer-G1首先超时,PC8向该网段发送目的地址为G1的报告报文。也想加入组G1的PC9收到此报告报文,则停止定时器Timer-G1,不再发送针对G1的报告报文。这样报告报文被抑制,可以减少网段上的流量。
第三步:
IGMP查询组接收到PC8的报告报文后,了解到本网段内存在组播组G1的成员,则由组播路由协议生成(*,G1)组播转发表项,“*”代表任意组播源。网络中一旦有组播组G1的数据到达路由器,将向该网段转发。
2、 新成员加入机制
如上图,HostC加入组播组G2的过程如下:
1、 主机C不等待普遍组查询报文的到来,主动发送针对G2的报告报文以声明加入。
2、 IGMP查询器接收到C的报告报文后,了解到本地段内出现了组播组G2的成员,则生成组播转发项(*,G2)。网络中一旦有G2的数据到达路由器,将向该网段转发。
3、 组成员离开机制
IGMPv1没有专门定义离开组的报文。主机离开组播组后,便不会再对普遍组查询报文作出回应。
假设PC8想退出组播组G1
PC8收到IGMP查询器发送的普遍组查询报文时,不再发送针对G1的报告报文。由于网段内还存在G1组成员PC9,PC9会向IGMP查询器发送针对G1的报告报文,因此IGMP查询器感知不到PC8的离开。
假设PC10向退出组播组G2
PC10收到IGMP查询器发送的普遍组查询报文时,不再发送针对G2的报告报文。由于网段内不存在组G2的其他成员,IGMP查询器不会收到G2组成员的报告报文,则在一定时间(缺省值为130秒)后,删除G2所对应的组播转发表项。
睿江云官网链接:https://www.eflycloud.com/home?from=RJ0032