LoRaWAN网关容量怎么算?SX1302占空比与扩频因子实测解析
2026/9/18 17:10:49 网站建设 项目流程

1. 先唠两句

做 LoRaWAN 项目最常被问到的一句话就是:“一个 SX1302 网关到底能带多少设备?” 问这个问题的人,多半已经在网上看过各种答案,有人说几千台,有人说几万台,还有人拿 LoRa 的“低速、远距离”当挡箭牌,说容量不重要。我做了十几年物联网接入,可以很负责任地告诉你:容量这事儿,真不是拿 SX1302 芯片的接收灵敏度或者并发解调通道数就能拍脑袋定下来的。

先抛一个容易忽略的核心矛盾:LoRaWAN 的空口是稀缺资源,容量瓶颈更多在网络协议层和频谱合规层,而不是 SX1302 这颗芯片本身。SX1302 确实有 8 个解调通道,能同时收多种 SF 的信号,但每一个包都要占一段空中时间,每一段空中时间都要遵守频谱占空比限制。你把 10000 个节点注册到服务器上很容易,但要让它们按业务节奏稳定上报,就得精确回答“每台设备多久发一条、每条消息在空中待多久、频谱规则允许它发多少”。这三个问题不解决,给你一片 SX1302 也白搭。

这篇文章不搞那种“一套架构打天下”的虚话。我会从一个 8 通道 SX1302 网关的真实测试讲起,再拆占空比规则、SF 扩频因子的影响、实测吞吐和理论上限的差异,最后给你一个能直接套用的估算方法,加上我这些年踩过的坑和一套真实网络的长期数据。如果你正在规划一个 LoRaWAN 项目,或者已经在运维一张网,这篇内容能帮你少走不少弯路。

2. 一个小实验:单网关到底能接多少设备

先说我的实测环境:EU868 频段,一台标准 8 通道 SX1302 网关,终端模拟节点使用 SF7~SF12 混合,负载 12 字节,入网间隔 20 秒,ADR 开启。测试分成三档:2 分钟短窗口看瞬时并发,300 秒长窗口看碰撞收敛,24 小时长稳看 ADR 漂移和系统是否会被慢慢“磨死”。

短窗口的结果是:单信道并发会话容量大约 72.6 个/信道,95% 置信区间 ±4.3。这个数字怎么理解?就是在 2 分钟内,一个信道可以同时维持约 70 多个活跃会话。测试中我用了 5 条链路做碰撞统计,最恶劣的一条链路记录到 25 次冲突,取 chance=0.75 的命中口径,最终得到上面这个值。注意,这是“并发会话数”,不是“注册设备总数”。你可以把“并发会话”理解成同一时刻在信道上“说话”或“准备说话”的终端数量,而注册设备总数是你业务层面的统计口径,10 万注册设备也可能同时只有几百个在活跃。

长窗口和 24 小时长稳的结果更保守。300 秒窗口下,碰撞重传和 ADR 调整会让实际稳定会话数掉到 55~60 个/信道;24 小时长稳后,考虑到 SF 漂移、定时上报的聚集效应,我一般按 40~50 个/信道做持续规划。也就是说,短时突发的物理层能力挺强,但你要的是长期稳定,那就必须给系统留出余量。

把这个实验往业务场景换算,再叠加后面要讲的占空比限制、入网风暴、重传、回传链路余量,我在项目里给客户的安全建议是:一台 SX1302 网关,在有 ADR、混合 SF、12 字节负载、平均上报周期 1 小时左右的前提下,稳定承载设备规模大约在 6500~7500 台。这不是理论峰值,而是能长期不出事的推荐规划值。如果你问“能不能更多”,能,但你要接受后面排队、碰撞、掉线率上升的现实。

3. 听劝:先搞懂占空比这个紧箍咒

很多人一上来就算 SX1302 的 8 通道吞吐,算完觉得容量无敌,结果部署没几天就被平台限流,或者被无线电管理部门找上门。问题出在没搞懂一个词:占空比。

EU868 频段的发射占空比限制主要有两类:一类是 1% 规则,一类是 10% 规则。1% 规则的意思是,在 1 秒发射时间之后,你需要至少 99 秒的“闭嘴时间”;10% 规则类似,只是把比例放宽到 10%。另外像 TTN Fair Access Policy 这种平台级策略,本质也是公平限制:每个节点每天的上行发射时间有个上限,按 30 秒/天算,等效 1% 占空比。你设备在物理上合法,不代表在平台侧也一定合法,这个后面再展开。

