系列阅读:本文是 ManThink 「LoRaWAN 技术解读」系列的第 9 篇,建议按顺序阅读前 8 篇构建知识体系。

引子:网关到服务器的那"最后一跳"

LoRaWAN 网络里最容易被忽视的一段,是网关到 LoRaWAN Network Server(LNS / NS)之间的"最后一跳"。

射频那一段很"硬核"——我们花了好几篇文章讲 SX1302 的 16 路并发、讲 TDOA 的时间同步、讲 Class A 的 RX 窗口;而网关把收到的 LoRa 帧传给服务器的那一段,往往只用一句"用 Packet Forwarder"带过。但只要部署规模上到几百台、跨过公网、或者开始谈安全合规,这段"最后一跳"就变成了最该被审视的地方。

这篇文章把 LoRaWAN 网关上常见的三类回传协议摊到桌面上:

然后告诉你:GD6 这类开源网关默认支持哪种、为什么 ThinkLink / ChirpStack / TTN 三个平台给出的"协议菜单"长得不一样,以及工程上怎么选才不掉坑。

一、三类协议的来龙去脉

1. Semtech UDP Packet Forwarder(2014–至今)

这是 Semtech 在 SX1301 时代发布的参考实现,用一台 Linux 主机跑 poly_pkt_fwd / lora_pkt_fwd 这类进程,把 SX130x 收到的上行 JSON 帧(rxpk)推到 LNS,再把 LNS 给的下行 JSON 帧(dnmsg)写到集中器队列。

它的优点是极简——几十 KB 内存就能跑、几小时就能改成"非官方平台"对接。在内网、私有测试环境里,二十年了还是最直接的方案。

但缺点同样致命:

Semtech 官方 lora_gateway 仓库在 SX1301 阶段一度是事实标准;但到了 SX1302/SX1303 时代,这套 Packet Forwarder 已经被标记为 NRND(Not Recommended for New Designs),新一代网关普遍转向 Basic Station。ThinkLink 在 gwTool6 配置说明书 中也将 UDP Packet Forwarder 标为"应在受控网络中或额外网络保护下使用"。

关键事实:UDP Packet Forwarder 不加密、不认证、不监测链路状态。

2. ThinkLink MQTT Bridge —— 消息总线模式

MQTT Bridge 不是 LoRa Alliance 规定的标准协议,而是一种网关—服务器之间用 MQTT 主题(Topic)来传递 LoRaWAN 上下行帧的对接模式。LoRaWAN 报文被映射成 MQTT 消息,由 Broker 做路由。

在 ManThink 的产品线里,这套协议主要服务 ThinkLink 平台。gd6-configuration-guide 第 5.2 节明确:ThinkLink MQTT 仅在 ThinkLink 供应商组合中提供,由以下要素组成:

字段 说明
Broker URI ssl://... 或 tcp://...,指向 ThinkLink 平台
Client ID 网关在 Broker 上的唯一标识
账号 / 密码 Broker 凭据
Topic 上行(uplink)、下行(downlink)、状态(status)等消息的 MQTT 主题
QoS QoS 0/1/2,按消息等级选
TLS 材料 单向 / 双向 TLS 凭据;启用双向 TLS 时,CA、客户端证书、私钥必须成套匹配

它为什么会出现?因为在 LoRa 之外的物联网世界,MQTT 几乎是默认的"设备协议网关"——设备 → MQTT Broker → 业务系统,整条链都用同一套消息总线。把这套模式平移到 LoRaWAN 网关上,工程团队就能用熟悉的 Broker 集群既管 LoRa 终端又管 Wi-Fi/4G 设备,架构上更整齐。

MQTT Bridge 的几大特性:

需要注意:MQTT Bridge 和"远程配置"通道是两套独立的连接。gwTool6 把"远程配置"放在单独一节,要求使用独立的 Broker、Client ID、Topic 和 TLS 凭据,不要把 LoRaWAN 通道的 MQTT 凭据误填到远程配置——这是个容易在运维现场出错的点。

