计算机网络-基于PIM-DM+IGMP的组播实验配置

news2024/11/24 15:25:44

前面我们将IGMP协议和PIM-DM协议理论知识都学完了,现在开始进入实践,毕竟只有完成实践是最好的检验方式。IGMP是用于感知组播组成员,而PIM-DM是用于在域内构建组播分发树的的协议,本次实验使用这两项技术进行分析与实践。

一、拓扑结构

拓扑说明与一些注意事项。组播主要用于一些组播流量、IP电话、IPTV等,在ensp支持使用vlc播放器进行组播推流,因此首先需要安装vlc播放器。

VLC
VLC

然后将工具配置在ensp中,设置--工具设置--VLC选择安装完成后的软件路径。

工具设置
工具设置

拓扑:

组播实验拓扑
组播实验拓扑

这里只有一个组播源因此IGMP使用默认v2即可,AR2、3、4使用交换机连接触发断言机制,连接组播组成员的接口开启igmp,组播转发网络的接口都启用PIM DM,所有设备都在OSPF 1 的Area 0 区域,所有路由器开启组播路由功能

二、基础网络配置

包括IP与路由互通配置,保证组播组成员与组播源能够互相ping通。

组播源设置使用MCS,设置ip地址以及组播组地址

组播源
组播源
组播组设置
组播组设置

AR1:

interface GigabitEthernet0/0/0
 ip address 10.0.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 10.0.2.1 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 10.0.3.1 255.255.255.0 
#
ospf 1 
 area 0.0.0.0 
  network 10.0.1.0 0.0.0.255 
  network 10.0.2.0 0.0.0.255 
  network 10.0.3.0 0.0.0.255

AR2:

interface GigabitEthernet0/0/0
 ip address 10.0.6.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 10.0.2.2 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 172.16.0.254 255.255.255.0 
#
ospf 1 
 area 0.0.0.0 
  network 10.0.2.0 0.0.0.255 
  network 10.0.6.0 0.0.0.255 
  network 172.16.0.0 0.0.0.255

AR3:

interface GigabitEthernet0/0/0
 ip address 10.0.6.3 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 10.0.3.3 255.255.255.0 
#
ospf 1 
 area 0.0.0.0 
  network 10.0.3.0 0.0.0.255 
  network 10.0.6.0 0.0.0.255

AR4:

interface GigabitEthernet0/0/0
 ip address 10.0.6.4 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 10.0.7.4 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 192.168.1.254 255.255.255.0 
#
ospf 1 
 area 0.0.0.0 
  network 10.0.6.0 0.0.0.255 
  network 10.0.7.0 0.0.0.255 
  network 192.168.1.0 0.0.0.255

AR5:

interface GigabitEthernet0/0/0
 ip address 10.0.7.5 255.255.255.0 
#
ospf 1 
 area 0.0.0.0 
  network 10.0.7.0 0.0.0.255

测试网络连通性:

PC连通性
PC连通性

三、组播配置

其实组播配置也不难。

  • 所有路由器开启组播路由功能
  • 组播转发网络接口开启PIM DM
  • 连接组播组成员的接口开启igmp enable

这里先把配置配上,然后组播源再开始播放视频推流进行抓包查看现象。

# AR1
multicast routing-enable            # 全局开启组播路由功能
#
interface GigabitEthernet0/0/0
 ip address 10.0.1.2 255.255.255.0 
 pim dm                             # 启用PIM DM模式
#
interface GigabitEthernet0/0/1
 ip address 10.0.2.1 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/2
 ip address 10.0.3.1 255.255.255.0 
 pim dm
 
# AR2
multicast routing-enable            # 全局开启组播路由功能
#
interface GigabitEthernet0/0/0
 ip address 10.0.6.2 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/1
 ip address 10.0.2.2 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/2
 ip address 172.16.0.254 255.255.255.0 
 igmp enable                          # 开启igmp功能,默认为igmp v2


# AR3
multicast routing-enable            # 全局开启组播路由功能
#
interface GigabitEthernet0/0/0
 ip address 10.0.6.3 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/2
 ip address 10.0.3.3 255.255.255.0 
 pim dm
 
# AR4
multicast routing-enable            # 全局开启组播路由功能
#
interface GigabitEthernet0/0/0
 ip address 10.0.6.4 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/1
 ip address 10.0.7.4 255.255.255.0 
 pim dm
