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