LoRaWAN介绍8 服务质量(QoS)
“美好的东西在质不在量。”–伊索
QoS(Quality of Service,服务质量)是一个网络的重要指标。
SX1301基带芯片的多通道和多速率特性,提供了较高带宽;LoRa扩频调制,提供了长距离和较佳的抗干扰特性,这些是硬件提供的基础。
QoS的其他方面:网络管理、自适应速率、可靠通信、快速下发和丢帧检测等,由LoRaWAN协议实现。
1 网络管理
实现一个网络的QoS,必须提供管理功能。LoRaWAN制定了一组MAC命令,专门为Server和End Nodes提供管理元数据的交换。
如下表所示,大部分的MAC命令用于控制LoRa无线通信的参数:通信速率、发射功率、通信信道、信号强度、duty-cycle和dwell-time等。
也提供了用于了解Server和End Node双方状态的命令:Server提供End Node当前信号强度;End Node提供自身电池电量和链路余地。
LinkADRReq命令有一个参数:NbTrans,它能提供“非确认信息”的有效通信质量。“非确认信息”,即End Nodes发送的信息,不需要Server回复ACK,以简化实现和节省电能。然而,在一些特殊的环境(如:干扰较严重或信号微弱)下,希望End Nodes将同一个信息,重复发送给Server,以提高成功率,NbTrans就用于设置重复发送的次数。
Orage公司推荐,End Nodes设置NbTrans=3。
2 自适应速率
在文章《LoRaWAN介绍3 优点》中谈到,ADR(自适应速率)是一个优点:
LoRaWAN协议推荐,End Nodes应该尽可能地实现ADR算法,以便于增加电池寿命和最大化网络容量。
站在End Nodes的角度,它比较担心:实现ADR算法后,通信速率是提高了,那通信距离还能保证吗?换句话说,Server能否接收到UPLINK数据帧。
为了消除上述疑虑,End Nodes需要定期检测,即通过接收DOWNLINK数据帧,来测试网络正常。
检测算法如下逻辑所示,看上去比较复杂,核心原理就一条:如果收到DOWNLINK数据帧,一切OK;否则,请求Server下发DOWNLINK,一旦超时,降低速率重试;直到速率等于MIN值或接收DOWNLINK为止。
3 可靠通信
通信协议提供的可靠性是基于ACK机制,LoRaWAN也不例外。如果通信的数据帧要求可靠地交付给对方,那就需要对方回复ACK。
UPLINK的Confirmed帧
如下图所示,End Node发送Confirmed帧Data0,没有收到ACK;它重复发送了Data0帧,直到接收到ACK,它再继续发送Data1帧。
DOWNLINK的Confirmed帧
如下图所示,Gateway发送Confirmed帧,End Node回复ACK帧。
为了简化设计,End Node既可以立即回复ACK帧,也可以将ACK携带在下一次UPLINK帧中。
4 快速下发
LoRaWAN的主体是Class A,它的缺点是延时大,即Server要下发DOWNLINK数据帧,必须等待End Node下一次UPLINK。为了实现快速下发,协议中有一个标志位:FPending,它用于告诉End Node,请尽快通信。
Confirmed+FPending
如下所示,这是一种高效的通信,End Node不但回复了Data0的ACK帧,还能快速接收下一帧Data1。
Unconfirmed+FPending
在这种通信中,End Node通过发送void帧(应用层数据为空),来接收Server下发的DOWNLINK数据帧;如果接收失败,End Node还会重复发送void帧,因为,它知道还需要从Server接收DOWNLINK帧。
Confirmed+FPending+ACK
在下图中,Gateway不但回复了ACK,还发送了Confirmed数据帧,同时告诉End Node还有后续DOWNLINK,请快速建立通信。
特别注意:ACK不能发送2次,因此End Node第二次回复的是void帧。
5 丢帧检测
LoRaWAN协议帧中有一个FCnt变量:
Server端管理FCntDown,每发送一帧DOWNLINK,该值加一;2种情况除外,组播一个unconfirmed帧,或者,重复发送一个没有ACK的confirmed帧。
End Node端管理FCntUp,每发送一帧UPLINK,该值加一;1种情况除外,重复发送一个没有ACK的confirmed帧。
双方都记录接收数据帧的个数,并比较当前数据帧中FCnt的值,如果差异(小心回绕!)超过MAX_FCNT_GAP,那将说明有数据帧丢失,并将采取对应的恢复策略。
文章来源:程序园
您的留言或需求: