当前位置: 首页 > news >正文

组播基础-2-IGMP协议

文章目录

  • IGMP
    • IGMPv1
    • IGMPv2
    • IGMPv3
    • IGMP总结
    • IGMP Snooping

IGMP

运行于主机和路由器之间

因特网组管理协议,TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系

  • 负责组播成员管理,运行在主机和组播路由器之间
  • 主机侧:通过IGMP向路由器通告组成员关系
  • 路由器侧:通过IGMP协议维护组成员关系

- 所有IGMP版本都支持ASM模型 - IGMPv3可以直接应用于SSM模型,而 IGMPv1 和 IGMPv2 则需要 SSM-Mapping 技术的支持 - 运行 IGMP 高版本的路由器可以识别低版本的成员报告(向前兼容)



组播组管理协议工作机制:

  • 主机加入或离开组播组
  • 路由器维护组播组
  • 查询器选举
  • 成员报告抑制



IGMPv1

定义基本的组成员查询和报告过程

类型

  • 成员关系查询 0x11
  • 成员关系查询 0x12

组地址

  • 当一个成员关系报告正被发送时,组地址字段包含组播地址
  • 当用于成员关系查询时,本字段为0,并被主机忽略

路由器周期性发送成员关系查询,默认查询周期为 60s,

成员关系报告的发送可以被动发送也可主动发送
被动发送:主机收到成员关系查询消息后,发送成员关系报告
主动发送:主机主动发送成员关系报告

工作机制

  • 普遍组查询与响应
  • 响应抑制机制(当发现已经有人向自己感兴趣的组发送过数据之后,本地这边就不会再次发送报告)

每个收到查询的主机会启动一个计时器,默认0——10秒随机值,超时后发送报告

静默离开

记时130秒,即组成员关系超时时间=IGMP普遍查询消息发送间隔 x 健壮系数 + 最大查询响应时间

查询器选举

查询器依靠组播路由协议PIM,PIM中选择的DR会充当IGMPv1里面的查询器



IGMPv2

IGMPv2为默认版本,在IGMPv1的基础上添加了查询器选举和离开组机制

类型

  • 成员关系查询 0x11
    常规查询:用于确定哪些组播组有效,该组播组是否还有成员在使用,常规查询地址全零表示
    指定组查询:用于查询特定的组播组是否还有组成员,在一台设备发送离开报文后进行特定查询该组是否还有使用者两次
  • 版本2的成员关闭报告 0x16;版本1的成员关系报告 0x12
  • 离开组信息 0x17

组地址

  • 在成员查询消息中,发送一个常规查询时组地址设为0,当发送一个特定组查询时,则应设置为组的地址
  • 在成员报告或离开组的消息中,组的地址保留了要报告或要离开的地址

IGMPv2增加了最大响应时间字段,以动态地调整主机对组查询报文的响应时间

工作机制

  • 独立的查询器选举机制
  • 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询



IGMPv3

成员可以指定接受或不接受某个组播源的报文

  • 服务于 SSM 模型
  • 增加了主机的控制能力,对组播源进行过滤
  • 取消了成员报告抑制机制
  • 过滤模式包含 Include 和 Exclude

工作机制

  • 周期性地向 224.0.0.1 发送普通查询
  • 接受端发送成员报告,指出希望加入或拒绝某些组播发送的数据
  • 独立的查询器选举机制
  • 存在多个组播源的时候IP地址小的获胜,成为查询者,进行普遍组查询

IGMPv3主机发送类型

组数和地址数为1

  • Mode Is Include:接收从指定源列表发往该组播组的数据
  • Mode Is Exclude:不接收源地址列表中包含的源发往该组的组播数据
  • Change To Include Mode:表示组播组与源列表之间的对应方式由EXCLUDE转换到INCLUDE
  • Change To Exclude Mode:表示组播组与源列表之间的对应方式由INCLUDE转换到EXCLUDE
  • Allow New Source:现有基础上,还希望从某些组播源接收组播数据
  • Block Old Sources:现有基础上,不再希望从某些组播源接收组播数据

特定源组查询

无离开报文,通过这种方式进行离开

  • 针对某个源某个组进行特定组的查询,确保组还有成员在使用