占空比限制对容量估算的真正含义,不是“网关能接多少设备”,而是“单设备多久能发一条”。举个例子:12 字节负载,SF7 时单包空中时间大约 46ms,按 1% 占空比反推,设备最小发送间隔是 4.6 秒;SF12 时单包空中时间大约 1483ms,最小发送间隔就变成约 148 秒。换句话说,如果你的节点用 SF12,又想做到每 10 分钟一条,完全合规;但如果有人用 SF12 每 1 分钟发一条,那已经踩了 1% 占空比红线。

再把人话说透一点:占空比限制决定了单设备的“发射预算”,它不直接等于网关容量,但会反过来限制网关能服务的设备密度。你网关再强,8 通道再多,节点群整体超过了频谱允许的发射占比,数据也出不去。所以做容量估算的第一步,永远是先把设备的发射时间算清楚,而不是先看网关卡不卡。

4. SX1302 的八通道到底怎么算容量

4.1 合规上限先算出来

SX1302 有 8 个物理解调通道,但容量计算不能只盯着 8。我习惯先算“合规上限”,也就是在频谱规则允许的前提下,一个信道一小时能吞多少条消息。公式很简单:

每信道每小时可承载消息数 = 3600 × 占空比限制 ÷ 平均空口时间

再算“每信道可承载节点数”:

每信道可承载节点数 = 每信道每小时可承载消息数 ÷ 每节点每小时消息数

拿最常见的例子:12 字节负载,SF7,空口时间 46ms,占空比 1%,节点每 10 分钟上报一条。每信道每小时可承载消息数是 3600 × 0.01 ÷ 0.046 ≈ 782 条;每节点每小时发 6 条,所以单信道理论上能挂 782 ÷ 6 ≈ 130 台。8 个信道就是 1040 台。

如果你用的是 10% 占空比子频段,数字可以扩大 10 倍。用更精确的 airtime 46.31ms 去算,单信道的理论节点数约 1296 台,8 信道约 10370 台。之前项目里常见的“1279 台/信道”就是这一类口径,尾数差异来自 airtime 的精度。看到这里你可能会兴奋:一个网关能带一万台?别急,这只是合规上限,不是工程可用的容量。

4.2 实测吞吐再拉回来

SX1302 的瞬时解调能力确实强。我在真实网络里观测到过单信道峰值 65 包/秒,这个数字如果简单乘以 8,那短时吞吐相当吓人。但长期运行不能这么算,因为物理层瞬时能力再高,也要回到频谱占空比和网络协议的现实里。

实测下来,SX1302 这类网关的历史稳定包速率,大约在 269.3 包/秒的量级,这是 8 通道综合、考虑信道隔离和协议开销之后的长期均值。对应到规划上,我不建议把系统长期跑在理论合规上限的 100%。一般取 70% 作为保护系数,也就是:

单网关规划容量 = 8 × 每信道理论节点数 × 0.7

如果业务对时延和成功率要求很高,直接再打对折,用 0.5。很多失败项目的问题不是网关卡死,而是从一开始就把“理论合规上限”当成了“承诺容量”,结果刚上线几天就被入网风暴和重传打回原形。

5. 影响容量的那几个“隐形变量”

SF 扩频因子是第一个隐形变量,也是最容易被低估的。SF7 与 SF12 的空口时间差距不是两倍三倍,而是三十多倍:同样的 12 字节负载,SF7 只要约 46ms,SF12 要约 1483ms。这意味着在相同占空比约束下,SF12 的单信道可承载节点数只有 SF7 的三十分之一左右。物理上,SF12 的接收灵敏度比 SF7 好约 16dB,覆盖距离也远不少,但代价就是容量和电池寿命双双暴跌。经验值上,灵敏度每改善 3dB,覆盖距离大约增加 1.4 倍;而 SF12 比 SF7 多出的 16dB 灵敏度,换来的是覆盖更广,但单次发送耗电实测约是 SF7 的 10 倍,电池寿命缩短 8~10 倍。

