bridge-multicast-igmpsnooping
# 1.topo

# 2.创建命名空间
ip netns add ns0
ip netns add ns1
ip netns add ns2
ip netns add ns3
# 3.创建veth设备
ip link add ns0-veth0 type veth peer name hn0-veth0
ip link add ns1-veth0 type veth peer name hn1-veth0
ip link add ns2-veth0 type veth peer name hn2-veth0
ip link add ns3-veth0 type veth peer name hn3-veth0
# 4.veth设备放入命名空间,启动接口
ip link set ns0-veth0 netns ns0
ip link set ns1-veth0 netns ns1
ip link set ns2-veth0 netns ns2
ip link set ns3-veth0 netns ns3
ip -netns ns0 link set ns0-veth0 up
ip -netns ns1 link set ns1-veth0 up
ip -netns ns2 link set ns2-veth0 up
ip -netns ns3 link set ns3-veth0 up
# 5.创建br0,添加接口到br0
brctl addbr br0
ip link set br0 up
brctl addif br0 hn0-veth0
brctl addif br0 hn1-veth0
brctl addif br0 hn2-veth0
brctl addif br0 hn3-veth0
ip link set dev hn0-veth0 up
ip link set dev hn1-veth0 up
ip link set dev hn2-veth0 up
ip link set dev hn3-veth0 up
# 7.配置地址
ip -netns ns0 addr add 1.1.1.10/24 dev ns0-veth0
ip -netns ns1 addr add 1.1.1.11/24 dev ns1-veth0
ip -netns ns2 addr add 1.1.1.12/24 dev ns2-veth0
ip -netns ns3 addr add 1.1.1.13/24 dev ns3-veth0
# 8.测试
# 8.1测试iperf
ip netns exec ns0 iperf -s -u -B 239.1.1.1 -p 5001 //server
ip netns exec ns1 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.11
ip netns exec ns2 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.12
ip netns exec ns3 iperf -c 239.1.1.1 -p 5001 -u -b 0.1m -B 1.1.1.13
tcpdump -i br0 -e
# 8.2测试 igmp snooping
## bridge开启igmp snooping
echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_querier //启用 IGMP 查询器功能
echo 1 > /sys/devices/virtual/net/br0/bridge/multicast_snooping // IGMP Snooping 功能^S
echo 100 > /sys/devices/virtual/net/br0/bridge/multicast_query_interval //IGMP 查询消息的发送间隔
echo 4 > /sys/devices/virtual/net/br0/bridge/multicast_query_response_interval
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6 //关闭ipv6协议栈
## 添加组播组
smcroute -d
ip netns exec ns1 smcroute -d
ip netns exec ns1 smcroutectl join ns1-veth0 239.0.0.99 //加入组播组
ip netns exec ns2 smcroute -d
ip netns exec ns2 smcroutectl join ns2-veth0 239.0.0.99 //加入组播组
bridge mdb show br0

