Wi-Fi R-Mesh 介绍
Wi-Fi R-Mesh 拓扑结构
如下图所示,Wi-Fi R-Mesh 是一个树形 Mesh 网络,用于增加 Wi-Fi 覆盖范围,让距离 AP 较远的设备也能获得稳定的网络连线。
Wi-Fi R-Mesh 拓扑结构
Wi-Fi R-Mesh 优势
Wi-Fi R-Mesh 具有以下突出优势:
应用层软件开发无感:
所有的 Mesh 协议都在 Wi-Fi 驱动层实现,不管是根节点还是子节点,应用层都可以将当前的节点视为是一个和 AP 连接的 Wi-Fi Station。
Wi-Fi 配网程序无需更新。
百微秒级别的快速配对和切换:
当检测到信号更好的父节点的时候,子节点可以快速的从旧的父节点切换到新的父节点,而不影响数据通信。
当父节点发生问题时(掉电或挂住),子节点可以迅速检测到并切换到另一个父节点,而不影响数据通信。
一个节点可以携带其所有的子节点一起切换到另外一个父节点,所有节点的数据通信不受影响。
经过数跳的设备也具备较高的吞吐量:
R-Mesh 转发无须经过 TCP/IP 协议栈,数据转发都在底层驱动实现,可以节省 SRAM 和 MCU 算力。
软件处理时间极短,可以获得更好的吞吐量。
整个 Mesh 网络具有很高的稳定性:
软件处理极其简单,也不需要算法维护路由表,所以整个网络会非常的稳定。
传统 Mesh 网络的 环路 问题不会发生。
Wi-Fi R-Mesh 数据流
Wi-Fi R-Mesh 直接在 Wi-Fi 驱动层实现数据转发, 消耗极少的 SRAM 和 MCU 算力。
由于需要极少的软件处理过程,所以即使经过几跳的节点也会有很好的吞吐量。
Wi-Fi R-Mesh 数据流
Wi-Fi R-Mesh 网络容量
Wi-Fi R-Mesh 中每个根节点下可以连接的子节点个数称为 R-Mesh 的网络容量。
如拓扑结构所示,网络容量为 4,则每个根节点只可以连接 4 个节点,不管拓扑的形式是哪一种。
拓扑 0:所有子节点都直接连接到根节点
拓扑 3:4 个节点形成一个 4 跳的线型网络
也可能是拓扑 0 和拓扑 3 之间的其他拓扑结构
网络容量为 4
网络容量为 32
Wi-Fi R-Mesh NAT(R-NAT)
由于 R-Mesh 的每个节点都会和 AP 创建真实的 Wi-Fi 连线,在 AP 可以连接的 Station 数量受限的情况下,R-Mesh 可以支持的节点个数也会受限。
基于此,我们可以使用 Station + SoftAP 基于 NAT 协议来扩展 R-Mesh 中节点的数量。此时,根节点及子节点会和 SoftAP 连线,而不是和 AP 连线。NAT 协议用于 AP 网络和 R-Mesh 网络之间的数据转发。
在 R-Mesh 中,我们称这样的节点为 R-NAT 节点。
如下图所示,R-NAT 节点放在根节点和 AP 之间,用于扩展可以接入网络的节点数量。
Wi-Fi R-NAT
Wi-Fi R-Mesh 吞吐量
吞吐量测试
与普通的 Station 或 AP 模式无异,我们可以通过 iperf 命令测试 R-Mesh 的吞吐量。如下图所示,在 AP 端和节点端的 PC 上输入 iperf 指令即可。
R-Mesh 吞吐量测试
节点端通过 UART 输入如下 AT 指令:
AT+IPERF=-c,<server IP>,-i,<periodic>,-u,-b,<bandwidth>,-t,<transtime>,-p,<port>
AP 端通过 Terminal 输入如下 iperf 指令:
iperf -s -i <periodic> -u -p <port>
节点端通过 UART 输入如下 AT 指令:
AT+IPERF=-s,-i,<periodic>,-u,-p,<port>
AP 端通过 Terminal 输入如下 iperf 指令:
iperf -c <R-mesh node IP> -i <periodic> -u -b <bandwidth> -t <transtime> -p <port>
节点端通过 UART 输入如下 AT 指令:
AT+IPERF=-c,<server IP>,-i,<periodic>,-t,<transtime>,-p,<port>
AP 端通过 Terminal 输入如下 iperf 指令:
iperf -s -i <periodic> -p <port>
节点端通过 UART 输入如下 AT 指令:
AT+IPERF=-s,-i,<periodic>,-p,<port>
AP 端通过 Terminal 输入如下 iperf 指令:
iperf -c <R-mesh node IP> -i <periodic> -t <transtime> -p <port>
吞吐量数据
Wi-Fi R-Mesh 的吞吐量数据如下表所示:
(Single Node 表示各层级节点分别单独打 TP;L1 + L2 表示 L1 和 L2 节点同时打 TP;其他场景以此类推)
测试场景 |
层 |
UDP Tx(Mbps) |
UDP Rx(Mbps) |
TCP Tx(Mbps) |
TCP Rx(Mbps) |
---|---|---|---|---|---|
Single Node |
Layer1 |
54.2 |
39.5 |
17.0 |
15.7 |
Layer2 |
19.6 |
18.8 |
9.6 |
10.0 |
|
Layer3 |
12.8 |
11.6 |
6.9 |
7.0 |
|
Layer4 |
9.4 |
8.2 |
5.4 |
5.2 |
|
Layer5 |
7.5 |
6.2 |
4.4 |
4.3 |
|
L1 + L2 |
Layer1 |
21.0 |
21.2 |
||
Layer2 |
12.5 |
14.0 |
|||
L1 + L2 + L3 |
Layer1 |
14.0 |
13.3 |
||
Layer2 |
7.0 |
7.2 |
|||
Layer3 |
5.1 |
6.4 |
|||
L1 + L2 + L3 + L4 |
Layer1 |
10.0 |
12.1 |
||
Layer2 |
4.0 |
8.4 |
|||
Layer3 |
3.6 |
6.7 |
|||
Layer4 |
3.0 |
4.0 |
|||
L1 + L2 + L3 + L4 + L5 |
Layer1 |
9.0 |
10.4 |
||
Layer2 |
3.2 |
3.7 |
|||
Layer3 |
2.5 |
2.9 |
|||
Layer4 |
2.3 |
1.8 |
|||
Layer5 |
1.8 |
2.1 |
Wi-Fi R-Mesh RTT
不同于 BLE 和 ZigBee,R-Mesh 的 RTT(Round-Trip Latency)是非常低的,并且不会随着数据包的增大而明显增加。

Wi-Fi R-Mesh 内存占用
开启 R-Mesh 后,额外多占用的内存如下表所示:
项目 |
KM0 |
---|---|
txt |
22KB |
rodata |
2.4KB |
data+bss |
0.9KB |
heap |
20KB |