十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

LoRaWAN网关容量估算:SX1302真实带机量解析

LoRaWAN网关容量估算:SX1302真实带机量解析 最近做 LoRaWAN 项目选型的时候几乎每个客户都会问同一个问题你们那个基于 SX1302 芯片的网关到底能带多少终端设备说实话这个问题看着简单但我每次都得解释半天。同一个 SX1302 网关有人稳定带过 2000 个节点也有人只带了 300 个就频繁掉线差距在哪就在容量估算的方法上。这篇就围绕 LoRaWAN 网关的容量估算从 SX1302 的硬件结构、空中时间计算、ALOHA 协议极限到实际部署中的工程修正把整个推算过程完整过一遍最后给出能直接套用的估算模板和扩容思路。1. 先把容量问题拆开SX1302 网关的极限由什么决定1.1 SX1302 是什么它在网关里负责干什么LoRaWAN 网关一般由射频前端、基带芯片和主控处理器组成。SX1302 是 Semtech 公司的 LoRa 基带数字芯片专门负责多路 LoRa 信号的解调处理。它本身不直接收发射频信号而是配合 SX1250 或 SX1255/57 这样的射频收发器工作射频芯片把空中的模拟信号采集成数字中频数据SX1302 再对数字信号做解调、解码、时间戳标记等处理。SX1302 是 SX1301 的后继产品。相比老一代它的功耗大幅下降SX1301 整机接收电流要 2A 左右SX1302 方案一般能控制在 0.5A 上下这对太阳能供电或者长电保持的网关来说非常关键。同时 SX1302 的外围电路更简单一颗 6x6mm 的封装就把 8 路 LoRa 解调、1 路 FSK 解调、GPS 时间同步接口、以及和主控的 SPI 通信全部集成进去了。它的体积不大却承担着整个网络同时听多个设备说话的核心任务。不过话说回来很多朋友对8 通道网关这个概念有误解以为 SX1302 能同时解调 8 个数据包于是就把容量估计得过于乐观。实际情况要复杂得多这直接关系到后面的容量计算。1.2 8 通道不等于同时收 8 个包SX1302 内部的 LoRa 解调资源确实有 8 路但这里的通道指的其实是 8 个频点。在标准的 LoRaWAN 频段规划里上行链路通常分配 8 个 125kHz 的频点比如国内常见的 470-510MHz 频段里选了 8 个频点欧洲 868MHz 也是一样网关把每个频点映射到一路解调器上。每一路解调器负责监听自己对应的那个频点接收落在该频点上任何扩频因子SF7 到 SF12的 LoRa 信号。因为 LoRa 的不同扩频因子在码域正交所以理论上不同 SF 的信号在同一个频点上可以同时存在、互不干扰。但问题是同一路解调器在同一时刻只能真正解调出一个数据包。如果这个频点同时来了一个 SF7 的包和一个 SF12 的包解调器到底能挖出几个取决于捕获效应和时序工程上不能指望它稳定同时解出多个。所以严谨一点的描述是一个 SX1302 网关在同一时刻最多处理 8 个物理数据包每个频点一个。如果两个终端在同一个频点上用同一个 SF 同时发包那就是硬冲突两个都废掉如果在同一个频点上用不同 SF 同时发包有一定概率靠正交性都解出来但这不是一种能稳定设计的容量来源。在做容量规划时比较保守的做法就是按一个频点同时最多一个包来算。1.3 决定容量的其他硬约束除了上述解调通道数量之外LoRaWAN 网络的容量还受下面几个因素约束这些约束在实际估算时往往比芯片参数更致命。第一个是频谱资源的占用方式。LoRaWAN 使用非授权频段国内 470-510MHz、欧洲 868MHz、北美 915MHz 等由于 LoRa 采用 ALOHA 随机接入机制设备想发就发没有预约机制所以冲突概率是数学上天然存在的。这一点在下文会详细展开。第二个是单包空中时间。不同扩频因子下的 LoRa 包在空中停留时间差别非常大。SF7 的 20 字节包可能只要约 100 毫秒同样的包在 SF12 下要 1.4 秒以上。空口时间越长每一个包占用信道的时间就越长网络容量自然越低。这是估算容量最核心的一个参数。第三个是区域法规的占空比限制。在 ETSI 定义的欧洲 868MHz 频段终端和网关心每个小时在某个频率上的发射时长不能超过 1%约 36 秒这主要限制下行的 ACK 和指令发送能力。在国内 470-510MHz 频段也有对应的短距离微功率设备管理规定对发射时长有要求。上行接收虽然不受占空比限制但下行受限会直接影响 ACK 拉低的效率也会间接减少可用容量。第四个是网关本身是半双工。SX1302 的收发通路是分时复用的网关在发送下行数据的时候没法同时监听上行。如果网络服务器频繁下发 ACK 或者远程配置指令这部分时间就直接从上行接收时间里扣掉了。2. 三步完成容量估算从空中时间到设备数量2.1 第一步算清楚单个数据包的空中时间容量估算的起点是单个上行数据包在空中的持续时间业内叫 Time on Air简称 ToA。LoRaWAN 包的空中时间主要由扩频因子 SF、带宽 BW、编码率 CR、以及有效负载长度共同决定。LoRa 的符号速率和 SF、BW 关系是固定的符号时间 Ts 2 的 SF 次方 / BW举个例子BW125kHz 时SF7 的单个符号时间约为 128 / 125000 ≈ 1.024 毫秒SF12 的单个符号时间约为 4096 / 125000 ≈ 32.768 毫秒一个 LoRa 包由前导码通常是 8 个符号、负载部分和可选的 CRC 组成。要精确计算某个具体负载长度的 ToA最靠谱的办法是用 Semtech 官方的 LoRa Calculator 工具或者用网上现成的 Python 库lorawan、lora-phy来计算。我这里直接给几组实测常用值都是 125kHz 带宽、CR4/5、带 CRC、负载 20 字节的情况扩频因子空中时间 ToA约相对倍数SF7113 毫秒1xSF8185 毫秒1.6xSF9330 毫秒2.9xSF10616 毫秒5.5xSF111.1 秒9.7xSF121.4 秒12.4x注意如果负载增大ToA 会进一步增加。40 字节的 SF12 包可能要超过 2 秒。所以进行容量估算前第一步就是把自己的报文长度固定下来然后算出典型 ToA。如果网络里既有 SF7 也有 SF12那就要按比例做加权不能只取一个值。2.2 第二步套入 ALOHA 协议的极限公式LoRaWAN 的上行接入是典型的纯 ALOHA 机制设备随机、自发地发送数据发送前不侦听信道也不跟网关预约时隙。这种机制的数学极限早已有定论在纯 ALOHA 协议下信道的最佳利用率只有大约 18.4%。这是什么概念通俗解释就是一个信道一个频点理论上每秒能容纳约 1/ToA 个数据包即信道被包填满的极限但由于冲突的存在实际能成功解出的包最多只能占这个极限容量的 18.4% 左右。超过这个比例网络就开始进入拥塞崩溃区冲突大量上升成功率反而会断崖式下滑。所以单个频点的有效容量公式就是单频点有效容量 1 / ToA × 18.4%以 SF7、ToA113ms 为例单频点最大容量 1 / 0.113 × 0.184 ≈ 1.63 包/秒SX1302 有 8 个频点总容量约 13 包/秒也就是理论上一个 SX1302 网关每秒能稳定处理约 13 个 SF7 的上行包。如果所有设备都用 SF12ToA1.4s单频点最大容量 1 / 1.4 × 0.184 ≈ 0.13 包/秒8 个频点总容量约 1.05 包/秒两者差了 10 倍以上。所以能带多少设备首先取决于你工作在哪个扩频因子上而不是网关本身。2.3 第三步把每秒容量换算成设备数量算出每秒包容量后再结合每个终端的上报频率就能反推出设备数量。假设每台设备每隔 N 秒上报一条消息那么单台设备对网络容量的占用率就是 1/N每秒需要占用 1/N 的包容量。用总包容量除以单台设备的占用率就是理论设备数量。公式可以写成理论设备数 网关每秒可处理包数 × 上报周期秒还是用上面的 SF7 例子假设设备每 10 分钟上报一次即每 600 秒一条网关可处理 13 包/秒那么理论可容纳设备数 13 × 600 7800 台听上去是不是很夸张一个网关带七千多台设备这还是一台 SX1302 网关。但如果换到 SF12、每 10 分钟上报一次网关可处理 1.05 包/秒理论设备数 1.05 × 600 630 台差了 10 倍以上。这还没算上下行、重传和其他开销。所以单纯问一个 SX1302 能带多少设备我只能回答理论上几百台到几千台但实际会大打折扣。下面这部分就是关键。3. 工程修正为什么理论值在实际部署中通常要打三折3.1 SF 分布的现实不是所有设备都给你用 SF7前面计算里隐含了一个美好假设网络里所有设备都工作在 SF7这是 LoRa 最快、空中时间最短的扩频因子。但实际部署根本不是这样。SF 的选择实际上是链路预算的产物。SF 越高接收灵敏度越好覆盖距离越远但同时数据速率越低、空中时间越长。一个覆盖半径 3-5 公里的网关边缘设备往往需要用 SF10 甚至 SF12 才能让网关解调出来。即使在城市里穿过两三堵墙的室内水表电表也大概率落在 SF9-SF11。指望所有终端都在 SF7 上是完全不现实的。我在实际项目里观察过一个部署在城市郊区的网关800 多台设备最终 SF 分布大概是SF7 约 15%SF8 约 20%SF9 约 30%SF10 约 20%SF11 约 12%SF12 约 3%。这么算下来加权平均后的 ToA 大约是 113×0.15 185×0.2 330×0.3 616×0.2 1100×0.12 1400×0.03约等于 500 多毫秒。相比 SF7 理想值实际容量直接砍了一半多。所以在做容量估算时绝对不能拍脑袋全按 SF7 算。比较好的做法是先根据现场实测或链路预算软件估算出网络边缘的 SF 分布再用这个分布去加权计算平均 ToA。如果拿不到实测数据我就按半数以上设备在 SF9-SF10做保守假设这样算出来的容量即便有偏差也不会让网络上线就崩。3.2 下行、重传和 Join 请求是隐形的容量杀手理论计算里假定所有容量都拿来传业务数据包但现实里总有一堆杂七杂八的消息在抢占空口资源。第一个是下行消息。LoRaWAN 有 Class A/B/C 三类的下行机制最常见的是 Class A设备上报后会在两个接收窗口等待网关的 ACK 或下行指令。每个下行包都会占用网关的发送时间而网关发送期间是没法接收上行数据的。在双向确认场景下如果业务要求每条上行都必须有 ACK那么网关有一半的有效容量被下行消耗掉整个系统的吞吐量会显著下降。好在 LoRaWAN 默认并不要求每条上行都 ACK只有需要确认的消息才会触发。但如果应用层设计成强制 ACK容量就得按腰斩来算。第二个是重传。LoRaWAN 终端在发送完一条消息后如果没有收到 ACK或者使用 Confirmed 消息时会根据参数进行重传。冲突率高的时候重传会进一步加剧信道负载导致更多冲突形成恶性循环。在容量规划时我一般会预留 20%-30% 的冗余给重传也就是说新规划的负载不能超过信道理论利用率的三分之二。第三个是Join 请求。新设备入网时会通过 Join Request 消息申请入网这类消息多个终端通常会在同一时刻发送例如一批设备同时上电而且 Join Request 通常会用较长的 SF占用的空中时间不短。如果一个网络经常有批量设备加入要特别注意这个瞬时的容量尖峰。我经历过一个场景一批 500 台设备分批上电入网结果 Join 请求在短时间内把网关的信道全部占满导致一批原本在线的设备轮询消息大量超时。后来加了随机延时问题才缓解。3.3 我的实测案例2000 台理论值到 500 台的现实两年前我给一个智慧农业项目做 LoRaWAN 网络规划传感器覆盖一个约 20 平方公里的种植基地主要采集土壤墒情、气象和虫情数据上报周期 15 分钟报文长度 22 字节左右。按照理论公式乐观估算假设 SF8-SF10 混合平均 ToA 约 250ms理论容量算出来能支撑 2000 台以上设备。但实际部署到 500 多台时网络已经出现了偶发掉线。排查下来发现几个原因一是网关的安装位置不够理想边缘设备全部落在 SF11 甚至 SF12ToA 飙升到一秒多二是有相当一部分设备部署在温室大棚里穿棚损耗导致 SF 进一步降级三是应用平台做了一次远程参数批量更新连续一个小时产生大量下行消息把网关的上行接收窗口占掉不少。最终我们通过加了一台网关、把边缘设备就近分流、并对部分设备手工锁定 SF才把网络稳定下来。600 多台设备的实际稳定容量和最初 2000 台的理论估算差了三分之二以上。这个案例让我之后做容量规划时再也不敢不掺任何冗余就报乐观数字了。4. 常见场景容量速查拿这张表直接套用4.1 典型场景的容量对比表为了方便大家快速做预判我把几个常见场景的容量估算结果整理成一张速查表。以下表格按 ToA 和上报周期计算理论值再按工程折扣打三折给出建议规划值场景典型 SF典型报文长度单包 ToA上报周期网关理论带机量工程建议带机量农田墒情监测SF8-SF1020 字节0.2-0.6s15 分钟2400-7000 台800-2000 台城市智能抄表SF9-SF1130 字节0.4-1.1s1 天 1 次8000 台以上3000-5000 台资产追踪定位SF7-SF940 字节0.2-0.5s5 分钟900-2000 台300-700 台工业设备监控SF7-SF850 字节0.15-0.3s10 秒130-260 台40-90 台注意抄表类场景虽然上报周期长理论带机量很大但集中在一天内某个时段上报比如凌晨 2 点瞬时并发依然可能打满信道。这类场景要重点考虑时间均匀化把设备的上报时间在一天内摊开。4.2 高并发场景千万别只看日均上面表格里最坑的是工业设备监控这类场景。设备每 10 秒上报一次负载 50 字节SF7 的 ToA 约 0.15s。用理论公式算下来一个网关最多能支持大约 1 / 0.15 × 0.184 × 8 × 10 ≈ 98 台设备每 10 秒周期产生 1 个包。但工程上要留 30% 冗余再算上下行轮询实际建议规划不要超过 40-90 台。如果是高并发场景比如一批设备在某个时间点同时上报或者设备检测到告警时集体突发上报瞬时流量可能达到常规均值的数倍甚至几十倍。这种情况下除了按平均上报周期算容量还要单独算一遍突发峰值容量突发峰值包数 突发设备数 × 每设备突发包数要求突发峰值包数 / 突发时间窗口秒 ≤ 网关每秒可处理包数 × 0.3如果不能通过调整上报策略避开瞬时并发就只剩加网关或者换频段规划两条路了。4.3 LoRaWAN 不是唯一选择什么时候考虑换方案如果你的场景算下来一个网关只能带几十台设备而设备数量又在几百台以上那就要重新思考方案选型了。LoRaWAN 的优势在于长距离、低功耗、单网关大覆盖但在高密度、高并发、短时延的业务里它并不是最优解。可以考虑 NB-IoT蜂窝物联、用户自组网 Wi-SUN或者直接用网关边缘计算做本地数据汇聚减少上行频次。很多项目单网关带机量不足的问题本质上是选型时没有评估业务并发特征。5. 容量不够时的扩容思路不是无脑多加网关5.1 先做信道规划把 8 个频点用得更聪明LoRaWAN 标准规定了 8 个默认上行频点但不少网关和网络服务器支持灵活配置频点和调制参数。如果容量紧张第一步不是加设备而是检查自己的信道规划是否正确。比如有些网关默认只用 8 个频点但 LoRaWAN 在 470-510MHz 频段可用的频点远不止 8 个可以按区域占用情况扩展到 16 个甚至更多频点前提是网络服务器和终端固件都支持。多占频点等于给网关增加了并行接收通道。如果你的 SX1302 网关把解调资源映射到 16 个频点那在 SX1302 硬件 8 路解调器不变的前提下每个解调器需要时分复用处理两个频点实际并行能力并不会翻倍。这里要提醒一下不是所有16 信道网关都真的能并行收 16 个包重点看解调器资源和射频带宽是否足够。SX1302 的 8 路解调器上限是硬约束多频点配置更适合分散同频干扰而不是增加绝对容量。5.2 用好 ADR 和数据压缩从终端侧抠容量自适应数据速率 ADR 是 LoRaWAN 自带的一项优化机制对固定安装、链路相对稳定的终端网络服务器会根据历史信噪比自动把终端调整到尽可能高的 SF也就是尽量短的 ToA。开启 ADR 对容量提升非常有效我见过一个项目开启 ADR 后网络平均 ToA 从 700ms 降到了 300ms 左右等于容量翻了一倍多。但 ADR 不是万能的。对移动设备比如资产追踪器信道变化快开 ADR 容易导致丢包必须在网络服务器里关闭 ADR 或设置保守的速率下限。终端侧的数据压缩和合并上报同样值得做一次上报尽量合并多条采集数据或者只在变化超过阈值时才上报都能明显减少空口占用。5.3 多网关部署与网络服务器负载均衡当单网关容量确实不够时加网关是最直接的扩容方式。但多网关部署不是简单地把网关摆远一点就完事。两个网关如果覆盖重叠区域过大同一设备的上行消息会被两个网关同时收到并转发到网络服务器这会消耗双倍的网络服务器处理资源也可能导致重复消息判别逻辑变复杂。比较好的做法是让网络服务器开启去重deduplication并按 RSSI 或信噪比选择最优上行副本。多网关之间还可以在频道层面做隔离网关 A 负责前 4 个信道网关 B 负责后 4 个信道终端通过入网参数分配避免冲突。不过这种方式在国内多频点可用频段充足的时候不太必要如果频段紧张反而会牺牲频率分集带来的抗干扰能力。我的建议是先加网关做覆盖补盲再在服务器侧做负载统计最后才考虑信道硬隔离。6. 写在最后容量规划的三个心态做了这么多 LoRaWAN 项目我个人对容量规划最深的体会有三点宁可低估不要高估先看链路再谈数量留足冗余动态调优。具体的估算流程可以按确定报文长度和 ToA → 估算 SF 分布 → 套 ALOHA 公式 → 打三折工程冗余 → 根据现场实测调整这个顺序来走。在实际运维中还要定期查看网络服务器的丢包统计和 SF 分布图一旦发现边缘设备 SF 整体降级就要尽早补网关或者优化天线位置。容量规划不是一次性的计算题而是伴随着现场环境变化不断修正的持续过程。希望这篇文章能帮你少走一些我踩过的坑让你的 SX1302 网关切切实实地带满该带的设备。
返回列表