部署PIM-SM

news2024/10/5 17:20:26

拓扑图

配置

使能组播路由

配置OSPF

组播路由器接口配置pim-sm

连接组成员的接口使能igmp

pim路由器上配置静态RP

sysname AR1
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.12.1 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.13.1 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/2
 ip address 10.1.100.1 255.255.255.0 
 pim sm
#
ospf 1 router-id 1.1.1.1 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
#
 sysname AR2
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.12.2 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.150.2 255.255.255.0 
 pim sm
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
 pim sm
#
ospf 1 router-id 2.2.2.2 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
#
 sysname AR3
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.13.3 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.150.3 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/2
 ip address 10.1.36.3 255.255.255.0 
 pim sm
#
ospf 1 router-id 3.3.3.3 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
#
 sysname AR4
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.150.4 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.1.4 255.255.255.0 
 pim sm
 igmp enable
#
ospf 1 router-id 4.4.4.4 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
#
sysname AR5
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.150.5 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.1.5 255.255.255.0 
 pim sm
 igmp enable
#
ospf 1 router-id 5.5.5.5 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
 spt-switch-threshold infinity
#

注意配置spt-switch-threshold infinity命令,先不进行SPT切换(重要)

sysname AR6
#
multicast routing-enable
#
interface GigabitEthernet0/0/0
 ip address 10.1.36.6 255.255.255.0 
 pim sm
#
interface GigabitEthernet0/0/1
 ip address 10.1.2.1 255.255.255.0 
 pim sm
 igmp enable
#
ospf 1 router-id 6.6.6.6 
 area 0.0.0.0 
  network 0.0.0.0 255.255.255.255 
#
pim
 static-rp 2.2.2.2
 spt-switch-threshold infinity
#

PC1加组239.1.1.1

拓扑中需要注意IGMPv2的查询器为AR4

IGMPv2查询器选举规则:

  • 接收查询报文的源IP地址和接收接口的IP地址比较,IP地址小的为查询器

连接组播成员端的DR为AR5

成员端DR负责

  • 向RP发送(*,G)Join报文,建立RPT
  • 转发组播流量

源端DR负责

  • 向RP发送Register注册报文
  • 转发组播流量

DR选举规则

  • DR-Priority优先级高的优选
  • 路由优先级相同,或有Hello报文中不支持写到DR-Priority的路由器,则IP地址大的优选

验证PIM-SM中DR选举机制

拓扑中AR5为组播成员端的DR(IP地址大)

AR4和AR5交互的报文中携带的信息

DR优先级都为1,IP地址大的为DR

查看RPT树的建立

成员端DR向RP发送(*,G)Join报文,沿途建立RPT树,建立(*,G)表项

RPF检查为到RP的地址

AR4上有(*,G)表项,但没有下游接口

抓包查看,成员端DR向RP发送Join报文

查看SPT树的建立

组播源发送组播数据

源端DR,也就是AR1将组播数据封装到注册报文中,单播发送给RP

RPF检查为到组播源的地址

