华为数通HCIP-IGMP(网络组管理协议)

news2024/11/17 12:25:15

 IGMP(网络组管理协议)


  作用:维护、管理最后一跳路由器以及组播接收者之间的关系;
  应用:最后一跳路由器以及组播接收者之间;
  原理:当组播接收者需要接收某个组别的流量时,会向最后一跳路由器,发送IGMP报文,最后一跳路由器会根据组播接收者加入的组别,生成组播路由表,进行转发;
            当组播接收者需要离开某个组播组别时,也向最后一跳路由器,发送IGMP报文,最后一跳路由器会删除对应的组播路由表,不再转发对应组播组别的流量;
 
 工作流程:
  1、查询阶段:最后一跳路由器会寻找网段内的组播接收者,并且询问它们加入了哪个组别;
  2、报告阶段:组播接收者告知最后一跳路由器,自身加入了哪个组播组,最后一跳路由器生成组播路由表;
  3、离开阶段:组播接收者告知最后一跳路由器,自身需要离开某个组播组,最后一跳路由器删除对应的组播路由表;

 版本:
  V1——工作在ASM模型
  V2——工作在ASM模型(默认)
  V3——工作在SSM模型


配置:
 最后一跳路由器(R4):
[R4]multicast routing-enable              //全局下开启组播功能
      pim                                               //全局下开启pim

      interface GigabitEthernet0/0/0     //进入距离组播接收者最近的接口
        pim dm                                      //开启pim
        igmp enable                               //开启IGMP
        igmp version 1                           //修改IGMP版本为1,默认为2


IGMPv1工作过程


 1、查询阶段
      最后一跳路由器周期性发送查询报文(默认为60s/次),用于查询网段的组播接收者所加入的组别;
       查询报文
        sip 最后一跳路由器的接口ip
        dip 224.0.0.1(网段内的所有设备均可接收)
        组播地址 0.0.0.0

       如果存在多台最后一跳路由器时,需要依靠pim确定谁负责周期性发送查询报文;


       由pim的DR负责;
       选举规则:
        (1)接口优先级,越大越优;(默认为1)
                interface Ethernet0/0/0
                   pim hello-option dr-priority 2      //修改接口DR优先级
                display pim interface                      //查看pim的DR以及DR优先级
        (2)接口ip越大越优

      因此在配置IGMPv1时,最后一跳路由器的接口也需要开启pim;

 2、报告阶段(成员响应阶段)
   (1)被动加组
      组播组成员在收到查询报文后,会产生成员报告报文进行发送;
      成员报告报文
       sip:接收者自己
       dip:自身需要加入的组别
       组播地址:自身需要加入的组别

      最后一条路由器收到成员报告报文后,会在本地生成一张(* G)组播路由表,并且以接收到该成员报告报文的接口作为下游接口,日后收到dip为对应组别的流量就可以从该下游接口发送;

   (2)主动加组
       当新的组播接收者加入网络中,并且不想等待查询周期时,可以选择主动向外发送成员报告报文,最后一条路由器收到后,也会生成组播路由表;

  3、离开阶段
       默默离开;
       当组播接收者,不再需要接收某个组别的流量时,不会做出任何动作,直接离开;
       最后一跳路由器需要等待130s,没有收到对应组别的成员报告报文,才会删除对应表项,停止发送对应组别的流量;


IGMPv1的缺陷


  1、没有自身的查询选举机制,需要依靠pim的DR帮忙查询;
  2、当网段内存在多台同组的组播接收者时,均会发送成员报告报文,但最后一跳路由器为一个组播组只会生成一张表,因此会浪费链路资源;
  3、无离开机制,当某个组别的成员全部离开时,会导致在超时时间内,最后一跳路由器依然发送改组别的流量造成链路资源的浪费;

IGMPv2对v1的改进

