一个永远在变的数字
“你们的网关能带多少设备?”
这是每一个 LoRaWAN 方案沟通会上被问到的第一个问题,也是每一个采购经理在 Excel 表里最先填的格子。答案不在任何一份产品手册里,因为同一个网关在真实部署中可能服务700 台设备,也可能服务 20,000 台。硬件没变,变的只有部署条件。
这并不是销售在吹牛。一个 SX1302 网关在某些假设下确实能扛住数万台传感器——只是这些假设几乎从不被明确写出来。于是同一套硬件诚实地覆盖了两个数量级的部署量,差距不来自硬件,来自覆盖。
本文把 LoRaWAN 网关容量这件事拆开来讲清楚:硬件能给你什么、ALOHA 协议会拿走什么、工程上有哪些可调节的旋钮、最后给一个开箱可用的估算公式与三步决策流程。
一、网关硬件给了我们什么
1.1 SX1302 集中器:8 信道 × 16 解调器
现代 LoRaWAN 网关几乎都基于 Semtech SX1302 集中器。要谈容量,先把这颗芯片的内部结构看清楚。
Semtech 官方数据手册给出的 SX1302 内部构成:
8 个 125 kHz 频率信道:8 路同时监听不同的中心频率
16 个 LoRa 解调器,分两组:
- 8 个支持 SF5–SF12(远距离低速档)
- 8 个支持 SF5–SF10(近距离高速档)
1 个125 / 250 / 500 kHz 高速 LoRa 解调器
1 个 (G)FSK 解调器(兼容旧协议)
最多65 个可配置逻辑信道
灵敏度 -141 dBm(配 SX1250 射频前端),相对上一代 SX1301 功耗降低约一个数量级。
关键认知:这 8 路频率信道和 16 个解调器是共享而非"一对一绑定"的。也就是说同一个频率信道、不同的 SF,可以被不同解调器同时解码;不同的频率信道、不同的 SF,更可以同时解码。
但是 16 不是一个大数字。当第 17 个包到达时,它直接被丢弃,没有排队,没有重传请求——SX1302 的并发能力就到这里为止。
这正是 SX1303 与 SX1302 的另一道分水岭:开启 SX1303 的Fine Timestamp功能后,并发上限从 16 降到 8——文章可参考本系列第 8 篇《LoRa 定位技术原理》。
1.2 解调器"被打爆"是什么样子
实战中网关容量很少被解调器卡住。被卡住的永远是空中时间。
为了让你直观感受这一点,先把 13 字节 payload、BW=125 kHz、CR=4/5 条件下的实测空中时间摆出来。这是用 Semtech 官方 LoRa 计算引擎(基于 Semtech 内部 RF 物理模型)算出的真实数据:
| SF | 空中时间 | 相对 SF7 |
|---|---|---|
| SF7 | 46.3 ms | 1.0× |
| SF9 | 164.9 ms | 3.6× |
| SF10 | 288.8 ms | 6.2× |
| SF11 | 577.5 ms | 12.5× |
| SF12 | 1155.1 ms | 25× |
一台 SF12 设备消耗的网络资源,相当于 25 台 SF7 设备。发的报文完全相同,唯一的差别是它离网关更远、链路更差。
这就是为什么在 LoRaWAN 工程里,SF 分布比设备总数更能反映真实负载,也是为什么覆盖做得越好、网关容量就越大——不是因为硬件升级,是因为 SF7/SF8 的占比上去了。
二、ALOHA:所有估算的起点
2.1 LoRaWAN 上行是 ALOHA 信道
LoRaWAN 设备"有话就说":没有调度、没有信道预约、大多数地区没有"发前监听"。这意味着上行信道本质上是一个 ALOHA 信道。
ALOHA 信道有一个不太友好的特性:吞吐量随着负载上升到一个点后开始下降——不是平稳,是掉头向下。超过峰值后,越多传输反而带来越少成功接收,因为冲突把包毁掉,设备重传,重传又制造更多冲突。
这个峰值出现在大约 18% 的信道利用率。一旦突破这个数字,网络就从"工作"直接塌成"看起来像设备故障"。
LoRaWAN 在容量边界处的行为是非线性的。它不是慢慢变差,是工作——然后崩溃。这种崩溃模式在监控大屏上会表现为"设备随机掉线",而不是"网关满了"——这就是为什么很多现场工程师找不到瓶颈。
2.2 捕获效应:6 dB 救一个包
ALOHA 并不是完全无望。LoRa 有一个"Capture Effect":当两个包在同一信道同一 SF 上冲突时,强度高约 6 dB 的那个包仍然可以被解出来。
这意味着一个规划良好的网络(设备离网关距离不同、路径损耗有梯度)能跑赢教科书模型。这也是为什么"覆盖规划做好 = 网关容量免费提升"——把设备均匀铺在一个梯度上,捕获效应才能发挥。
但捕获效应不改变曲线的形状,只是把整个曲线往右推一点。
2.3 SF 成本曲线
这是把上面的数字换成"每小时频道预算"之后的样子(EU868,8 信道):
可用频道预算(每小时)= 8 信道 × 3600 秒 = 28,800 信道·秒/小时 ALOHA 可用预算 = 28,800 × 18% ≈ 5,200 信道·秒/小时
接下来除以每台设备每小时消耗的空中时间,理论容量就出来了。ThinkLink 知识库基于 13 字节 payload、8 信道网关、每小时一次的发送频率,给出的官方测算:
| SF 档位 | 13 字节空中时间 | 8 信道理论容量 |
|---|---|---|
| SF7 | 46.3 ms | 约 78.7 万 |
| SF9 | 164.9 ms | 约 25.3 万 |
| SF12 | 1155.1 ms | 约 2.9 万 |
注意:这是理论上限,假设没有任何冲突、没有任何重传、没有任何下行。**真实部署容量通常只有理论值的 30–50%**——这就是为什么手册上写的"每信道几万台"几乎从未在真实场景兑现过。
三、决定容量的真实变量
3.1 上行 vs 下行的不对称
LoRaWAN 网关最反直觉的设计是它的上下行不对称:
- 上行:8 个频率信道 + 16 个解调器并行接收——天然的多车道高速公路
- 下行:典型只有 1 个发射信道——单车道乡道
所以"下行拥堵"是 LoRaWAN 规模化的最大隐患,而它几乎不会出现在小规模部署里。一旦你跑过 1000 台设备,下行就开始成为瓶颈:Join Accept、ACK、MAC 命令——所有下行消息都要挤这唯一的发射信道。
3.2 SF 分布:被忽视的核心指标
很多项目用"设备总数"评估 LoRaWAN 负载,这是错的。正确的指标是 SF 加权后的总空中时间。
举例:某现场有 1000 台设备,但其中 200 台在 SF12 滞留,它们的等效负载约为 200 × 25 = 5000 台 SF7 设备。这个现场在"1000 台设备"的账本上是绿色的,但在网络层面已经是红色的。
如果你想知道自己的网络离 ALOHA 阈值还有多远,最直接的方法是去网络服务器后台看过去 24 小时的 SF 分布直方图。SF12 占比超过 10% 就要警惕,超过 20% 就该做覆盖优化。
3.3 包大小:第二被忽视的变量
13 字节和 50 字节的 payload 在 SF12 下空中时间分别是 1155 ms 和 2468 ms——50 字节比 13 字节多消耗一倍的空中时间。
很多团队一上来就把所有字段(时间戳、设备 ID、传感器读数、电池电压、信号强度、固件版本、CRC)打包上送。精简 payload 是扩容最便宜的方法——把 50 字节砍到 13 字节,相同 SF 下的空中时间减半,等同于容量翻倍。
四、6 个可调节的扩容旋钮
下面这套旋钮按"成本从低到高"排列。永远先调前几个,再花钱买新硬件。
旋钮 1| 启用 ADR(自适应数据速率)
ADR 是 LoRaWAN 协议内置的速率调节机制。不启用 ADR 等于自废一半容量——所有设备都会默认按 SF12 上报,空中时间是 SF7 的 25 倍。
启用 ADR 后,NS 会根据链路预算建议设备切换到合适的 SF,长期看 SF7/SF8 的占比应显著上升。
踩坑提示:服务端 ADR 在高负载时可能因下行拥堵而下发不及时,设备会一直留在 SF12。本地 ADR让设备按本地 RSSI/SNR 自主调速,更可靠。ManThink 自研的 EdgeBus(EB)边缘引擎就内置了本地 ADR。
旋钮 2| 慎用确认包(Confirmed)
每次 Confirmed 上行都需要 1 个下行 ACK。下行是单车道。
把非关键数据(温湿度、电池电压、定期心跳)从 Confirmed 切到 Unconfirmed,把可靠性上移到应用层(重试、去重、聚合),可以显著降低下行流量——这是直接缓解下行瓶颈最便宜的方法。
旋钮 3| 错开入网时机
"上电即入网"是经典反模式。想象 5000 台设备断电恢复后同时上电——它们几乎会在同一秒发起 Join Request,下行 Join Accept 直接堵死。
正确的做法:
- 按需入网:连续 N 次上行失败再触发入网
- 基于 UTC 的随机延迟:每台设备用
pseudo_random_delay = (DevAddr & 0xFF) × 100 ms错开
ManThink EdgeBus 的入网保护机制就是这个套路:内置随机延迟和入网重试,避免大规模断电后的"入网雪崩"。
旋钮 4| 合理规划覆盖与网关密度
一个不直观但被无数次验证的经验值:
| 部署场景 | 网关密度参考 |
|---|---|
| 城市密集区 | 1–2 个/km² |
| 郊区 / 农村 | 1 个 / 5–10 km² |
| 楼宇室内(穿透 5–10 层) | 每栋楼 1–2 个 |
| 工厂车间 | 每 5000–10000 m² 1 个 |
密度太高(同一区域 3+ 个网关都收到同一包)浪费硬件但能换更高接收成功率;密度太低则设备被推上高 SF,整个网络负载爆掉。
旋钮 5| 精简 payload 与压缩
- 应用层只上送必要字段,丢弃冗余 ID 与时间戳
- 大块数据用差分压缩(只传增量)
- 多个小读数合并为一个周期性 packet
- 二进制优于 ASCII:把
"23.5"转成int16直接省 2 字节
旋钮 6| 用边缘计算代替"全部上送"
把告警判断、阈值过滤、数据聚合在网关或终端本地完成,只把异常和汇总数据上送——这是 LoRaWAN 规模化的真正杀手锏。
ManThink 的 EdgeBus(EB)正是为此设计:在低功耗 MCU(Cortex-M0 即可)上跑事件驱动的边缘计算逻辑,让"绝大多数时间不发包"成为常态。这相当于把网关容量从"每秒多少包"提升到"每天多少异常事件"——量级完全不同。
五、给个可用的估算公式
5.1 三步估算流程
Step 1| 计算单设备每小时空中时间T_airtime = packet_time(SF, payload_size) // 用 Semtech LoRa 计算器实测 T_device_hourly = (3600 / send_interval_sec) × T_airtime
Step 2| 计算网关每小时频道预算B_gateway_hourly = 8 × 3600 × 0.18 = 5,184 信道·秒/小时
Step 3| 算理论容量,留 50% 冗余N_max = B_gateway_hourly / T_device_hourly N_recommended = N_max × 0.5
5.2 一个实例
某智慧农业项目:
- 1000 块土壤湿度传感器
- 每 10 分钟上报一次
- payload 8 字节(湿度 + 温度)
- 启用 ADR 后预计 SF7 占比 60%、SF8 占比 25%、SF9 占比 15%
实测空中时间(8 字节,BW125,CR4/5,Semtech 计算器):
- SF7 ≈ 41 ms
- SF8 ≈ 77 ms
- SF9 ≈ 164 ms
加权平均空中时间:
T_avg = 0.6 × 41 + 0.25 × 77 + 0.15 × 164 ≈ 69 ms
每小时每设备占用:T_device = (3600 / 600) × 0.069 = 0.414 信道·秒/小时
单网关理论容量:N_max = 5,184 / 0.414 ≈ 12,500 台
加 50% 冗余后推荐部署上限:
N_recommended ≈ 6,200 台
1000 台在这个容量下安全。一个 8 信道 SX1302 网关足够覆盖。
对比:如果覆盖做得差,所有设备都在 SF12:T_device = 6 × 1.155 ≈ 6.93 信道·秒/小时 N_max = 5,184 / 6.93 ≈ 748 台 N_recommended ≈ 374 台
同样是 1000 台,覆盖差的项目单网关根本扛不住,必须立刻上第二个网关或优化天线部署。
六、ManThink GD6 / GDO51 的容量实践
6.1 GD6 开源网关
ManThink GD6(ESP32-S3 + SX1302)是面向中小规模部署的开源网关。典型应用:
- 单网关覆盖楼宇 1 栋(3–8 层)+ 室外 1–2 km²
- 推荐设备规模:500–3,000 台/网关(含 ADR)
- payload 控制在 8–20 字节
- 启用本地 ADR + Unconfirmed + 入网保护
6.2 GDO518 商用网关
ManThink GDO518 商用室外网关(SX1302,16 频点 + 32 包并行解调):
- 推荐设备规模:5,000–20,000 台/网关
- 适合大规模城市级部署(智慧城市、智慧农业、资产追踪)
- 支持 Docker 容器,可在边缘侧跑 EB 边缘计算逻辑
- 外置 SIM 卡槽 + Debug 串口,维护无需拆机
实测案例:江苏某智慧农业项目,单 GDO518 网关带 8,000 台土壤传感器(15 分钟上报一次,payload 6 字节,ADR 启用),网络稳定运行 12 个月。
七、5 个常见误区
误区 1:SX1303 等于容量更高
错。SX1303 与 SX1302 引脚兼容、解调器数量相同,但开启 Fine Timestamp 后并发上限从 16 降到 8。SX1303 的真正价值在定位精度,不在吞吐。
误区 2:把"接入设备数"写成"承载设备数"
很多方案用"该 NS 已接入 XX 万台设备"宣传,这只是注册量,不代表同时在线容量。真实容量看 SF 加权后的并发负载。
误区 3:扩容只买新网关
错。绝大多数 LoRaWAN 网络只要做 3 件事就能扩容 3–5 倍:启用 ADR、精简 payload、错开入网。买网关是最后一步。
误区 4:设备越多越要选 Class C
错。Class C 持续接收,功耗是 Class A 睡眠状态的 1000 倍以上。Class A 才是大规模部署的主力——下行带宽天然窄,Class A 的"上行后才有 RX 窗口"反而匹配这个约束。
误区 5:所有设备都走确认包
错。温湿度、电量、定期心跳这类可重发数据用 Unconfirmed,告警、控制指令才用 Confirmed。下行带宽是稀缺资源,别浪费在不需要可靠性的数据上。
八、一张清单带走
下次评估 LoRaWAN 部署容量,按这个清单走:
- 用 Semtech LoRa 计算器实测目标 SF 与 payload 大小下的空中时间
- 估算 SF 加权后的平均空中时间,不要直接用 SF7 或 SF12
- 用 ALOHA 18% 阈值 + 50% 冗余得到推荐设备数
- 启用 ADR + 本地 ADR(EB 自带)
- 关键数据 Confirmed,非关键 Unconfirmed
- 入网用 UTC 随机延迟或按需触发
- payload 尽量小,二进制优于 ASCII
- 边缘侧做告警与聚合,减少上送
- 单网关容量预估不足时,先优化覆盖,再考虑加网关
九、结语
回到开篇那个 Excel 表格里的格子:一个 SX1302 网关能带多少设备?
如果非要一个数字:典型值是 1,000 到 10,000 台/网关。但这个数字本身没有意义——它依赖于 SF 分布、payload 大小、上报频率、上下行比、入网策略、覆盖质量。
容量是一个设计出来的结果,不是买回来的参数。你买的硬件只是容量曲线的起点;SF 分布、payload 治理、覆盖规划——这些软件层面的决策,决定了同一套硬件能撑 700 台还是 20,000 台。
对于大规模 LoRaWAN 部署,唯一可靠的扩容顺序是:
ADR → payload 精简 → 入网错峰 → 边缘计算 → 覆盖优化 → 加网关
把这六步走完,绝大多数项目不需要再买第二台网关。
参考资料
- Semtech 官方 LoRa 调制解调器计算工具:https://lora-developers.semtech.com/resources/tools/calculators/lorawan-airs-time-and-duty-cycle-calculator/
- LoRa Alliance, RP002-1.0.4 LoRaWAN Regional Parameters(2020)
- LoRa Alliance, LoRaWAN L2 1.0.4 Specification(2020)
- Semtech,SX1302 Datasheet—Corecell Gateway Baseband Processor
- ThinkLink 官方知识库:《解密 LoRaWAN 网关容量》《LoRaWAN 网关容量解析》《一个 LoRa 网关的容量多大》
- “How Many Devices Can One LoRaWAN Gateway Really Handle?” — lorawan-consulting.com(2024)
- Semtech,LoRa Corecell Reference Design— SX1302CFD490GW1 / SX1302CFD915W1-H
- ManThink 官方文档:GD61x 配置手册 / EdgeBus 边缘计算 SDK