LoRaWAN Server 端架构
LoRaWAN 的server包括 NS(Network server)、AS(application server)、CS(Custom server)….
其中NS和AS是必不可少的,是完成LoRaWAN协议的重要组成部分
NS 职责
NS是直接与GW通信的服务器,也是AS和GW之间的桥梁
我所知道的工作有如下几点:
验证数据的合法性(校验MIC)
从GW的信息中提取数据,整理成NS 的JSON数据包
将校验合法的数据打包成新的JSON包上传至AS
OTAA入网时向AS发送请求入网消息,然后再将入网信息告诉AS,当获取AS传来的入网的信息,告诉GW
GW 和 AS之间的数据通道
有几点需要注意的是NS端的数据不进行AES解密工作。
AS 职责
AS是server端的数据处理中心
它的工作有如下几点:
上行数据的解密
下行数据的加密
OTAA入网请求的处理(同意入网/生成APPSKEY/NWKSKEY)
CS 职责
CS负责将AS给的数据处理成用户自定义的数据协议格式,也就是说,CS端必须是用户来完成的,因为上面运行的是用户的协议。这里也就不再多说了。
抓包分析
以下是我在本地服务器端通过抓到得来的数据,我们通过分析数据包来理解数据的走向已及现有的server端处理流程。抓包使用的是tcpdump。
1.NS->AS数据
这是一帧从NS->AS的数据,使用的是TCP方式,AS的数据端口为4000。从data部分我们可以看出来,这是一个未解密的数据。
15:30:53.662471 IP localhost.60795 > localhost.4000: Flags [P.], seq 13:328, ack 14,
win 442, options [nop,nop,TS val 414153 ecr 414145], length 315
0x0000: 4500 016f aee3 4000 4006 8ca3 7f00 0001
0x0010: 7f00 0001 ed7b 0fa0 5505 b988 2261 4f1b
0x0020: 8018 01ba ff63 0000 0101 08