IGMPv2对v1的改进
 1、查询阶段
       新增了查询器的概念,如果存在多台最后一跳路由器时,会进行查询器的选举,查询器负责发送普遍组查询报文,用于查找网段内的组播接收者;
       选举规则:接口ip,越小越优;
       普遍组查询报文
        sip 最后一跳路由器的接口ip
        dip 224.0.0.1(网段内的所有设备均可接收)
        组播地址 0.0.0.0
      接口下:igmp timer query 20                   //修改查询周期


 2、报告阶段
      (1)新增响应抑制机制
        机制原理:组播组成员收到普遍组查询报文后,会随机在本地生成一个0.0~10.0s计时器,在计时结束后才会发送成员报告报文,如果在计时结束之前,收到同组的成员报告报文则停止发送成员报告报文;
       成员报告报文
        sip:接收者自己
        dip:自身需要加入的组别
        组播地址:自身需要加入的组别

      (2)可以调整最大响应时间,最多调整成25.0s
                接口下: 
                    igmp max-response-time 20     //修改最大响应时间为20.0s

      (3)last reporter(最后一个通告者)
                定义:每一个组别都会有一个;
                          指某个组别中最新收到的成员报告报文的发送者;
                作用:最后一跳路由器通过last reporter确保某个组播组中存在接收者;

3离开阶段

 新增离开报文;
       当一台组播接收者需要离开某个组别时,会发送离开报文;
       离开报文:
         sip:组播接收者自己
         dip:需要离开的组别
         组播地址:需要离开的组别
       当查询器收到离开报文后,会判断该离开报文的发送者是否为该组别的last reporter,如果不是,则不做任何操作;如果是则针对离开的组别发送特定组查询报文,用于探测该组别是否还有别的接收者;
       特定组查询报文:
         sip:查询器的接口ip;
         dip:需要查询的组别;
         组播地址:需要查询的组别;
       最多连续发送两次,每次的最大响应时间为1s;
       如果2s内收到成员报告报文回应,说明,该组别仍然存在组播接收者,则保留对应的组播路由表,并且将最新一份收到的成员报告报文的发送者,记录为该组别的last reporter;
       如果2s内没有收到成员报告报文回应,说明,该组别没有其他接收者,则删除对应组别的组播路由表;

IGMPv3对v2的改进


1、工作于SSM模型,组播接收端可以指定接收来自哪些源的流量;
2、查询阶段跟v2完全一致;
3、组播组成员可以加入多个组播组;
4、最后一跳路由器收到成员报告报文后,直接生成(s g)组播路由表,只有收到sip匹配s,dip匹配g的组播流量才会往下发;
5、成员报告报文改进:
     (1)dip变为224.0.0.22
     (2)六种模式:include、exclude、change to include、change to exclude、alllow new source、block old source;
     (3)其中正常加入某个组播组别,使用include模式发送;
     (4)通过change to exclude模式的成员报告报文,指定自身无需接收的流量;
     (5)通过change to include模式的成员报告报文,进行退出某个组播组别,其中组播源指定为0.0.0.0;(取消了离开报文)

6、取消响应抑制机制,组播组成员收到加入同组的成员报告报文,也会正常发送,防止同组不同源的接收者,相互抑制;
7、新增了特定源组查询,当接收者不再接收来自某个源的某个组别的流量时,查询器会触发特定源组查询,去判断是否还有对应流量的接收者;

v3配置:
interface GigabitEthernet0/0/0
 pim sm                           //igmpv3一定要使用pim sm
 igmp enable
 igmp version 3

IGMP兼容:
  V1/V2:最终会以V1的方式工作;
  V1/V2以及V3:接收端为V3,路由器端为V1/V2时,无法兼容,其余情况均能兼容;

IGMP SNOOPING

