摘 要: 物聯(lián)網(wǎng)開放環(huán)境下有更加面向服務的趨勢,應用層對于感知層的靈活控制需求日益凸顯,傳統(tǒng)的上傳下達的網(wǎng)關已經(jīng)很難適應。著眼于一種基于SDN-OpenFlow理念的傳感網(wǎng)關的設計,根據(jù)開放環(huán)境及OpenFlow的不足進行適當?shù)母倪M,并提出針對數(shù)據(jù)信息的封裝格式,以適應網(wǎng)關的流表處理機制。進而物聯(lián)網(wǎng)應用層可以通過控制通道對數(shù)據(jù)通道進行配置,實現(xiàn)網(wǎng)關對傳感網(wǎng)的開放環(huán)境的適應和對物聯(lián)網(wǎng)業(yè)務層的各種服務進行更好的支撐。此外設計主要還包括對網(wǎng)關結構分析、軟硬件實現(xiàn)等。最后分別從功能性和穩(wěn)定性兩個方面驗證了系統(tǒng)的有益特性。
關鍵詞: 傳感網(wǎng)關;OpenFlow;數(shù)據(jù)封裝
0 引言
物聯(lián)網(wǎng),也即萬物互聯(lián)技術,而物聯(lián)網(wǎng)的開放環(huán)境則是指網(wǎng)絡體系更加面向服務,包括整個網(wǎng)絡的資源整合,提供給用戶公共的資源公開的信息、多元和個性化的業(yè)務等[1]。本文主要著眼于傳感網(wǎng)所在的感知層的網(wǎng)關設備展開設計的論述。在物聯(lián)網(wǎng)開放環(huán)境中,面向服務的應用層對于底層數(shù)據(jù)平面的控制需求愈加強烈,網(wǎng)關的角色不再是上傳下達的郵差[2-3]。而且傳感網(wǎng)的應用囊括各種日常和惡劣場景:大面積信息感知、傳感節(jié)點動態(tài)組網(wǎng)、傳感網(wǎng)拓撲多變等,在這些情況下傳統(tǒng)的網(wǎng)關已經(jīng)很難適應了。而目前在對網(wǎng)關設備的研究上主要分為如下幾個方向:(1)對網(wǎng)關的硬件設計;(2)對網(wǎng)關的工作協(xié)議和軟件的研究[4];(3)對網(wǎng)關設備的功能和屬性的研究;(4)具體場景型網(wǎng)關的研究。物聯(lián)網(wǎng)開放環(huán)境對網(wǎng)關提出了更高的要求[5]:(1)對物聯(lián)網(wǎng)應用層的控制開放和對感知層的感知開放;(2)對網(wǎng)絡的適應性;(3)豐富的業(yè)務的開展,對于控制管理的要求也更加突出。
本文將在計算機網(wǎng)絡領域的軟件定義網(wǎng)絡技術引入網(wǎng)關設備,參考OpenFlow協(xié)議,并將其引入網(wǎng)關設備與平臺之間的通信過程[6];設計一種對感知層傳感網(wǎng)信息的封裝和通信協(xié)議來實現(xiàn)對各種傳感網(wǎng)協(xié)議的統(tǒng)一適配,并給出了網(wǎng)關的實力實現(xiàn)方式。
1 網(wǎng)關關鍵技術
傳統(tǒng)的傳感網(wǎng)網(wǎng)關往往接口單一、邏輯固化、數(shù)據(jù)操作簡單、缺乏面向上層后臺部分的接口和支撐,已經(jīng)很難滿足物聯(lián)網(wǎng)技術對底層的信息感知的需求。將在軟件定義網(wǎng)絡技術引入網(wǎng)關設備,參考OpenFlow協(xié)議,并將其引入網(wǎng)關設備與平臺之間的通信過程,實現(xiàn)平臺層直接處理原生的感知信息。設計一種對感知層傳感網(wǎng)信息的封裝和通信協(xié)議來實現(xiàn)對各種傳感網(wǎng)協(xié)議的統(tǒng)一適配。
1.1 SDN-OpenFlow的引入
將物聯(lián)網(wǎng)環(huán)境應用層的數(shù)據(jù)平臺類比SDN網(wǎng)絡控制器,將網(wǎng)關設備類比SDN網(wǎng)絡數(shù)據(jù)設備,從而參考OpenFlow來實現(xiàn)數(shù)據(jù)平臺和網(wǎng)關之間的通信。
OpenFlow協(xié)議針對的計算機網(wǎng)絡設備往往配有多個以太網(wǎng)口[7-8],為了將OpenFlow協(xié)議的理念融入傳感網(wǎng)網(wǎng)關中,就需要針對網(wǎng)關設備的特點對協(xié)議進行一些改良。
(1)根據(jù)地理位置和平臺的信息分割區(qū)域進行流表瘦身。傳感網(wǎng)節(jié)點之間的通信主要是傳感網(wǎng)節(jié)點與上層數(shù)據(jù)平臺的通信,不同部署區(qū)的傳感網(wǎng)節(jié)點之間很少會有通信需求。這個特點為數(shù)據(jù)流區(qū)域的劃分提供了可能。將整個物聯(lián)網(wǎng)開放環(huán)境下的感知層的傳感網(wǎng)進行數(shù)據(jù)流區(qū)域切割,不同區(qū)域之間的網(wǎng)關設備沒有直接通信的需求,流表幾乎沒有關聯(lián),可以很好地達到流表瘦身的效果。當不同區(qū)域的網(wǎng)關或者傳感網(wǎng)節(jié)點出現(xiàn)通信需求時,則要借助上層的數(shù)據(jù)平臺。
?。?)將流水線結構的流表改良為索引式結構。OpenFlow協(xié)議中的流水線式的流表匹配操作往往需要經(jīng)歷多個流表才能查詢到。網(wǎng)關設備的數(shù)據(jù)流往往是固定的幾個類別,比如上行和下行數(shù)據(jù)流,因此可以按照這個特點改變原有的流水線式的流表組織,使用索引式流表組織使得每種數(shù)據(jù)流使用單獨的流表。每個索引對應的流表可以是異構的,可以將最常用的表項放在一張表,將支持擴展功能的擁有更細顆粒度的表項放在另外一張索引對應的流表中。流表組織結構如圖1所示,圖中按照數(shù)據(jù)流的類型(諸如版本號、上下行數(shù)據(jù)等)來作為區(qū)分的種類,只作為示例。
在N張表中,每張表有a個表項的情況下,級聯(lián)的流表查找效率是:平均查找深度為(N+1)/2,存儲單元為N*a個,而索引式結構流表在同等存儲損耗的情況下,查找深度為2。在嵌入式備中索引式無疑是較好的選擇。
1.2 數(shù)據(jù)適配與協(xié)議封裝
為使流表的適配高效,數(shù)據(jù)流的格式越統(tǒng)一越簡單越好,但網(wǎng)關需要適配的協(xié)議種類是繁多的。比較常用的協(xié)議有TCP/IP、ZigBee、6LoWPAN、藍牙等[9],這給流表的適配帶來了很大難度。
為了解決上述問題,使用32位/128位虛擬地址封裝數(shù)據(jù)載荷。因為很多處理器位寬都是32位,可以一次尋址讀取32位數(shù)據(jù),128是32的整數(shù)倍,將所有的協(xié)議分為32位封裝和128位封裝兩種,32位封裝面向IPv4和ZigBee等,128位封裝面向IPv6和未壓縮6LoWPAN地址等。對于IPv4協(xié)議,不用任何處理即可;對于ZigBee地址,這里使用16位的網(wǎng)絡號和16位的節(jié)點地址作為標識符;對于IPv6協(xié)議和6LoWPAN協(xié)議不需要處理。版本號用以區(qū)分虛擬地址的長度是32位還是128位,還可以做流表選擇的索引功能。
2 網(wǎng)關系統(tǒng)設計
2.1 結構設計
本文提出一種針對上述若干關鍵技術的網(wǎng)關結構,如圖2所示,模塊之間的3條黑色虛線表示邏輯的控制通道。
設備結構上分為若干模塊,感知信息數(shù)據(jù)從各種底層物理接口進入網(wǎng)關設備,進行統(tǒng)一適配或協(xié)議封裝,交由交換/路由單元模塊進行流表的匹配操作(流表就在交換/路由模塊),或交由通信適配模塊進入互聯(lián)網(wǎng)或轉(zhuǎn)發(fā)給其他網(wǎng)關等,同樣從互聯(lián)網(wǎng)或者數(shù)據(jù)平臺的數(shù)據(jù)信息也是類似邏輯機制;管理員可以通過近端控制單元對設備進行現(xiàn)場配置、管理,也可以通過控制通道與控制管理單元通信,配置底層通信適配模塊和交換/路由模塊以改變設備的工作方式或者轉(zhuǎn)發(fā)策略協(xié)同工作等。
2.2 硬件設計
網(wǎng)關的硬件平臺選擇了ARM平臺,它擁有更豐富的接口和軟件支持性[10]。
核心部分主要包括處理器和存儲器,在這里存儲器分為Flash和RAM,分別用來數(shù)據(jù)存儲和運行內(nèi)存。外圍接口部分主要負責為核心部分擴展接口,豐富接入屬性,主要包括電源、串口、USB和網(wǎng)卡等模塊。串口模塊主要是面向低速率的近距離的通信,USB(通用串行總線)模塊的主要作用就是通信組件的擴展,比如無線網(wǎng)卡等[11]。以太網(wǎng)卡模塊,一顆DM9000的百兆網(wǎng)絡適配芯片以實現(xiàn)網(wǎng)關穩(wěn)定的網(wǎng)絡接入。
2.3 軟件設計
選擇了嵌入式Linux作為軟件環(huán)境[12]。下面給出網(wǎng)關的核心部分的軟件實現(xiàn)。
?。?)流表的實現(xiàn)
流表主要存在于交換/路由模塊。在索引式結構流表中,分為索引表和每個索引對應的頁流表,在本次實現(xiàn)中使用版本號作為索引表,頁表中每個表項包括包頭域、計數(shù)域和操作域。表項的操作域由枚舉類型組成,每個參數(shù)對應一個函數(shù)指針,其指向的函數(shù)正進行相關的操作。每個流表設置8個表項,多個流表通過樹狀鏈表呈索引形式締結起來。而且索引式的流表可以實現(xiàn)異構的流表,比如最常用的數(shù)據(jù)流的操作放在某一張流表的最前面,而且包頭域十分簡潔以保證匹配速度,另外一個索引對應的流表可能較少用到,但是支持擴展的功能,比如端口號、用戶ID和優(yōu)先級等,這種索引式的流表更好地權衡了效率和多樣性。
實現(xiàn)流表的代碼如下:
?。?)數(shù)據(jù)封裝的實現(xiàn)
在實現(xiàn)過程中需要針對地址格式的不同提供至少兩種封裝的頭部,結構體中包含一個指針指向數(shù)據(jù)凈負荷,使用指針的方式避免了數(shù)據(jù)的復制操作,使得處理過程更加高效。而且在不考慮字節(jié)對齊的情況下只占用了10 B。
實現(xiàn)數(shù)據(jù)封裝的代碼如下:
3 系統(tǒng)驗證與分析
這里通過一個應用場景來對網(wǎng)關進行分析評價:一個多任務動態(tài)感知的情景,如圖3所示,每個虛線圓圈內(nèi)部的加點表示一個物理上的節(jié)點網(wǎng)絡。
實驗中構建了一個簡單的類似圖3的環(huán)境,網(wǎng)關G2、G3直接連接6LoWPAN傳感網(wǎng)(N1、N2、N3分別為3個傳感網(wǎng)的協(xié)調(diào)節(jié)點),G1通過Wi-Fi與G2、G3連接并作為其上層網(wǎng)關提供互聯(lián)網(wǎng)接入。這里僅通過整個系統(tǒng)對流量的控制和時延兩個方面來驗證網(wǎng)關系統(tǒng)的功能性和穩(wěn)定性。從網(wǎng)關G1通過G2向N1發(fā)送PING包,原路返回,其間附上節(jié)點的時間。實驗5次,時間曲線繪制如圖4(a)所示??梢娫诰W(wǎng)關與傳感網(wǎng)之間的通信時延較大,但是總體時延控制在500 ms以內(nèi)且時延抖動小。G2網(wǎng)關采集N1和N3的數(shù)據(jù),G3網(wǎng)關采集N2的數(shù)據(jù),N1和N3數(shù)據(jù)量很大,所以G2網(wǎng)關的下行接口隨時都有可能堵塞,這時G2向數(shù)據(jù)平臺反饋,數(shù)據(jù)平臺反饋N3改道G3網(wǎng)關,從而避免了G2的堵塞,流量監(jiān)測如圖4(b)所示。
4 結論
網(wǎng)關具有以下特點:重量體積輕巧,低功耗;電路板采用DC 5V-2A供電,發(fā)熱量少;常溫下主芯片最高43℃。在測試的一周內(nèi),各個模塊都無異常。
上述的網(wǎng)關設計具有如下有益效果:(1)為物聯(lián)網(wǎng)開放環(huán)境的數(shù)據(jù)平臺的資源整合及控制傳感網(wǎng)提供了有效的支撐;(2)從傳統(tǒng)網(wǎng)關中提煉出控制面,能夠在運行中根據(jù)數(shù)據(jù)平臺的調(diào)度或者不同的需求更改網(wǎng)絡通信特性和適配特性;(3)流表及其控制機制的引入易于實現(xiàn)資源的調(diào)度。
參考文獻
[1] 張光河.物聯(lián)網(wǎng)概論[M].北京:人民郵電出版社,2014.
[2] MARA K, ABDEEN M, HASHEM M. A gateway-based framework for transparent interconnection between WSN and IP network[J]. EUROCON 2009, EUROCON′09, IEEE, 2009:1775-1780.
[3] Wu Lili, RIIHIJARVI J, MAHONEN P. A modular wireless sensor network gateway design[J]. Second International Conference on Communications and Networking in China, 2007 (CHINACOM 07), IEEE Press, 2007:882-886.
[4] 陳國峰.多網(wǎng)關協(xié)同下的無線網(wǎng)絡規(guī)劃優(yōu)化研究[J].信息通信,2013(10):243.
[5] Zhu Qian, Wang Ruicong, Chen Qi, et al. IOT gateway: bridging wireless sensor networks into Internet of Things[J]. 2010 IEEE/IFIP 8th International Conference on Embedded and Ubiquitous Computing (EUC), IEEE, 2010:347-352.
[6] 龔向陽,王文東.一種面向多樣化網(wǎng)絡業(yè)務融合的SDN網(wǎng)絡結構[J].中興通訊技術,2013,19(5):16-21.
[7] 劉誠明.軟件定義網(wǎng)絡技術及應用[M].北京:人民郵電出版社,2013.
[8] NADEAU T D, GRAY K.軟件定義網(wǎng)絡:SDN與OpenFlow解析[M].畢軍主,譯.北京:人民郵電出版社,2014.
[9] 李文仲,段朝玉.ZigBee無線網(wǎng)絡技術入門與實戰(zhàn)[M].北京:北京航空航天大學出版社,2007.
[10] 黃志偉,鄧月明,王彥.ARM9嵌入式系統(tǒng)設計基礎教程[M].北京:北京航空航天大學出版社,2008.
[11] 楊斌.嵌入式系統(tǒng)應用開發(fā)實踐教程[M].北京:科學出版社,2014.
[12] 文全剛.嵌入式Linux操作系統(tǒng)原理與應用[M].北京:北京航空航天大學出版社,2014.