?

EasiDARM:基于分布式的物聯網設備自適應注冊方法

2019-03-22 03:45施亞虎石海龍
計算機研究與發展 2019年3期
關鍵詞:端口云端分布式

施亞虎 石海龍 崔 莉

1(中國科學院計算技術研究所 北京 100190) 2 (中國科學院大學 北京 100049) (shiyahu@ict.ac.cn)

隨著物聯網[1]水平化[2]接入協議(如CoAP[3],MQTT[4],LwM2M[5],EBHTTP[6]等)的逐步成熟與實用化,將設備接入云平臺(如Xively[7],Waston IoT[8],OneNET[9],YeeLink[10]等)以對設備進行實時訪問逐步成為一種主流架構[11].這種云+端的模式使得物聯網設備數量急劇增加,據Gartner估計[12],到2020年接入到互聯網的物聯網設備將達到260億,到2050年物聯網設備數量將進一步增長至萬億級別,有呈指數級增長的趨勢.

由于現有互聯網基礎設施的限制(如IP地址和端口資源有限),絕大多數物聯網設備通常位于企業局域網或家庭局域網中,沒有獨立的公網IP.因而物聯網設備通常采用網絡地址轉換(network address translation, NAT)的方式與外部云平臺進行交互.NAT協議要求物聯網設備主動到云平臺注冊以進行IP及端口映射,只有注冊過的設備才能被云平臺訪問.而基于安全考慮,企業網絡或者小區網絡往往設有防火墻,這些防火墻會定期剔除不常用的映射信息.另一方面,由于許多物聯網設備存在動態性[13],如可穿戴設備或車聯網設備,使得設備接入網絡經常發生變化.這種物聯網設備或其所處網絡環境的動態性使得設備在云平臺中的注冊信息(包括IP和端口)失效,導致云平臺無法實時訪問設備.

因此為了保證物聯網云平臺與設備之間的雙向實時訪問,設備往往需要到云平臺進行周期注冊,以維持注冊信息的有效性.現有多數物聯網系統[7-10,14-16]采用固定周期的注冊方法(static period register method, STRM),使用統一且固定的周期進行注冊(如使用TCP長連接,采用固定周期的心跳機制來維持長連接),為保證對不同網絡環境的適應性,一般將注冊周期設置成一個較小的時間,以保證注冊信息不會失效.采用這種注冊方式的物聯網系統,在設備數較少的物聯網發展初期,能夠提供穩定的物聯網服務.隨著物聯網設備快速增長,這種注冊方式將占用大量云平臺資源(服務器內存、CPU時間、Internet帶寬等),進而影響云平臺的其他服務功能.

因而Ajitomi等人[17]提出了一種自適應注冊方法,該方法可以探測物聯網設備當前所處網絡環境的注冊信息失效周期,并根據該周期動態調整設備注冊周期,使得設備注冊開銷最小.然而,該方法的周期探測過程所耗費的時間很長,開銷很大,而且當局域網中大量設備同時進行周期探測時,如停電后恢復供電、平臺故障重啟等,會給網絡和平臺帶來很大的瞬時負載,造成網絡擁塞或平臺崩潰.因此,該方法難以應對具有海量設備的未來物聯網場景.

本文提出了基于分布式的物聯網設備自適應注冊方法(distributed based adaptive register method, EasiDARM),通過同一網絡下不同設備間協同合作來完成復雜且耗時的周期探測過程,并通過參數同步實現結果實時共享,能極大地加快周期探測和設備自適應過程.方法將周期探測過程分為“快更新”和“快收斂”前后2個階段,“快更新”階段采用指數增長方式進行任務分配及周期探測,使注冊周期快速增長,“快收斂”階段采用線性增長方式進行任務分配及周期探測,使周期探測過程快速收斂.

本文的主要貢獻包括2個方面:

1) 提出了一種基于“快更新”與“快收斂”兩階段相結合的分布式周期探測任務分配機制.“快更新”階段設備采用指數增長方式進行任務分配及周期探測,加快注冊周期增長速度,“快收斂”階段采用線性增長方式進行任務分配及周期探測,加快分布式周期探測收斂速度.該方法在大幅減少周期探測過程耗時的同時大幅降低了物端、網端和云端開銷.

