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细节,只处理“业务语义”这一层。
端到端上行数据流
以一台Class A温湿度终端上报为例,假设它已通过OTAA入网,DevAddr为0x26B1A4C3,上行帧计数FCntUp从0开始递增。终端采集到温度23.5℃、湿度61%,应用层把两个值编码为4字节载荷,例如0x00EB003D(23.5×10=235=0x00EB,61=0x003D)。随后协议栈执行以下动作:
- MAC层构造帧头,写入DevAddr、FCtrl、FCnt和FPort(例如FPort=2表示温湿度业务)。
- 用NwkSKey对MAC层做完整性校验(MIC),用AppSKey对应用载荷做AES-128加密。
- 物理层按当前数据速率(如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、把业务处理放到AS,带来三个直接好处:一是网关可以低成本大规模部署,覆盖盲区靠增加网关解决,不需要改动终端;二是密钥和入网策略集中在NS,安全性可控;三是业务逻辑与网络解耦,同一套LoRaWAN网络可以同时承载水表、烟感、农业等多种应用。理解这条“终端—网关—NS—AS”的链路,以及每一层加解密和转发边界,是后续做入网调试、数据解析和下行控制的基础。