??? 摘? 要: 提出了基于IPv6無線傳感器網(wǎng)絡" title="無線傳感器網(wǎng)絡">無線傳感器網(wǎng)絡與CDMA公共無線通信網(wǎng)相融合的網(wǎng)絡架構(gòu)的后臺數(shù)據(jù)系統(tǒng),,作為精準農(nóng)業(yè)管理系統(tǒng)的一部分,負責傳感數(shù)據(jù)的接收,、存儲以及控制命令的發(fā)送,。
???關(guān)鍵詞:IPv6?無線傳感器網(wǎng)絡?后臺數(shù)據(jù)系統(tǒng)
?
??? 無線傳感器網(wǎng)絡是由部署在監(jiān)測區(qū)域的傳感器節(jié)點" title="傳感器節(jié)點">傳感器節(jié)點通過自組織方式構(gòu)成的網(wǎng)絡,具有低成本,、低能耗,、靈活性高、可擴展等優(yōu)點,??梢詰糜趪儡娛隆h(huán)境監(jiān)測和預報,、農(nóng)業(yè)監(jiān)測控制,、智能交通、智能家居,、醫(yī)療衛(wèi)生等眾多領(lǐng)域[1],,具有廣闊的應用前景,受到越來越多的關(guān)注,。IPv6[2]是下一代互聯(lián)網(wǎng)的核心協(xié)議,,具有地址資源豐富,、地址自動配置、支持實時業(yè)務,、安全性高,、移動性好等優(yōu)點。將IPv6與無線傳感器網(wǎng)絡結(jié)合構(gòu)建的IPv6無線傳感器網(wǎng)絡,,可以滿足未來無線傳感器網(wǎng)絡在地址,、可擴展性及與現(xiàn)有網(wǎng)絡融合等方面的需求,已成為其研究熱點之一,。
??? 無線傳感器網(wǎng)絡通常由不同類型傳感器節(jié)點和網(wǎng)關(guān)設備構(gòu)成,。傳感器節(jié)點實時地采集特定區(qū)域的傳感信息" title="傳感信息">傳感信息,發(fā)送到網(wǎng)關(guān),,網(wǎng)關(guān)設備通過特定的方式與現(xiàn)有的網(wǎng)絡實現(xiàn)互聯(lián)互通,將傳感信息發(fā)送到遠程服務器端,,由無線傳感器網(wǎng)絡后臺數(shù)據(jù)系統(tǒng)進行處理,。本文設計并實現(xiàn)了應用于精準農(nóng)業(yè)系統(tǒng)環(huán)境的IPv6無線傳感器網(wǎng)絡后臺數(shù)據(jù)系統(tǒng),該系統(tǒng)包括接收,、處理和存儲傳感數(shù)據(jù)以及發(fā)送控制命令幀等功能,。無線傳感器網(wǎng)絡和Internet骨干網(wǎng)絡之間的數(shù)據(jù)傳送通過CDMA網(wǎng)絡實現(xiàn)。
1 后臺數(shù)據(jù)系統(tǒng)設計
1.1 基于精準農(nóng)業(yè)的無線傳感器網(wǎng)絡架構(gòu)
??? 本文以精準農(nóng)業(yè)的管理系統(tǒng)為例,,具體架構(gòu)見圖1,。
???????????????
??? 農(nóng)業(yè)基地受地理位置影響,通常缺乏Internet網(wǎng)絡基礎(chǔ)設施,。為了實現(xiàn)農(nóng)業(yè)基地監(jiān)測控制和智能管理,,部署的IPv6無線傳感器網(wǎng)絡借助于CDMA網(wǎng)絡基礎(chǔ)設施,能夠方便有效地與現(xiàn)有網(wǎng)絡進行信息交換,。在該系統(tǒng)中,,主要存在以下兩種類型的數(shù)據(jù)傳輸:
??? (1)傳感器節(jié)點需要將實時采集的各種傳感數(shù)據(jù)發(fā)送到網(wǎng)關(guān)節(jié)點,通過特定的CDMA網(wǎng)絡接入設備并借助于CDMA網(wǎng)絡數(shù)據(jù)傳輸業(yè)務最終將數(shù)據(jù)發(fā)送到現(xiàn)有Internet中的服務器后臺處理系統(tǒng),。后臺數(shù)據(jù)系統(tǒng)將節(jié)點的各種傳感信息寫入數(shù)據(jù)庫,,以供用戶隨時調(diào)用。
??? (2)管理員可以點擊Web網(wǎng)頁構(gòu)造控制信息,,由后臺數(shù)據(jù)系統(tǒng)通過CDMA網(wǎng)絡將命令發(fā)送到IPv6無線傳感器網(wǎng)絡中,,由傳感節(jié)點的執(zhí)行部分最終實現(xiàn)對農(nóng)業(yè)基地的有效管理。
??? 在該系統(tǒng)中,,CDMA網(wǎng)絡的數(shù)據(jù)業(yè)務采用IPv4和TCP協(xié)議,,而無線傳感器網(wǎng)絡采用IPv6技術(shù)以及簡單有效的UDP傳輸控制協(xié)議實現(xiàn)數(shù)據(jù)的收發(fā)和處理。因此,,本文在精準農(nóng)業(yè)管理系統(tǒng)中設計了一種接收數(shù)據(jù)包,,格式如圖2所示,。
?????????????????????
??? ?根據(jù)精準農(nóng)業(yè)管理系統(tǒng)需求以及數(shù)據(jù)包格式轉(zhuǎn)換過程,設計的后臺數(shù)據(jù)系統(tǒng)應具備以下特點:
??? (1)接收處理一種新型隧道包:根據(jù)數(shù)據(jù)包的格式轉(zhuǎn)換,該系統(tǒng)處理過程可以看作封裝在IPv4網(wǎng)絡中的IPv6數(shù)據(jù)包的隧道機制,但又與傳統(tǒng)的隧道機制有明顯區(qū)別,主要體現(xiàn)在后臺數(shù)據(jù)系統(tǒng)的IPv6數(shù)據(jù)包是作為IPv4協(xié)議棧" title="協(xié)議棧">協(xié)議棧應用層數(shù)據(jù)傳輸?shù)?。因?這種新類型的隧道機制處理流程,是設計后臺數(shù)據(jù)系統(tǒng)的核心問題,。
??? (2)構(gòu)造并發(fā)送命令幀:命令幀在通過IPv6協(xié)議棧后被封裝成IPv6格式,如何使IPv6輸出隊列的命令幀回到用戶空間,利用原來的IPv4套接口進行發(fā)送,,是后臺數(shù)據(jù)系統(tǒng)解決的難點問題,。
??? (3)及時響應事件驅(qū)動:在等待數(shù)據(jù)接收時,后臺數(shù)據(jù)系統(tǒng)發(fā)送控制命令是一個事件驅(qū)動的過程,,如何及時響應這個事件驅(qū)動,,提高工作效率,是衡量后臺數(shù)據(jù)系統(tǒng)的一項重要指標,。
1.2?后臺數(shù)據(jù)系統(tǒng)模型
??? 后臺數(shù)據(jù)系統(tǒng)主要用于收集信息,,發(fā)送控制命令,完成對無線傳感器網(wǎng)絡中傳感器節(jié)點的監(jiān)測與控制,。根據(jù)后臺數(shù)據(jù)系統(tǒng)所實現(xiàn)的不同功能,,系統(tǒng)設計采用分層體系結(jié)構(gòu),分成內(nèi)核空間和用戶空間兩大部分,,采用Linux操作系統(tǒng)作為內(nèi)核空間基本平臺,。分層的體系結(jié)構(gòu)能使系統(tǒng)的功能實現(xiàn)透明化,各個層不需要了解其他層的具體工作,,只需根據(jù)層間的接口所提供的服務,,獨立完成自己的功能,這種設計使后臺數(shù)據(jù)系統(tǒng)具有很強的靈活性和可擴展性,。后臺數(shù)據(jù)系統(tǒng)模型如圖3所示,。
????????????????????????
??? 接收數(shù)據(jù)包時,在用戶空間開啟一個進程,,利用面向連接的IPv4套接口建立通信鏈路,。用戶將自己編寫的內(nèi)核函數(shù)通過insmod命令模塊載入內(nèi)核netfilter[3]架構(gòu),使數(shù)據(jù)包在到達IPv4接收隊列時,,通過NF_HOOK()[4]函數(shù)將數(shù)據(jù)傳送到IPv6協(xié)議棧,,通過IPv6套接口,完成傳感數(shù)據(jù)包的接收處理,,并寫入數(shù)據(jù)庫,。
??? 發(fā)送命令幀時,首先需要解決的是如何將構(gòu)造的IPv6命令幀封裝在IPv4數(shù)據(jù)包中,。其次,,需要利用本地主機通信的方式,采用UNIX域協(xié)議,及時發(fā)送控制命令信息,。
2 后臺數(shù)據(jù)系統(tǒng)的實現(xiàn)
2.1 接收流程的實現(xiàn)
??? 后臺數(shù)據(jù)系統(tǒng)首先在Linux內(nèi)核中將自己編寫的模塊載入netfilter架構(gòu),。當該系統(tǒng)接收到公網(wǎng)Internet傳送過來的IPv4數(shù)據(jù)包后,調(diào)用Linux內(nèi)核中原有的IPv4 協(xié)議棧,,對IPv4協(xié)議和TCP協(xié)議進行解析,,獲取CDMA網(wǎng)關(guān)的IPv4地址以及TCP狀態(tài)等信息,再由netfilter架構(gòu)中已載入模塊獲得內(nèi)核IP隊列中的IPv4數(shù)據(jù)包,,取出TCP協(xié)議的載荷數(shù)據(jù),,發(fā)往IPv6接收隊列,最終通過IPv6協(xié)議棧,,經(jīng)過INET6套接口到達用戶空間,。獲得最終應用層傳感信息,并寫入數(shù)據(jù)庫,。處理流程如圖4所示,。
????????????????????????
??? 后臺數(shù)據(jù)系統(tǒng)在用戶空間進行處理時,將從內(nèi)核空間獲得的傳感數(shù)據(jù)根據(jù)Type字段分成地址信息和傳感信息,進行不同的操作,。
??? 后臺數(shù)據(jù)系統(tǒng)的接收模塊與MySQL[6]數(shù)據(jù)庫建立連接后,,根據(jù)收到的信息進行判斷,將相應的傳感信息進行存儲,。
2.2 發(fā)送流程的實現(xiàn)
??? 發(fā)送信息流程主要負責命令幀的構(gòu)造,發(fā)送各種控制信息,,實現(xiàn)對整個傳感器網(wǎng)絡及其內(nèi)部單個節(jié)點的控制,。控制信息主要包括:控制相應節(jié)點進行溫度,、濕度,、光強以及CO2濃度等各種數(shù)據(jù)的采集,執(zhí)行部分的操作命令等,。具體過程如圖5所示,。
??????????????????
2.2.1 命令幀的構(gòu)造與響應
??? 命令幀的構(gòu)造是一個基于事件驅(qū)動的過程。通過點擊網(wǎng)頁的事件,,觸發(fā)后臺數(shù)據(jù)系統(tǒng)的調(diào)用函數(shù)開始構(gòu)造IPv6命令幀,。
??? 命令幀的響應過程是通過本地通信的UNIX域協(xié)議進行的。在后臺數(shù)據(jù)系統(tǒng)啟動時便創(chuàng)建了一個新的線程作為監(jiān)聽模塊,,用于建立本地通信的套接字" title="套接字">套接字,,綁定UNIX域套接口,之后監(jiān)聽模塊阻塞,,等待事件的觸發(fā),。當用戶或管理者需要某一個具體的傳感節(jié)點采集相應的傳感數(shù)據(jù)時,通過點擊Web網(wǎng)頁的發(fā)送按鈕,觸發(fā)發(fā)送命令幀的程序,,開始主動連接本地UNIX域套接口,,由于后臺數(shù)據(jù)系統(tǒng)的監(jiān)聽模塊是一個單獨的線程,當有連接請求到達時,,立刻會被喚醒,,監(jiān)聽模塊調(diào)用read函數(shù),接收此命令幀,,并將其拷貝到發(fā)送模塊緩沖區(qū),。
2.2.2? 命令幀的發(fā)送
??? 發(fā)送模塊將緩沖區(qū)中命令幀取出,使用面向無連接的IPv6套接字,,經(jīng)過Linux內(nèi)核的UDP和IPv6協(xié)議棧將命令幀發(fā)送到IPv6輸出隊列,。
??? 在內(nèi)核中,提前在netfilter架構(gòu)上加載ipip6_kern.o模塊,,主要用于截獲IPv6輸出隊列的數(shù)據(jù)包并進行處理,。在命令幀到達IPv6輸出隊列后,由ipip6_kern.o模塊中的“鉤子”函數(shù),,將整個數(shù)據(jù)包攔截下來,,判斷是否是命令幀,若是命令幀,,則將其從IPv6輸出隊列取出,,同時拷貝到netlink套接字緩沖區(qū),重新封裝,,加載netlink報頭,,并將封裝后的命令幀利用netlink套接字發(fā)送回用戶空間。用戶空間的轉(zhuǎn)發(fā)模塊可以接收該命令幀,,并將其拷貝到與傳感器網(wǎng)關(guān)設備相連的套接字緩沖區(qū),,最終實現(xiàn)IPv4命令幀的發(fā)送。
3 功能驗證
????實驗是在農(nóng)業(yè)基地的一個溫室中進行的,,在溫室中擺放15個傳感器節(jié)點,,其中4個CO2濃度節(jié)點,5個溫度節(jié)點,,3個光強節(jié)點,,3個空氣濕度節(jié)點。圖6是溫度傳感器工作時的實驗系統(tǒng)(圖中只標明溫度傳感器),。
??????????????????
??? 由于后臺數(shù)據(jù)系統(tǒng)構(gòu)建在IPv6網(wǎng)絡之上,,IPv6網(wǎng)絡可以為每一個溫度傳感器節(jié)點進行標識。首先節(jié)點啟動后,,將自身的地址信息發(fā)送到服務器系統(tǒng),,服務器系統(tǒng)中的接收模塊接收到數(shù)據(jù)包后,,檢查type字段是否為0,為0則確定為地址信息包,,將接收到的數(shù)據(jù)包的相關(guān)信息存放到MySQL數(shù)據(jù)庫的地址信息表項中,,數(shù)據(jù)庫中記錄的地址表項如圖7所示。
?????????????????????
??? 在圖7中,,擴展地址后四位為8919的節(jié)點是無線傳感器網(wǎng)絡的網(wǎng)關(guān),,在sensor_type中用X表示。所有其他傳感器節(jié)點采集的傳感信息均發(fā)送到網(wǎng)關(guān)上,,它通過串口和CDMA網(wǎng)絡接入設備相連,,封裝成CDMA數(shù)據(jù),從CDMA公網(wǎng)中轉(zhuǎn)發(fā)出去,,擴展地址后四位為6041,,6042,6043,,6044,,6045為5個溫度傳感器節(jié)點,在sensor_type中用T表示,。
??? 在IPv6網(wǎng)絡上還可以實現(xiàn)對單個具體的溫度傳感器節(jié)點進行管理和控制,,可以在Web網(wǎng)頁上觸發(fā)6045節(jié)點,使它完成對溫度傳感數(shù)據(jù)的采集,,并最終傳送到后臺數(shù)據(jù)系統(tǒng)的數(shù)據(jù)庫中,。圖8為后臺數(shù)據(jù)系統(tǒng)接收溫度節(jié)點6045傳送的一次溫度傳感數(shù)據(jù)時,用Ethereal軟件抓包分析的結(jié)果,。
?????????????????????
??? 如圖8所示,,目的地址為211.71.71.145,為后臺數(shù)據(jù)系統(tǒng)的IPv4地址,。圖中標注的6045為節(jié)點,而01表示傳感數(shù)據(jù),,83用二進制表示為10000011,,最高2位為10,表示傳感信息包,,后6位為3,,表示溫度傳感數(shù)據(jù)。隨后的兩位18和01,,則表示節(jié)點6045采集的實時溫度,。
??? 一般情況下,節(jié)點周期性地(本系統(tǒng)采集周期為1分鐘)采集周圍的環(huán)境參數(shù)并傳輸?shù)胶笈_數(shù)據(jù)系統(tǒng)數(shù)據(jù)庫模塊,。節(jié)點6045采集的實時溫度曲線如圖9所示,。
????????????????
???? 本文設計和實現(xiàn)了一套應用于精準農(nóng)業(yè)的無線傳感器網(wǎng)絡后臺數(shù)據(jù)處理系統(tǒng),通過netfilter架構(gòu),在Linux內(nèi)核中注冊一個 “鉤子”函數(shù),,利用動態(tài)載入內(nèi)核模塊的方式,,實現(xiàn)了處理IPv4封裝IPv6數(shù)據(jù)的系統(tǒng)框架。擴展了內(nèi)核的功能,。同時,,利用Linux內(nèi)核本身所具有的本地UNIX域協(xié)議,實現(xiàn)了控制命令的主動發(fā)送,。此外,,該后臺數(shù)據(jù)系統(tǒng)還具有開放式網(wǎng)絡體系結(jié)構(gòu)以及通用的數(shù)據(jù)接口,具有良好的擴展性,,能夠適用于無線傳感器網(wǎng)絡的其他應用,。
參考文獻
[1] 孫利民,李建中,,陳渝,等.無線傳感器網(wǎng)絡.北京:清華大學出版社,2005.
[2] RFC2460, S. Deering Internet Protocol,Version 6
[3] The netfilter/iptables project, http://www.netfilter.org.
[4] RUSSEL P, WELTE H. Linux netfilter hacking HOW TO?[EB/OL]. http://www.netfilter.org.
[5] STEVENS R. UNIX Network programming. Addison Wesley.2003.
[6] WILLIAMS H E, LANE D. Web dtatbase application with PHP & MySQL.2003.