2) 設計并實現了一套物聯網設備管理框架,集成了本文提出的EasiDARM,驗證了方法的可行性與有效性.并針對物聯網設備存在資源受限和網絡帶寬受限的特點,采用“自適應精度”和“競爭限制”優化了分布式周期探測任務分配機制,進一步降低開銷和避免廣播風暴.當失效周期較大時,降低自適應精度,從而減少分布式周期探測耗時,且不會明顯增加注冊開銷;當設備數較多時,限制參與分布式周期探測的最大設備數,從而有效降低由競爭帶來廣播通信開銷.

1 相關工作

目前國內外已有大量的物聯網云平臺[11],大致可以分為3類:

1) 云平臺為數據服務平臺,如Thingspeak[18],SensorCloud[19],Everyware[20],EvryThng[21]等.各種感知設備通過Internet接入到平臺,采用平臺規定的數據上傳協議和規則,周期地上傳對物理世界所感知的數據,如溫度、濕度、光照[22]等,平臺對數據進行處理加工后,再通過適當的形式展示或交付給用戶.此類云平臺僅提供數據收集及處理的服務,無法對物聯網設備進行反向訪問.

2) 云平臺在提供上述數據服務的基礎上,還提供基于輪詢的設備反向訪問服務,如Nimbits[23]等.用戶通過客戶端將執行命令發至云平臺,或者提前將執行規則存儲在云平臺,設備周期地與平臺進行通信,查詢是否有執行命令需要執行,若有則執行,從而實現了對設備的反向訪問.此類平臺受輪詢周期的影響,其設備訪問具有較高的延遲,難以應用于對實時性要求較高的物聯網場景,適用范圍較局限.

3) 云平臺不僅提供上述服務,還提供設備的實時訪問服務,如Xively[7]、Waston IoT[8]、OneNET[9]、YeeLink[10]、百度天工[14]、樂聯網[15]、阿里智能[16]等,通過TCP,MQTT(基于TCP)等協議與設備建立長連接,從而實現平臺與設備間的實時通信,進一步實現對設備的實時訪問.為維持平臺與設備間的長連接,需采用該長連接周期地進行通信如TCP的心跳機制和MQTT的心跳機制,此心跳機制即為本文所討論的設備注冊的一種具體實現.上述平臺采用的是固定的心跳周期來維持長連接,隨著物聯網設備的增多,由設備注冊帶來的網端通信開銷及云平臺處理開銷將急劇增多,進而造成網絡擁塞或影響云平臺的其他服務功能.

圍繞減少物聯網設備注冊的開銷,目前國內外已有部分研究成果.Ajitomi等人[17]針對實時訪問類型的物聯網設備的工作特點,通過定量分析,揭示了在所有通信成本中,用于維持設備連接的周期通信(即設備注冊)占很大比重:當注冊周期為50 s時,設備注冊帶來的云端成本保守估計占總的云端成本的45%.Ajitomi等人[17]通過建立一條額外的連接用于失效周期探測,因此用于設備訪問的連接能夠持續有效,不會影響設備的訪問,其用于網絡探測的探測值是固定的,雖然能將探測次數控制在固定次數以內,且能對探測耗時進行控制,但其所探測出的失效周期誤差太大,由此所得的注冊周期往往不是最優的.溫彬民[24]通過對MQTT使用的心跳策略進行研究,提出了自適應心跳機制.該機制使用二分法快速查找最優的心跳值來維持網絡長連接,能夠在不同的網絡環境下自適應找到最優的心跳值來維持網絡連接,然而其網絡探測的探測次數較多,且所耗費時間也較長,并且由于沒有采用額外的連接用于自適應,還會影響設備的訪問.上述自適應注冊方法為設備獨立進行自適應的注冊方法(independent adaptive register method, IARM),其中每個設備均需獨立進行周期探測,探測過程所耗費的時間很長,開銷很大,當大量設備同時進行周期探測時,會給網絡和平臺帶來很大的突發性負載,造成網絡擁塞或平臺崩潰,難以應對具有海量設備的未來物聯網場景.