IGMP总结

机制IGMPv1IGMPv2IGMPv3
查询器选举依靠其他协议自己选举自己选举
普遍组查询支持支持支持
成员报告报文支持支持支持
特定组查询报文不支持支持支持
成员离开方式静默离开主动发送离开报文未定义专门的离开报文,通过特定类型的报告报文传达
特定源、组查询报文不支持不支持支持
指定组播源不支持不支持支持
可识别协议报文IGMPv1IGMPv1 IGMPv2IGMPv1 IGMPv2 IGMPv3
ASM模型支持支持支持
SSM模型需要IGMP Mapping需要IGMP Mapping支持



IGMP Snooping

组播数据在二层被泛洪

  • 网络资源浪费
  • 存在安全隐患

IGMP Snooping概述

  • 解决组播报文在二层泛洪的问题
  • 运行在数据链路层,是二层交换机上的组播约束机制,用于管理和控制组播组
  • 通过监听 IGMP 报文,建立组播MAC地址表

端口角色

路由器端口:接受组播数据----上游接口

  • 收到源地址不为 0.0.0.0 的 IGMP 普遍组查询报文或PIM Hello 报文的接口都将被叫做动态路由器端口
  • 手工配置的路由器端口叫做静态路由器端口

成员端口:发送组播数据----下游接口

  • 收到 IGMP Report 报文的接口,叫做动态成员端口
  • 手动配置的成员叫做静态成员端口

工作原理

启用 IGMP Snooping 机制后,查询响应仅向路由器接口转发

模拟器环境会出现BUG,报告可以,但是普遍组查询和离开报文会被隔离,这种情况要想实现 IGMP 操作就需要在组管理设备上配置静态的 IGMP表项

相关文章:

组播基础-2-IGMP协议

文章目录 IGMPIGMPv1IGMPv2IGMPv3IGMP总结IGMP Snooping IGMP 运行于主机和路由器之间 因特网组管理协议,TCP/IP 协议族中负责 IP 组播成员管理的协议,用来在接收者与其他直接相邻的组播路由器之间建立、维护组播组成员关系 负责组播成员管理&#xf…...

基于Springboot+Vue的视频点播系统设计与实现登录 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 系统中…...

执行力怎么培养?

执行力怎么培养? 并行:适合在初期养成习惯,不抱对结果的期望天才就是强迫症:适合中期修身:适合高级 并行:适合在初期养成习惯,不抱对结果的期望 在你开始做任何事情的时候,不要一开…...

Power apps:一次提交多项申请

1、添加一个Form,导入sharepoint列表,添加确认,继续,取消按钮 2、在页面的onvisible属性中添加 Set(applynumber,Last(付款申请表).申请编号1); #定义一个申请编号变量,每次申请,就将列表最后一个…...

Oracle数据库物理结构操作管理

实验步骤 (1)查询数据库初始化参数中参数名包含sga的参数的名称、值和描述信息。 SQL> select name,value,description from V$PARAMETER where name like %sga%; (2)设置sga_max_size的大小为1G SQL> alter system set sg…...

Python自然语言处理之spacy模块介绍、安装与常见操作案例