作用:
    解决因为交换机泛洪业务组播流所带来的问题:
      (1)组播流量的有偿性、安全性得不到保障;
      (2)浪费链路资源;
      (3)当出现两个组播组ip,映射出同一mac地址时,会出现接收者误拆包的问题,浪费设备开销;
 原理:交换机通过监听IGMP报文,在本地构建一张组播流量转发表,实现组播流量的按需转发;
 应用:应用于最后一跳路由器以及组播接收者之间的交换机上;

 端口角色:
  (1)路由器端口
           用于连接路由器,当接口收到igmp查询报文以及pim的hello报文时,接口变为路由器端口;
  (2)成员端口
           用于连接组播接收者,当接口收到成员报告报文时,对应接口会被列为对应组播组别的成员端口;

 工作过程:
  1、查询阶段
       当交换机收到普遍组查询报文,会把收到的接口设置为路由器端口,并且将该报文在同vlan内进行泛洪;

  2、报告阶段
       当交换机收到成员报告报文时,会根据该报文所加入的组播组,在本地生成(* g)组播流量转发表,并且将收到该报文的接口,记录为该组别的成员接口,并且从同vlan的路由器端口发送出去;
      (报告阶段不会有响应抑制机制,避免交换机无法接收到同一组播组所有接收者的成员报告报文,导致无法生成完成的成员接口)
       如果交换机收到的成员报告报文中的组别,已经在自身的组播流量转发表中存在,则直接添加成员接口即可;
  
       组播流量转发表生成完成后,从路由器端口收到的组播流量会查表,从特定的成员端口发送出去;

  3、离开阶段
       当交换机收到离开报文后,将该报文,直接从同vlan的路由器端口发送出去,同时将收到该离开报文的接口的老化时间设为2s,如果2s内没有从该接口收到成员报告报文,则从成员接口列表中删除该接口;
       
       当交换机收到特定组查询报文后,会将对应组别的所有成员端口的老化时间设置为2s,如果没有在2s内收到成员报告报文,则进行删表操作,如果有收到成员报告报文,则保留收到报文的成员接口,其余删除;

       如果一个接口130s内没有收到成员报告报文,则从成员接口列表中,删除该接口;

  缺陷:取消了响应抑制机制,增大了路由器的负担;
            

配置:
[S1]multicast routing-enable     //全局下开启组播功能
      igmp-snooping enable        //全局下开启igmp snooping
      vlan 1                                 
         igmp-snooping enable     //进入特定vlan开启igmp snooping,如果没有划分则进入vlan 1;

  display igmp-snooping router-port vlan 1         //查看路由器端口
  display igmp-snooping port-info                       //查看交换机的组播流量转发表
   **模拟器上,配置了igmp snooping后,igmp中路由器与组播接收者之间的报文交互会失效,无法工作;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/816811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python自带的命令行调试器pdb介绍

Python自带的命令行调试器pdb介绍 Python自带的命令行调试器是pdb(Python Debugger)。pdb允许开发者在程序执行过程中进行逐行调试,以便查找和修复代码中的错误。 pdb调试器是Python标准库的一部分,无需额外安装任何软件。直接im…

【Golang 接口自动化08】使用标准库httptest完成HTTP请求的Mock测试

目录 前言 http包的HandleFunc函数 http.Request/http.ResponseWriter httptest 定义被测接口 测试代码 测试执行 总结 资料获取方法 前言 Mock是一个做自动化测试永远绕不过去的话题。本文主要介绍使用标准库net/http/httptest完成HTTP请求的Mock的测试方法。 可能有…

2023年值得推荐的5个数据可视化平台

之前看过一篇介绍20款国外常用的数据可视化工具后,很多朋友在评论区表示国内也有很多很不错的主流数据可视化平台,今天就来给大家介绍国内5个主流的数据可视化平台。 1、阿里云DataV DataV数据可视化是使用可视化应用的方式来分析并展示庞杂数据的产品。…

Windows磁盘清理

针对开发同学,磁盘不够用时,常见的需要清理的内容: 1、虚拟机镜像、Docker镜像等。 通常占用比较大的存储,一个实例从几个G到几十个G。 2、Maven本地仓库。 如果公司有私服,可以全部删掉重新依赖,否则不…

【rtmp】1: FLV videotag 转annexb

【FLV】AVC+AAC的FLV解析过程及pts、dts计算 反复多次,才能熟记细节。 明确细节,遇到问题才能解决。 rtmp 推送flv时, 首先解析flv,flv videotag 转annexb 格式。 然后 按照annexb 输入给rtmp,让rtmp 推送。 而rtmp 推送又需要把annexb 转为avcc 。 annexb 格式文件 录制的…

Yolov8新版本解读:优化点如何加入新版本,通过加入EMA注意力进行对比说明

本文目的: 最近yolov8进行了一次较大的更新,对一些优化点加在哪个位置上有些变动,因此本文主要通过具体案列进行对比和说明,以便在新版本上能够轻松上手。 老版本 ultralytics/nn 新版本更新为: modules文件夹下内容如下: 解读: 将modules.py拆分为 1.__init__.…

