目录

一、前言

二、IGMP基本原理

(一)IGMP 定义

(二)IGMP 基本工作机制

(三)IGMPv1、v2、v3的区别

三、IGMPv1

(一)报文格式

(二)组成员加入

(三)查询与响应、响应抑制

(四)组成员离开

四、IGMPv2

(一)报文格式

(二)组成员加入

(三)查询与响应、响应抑制

(四)查询器选举

(五)组成员离开

(六)与IGMPv1兼容问题

五、IGMPv3

(一)IGMPv3 报文

(二)IGMPv3 工作机制

六、IGMP Snooping

(一)原理及作用

(二)工作机制


一、前言

Internet 组管理协议称为IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。

IGMP包含了IGMPv1、IGMPv2、IGMPv3三个版本,目前正处于由IGMPv2向IGMPv3的过渡阶段。本篇将按照IGMP基本原理、IGMP三个版本、IGMP Snooping 几部分对IGMP协议进行介绍。

二、IGMP基本原理

(一)IGMP 定义

IGMP是“互联网管理协议”的简称,负责TCP/IP协议栈中的IPv4组播组成员注册的管理,IGMP协议运行在接收者主机和与其直接相邻的组播路由器之间,用于建立和维护成员关系

(二)IGMP 基本工作机制

不同的 IGMP 协议版本的工作机制不同,但其基本工作机制大体如下:

① 接收者主机向所在的共享网络报告组成员关系;

② 查询器周期性地向该共享网段发送组成员查询消息;

③ 接收者主机接收到查询消息后进行响应以报告组成员关系;

④ 网段中的组播路由器依据接收到的响应来刷新组成员的存在关系。

(三)IGMPv1、v2、v3的区别

        IGMP的新版本较老一版本会增加一定的主要功能,列表如下:

IGMP协议 各版本协议的区别(新版本增加的功能)
IGMPv1 定义了基本的组成员查询和报告机制
IGMPv2 添加了查询者选举和组成员
IGMPv3 成员可以指定接收或不接收来自某些源的报文

        IGMP各版本的功能比较如下: 

三、IGMPv1

(一)报文格式

IGMPv1报文包括普遍组查询报文(成员关系查询报文)和成员报告(成员关系报告)报文,其格式如下:

 Version(IGMP版本)

在IGMPv1中,该值为1;

Type(报文类型)

0x11表示普遍组查询报文;0x12表示成员报告报文;

Checksum(IGMP报文校验和)

是对IGMP报文长度(IP报文的整个有效负载)的16位检测;

Group Adress(组播组地址)

在0x1中,该字段为0且被忽略;在0x2中,该字段为成员加入的组播组地址。

(二)组成员加入

组成员加入过程示意如下:

① 主机加入组播组时,会向该组播组中发送成员关系报告报文,表示该主机希望加入组播组。

② 当IGMP查询器接收到来自PC的成员关系报告报文后,了解到本地出现了组播组的新成员,则生成相应的转发表项,当有向该组的组播数据时,则根据该表项转发。

(三)查询与响应、响应抑制

查询与相应、相应抑制机制的过程示意如下:

① IGMP向普遍查询组的IP地址(224.0.0.1)周期性地发送普遍组查询报文

收到普遍组查询报文的主机会开启定时器,定时器首先超时的主机会向普遍查询组的IP地址(224.0.0.1)发送成员关系报告

(水平线以上是查询与响应机制)


(水平线以下是响应抑制机制)

③ 对该普遍查询组的IP地址(224.0.0.1)进行监听其他主机收到已经由其他主机发送的成员关系报告后,抑制自身的成员关系报告发送。

(四)组成员离开

IGMPv1中组成员离开的过程示意如下:

① IGMPv1中,主机离开不会发送任何报告,直接离开;

② 当IGMP查询器连续三个查询周期没有收到离开的主机发送的成员关系报告时,则认为该主机不存在,删除该组播成员。

四、IGMPv2

IGMPv2与IGMPv1相比,增加了查询者选举和组成员离开机制。

(一)报文格式

