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 上入网(OTAA Join Request)
- 网关 1 验证 AppKey,分配 DevAddr(格式:
3610xxxx) - 网关 1 将 AppKey 发布到 MQTT 主题
- 其他网关订阅该主题,接收并存储 AppKey
- 设备移动到其他网关时,任一网关均可处理其入网请求
11.2.2 密钥同步(学习者)
功能:自动学习其他网关共享的设备凭证。
工作流程:
- 网关订阅 MQTT 主题
- 接收其他网关广播的 AppKey
- 将 AppKey 存储到本地 chirpstack 数据库
- 当设备发送 Join Request 时,本网关可直接验证
优势:
- 设备可在任一网关入网
- 减少手动配置工作量
- 设备更换位置后,无需重新入网
11.2.3 会话同步(漫游)
功能:实时同步活动会话状态(DevAddr、会话密钥、帧计数器)。
工作流程:
- 设备在网关 1 完成入网,获得 DevAddr 和会话密钥
- 网关 1 将会话信息发布到 MQTT 主题
- 其他网关订阅该主题,接收并存储会话信息
- 设备移动到网关 4
- 网关 4 接收到设备上行数据,使用已同步的会话密钥解密
- 网关 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 可快速识别设备初始入网的网关
- 便于故障排查和网络优化
- 支持多网关协同工作