华为数通HCIP-PIM原理与配置

组播网络概念

组播网络由组播源,组播组成员与组播路由器组成。
组播源的主要作用是发送组播数据。
组播组成员的主要作用是接收组播数据,因此需要通过IGMP让组播网络感知组成员位置与加组信息。
组播路由器的主要作用是将数据从组播源发送到组播组成员。组播数据转发需要依赖组播分发树,因此组播路由器需要通过协议来构建组播分发树。
PIM(Protocol Independent Multicast,协议无关组播)协议的主要作用就是构建组播分发树。


组播网络基本架构回顾

组播网络大体可以分为三个部分:
源端网络:将组播源产生的组播数据发送至组播网络。
组播转发网络:形成无环的组播转发路径,该转发路径也被称为组播分发树(Multicast Distribution Tree)。
成员端网络:通过IGMP协议,让组播网络感知组播组成员位置与加入的组播组。
 

PIM(协议无关组播协议)

目前常用版本是PIMv2PIM报文直接封装在IP报文中,协议号为103PIMv2组播地址为224.0.0.13


 前提:底层网络能够实现单播互通;
 应用:在组播路由器之间运行;
 作用:在组播路由器上构建组播路由表,形成组播流量分发树(无环、无次优、无重复组播流);


 组播分发树的分类


   SPT:组播源到组播接收者组播流量分发树(PIM-DMPIM-SM中均有使用


   RPT:RP到组播接收者的组播流量分发树(PIM-SM中使用

 

 

 pim-dm(密集模式):由组播源发起,以推的形式构建组播流量分发树;
                                     适用于组播成员分布密集的时候;
 pim-sm(稀疏模式):由组播接收者发起,以拉的形式构建组播流量分发树;
                                     适用于组播成员分布稀疏的时候;

        PIM-SM模式根据组播服务模型又可以分为:

               PIM-SM(ASM):为任意源组播建立组播分发树。
                PIM-SM(SSM):为指定源组播建立组播分发树。

在PIM组播域中,以组播组为单位建立从组播源到组成员的点到多点的组播转发路径。由于组播转发路径呈现树型结构,也称为组播分发树(MDT,Multicast Distribution Tree)。
组播分发树的特点:
无论网络中的组成员有多少,每条链路上相同的组播数据最多只有一份。被传递的组播数据在距离组播源尽可能远的分叉路口才开始复制和分发。

PIM-DMPIM-SM使用场景

PIM形成组播分发树主要有两种模式,即PIM-DM模式与PIM-SM模式,这两种模式分别用在不同的场景下:
        PIM-DM模式主要用在组成员较少且相对密集的组播网络中,该模式建立组播分发树的基本思路是“扩散-剪枝”,即将组播流量全网扩散,然后剪枝没有组成员的路径,最终形成组播分发树。
        PIM-SM模式主要用在组成员较多且相对稀疏的组播网络中,该模式建立组播分发树的基本思路是先收集组成员信息,然后再形成组播分发树。使用PIM-SM模式不需要全网泛洪组播,对现网的影响较小,因此现网多使用PIM-SM模式。

PIM路由表项

PIM路由表项即通过PIM协议建立的组播协议路由表项。
PIM网络中存在两种路由表项:
(S,G)路由表项主要用于在PIM网络中建立SPT。对于PIM-DM网络和PIM-SM网络适用。
(*,G)路由表项主要用于在PIM网络中建立RPT。对于PIM-SM网络适用。
 

RPF检测(逆向路径转发检测)


  作用:1、用于构建组播路由表,确定组播路由表的上游接口以及下游接口
            2、确保组播流量无环无次优;
  检测机制:
    pim dm:
       1、pim dm路由器收到组播流量时,会直接在本地生成对应的(s g)组播路由表项,然后会根据组播流量的sip查看本地单播路由表,找到去往组播源的最优路由,将该路由的最优出接口设置为对应(s g)表项的上游接口,最优下一跳为上游邻居,其余建立了pim邻居的接口为该表项的下游接口;
            如果路由器去往组播源存在多条负载的最优路径时,则选择下一跳更大的路由,其中出接口设置为对应(s g)表项的上游接口,下一跳为上游邻居,其余建立了pim邻居的接口为该表项的下游接口;

2、只有从上游接口收到的组播流量才会从下游接口发送出去;

   pim sm:
       1、当接收端DR通过IGMP生成了(* g)表项时,根据RP地址进行RPF检测,找到去往RP的最优路由,将该路由的出接口设置为(* g)表项的上游接口,最优下一跳设置为上游邻居;
 

配置:
[R1]multicast routing-enable           //全局下开启组播功能
[R1]pim                                           //全局开启pim
      interface Ethernet0/0/0
           pim dm                                //所有的物理接口开启pim dm功能

PIM DM


 工作过程:
     1、建立PIM邻居
     2、选举DR
     3、扩散——剪枝
     4、状态刷新
     5、嫁接
     6、断言

报文结构:pim层——IPv4——数据链路层头部
    组播发送:224.0.0.13(所有pim路由器均能接收)

1、建立pim邻居
       组播路由器开启pim dm后,发送hello报文发现并且建立pim邻居;
       hello周期:35s,超时时间为105s
       hello时间不一致会向小协商;

    interface Ethernet0/0/0
       pim hello-option holdtime 90      //修改超时时间为90s

   display pim neighbor  //查看pim邻居;
   display pim interface   //查看pim接口信息,其中包含DR优先级、DRIP地址、hello时间;

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

       每个网段有且仅有一个;
       其中源端DR为组播源与路由器之间网段的DR,接收端DR为最后一跳路由器与接收者之间网段的DR;
       DR在PIM DM中的作用:

        (1)负责转发从组播源收到的组播流量(源端DR)

        (2)充当IGMPv1的查询器(接收端DR)

        (3)当充当多台最后一跳路由器时,只有接收端DR会转发组播流量;

        (4)周期发送状态刷新报文(源端DR)

3、扩散-剪枝
   3.1 扩散
      当组播源需要发送组播流量时,则直接发送,触发扩散机制;
      pim dm路由器收到组播流量时,会直接在本地生成对应的(s g)组播路由表项,其中s为组播流量的sip、g为组播流量的dip;
        上游接口:通过RPF检测确定,有且仅有一个;
        下游接口:除上游接口以外的所有建立了pim邻居的接口;
      确定好上下游接口后,将组播流量从下游接口扩散出去;
      直到组播流量扩散到最后一跳路由器,在确定了上下游接口后,还会检查,自身是否存在对应组别的(* g)表项,如果存在则说明该路由器下游存在该组别的接收者,则将(* g)表项的下游接口复制到(s g)表项的下游接口,并且将组播流量从所有下游接口发送出去;
      
   3.2 剪枝(prune)
      当pim dm路由器发现自身的(s g)组播路由表项中不存在下游接口时,说明下游没有该组播流量的接收者,则触发剪枝;(触发条件)
      机制:发送剪枝报文(dip为224.0.0.13,携带需要剪枝的表项,以及针对的上游邻居)
                当上游邻居收到该剪枝报文后,则将收到该报文的接口,从对应表项中移除,并且检查该表项是否存在其他的下游接口,如果存在则停止剪枝,如果不存在则继续向上游发送剪枝报文,过程与上述一致;
      作用:防止组播流发送到没有接收者的区域,浪费设备以及链路资源;
      缺陷:被剪枝了的接口,不是永久性删除,而是被暂时抑制,抑制时间为210s;
                每隔210s被剪枝的接口会恢复,需要重复剪枝的步骤,浪费设备资源;
       

 

  4、状态刷新
      作用:解决剪枝抑制时间所带来的问题,防止被剪枝的接口恢复;

      机制:源端DR会周期性发送状态刷新(state-refresh)报文,处于键值抑制状态的接口收到后,会刷新抑制计时器,从头开始计时;

        被剪枝的接口永久不会恢复

 5、嫁接

        机制:当新加入组播接收者时,路由器通过IGMP生成了(* g)表项后,如果自身存在对应的(s g)表项,则直接将(* g)表项的下游接口复制到(s g)表项,并且向上游邻居发送嫁接报文(携带需要嫁接的s g表项,以及上游邻居的地址),上游邻居收到后,新增收到该报文的接口为下游接口;

        作用:确保网络中新增组播接收者时,可以收到组播流量;


 6、断言(assert)
      作用:防止pim dm网络中出现重复组播流,导致链路资源的浪费;
      触发条件:当pim dm路由器从下游接口收到从该接口发送出去的一模一样的组播流量;
      机制:双方会发送断言报文,其中会携带:
                  发送者去往组播源的路由优先级、开销;
                会进行如下比较:
                  优先级:越小越优; 
                  开销:越小越优;
                  接口ip:越大越优;
                胜出的一方:winner;
                失败的一方:loser;
                loser会将自身的断言竞选失败的端口,从(s g)表项中删除,并且从该接口向外发送该(s g)表项的剪枝报文,对端收到后也会删除对应的下游接口,可以消除网络中的重复组播流;

   缺陷:只能适用于ASM模型;
             不适用于网络分支较多的场景(需要频繁剪枝);

PIM-SM

工作过程:

1、建立pim邻居
  2、选举DR(DR在PIM SM作用更多)
  3、选举RP
         RP(汇聚点)
          作用:作为接收端构建RPT树的终点;
                    向源端发起SPT树构建;
                    作为组播源向接收端发送组播流量的中间点;
          一般越中间越好;
          静态:常用
            pim
             static-rp 3.3.3.3             //指定的地址需要全网可达,必须所有设备都要配置;

          动态;
           选举过程如下:
            在C-BSR中选出一个BSR:
                优先级较高者获胜(优先级数值越大优先级越高)。
                如果优先级相同,IP地址较大者获胜。
            BSR会周期性发送BSR消息,收集网络中的C-RP的参数;
            收集完成后,将所有C-RP的选举参数加入到RP-SET中,根据BSR消息泛洪至整个组播网络;
            其他pim路由器收到后,则会选举出RP;
                与用户加入的组地址匹配的C-RP服务的组范围掩码最长者获胜。
                如果以上比较结果相同,则C-RP优先级较高者获胜(优先级数值越小优先级越高)。
                如果以上比较结果都相同,则执行Hash函数,计算结果较大者获胜。
                如果以上比较结果都相同,则C-RP的IP地址较大者获胜。

            pim
              c-bsr 接口        //指定自身的某个接口为C-BSR
              c-rp 接口          //指定自身的某个接口为C-RP
              c-bsr priority   x   //修改bsr优先级
              c-rp  priority   x   //修改rp优先级

  4、RPT树构建
         RPT:指RP到接收端的组播流量分发路径树;
        当接收端DR通过IGMP生成了(* g)表项时,根据RP地址进行RPF检测,找到去往RP的最优路由,将该路由的出接口设置为(* g)表项的上游接口,最优下一跳设置为上游邻居;
        并且产生一份join报文(携带需要构建的RPT树的组播表项以及上游邻居的地址),向上游邻居发送;
        上游邻居收到后,会在本地生成(* g)表项,并且将收到该join报文的接口设置为下游接口,并且根据RP地址进行RPF检测,确定上游接口与上游邻居,直至RP收到join报文为止;
        RP收到join报文后,生成(* g)表项,接收到join报文的接口为下游接口,并且暂无上游接口;

  5、源活跃阶段(注册阶段/停止注册)
        组播源发送组播流量后,源端DR会将组播流量打包成注册报文,单播发送给RP;
        RP收到后,拆除外层封装,看到原始组播流量,会进行如下操作;
        (1)判断本设备的组播路由表,是否存在匹配该组播流量的(* g)表项,如果存在则根据(* g)表项进行转发,一直给到接收端,并且沿途经过的pim sm路由器会创建(s g)表项,上下游接口直接从(* g)表项中复制过来;

       (2)生成(s g)表项,并且根据组播流量的sip,进行RPF检测,找到去往组播源的最优路径,其中最优出接口作为上游接口,最优下一跳作为上游邻居,并且向上游邻居发送join报文,上游邻居收到join报文后生成(s g)表项,重复上述动作,直到源端DR;(构建SPT树)
               当RP可以直接通过组播流量分发树收到组播流量时,则向源端DR发送注册停止报文,源端DR收到后,则停止发送注册报文;
        
       至此,网络中存在两颗组播流量分发树:
         RPT(RP到接收端):存在两张表(* g)、(s g)
         SPT(源端到RP):存在一张表(s g)

  6、SPT切换
       当接收端DR收到组播流量后,会向组播源发起SPT树构建;
       构建过程:本地生成(s g)表项,上游接口与上游邻居通过RPF检测确定,下游接口从(* g)表项复制;
                       向上游邻居发送join报文,上游邻居收到后,生成(s g)表项,下游接口为收到报文的接口,上游接口与邻居通过RPF检测确定,重复上述步骤,直到组播源;

       当接收端DR可以通过SPT树收到组播流量时,则发起RPT树(S G)表项的剪枝,一直到RP,如果RP删除了(S G)表项的下游接口后,没有其余的下游接口,则说明网络中存在次优路径,则继续向上游发起剪枝;

      作用:防止组播流量的次优路径;

DR在PIM SM中的作用:

1、充当IGMPv1的查询器;(接收端DR)

2、向RP发起RPT树构建;(接收端DR)

3、发送注册报文、接收注册停止报文;(源端DR)

4、向组播源发起SPT树切换(接收端DR)

PIM-SSM

定义:PIM-SM工作与SSM模型下;

工作过程:

1、建立邻居;

2、选举DR;

3、接收端DR在通过IGMP生成了(S G)表项后,直接向源端构建SPT树;

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

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

相关文章

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式,分别为:1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐,需要手动配置yaml文件,特别是需要配置pvc相关内容时,涉及到的yaml文件太…

软件测试面试真题 | 什么是PO设计模式?

面试官问:UI自动化测试中有使用过设计模式吗?了解什么是PO设计模式吗? 考察点 《page object 设计模式》:PageObject设计模式的设计思想、设计原则 《web自动化测试实战》:结合PageObject在真实项目中的实践与应用情…

Shell脚本学习-MySQL单实例和多实例启动脚本

已知MySQL多实例启动命令为: mysqld_safe --defaults-file/data/3306/my.cnf & 停止命令为: mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown 请完成mysql多实例的启动脚本的编写: 问题分析: 要想写出脚…

mybatis-plus 用法

目录 1 快速开始 1.1 依赖准备 1.2 配置准备 1.3 启动服务 2 使用 2.1 实体类注解 2.2 CRUD 2.3 分页 2.4 逻辑删除配置 2.5 通用枚举配置 2.6 自动填充 2.7 多数据源 3 测试 本文主要介绍 mybatis-plus 这款插件,针对 springboot 用户。包括引入&…

Redis 高可用:主从复制、哨兵模式、集群模式

文章目录 一、redis高可用性概述二、主从复制2.1 主从复制2.2 数据同步的方式2.2.1 全量数据同步2.2.2 增量数据同步 2.3 实现原理2.3.1 服务器 RUN ID2.3.2 复制偏移量 offset2.3.3 环形缓冲区 三、哨兵模式3.1 原理3.2 配置3.3 流程3.4 使用3.5 缺点 四、cluster集群4.1 原理…

带头单链表,附带完整测试程序

🍔链表基础知识 1.概念:链表是由多个节点链接构成的,节点包含数据域和指针域,指针域上存放的指针指向下一个节点 2.链表的种类:按单向或双向、带头或不带头、循环或不循环分为多个种类 3.特点:无法直接找到…

最近写了10篇Java技术博客【SQL和画图组件】

(1)Java获取SQL语句中的表名 (2)Java SQL 解析器实践 (3)Java SQL 格式化实践 (4)Java 画图 画图组件jgraphx项目整体介绍(一) 画图组件jgraphx项目导出…

安防视频综合管理合平台EasyCVR可支持的视频播放协议有哪些?

EasyDarwin开源流媒体视频EasyCVR安防监控平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等能力。 视频监控综合管理平台EasyCVR具备视频融合能力,平台基于云边端一体化架构,具有强大的…

vue卡片轮播图

我的项目是vue3的&#xff0c;用的swiper8 <template><div class"tab-all"><div class"tab-four"><swiper:loop"true":autoplay"{disableOnInteraction:false,delay:3000}":slides-per-view"3":center…

[NLP]LLM高效微调(PEFT)--LoRA

LoRA 背景 神经网络包含很多全连接层&#xff0c;其借助于矩阵乘法得以实现&#xff0c;然而&#xff0c;很多全连接层的权重矩阵都是满秩的。当针对特定任务进行微调后&#xff0c;模型中权重矩阵其实具有很低的本征秩&#xff08;intrinsic rank&#xff09;&#xff0c;因…

c语言实现八大排序详细解析

首先先看排序算法的整体分类 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的记录&#xff…

为Android构建现代应用——应用导航设计

在前一章节的实现中&#xff0c;Skeleton: Main structure&#xff0c;我们留下了几个 Jetpack 架构组件&#xff0c;这些组件将在本章中使用&#xff0c;例如 Composables、ViewModels、Navigation 和 Hilt。此外&#xff0c;我们还通过 Scaffold 集成了 TopAppBar 和 BottomA…

yolov3-spp 训练结果分析:网络结果可解释性、漏检误检分析

1. valid漏检误检分析 ①为了探查第二层反向找出来的目标特征在最后一层detector上的意义&#xff01;——为什么最后依然可以框出来目标&#xff0c;且mAP还不错的&#xff1f; ②如何进一步提升和改进这个数据的效果&#xff1f;可以有哪些优化数据和改进的地方&#xff1f;让…

《ChatGPT原理最佳解释,从根上理解ChatGPT》

【热点】 2022年11月30日&#xff0c;OpenAI发布ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c; 即聊天机器人程序 &#xff0c;开启AIGC的研究热潮。 ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够…

竞争之王CEO商战课,聚百家企业在京举行

竞争之王CEO商战课&#xff0c;于2023年7月29-31日在北京临空皇冠假日酒店举办&#xff0c;近百家位企业家齐聚一堂&#xff0c;共享饕餮盛宴。 竞争之王CEO商战课是打赢商战的第一课。 竞争环境不是匀速变化&#xff0c;而是加速变化。 在未来的市场环境中&#xff0c;企业间…

Day12-1-Webpack前端工程化开发

Webpack前端工程化 1 案例-webpack打包js文件 1 在index.html中编写代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><me…

基于Kubernetes环境的高扩展机器学习部署利器——KServe

随着ChatGPT的发布&#xff0c;人们越来越难以回避利用机器学习的相关技术。从消息应用程序上的文本预测到智能门铃上的面部识别&#xff0c;机器学习&#xff08;ML&#xff09;几乎可以在我们今天使用的每一项技术中找到。 如何将机器学习技术交付给消费者是企业在开发过程中…

【Spring Boot】请求参数传json数组,后端采用(pojo)新增案例(103)

请求参数传json数组&#xff0c;后端采用&#xff08;pojo&#xff09;接收的前提条件&#xff1a; 1.pom.xml文件加入坐标依赖&#xff1a;jackson-databind 2.Spring Boot 的启动类加注解&#xff1a;EnableWebMvc 3.Spring Boot 的Controller接受参数采用&#xff1a;Reque…

构建vue项目配置和环境配置

目录 1、环境变量process.env配置2、vue package.json多环境配置vue-cli-service serve其他用法vue-cli-service build其他用法vue-cli-service inspect其他用法3、vue导出webpack配置4、配置打包压缩图片文件5、打包去掉多余css(由于依赖问题暂时未实现)6、打包去除console.…

【Linux】进程间通信——管道

目录 写在前面的话 什么是进程间通信 为什么要进行进程间通信 进程间通信的本质理解 进程间通信的方式 管道 System V IPC POSIX IPC 管道 什么是管道 匿名管道 什么是匿名管道 匿名管道通信的原理 pipe()的使用 匿名管道通信的特点 拓展代码 命名管道 什么是命…