zl程序教程

您现在的位置是:首页 >  其他

当前栏目

IGMP协议 v1-v3版本简介

协议 版本 简介 V3 v1
2023-09-14 09:01:45 时间

本文章主要介绍了IGMP协议的实现过程以及从v1版本到v3版本的演进,阅读本文,您需要具有IGMP协议、组播的一些基础知识。
IGMP(Internet Group Management Protocol)是组播的重要协议之一,主要运行于最后一跳路由器和组播接受者之间。目前的IGMP协议共有3个版本——v1、v2、v3。新的版本对老的版本做出了一些改进,同时兼容老的版本。(注:这里的兼容只允许最后一跳路由器运行高版本的协议而组播接受这运行低版本的协议)

一、IGMPv1简介

IGMPv1版本的IGMP协议是一个比较老的协议了,目前基本上已经停用,IGMPv1版本定义了成员关系查询成员关系报告两种报文。
组播接受者在加入一个组播组后,需要使用成员关系报告报文通知最后一跳路由器加组,最后一跳路由器需要使用成员关系查询报文来向下游询问是否有组播组成员,如果网络中存在组播组成员,那么该组播组成员会恢复成员关系报告报文,如果最后一跳路由器收不到成员关系报告报文,则证明下游网络中已经没有加入该组播组的接受者,因此停止向下游发送组播流量,同时也会进行修剪等操作。
通过以上两种报文,IGMP完成最基本的任务,可以实现由最后一跳路由器到组播接受者之间的信息传递功能。

二、IGMPv2改进

虽然IGMPv1实现了IGMP协议的最基本操作,但是其实IGMPv1协议还存在有很多不足的地方,这些不足很多都在IGMPv2版本中得到了改进。
IGMP不足主要有以下几点:
①当一个组播接受者离开组播组后,直到最后一跳路由器发起IGMP查询之前,最后一跳路由器都会想网络内发送组播流量,从而造成不必要的带宽浪费。
②当最后一跳路由器发送成员关系查询报文后,底下所有的组播接受者都会发送成员关系报告报文,也产生了一些不必要的数据。(尽管这一些数据很少)
③当同时又多个路由器连接进入一个网络后,IGMPv2定义了查询者,所有的组播路由器会选举一个成为查询者,只有查询者才会向网络内发送组播流量,其他路由器会监听查询器的状态,随时准备在查询机宕机后接替其工作。(其实IGMPv1版本虽然没有定义查询器的概念,但是由于PIM会在该状态下选举一个DP,实际上代替了查询器的工作,可以起到和查询器相同的效果)
针对上述问题,IGMPv2主要进行了如下改进:
①IGMPv2定义了离组报文,当一个组播接受者要离开一个组播组时,会发送一个离组报文告知组播接受者,组播接受在时候到这个离组报文后,就明白下面网络中有一个组播接受者已经离开了该组,如果组播路由器认为该组播组内没有其他的组播接受者,并且发送成员关系查询报文确认后,就会停止发送该组播组的组播流量。
IGMPv2报文同时对IGMP成员关系查询报文进行了改进,一方面,将成员关系查询报文分成了常规查询特定组查询两种,另一方面在成员关系查询报文中定义了最大响应时间。常规查询可以查询所有组播组的组播接受者,而特定组查询可以查询特定组播组的组播接受者,这样最后一跳路由器就可以更加灵活。同时,组播组成员在收到含有最大响应时间的报文后,就会在自己本地设置一个计时器,当到最大响应时间后,会主动发送成员关系报告报文,但是如果还没到最大响应时间,收到其他同组组播接受者的成员关系报告报文,该设备就会重置计时器,也在一定程度上减少了网络内的组播流量。

三、IGMPv3改进

如果说IGMPv2相对于IGMPv1,主要是消除了组播实现的不必要流量的话。那么IGMPv3相对于IGMPv2主要是增加了一些功能,使得组播功能的实现更加的灵活。
IGMPv3主要是定义了SSM(Source-Specific Multicast,特定源组播)模式。使得组播接受者可以选择接受什么组播源发送的组播或者说不接受什么组播源发送的组播流量。
注:
①与SSM模式相对应的是ASM(Any-Source Multicast)模式,在ASM模式中,组播组成员无法对组播源流量进行选择。IGMPv1和IGMPv2主要运行的就是这种模式。
②其实IGMPv1和IGMPv2也可以运行SSM模式,但是需要其他配合手段,不能单单依靠IGMP协议来实现。
原创不易,转载请说明出处,原文链接:https://blog.csdn.net/weixin_40228200/article/details/118162571