摘 要: 物聯(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ì),,根據(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è)計(jì)主要還包括對網(wǎng)關(guān)結(jié)構(gòu)分析,、軟硬件實(shí)現(xiàn)等。最后分別從功能性和穩(wěn)定性兩個(gè)方面驗(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ù),包括整個(gè)網(wǎng)絡(luò)的資源整合,,提供給用戶公共的資源公開的信息,、多元和個(gè)性化的業(yè)務(wù)等[1],。本文主要著眼于傳感網(wǎng)所在的感知層的網(wǎng)關(guān)設(shè)備展開設(shè)計(jì)的論述。在物聯(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)動(dòng)態(tài)組網(wǎng),、傳感網(wǎng)拓?fù)涠嘧兊龋谶@些情況下傳統(tǒng)的網(wǎng)關(guān)已經(jīng)很難適應(yīng)了,。而目前在對網(wǎng)關(guān)設(shè)備的研究上主要分為如下幾個(gè)方向:(1)對網(wǎng)關(guān)的硬件設(shè)計(jì),;(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ì)算機(jī)網(wǎng)絡(luò)領(lǐng)域的軟件定義網(wǎng)絡(luò)技術(shù)引入網(wǎng)關(guān)設(shè)備,,參考OpenFlow協(xié)議,,并將其引入網(wǎng)關(guān)設(shè)備與平臺(tái)之間的通信過程[6];設(shè)計(jì)一種對感知層傳感網(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ù)操作簡單,、缺乏面向上層后臺(tái)部分的接口和支撐,已經(jīng)很難滿足物聯(lián)網(wǎng)技術(shù)對底層的信息感知的需求,。將在軟件定義網(wǎng)絡(luò)技術(shù)引入網(wǎng)關(guān)設(shè)備,,參考OpenFlow協(xié)議,并將其引入網(wǎng)關(guān)設(shè)備與平臺(tái)之間的通信過程,,實(shí)現(xiàn)平臺(tái)層直接處理原生的感知信息,。設(shè)計(jì)一種對感知層傳感網(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ù)平臺(tái)類比SDN網(wǎng)絡(luò)控制器,,將網(wǎng)關(guān)設(shè)備類比SDN網(wǎng)絡(luò)數(shù)據(jù)設(shè)備,,從而參考OpenFlow來實(shí)現(xiàn)數(shù)據(jù)平臺(tái)和網(wǎng)關(guān)之間的通信。
OpenFlow協(xié)議針對的計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備往往配有多個(gè)以太網(wǎng)口[7-8],,為了將OpenFlow協(xié)議的理念融入傳感網(wǎng)網(wǎng)關(guān)中,,就需要針對網(wǎng)關(guān)設(shè)備的特點(diǎn)對協(xié)議進(jìn)行一些改良。
(1)根據(jù)地理位置和平臺(tái)的信息分割區(qū)域進(jìn)行流表瘦身,。傳感網(wǎng)節(jié)點(diǎn)之間的通信主要是傳感網(wǎng)節(jié)點(diǎn)與上層數(shù)據(jù)平臺(tái)的通信,,不同部署區(qū)的傳感網(wǎng)節(jié)點(diǎn)之間很少會(huì)有通信需求。這個(gè)特點(diǎn)為數(shù)據(jù)流區(qū)域的劃分提供了可能,。將整個(gè)物聯(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í),則要借助上層的數(shù)據(jù)平臺(tái),。
?。?)將流水線結(jié)構(gòu)的流表改良為索引式結(jié)構(gòu)。OpenFlow協(xié)議中的流水線式的流表匹配操作往往需要經(jīng)歷多個(gè)流表才能查詢到,。網(wǎng)關(guān)設(shè)備的數(shù)據(jù)流往往是固定的幾個(gè)類別,,比如上行和下行數(shù)據(jù)流,因此可以按照這個(gè)特點(diǎn)改變原有的流水線式的流表組織,,使用索引式流表組織使得每種數(shù)據(jù)流使用單獨(dú)的流表。每個(gè)索引對應(yīng)的流表可以是異構(gòu)的,,可以將最常用的表項(xiàng)放在一張表,,將支持?jǐn)U展功能的擁有更細(xì)顆粒度的表項(xiàng)放在另外一張索引對應(yīng)的流表中。流表組織結(jié)構(gòu)如圖1所示,,圖中按照數(shù)據(jù)流的類型(諸如版本號(hào),、上下行數(shù)據(jù)等)來作為區(qū)分的種類,只作為示例,。
在N張表中,,每張表有a個(gè)表項(xiàng)的情況下,級(jí)聯(lián)的流表查找效率是:平均查找深度為(N+1)/2,,存儲(chǔ)單元為N*a個(gè),,而索引式結(jié)構(gòu)流表在同等存儲(chǔ)損耗的情況下,查找深度為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ò)號(hào)和16位的節(jié)點(diǎn)地址作為標(biāo)識(shí)符;對于IPv6協(xié)議和6LoWPAN協(xié)議不需要處理,。版本號(hào)用以區(qū)分虛擬地址的長度是32位還是128位,,還可以做流表選擇的索引功能。
2 網(wǎng)關(guān)系統(tǒng)設(shè)計(jì)
2.1 結(jié)構(gòu)設(shè)計(jì)
本文提出一種針對上述若干關(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ù)平臺(tái)的數(shù)據(jù)信息也是類似邏輯機(jī)制;管理員可以通過近端控制單元對設(shè)備進(jìn)行現(xiàn)場配置,、管理,,也可以通過控制通道與控制管理單元通信,配置底層通信適配模塊和交換/路由模塊以改變設(shè)備的工作方式或者轉(zhuǎn)發(fā)策略協(xié)同工作等,。
2.2 硬件設(shè)計(jì)
網(wǎng)關(guān)的硬件平臺(tái)選擇了ARM平臺(tái),,它擁有更豐富的接口和軟件支持性[10]。
核心部分主要包括處理器和存儲(chǔ)器,,在這里存儲(chǔ)器分為Flash和RAM,,分別用來數(shù)據(jù)存儲(chǔ)和運(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è)計(jì)
選擇了嵌入式Linux作為軟件環(huán)境[12],。下面給出網(wǎng)關(guān)的核心部分的軟件實(shí)現(xiàn),。
(1)流表的實(shí)現(xiàn)
流表主要存在于交換/路由模塊,。在索引式結(jié)構(gòu)流表中,,分為索引表和每個(gè)索引對應(yīng)的頁流表,在本次實(shí)現(xiàn)中使用版本號(hào)作為索引表,,頁表中每個(gè)表項(xiàng)包括包頭域,、計(jì)數(shù)域和操作域。表項(xiàng)的操作域由枚舉類型組成,,每個(gè)參數(shù)對應(yīng)一個(gè)函數(shù)指針,,其指向的函數(shù)正進(jìn)行相關(guān)的操作。每個(gè)流表設(shè)置8個(gè)表項(xiàng),,多個(gè)流表通過樹狀鏈表呈索引形式締結(jié)起來,。而且索引式的流表可以實(shí)現(xiàn)異構(gòu)的流表,比如最常用的數(shù)據(jù)流的操作放在某一張流表的最前面,,而且包頭域十分簡潔以保證匹配速度,,另外一個(gè)索引對應(yīng)的流表可能較少用到,但是支持?jǐn)U展的功能,,比如端口號(hào)、用戶ID和優(yōu)先級(jí)等,,這種索引式的流表更好地權(quán)衡了效率和多樣性,。
實(shí)現(xiàn)流表的代碼如下:
(2)數(shù)據(jù)封裝的實(shí)現(xiàn)
在實(shí)現(xiàn)過程中需要針對地址格式的不同提供至少兩種封裝的頭部,,結(jié)構(gòu)體中包含一個(gè)指針指向數(shù)據(jù)凈負(fù)荷,,使用指針的方式避免了數(shù)據(jù)的復(fù)制操作,使得處理過程更加高效,。而且在不考慮字節(jié)對齊的情況下只占用了10 B,。
實(shí)現(xiàn)數(shù)據(jù)封裝的代碼如下:
3 系統(tǒng)驗(yàn)證與分析
這里通過一個(gè)應(yīng)用場景來對網(wǎng)關(guān)進(jìn)行分析評(píng)價(jià):一個(gè)多任務(wù)動(dòng)態(tài)感知的情景,如圖3所示,,每個(gè)虛線圓圈內(nèi)部的加點(diǎn)表示一個(gè)物理上的節(jié)點(diǎn)網(wǎng)絡(luò),。
實(shí)驗(yàn)中構(gòu)建了一個(gè)簡單的類似圖3的環(huán)境,網(wǎng)關(guān)G2,、G3直接連接6LoWPAN傳感網(wǎng)(N1,、N2、N3分別為3個(gè)傳感網(wǎng)的協(xié)調(diào)節(jié)點(diǎn)),G1通過Wi-Fi與G2,、G3連接并作為其上層網(wǎng)關(guān)提供互聯(lián)網(wǎng)接入,。這里僅通過整個(gè)系統(tǒng)對流量的控制和時(shí)延兩個(gè)方面來驗(yàn)證網(wǎng)關(guān)系統(tǒng)的功能性和穩(wěn)定性。從網(wǎng)關(guān)G1通過G2向N1發(fā)送PING包,,原路返回,,其間附上節(jié)點(diǎn)的時(shí)間。實(shí)驗(yàn)5次,,時(shí)間曲線繪制如圖4(a)所示,。可見在網(wǎng)關(guān)與傳感網(wǎng)之間的通信時(shí)延較大,,但是總體時(shí)延控制在500 ms以內(nèi)且時(shí)延抖動(dòng)小,。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)的下行接口隨時(shí)都有可能堵塞,這時(shí)G2向數(shù)據(jù)平臺(tái)反饋,,數(shù)據(jù)平臺(tái)反饋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),,各個(gè)模塊都無異常,。
上述的網(wǎng)關(guān)設(shè)計(jì)具有如下有益效果:(1)為物聯(lián)網(wǎng)開放環(huán)境的數(shù)據(jù)平臺(tái)的資源整合及控制傳感網(wǎng)提供了有效的支撐;(2)從傳統(tǒng)網(wǎng)關(guān)中提煉出控制面,,能夠在運(yùn)行中根據(jù)數(shù)據(jù)平臺(tái)的調(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è)計(jì)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,,2008.
[11] 楊斌.嵌入式系統(tǒng)應(yīng)用開發(fā)實(shí)踐教程[M].北京:科學(xué)出版社,,2014.
[12] 文全剛.嵌入式Linux操作系統(tǒng)原理與應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2014.