11 网关集群与设备漫游

IMX93-GW8016 支持分布式 LoRaWAN 边缘集群,多个网关通过 MQTT 协议组成自管理的集群,实现设备漫游和高可用部署。

11.1 集群架构图

graph TB subgraph "LoRaWAN 设备 LoRaWAN Devices" DEV1["设备 A<br/>DevEUI: ffffff200000b001<br/>AppKey: xxx"] DEV2["设备 B<br/>DevEUI: ffffff200000b002<br/>AppKey: yyy"] DEV3["设备 C<br/>DevEUI: ffffff200000b003<br/>AppKey: zzz"] DEV4["移动设备 D<br/>DevEUI: ffffff200000b004<br/>漫游中"] end subgraph "网关集群 Gateway Cluster" GW1["网关 1<br/>GW ID: ...3610<br/>DevAddr: 3610xxxx"] GW2["网关 2<br/>GW ID: ...4521<br/>DevAddr: 4521xxxx"] GW3["网关 3<br/>GW ID: ...7832<br/>DevAddr: 7832xxxx"] GW4["网关 4<br/>GW ID: ...8943<br/>DevAddr: 8943xxxx"] GW5["网关 5<br/>GW ID: ...1054<br/>DevAddr: 1054xxxx"] GW6["网关 6<br/>GW ID: ...2165<br/>DevAddr: 2165xxxx"] end subgraph "集群 MQTT Broker" MQTT_CLUSTER["MQTT Broker<br/>集群消息总线"] end subgraph "数据流向 Data Flow" FLOW1["① 设备 A 在网关 1 入网"] FLOW2["② 网关 1 广播 AppKey"] FLOW3["③ 设备 D 移动到网关 4"] FLOW4["④ 会话同步"] end %% 设备到网关连接 DEV1 -.->|LoRa 入网| GW1 DEV2 -.->|LoRa 入网| GW2 DEV3 -.->|LoRa 数据| GW3 DEV4 -.->|LoRa 漫游| GW4 %% 网关到 MQTT 连接 GW1 <-->|MQTT| MQTT_CLUSTER GW2 <-->|MQTT| MQTT_CLUSTER GW3 <-->|MQTT| MQTT_CLUSTER GW4 <-->|MQTT| MQTT_CLUSTER GW5 <-->|MQTT| MQTT_CLUSTER GW6 <-->|MQTT| MQTT_CLUSTER %% 样式 classDef device fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px classDef gateway fill:#e3f2fd,stroke:#0d47a1,stroke-width:3px classDef mqtt fill:#fff3e0,stroke:#e65100,stroke-width:2px classDef flow fill:#fce4ec,stroke:#880e4f,stroke-width:2px class DEV1,DEV2,DEV3,DEV4 device class GW1,GW2,GW3,GW4,GW5,GW6 gateway class MQTT_CLUSTER mqtt class FLOW1,FLOW2,FLOW3,FLOW4 flow

11.2 集群工作原理

11.2.1 密钥推送(广播者)

功能:将本地设备凭证(AppKey)安全地广播到集群网络。

工作流程

  1. 设备在网关 1 上入网(OTAA Join Request)
  2. 网关 1 验证 AppKey,分配 DevAddr(格式:3610xxxx
  3. 网关 1 将 AppKey 发布到 MQTT 主题
  4. 其他网关订阅该主题,接收并存储 AppKey
  5. 设备移动到其他网关时,任一网关均可处理其入网请求

11.2.2 密钥同步(学习者)

功能:自动学习其他网关共享的设备凭证。

工作流程

  1. 网关订阅 MQTT 主题
  2. 接收其他网关广播的 AppKey
  3. 将 AppKey 存储到本地 chirpstack 数据库
  4. 当设备发送 Join Request 时,本网关可直接验证

优势

  • 设备可在任一网关入网
  • 减少手动配置工作量
  • 设备更换位置后,无需重新入网

11.2.3 会话同步(漫游)

功能:实时同步活动会话状态(DevAddr、会话密钥、帧计数器)。

工作流程

  1. 设备在网关 1 完成入网,获得 DevAddr 和会话密钥
  2. 网关 1 将会话信息发布到 MQTT 主题
  3. 其他网关订阅该主题,接收并存储会话信息
  4. 设备移动到网关 4
  5. 网关 4 接收到设备上行数据,使用已同步的会话密钥解密
  6. 网关 4 验证帧计数器,防止重放攻击

优势

  • 无缝漫游:设备在网关间移动,数据不中断
  • 防止重复处理:通过 FCnt 去重
  • 高可用性:一个网关故障,设备自动切换

11.3 DevAddr 区分机制

每个网关在分配入网地址(DevAddr)时,使用网关 ID 末尾两位作为标识。

DevAddr 格式(32 位):

  • 位 31-25:网络 ID(7 位)
  • 位 24-16:网关 ID 标识(8 位)
  • 位 15-0:设备序号(16 位)

示例

  • 网关 1 ID:0010502df4563610,末尾 2 位:10
  • 分配 DevAddr:3610bd78
  • 网关 2 ID:0010502df45806b4,末尾 2 位:21
  • 分配 DevAddr:06b407e4

优势

  • 通过 DevAddr 可快速识别设备初始入网的网关
  • 便于故障排查和网络优化
  • 支持多网关协同工作