IGMPv2包括路由器查询报文(包括普遍组查询报文和特定组查询报文)、成员报告报文、成员离开报文,其报文格式如下:

Type(报文类型):

0x11表示查询报文,包括普遍组查询报文(常规查询信息报文)和特定组查询报文;0x12表示IGMPv1成员(关系)报告报文;0x16表示IGMPv2成员(关系)报告报文;0x17表示成员离开报文;

Max Resp Time(最大响应时间):

仅存在于IGMPv2和IGMPv3中,表示成员主机收到IGMP查询报文作出回应的最大相应时间;仅在IGMPv2查询报文中有效;在普遍组查询报文中,默认值是10s;在特定组查询报文中,默认值是1s;

Checksum(IGMP报文校验和)

是对IGMP报文长度(IP报文的整个有效负载)的16位检测;

Group Adress(组播组地址)

在普遍组查询报文中,该字段为0;在特定组查询报文中,该字段为要查询的组播地址;在成员报告报文和离开报文中,该字段为成员要加入或离开的组播组地址。

(二)组成员加入

组成员加入过程示意如下:

① 主机加入组播组时,会向该组播组中发送成员关系报告报文,表示该主机希望加入组播组。

② 当IGMP查询器接收到来自PC的成员关系报告报文后,了解到本地出现了组播组的新成员,则生成相应的转发表项,当有向该组的组播数据时,则根据该表项转发。

(三)查询与响应、响应抑制

查询与相应、相应抑制机制的过程示意如下:

① IGMP向普遍查询组的IP地址(224.0.0.1)周期性地发送普遍组查询报文

收到普遍组查询报文的主机会开启定时器,定时器首先超时的主机会向普遍查询组的IP地址(224.0.0.1)发送成员关系报告

(水平线以上是查询与响应机制)


(水平线以下是响应抑制机制)

③ 对该普遍查询组的IP地址(224.0.0.1)进行监听其他主机收到已经由其他主机发送的成员关系报告后,抑制自身的成员关系报告发送。

(四)查询器选举

IGMPv2相比IGMPv1增加了查询器的选举机制,其示意如下:

当路由器启动时,会主动向普遍查询组的IP地址(224.0.0.1)发送普遍查询报文

当其他路由器收到该普遍查询报文后,会比较信息的源IP地址和接口IP地址

③ IP地址小的路由器成为IGMPv2的查询器

非查询器的路由器也会收到来自查询器的普遍查询报文当连续125秒(默认,可改)没有收到时,该路由器自动成为查询器。

(五)组成员离开

与IGMPv1相比,IGMPv2增加了离开组报告,使主机在离开时告知路由器,进而使得最后一个成员离开组时的离网延迟减少;其过程示意如下:

当主机离开组播组时,会向224.0.0.2发送离开组地址报文

查询器收到该离开组报文时,会向其原所在的组播组发送特定组查询以确定该组播组中是否还有其他主机;

若该组播组中有其他主机,则其他主机会在收到特定组查询报文后发送成员关系报告;若该组播组中没有其他主机,则查询器两次特定组查询没有收到成员关系报告时认为没有该组播组及组播成员,将该组播组删除。

(六)与IGMPv1兼容问题

① 同时存在IGMPv1和IGMPv2的主机

     IGMPv2主机会将IGMPv1和IGMPv2的成员关系报告报文都视为IGMPv2(即接收到IGMPv2报告后也会抑制自己);IGMPv1主机会忽略IGMPv2消息(即仍然会在延时定时器到期时发送报告);

② 同时存在IGMPv1路由器和IGMPv2路由器

IGMPv1路由器将不参与查询路由器的选举或将IGMPv2路由器改为IGMPv1路由器;

② IGMPv1主机和IGMPv2路由器

由于IGMPv1主机只能发送一个IGMPv1的报告,因此IGMPv2路由器会设置一个与组相关(该组是特定的、可以同时存在IGMPv1和IGMPv2的组)的并考虑到IGMPv1主机的倒数计时器,用于通知局域网有一个版本1的主机是组成员

