3. Thread网络拓扑与设备角色
Thread 网络不是把所有节点都当成同一种设备来管理,而是把节点划分为若干角色,让一部分节点承担转发与路由职责,另一部分节点只做终端或低功耗终端。理解这些角色的职责边界与升级/降级条件,是后续做网络容量规划、功耗优化和故障排查的基础。Thread 的角色可以按“是否参与转发”和“是否常供电”两个维度来理解:Router、Leader、Border Router 属于基础设施型角色;REED 是 Router 的候选池;End Device 与 Sleepy End Device 属于终端角色。
一、六种角色的职责定位
Router(路由器)是 Mesh 网络的骨干。它维护到邻居的路由信息,为其他节点转发数据,并参与网络范围的链路质量维护。Router 通常由市电供电,不能随意休眠。Thread 规定 Router 数量有上限,典型上限为 32 个,这是为了避免路由表过大、泛洪开销过高。Router 之间通过 MLE(Mesh Link Establishment)和路由协议保持连通性。
REED(Router-Eligible End Device,可成为路由器的终端)是一种“待命路由器”。它当前以终端身份工作,但具备升级为 Router 的能力。当网络中 Router 数量不足、或某区域路由覆盖变差时,REED 可以发起 Router 升级请求,被 Leader 批准后成为 Router。REED 是 Router 数量的弹性缓冲池,让网络能按需扩展路由能力,而不必让所有节点都常驻 Router 角色。
End Device(终端设备)不参与转发,只通过其父节点(Parent)收发数据。它通常保持接收窗口常开,因此可以随时被寻址,但功耗高于 Sleepy End Device。End Device 适合需要较低延迟、但又不适合承担路由职责的设备。
Sleepy End Device(SED,休眠终端)是低功耗设计的核心角色。它大部分时间处于休眠,只在 Poll 周期或发送数据时唤醒,通过父节点缓存下行数据。SED 的父节点必须为它保留数据帧,等它轮询时下发。SED 的功耗极低,但下行延迟取决于 Poll 周期,适合电池供电的传感器、门磁、温湿度计等场景。
Leader(领导者)是 Thread 网络中的逻辑中心,但并非数据转发中心。Leader 负责管理 Router ID 分配、Router 升级/降级决策、网络数据(Network Data)的注册与分发。Leader 本身也是一个 Router,由 Router 集合选举产生。Leader 故障后,其他 Router 会重新选举,网络不会因此瘫痪。
Border Router(边界路由器)是 Thread 网络与外部网络(如 IPv6 互联网、本地 LAN)之间的桥梁。它提供前缀(Prefix)通告、NAT64、DNS64 等服务,使 Thread 内节点能与外部通信。Border Router 通常同时具备 Thread 接口和另一种网络接口(Wi-Fi/以太网),是 Thread 网络出口的关键节点。
二、Router 升级与降级机制
Thread 网络启动时,节点通常先以 REED 或 End Device 身份加入。当网络需要更多路由能力时,REED 会向 Leader 发起 Router 升级请求(Router ID Request)。Leader 根据当前 Router 数量、Router ID 池余量、网络拓扑需求决定是否批准。批准后,该 REED 获得一个 Router ID,成为 Router,并开始参与转发。
Router 降级发生在两种典型情况:一是网络中 Router 数量超过上限,Leader 会要求部分 Router 降级为 REED;二是某 Router 长时间无法与足够多的邻居保持连接,或路由质量持续恶化,它可能主动降级。降级后节点回到 REED 状态,仍可再次申请升级。这种“按需升降”的机制让 Thread 网络在路由覆盖和资源开销之间保持平衡。
三、Leader 选举机制
Leader 不是预先指定的,而是由 Router 集合通过分布式选举产生。每个 Router 都维护一个“Leader 优先级”信息,通常与 Router ID、链路质量、设备能力有关。当网络中没有 Leader,或现有 Leader 失联时,Router 会发起选举。选举过程遵循“优先级高者胜出”的原则,若优先级相同则比较 Router ID 等参数。选出 Leader 后,其他 Router 会同步 Leader 信息,网络数据由 Leader 统一管理。
Leader 的职责不是转发数据,而是维护网络逻辑一致性。它分配 Router ID、批准 Router 升级、管理 Network Data(如前缀、路由、服务注册)。Leader 故障不会导致网络中断,因为 Router 之间仍可转发数据,只是新的 Router 升级和 Network Data 更新会暂停,直到新 Leader 选出。
四、Border Router 与外部连通
Border Router 是 Thread 网络与外部 IPv6 网络之间的网关。它向 Thread 网络通告外部前缀(Prefix),使内部节点能生成全局 IPv6 地址。同时,Border Router 可提供 NAT64/DNS64 服务,让仅支持 IPv6 的 Thread 节点访问 IPv4 互联网。Border Router 通常由市电供电,具备 Wi-Fi 或以太网接口,并运行 Thread Border Router 功能。一个 Thread 网络可以有多个 Border Router,它们之间通过 Thread 网络同步前缀信息,提供冗余出口。
五、角色选择与参数示例
实际开发中,设备角色不是随意设定的,而是由固件配置和网络状态共同决定。以下是一个典型的角色配置示例,用于说明各角色的关键参数差异:
角色 供电方式 接收窗口 转发能力 典型用途
Router 市电 常开 是 骨干路由、楼宇照明
REED 市电 常开 可升级 路由扩展候选
End Device 市电/电池 常开 否 低延迟终端
Sleepy End Device 电池 周期唤醒 否 传感器、门磁
Leader 市电 常开 是(逻辑) 网络逻辑中心
Border Router 市电 常开 是 外部网络出口
以 SED 为例,若 Poll 周期设为 1 秒,则下行延迟通常在 1 秒以内,平均功耗可控制在几十微安级别;若 Poll 周期延长到 10 秒,功耗进一步降低,但下行延迟增大。开发者需要根据业务对延迟和功耗的容忍度来调整 Poll 周期。Router 和 REED 则通常保持常供电,不进入深度休眠,以保证转发能力。
六、排障视角:角色异常与判断依据
当 Thread 网络出现通信问题时,角色状态是重要的排查线索。若某区域设备频繁掉线,可能是该区域 Router 数量不足,REED 未能及时升级;若网络整体延迟升高,可能是 Router 数量过多导致路由开销增大;若 SED 下行数据丢失,应检查其父节点是否正常缓存数据、Poll 周期是否过长;若外部访问失败,应确认 Border Router 是否在线、前缀是否正常通告。通过查看设备角色、Router ID、Leader 信息和邻居表,可以快速定位问题层级。
理解 Thread 的六种角色及其选举、升级、降级机制,是后续进行网络容量设计、功耗优化和故障排查的前提。Router 提供转发能力,REED 提供弹性,End Device 和 SED 提供终端接入,Leader 提供逻辑一致性,Border Router 提供外部连通。它们共同构成一个可自组织、可扩展、低功耗的 Mesh 网络。