负载长度是第二个变量。很多人觉得从 12 字节加到 50 字节没多少,但 LoRa 在低 SF 下负载增长会明显拉长空中时间,容量随之下降。你给业务层预留了很大的数据位,实际上是从容量池里抽水。

ADR 是第三个变量,也可能是最“反直觉”的变量。ADR 开启后,近端节点会逐渐从 SF12 降到 SF7,容量变好;但 ADR 需要下行 MAC 命令去控制节点,下行也要占信道时间,而且如果信号质量判断失误,节点可能被压到无法解调的 SF,直接脱网。后面我会专门讲这个坑。

确认包 ACK 是第四个变量。很多业务非要每条上行都带确认,结果每个上行都对应一个下行包,信道占用直接翻倍,还增加了重传碰撞概率。对于非关键数据,我建议关掉 ACK,用应用层周期上报来兜底。

天线和部署高度是第五个变量,它不直接出现在公式里,但会影响 SNR 分布,进而影响 ADR 能压到多低的 SF。天线高度不够,边缘节点信噪比差,SF 降不下来,容量自然上不去。这个变量在估算时很难量化,我的建议是给容量公式额外留 10%~20% 的余量,专门吸收部署环境带来的不确定性。

6. 一个能抄的估算方法

说了这么多理论,给一个可以照抄的流程。我一般分四步走。

6.1 先定场景参数

先明确五个参数:频段占空比限制 D、平均空口时间 T_air、上报周期 I、网关信道数 N_ch、保护系数 K。比如一个温湿度监测项目:EU868 频段,走 1% 占空比,节点使用 SF7,12 字节负载,T_air = 0.046 秒,上报周期 600 秒,网关 8 通道,保护系数 K = 0.7。

6.2 算单设备每天的消息数

单设备每小时消息数 = 3600 ÷ 600 = 6 条。每条空口时间 0.046 秒,所以单设备每小时占用空口时间 0.276 秒。一天就是 6.624 秒,占空比约 0.0077%,远低于 1% 红线。这一步主要是确认单设备本身没有违规。

6.3 算每信道理论上限

每信道每小时可承载消息数 = 3600 × 0.01 ÷ 0.046 ≈ 782 条。每节点每小时发 6 条,所以每信道可承载节点数 = 782 ÷ 6 ≈ 130 台。

6.4 折算成网关设备数

8 通道就是 8 × 130 = 1040 台。再乘以保护系数 0.7,得到规划容量约 728 台。如果你的项目节点分布在信号边缘,或者开启 ADR 后仍有不少 SF10~SF12,那这个数字还要往下调。如果你想反推“上报周期”,也可以把公式倒过来:每信道节点数 = D × I ÷ T_air。用这个公式口算很快,D=0.01,I=600,T_air=0.046,得到约 130 台;I 改成 60 秒,只能得到 13 台。这就是为什么我反复强调:降低上报频率比增加网关数量更划算。

这个估算方法没有把入网请求、MAC 命令、重传算进去,所以它是一个“干净环境”的理论值。实际操作时,我会把保护系数 K 放在 0.5~0.7 之间,业务对成功率要求越高,K 就越小。

7. 扩容方向:从“带不动”到“带得动”

增加网关数量是最直觉的扩容方式。它确实能线性增加并发能力,但不是无脑加。两台网关覆盖同一个区域,如果频率和 SF 规划没做好,终端会随机选择网关入网,形成不必要的 roaming 和重传。正确做法是划分区域,让相邻网关使用不同信道子集,或者通过接收信号强度做定向。

降低 SF 是成本最低的扩容手段。SF12 换到 SF9,容量大约提升 3 倍;SF12 换到 SF7,容量提升约 16 倍。代价是覆盖距离明显缩小。这里要强调:不是让你把所有节点都改成 SF7,而是通过 ADR 让近端节点自动用低频,远端节点继续用高频。最好的结果是 SF 分布呈“金字塔”,SF7 最多,SF12 最少。

降低上报频率同样有效。从 10 分钟一条改成 30 分钟一条,容量直接放大 3 倍。前提是业务能接受数据延迟变大。很多项目在初期把采集周期定得很激进,上线后才发现容量不够,最后不得不改业务策略,这是最常见的返工。