#
interface GigabitEthernet0/0/2
 ip address 192.168.1.254 255.255.255.0 
 igmp enable


# AR5
multicast routing-enable            # 全局开启组播路由功能
#
interface GigabitEthernet0/0/0
 ip address 10.0.7.5 255.255.255.0 
 pim dm

配置完成后暂时是没有什么表项和现象的,因为组播源没有开启播放,没有组播流量触发全网泛洪,组播组成员没有加组无法形成igmp组表项和igmp路由表项。

四、开启组播功能

可以在下面的接口开启抓包观察下现象。 开启抓包

首先可以观察到连接组播组成员的接口发送的普遍组查询报文,每隔60s左右发送一次,向下行接口发往224.0.0.1.

igmpv2查询报文
igmpv2查询报文
报文详情
报文详情

组播源配置:设置完成路径和组播组ip,点击一下组播组MAC地址自动生成,最后点击运行。

组播源设置
组播源设置
播放视频
播放视频
报文
报文

通过抓包查看到组播源向组播组224.1.1.1通过UDP推送流量。

在AR2的G0/0/0口查看到了断言报文以及状态刷新报文,通过查看发现AR2和AR3都发送了断言报文,但是由于AR3的IP地址优先,因此AR3下行接口作为winner发送状态刷新报文。

AR2抓包
AR2抓包

组播组成员加组:

PC加组
PC加组
成功接收到组播流量
成功接收到组播流量

通过抓包查看到组播组成员发送的组成员关系报告,需要加入源为10.0.1.1的组播组224.1.1.1.

报文1
报文1
报文详情
报文详情

AR4查看igmp组表项和igmp路由表项。

AR4查看表项
AR4查看表项
组播路由表
组播路由表
组播实现
组播实现

这里还有一个剪枝报文的前面没有抓包到,算了。由于组播转发网络开启PIM DM,每个路由器都会维护PIM路由表项即使不转发组播流量,然后从第一跳组播路由器会定期发送状态刷新报文全网泛洪。

组播分发树SPT:

最终SPT
最终SPT

本文由 mdnice 多平台发布

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

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

相关文章

操作系统与进程简单介绍

操作系统与进程 操作系统进程 操作系统 上一篇博客中介绍了操作系统到底层硬件它们之间的一个关系,那么还是这张图 操作系统到用户它们之间的关系又是如何的呢? 又回到了最根本的问题上:为什么要有操作系统呢? 1、向下管理好软…

jQuery入门(五)Ajax和json

一、Ajax 简介 AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 本身不是一种新技术,而是多个技术综合。用于快速创建动态网页的技术。 一般的网页如果需要更新内容,必需重新加载个页面。 而 AJAX 通过浏览器与服务器进行…

一篇文章读懂抖音短视频矩阵系统:核心功能与优势分析

抖音短视频矩阵系统作为当下备受欢迎的内容创作与分发平台,已经吸引了大量用户和创作者的关注。本文将详细介绍抖音短视频矩阵系统的核心功能与优势,帮助您全面了解这一强大的内容创作工具。 1. 抖音短视频矩阵系统 抖音短视频矩阵系统是一个集创作、编…

【Hot100】LeetCode—287. 寻找重复数

