李冬睿 洪文圳 梁慧娜 周勁樺
(廣東農(nóng)工商職業(yè)技術(shù)學(xué)院計算機學(xué)院 廣東 廣州 510507)
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,各行各業(yè)都加入到“互聯(lián)網(wǎng)+”時代。物聯(lián)網(wǎng)是在互聯(lián)網(wǎng)基礎(chǔ)上的延伸和擴展的網(wǎng)絡(luò),其用戶端延伸和擴展到了任何物品。物聯(lián)網(wǎng)通信技術(shù)按距離劃分,分為短距離通信和遠(yuǎn)距離通信。當(dāng)前成熟商用的短距離物聯(lián)網(wǎng)通信技術(shù)有紫蜂(Zigbee)、藍(lán)牙技術(shù)(Bluetooth)、超寬帶技術(shù)(UWB)、射頻識別技術(shù)(RFID)及近場通信(NFC)[1]等,而遠(yuǎn)距離物聯(lián)網(wǎng)通信技術(shù)有長距離低功耗數(shù)據(jù)傳輸(Long Range:LoRa)和窄帶物聯(lián)網(wǎng)(NB-IoT)[2]。國內(nèi)對遠(yuǎn)距離的物聯(lián)網(wǎng)應(yīng)用場景需求越來越多,LoRaWan在國內(nèi)應(yīng)用較為廣泛,但它在網(wǎng)絡(luò)擁塞情況下會導(dǎo)致數(shù)據(jù)傳輸效率較低,因此,如何實現(xiàn)遠(yuǎn)距離物聯(lián)網(wǎng)的高效數(shù)據(jù)傳輸將成為當(dāng)前亟待解決的問題。
國內(nèi)外不少學(xué)者對LoRaWAN的數(shù)據(jù)傳輸和應(yīng)用做過相關(guān)研究并取得了一些研究成果。文獻(xiàn)[3]提出了根據(jù)LoRa技術(shù)的擴頻因子、帶寬和編碼率等可實現(xiàn)不同的傳輸速率,但如何提高通信效率沒有提及。文獻(xiàn)[4]提出基于神經(jīng)網(wǎng)絡(luò)的LoRa終端最大發(fā)送速率動態(tài)預(yù)測算法,通過提高通信效率來降低功耗,對如何自動控制數(shù)據(jù)速率沒有研究。文獻(xiàn)[5-8]的學(xué)者都是對LoRa的場景應(yīng)用展開研究,沒對如何提高通信效率方面進行深入研究。
本文提出一種使用邏輯回歸分類器的改進型自適應(yīng)數(shù)據(jù)速率控制器,當(dāng)預(yù)測擁塞時,會自動調(diào)整退避時間而不是降低數(shù)據(jù)速率,從而保證數(shù)據(jù)通信的高效。
在低功耗廣域物聯(lián)網(wǎng)中,有以下幾個標(biāo)準(zhǔn):LoRaWAN、SigFox和Weightless[2]。它們都具有低數(shù)據(jù)速率、低成本和低功耗通信的特點,同時適用于遠(yuǎn)程通信。其中,LoRaWAN是代表性標(biāo)準(zhǔn)。LoRaWAN由終端設(shè)備,網(wǎng)關(guān)和網(wǎng)絡(luò)服務(wù)器組成。
LoRaWAN支持自適應(yīng)數(shù)據(jù)速率控制使網(wǎng)絡(luò)總?cè)萘孔畲蠡?。?dāng)存在不可靠的無線鏈路時,使用自適應(yīng)數(shù)據(jù)速率控制來維持無線連接。進行自適應(yīng)數(shù)據(jù)速率控制時,終端設(shè)備周期性地驗證從網(wǎng)關(guān)接收到的ACK消息。終端設(shè)備有一個計數(shù)器(ADR_ACK_CNT),并且每次發(fā)送上行數(shù)據(jù)時增加1。計數(shù)器的值達(dá)到閾值而沒有接收到任何ACK消息的情況下,會設(shè)置ACK延遲時間(ADR_ACK_DELAY)以調(diào)整數(shù)據(jù)速率并繼續(xù)等待ACK消息。如果在該時間內(nèi)未收到回復(fù),則終端設(shè)備會嘗試通過切換到下一個較低的數(shù)據(jù)速率來重新獲得連接。也就是說,終端設(shè)備通過ACK消息的接收狀態(tài)來控制數(shù)據(jù)速率[9]。LoRaWAN的自適應(yīng)數(shù)據(jù)速率示意圖如圖1所示。
圖1 LoRaWAN的自適應(yīng)數(shù)據(jù)速率示意圖
提出的方法由擁塞分類器和改進的數(shù)據(jù)速率控制器組成。擁塞分類器使用吞吐量(x1)、接收信號強度(x2)和網(wǎng)關(guān)的連接數(shù)量(x3)來統(tǒng)計數(shù)據(jù)。它通過邏輯回歸學(xué)習(xí)確定擁塞狀態(tài)(Y)。然后,自適應(yīng)數(shù)據(jù)速率根據(jù)擁塞狀態(tài)執(zhí)行控制(DR)。圖2顯示了所提方法的系統(tǒng)架構(gòu)。
圖2 改進的自適應(yīng)數(shù)據(jù)速率控制器架構(gòu)
擁塞分類器通過監(jiān)督學(xué)習(xí)來預(yù)測網(wǎng)絡(luò)擁塞,監(jiān)督學(xué)習(xí)被廣泛用于無線網(wǎng)絡(luò)的狀態(tài)預(yù)測,狀態(tài)預(yù)測被用于高效的網(wǎng)絡(luò)數(shù)據(jù)傳輸中,如文獻(xiàn)[10-11]。所提出的方法采用邏輯回歸來預(yù)測網(wǎng)絡(luò)擁塞狀況。邏輯回歸使用Sigmoid函數(shù)進行二分類,將擁塞狀態(tài)作為二項分布。
式(1)是一個范圍在0到1之間的邏輯函數(shù):
Y∈{0,1}
(1)
(2)
在Sigmoid函數(shù)中,將輸入?yún)?shù)z代入數(shù)據(jù)集為x和權(quán)重為θ的線性函數(shù)后,得到下式:
z=θTX=θ0x0+θ1x1+θ2x2+…+θnxn=
(3)
如圖2所示,改進方法中給出了三種屬性,分別是數(shù)據(jù)速率、接收信號強度和網(wǎng)關(guān)連接數(shù),因此在式(3)中,n=3,得到θ集上的邏輯回歸模型的網(wǎng)絡(luò)擁塞概率為:
P(Y=1X;θ)=h(X)
(4)
不可能發(fā)生的網(wǎng)絡(luò)擁塞概率為:
P(Y=0X;θ)=1-h(X)
(5)
因此,擁塞狀態(tài)的概率為:
P(YX;θ)=(h(X))Y(1-h(X))1-Y
(6)
y代表擁塞狀態(tài)取值為0或1。
如果能獨立生成學(xué)習(xí)網(wǎng)絡(luò)擁塞的m個訓(xùn)練樣本,那么,式(6)可以改變?yōu)橐粋€θ集上的似然函數(shù):
(7)
似然函數(shù)也能表示為對數(shù)似然函數(shù),如下式所示:
(1-y(i))log(1-h(x(i)))]
(8)
由于擁塞分類器要通過學(xué)習(xí)來找到θ最合適的值,使對數(shù)似然函數(shù)最大化來判斷擁塞,因此,使用梯度上升優(yōu)化算法:
θ:=θ+αθl(θ)
(9)
θ會根據(jù)對數(shù)似然函數(shù)的梯度進行更新,α為單位大小的梯度。Sigmoid函數(shù)的導(dǎo)數(shù)如下:
g′(z)=g(z)(1-g(z))
(10)
因此,在第i個訓(xùn)練樣本中的對數(shù)似然函數(shù)的梯度表示如下:
(11)
然后更新權(quán)重θ得到:
(12)
通過隨機梯度上升算法,θ在m個訓(xùn)練樣本中表示為:
repeat
{
fori=1 tom
{
}
}
第j個數(shù)據(jù)屬性xj的權(quán)重θj是通過y(i)的結(jié)果和第i個訓(xùn)練樣本的預(yù)測函數(shù)h(x(i))實現(xiàn)更新,使用通過學(xué)習(xí)更新的權(quán)重,使擁塞預(yù)測的假設(shè)變得更加準(zhǔn)確。在下一個估算中,可使用上一次估算的結(jié)果并且如圖2中所示能根據(jù)預(yù)測執(zhí)行不同的操作。
網(wǎng)絡(luò)服務(wù)器端的擁塞分類器收集各終端的訓(xùn)練樣本并進行學(xué)習(xí)以獲得最佳權(quán)重。然后,從網(wǎng)絡(luò)服務(wù)器端到網(wǎng)關(guān)要定期更新權(quán)重。網(wǎng)關(guān)負(fù)責(zé)廣播更新后的權(quán)重,將權(quán)重共享到各個終端設(shè)備上,終端設(shè)備就能通過使用廣播的值θ來判斷擁塞。由于網(wǎng)絡(luò)服務(wù)器管理各個終端設(shè)備,它能獲得足夠有效的訓(xùn)練樣本,因此,網(wǎng)絡(luò)服務(wù)器既能不斷學(xué)習(xí)尋找最優(yōu)值θ,又能將結(jié)果進行共享給終端設(shè)備,終端設(shè)備使用θ進行分類擁塞狀態(tài)。分類學(xué)習(xí)系統(tǒng)如圖3所示。
圖3 分類學(xué)習(xí)系統(tǒng)圖
由于大多數(shù)物聯(lián)網(wǎng)業(yè)務(wù)由短消息組成,所以在擁塞期間切換調(diào)制方案是不合適的。本文提出的數(shù)據(jù)速率控制器的目標(biāo)是為了避免不必要的調(diào)整調(diào)制方案致使數(shù)據(jù)速率降低,在不需要切換調(diào)制方案的情況下,提出了用調(diào)整退避時間的方法來代替擁塞情況下通過降低數(shù)據(jù)速率從而擴展網(wǎng)絡(luò)覆蓋率的方法。所提出的數(shù)據(jù)速率控制器利用擁塞分類器的結(jié)果確定是否切換到較低的數(shù)據(jù)速率或調(diào)整退避時間。LoRaWAN改進的自適應(yīng)數(shù)據(jù)速率控制算法如下:
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
所提出的數(shù)據(jù)速率控制算法使用兩個計數(shù)器:ADR_MSG_CNT和RCV_ACK_CNT。ADR_MSG_CNT在終端設(shè)備每次發(fā)送上行鏈路消息時增加1,并且當(dāng)終端設(shè)備每次接收下行鏈路ACK消息時,RCV_ACK_CNT增加1(第3-8行)。當(dāng)ADR_MSG_CNT達(dá)到限制的消息數(shù)ADR_MSG_LIMIT時,終端設(shè)備使用擁塞分類器和從網(wǎng)關(guān)共享得到的θ來檢查網(wǎng)絡(luò)擁塞狀態(tài)(第9-10行)。終端設(shè)備中的擁塞分類器使用權(quán)重執(zhí)行預(yù)估計算,并通過計算結(jié)果判斷擁塞狀態(tài)。在獲得擁塞狀態(tài)之后,終端設(shè)備將ADR_MSG_CNT與RCV_ACK_CNT進行比較。如果它們的值相同,則表示所有上行鏈路消息都已成功發(fā)送。當(dāng)擁塞沒有發(fā)生,并且在給定時間內(nèi)成功發(fā)送了所有上行鏈路消息(即ADR_MSG_LIMIT的兩倍),則終端設(shè)備試圖通過改變調(diào)制方案(第11-21行)來切換到下一個更高的數(shù)據(jù)速率。如果終端設(shè)備沒有接收到對ADR_MSG_LIMIT的任何下行鏈路ACK消息,則終端設(shè)備設(shè)置延遲時間ADR_ACK_DELAY并等待下行鏈路ACK消息。當(dāng)沒有接收到任何下行ACK消息時,終端設(shè)備判斷網(wǎng)絡(luò)擁塞情況,如果網(wǎng)絡(luò)發(fā)生擁塞,終端設(shè)備選擇一個較長的隨機退避時間,否則切換到更低速率來擴大網(wǎng)絡(luò)覆蓋范圍(第22-31行)。
在LoRaWAN中,終端設(shè)備可以通過改變射頻模塊的調(diào)制方案來控制數(shù)據(jù)速率和網(wǎng)絡(luò)覆蓋。通常,終端設(shè)備根據(jù)下行鏈路ACK消息的接收來切換數(shù)據(jù)速率。但是,在不考慮網(wǎng)絡(luò)擁塞的情況下改變調(diào)制方案會導(dǎo)致數(shù)據(jù)傳輸較低。因此,在所提出的方法中,通過學(xué)習(xí)來估計擁塞狀態(tài),并且將其用于自適應(yīng)數(shù)據(jù)速率控制。用所提出的方法應(yīng)用到LoRaWAN中可改進數(shù)據(jù)傳輸效率。
本文的仿真實驗環(huán)境為:Linux+Network Simulator Version-2.35,模擬環(huán)境配置如表1所示。
表1 主要仿真參數(shù)
在仿真實驗中,使用LoRaWAN Class A規(guī)范,對單一基站覆蓋的無線網(wǎng)絡(luò)進行仿真,帶寬使用125 kHz,將數(shù)據(jù)速率分為4個等級,數(shù)據(jù)速率分別為980 bit/s、1 760 bit/s、3 125 bit/s和5 470 bit/s,如表2所示,并將本文算法中的網(wǎng)絡(luò)擁塞隨機退避時間設(shè)置為2~6 s之間,ACK等待時間0.5 s,信道偵聽時間1 s。模擬環(huán)境中忽略了由于信道失效導(dǎo)致的丟包,而只考慮擁塞引發(fā)的丟包,所以通過丟包數(shù)量隨時間的變化情況可間接反映網(wǎng)絡(luò)擁塞情況。
表2 LoraWAN數(shù)據(jù)速率配置表
由于數(shù)據(jù)速率和丟包數(shù)呈正相關(guān),因此選擇在DR3數(shù)據(jù)速率下,對15個source節(jié)點分別在每隔10 s時開始傳輸數(shù)據(jù),重復(fù)100次取平均值得到LoraWAN默認(rèn)的自適應(yīng)數(shù)據(jù)速率,算法和本文方法的丟包數(shù)隨時間變化的關(guān)系如圖4所示。實驗結(jié)果反映網(wǎng)絡(luò)擁塞發(fā)生在12 s左右,LoraWAN默認(rèn)方法丟包數(shù)量較本文方法高,本文方法中的15個source節(jié)點ADR_ MSG_CNT的值在0~10 s內(nèi)都為30,而某些節(jié)點的RCV_ACK_CNT出現(xiàn)0的情況。網(wǎng)絡(luò)服務(wù)器通過邏輯回歸分類器預(yù)測網(wǎng)絡(luò)擁塞狀態(tài)并將預(yù)測的權(quán)重分享給各終端節(jié)點,在第8秒左右預(yù)測到網(wǎng)絡(luò)擁塞,通過等待隨機退避時間2~6 s后,在15 s左右開始緩解網(wǎng)絡(luò)擁塞,之后丟包數(shù)的曲線比LoraWAN默認(rèn)情況要平穩(wěn),表明本文算法能夠使節(jié)點根據(jù)預(yù)測到的網(wǎng)絡(luò)擁塞程度,增加退避時間從而避免因擁塞導(dǎo)致的大量數(shù)據(jù)包丟失。
圖4 丟包數(shù)隨時間變化圖
通過對比本文方法和LoraWAN默認(rèn)的自適應(yīng)數(shù)據(jù)速率算法在不同速率等級的情況下平均傳輸延遲時間和發(fā)送數(shù)據(jù)包數(shù)量之間的關(guān)系得到如圖5-圖8所示的對比結(jié)果。
圖5 數(shù)據(jù)速率等級為DR3的對比圖
圖6 數(shù)據(jù)速率等級為DR2的對比圖
圖7 數(shù)據(jù)速率等級為DR1的對比圖
圖8 根據(jù)接收的數(shù)據(jù)包數(shù)量傳輸延遲對比圖
圖5-圖7顯示了兩種算法的網(wǎng)絡(luò)發(fā)送數(shù)據(jù)包數(shù)量和平均傳輸延遲時間的關(guān)系。本文方法的數(shù)據(jù)傳輸延遲明顯優(yōu)于原LoRaWAN默認(rèn)的自適應(yīng)數(shù)據(jù)速率算法。
圖8顯示了網(wǎng)絡(luò)服務(wù)器端接收的數(shù)據(jù)包數(shù)量與數(shù)據(jù)傳輸延遲時間的關(guān)系,網(wǎng)絡(luò)服務(wù)器總共要接收150個數(shù)據(jù)包,當(dāng)初始數(shù)據(jù)速率設(shè)置為DR3時,終端設(shè)備在每發(fā)送50個數(shù)據(jù)包就改變速率。從圖8中可看出,本文方法的數(shù)據(jù)傳輸延遲明顯低于原LoRaWAN默認(rèn)的自適應(yīng)數(shù)據(jù)速率算法。
現(xiàn)有的LoRaWAN自適應(yīng)數(shù)據(jù)速率算法依賴于ACK消息來控制數(shù)據(jù)速率而不考慮網(wǎng)絡(luò)擁塞。它通過在網(wǎng)絡(luò)擁塞情況下改變射頻調(diào)制來降低數(shù)據(jù)速率。因此,在擁塞發(fā)生時,低數(shù)據(jù)速率會導(dǎo)致長時間的傳輸延遲。然而,本文提出的方法能保持?jǐn)?shù)據(jù)速率不變的情況下增加退避時間。它通過學(xué)習(xí)網(wǎng)絡(luò)狀態(tài),將學(xué)習(xí)結(jié)果應(yīng)用于數(shù)據(jù)速率控制中。因此,盡管所提出的方法比現(xiàn)有算法多了退避時間。但結(jié)果表明,傳輸延遲比現(xiàn)有算法更少,并能實現(xiàn)網(wǎng)絡(luò)擁塞環(huán)境下的高效數(shù)據(jù)傳輸。
本文在分析現(xiàn)有的LoRaWAN自適應(yīng)數(shù)據(jù)速率算法的基礎(chǔ)上提出了一種改進型的自適應(yīng)數(shù)據(jù)速率方法。該方法采用邏輯回歸分類器來預(yù)測網(wǎng)絡(luò)擁塞情況,然后根據(jù)分類器的結(jié)果確定是否切換不同的數(shù)據(jù)速率或調(diào)整退避時間,如果網(wǎng)絡(luò)發(fā)生擁塞,終端設(shè)備選擇一個隨機退避時間,否則切換到更低速率來擴大網(wǎng)絡(luò)覆蓋范圍。實驗結(jié)果表明,所提出的方法在考慮了網(wǎng)絡(luò)擁塞的情況下進行自適應(yīng)數(shù)據(jù)速率調(diào)整,比現(xiàn)有算法更高效。