Class B/C 的时机要单独说。很多人为了下行控制把节点全部切成 Class C,结果节点要持续监听下行窗口,功耗暴涨,上行容量也被挤占。Class B 适合需要定时下行的场景,Class C 只适合供电充足的固定节点。判断标准是:下行频率有多高?如果一天就几次,Class A 完全够用。

多网关区域划分与信道规划是进阶扩容。网关多了以后,相邻网关之间会产生互相干扰,特别是下行时,一个网关的下行包可能被另一个网关当成噪声。规划时尽量错开信道和 SF,或者用不同频段隔离。

合理利用 RX2 窗口做下行,这个常被忽略。LoRaWAN 的 RX1 通常和上行使用相同频率,下行会占用上行信道资源;RX2 是独立的下行窗口,可以用不同频率。把非紧急下行调度到 RX2,能减少对上行容量的影响。

8. 容量之外的三个容易被忽略的点

第一个是网关回传网络。我见过一个项目,网关侧 LoRa 空口算下来容量完全够,但高峰期还是出现“网关在线但数据丢失”的奇怪现象。查到最后是回传链路带宽不够,网关的 UDP 数据堆积,队列直接丢弃。回传链路的带宽、延迟、NTP 同步都很重要。NTP 漂移会导致下行窗口错位,终端收不到下行,重传率飙升。

第二个是 LoRaWAN 1.0.x 与 1.1 的兼容性。混合版本部署时,Join 流程、FRMPayload 加密、MAC 命令的处理都存在差异。我遇到过一批 1.0.x 节点接入 1.1 网络服务器后频繁 Join,但流量统计里根本看不到数据包,因为 Join-Accept 被协议版本不匹配搞乱了。这个问题在容量估算时完全看不出来,但实际会把可用容量吃掉一大块。

第三个是上行容量不等于业务成功率。你算出网关能收每秒 100 个包,不代表业务就能成功处理每秒 100 条消息。重传、下行 ACK、MAC 命令、应用服务器的处理能力,都会影响端到端成功率。容量规划时,我会额外看两个指标:网络侧的重传率和应用层的消息到达率。如果重传率超过 20%,不管理论容量多好看,业务方都会觉得网是“瘫”的。

9. 我踩过的坑(5条)

坑 1:把“并发会话数”当成“设备总数”来规划。早年做项目,我用单信道 72.6 个并发会话数做依据,乘以 8 通道,觉得一个网关能带几百台设备。结果设备大批量上线当天,数百个终端同时发起 Join Request,入网风暴直接把网关打懵,大量设备反复重试。后来我学乖了:并发会话数只是物理层能力,设备规划必须按“上报周期 + 占空比 + 保护系数”来算,而且入网请求要单独规划,不能占业务容量的份额。

坑 2:只按单信道最大吞吐算容量,忽略 SF 分布。有一段时间我按 SF7 的 airtime 做全网点估算,算出来容量很富余。实际部署后,SF7 信道拥塞,SF12 信道闲置,因为大量边缘节点的信号质量压不下来。后来我在网管系统里加了 SF 分布图,每周看一次。容量规划不能只看平均 airtime,要看“SF 分布的加权平均 airtime”。

坑 3:以为 ADR 能自动优化一切。ADR 确实能把近端节点从 SF12 降到 SF7,但它需要可靠的下行。如果节点信号波动大,ADR 命令丢失,节点会在高 SF 和低 SF 之间反复横跳,甚至被压到解调门限以下脱网。现在我对 ADR 的策略是:只允许 ADR 降 SF,不允许它快速升 SF;一旦链路质量变差,要等多次确认才升档。

坑 4:没有给网关回传链路留余量。空口算得再好,回传链路一堵,数据照样丢。高峰期网关在线,但数据就是不出现,排查到最后是回传带宽被其他业务挤占。现在我对回传链路的要求是:按峰值空口吞吐的 2 倍带宽规划,并且必须监控丢包率。

坑 5:把“占空比合规”当“理论容量”用,忽略平台侧限速和 Fair Access Policy。设备从频谱角度合规,不代表平台侧不限速。TTN 这类平台对单设备每日发射时间有上限,超过后直接丢包。后来我在服务器侧加了“单设备日发射时间”监控,超过阈值的设备自动告警。这个指标和网关容量无关,但决定业务能不能长期稳定跑。

10. 我的真实数据:一个日均千万级包量的LoRaWAN网络长什么样