RP收到注册报文后:

  • 进行解封装,向下游接口转发
  • 向源端DR发送(S,G)Join报文,建立SPT树,沿途建立(S,G)表项

  • 单播发送Register-Stop报文给源端DR,通告DR停止发送注册报文(模拟器中抓包并未看到

RP到源端DR沿途建立(S,G)表项,AR1中可以看到注册信息

收到组播数据的路由器也会产生(S,G)表项,将(*,G)表项的下游接口信息复制到(S,G)表项中

不在组播转发路径上(但能收到组播数据)的路由器产生(S,G)表项,没有下游接口,如AR4、AR3

组播转发树

由于配置了不进行SPT切换,组播树如下图

将PC2加入组播组239.1.1.1

  • 成员端DR(AR6)向RP发送(*,G)Join报文,创建RPT树
  • RPF检查地址为RP的IP地址

AR1的(S,G)表项中下游接口并没有G0/0/1

AR3的(S,G)表项下游接口G0/0/1

所以PC2的组播转发路径为AR1->AR2->AR3->AR6

思考:组播转发树是什么样的(由于AR6配置了SPT不切换)

SPT切换

取消AR5、AR6上的SPT不切换配置

pim
 undo spt-switch-threshold infinity 
#
  • 组成员端DR路由器收到组播流量到一定阈值后,进行SPT切换
  • 默认情况下,华为的SPT切换的流量阈值为0,所以当组播流量下来时,会发生SPT切换

SPT切换过程

当组成员端DR检测到组播报文的转发速率超过阈值:

  • 组成员端DR向源端DR逐跳发送(S,G)Join报文,创建SPT,沿途生成(S,G)表项(包含下游接口)
  • SPT建立后,组成员端DR向RP发送剪枝报文,修剪(S,G)表项的下游接口
  • 如果组播流量不经过RP,则RP向源端DR逐跳发送剪枝报文,修剪(S,G)表项的下游接口

想组播源端DR发送Join报文

SPT切换后,流量不经过RP,RP向源端DR发送剪枝

可以看到RP上的(S,G)表项下游接口为空,被修剪

AR1上的下游接口为连接AR3的接口

AR3上(S,G)表项出现下游接口

切换后的SPT

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

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

相关文章

软件设计师备考 | 案例专题之数据流图 概念与例题

案例分析专题大纲: 数据流图基本概念 基本图形元素:外部实体、加工、数据存储、数据流 数据流:由一组固定成分的数据组成,表示数据的流向。在DFD中,数据流的流向必须经过加工。加工:描述了输入数据流到输出…

idea 出现 cpu占用100%

一、IDEA的CPU占用率过高 二、解决办法 idea安装路径bin目录 修改idea64.exe.vmoptions配置文件 原来的 -Xms128m -Xmx750m -XX:ReservedCodeCacheSize240m -XX:UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB50 修改为(IDEA优化内存配置) -Xms2048m -Xmx4096m -XX:Reser…

基于Spring Boot的高校图书馆管理系统

项目和论文都有企鹅号2583550535 基于Spring Boot的图书馆管理系统||图书管理系统_哔哩哔哩_bilibili 第1章 绪论... 1 1.1 研究背景和意义... 1 1.2 国内外研究现状... 1 第2章 相关技术概述... 2 2.1 后端开发技术... 2 2.1.1 SpringBoot 2 2.1.2 MySQL.. 2 2.1.3 My…

Git简介以及下载安装和配置

Git介绍 什么是版本控制?什么是Git?什么是集中式版本控制(了解)分布式版本控制工作流程 Git的安装与配置注册邮箱以及用户名(方便远程使用)初始化项目Git在ideal上的使用(本地) 什么是版本控制? ​ 版本控制是指对软件开发过程中各种程序代码,控制文件及说明文档等文件变更…

口碑比较好的相亲交友平台有哪些?正规靠谱的相亲软件排行榜测评

在网络时代,越来越多的人热衷于使用相亲交友软件来寻找生命中的另一半。这些软件确实为许多用户提供了真实可靠的交友平台。然而,市面上的相亲软件种类繁多,质量良莠不齐,让人难以选择。今天,我将介绍几款我使用过且认…

【vue-5】双向数据绑定v-model及修饰符

单向数据绑定:当数据发生改变时,视图会自动更新,但当用户手动更改input的值,数据不会自动更新; 双向数据绑定:当数据发生改变时,视图会自动更新,但当用户手动更改input的值&#xf…

View function mapping is overwriting an existing endpoint function: home_page

这个错误是因为在你的 Flask 应用中,你定义了两个或多个视图函数,它们使用了相同的 endpoint 名称。Flask 不允许多个视图函数使用相同的 endpoint 名称,因为这会导致冲突。 通常,这个错误会出现在以下几种情况下: 你在不同的路由装饰器中使用了相同的 endpoint 名称。你…

C++之第八课

课程列表 今天我们来学一学C里的一些实用的东西。 1.域宽 说到域宽setw&#xff0c;就叒要加头文件了。 #include<iomanip> 使用格式是&#xff1a; cout<<setw(5)<<"123"; setw括号里面可以改数字&#xff0c;后面就是输出内容了&#xff…

服务器端口号怎么看?如何查看服务器端口号呢?有哪些需要注意的?

简单来说&#xff0c;端口号就是计算机与外界通讯交流的出口&#xff0c;每个端口都有不同的编号&#xff0c;也就是“端口号”。它们是唯一的&#xff0c;用于标识不同的服务和应用程序。通过端口号&#xff0c;我们可以知道哪些服务正在运行&#xff0c;以及如何与它们进行通…

基于JSP/Servlet校园二手交易平台(二)

目录 2 开发技术及开发环境 2.1 Java语言简介 2.2 J2EE技术介绍 2.3 Servlet/JSP技术 2.4 MVC 简介 2.5 Struts 技术 2.6 Hibernate 技术 2.6.1 应用程序的分层体系结构 2.6.2 Hibernate的应用及API简介 2.7 开发环境及环境配置 2.7.1 Java/JSP系统环境 2.7.2 JSP环…

MySQL——约束与表的设计基础

前言 本篇文章主要介绍数据库约束以及数据库中有关表设计的一些基础知识&#xff0c;文章会尽量都用实例进行直观的讲解与展示每个知识点的意义&#xff0c;现在就开始今天的学习吧&#xff01;&#xff01; 一、数据库约束 1.约束概述 约束&#xff0c;就是在创建表的时候给…

leedcode【209】. 长度最小的子数组——Java解法

Problem: 209. 长度最小的子数组 题目思路解题方法复杂度Code效果 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存…

TypeScript-类型注解

TS类型注解 指的是给变量添加类型约束&#xff0c;使变量只能被赋值为约定好的类型&#xff0c;同时可以有相关的类型提示 TS支持的常用类型注解 Js 已有类型 // 简单类型 number string boolean null undefined // 复杂类型 数组 函数 Ts 新增类型 联合类型、类型别名、接…

ColossalAI Open-Sora 1.1 项目技术报告 (视频生成)

项目信息 项目地址&#xff1a;https://github.com/hpcaitech/Open-Sora技术报告&#xff1a; Open-Sora 1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs/report_01.mdOpen-Sora 1.1&#xff1a;https://github.com/hpcaitech/Open-Sora/blob/main/docs…

解决移植Metasploitable3到VM虚拟机无网络的问题

第一步 导入后不要开机&#xff0c;先在虚拟机设置里面将原有的两个网络适配器移除。 第二步 接着在选项里面&#xff0c;在客户机操作系统里面&#xff0c;选择Microsoft Windwos(W)&#xff0c; 版本选择Windows Server 2008 R2 x64 第三步 先打开虚拟机&#xff0c;然后…

[书生·浦语大模型实战营]——第二节:课后作业

基础作业 1.使用 InternLM2-Chat-1.8B 模型生成 300 字的小故事 2.使用书生浦语 Web 和浦语对话&#xff0c;和书生浦语对话&#xff0c;并找到书生浦语 1 处表现不佳的案例(比如指令遵循表现不佳的案例)&#xff0c;提交到问卷。 进阶作业 1.huggingface下载功能学习 pip i…

【C++】异常的详细讲解

前言 C是一门面向对象的语言&#xff0c;和面向过程的C语言有很多不一样的&#xff0c;其中这两种语言对程序错误的处理方式就不一样&#xff0c;通常面向对象是通过抛异常的方式来处理错误&#xff0c;而C语言则是通过返回错误码的方式。 目录 1. C语言处理错误的方式2. C异常…

网络变压器原理与维修视频

如果你在寻找网络变压器原理与维修方面的视频教程&#xff0c;可以在网上找一些优质的资料进行学习。一些国内外知名的教育和科技资源网站&#xff0c;如B站、优酷、YouTube等&#xff0c;都有涉及网络变压器原理和维修的视频教程&#xff0c;你可以在这些网站上进行搜索。 通常…

ant design pro 6.0搭建教程

一、搭建 环境&#xff1a; Node.js 18.16.1 ant design pro 6.0 注意&#xff1a;选择umi3时&#xff0c;使用node.js 18版本的会报错&#xff0c;可以实践一下&#xff0c;这里就不再进行实践了。 umi3需要版本是低于node.js 18的 node下载地址&#xff1a; https://nodejs.…

【bugfix】/usr/local/bin/docker-compose:行1: html: 没有那个文件或目录

前言 在使用 docker-compose 管理容器化应用时&#xff0c;偶尔会遇到一些意想不到的错误&#xff0c;比如当尝试运行 docker-compose 命令时&#xff0c;终端非但没有展示预期的输出&#xff0c;反而出现类似网页错误的信息。这类问题通常与 docker-compose 的安装或配置有关…