自適應注冊涉及到對網絡過期時間(即失效周期)的探測,在這個方面已有很多研究成果,均集中在傳統互聯網通信和P2P通信上,此類研究[25-30]所提出的周期探測方法并不能很好地適用本文所面向的實時訪問的物聯網應用,如Wang等人提出的NetPicule[30]方法采用多個TCP連接來探測失效周期,能夠較快地完成探測,但此方法開銷較大,無法用于接入了大量物聯網設備的云平臺,也無法運行在資源受限的物聯網設備上.本文借鑒了NetPicule[30]方法的思想,采用多個設備進行周期探測,在減少周期探測耗時的同時,降低了周期探測的物端、網端、云端開銷.

2 分布式周期探測的任務分配機制

自適應注冊的關鍵是對失效周期的探測,周期探測的過程是:對1個探測值testT進行探測,設備首先建立對自適應端口(self-adapting port)的NAT映射(init self-adapting port mapping, ISAPM),并在testT不再使用該端口進行通信.經過testT時間后,對自適應端口的NAT映射進行測試(test self-adapting port mapping, TSAPM),從平臺發送請求至該端口,若設備能收到請求,則testT小于失效周期,否則大于失效周期,通過對不同探測值進行探測,最終能收斂出失效周期的近似值.

圖1是局域網(local area network, LAN)中設備獨立周期探測(independent measurement)和分布式周期探測(distributed measurement)的示意圖,現有的自適應注冊方法中每個設備均需獨立完成整個周期探測過程(Task表示),整個過程需對多個探測值(t1,t2,…,tk)進行探測,且不同探測需順序執行,其耗時長,開銷大.考慮到同一網絡中的所有設備的失效周期是相同的,分布式周期探測通過設備間協作共同完成周期探測過程,將整個探測過程劃分成多個子任務并分配到多個設備執行,可同時對不同探測值進行探測,并將探測結果共享,不僅能加快周期探測的速度,而且能減少總的探測次數,減少物端、網端和云端開銷.

Fig. 1 Independent measurement and distributed measurement圖1 獨立周期探測與分布式周期探測示意圖

分布式周期探測的關鍵是探測任務的分配,因此,設計高效的任務分配機制是本研究的重點.通過對周期探測過程的不同時期的特點進行分析,本文設計了“快更新”和“快收斂”機制分別用于周期探測的前期和后期進行探測任務的分配.

2.1 “快更新”機制

t1,1=2×lowerT,
t1,2=2×t1,1,
ti,j=2×ti,(j-1),

其中,i>0,j>0,ti,0=t(i-1),m.

若設備Dj對ti,j的探測結果為有效時,則更新lowerT和T,并為Dj分配探測值為t(i+1),j的探測任務(如果有的話);若Dj對ti,j的探測結果為失效時,則提前結束所有未完成的探測任務,“快更新”執行結束并更新upperT.假設失效周期的真實值為agingT,“快更新”執行結束時,總的探測次數為test_num,探測輪數為loop_num,則:

當agingT≥upperT時,

(1)

(2)

T=upperT;

(3)

當agingT

(4)

(5)

(6)

在“快更新”執行過程中,每個設備有1次ISAPM,因此映射請求總數ISAPM_num=m;每次探測有1次TSAPM,因此映射測試請求總數TSAPM_num=test_num.

圖2是m=3,lowerT=2,agingT=59,upperT=70時,“快更新”機制的一個執行過程.使用“快更新”機制進行探測任務分配所得的任務矩陣t為

Fig. 2 Example of FU stage圖2 “快更新”機制執行實例

設備D1,D2,D3第1輪探測的探測值分別為t1,1=4,t1,2=8,t1,3=16,D1對t1,1的探測結果為有效,則更新lowerT和T為t1,1,設備D1繼續選擇探測值t2,1的探測任務執行;同理,當D2,D3完成了對t1,2,t1,3的探測時更新lowerT和T,選擇相應的探測值t2,2,t2,3;當D1完成了對t2,1的探測時,已無探測任務可分配給D1;當D2完成了對t2,2的探測時,由于探測結果為失效,因此提前結束D3對t2,3的探測,D3不再發送TSAPM,“快更新”執行結束并更新upperT=t2,2=64,此時T=lowerT=t2,1=32.可以看出test_num,loop_num,register_total,ISAPM_num,TSAPM_num的值分別為5,2,6,3,5,均符合上述分析.

2.2 “快收斂”機制