文章目录 spacy模块介绍安装spacy常见操作案例及代码1. 加载模型并处理文本2. 词性标注3. 命名实体识别4. 依存句法分析5. 可视化(在Jupyter Notebook中) spacy模块介绍 spacy是一个强大的Python库,用于自然语言处理(NLP&#xf…...

DSPy101

DSPy 介绍 DSPy(Declarative Self-improved Language Programs in Python) 是一个用于系统化和增强在流水线内使用语言模型的框架,它通过数据驱动和意图驱动的系统来优化大型语言模型(LLM)的使用。 DSPy 的核心是模块…...

网格交易策略:从原理、应用到实战Python回测

01 引言 随着金融市场的快速发展,量化交易成为投资者追求收益的一种重要手段。在众多的量化交易策略中,网格交易策略(Grid Trading Strategy)因其简单易用、风险控制灵活等优点而备受青睐。网格交易策略的核心思想是“低买高卖”&…...

软考论文《论大数据处理架构及其应用》精选试读

论文真题 模型驱动架构设计是一种用于应用系统开发的软件设计方法,以模型构造、模型转换和精化为核心,提供了一套软件设计的指导规范。在模型驱动架构环境下,通过创建出机器可读和高度抽象的模型实现对不同问题域的描述,这些模型…...

fatfs API使用手册

配置 /*---------------------------------------------------------------------------/ / Configurations of FatFs Module /---------------------------------------------------------------------------*/#define FFCONF_DEF 80286 /* Revision ID *//*---------------…...

9.23作业

仿照string类&#xff0c;自己手动实现 My_string 代码如下 MyString.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; …...

Unity3D 房间去重叠化算法详解

前言 在Unity3D游戏开发中&#xff0c;经常需要生成和处理多个房间的场景&#xff0c;特别是在地牢生成、房屋布局或迷宫设计等应用中。为了确保生成的房间不会重叠&#xff0c;我们需要一种有效的去重叠化算法。以下将详细介绍该算法的原理和代码实现。 对惹&#xff0c;这里有…...

mybatis 配置文件完成增删改查(五) :单条件 动态sql查询,相当于switch

文章目录 单条件 动态sql查询写测试方法 疑问总结 单条件 动态sql查询 <select id"selectByConditionBySingle" resultMap"brandResultMap">.select *from tb_brandwhere<choose>/*相当于switch*/<when test"status ! null">…...

全球IP归属地查询-IP地址查询-IP城市查询-IP地址归属地-IP地址解析-IP位置查询-IP地址查询API接口

IP地址城市版查询接口 API是指能够根据IP地址查询其所在城市等地理位置信息的API接口。这类接口在网络安全、数据分析、广告投放等多个领域有广泛应用。以下是一些可用的IP地址城市版查询接口API及其简要介绍 1. 快证 IP归属地查询API 特点&#xff1a;支持IPv4 提供高精版、…...

Vue3+FastAPI中Token的刷新机制(含代码示例)

在Vue3和FastAPI的应用中&#xff0c;token刷新机制通常涉及以下几个步骤&#xff1a; 登录过程&#xff1a;用户登录时&#xff0c;后端FastAPI验证用户信息&#xff0c;验证通过后生成一个访问令牌&#xff08;access token&#xff09;和一个刷新令牌&#xff08;refresh t…...

【GAN 图像生成】

理论知识学习&#xff1a; PART 1&#xff1a; 生成对抗网络GAN 深度学习模型&#xff0c;用于生成数据 对抗式训练&#xff0c;生成器v判别器 DCGAN>WGAN>StyleGAN技术不断进化 GAN在艺术创作。数据增强领域应用越来越广泛 应用&#xff1a; GAN在图像合成&#x…...

【自然语言处理】词嵌入模型

词嵌入&#xff08;Word Embedding&#xff09; 是一种将词汇表示为实数向量的技术&#xff0c;通常是低维度的连续向量。这些向量被设计为捕捉词汇之间的语义相似性&#xff0c;使得语义相似的词在嵌入空间中的距离也更近。词嵌入可以看作是将离散的语言符号&#xff08;如单词…...

了解针对基座大语言模型(类似 ChatGPT 的架构,Decoder-only)的重头预训练和微调训练

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 随着自然语言处理&#xff08;NLP&#xff09;技术的飞速进步&#xff0c;基于 Transformer 架构的大语言模型在众多任务中取得了显著成就。特别是 Decoder-only 架构&#xff0c;如 GPT 系列模型&…...

cmake如何在编译时区分-std=c++17和-std=gnu++17?检查宏

如何在编译时区分-stdc17和-stdgnu17&#xff1f;检查宏&#xff1f;-腾讯云开发者社区-腾讯云 我正在使用__int128扩展的g。-stdc17的问题是&#xff0c;一些C库不具备对该扩展的全部支持(即std::make_unsigned<>失败)。当使用-stdgnu17时&#xff0c;它工作得很好。 我…...

速通数据结构与算法第七站 排序

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 4 速通…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

unix/linux,sudo,其发展历程详细时间线、由来、历史背景

sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...