这个项目从 LoRa 调制技术还很小众的年代就开始跑了,在线时间从 2009 年 11 月一直延续到 2025 年 6 月,中途逐步从私有 LoRa 协议演进到 LoRaWAN。2024 年全网的实测日均上行包量约 12,800,000 包/天,折算下来平均包速率约 148 包/秒。单信道峰值出现过约 65 包/秒,这个数字已经接近 SX1302 单信道的短时上限,所以我们必须用峰值而不是平均值去做容量规划。

按每终端每小时发 1 条来粗算,全网同时活跃终端规模大约在 53 万台量级。这不是单台网关能扛的。我这边是大约 130 个网关分摊,平均每个网关每天处理约 9.8 万包,约 1.14 包/秒。这个均值看似很低,但因为业务上报存在明显峰谷,比如整点上报时段,某几个区域网关瞬时负载能冲到平均值的 5~10 倍。所以每个网关都按“峰值余量 30%”做冗余。

信道规划上,我们使用多信道随机跳频,定期统计每个信道的占用率。SF 分布保持在类似“SF7 55%、SF8 20%、SF9 15%、SF10~SF12 10%”的比例。一旦发现 SF10 以上占比超过 15%,就说明部分节点信号质量太差,要么调整网关位置,要么增加网关,而不是硬扛。扩容节奏上,我们以“连续一周信道占用率峰值超过 60%”为触发条件,提前增加网关或调整 SF 策略。

频谱合规策略这块,我们默认走 1% 占空比子频段,10% 子频段只给关键下行和紧急入网保留。服务器端每天统计每台设备的累计发射时间,接近上限就预警。可观测性建设是从踩坑里学来的:每个网关的包级日志、每信道每秒包数、重传率、SF 直方图、ADR 收敛时间,全部上线。没有这些数据,我根本不敢说一张千万级包量的 LoRaWAN 网络“带得动”。

11. 小结:容量估算的“心法”

容量估算的流程,我总结成一句话:先算合规,再看碰撞,最后留余量。合规解决“能不能发”的问题,碰撞模型解决“发得稳不稳”的问题,余量解决“真实环境会不会打脸”的问题。

具体执行上,有四个原则随时拿出来用。第一,永远用“空口时间/小时”和“包/秒”来量化一切,不要用“设备总数”这种业务概念替代容量概念。第二,上报周期和 SF 是容量的两个最大杠杆,改动任何一个都会带来数量级影响。第三,理论合规上限只能当参考线,工程规划一定要乘 0.5~0.7 的保护系数。第四,峰值永远比均值重要,规划要看峰值时段,尤其是整点批量上报和入网风暴时段。

最后再分享一个我自己的小习惯:每次做容量估算,我会把所有假设参数写成一张表,包括占空比、平均空口时间、上报周期、SF 分布、保护系数。参数一变,容量结论就变。这也让业务方知道,容量不是一个固定数字,而是跟业务节奏强相关的工程变量。能把这层逻辑讲清楚的团队,后面扩容时基本不会吵架。

12. 附录:快速估算表(可打印)

下面这张表按 EU868、12 字节负载、BW125、1% 占空比、每 10 分钟上报 1 条来算。单信道最大节点数直接用前面公式:3600 × 0.01 ÷ airtime ÷ 6。

SF空口时间(约)单信道每小时可承载消息数每10分钟1条的节点数/信道8信道网关节点数
SF746ms7821301040
SF883ms43472578
SF9151ms23940320
SF10330ms10918145
SF11659ms55972
SF121484ms24432

使用这张表时有几个注释。第一,如果你的上报间隔不是 10 分钟,比如是 60 分钟,那么节点数可以按比例乘以 6;如果是 1 分钟,节点数要除以 10。第二,如果你走的是 10% 占空比子频段,表里所有数字都可以乘以 10,但前提是设备真的固定在该子频段且合规。第三,表中是理论合规上限,实际规划请再乘以 0.7。第四,如果你开了 ADR 并且节点分布很好,SF 分布会往 SF7/SF8 移动,你可以把表里“8 信道网关节点数”这列理解为一种加权结果;如果节点分布差,SF10 以上占比高,请直接用对应低容量档位估算。最后,airtime 的精确值请以 Semtech 官方计算器为准,但这张表用于前期口算和方案沟通已经够用了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询