Wi-Fi R-Mesh 介绍

[推荐 IC 型号]

Wi-Fi R-Mesh 拓扑结构

如下图所示,Wi-Fi R-Mesh 是一个树形 Mesh 网络,用于增加 Wi-Fi 覆盖范围,让距离 AP 较远的设备也能获得稳定的网络连线。

../../../_images/rmesh_topology_capacity.svg

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 算力。

由于需要极少的软件处理过程,所以即使经过几跳的节点也会有很好的吞吐量。

../../../_images/rmesh_data_flow.svg

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 之间,用于扩展可以接入网络的节点数量。

../../../_images/rmesh_nat.svg

Wi-Fi R-NAT

Wi-Fi R-Mesh 吞吐量

吞吐量测试

与普通的 Station 或 AP 模式无异,我们可以通过 iperf 命令测试 R-Mesh 的吞吐量。如下图所示,在 AP 端和节点端的 PC 上输入 iperf 指令即可。

../../../_images/rmesh_tp_test_ipref.svg

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>
    

吞吐量数据

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)是非常低的,并且不会随着数据包的增大而明显增加。

../../../_images/rmesh_rtt.png

Wi-Fi R-Mesh 内存占用

开启 R-Mesh 后,额外多占用的内存如下表所示:

项目

KM0

txt

22KB

rodata

2.4KB

data+bss

0.9KB

heap

20KB