當首次探測到了失效值testT_failed時,分布式周期探測進入了后期,此時T和testT均比較大,1輪探測耗時較長,若探測輪次較多,則分布式周期探測的收斂速度較慢.采用“快收斂”機制,每輪探測盡量縮小探測區間,減少探測輪次,快速的結束探測.第i輪探測開始時的探測區間為(lowerT,upperT),區間寬度testSizei=upperT-lowerT,假設agingT服從(lowerT,upperT)上的均勻分布,設備Dj所探測的時間為ti,j,前后2次探測的時間間隔ΔTi,j=ti,j-ti,(j-1)(其中ti,0=loweT).則本輪探測結束后,收斂的探測區間寬度為testSizei+1,其數學期望為

圖3是圖2中“快更新”機制執行結束后,“快收斂”機制的1個執行過程.此時探測精度P=1,m=3,T=32,lowerT=32,agingT=59,upperT=64,testSize=32.此時為第3輪探測,使用“快收斂”機制進行探測任務分配,探測值按等差數列規律線性增長,分布在探測區間(lowerT,upperT)內,所得的任務向量為t3=(40,48,56).可以看出,D1,D2,D3對t3,1,t3,2,t3,3的探測結果都為有效,該輪探測結束時,T=56,lowerT=56,upperT=64,testSize=8,探測區間縮小至原來的14,同時該輪探測期間設備注冊的次數也較少,僅為1次.同理第4輪、第5輪探測的任務向量分別為t4=(58,60,62)和t5=(59).

Fig. 3 Example of FC stage圖3 “快收斂”機制執行實例

在第5輪探測開始前,T=58,lowerT=58,upperT=60,testSize=2,lowerT與upperT間僅有1個探測值59,因此任務向量t5僅為1維,僅需給D1分配探測任務,探測值t5,1=59.雖然agingT=59,考慮到網絡延遲等因素,D1對t5,1的探測結果應為失效,因此第5輪探測結束后,T=58,lowerT=58,upperT=59,由于testSize=1,達到探測精度P,無需再進行探測,“快收斂”機制執行結束,完成了收斂,且收斂的區間(lowerT,upperT)=(58,59),agingT的探測值agingT′=58.

3 物聯網設備管理框架

本文設計并實現了一套物聯網設備管理框架,集成了本文所提出的EasiDARM.本節首先介紹該框架的系統架構,然后介紹設備注冊部分的具體實現,最后再介紹分布式自適應的具體實現.

3.1 系統架構

系統架構如圖4所示,由物聯網云平臺、物聯網設備和客戶端組成,包含用戶管理模塊、設備管理模塊、設備訪問模塊,而分布式自適應模塊和設備注冊模塊共同構成了EasiDARM(灰色部分).系統采用CoAP協議作為平臺和設備的通信協議,平臺運行CSoP(CoAP server on platform),設備運行CSoD(CoAP server on device).

Fig. 4 Architecture of IoT devices management system圖4 物聯網設備管理系統架構圖

用戶管理模塊主要用于處理用戶的注冊、登錄、注銷等.設備管理模塊用于用戶管理其所擁有的設備,當用戶購買了新設備,需在客戶端中添加該設備(以序列號serialNumber作為設備身份信息),平臺收到添加請求后再將設備與用戶綁定;當用戶不再使用某設備時,可在客戶端將該設備刪除,平臺收到刪除請求則將設備與用戶解綁;用戶還可以查看設備信息,平臺從數據庫中獲取設備信息并返回給客戶端.

設備訪問模塊中,平臺為客戶端訪問設備提供API,客戶端調用API發送訪問請求給平臺,平臺經過API解析獲取請求的內容,再從數據庫中獲取設備的注冊信息,通過請求封裝將請求內容、設備的IP地址和端口號封裝成能訪問具體的設備資源的資源請求.設備資源收到資源請求時,經過解析后根據解析的結果調用設備的相應的功能,并將調用結果封裝成資源響應,通過資源返回給平臺.平臺解析出資源響應的內容,通過API封裝之后作為API調用的結果返回給客戶端,客戶端再以適當的方式展示給用戶.

3.2 設備注冊