关键事实:MQTT Bridge 是对接模式而非 LoRa 联盟规范,由 ThinkLink 这种平台侧推动,主要服务于"所有设备都吃 MQTT"的工程团队。

3. LoRa Basics Station(2019–至今)

LoRa Basics Station 由 Semtech 和 LoRa Alliance 联合推出,是 UDP Packet Forwarder 的官方"替代品"。名称里带 "Basics" 是因为它既规定了连接协议,也定义了参考实现的开源基线。

它的架构是两个拆开的 REST/WebSocket 接口:

这种"把数据通道和管理通道分开"的设计带来三个工程上的好处:

  1. 配置可以远程轮换:不用人到现场改网关;
  2. 零接触部署(zero-touch):从工厂出货到接上电自动连上 CUPS 自动拿到 LNS 凭据;
  3. 统一管理大规模网关机群:千台网关共用同一组凭据和信道计划。

协议栈要点:

它对应的两个权威文档:

GW-AN08 实操文档总结得很到位:Basic Station 相比传统 UDP Packet Forwarder 有四个核心优势——更高效的 WebSocket 通信、支持动态频率更新(CUPS)、内建加密传输(TLS)、更好的网络管理与远程配置能力。

关键事实:Basic Station 是 LoRa Alliance 推荐的"现代"回传协议,核心是 WebSocket + TLS + 双向通道(LNS 数据 + CUPS 管理)。

二、三类协议工程对比总表

把上面三类协议摆在一起,逐项过一遍工程要素(参考亿佰特、Kerlink、LoRa Alliance 官方资料综合整理):

维度 Semtech UDP PF ThinkLink MQTT Bridge LoRa Basics Station
传输层 UDP 无连接 TCP / TLS 之上的 MQTT 长连接 WebSocket 长连接
加密 无标准化(通常明文) 可配 TLS / mTLS(取决于 Broker) TLS 1.2/1.3,可 mTLS
平台身份校验 无 靠 Broker 账号 / TLS 服务器根证书 + Token / mTLS
链路监测 无原生,靠应用心跳 MQTT keepalive 原生协议心跳 + 自动重连
远程配置 / 升级 无原生 无原生(CUPS 类能力靠平台自实现) CUPS 接口原生支持
NAT / 防火墙友好 差(需端口映射) 好 好(基于 WebSocket)
网关资源占用 极低(几十 KB 内存即可) 中(取决于 Broker 配置) 中(实现 + TLS + WebSocket)
实现复杂度 低 中(要接 Broker) 中高(证书、时间同步)
跨厂商互操作性 最好(老标准) 依赖平台 好(LoRa Alliance 规范)
适用场景 内网测试、小规模、成本敏感 平台即 Broker、想统一设备消息总线 公网部署、大规模商用、高安全需求

注:GD6(gwTool6 v1.0.3)在 TTN 供应商下默认协议是 BasicStation CUPS;在 ChirpStack 供应商下默认协议是 Semtech UDP,可用 BasicStation LNS 替代;在 ThinkLink 供应商下默认是 ThinkLink MQTT 或由交付配置决定。

三、三个平台默认支持矩阵:GD6 实操指引

GD6 的 LoRaWAN NS 配置页(gwTool6 v1.0.3),把"供应商 × 协议"组合直接摆好。这张表是工程选型的第一现场,必须背下来:

平台供应商 可选协议 默认协议
ThinkLink ThinkLink MQTT、Semtech UDP 由交付配置决定
ChirpStack Semtech UDP、BasicStation LNS Semtech UDP
TTN / The Things Stack BasicStation CUPS、BasicStation LNS、Semtech UDP BasicStation CUPS