③ IGMPv2主机和IGMPv1路由器

       IGMPv1路由器会忽略IGMPv2报告并发送IGMPv1查询,主机接收到IGMPv1查询后会用IGMPv1报告回应。

五、IGMPv3

IGMPv3目前尚未得到广泛支持,它在IGMPv2的基础上增加了对“源过滤”功能的支持,服务于SSM模型,使得成员可以指定接收或不接收来自某些源的报文;

(一)IGMPv3 报文

IGMPv3 本身只有两种报文类型,分别为类型为 0x11 的查询报文和类型为 0x22 的成员报告报文,但出于兼容性考虑,它支持并识别其他三种以前版本的报文,分别是:

类型为 0x12 的IGMPv1 成员报告报文;类型为 0x16 的IGMPv2成员报告报文;类型为 0x17 的 IGMPv2 离开组报文。

① IGMPv3的查询报文分为普遍组查询、特定组查询及特定组及特定源查询,其格式如下:

Type(报文类型):

        0x11代表查询报文。

Max Resp Time(最大响应时间):

        仅存在于IGMPv2和IGMPv3中,表示成员主机收到IGMP查询报文作出回应的最大相应时间。

Checksum(IGMP报文校验和)

是对IGMP报文长度(IP报文的整个有效负载)的16位检测。

Group Adress(组播组地址)

在普遍组查询报文中,该字段为0;在特定组查询报文中,该字段为要查询的组播地址;在成员报告报文和离开报文中,该字段为成员要加入或离开的组播组地址。

Resv(保留字段):

        发送报文时该字段设为0;接收报文时,对该字段不处理。

S(标志位):

该比特位为1时,所有收到此查询报文的其他路由器不启动定时器刷新过程,但是此查询报文并不抑制查询者选举过程和路由器的主机侧处理过程;默认未置位。

QRV(查询者向网络通告的健壮系数):

        此参数可使查询者使用自己的健壮系统同步其他组播路由器的健壮系数;其他路由器接收到查询报文时,如果发现该字段非0,则将自己的健壮系数调整为该字段的值;如果发现该字段为0,则不做处理。默认健壮系数值为2。

QQIC(IGMP查询者的查询间隔):

        非查询者收到查询报文时,如果发现该字段非0,则将自己的查询间隔参数调整为该字段的值:如果发现该字段为0,则不做处理。默认值为60。

Number of Sources(报文中包含的组播源的数量):

        对于普遍组查询报文和特定组查询报文,该字段为0;对于特定源组查询报文,该字段非0。

Source Address(组播源地址):

        其数量受到Number of Sources字段值大小的限制。

② IGMPv3的报告报文格式如下 :      

区别于IGMPv1及v2报告报文,IGMPv3的报告报文使用组记录来表达组和源的对应关系,并且与IGMPv1、v2不同,IGMPv3的一份主机通告的成员报告报文中可携带多个组记录,可同时通告给多个组及源的对应给组播路由器,从而减少了IGMPv3报文的数量。

Type(报文类型):

        0x22代表成员报告报文。

Resv(保留字段):

        发送报文时该字段设为0;接收报文时,对该字段不处理。

Checksum(IGMP报文校验和)

是对IGMP报文长度(IP报文的整个有效负载)的16位检测。

Number of Group Records(报文中包含的组记录的数量):

        报文中包含的组记录的数量。

Group Record(组记录):

每个组记录是一块字域, 包含发送者接口当前所要表达的成员关系信息。

        IGMPv3 中组记录的格式如下:

        组记录的字段说明如下: 

        

Record Type

“Group Record”