設備的注冊模塊以周期T生成注冊請求并發送到云平臺,設備的注冊信息(rInfo)分為2類:1)靜態注冊信息(sInfo),包括設備標識(id)、設備名稱(deviceName)、設備序列號(serialNumber)、設備描述信息(description);2)動態注冊信息(dInfo),包括IP地址(ip)、端口號(port)、注冊時間(time)、注冊周期(T).設備注冊時sInfo和T顯式指定,裝成json串攜帶在注冊請求的數據部分(payload字段).而ip,port,time則通過注冊請求解析動態獲?。簭淖哉埱蟮腎P數據報的首部獲取ip,從UDP數據報的首部獲取port,平臺收到注冊請求的當前時間為time.注冊驗證主要是對ip和port做驗證,看是否與該設備之前的注冊請求的相同,若不同則說明設備的網絡情況發生變化,設備需要重新進行自適應.經過注冊驗證后將設備注冊信息更新到數據庫.在設備注冊過程中,設備通過分布式自適應模塊動態調整注冊周期,并最終獲取網絡的失效周期作為最優的注冊周期.

Fig. 5 Example of device register圖5 設備注冊示意圖

周期注冊采用PUT請求實現,注冊請求指定id字段作為設備的身份信息,其他字段僅在需要更新時包含.平臺收到該注冊請求時,首先進行注冊驗證,將ip,port與registerMap保存的ip,port作比較,若比較結果為不同,則設置Code為UNAUTHORIZED,并在registerMap中更新ip,port,time;然后將其他需要更新的字段(如第2次周期注冊中“T:60”)更新到registerMap或數據庫中,若更新成功(且注冊驗證為相同)則設置Code為CHANGE.

其他注冊成功的情況Code設置為CONTINUE.最后將注冊驗證結果和更新結果攜帶在注冊響應中.設備收到注冊響應后,若Code為UNAUTHORIZED,即注冊驗證結果為ip或port發生改變,比如圖例中網關重啟(reboot)引起port發生改變,說明設備的網絡環境發生改變或者網絡過期,需要重新啟動分布式自適應;若Code為CHANGE,即需要更新的字段更新成功,則之后的注冊請求不再攜帶更新字段;若Code為CONTINUE,則在下次注冊周期到來時再進行相同的注冊;若Code為其他失敗信息,則根據失敗的原因做相應的處理.

3.3 分布式自適應

分布式自適應過程AS(adaption stage)分為未開始(not start, NS)、快更新(fast update, FU)、快收斂(fast converge, FC)和已完成(complete, CP)4個階段,其中FU和FC階段需進行分布式周期探測.最小注冊周期minT為30 s,最大注冊周期maxT為3 600 s.因此,當AS=FU時,探測任務的探測值向量t為

t=(60,120,240,480,960,1920,3600).

AS=FU時最多7個設備同時進行探測即可,t將AS=FC時的探測區間分成7個區間:[30,60),[60,120),[120,240),[240,480),[480,960),[960,1920),[1920,3600).

當失效周期agingT較小時,自適應完成后注冊周期較小,由注冊帶來的開銷較大,應盡量提高自適應精度(P),獲取最大的注冊周期以降低注冊開銷;當失效周期較大時,自適應完成后注冊周期較大,由注冊帶來的開銷較小,自適應精度如果較高,則“快收斂”過程耗費的時間較長,適當的減小自適應精度能大幅縮短探測完成時間,并且不會對注冊開銷造成明顯增加.綜上,可以將7個探測區間對應的自適應精度分別取為(1,2,4,8,16,32,64).本方法中定義了維度為8的“自適應精度”數組P,第2~8個元素分別用于“快收斂”階段的上述7個探測區間,作為相應的自適應精度.其中:

P=(1,1,2,4,8,16,32,64).

MaxM=(7,7,15,29,29,29,29,26).

P和MaxM下標從1開始,其中P和MaxM的第1個元素用于AS=FU階段;后面的7個元素用于AS=FC階段的7個不同區間.因此本方法中定義了1個下標變量q用于指示探測過程中所應選取的P和MaxM中的元素.分布式自適應的實現可由算法1表示.

算法1. 分布式自適應算法AdaptTogether().

輸入:minT,maxT,P,MaxM,t;*下標從1開始*

輸出:agingT.

①lowerT=minT;

②upperT=maxT;

③q=0;

④m=0;

⑤AS=NS;

⑥s=0;

⑦sn=0;*sn(sequence number)為設備的分布式編號*

⑧requestParams();

⑨ ifAS=NS或AS=FU then

