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

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

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

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

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

  • Semtech UDP Packet Forwarder —— 第一代事实标准,UDP 无连接、JSON 明文
  • ThinkLink MQTT Bridge —— 物联网时代的 MQTT 桥接,消息总线模式
  • LoRa Basics Station —— LoRa Alliance 推出的现代化方案,WebSocket + TLS + CUPS/LNS 双通道

然后告诉你: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)写到集中器队列。

  • 传输层:UDP,无连接
  • 应用层:JSON,手写协议
  • 端口约定:上行 1700,下行 1700(默认)
  • 认证:没有。Semtech 官方实现里既不做 TLS 也不做 gateway 身份校验

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

但缺点同样致命:

  • 公网裸跑,udp 报文里的 DevAddr、NwkSKey 衍生材料可被嗅探、篡改和回放;
  • 服务器不知道网关"是不是真的",伪造一份同样的 JSON 报文就能冒名顶替;
  • 没有"链路状态"语义,对端的网关是否在线、poly_pkt_fwd 是否挂了,全靠应用层时间戳盲猜。

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 的几大特性:

  • 天然 Pub/Sub:上行是某个 topic 上的消息,下行是另一些 topic 上的消息,回传和业务数据走同一根管道;
  • TLS 可选:靠 Broker 的 TLS 配置决定是否加密;
  • 认证可配置:靠 Broker 的用户名/密码机制;
  • 生命周期事件进总线:Device Provisioning、Status / Statistics 等都打成 MQTT 消息,业务侧订阅即可。

需要注意: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 接口:

  • LNS(LoRaWAN Network Server)接口:负责业务数据传输。URI 一般是 wss://<server-address>:8887。所有上行的 LoRaWAN 帧、下行的下行队列都走这里。
  • CUPS(Configuration and Update Server)接口:负责配置和固件升级。URI 一般是 https://<server-address>:443。CUPS 会给网关下发LNS URI、信任链和 LNS 凭据——也就是让"网关连哪个 NS、用什么证书、用什么 API Key"这件事,可以被服务器远程控制。

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

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

协议栈要点:

  • 传输层:基于 WebSocket 的长连接,链路心跳、断连自动重连都是协议内置;
  • 加密:TLS 1.2 / 1.3(按 server 端实际配置),支持双向证书认证(mTLS);
  • 认证方式:服务器根证书(trust)+ API Key 令牌 + 可选客户端证书;
  • 应用层消息:JSON(与 UDP PF 有一定相似度,但是双向、带时间戳、可以主动 push 配置)。

它对应的两个权威文档:

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 PF;优先 Basic Station(TLS);MQTT Broker 也行(取决于 TLS 配置);
  • 完全内网 / 现场设备稀少 → UDP PF 也能跑,成本最低;
  • 上千台网关的统一管理 → 强烈倾向 Basic Station + CUPS。

第二步:看平台是否支持

  • TTN / The Things Stack → 推荐 Basic Station(CUPS 优先,LNS 兜底);
  • ChirpStack → 推荐 Basic Station LNS(CUPS 不可用,新老版本都注意);
  • ThinkLink 平台 / 私有集群 + MQTT → MQTT Bridge 是更"合身"的方案;
  • 多平台并存 / 异构 NS → 留意驱动互斥——GD6 同一时间只能跑一个驱动,切换需要 30–60 秒冷重启窗口。

第三步:考虑运维与合规

  • 有合规审计要求 → 必须 Basic Station 或带 mTLS 的 MQTT;
  • 需要零接触批量开通 → Basic Station + CUPS 几乎是唯一选项;
  • 运维人员熟悉 MQTT 生态 → MQTT Bridge 顺手;
  • 想保留"老"调试体验(最小依赖最透明) → UDP PF 仍然能用,但不要暴露到公网。

快速口诀:

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

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

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

1. wss 不是 ws

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

  • 服务器根证书(trust)必须与域名匹配——Let's Encrypt 等公共证书可省略 self-trust;
  • 网关系统时间必须可信——TLS 握手校验证书有效期,差几小时就挂;
  • DNS 必须能解析 Server Address。

2. API Key + CRLF 是必填项

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

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

  • LNS Key:只授予 Link as Gateway to a Gateway Server for traffic exchange;
  • CUPS Key:需要查看网关信息、编辑基础网关设置、读取 Secret 等权限。

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

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

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

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

  • 给它签一份客户端证书;
  • 把客户端私钥导入网关(CN 设为网关 EUI 十六进制);
  • 服务器信任相同 CA 并校验客户端证书 ID。

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

5. 驱动切换是冷重启

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

  • 不要在 OTA / 关键下行时段切换;
  • 切换后重新读取配置确认生效(截图/日志都行),而不是只在页面上看一个"保存成功";
  • 如果你看到的是"配置生效但 0 上行",先等 60 秒再排错。

六、MQTT Bridge 的现场经验

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

  • Topic 是契约。每个网关/每个应用有约定的 Topic 前缀,私自改 Topic 路径只会让消息发到空气里;
  • TLS 材料成套。CA、客户端证书、私钥三件必须成套;缺少一个,Broker 拒连;
  • 远程配置是另一根线。"远程配置"和"LoRaWAN 数据"用两套 Broker、Client ID、Topic、TLS 凭据;别图省事共用凭据,否则远程配置错误推送会影响 LoRa 业务;
  • Client ID 全局唯一。重复的 Client ID 触发 Broker 的踢出机制,会偶发"心跳掉线-重连-再踢出"的循环;
  • QoS 选型。Uplink / Downlink 用 QoS 1 或 2,Status 用 QoS 0 即可——全 QoS 2 会显著抬高 Broker 负担。

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

能,但限定场景:

  • 受控网络/测试床:实验室、产线内、研发环境;
  • 已有平台只接 UDP:某些老旧 NS / 自研平台的历史包袱;
  • 资源极度受限:例如电池网关、传感器上加 Wi-Fi/4G 转发的小型化场景。

不建议再用于:

  • 任何经过公网、NAT、或者多租户网络环境的部署;
  • 涉及真实业务负载(特别是有付费/合规/审计需求的)部署;
  • 缺少 Gateway 身份校验机制的部署。

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 官方资料整理。