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
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 表示各层级节点分别单独打流;L1 + L2 表示 L1 和 L2 节点同时打流;其他场景以此类推)
测试场景 |
层 |
UDP Tx(Mbps) |
UDP Rx(Mbps) |
TCP Tx(Mbps) |
TCP Rx(Mbps) |
|---|---|---|---|---|---|
Single Node |
Layer1 |
39.5 |
27.2 |
27.5 |
22.3 |
Layer2 |
19.4 |
15.6 |
14.4 |
12 |
|
Layer3 |
12.5 |
9.73 |
9.25 |
8.23 |
|
Layer4 |
9.36 |
7.6 |
7.18 |
5.66 |
|
Layer5 |
7.53 |
6.23 |
5.37 |
4.45 |
|
L1 + L2 |
Layer1 |
13.3 |
9.67 |
10.1 |
8.19 |
Layer2 |
12.5 |
9.66 |
9.43 |
8 |
|
L1 + L2 + L3 |
Layer1 |
6.21 |
5.07 |
5 |
4.24 |
Layer2 |
6.15 |
5.05 |
4.81 |
4.12 |
|
Layer3 |
6.02 |
5.04 |
4.88 |
4.04 |
|
L1 + L2 + L3 + L4 |
Layer1 |
3.77 |
2.88 |
2.89 |
2.58 |
Layer2 |
3.48 |
2.88 |
2.92 |
2.52 |
|
Layer3 |
3.41 |
2.88 |
2.91 |
2.47 |
|
Layer4 |
3.23 |
2.88 |
2.89 |
2.36 |
|
L1 + L2 + L3 + L4 + L5 |
Layer1 |
2.94 |
2.2 |
1.86 |
1.57 |
Layer2 |
2.89 |
1.97 |
1.85 |
1.58 |
|
Layer3 |
2.4 |
1.97 |
1.83 |
1.54 |
|
Layer4 |
2.03 |
1.95 |
1.85 |
1.54 |
|
Layer5 |
2.19 |
2.18 |
1.81 |
1.47 |
测试条件:
Image2 运行在 PSRAM 上
信道带宽为 20MHz
在 Menuconfig 主页面
CONFIG WIFI中打开Enable HIGH TP选项AP:ASUS RT-AX88U
Wi-Fi R-Mesh RTT
不同于 BLE 和 ZigBee,R-Mesh 的 RTT(Round-Trip Latency)是非常低的,并且不会随着数据包的增大而明显增加。
Wi-Fi R-Mesh 内存占用
若需开启 R-Mesh 功能,只需在 Menuconfig 主页面 CONFIG WIFI 中打开 Enable R-Mesh 选项,并且设定 wifi_user_config.wtn_en = 1,编译出的固件额外多占用的内存如下表所示:
项目 |
KM0 |
|---|---|
txt |
24KB |
rodata |
2.2KB |
data+bss |
0.5KB |
相较于未开启 R-Mesh 功能的设备,R-Mesh 设备在 Wi-Fi 初始化和连线的过程中,KM0 会分配额外的 20KB heap 来完成 R-Mesh 相关的动作。
R-Mesh 设备每扫描到一个附近的 R-Mesh 节点,KM0 都需要额外分配 0.2KB heap,用于记录此节点的信息。