## 发送组播报文
//发送组播
ip netns exec ns0 ip route add 239.0.0.0/8 dev ns0-veth0 添加路由,sendip才发送处理组播报文
ip netns exec ns0 sendip -p ipv4 -is 1.1.1.10 -id 239.0.0.99 -p udp -us 5000 -ud 5001 -d "Hello, Multicast!" 239.0.0.99
## 抓包
ip netns exec ns1 tcpdump -i ns1-veth0 -e
ip netns exec ns2 tcpdump -i ns2-veth0 -e
ip netns exec ns3 tcpdump -i ns3-veth0 -e
ns1、ns2能收到,ns3收不到。
# 9.删除
ip netns del ns0
ip netns del ns1
ip netns del ns2
ip netns del ns3
ip link set br0 down
brctl delbr br0
ip link del hn0-veth0
ip link del hn1-veth0
ip link del hn2-veth0
ip link del hn3-veth0
# 组播
cat /sys/devices/virtual/net/br0/bridge/multicast_snooping
cat /proc/net/igmp
ip maddr show dev br0
# smcroute
ip netns exec ns0 smcroute -d //命名空间开启进程
smcroute -d //开启进程
smcroutectl join br0 224.0.0.99 //加入组播组
smcroutectl leave br0 224.0.0.99 //离开组播组
cat /proc/net/igmp
cat /proc/sys/net/ipv4/conf/all/mc_forwarding
发送单播报文
ip netns exec ns0 sendip -p ipv4 -is 1.1.1.10 -id 1.1.12 -p udp -us 5000 -ud 5001 -d "Hello, Multicast!" 1.1.1.12
# 11.参考
Ubuntu Manpage: smcroute — SMCRoute, a static multicast router
相关文章:
bridge-multicast-igmpsnooping
# 1.topo # 2.创建命名空间 ip netns add ns0 ip netns add ns1 ip netns add ns2 ip netns add ns3 # 3.创建veth设备 ip link add ns0-veth0 type veth peer name hn0-veth0 ip link add ns1-veth0 type veth peer name hn1-veth0 ip link add ns2-veth0 type veth pe…...
git使用(一)
git使用(一) 为什么学习git?两种版本控制系统在github上创建一个仓库(repository)windows上配置git环境在Linux上配置git环境 为什么学习git? 代码写了好久不小心删了,可以使用git防止,每写一部分代码通…...
Linux环境安装MongoDB
文章目录 1. 查看Linux系统的发行版本2. 下载MongoDB3. 安装MongoDB3.1 新建几个目录,分别用来存储 MongoDB 的数据和日志3.2 新建日志文件3.3 新建配置文件 4. 将MongoDB注册为服务4.1 新建服务文件4.2 编写服务文件 5. MongoDB服务相关操作5.1 启动MongoDB服务5.2…...
Cyberchef使用功能之-多种压缩/解压缩操作对比
cyberchef的compression操作大类中有大量的压缩和解压缩操作,每种操作的功能和区别是什么,本章将进行讲解,作为我的专栏《Cyberchef 从入门到精通教程》中的一篇,详见这里。 关于文件格式和压缩算法的理论部分在之前的文章《压缩…...
TypeScript 装饰器都有那些应用场景?如何更快的上手?
TypeScript 装饰器简介 在 TypeScript 中,装饰器(Decorators)是一种特殊的语法,用于在类、类方法、属性、访问器等上动态地添加行为或修改现有行为。装饰器可以用来增强类的功能、修改方法的行为,或者修改类的元数据等…...
堆优化版本的Prim
prim和dijkstra每轮找最小边的松弛操作其实是同源的,因而受dijkstra堆优化的启发,那么prim也可以采用小根堆进行优化。时间复杂度也由 O ( n 2 ) O(n^2) O(n2)降为 O ( n l o g n ) O(nlogn) O(nlogn)。 测试一下吧:原题链接 #include <i…...
Ubuntu上安装MySQL并且实现远程登录
目录 下载网络工具 查看网络连接 更新系统软件包; 安装mysql数据库 查看mysql数据库状态 以数字ip形式显示mysql的监听状态。(默认监听端口是3306) 查看安装mysql数据库时系统创建的目录信息。 根据查询到的系统用户名以及随机密码&a…...
蓝桥杯每日真题 - 第21天
题目:(空间) 题目描述(12届 C&C B组A题) 解题思路: 转换单位: 内存总大小为 256MB,换算为字节: 25610241024268,435,456字节 计算每个整数占用空间: 每个 32 位整数占用…...
(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(下)----空间数据的编辑与处理(超超超详细!!!)
续上篇博客(长期更新)《零基础入门 ArcGIS(ArcMap) 》实验一(上)----空间数据的编辑与处理(超超超详细!!!)-CSDN博客 继续更新 目录 什么是拓扑? 1.3.5道路…...
NLP论文速读(CVPR 2024)|使用DPO进行diffusion模型对齐
论文速读|Diffusion Model Alignment Using Direct Preference Optimization 论文信息: 简介: 本文探讨的背景是大型语言模型(LLMs)通过人类比较数据和从人类反馈中学习(RLHF)的方法进行微调,以…...
操作系统——揭开盖子
计算机执行时——取指执行 es:bx等于从0x9000开始,到0x90200结束...
如何在 React 项目中应用 TypeScript?应该注意那些点?结合实际项目示例及代码进行讲解!
在 React 项目中应用 TypeScript 是提升开发效率、增强代码可维护性和可读性的好方法。TypeScript 提供了静态类型检查、自动补全和代码提示等功能,这对于 React 开发者来说,能够帮助早期发现潜在的 bug,提高开发体验。 1. 项目初始化 在现…...
C++学习第四天
创作过程中难免有不足,若您发现本文内容有误,恳请不吝赐教。 提示:以下是本篇文章正文内容,下面案例可供参考 一、计算类对象的大小 #include<iostream> using namespace std;class Date { public:void Init(int year, in…...
【从零开始的LeetCode-算法】3232. 判断是否可以赢得数字游戏
给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中,Alice 可以从 nums 中选择所有个位数 或 所有两位数,剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和,则 Alice 获胜。 如果 Alice 能赢得这场游…...
一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
平台如何检测一路RTSP流是否在线? 在之前的流媒体平台方案中,我们都是通过定时RTSP拉流的方式,走一个完整的RTSP流程:包括OPTIONS、DESCRIBE、SETUP、PLAY、RTP收流,这种方式去取流,然后取到流之后进行流解…...
24/11/22 项目拆解 艺术风格转移
我们有时候想把两种艺术风格整合,创造更具艺术特色的艺术品,人很难办到,但是人工智能可以,比如下面将艺术画的风格转移到照片上。 我们先来初步了解一下实现上述功能的数学原理 所谓艺术风格,其实就是边缘,颜色&#…...
数字赋能,气象引领 | 气象景观数字化服务平台重塑京城旅游生态
在数字化转型的浪潮中,旅游行业正以前所未有的速度重塑自身,人民群众对于高品质、个性化旅游服务需求的日益增长,迎着新时代的挑战与机遇,为开展北京地区特色气象景观预报,打造“生态气象旅游”新业态,助推…...
关于Redux的学习(包括Redux-toolkit中间件)
目录 什么是 Redux ? 我为什么要用 Redux ? 我什么时候应该用 Redux ? Redux 库和工具 React-Redux Redux Toolkit Redux DevTools 拓展 一个redux小示例 代码示例(很有用): Redux 术语 Actions Reducers Store Dis…...
【无人机】
GJI Mini 4 Pro学习 首次飞行使用 01 开箱 打开长飞套装 依次取出产品及配件 飞行器、DJI RC - N2(DJI RC 2)、桨叶/螺丝、云台保护罩、束桨器、电池、螺丝刀、USB-C快接线、单肩包、USB-C数据线、充电管家 02 准备飞行器 取下束桨器,…...
Zabbix7.0.6的容器镜像准备
准备Zabbix7.0.6部署所需的容器镜像。 更新时间:20241122 一、准备数据库镜像 1、核对版本支持 根据Zabbix官网文档requirements 可知,当前最新的Zabbix 7.0.6对PostgreSQL数据库的要求如下: support for PostgreSQL versions:- 17.X …...
Toybox代码贡献指南:从入门到精通的开源参与流程
Toybox代码贡献指南:从入门到精通的开源参与流程 【免费下载链接】toybox toybox 项目地址: https://gitcode.com/gh_mirrors/to/toybox Toybox是一个集成了多种Linux命令行工具的开源项目,通过单一的多调用二进制文件提供丰富功能。本指南将带您…...
lite-avatar形象库效果展示:教师数字人在直播授课场景中的眼神交互与手势模拟
lite-avatar形象库效果展示:教师数字人在直播授课场景中的眼神交互与手势模拟 1. 引言:当数字人老师走进直播间 想象一下,你正在准备一场面向数千名学生的在线直播课。除了精心准备的课件和讲稿,你还需要一个能清晰传达知识、与…...
WebPlotDigitizer终极指南:从科研图表到结构化数据的完整解决方案
WebPlotDigitizer终极指南:从科研图表到结构化数据的完整解决方案 【免费下载链接】WebPlotDigitizer Computer vision assisted tool to extract numerical data from plot images. 项目地址: https://gitcode.com/gh_mirrors/we/WebPlotDigitizer 在科研和…...
仅限首批内测开发者获取:CPython无GIL预编译二进制+无锁标准库API速查表(含ABI兼容性矩阵与降级熔断方案)
第一章:Python无锁GIL环境下的并发模型概览Python 的全局解释器锁(GIL)长期被视为多线程 CPU 密集型任务的瓶颈。然而,随着 CPython 3.13 的正式引入“实验性无锁 GIL”(--without-pymalloc 配合 --with-gildisabled 构…...
GESP2025年3月认证C++三级( 第一部分选择题(1-8))
🎯 第1题:Base64魔法箱📜 题目核心: 👉 每 3个字节 → 变成4个字节1、🧠 故事理解有一个魔法机器:👉 每放进去 3个苹果 🍎🍎🍎(不足3个…...
一码一物的生成软件,为什么总能先把窜货和返利黑洞堵住?
一码一物的生成软件,为什么总能先把窜货和返利黑洞堵住?很多老板嘴上说生意难做,真把账摊开看,难的不是卖不出去,而是货卖到哪儿不知道、钱花给谁不清楚、促销有没有真拉动更说不明白。一码一物的生成软件,…...
嵌入式开发语言选择:C与C++的实战对比
1. 嵌入式开发语言选择的核心考量在嵌入式系统开发领域,C和C的争论已经持续了数十年。作为一名在工业控制和消费电子领域工作多年的嵌入式工程师,我见证了从8位单片机到多核处理器的演进过程。选择开发语言绝非简单的技术偏好问题,而是需要综…...
Cuvil + HuggingFace Pipeline端到端加速实录:BERT-base推理延迟从142ms降至31ms的6个关键编译开关
第一章:Cuvil 编译器在 Python AI 推理中的应用 面试题汇总Cuvil 是一款面向 AI 推理场景的轻量级领域专用编译器(DSL Compiler),专为优化 Python 中基于 PyTorch/TensorFlow 模型的部署而设计。它通过静态图分析、算子融合与硬件…...
8 鸿蒙多任务并发场景性能瓶颈排查 | 鸿蒙开发筑基实战
8 鸿蒙多任务并发场景性能瓶颈排查 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文面向鸿蒙应用开发工程师,聚焦多任务并发场景下的卡顿、掉帧、响应延迟等核心痛点,提供一套通用工程级排查流程。从任务调度…...
关于准备智慧校园建设专项资金申报材料的参考清单
✅作者简介:合肥自友科技 📌核心产品:智慧校园平台(包括教工管理、学工管理、教务管理、考务管理、后勤管理、德育管理、资产管理、公寓管理、实习管理、就业管理、离校管理、科研平台、档案管理、学生平台等26个子平台) 。公司所有人员均有多…...