消息类型

  • MODE_IS_INCLUDE:接收源地址列表包含的源发往该组的组播数据。如果指定源地址列表为空,该消息为无效消息。
  • MODE_IS_EXCLUDE:不接收源地址列表包含的源发往该组的组播数据。
  • CHANGE_TO_INCLUDE_MODE:过滤模式由EXCLUDE转换到INCLUDE,接收源地址列表包含的新组播源发往该组播组的数据。如果指定源地址列表为空,主机离开组播组。
  • CHANGE_TO_EXCLUDE_MODE:过滤模式由INCLUDE转换到EXCLUDE,拒绝源地址列表中新组播源发往该组的组播数据。
  • ALLOW_NEW_SOURCES:表示在现有的基础上,需要接收源地址列表包含的源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则向现有源列表中添加这些组播源;如果当前对应关系为EXCLUDE,则从现有阻塞源列表中删除这些组播源。
  • BLOCK_OLD_SOURCES:表示在现有的基础上,不再接收从源地址列表包含的源组播源发往该组播组的组播数据。如果当前对应关系为INCLUDE,则从现有源列表中删除这些组播源;如果当前对应关系为EXCLUDE,则向现有源列表中添加这些组播源。

Aux Data Len

辅助数据长度

辅助数据长度含有在组记录中的辅助数据的实际长度,其单位是32bit字。它有可能是0,这就表示辅助数据不存在。

Number of Sources

源数量

源数量(N)字段标明在组记录中存在多少源地址。

Multicast Address

组播组地址

多播地址字段标明该组记录从属的多播IP地址。

Source Address

组播源地址

源地址[i]字段是一个数组,含有n个单播地址。n就是该记录的源数量(N)字段的值。

Additional Data

附加数据

如果收到的报告中的IP首部的数据报长度字段标明在最后一个组记录后面有附加的数据存在。IGMPv3的实现必须在计算和验证校验和的时候包含这些附加数据,但是同时必须忽略这些附加数据。当发送一个报告时,一个IGMPv3的实现在最后一个组记录后面不能包含附加数据。

(二)IGMPv3 工作机制

IGMPv3的查询是IGMPv2的基础上增加了主机包含希望或拒绝某些组的报告并且删除了抑制机制,其示意如下:

① IGMP查询器普遍查询组的IP地址(224.0.0.1)周期性地发送普遍组查询报文;

② 每个主机都向普遍查询组的IP地址(224.0.0.1)发送成员关系报告报文,报文包括了主机希望加入或拒绝某些组播组的信息

③ IGMP查询器收到这些成员关系报告报文后,根据其中希望或拒绝某些组播组的信息进行组播发送时的操作。

此外,IGMPv3中组成员的加入与离开与IGMPv2基本一致,不再赘述。

六、IGMP Snooping

(一)原理及作用

IGMP Snooping 用于解决组播报文在二层(数据链路层)的广播问题(将对全部设备的广播转化成对特定设备的组播,进而降低流量),用于管理和控制二层组播组,其通过监听主机发送的IGMP 报文,建立组播MAC地址表

(二)工作机制

IGMP Snooping 的工作机制与IGMPv2的工作机制基本一致(但是存在于二层、缺少了报文的抑制功能),其工作机制示意如下:

① 运行IGMP Snooping 的二层交换机通过侦听组播路由器和主机之间的IGMP协议,建立二层的组播转发表

② 当交换机转发组播报文时,报文按照交换机组播转发表转发

③ 如果没有对应的组播转发表项,则泛洪到所有端口否则,仅泛洪到有接收者的端口上去。