目录 题目1- 思路2- 实现⭐287. 寻找重复数——题解思路 3- ACM 实现 题目 原题连接:287. 寻找重复数 1- 思路 快慢指针 2- 实现 ⭐287. 寻找重复数——题解思路 class Solution {public int findDuplicate(int[] nums) {int slow nums[0];int fast nums[0];//…

DB-Engines Ranking 2024年8月数据库排行

DB-Engines Ranking 2024年8月数据库排行 DB-Engines排名根据数据库管理系统的受欢迎程度进行排名。排名每月更新一次。 2024年8月,共有423个数据库进入排行。 排行榜 前15名趋势图 关系型数据库前 10 名 键值数据库前 10 名 文档数据库前 10 名 时序数据库前 10 …

从0到1:构建高性能的视频美颜SDK和直播美颜插件

本篇文章,笔者将探讨如何从0到1,构建一个高性能的视频美颜SDK和直播美颜插件,助力开发者打造出色的产品。 1.需求分析与技术选型 通常情况下,视频美颜功能需要包括基础的滤镜效果、磨皮美白、面部特征优化等。这些功能既要保证实…

C++入门级文章

一、一个用于查询C标准库内函数、操作符等的链接 https://legacy.cplusplus.com/reference/ 声明:该文档并非官方文档,但其具有易于查询和使用的优势,足够日常使用。 二、C的第一个程序 1、C语言中的语法在C中仍旧适用,首先我们来…

书生大模型学习笔记 - Python

Python实现wordcount 请实现一个wordcount函数,统计英文字符串中每个单词出现的次数。返回一个字典,key为单词,value为对应单词出现的次数。 解题思路:首先把字母转小写>然后把单词取出来去除标点>循环单词列表>key已存…

老板让你点评网页UI,你却不知道如何说起……

当评价网页UI设计时,可以参考以下几个标准: 1. 一致性(Consistency): 一个优秀的网页UI应该保持一致性,即在整个网页中使用相同的设计元素和样式,如颜色、字体、按钮样式等。这样可以增加用户…

2024年【北京市安全员-B证】新版试题及北京市安全员-B证模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 北京市安全员-B证新版试题考前必练!安全生产模拟考试一点通每个月更新北京市安全员-B证模拟试题题目及答案!多做几遍,其实通过北京市安全员-B证作业考试题库很简单。 1、【多选题】…

Html实现全国省市区三级联动

目录 前言 1.全国省市区的Json数据 2.找到Json数据文件(在此博文绑定资源)之后,放到resource目录下。 3.通过类加载器加载资源文件,读取Json文件 3.1 创建JsonLoader类 3.2 注入JsonLoader实体,解析Json文件 4.构建前端Html页面 5.通过…

至尊雄心:成为不甘平庸的男人,掌握顶级赢家思维

至尊雄心:成为不甘平庸的男人,掌握顶级赢家思维 嘿,伙计们!如果你是个有抱负的男人,或者你想要成为一个有成就的男人,那么这篇文章就是为你量身定做的。这里,我们将一起探讨那些顶级赢家的思维…

开源蓝牙协议栈-Zephyr Bluetooth

关于Zephyr的介绍,参考: https://blog.csdn.net/2201_75889983/article/details/129366754 Zephyr最初是由Wind River公司开发的一个微内核,在2016年的时候成为Linux基金会维护的一个项目,发展至今,已经成为了一个功能…

国内访问github出现无法访问,用Watt Toolkit加速

文章目录 前置1. 访问github出现“无法访问...”2. 安装Watt Toolkit点击下载接受并下载下载渠道 Watt Toolkit 就绪侧栏“网络加速”下拉滚动条勾选github,点右上“一键加速”再次访问 github.com ,可以访问 前置 准备好微软账号 1. 访问github出现“无法访问…”…

vulnhub靶机:Tomato

目录 靶机导入 信息收集 发现 IP 目录扫描 端口扫描 访问 web 漏洞利用 方法1:报错连接拿 shell 方法2: 使用python3进行反弹shell 提权 靶机导入 tomato 下载地址:Tomato: 1 ~ VulnHub 信息收集 发现 IP arp-scan -l 发现靶机 IP…

【Qt】QMainWindow之菜单栏

目录 一.菜单栏 1.概念 2.组成 二.代码创建菜单栏 1.创建菜单栏 2.在菜单栏中添加菜单 3.在菜单中添加菜单项 三.图形化创建菜单栏 1.在打开Qt自带的ui文件界面后,得到以下界面 2.双击点击界面中(在这里输入),在菜单栏中进行…

【开端】JAVA日志框架LogFactory

熟悉的一行代码 private static final Log logger LogFactory.getLog(Application.class); 这一行代码就是使用了LogFactory日志框架,对类Application,进行日志输出。 private static final 这里表示虚拟机启动后就创建一个最终的日志对象Log logger 创…

MySQL学习(18):触发器

1.什么是触发器 *触发器是在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。 *日志记录,数据校验等操作使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容。OLD引用的是触发器变化前的内容,NEW引用的是触发…

鸿蒙Flex布局

效果: 代码: 换行代码参数设置: wrap:FlexWrap.Wrap Entry Component struct FlexCase {State message: string Hello World;build() {Flex({direction:FlexDirection.Row,justifyContent:FlexAlign.SpaceAround,alignItems:ItemAlign.Cen…

QT和Electron之争,谁才是王者,看看界面判断下

QT 和 Electron 都是用于开发跨平台应用程序的框架,但很难简单地判定谁是“王者”,因为它们各有优劣,适用于不同的场景和需求。 QT 是一个成熟的 C 框架,具有以下优点: 性能出色:由于是基于 C 开发&#…