第7章 路由机制
本章目标
搞清 Zigbee 网状网如何「发现路径」和「逐跳转发」,并会读路由表。日志来自 zigbee-nwk-routing 真实运行。
7.1 网状路由的核心思想
没有中心路由器,每个路由器都能转发。数据不是「直线飞过去」,而是一跳一跳地接力,直到到达目的设备。
[协调器 00:00] --跳1--> [路由器 52:c5] --跳2--> [路由器 cf:e0] --跳3--> [终端 ad:6e]类比
像快递分拨中心接力:每个节点只负责「送到下一站」,不认识整条路也没关系。
7.2 路由发现(Route Discovery)
当源节点不知道去目的地的路时,发起路由发现(广播 RREQ → 目的地回 RREQ → 沿途建路由表项)。真实日志:
Route Discovery launched...
RREQ sent: 00:00 -> broadcast (寻找 ad:6e)
RREP received: 00:00 <- cf:e0 (找到了路)
Adding route to ad:6e via 52:c5 (3 hops)7.3 路由表怎么看
Routing Table (destination | next-hop | status | type):
ad:6e | 52:c5 | ACTIVE | DISCOVERY
52:c5 | 52:c5 | ACTIVE | DISCOVERY- Destination:目的短地址;
- Next-hop:下一跳给谁(关键字段!);
- Status:ACTIVE=可用;DISCOVERY=正在/刚发现。
7.4 三种路由模式对比
| 模式 | 做法 | 特点 |
|---|---|---|
| 网内树路由 | 沿父子树向上走到公共祖先再向下 | 无路由表开销,但路径长 |
| 网状路由 | 逐跳最优转发 | 路径短,需路由发现与存储 |
| 源路由 | 源节点在包里写好整条路径 | 中间节点零状态 |
Zigbee 3.0 默认使用网状路由(结合树路由兜底),ns-3 模块对 RREQ/RREP 流程有完整实现与日志。
与真机对照
第 14 章会看到 CC2530 的 NLME_RouteDiscoveryRequest、路由表 routeTable 与本节的发现流程一一对应。