⑩fastUpdate();

算法1首先對部分自適應參數(Params)進行初始化,Params包括:lowerT,upperT,q,m,AS,CD(count down),其中CD為“快收斂”階段的1輪探測中最后1個探測任務執行完成的倒計時時間.然后發送自適應參數同步請求requestParams()與網絡中的其他設備進行同步.同步過后,若AS=CP,則快速自適應完畢,返回失效周期agingT=lowerT;若AS為NS或FU,則執行“快更新”算法;若AS=FC,則執行“快收斂”算法.

算法2. 快更新算法fastUpdate().

輸入:Params(自適應參數)、minT,MaxM,t;

輸出:Params.

①AS=FU;

②s=MaxM1;

③sn=compete(m,s);

④ ifsn>0 then

⑥ ifq=0 then

⑦q=sn;

⑧ else

⑨q=q+m;

⑩ end if

“快收斂”機制的整體過程通過算法3實現.“快收斂”階段每輪探測開始時均重新進行分布式競爭(sn=compete(m,maxM)),能減少設備移出網絡導致本輪的某些探測任務不執行的情況,也能充分利用新加入網絡的設備參與本輪探測,執行探測任務.maxM為1輪探測所需的最多設備數,由upperT,lowerT,Pq,MaxMq確定,通過分布式競爭,每輪探測選取出m個設備參與探測,m不超過maxM.

算法3. 快收斂算法fastConverge().

輸入:Params,P,MaxM;

輸出:Params.

①AS=FC;

②sleep(CD);

③ while (upperT-lowerT)>Pdo

④maxM=(upperT-lowerT-1)Pq;

⑤maxM=min(maxM,MaxMq);

⑥sn=compete(m,maxM);

⑦testT=lowerT;

⑨ ΔT=max(ΔT,Pq);

⑩s=(upperT-lowerT-1)ΔT;

設備進入“快收斂”階段,通過sleep(CD)等待本輪探測執行完成再開始下一輪探測.ΔT為相鄰探測任務間的時間增量(公差),s為探測區間所劃分的探測任務數,即有s個設備實際參與此輪探測.每輪探測開始前,每個設備均需建立倒計時CD,當倒計時結束或者有探測任務的探測結果為失效時,本輪探測結束.當探測結果為未失效時更新lowerT和注冊周期并進行自適應參數同步;當探測結果為失效時,更新upperT并將倒計時CD置為0,然后通過自適應參數同步提前結束其他設備的探測任務,結束本輪探測,進入到下一輪探測.

Fig. 6 Example of measurement圖6 探測任務執行實例

設備Dj根據分布式周期探測任務分配機制(“快更新”階段,執行算法2)決策出要執行的探測任務,探測值為testT(圖6中圖例為60 s),Dj需對testT進行探測,首先應為自適應端口建立映射(ISAPM),即通過自適應端口發送映射請求(采用GET實現)給平臺,使上層網絡建立對設備的自適應端口的映射,圖例中為9084,平臺將映射端口9084響應給設備.經過testT后,設備通過注冊端口向平臺發送映射測試請求(TSAPM,采用PUT實現),映射測試請求需攜帶映射端口9084,平臺將映射測試請求轉發給映射端口,并收到了響應,說明映射端口是有效的,將映射測試結果響應給設備,設備收到Code為VALID的映射測試響應則更新自適應參數lowerT并將自適應參數同步,同時更新注冊周期T;設備再次決策出要執行的探測任務及增大了的探測值testT(圖6中圖例為120 s),Dj繼續對新的testT進行探測.在等待120 s后,設備再次對映射端口9084進行映射測試,由于失效周期小于120 s,映射端口已經失效,平臺無法收到對轉發的映射測試請求的響應,因此發送Code為NOT_FOUND的映射測試響應給設備,設備收到響應后更新自適應參數upperT并將自適應參數同步;然后再繼續上述過程,直至自適應過程結束;設備第3次決策(“快收斂”階段,執行算法3)出要執行的探測任務及減小了的testT(圖6中圖例為100 s),Dj重新發送映射請求為自適應端口建立映射(ISAPM),繼續對新的testT進行映射測試,重復上述步驟直至自適應過程結束.通過對多個探測值進行探測,確定每個探測值與失效周期的大小關系,可以收斂出失效周期,實現對其的探測.