R&S,数通HCIE|IGMP 协议相关推荐

  1. R&S,数通HCIE|IPv6协议(二)

    目录 一.前言 二.IPv6的基础协议 (一)ICMPv6协议 (二)NDP协议 (1)地址解析 (2)邻居状态跟踪 (3)DAD(重复地址检测) (4)无状态自动配置 (5)路由器发现 (6)ICM ...

  2. 数通HCIE心路历程

    数通HCIE心路历程 2019年12月9号,对于我来说注定是意义非凡的一天.那一天我的手机收到了来自华为的邮件,上面写着"恭喜您通过了2019年12月5日的HCIE-R&S认证考试, ...

  3. 学员心得 | 数通HCIE新版实验通关指南

    大家好,我是誉天数通的阮同学.因为被网络大神阮老师的渊博幽默所吸引,在誉天报名了数通HCIE课程.不久前刚刚通过考试,拿到了HCIE认证. 不得不说在誉天报名是一个非常明智正确的选择,誉天的课程安排. ...

  4. HCIE面试最新实况!一波三折的数通HCIE之旅

    大家好,我是誉天的郭同学~ 9月底通过了数通HCIE的认证,给大家分享一下我"一波三折"的HCIE认证之旅~ 我2017年毕业,非通信行业.毕业后在一家通信类的小公司就职打杂,因为 ...

  5. R&S,数通HCIE|MPLS虚拟专用网跨域(一)

    一.前言 MPLS虚拟专用网是指采用MPLS(多协议标记转换)技术在公网上构建企业IP专网,实现跨地域.安全.高速.可靠的数据.语音.图像多业务通信,并结合差别服务.流量工程等相关技术,将公众网可靠的 ...

  6. 数通技术-网络层协议及IP编址

    网络层协议 网络层经常被称为IP层.但网络层协议并不只是IP协议,还包括ICMP协议IPX协议等. IP协议 作用 为网络层的设备提供逻辑地址 负责数据包的寻址和转发 版本 IPv4 IPv6 数据封 ...

  7. 誉天教育丨跨行学数通HCIE之路

    竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生 ---- 跨行学HCIE之路 对于一个外行来说,学习HCIE并不是一件轻松的事,甚至可以说是一件痛苦的事.所谓万事开头难,不成功便成仁,对于非计算机专业的我来说, ...

  8. 【数通学员心得】成功没有捷径,HCIE也没有侥幸

    "HCIE没有捷径可走,想要通过认证,就只能踏踏实实.一丝不苟地去锤炼出真本事." 本期供稿:誉天李同学 整理编辑:小誉 大家好,我是誉天数通的李同学. 2020年的毕业季,我离开 ...

  9. 华为HCIE 数通认证 基础必学GVRP协议是什么

    华为HCIE 数通认证 基础必学GVRP协议是什么GVRP VLAN (GARP VLAN Registration Protocol,GARP VLAN注册协议)注册协议是一种通用属性注册协议的应用 ...

最新文章

  1. 给 Python 初学者推荐的 IDE 哦!
  2. 测量一组类下三角矩阵的质量和频率n=m+1
  3. python列表实现原理_Python动态类型实现原理及过程解析
  4. SpringSecurity权限控制之异常处理方式三
  5. XSS跨站脚本(web应用)——XSS跨站脚本防御(三)
  6. oracle 增量设为3 循环_Oracle 差异性增量 和 累计增量 原理(转)
  7. oracle 字段全大写,Oracle如何批量将表中字段名全转换为大写(利用简单存储过程)...
  8. Leetcode744.Find Smallest Letter Greater Than Target寻找比目标字母大的最小字母
  9. 建立一个lstm_基于LSTM的双色球预测(一)
  10. 十三种技术文档模板_帮助企业制作帮助文档的6大“黑科技”工具!
  11. 拓端tecdat|Python贝叶斯回归分析住房负担能力数据集
  12. 计算机辅助设计1(PS)期末考核试题,福师《计算机辅助设计1(PS)》期末试卷A卷...
  13. matlabrobert锐化_常用图像锐化MATLAB实现
  14. Tableau 第五章 创建仪表板和故事
  15. 激活码方式注册的实现原理述
  16. AE2022 Ver22.3内容更新点汇总 一文了解AE2022最新版本
  17. rhombus(菱形)
  18. html背景图片纵向缩小,css怎么把背景图片缩小?
  19. 记一个npm安装问题 Refusing to delete xxx\.bin\xxx.cmd: is outside xxx\webpack and not a link
  20. 《CISP》(三)信息安全管理

热门文章

  1. 29岁才转行软件测试,目前31了,我的一些经历跟感受(完)
  2. LM324系列运放交越失真的解决办法
  3. Teamcenter云战略
  4. oracle19C 无法登录OEM 解决
  5. [招聘信息]Automation Engineer@EMC
  6. 分享50个漂亮的双屏桌面壁纸资源(上篇)
  7. html中购物车图标,纯CSS3实现单元素购物车图标
  8. table 表格自动计算
  9. 串口服务器中文使用文档,MOXA_串口服务器中文使用文档
  10. 无接触式磁旋转编码器AS5040介绍