李冬睿 洪文圳 梁慧娜 周勁樺
(廣東農工商職業技術學院計算機學院 廣東 廣州 510507)
隨著互聯網技術的飛速發展,各行各業都加入到“互聯網+”時代。物聯網是在互聯網基礎上的延伸和擴展的網絡,其用戶端延伸和擴展到了任何物品。物聯網通信技術按距離劃分,分為短距離通信和遠距離通信。當前成熟商用的短距離物聯網通信技術有紫蜂(Zigbee)、藍牙技術(Bluetooth)、超寬帶技術(UWB)、射頻識別技術(RFID)及近場通信(NFC)[1]等,而遠距離物聯網通信技術有長距離低功耗數據傳輸(Long Range:LoRa)和窄帶物聯網(NB-IoT)[2]。國內對遠距離的物聯網應用場景需求越來越多,LoRaWan在國內應用較為廣泛,但它在網絡擁塞情況下會導致數據傳輸效率較低,因此,如何實現遠距離物聯網的高效數據傳輸將成為當前亟待解決的問題。
國內外不少學者對LoRaWAN的數據傳輸和應用做過相關研究并取得了一些研究成果。文獻[3]提出了根據LoRa技術的擴頻因子、帶寬和編碼率等可實現不同的傳輸速率,但如何提高通信效率沒有提及。文獻[4]提出基于神經網絡的LoRa終端最大發送速率動態預測算法,通過提高通信效率來降低功耗,對如何自動控制數據速率沒有研究。文獻[5-8]的學者都是對LoRa的場景應用展開研究,沒對如何提高通信效率方面進行深入研究。
本文提出一種使用邏輯回歸分類器的改進型自適應數據速率控制器,當預測擁塞時,會自動調整退避時間而不是降低數據速率,從而保證數據通信的高效。
在低功耗廣域物聯網中,有以下幾個標準:LoRaWAN、SigFox和Weightless[2]。它們都具有低數據速率、低成本和低功耗通信的特點,同時適用于遠程通信。其中,LoRaWAN是代表性標準。LoRaWAN由終端設備,網關和網絡服務器組成。
LoRaWAN支持自適應數據速率控制使網絡總容量最大化。當存在不可靠的無線鏈路時,使用自適應數據速率控制來維持無線連接。進行自適應數據速率控制時,終端設備周期性地驗證從網關接收到的ACK消息。終端設備有一個計數器(ADR_ACK_CNT),并且每次發送上行數據時增加1。計數器的值達到閾值而沒有接收到任何ACK消息的情況下,會設置ACK延遲時間(ADR_ACK_DELAY)以調整數據速率并繼續等待ACK消息。如果在該時間內未收到回復,則終端設備會嘗試通過切換到下一個較低的數據速率來重新獲得連接。也就是說,終端設備通過ACK消息的接收狀態來控制數據速率[9]。LoRaWAN的自適應數據速率示意圖如圖1所示。

圖1 LoRaWAN的自適應數據速率示意圖
提出的方法由擁塞分類器和改進的數據速率控制器組成。擁塞分類器使用吞吐量(x1)、接收信號強度(x2)和網關的連接數量(x3)來統計數據。它通過邏輯回歸學習確定擁塞狀態(Y)。然后,自適應數據速率根據擁塞狀態執行控制(DR)。圖2顯示了所提方法的系統架構。

圖2 改進的自適應數據速率控制器架構
擁塞分類器通過監督學習來預測網絡擁塞,監督學習被廣泛用于無線網絡的狀態預測,狀態預測被用于高效的網絡數據傳輸中,如文獻[10-11]。所提出的方法采用邏輯回歸來預測網絡擁塞狀況。邏輯回歸使用Sigmoid函數進行二分類,將擁塞狀態作為二項分布。
式(1)是一個范圍在0到1之間的邏輯函數:
Y∈{0,1}
(1)
(2)
在Sigmoid函數中,將輸入參數z代入數據集為x和權重為θ的線性函數后,得到下式:
z=θTX=θ0x0+θ1x1+θ2x2+…+θnxn=
(3)
如圖2所示,改進方法中給出了三種屬性,分別是數據速率、接收信號強度和網關連接數,因此在式(3)中,n=3,得到θ集上的邏輯回歸模型的網絡擁塞概率為:
P(Y=1X;θ)=h(X)
(4)
不可能發生的網絡擁塞概率為:
P(Y=0X;θ)=1-h(X)
(5)
因此,擁塞狀態的概率為:
P(YX;θ)=(h(X))Y(1-h(X))1-Y
(6)
y代表擁塞狀態取值為0或1。
如果能獨立生成學習網絡擁塞的m個訓練樣本,那么,式(6)可以改變為一個θ集上的似然函數:
(7)
似然函數也能表示為對數似然函數,如下式所示:
(1-y(i))log(1-h(x(i)))]
(8)
由于擁塞分類器要通過學習來找到θ最合適的值,使對數似然函數最大化來判斷擁塞,因此,使用梯度上升優化算法:
θ:=θ+αθl(θ)
(9)
θ會根據對數似然函數的梯度進行更新,α為單位大小的梯度。Sigmoid函數的導數如下:
g′(z)=g(z)(1-g(z))
(10)
因此,在第i個訓練樣本中的對數似然函數的梯度表示如下:





