网状拓扑:路由器互联成网,数据按路由表择优多跳
网状(Mesh)是 Zigbee 最灵活的拓扑:路由器之间互相转发、按路由表择优,数据可以穿越整个网格,路径断了还能绕行。与树形「固定父子链」相比,网状多一跳、冗余多、更可靠。本页数据来自 ns-3 真实跑通的 2×3 网格网络(1 协调器 + 5 路由器)。
拖动节点方案,看 Mesh 结构怎么变
切换三种真实仿真过的布局(只移动了 ZR5 的位置),观察:节点一动,能发现几个网络、数据走哪条路径,全都跟着变。再点「发送数据包」看该方案下的真实逐跳路径。
协调器发一条 LED 命令,看它怎么流到终端
Mesh 不只路由器:终端设备(ZE) 挂靠在父路由器下、不参与转发。这条真实仿真里,协调器向终端 ZE1 发一条 2 字节 LED 点亮命令 [0x01][0x01],数据流向 = 协调器 → 路由器骨干(按路由表择优) → 最后一段父子链路 → 终端。注意:ZE1 距 ZR5≈64m、距 ZR4≈70m,ns-3 实测择优挂靠了 ZR4(父选择看 LQI/入网时机,不是纯看距离)——所以数据路径是 ZC→ZR1→ZR4→ZE1。数据来自 zigbee-mesh-with-ze 在 ns-3.48 中的真实运行。
路由器逐个入网,中段节点能发现多个网络
与树形「先根、后分支、再叶子」不同,网状里每个节点都是路由器,入网后都能转发。注意 ZR4、ZR5 入网时发现了 2 个网络——它们能看到不止一个候选父节点,这就是冗余的来源。
节点位置一变,路由就「重新择优」
下表是三种布局的真实仿真对比——同一个目标 ZR5,只改它的位置,发现网络数、路径、下一跳、路由发现代价全部联动。下方再以「方案1」为例详解三张表。
三种布局 · 真实仿真对比(ns-3 各跑一次)
| 方案 | ZR5 位置 | 发现网络 | 真实路径 | 跳数 | 路由表 NextHop | RREQ 代价 |
|---|---|---|---|---|---|---|
| 方案1 标准网格 | (180,90) | 2 个 | ZC→ZR1→ZR2→ZR5 | 3 | 75:82 (ZR1) | 0 / 4 |
| 方案2 远端绕行 | (90,180) | 1 个 | ZC→ZR3→ZR4→ZR5 | 3 | f0:e3 (ZR3) | 0 / 4 |
| 方案3 近端直达 | (45,45) | 3 个 | ZC→ZR1→ZR5 | 2 | 75:82 (ZR1) | 0 / 2 |
路由表 · ZC(源)视角
| Destination | Next hop | Status |
|---|---|---|
| ad:6e (ZR5) | 75:82 (ZR1) | ACTIVE |
邻居表 · ZC(源)视角
| 邻居 | 关系 | 类型 |
|---|---|---|
| 75:82 (ZR1) | CHILD | ROUTER |
| f0:e3 (ZR3) | CHILD | ROUTER |
路由发现表 · ZC(源)视角
| RREQ ID | Source | Cost 前向/剩余 | 过期 |
|---|---|---|---|
| 214 | 00:00 | 0 / 4 | +19s |
邻居表 · ZR5(目标)视角
| 邻居 | 关系 | 类型 |
|---|---|---|
| cf:e0 (ZR2) | PARENT | ROUTER |
| 52:c5 (ZR4) | NONE | ROUTER |
三种拓扑,三种「数据走路」的方式
用三张真实跑过的路径做对比:同样的「协调器 → 远端设备」,星形直达、树形沿父子链、网状按路由表择优穿越。虚线为拓扑示意,琥珀粗线为本例真实路径。
全部直达协调器
每一跳都是单跳直达。简单但覆盖有限,协调器是瓶颈。
沿固定父子链
路径由父子关系固定:数据只能沿树上下,叶子必须经父节点。
按路由表择优多跳
路径由路由表择优(本例 ZC→ZR1→ZR2→ZR5 三跳),有冗余可绕行,覆盖最广。
从建网到两次数据发送,真实回放
数据来自 zigbee-mesh-network 在 ns-3.48 中的真实运行(以方案1·标准网格为例;其中 ZC→ZR3 单跳为近距离对比)。