Mesh(802.11s)组网 — 基于OpenWRT路由器

2023-11-18

一、mesh网络

1、mesh网络拓补图

2、介绍


二、OpenWRT路由器Mesh网络配置

1、准备阶段

       在这里插入图片描述
  说明:本次测试用2台单WiFi路由器作为测试,wifi用于组建Mesh网络连接,因此内网已无额外WiFi可以提供使用,因此局域网用有线网络连接。
  准备2台 OpenWRT路由器,分别为 R1和 R2,2台电脑PC1和PC2分别接在R1和R2的lan口;路由器R1作为网络提供设备,R2通过 R1 mesh网络连接上网。配置R1路由器 wan口和 lan口地址,使路由器能正常上网;配置R2的lan口地址,关闭lan口的DHCP。配置如下:
 R1:                   R2:
  WAN:192.168.1.10(静态ip上网)     WAN:0.0.0.0(不接网线)
  LAN: 192.168.2.1(启用DHCP)     LAN: 192.168.2.2(关闭DHCP
  PC1: 192.168.2.10(自动获取)      PC1: (组网成功后获取)

  R1和R2 Lan IP可以是同一个网段,也可以是不同网段地址,甚至可以是相同网段的相同IP。以下列举了三种情况:
  (1)、若Lan1和Lan2 IP相同,PC1和PC2只能访问到R1,而无法访问R2,R1和R2之间也无法相互访问;
  (2)、若Lan1和Lan2是不同网段IP,PC2可以访问R2,但R1和R2之间无法相互访问。
  (3)、若Lan1和Lan2是相同网段不同IP,则R1和R2之间能相互访问,PC1和PC2也都能访问R2.

2、路由器 Mesh网络配置

(1)、主路由器R1无线配置

在这里插入图片描述
  登录openwrt luci配置界面,选择 “网络 -> 无线 -> 编辑”,选择其中一个信道,但需注意mesh网内的所有信道必须一致(这边R1和R2的信道都选择默认11);模式选择 “802.11s”,填写自定义mesh id,网络选择 “lan”网络。
  为了保证在网络信号不好的情况下仍然能够保持连接上,可以选择关闭弱信号时断开网络选项,较低版本OpenWRT版本在 “接口配置 -> 基本配置 -> 弱信号剔除”,较高版本OpenWRT版本在 “接口配置 -> 高级设置 -> 在低 Ack 应答时断开连接”,只要取消勾选即可。

(2)、副路由器R2无线配置

在这里插入图片描述
  R2的配置与R1的无线配置基本相同,只要信道、模式、ID、网络一致即可。连接成功后可以看到已连接设备:
在这里插入图片描述


### 3、Mesh网络测试   在R1和R2路由器终端上分别进行ping对端LAN IP地址测试,能相互ping通则表示两台路由器的Mesh组网连接成功。   分别在PC1和PC2上进行ping对端IP地址测试,能相互ping通表示Mesh组网网络成功。

三、Mesh网络文件配置

1、文件配置

R1和R2路由器使用如下相同的配置即可:

/etc/config/wireless】
config wifi-device 'radio0'
	option type 'mac80211'
	option channel '11'				# 无线信道
	option hwmode '11g'
	option path 'platform/ar934x_wmac'
	option htmode 'HT20'
	option disabled '0'				# 启用无线

config wifi-iface
	option device 'radio0'			# 对应网络设备
	option network 'lan'			# 桥接到lan
	option  ifname 'wlan0'			# 接口名称(可不配置使用默认名称)
	option mode 'mesh'				# 模式
	option mesh_id 'mesh-123'		# mesh id
	option encryption 'none'		# 不加密

2、查看组网状态

重启网络:

/etc/init.d/network restart

查看mesh节点:

wlan0     Link encap:Ethernet  HWaddr CA:AC:88:D2:B7:99  
          inet6 addr: fe80::c8ac:88ff:fed2:b799/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14142 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17291 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2005013 (1.9 MiB)  TX bytes:3227824 (3.0 MiB)

查看mesh网络状态:

root@OpenWrt:~# iw dev wlan0 station dump
Station ca:ac:88:0b:91:22 (on wlan0)			// 显示为对端路由器MAC
	inactive time:	70 ms
	rx bytes:	    5849927
	rx packets:	    62594
	tx bytes:	    3258597
	tx packets:	    17684
	tx retries:	    7790
	tx failed:	    3
	rx drop misc:	704
	signal:  	    -49 [-60, -49] dBm
	signal avg:	    -49 [-59, -49] dBm
	Toffset:	     2804865 us
	tx bitrate:	     78.0 MBit/s MCS 12
	rx bitrate:	     130.0 MBit/s MCS 15
	rx duration:	1442929 us
	expected throughput:	29.21Mbps
	mesh llid:	    51134
	mesh plid:	    15726
	mesh plink:	    ESTAB
	mesh local PS mode:	    ACTIVE
	mesh peer PS mode:	    ACTIVE				// 成功-ACTIVE  失败-UNKNOWN
	mesh non-peer PS mode:	ACTIVE
	authorized:	    yes
	authenticated:	yes
	associated:	    yes
	preamble:	    long
	WMM/WME:	    yes
	MFP:		    no
	TDLS peer:	    no
	DTIM period:	2
	beacon interval:100
	short slot time:yes
	connected time:	2391 seconds

  经过本人测试发现,若连接成功后对端mesh网络断开了,上述指令无法查询到连接已断开;可以通过检测mesh网络的收发数据状态来判断当前mesh网络是否已出现异常,若网络出现异常则重启网络。


三、总结

Mesh组网网络有些类似 WiFi中继网络,当两者还是有很大区别的,如下做说明:
相同点
  1、mesh组网和wifi中继的副路由器都能继承主路由器的网络,继承后的网络与原网络在同一个局域网内,相当于将主路由器的网络覆盖范围扩大化;
  2、副路由器虽然都继承了主路由器的无线网络,但副路由器若只有单wifi,则该wifi被用于连接主路由器网络后,不再释放热点供其它设备使用;

不同点
  1、wifi中继主路由器做为AP提供热点,该热点是可以同时被其它网络设备搜索到和使用;而mesh网络的主路由器无线作为mesh点后将不再提供热点;
  2、副路由器中继只能串联一台主路由器,若多个路由器串联成一条线路,则中间若其中一台路由故障将导致后面所有路由器失去网络;Mesh网络副路由器若当前连接的主路由器无线出现异常,可以继续连接mesh网络内的其它mesh节点;
  3、(经本人实测测试发现)中继网络两端节点的信道可以不同,而Mesh网络两端节点的信道必须一致才能组网成功。(网络上也有人说中继两端信道需要一致,但本人测试发现并非如此)


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mesh(802.11s)组网 — 基于OpenWRT路由器 的相关文章

  • 在我的 index.php 中加载 CSS 和 JS 等资源时出现错误 403

    我使用的是 Linux Elementary OS 并在 opt 中安装了 lampp My CSS and JS won t load When I inspect my page through browser The console
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • Linux - 从第二个选项卡获取文本

    假设我们有这样的文件 一些文本11 一些文本12 一些文本13 一些文本21 一些文本22 一些文本23 文本由制表符分隔 我们知道第 1 列中的一些文本 但希望从第 2 列中获取文本 我知道我可以通过以下方式获取线路 grep somet
  • 我如何知道 C 程序的可执行文件是在前台还是后台运行?

    在我的 C 程序中 我想知道我的可执行文件是否像这样在前台运行 a out 或者像这样 a out 如果你是前台工作 getpgrp tcgetpgrp STDOUT FILENO or STDIN FILENO or STDERR FIL
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • Linux 上的基准测试程序

    对于一项任务 我们需要使用不同的优化和参数来对我们的实现进行基准测试 有没有一种可行的方法可以在Linux命令行 我知道时间 上使用不同的参数对小程序进行基准测试 从而为我提供CSV或类似内容的时间数据 输出可能类似于 Implementa
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • Awk - 计算两个文件之间的每个唯一值和匹配值

    我有两个文件 首先 我尝试获取第 4 列中每个唯一字段的计数 然后匹配第二个文件的第二列中的唯一字段值 File1 第 4 列的每个唯一值和 File2 第 2 列包含我需要在两个文件之间匹配的值 所以本质上 我试图 gt 如果 file2
  • Gearman,php 扩展问题:使用终端在 .. 中找不到类“GearmanWorker”,但可以在浏览器上使用

    我最近在 ubuntu 10 04 上安装了 gearman 并安装了它的 pecl 扩展 现在 当我在浏览器中运行一个 php 文件时 其中包含 client new GearmanWorker die var Dump client I
  • linux命令中括号的用途是什么[重复]

    这个问题在这里已经有答案了 我在 Linux 终端中运行以下命令 谁能告诉我 Linux 终端中括号和以下命令的用途是什么 echo GET HTTP 1 0 echo 主机 www google com echo 数控 www googl
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏

随机推荐

  • openGL之API学习(六十八)core profile、compatibility profile、forward compatibility

    在OpenGL的发展历程中 总是兼顾向下兼容的特性 但是到了一定的程度之后 这些旧有的OpenGL API不再适应时代的需要 还有一些扩展并不是驱动一定要实现的扩展 这些被统一划入可选的Compatibility Profile 而由Ope
  • 信号的时域相位、频域相位

    文章目录 傅里叶变换的时移性质 matlab代码 单点频信号 线调信号 时域相位 频域相位 傅里叶变换的时移性质 信号增加线性相位时 是所有的频率分量对应的相位都有变化 matlab代码 清空一切 clc clear all close a
  • 翻译:《实用的Python编程》01_07_Functions

    目录 上一节 1 6 文件 下一节 2 0 处理数据 1 7 函数 随着程序开始变大 我们会想要有条理地组织这些程序 本节简要介绍函数 库模块以及带有异常的错误处理 自定义函数 对你要重用的代码使用函数 下面是函数的定义方式 def sum
  • 数据结构--图的学习(基础概念)

    目录 图的定义 图的逻辑结构应用 无向图 有向图 编辑 简单图 多重图 顶点的度 入读 出度 顶点 顶点的关系描述 连通图和强连通图 子图 1 无向图的子图 编辑 2 有向图的子图 连通分量 强连通分量 生成树 生成森林 边的权 带权图 网
  • 2014年3月7日星期五(DEMO8-4,实体三角形着色)

    这个例子比较大 任重而道远 理论草草看了下 光记住索引和RGB各项求最小距离了 为简单起见 拷贝7 6过来 并把8 3封装到的引擎代码拷贝替换 逐行来看 各个击破 先换成800 600视口 define SCREEN WIDTH 800 d
  • mysql之基础查询,条件查询测试题07

    1 基础查询 条件查询测试题 看图 结果 1 SELECT salary last name FROM employees WHERE commission pct IS NULL AND salary lt 18000 2 SELECT
  • STM32F407 CAN1 CAN2

    注意CAN1可以单独使用 CAN2要开启CAN1时钟才能使用 u8 CAN1 Mode Init u8 mode GPIO InitTypeDef GPIO InitStructure CAN InitTypeDef CAN InitStr
  • DBeaver 如何配置离线驱动

    1 打开已经下载过DBeaver驱动的软件 点击 数据库 驱动管理器 进入 2 选中 MySQL 点击右侧的 编辑 进入 3 点击页签 库 打开列表内容 选中 mysql connector java 8 0 17 jar 点击 类路径 4
  • Android用surface直接显示yuv数据(二)

    研究了一段时间Android的surface系统 一直执着地认为所有在surface或者屏幕上显示的画面 必须要转换成RGB才能显示 yuv数据也要通过颜色空间转换成RGB才能显示 可最近在研究stagefright视频显示时发现 根本找不
  • 泰克

    主要功能 硬件连接 参数配置 运行参数 数据查询 程控对象 示波器 程控接口 兼容市面上所有具有GPIB USB RS232 LAN RS485 TTL任意一种程控接口的示波器 仪器兼容性 泰克Tektronix 是德科技Keysight
  • CISC RISC ARM MIPS区别与联系

    转载 文章有点老 不过还是有所收获 补充一句 国内那么多牛人研究处理器架构 要钱有钱 要人有人 ARM都能获得如此成就 为啥国产那么多CPU团队都不成功 其它类型的芯片也一样 大多都是买国外IP 个人理解 相关专利太少 也就是积累不足 无法
  • 【MATLAB第31期】基于MATLAB的降维/全局敏感性分析/特征排序/数据处理回归问题MATLAB代码实现(持续更新)

    MATLAB第31期 基于MATLAB的降维 全局敏感性分析 特征排序 数据处理回归问题MATLAB代码实现 持续更新 本文敏感性分析主要分析回归问题 下期分析分类问题 fisher rf arf nca等 内容更新 增加视频解说 基于MA
  • npm创建openlayer(入门)

    1 搭建node js开发环境 2 创建目录 mkdir ol deme 3 安装ol包 npx create ol app 4 打开 npm start
  • flex布局和grid布局

    flex布局 父容器 parent 8个设置项 parent display flex flex direction row row reverse column column reverse 决定子元素的排列方式 flex wrap no
  • 服务器系统磁盘分区,服务器磁盘分区教程

    服务器磁盘分区教程 内容精选 换一换 对于Linux弹性云服务器 磁盘分区与磁盘设备名称完全对应 本节以Red Hat Enterprise Linux 7的图形界面为例 介绍查询Linux弹性云服务器磁盘分区与磁盘设备的方法 以root权
  • pandas导入和导出数据至MySQL数据库

    安装准备 可以不用看 同学们在进行数据分析 数据处理时经常会使用pandas来储存结构化数据 我们在数据处理中会出现各种的过程文件或最终文件 虽然pandas给我们提供了非常多的输出结口 比如csv文件 xlsx文件 但在软件开发过程中db
  • 关于httpurlconnection getcontentlength返回值为-1的问题

    在做AsyncTask异步任务读取网络数据的时候 发现了httpUrlConnection的获取数据内容长度 connection getContentLength 总是为 1 导致进度条一直为灰色状态 预期结果应如图所示 而现在的效果是这
  • 网络协议的三要素

    一个网络协议主要由语法 语义和同步三个要素组成 1 语法 语法指数据与控制信息的结构或格式 确定通信时采用的数据格式 编码及信号电平等 2 语义 语义由通信过程的说明构成 它规定了需要发出何种控制信息 完成何种控制动作以及做出何种应答 对发
  • timeout in locking authority file in /home/**/.Xauthority,

    进入终端后使用startx命令 看是否有错误提示 我的当时是 timeout in locking authority file in home Xauthority 解决办法是将 Xauthority删掉 在检查用户目录权限 确定为775
  • Mesh(802.11s)组网 — 基于OpenWRT路由器

    一 mesh网络 1 mesh网络拓补图 2 介绍 二 OpenWRT路由器Mesh网络配置 1 准备阶段 说明 本次测试用2台单WiFi路由器作为测试 wifi用于组建Mesh网络连接 因此内网已无额外WiFi可以提供使用 因此局域网用有