(11)
然后更新權重θ得到:
(12)
通過隨機梯度上升算法,θ在m個訓練樣本中表示為:
repeat
{
fori=1 tom
{

}
}
第j個數據屬性xj的權重θj是通過y(i)的結果和第i個訓練樣本的預測函數h(x(i))實現更新,使用通過學習更新的權重,使擁塞預測的假設變得更加準確。在下一個估算中,可使用上一次估算的結果并且如圖2中所示能根據預測執行不同的操作。
網絡服務器端的擁塞分類器收集各終端的訓練樣本并進行學習以獲得最佳權重。然后,從網絡服務器端到網關要定期更新權重。網關負責廣播更新后的權重,將權重共享到各個終端設備上,終端設備就能通過使用廣播的值θ來判斷擁塞。由于網絡服務器管理各個終端設備,它能獲得足夠有效的訓練樣本,因此,網絡服務器既能不斷學習尋找最優值θ,又能將結果進行共享給終端設備,終端設備使用θ進行分類擁塞狀態。分類學習系統如圖3所示。

圖3 分類學習系統圖
由于大多數物聯網業務由短消息組成,所以在擁塞期間切換調制方案是不合適的。本文提出的數據速率控制器的目標是為了避免不必要的調整調制方案致使數據速率降低,在不需要切換調制方案的情況下,提出了用調整退避時間的方法來代替擁塞情況下通過降低數據速率從而擴展網絡覆蓋率的方法。所提出的數據速率控制器利用擁塞分類器的結果確定是否切換到較低的數據速率或調整退避時間。LoRaWAN改進的自適應數據速率控制算法如下:
1. ADR_MSG_CNT←0
2. RCV_ACK_CNT←0
3. If(isSentUplinkMsg=TRUE)
4. ADR_MSG_CNT←ADR_MSG_CNT+1
5. End if
6. If(isReceivedDownIinkAck=TRUE)
7. RCV_ACK_CNT←RCV_ACK_CNT+1
8. End if
9. If(ACR_MSG_CNT≥ADR_MSG_LIMITI)
10. congestion←Congestion-Classifier(θ)
11. If(RCV_ACK_CNT=ADR_MSG_CNT)
12. If(congestion=FALSE)
13. If(READY=FALSE)
14. READY←TRUE
15. Else
16. switch to next higher data rate
17. READY←FALSE
18. End if
19. Else
20. READY←FALSE
21. End if
22. Else if(RCV_ACK_CNT=0)
23. set ADR_ACK_DELAY
24. wait for ACK until ADR_ACK_DELAY
25. if(No ACK)
26. if(congestion=TRUE)
27. decide backoff time
28. Else
29. switch to next lower data rate
30. End if
31. End if
32. End if
33. reset parameters(ADR_MSG_CNT←0;RCV_ACK_CNT←0)
34. End if
所提出的數據速率控制算法使用兩個計數器:ADR_MSG_CNT和RCV_ACK_CNT。ADR_MSG_CNT在終端設備每次發送上行鏈路消息時增加1,并且當終端設備每次接收下行鏈路ACK消息時,RCV_ACK_CNT增加1(第3-8行)。當ADR_MSG_CNT達到限制的消息數ADR_MSG_LIMIT時,終端設備使用擁塞分類器和從網關共享得到的θ來檢查網絡擁塞狀態(第9-10行)。終端設備中的擁塞分類器使用權重執行預估計算,并通過計算結果判斷擁塞狀態。在獲得擁塞狀態之后,終端設備將ADR_MSG_CNT與RCV_ACK_CNT進行比較。如果它們的值相同,則表示所有上行鏈路消息都已成功發送。當擁塞沒有發生,并且在給定時間內成功發送了所有上行鏈路消息(即ADR_MSG_LIMIT的兩倍),則終端設備試圖通過改變調制方案(第11-21行)來切換到下一個更高的數據速率。如果終端設備沒有接收到對ADR_MSG_LIMIT的任何下行鏈路ACK消息,則終端設備設置延遲時間ADR_ACK_DELAY并等待下行鏈路ACK消息。當沒有接收到任何下行ACK消息時,終端設備判斷網絡擁塞情況,如果網絡發生擁塞,終端設備選擇一個較長的隨機退避時間,否則切換到更低速率來擴大網絡覆蓋范圍(第22-31行)。
在LoRaWAN中,終端設備可以通過改變射頻模塊的調制方案來控制數據速率和網絡覆蓋。通常,終端設備根據下行鏈路ACK消息的接收來切換數據速率。但是,在不考慮網絡擁塞的情況下改變調制方案會導致數據傳輸較低。因此,在所提出的方法中,通過學習來估計擁塞狀態,并且將其用于自適應數據速率控制。用所提出的方法應用到LoRaWAN中可改進數據傳輸效率。
本文的仿真實驗環境為:Linux+Network Simulator Version-2.35,模擬環境配置如表1所示。

