3. LoRaWAN网络架构与协议栈

LoRaWAN并不是单一设备或单一协议,而是一套把“无线接入”和“网络管理”分层解耦的星型网络体系。理解它的关键,是先分清四类角色各自负责什么,再沿着一条上行报文和一条下行报文,看清数据在协议栈各层之间如何被封装、转发和拆解。只有把角色边界和数据流路径同时建立起来,后续做入网、组包、调试和排障时,才知道问题应该在哪一层定位。

四类角色的职责边界

终端(End Device)是现场真正采集或控制物理量的节点,例如温湿度传感器、水表、烟感或阀门控制器。它内部运行完整的LoRaWAN终端协议栈,负责应用数据组包、加密、入网、选择速率和发射功率,并通过LoRa射频把报文发给网关。终端通常功耗极低,采用Class A、B或C不同的接收窗口策略,其中Class A最省电,每次上行后开两个短接收窗口。

网关(Gateway)本质是一台“透明射频转发器”。它把LoRa调制信号解调为LoRaWAN报文,再通过IP回传(常见为UDP 1700端口的Semtech Packet Forwarder,或MQTT、Basic Station)送到网络服务器。网关不做解密、不做入网判决、不做MAC命令处理,它只关心射频参数、信号质量和回传链路。因此同一区域可以部署多个网关,同一终端的上行可能被多个网关同时收到,形成冗余覆盖。

网络服务器(Network Server,NS)是LoRaWAN网络的“大脑”。它负责去重(同一报文被多网关收到时只保留一份)、终端入网与鉴权、MAC层命令处理、ADR自适应速率调整、下行调度、帧计数校验和漫游管理。NS掌握每个终端的会话密钥和网络上下文,是决定“这个终端能不能入网、用什么速率、什么时候下发”的核心。

应用服务器(Application Server,AS)面向业务。它持有应用层密钥(AppSKey),负责应用数据的加解密、解析和业务逻辑处理,例如把字节流解析为温度值、写入数据库、触发告警或调用第三方接口。AS不关心射频和MAC细节,只处理“业务语义”这一层。

终端 End Device 传感器/执行器 LoRaWAN协议栈 网关 Gateway 射频解调 IP回传转发 网络服务器 Network Server 去重/入网/ADR MAC命令/下行调度 应用服务器 Application Server AppSKey解密 业务解析/存储 LoRa射频 UDP/MQTT 解密后转发 下行数据 调度下发 射频发射 端到端协议栈分层(上行视角) 应用层 App Data LoRaWAN MAC层 LoRa物理层调制 网关回传封装 NS/AS处理 加密层次:NwkSKey保护MAC层,AppSKey保护应用载荷;网关仅转发密文,不持有会话密钥。

端到端上行数据流

以一台Class A温湿度终端上报为例,假设它已通过OTAA入网,DevAddr为0x26B1A4C3,上行帧计数FCntUp从0开始递增。终端采集到温度23.5℃、湿度61%,应用层把两个值编码为4字节载荷,例如0x00EB003D(23.5×10=235=0x00EB,61=0x003D)。随后协议栈执行以下动作:

  1. MAC层构造帧头,写入DevAddr、FCtrl、FCnt和FPort(例如FPort=2表示温湿度业务)。
  2. 用NwkSKey对MAC层做完整性校验(MIC),用AppSKey对应用载荷做AES-128加密。
  3. 物理层按当前数据速率(如SF7、125kHz)进行LoRa调制并发射。

报文被网关收到后,网关读取射频元数据(RSSI、SNR、SF、频率、时间戳),把PHYPayload连同这些元数据封装进JSON,通过UDP 1700发给网络服务器。若附近有两个网关同时收到,NS会依据RSSI/SNR和网关优先级去重,只保留一份有效上行。

NS收到后先校验MIC和帧计数,确认终端合法且FCnt未回退,然后剥离MAC层,把应用载荷和FPort交给AS。AS用AppSKey解密,得到0x00EB003D,按约定解析为温度23.5℃、湿度61%,写入时序数据库并触发业务规则。至此一条上行完成闭环。

下行数据流与接收窗口

下行方向同样要经过四类角色,但触发源通常在NS或AS。例如AS判断温度超限,需要下发一条控制命令;或NS需要下发MAC命令调整终端的ADR速率。下行报文由NS调度,选择终端最近一次上行所使用的网关和接收窗口。Class A终端在上行结束后打开RX1(默认RECEIVE_DELAY1=1s)和RX2(RECEIVE_DELAY2=2s)两个窗口,NS必须把下行安排在窗口内,否则终端收不到。

下行帧同样用NwkSKey做MIC、用AppSKey加密载荷,经网关转为LoRa射频发出。终端在接收窗口内解调、校验帧计数和MIC,解密后交给应用层执行。若窗口内没有收到,终端不会主动重试,只能等下一次上行后再开窗,这也是Class A下行时延较大的根本原因。

排障提示:如果终端能入网但收不到下行,优先检查NS下行调度时间是否落在RX1/RX2窗口内、网关是否支持下行发射、以及终端与NS的帧计数是否同步。若上行数据在AS侧解析乱码,通常是AppSKey不一致或FPort解析约定不匹配,而不是网关问题。

角色划分带来的工程意义

把网关做成透明转发、把网络管理集中到NS、把业务处理放到AS,带来三个直接好处:一是网关可以低成本大规模部署,覆盖盲区靠增加网关解决,不需要改动终端;二是密钥和入网策略集中在NS,安全性可控;三是业务逻辑与网络解耦,同一套LoRaWAN网络可以同时承载水表、烟感、农业等多种应用。理解这条“终端—网关—NS—AS”的链路,以及每一层加解密和转发边界,是后续做入网调试、数据解析和下行控制的基础。