二叉树题目:左叶子之和

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:左叶子之和 出处:404. 左叶子之和 难度 3 级 题目描述 要求 给你二叉树的根结点 root \texttt{ro…

Docker部署Springboot应用【mysql部署+jar部署+Nginx部署】

【项目达到目标】 1.基本准备 2、mysql部署 3、jar部署 4、Nginx部署 一、基本准备 石工拿的就是之前放置在我们服务器上的应用进行部署,主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue 二、mysql部署 docker run -d --name mysql \ …

服务机器人有哪些品类

服务机器人是指具备自主运动、感知环境、实现人机交互等能力的机器人,它可以被应用于不同的场景,如餐饮、医疗、物流等行业。根据其功能和应用场景的不同,服务机器人可以分为以下几类:1. 餐饮服务机器人 随着社会发展和人们需…

HCIE Security——防火墙互联技术

目录 一、防火墙接口互联接口 1.防火墙支持的接口及板卡 2.物理链接线缆 3.支持接口种类 (1)物理接口 (2)逻辑接口 二、相关配置命令 1.配置三层接口IP地址 2.配置PPPOE拨号接口 3.配置VLANIF接口、子接口、回环接口 4…

分布式异步任务处理组件(五)

节点上线和下线的逻辑-- 节点下线分为两种--心跳失败主动或被动和主节点断开连接,但是节点本身没有发生重启;第二种就是节点宕机重启--其实这两中情况下处理逻辑都是一样的,只是节点本身如果还能消费到kafka的时候可以继续执行任务但是不能从…

PostgreSql 进程及内存结构

一、进程及内存架构 PostgreSQL 数据库运行时,使用如下命令可查询数据库进程,正对应上述结构图。 [postgreslocalhost ~]$ ps -ef|grep post postgres 8649 1 0 15:05 ? 00:00:00 /app/pg13/bin/postgres -D /data/pg13/data postgres …

Vue+Nodejs+Express+Minio 实现本地图片上传

安装Minio,Minio server和Minio client都要下载可以自定义安装目录 安装完成之后,可以将minio配置成环境变量方便使用 配置了环境变量启动命令式 minio server start,默认账号密码minioadmin和minioadmin,点击9000端口的这个链接,即可访问客户端 nodejs连接Minio,简易服务进…

Git全栈体系(三)

第六章 GitHub 操作 一、创建远程仓库 二、远程仓库操作 命令名称作用git remote -v查看当前所有远程地址别名git remote add 别名 远程地址起别名git push 别名 分支推送本地分支上的内容到远程仓库git clone 远程地址将远程仓库的内容克隆到本地git pull 远程库地址别名 远…

k8s安装Jenkins

目录 ​编辑 一、环境准备 1.1 环境说明 二、安装nfs 2.1 安装NFS 2.2 创建NFS共享文件夹 2.3 配置共享文件夹 2.4 使配置生效 2.5 查看所有共享目录 2.6 启动nfs 2.7 其他节点安装nfs-utils 三、创建PVC卷 3.1 创建namespace 3.2 创建nfs 客户端sa授权 3.3 创建…

如何用python画一朵花,用python画彩色六边形

大家好,小编为大家解答用python画彩色六边形的问题。很多人还不知道如何用python画一朵花,现在让我们一起来看看吧!

63 # commander 的配置

初始化配置文件 新建文件夹 63,执行 npm init -y 修改配置文件 {"name": "kaimo-http-server","version": "1.0.0","description": "","main": "index.js","keywords"…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(17)-Fiddler如何充当第三者再识AutoResponder标签-下

1.简介 上一篇宏哥主要讲解的一些在电脑端的操作和应用,今天宏哥讲解和分享一下,在移动端的操作和应用。其实移动端和PC端都是一样的操作,按照宏哥前边抓取移动端包设置好,就可以开始实战了。 2.界面功能解析 根据下图图标注位…

AD21 PCB设计的高级应用(四)FPGA的管脚交换功能

(四)FPGA的管脚交换功能 高速 PCB 设计过程中,涉及的 FPGA等可编程器件管脚繁多,也因此导致布线的烦琐与困难,Altium Designer 可实现 PCB 中 FPGA 的管脚交换,方便走线。 1.FPGA管脚交换的要求 (1)一般情况下,相同电压的 Bank之…

python——案例三:计算三角形面积

案例三:计算三角形面积 afloat(input(输入三角形第一个边的长度:)) #数据导入 bfloat(input(输入三角形第二个边的长度:)) cfloat(input(输入三角形第三个边的长度:)) s(abc)/2 #半周长计算公式 area(s*(s-a)*(s-b)*(s-c))**0.5 #面积公式 print(area) #