表1 主要仿真參數
在仿真實驗中,使用LoRaWAN Class A規范,對單一基站覆蓋的無線網絡進行仿真,帶寬使用125 kHz,將數據速率分為4個等級,數據速率分別為980 bit/s、1 760 bit/s、3 125 bit/s和5 470 bit/s,如表2所示,并將本文算法中的網絡擁塞隨機退避時間設置為2~6 s之間,ACK等待時間0.5 s,信道偵聽時間1 s。模擬環境中忽略了由于信道失效導致的丟包,而只考慮擁塞引發的丟包,所以通過丟包數量隨時間的變化情況可間接反映網絡擁塞情況。

表2 LoraWAN數據速率配置表
由于數據速率和丟包數呈正相關,因此選擇在DR3數據速率下,對15個source節點分別在每隔10 s時開始傳輸數據,重復100次取平均值得到LoraWAN默認的自適應數據速率,算法和本文方法的丟包數隨時間變化的關系如圖4所示。實驗結果反映網絡擁塞發生在12 s左右,LoraWAN默認方法丟包數量較本文方法高,本文方法中的15個source節點ADR_ MSG_CNT的值在0~10 s內都為30,而某些節點的RCV_ACK_CNT出現0的情況。網絡服務器通過邏輯回歸分類器預測網絡擁塞狀態并將預測的權重分享給各終端節點,在第8秒左右預測到網絡擁塞,通過等待隨機退避時間2~6 s后,在15 s左右開始緩解網絡擁塞,之后丟包數的曲線比LoraWAN默認情況要平穩,表明本文算法能夠使節點根據預測到的網絡擁塞程度,增加退避時間從而避免因擁塞導致的大量數據包丟失。

圖4 丟包數隨時間變化圖
通過對比本文方法和LoraWAN默認的自適應數據速率算法在不同速率等級的情況下平均傳輸延遲時間和發送數據包數量之間的關系得到如圖5-圖8所示的對比結果。

圖5 數據速率等級為DR3的對比圖

圖6 數據速率等級為DR2的對比圖

圖7 數據速率等級為DR1的對比圖

圖8 根據接收的數據包數量傳輸延遲對比圖
圖5-圖7顯示了兩種算法的網絡發送數據包數量和平均傳輸延遲時間的關系。本文方法的數據傳輸延遲明顯優于原LoRaWAN默認的自適應數據速率算法。
圖8顯示了網絡服務器端接收的數據包數量與數據傳輸延遲時間的關系,網絡服務器總共要接收150個數據包,當初始數據速率設置為DR3時,終端設備在每發送50個數據包就改變速率。從圖8中可看出,本文方法的數據傳輸延遲明顯低于原LoRaWAN默認的自適應數據速率算法。
現有的LoRaWAN自適應數據速率算法依賴于ACK消息來控制數據速率而不考慮網絡擁塞。它通過在網絡擁塞情況下改變射頻調制來降低數據速率。因此,在擁塞發生時,低數據速率會導致長時間的傳輸延遲。然而,本文提出的方法能保持數據速率不變的情況下增加退避時間。它通過學習網絡狀態,將學習結果應用于數據速率控制中。因此,盡管所提出的方法比現有算法多了退避時間。但結果表明,傳輸延遲比現有算法更少,并能實現網絡擁塞環境下的高效數據傳輸。
本文在分析現有的LoRaWAN自適應數據速率算法的基礎上提出了一種改進型的自適應數據速率方法。該方法采用邏輯回歸分類器來預測網絡擁塞情況,然后根據分類器的結果確定是否切換不同的數據速率或調整退避時間,如果網絡發生擁塞,終端設備選擇一個隨機退避時間,否則切換到更低速率來擴大網絡覆蓋范圍。實驗結果表明,所提出的方法在考慮了網絡擁塞的情況下進行自適應數據速率調整,比現有算法更高效。