这张矩阵的几个潜规则:

  1. 驱动互斥:Semtech UDP 由 Packet Forwarder 驱动;Basic Station LNS/CUPS 由 Basic Station 驱动。两种驱动保存在同一份配置里,保存并应用后切换会冷重启 LoRa 转发约 30–60 秒。所以保存要避开 OTA、配置写入和关键下行业务时段。
  2. ChirpStack 不支持 CUPS:MCP 文档明文写着 ChirpStack 的 basicstation gateway bridge 只支持 basicstation-lns,不支持 basicstation-cups——选 Basic Station 协议时只能选 LNS。
  3. CUPS 覆盖本地配置:CUPS 返回的 LNS URI 和凭据优先于你在本地填的。从 CUPS 切回直接 LNS 时,必须清除旧的 CUPS URI,否则网关会偷偷继续走 CUPS。
  4. CUPS API Key 和 LNS API Key 权限不同:在 TTN Console 上不能混用。
  5. 驱动和频点:在 Basic Station 模式下,"无线参数"页面的本地信道设置实际上不生效——信道由 LNS / CUPS 下发;只有切回 Packet Forwarder 后本地信道页面才恢复作用。
  6. mTLS 仅在部署明确要求时才用:绝大多数 TTN 云部署用服务器 TLS + API Key 即可,无需网关客户端证书。

关键事实:GD6 在三个平台下的协议菜单和默认行为不统一——这是每个对接文档都会重新强调一遍的现场陷阱。

四、选型决策树

把决策做成一张可以照着走的"三步走"流程:

第一步:判断部署规模与暴露面

第二步:看平台是否支持

第三步:考虑运维与合规

快速口诀:

内网测试 UDP,生产部署 Basic Station,平台吃 MQTT 就走 Bridge。

五、Basic Station 的工程细节:上手必须知道的 5 件事

如果你最终选了 Basic Station,下面这 5 件事几乎是必踩的坑。

1. wss 不是 ws

LNS 的 URI 必须以 wss:// 开头(生产);CUPS 的 URI 必须以 https:// 开头。这意味着:

2. API Key + CRLF 是必填项

gwTool6 的 trust 字段与 Token Key 字段是分开存的。Token Key 需要拼成一个完整的 HTTP Authorization 行,以 CRLF(\r\n)结尾——少一个回车,TLS 过得去但 401 会持续。

CUPS 与 LNS 两把 Key 权限不同、不能互换:

3. CUPS 会"反过来"覆盖本地配置

CUPS 一旦连接成功,它给网关下发的 LNS URI + 凭据 + 信道计划会覆盖你本地保存的值。从 CUPS 切回 LNS 时,必须主动清空旧的 CUPS URI——这是 gwTool6 文档明文警告的"切换直接 LNS 后仍走 CUPS"陷阱的根因。

4. mTLS 仅在确实需要时才用

mTLS(双向 TLS)意味着每台网关都要:

正确用法:在高度受控的工业网络或 AWS IoT Core for LoRaWAN 一类强制 mTLS 的平台。绝大多数 TTN ChirpStack 公共部署用单 TLS + Token 即可,不要为了"看起来更安全"去开 mTLS——它只增加运维成本,不会让数据本身更保密。

5. 驱动切换是冷重启

保存协议选择之后,gwTool6 会冷重启 LoRa 转发约 30–60 秒。这意味着:

六、MQTT Bridge 的现场经验

MQTT Bridge 不像 Basic Station 那么"标准",但只要你部署 ThinkLink 平台,绕不过它。几条经验:

七、UDP Packet Forwarder 的"前世今生"还能用吗

能,但限定场景:

不建议再用于:

GD6 仍保留 UDP PF 选项,主要服务于:对接老平台、对接私有自研 NS、对接教学/演示场景。

关键事实:UDP PF 现在已经沦为"内网兜底协议"——生产部署默认推荐 Basic Station(公网)或 MQTT Bridge(ThinkLink 生态)。

八、迁移路径:从 UDP PF 到 Basic Station

如果你的存量网络还在用 UDP PF,建议的迁移路径:

  1. 共存期:先在 GD6 上关掉所有下行,仅启用上行测试。Basic Station 与 UDP PF 在 GD6 是驱动互斥的,所以只能"先切换再回切";
  2. 双协议并行:ChirpStack 的方案典型——UDP PF 走老链路,Basic Station LNS 走新链路,两套 Bridge 并存;
  3. CUPS 接管批量配置:上了 Basic Station 后,别让运维一台一台手动填 LNS URI——把 CUPS 搭起来,让服务器自动下发;
  4. 凭据轮换计划:LNS API Key / 客户端证书设好有效期,定期轮换;
  5. 回退预案:保留 1–2 台 UDP PF 兜底网关,应对 Basic Station 故障。