Fig. 7 Implement of experiment to compare register methods圖7 注冊方法對比實驗示意圖

4 實 驗

本文通過實驗和分析比較了3種不同的設備注冊方法在不同的情況下的性能與開銷,3種注冊方法為:1)STRM,注冊周期為30 s;2)EasiDARM;3)IARM,其中探測值在周期探測的開始階段以指數為2的方式增長,當首次探測到了失效值testT_failed時,探測值為探測上限與探測下限的中值,直至達到自適應精度(與EasiDARM相同).圖7是實驗的示意圖,實驗基于Californium CoAP框架實現了CSoP平臺,運行在阿里云服務器上.基于Erbium CoAP框架在Contiki嵌入式操作系統上實現了CSoD,運行在CC2538開發板上,邊界路由采用的是開源項目6LBR,運行在ENC28J60+CC2538上,同時也基于Californium實現了運行在手機上和PC上的CSoD.本文還分別采用上述3種注冊方法進行仿真實驗來比較3種注冊方法的突發性開銷.

4.1 開銷分析對比

通過對多個實際網絡進行實驗,探測出它們的失效周期,其結果如表1所示:

Table 1 The Aging-Time of Several Networks表1 多個網絡的失效周期的實測值

鑒于該實驗結果,本文在失效周期為60 s,120 s,150 s的網絡下進行實驗和分析來比較3種注冊方法的性能與開銷.對于STRM和IARM,由于設備單獨進行設備注冊,其運行模式相對固定,通過計算得出其理論最優值(無丟包、網絡延遲等)作為其性能與開銷的參考值;而EasiDARM的性能與開銷是通過在上述3種網絡中運行不同數目的采用EasiDARM進行設備注冊的CSoD設備,并記錄了每個設備的每個請求和廣播,由實際的請求和廣播情況來反映.

Fig. 8 Time of measurement圖8 周期探測耗時

周期探測時間開銷對比:圖8中虛線為IARM完成周期探測的理論最優的時間;實線為不同EasiDARM設備數完成周期探測所消耗的時間.結果表明,當網絡中只有1個EasiDARM設備時,其探測耗時要稍微多于IARM的最優值,這是因為單個EasiDARM設備也會有進行分布式的時間開銷,另一原因是實際網絡中有網絡延遲等因素;而當網絡中有多個EasiDARM設備時,其耗時要少于IARM,且隨著EasiDARM設備數的增多,耗時有明顯下降趨勢.當設備數為64時,EasiDARM的周期探測耗時較IARM減少46%.

Fig. 9 Consumption on devices of measurement圖9 周期探測設備端開銷

周期探測設備端開銷對比:假定設備發送每個請求所帶來的物端開銷相同,實驗取單個EasiDARM設備完成周期探測的耗時作為對比時長,比較了IARM和EasiDARM進行周期探測的設備端開銷.圖9中虛線為IARM在對比時長內發送的請求數(包括注冊請求、映射建立請求ISAPM、映射測試請求TSAPM)的理論最優值;實線為不同EasiDARM設備數在對比時長內平均每個設備所發送的請求數(包括注冊請求、映射建立請求ISAPM、映射測試請求TSAPM、競爭廣播、自適應參數同步請求、自適應參數同步廣播).結果顯示,當設備數較少時,EasiDARM進行探測的設備端開銷要多于IARM,因為EasiDARM帶了額外的競爭開銷及參數同步開銷;當設備數多于4時,EasiDARM進行探測的設備端開銷要少于IARM,且設備越多,EasiDARM的設備端開銷越少,當設備數為64時,EasiDARM進行探測時的設備端開銷較IARM減少46%.

周期探測云端及網端開銷對比:假設設備發送到云端平臺的每個請求所帶來的云端處理和網端通信開銷相同.圖10中虛線為IARM在上述對比時長內發送至平臺的云端請求數(包括注冊請求、ISAPM、TSAPM);實線為不同EasiDARM設備數在對比時長內平均每個設備所發送至平臺的云端請求數(包括注冊請求、ISAPM、TSAPM).結果顯示,當設備數為1時,EasiDARM進行探測平均每個設備帶來的云端和網端開銷與IARM相近.而當網絡中不止1個設備時,EasiDARM進行探測的云端和網端開銷要少于IARM,且設備越多,EasiDARM的云端和網端開銷越少.當設備數為64時,EasiDARM進行探測時的云端及網端開銷較IARM降低53%.