整个迁移一般 1–2 周可完成——前提是你已经在做"维护窗口"和"凭据管理"两件准备工作。

九、选型速查

场景 推荐协议 关键理由
内网测试 / 教学 UDP Packet Forwarder 最简、最快、依赖最少
TTN 公网生产 Basic Station (CUPS + LNS) LoRa Alliance 现代标准、远程批量托管
ChirpStack 自建 NS Basic Station LNS 兼容老部署、强烈推荐从 UDP 迁移
ThinkLink 平台自部署 ThinkLink MQTT Bridge 与平台其它设备的 MQTT 消息总线统一
大规模异构网络(≥100 台) Basic Station + CUPS 零接触开通、远程凭据轮换、规模化运维
极度资源受限设备 UDP PF 资源占用最低、可剪裁
严格审计/合规要求 Basic Station + mTLS 或 MQTT + mTLS 双向证书 + 平台身份校验
多协议并存需求(异构 NS) 看具体平台,GD6 同一时刻只能跑一种驱动 切换有 30–60 秒冷重启窗口,需维护时间窗

十、常见误区

最后点几个在工程现场反复出现的"想当然":

  1. "Basic Station 不加密"——错。Basic Station 默认走 TLS,是否加密取决于 URI 用 wss:// 还是 ws://,并在 LNS 端强制;
  2. "UDP Packet Forwarder 在 2026 年没人用了"——也不对。教学、研发、内网部署仍在大规模使用;
  3. "MQTT Bridge 就是 MQTT 调调 Topic 那么简单"——那只是冰山一角。MQTT Bridge 在 ThinkLink 中带 TLS、带凭据、带多 Topic 路由,是工程意义上完整的对接模式;
  4. "CUPS 看起来复杂,所以小规模不用"——CUPS 在 5 台以下的网络也确实没必要;但当运维团队开始抱怨"为什么每加一台网关都要手动配"时,CUPS 就该上了;
  5. "Basic Station 等同于免费版"——错。Basic Station 是 LoRa Alliance 推出的协议规范,Semtech 提供开源参考实现;TTN、ChirpStack、AWS IoT Core for LoRaWAN 等平台按统一规范实现各家服务端;
  6. "协议切换只是改一个下拉框"——错。在 GD6 上切协议会冷重启 LoRa 转发 30–60 秒,关键业务时段千万别切。

结语

把网关到 LNS 之间这段"最后一跳"的协议设计清楚,决定整个 LoRaWAN 网络的可运维性和扩展性。Semtech UDP PF 是"最低成本",MQTT Bridge 是"平台契合",Basic Station 是"长期主义"——三条路在不同场景下都是合理答案。

GD6 这类开源网关对三种协议都有原生支持,gwTool6 的协议菜单也按平台自动给出推荐组合。新项目从一开始就按 Basic Station + LNS(生产)+ UDP PF(实验)的方法搭;存量项目按"共存 → 切换 → 收尾"的节奏稳步迁移。


参考文档

系列阅读

  1. LoRaWAN 设备入网流程详解:OTAA vs ABP,怎么选?
  2. LoRaWAN ADR 机制解读:谁在控制数据速率
  3. LoRaWAN Regional Parameters:为什么 CN470 和 EU868 的频点数不同
  4. LoRa 物理层参数:SF、BW、CR 如何影响传输距离和速率
  5. LoRaWAN 设备类别(Class A/B/C)对比与适用场景
  6. Semtech SX1301 vs SX1302 vs SX1303:集中器芯片演进
  7. ESP32-S3 在 IoT 网关中的应用:为什么选它而不是 STM32
  8. LoRa 定位技术原理:TDOA 与 RSSI 方案对比
  9. 本文:LoRaWAN 网关回传协议详解:Semtech UDP / MQTT Bridge / Basic Station 三大方案对比与选型

本系列由 ManThink 团队基于 gwTool6 v1.0.3 + LoRa Alliance + Semtech 官方资料整理。