Fig. 10 Consumption on platform and Internet of measurement圖10 周期探測云端、網端開銷

設備動態加入開銷對比:物聯網設備往往具有動態性,當新設備加入到網絡中時,STRM采用30 s進行周期注冊,IARM需要重新進行周期探測來完成自適應,EasiDARM可以進行通過自適應參數同步進行快速自適應.圖11為3種設備新加入到網絡中在上述對比時長內所發送的請求數,圖12為所發送至平臺的云端請求數,其中STRM和IARM均為理論最優值,而EasiDARM新加入的網絡中已有設備完成了自適應.結果表明,若設備動態性較高,當失效周期較小時,IARM的物端、網端、云端開銷較STRM要高;而EasiDARM在不同的失效周期下的物端、網端、云端開銷均要少于STRM和IARM.當設備動態性較高時,EasiDARM的設備端開銷為IARM的37%,網端和云端開銷為IARM的28%.

Fig. 11 Consumption on devices when adding device to the network圖11 設備動態加入物端開銷

Fig. 12 Consumption on platform and Internet when adding device to the network圖12 設備動態加入云端、網端開銷

4.2 突發性開銷分析對比

本文比較了在設備數較多的情況下,采用3種注冊方法的平臺突發性開銷,包括CPU占用率和平臺的網絡訪問速率(由于受Java內存管理機制和垃圾回收機制的影響,內存使用量無法反映本平臺的實際運行情況).實驗在NAT失效時間為120 s的網絡中進行,以64個仿真設備為1組模擬1個網絡,共80組,仿真設備總數為5 120個,運行在PC機上.圖13為實驗過程中CSoP平臺的CPU占用情況,圖14為服務器的網絡訪問速率.在第1 h內,采用EasiDARM仿真設備進行實驗:先讓平臺穩定運行10 min,再在10~15 min期間逐漸運行5 120個仿真設備,在30 min時切斷PC機的網絡(模擬小區停電后恢復供電或平臺故障重啟等突發事件),等待10 min后恢復PC機的網絡,在60 min時停止運行所有仿真設備;在第2,3 h內分別采用IARM,STRM仿真設備進行實驗,實驗步驟與EasiDARM相同.

Fig. 13 CPU Utilization of platform圖13 平臺CPU占用情況

Fig. 14 Net speed of platform圖14 平臺網絡訪問情況

實驗結果表明:正常情況下,EasiDARM和IARM的云端、網端開銷要要遠少于STRM,且EasiDARM要少于IARM;當發生突發事件,大量設備恢復注冊時,STRM沒有明顯的突發性開銷,而IARM有大量突發性開銷,且遠多于STRM的開銷(多出部分由設備自適應引起),而EasiDARM雖然也有突發性開銷,但遠少于IARM,僅稍多于STRM的開銷(多出部分由分布式自適應引起).經計算,較于IARM,EasiDARM能降低云平臺的突發性開銷達到36%.

5 總 結

未來物聯網將具有海量設備,Internet及物聯網云平臺將面臨巨大的注冊開銷,本文提出了一種基于分布式自適應的物聯網設備注冊方法來加快注冊周期自適應過程并減少注冊開銷.考慮到物聯網設備存在資源受限和網絡帶寬受限的特點,本文采用“自適應精度”和“競爭限制”對分布式周期探測進行優化,進一步降低開銷和避免廣播風暴.實驗結果表明,較于現有的方法,本方法能大幅減少周期探測耗時,降低周期探測時的物端、網端和云端開銷,當設備動態性較高時的開銷也明顯減少,并且能大幅降低平臺的突發性開銷.經理論論證及實驗評估得出:本方法能更好地應對具有海量設備的未來物聯網場景.

猜你喜歡
端口云端分布式
四海心連·云端匯聚
一種有源二端口網絡參數計算方法
一種端口故障的解決方案
在云端永生
云端之城
淺析分布式發電對電力系統的影響
多按鍵情況下,單片機端口不足的解決方法
現有網絡架構及遷移方案
基于預處理MUSIC算法的分布式陣列DOA估計
分布式并聯逆變器解耦電流下垂控制技術
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合