《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 一種IPv6無(wú)線傳感器網(wǎng)絡(luò)后臺(tái)數(shù)據(jù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

一種IPv6無(wú)線傳感器網(wǎng)絡(luò)后臺(tái)數(shù)據(jù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2008-07-22
作者:劉晨曦,張思東,,郜 帥

??? 摘? 要: 提出了基于IPv6無(wú)線傳感器網(wǎng)絡(luò)" title="無(wú)線傳感器網(wǎng)絡(luò)">無(wú)線傳感器網(wǎng)絡(luò)與CDMA公共無(wú)線通信網(wǎng)相融合的網(wǎng)絡(luò)架構(gòu)的后臺(tái)數(shù)據(jù)系統(tǒng),作為精準(zhǔn)農(nóng)業(yè)管理系統(tǒng)的一部分,,負(fù)責(zé)傳感數(shù)據(jù)的接收、存儲(chǔ)以及控制命令的發(fā)送,。
???關(guān)鍵詞:IPv6?無(wú)線傳感器網(wǎng)絡(luò)?后臺(tái)數(shù)據(jù)系統(tǒng)

?

??? 無(wú)線傳感器網(wǎng)絡(luò)是由部署在監(jiān)測(cè)區(qū)域的傳感器節(jié)點(diǎn)" title="傳感器節(jié)點(diǎn)">傳感器節(jié)點(diǎn)通過(guò)自組織方式構(gòu)成的網(wǎng)絡(luò),,具有低成本、低能耗,、靈活性高,、可擴(kuò)展等優(yōu)點(diǎn)??梢詰?yīng)用于國(guó)防軍事,、環(huán)境監(jiān)測(cè)和預(yù)報(bào)、農(nóng)業(yè)監(jiān)測(cè)控制,、智能交通,、智能家居、醫(yī)療衛(wèi)生等眾多領(lǐng)域[1],,具有廣闊的應(yīng)用前景,,受到越來(lái)越多的關(guān)注,。IPv6[2]是下一代互聯(lián)網(wǎng)的核心協(xié)議,具有地址資源豐富,、地址自動(dòng)配置,、支持實(shí)時(shí)業(yè)務(wù)、安全性高,、移動(dòng)性好等優(yōu)點(diǎn),。將IPv6與無(wú)線傳感器網(wǎng)絡(luò)結(jié)合構(gòu)建的IPv6無(wú)線傳感器網(wǎng)絡(luò),可以滿足未來(lái)無(wú)線傳感器網(wǎng)絡(luò)在地址,、可擴(kuò)展性及與現(xiàn)有網(wǎng)絡(luò)融合等方面的需求,,已成為其研究熱點(diǎn)之一。
??? 無(wú)線傳感器網(wǎng)絡(luò)通常由不同類型傳感器節(jié)點(diǎn)和網(wǎng)關(guān)設(shè)備構(gòu)成,。傳感器節(jié)點(diǎn)實(shí)時(shí)地采集特定區(qū)域的傳感信息" title="傳感信息">傳感信息,,發(fā)送到網(wǎng)關(guān),網(wǎng)關(guān)設(shè)備通過(guò)特定的方式與現(xiàn)有的網(wǎng)絡(luò)實(shí)現(xiàn)互聯(lián)互通,,將傳感信息發(fā)送到遠(yuǎn)程服務(wù)器端,,由無(wú)線傳感器網(wǎng)絡(luò)后臺(tái)數(shù)據(jù)系統(tǒng)進(jìn)行處理,。本文設(shè)計(jì)并實(shí)現(xiàn)了應(yīng)用于精準(zhǔn)農(nóng)業(yè)系統(tǒng)環(huán)境的IPv6無(wú)線傳感器網(wǎng)絡(luò)后臺(tái)數(shù)據(jù)系統(tǒng),,該系統(tǒng)包括接收、處理和存儲(chǔ)傳感數(shù)據(jù)以及發(fā)送控制命令幀等功能,。無(wú)線傳感器網(wǎng)絡(luò)和Internet骨干網(wǎng)絡(luò)之間的數(shù)據(jù)傳送通過(guò)CDMA網(wǎng)絡(luò)實(shí)現(xiàn),。
1 后臺(tái)數(shù)據(jù)系統(tǒng)設(shè)計(jì)
1.1 基于精準(zhǔn)農(nóng)業(yè)的無(wú)線傳感器網(wǎng)絡(luò)架構(gòu)
??? 本文以精準(zhǔn)農(nóng)業(yè)的管理系統(tǒng)為例,具體架構(gòu)見(jiàn)圖1,。

???????????????
??? 農(nóng)業(yè)基地受地理位置影響,,通常缺乏Internet網(wǎng)絡(luò)基礎(chǔ)設(shè)施。為了實(shí)現(xiàn)農(nóng)業(yè)基地監(jiān)測(cè)控制和智能管理,,部署的IPv6無(wú)線傳感器網(wǎng)絡(luò)借助于CDMA網(wǎng)絡(luò)基礎(chǔ)設(shè)施,,能夠方便有效地與現(xiàn)有網(wǎng)絡(luò)進(jìn)行信息交換。在該系統(tǒng)中,,主要存在以下兩種類型的數(shù)據(jù)傳輸:
??? (1)傳感器節(jié)點(diǎn)需要將實(shí)時(shí)采集的各種傳感數(shù)據(jù)發(fā)送到網(wǎng)關(guān)節(jié)點(diǎn),,通過(guò)特定的CDMA網(wǎng)絡(luò)接入設(shè)備并借助于CDMA網(wǎng)絡(luò)數(shù)據(jù)傳輸業(yè)務(wù)最終將數(shù)據(jù)發(fā)送到現(xiàn)有Internet中的服務(wù)器后臺(tái)處理系統(tǒng)。后臺(tái)數(shù)據(jù)系統(tǒng)將節(jié)點(diǎn)的各種傳感信息寫(xiě)入數(shù)據(jù)庫(kù),,以供用戶隨時(shí)調(diào)用,。
??? (2)管理員可以點(diǎn)擊Web網(wǎng)頁(yè)構(gòu)造控制信息,由后臺(tái)數(shù)據(jù)系統(tǒng)通過(guò)CDMA網(wǎng)絡(luò)將命令發(fā)送到IPv6無(wú)線傳感器網(wǎng)絡(luò)中,,由傳感節(jié)點(diǎn)的執(zhí)行部分最終實(shí)現(xiàn)對(duì)農(nóng)業(yè)基地的有效管理,。
??? 在該系統(tǒng)中,CDMA網(wǎng)絡(luò)的數(shù)據(jù)業(yè)務(wù)采用IPv4和TCP協(xié)議,,而無(wú)線傳感器網(wǎng)絡(luò)采用IPv6技術(shù)以及簡(jiǎn)單有效的UDP傳輸控制協(xié)議實(shí)現(xiàn)數(shù)據(jù)的收發(fā)和處理,。因此,,本文在精準(zhǔn)農(nóng)業(yè)管理系統(tǒng)中設(shè)計(jì)了一種接收數(shù)據(jù)包,格式如圖2所示,。

?????????????????????
??? ?根據(jù)精準(zhǔn)農(nóng)業(yè)管理系統(tǒng)需求以及數(shù)據(jù)包格式轉(zhuǎn)換過(guò)程,,設(shè)計(jì)的后臺(tái)數(shù)據(jù)系統(tǒng)應(yīng)具備以下特點(diǎn):
??? (1)接收處理一種新型隧道包:根據(jù)數(shù)據(jù)包的格式轉(zhuǎn)換,該系統(tǒng)處理過(guò)程可以看作封裝在IPv4網(wǎng)絡(luò)中的IPv6數(shù)據(jù)包的隧道機(jī)制,但又與傳統(tǒng)的隧道機(jī)制有明顯區(qū)別,主要體現(xiàn)在后臺(tái)數(shù)據(jù)系統(tǒng)的IPv6數(shù)據(jù)包是作為IPv4協(xié)議棧" title="協(xié)議棧">協(xié)議棧應(yīng)用層數(shù)據(jù)傳輸?shù)摹R虼?這種新類型的隧道機(jī)制處理流程,是設(shè)計(jì)后臺(tái)數(shù)據(jù)系統(tǒng)的核心問(wèn)題,。
??? (2)構(gòu)造并發(fā)送命令幀:命令幀在通過(guò)IPv6協(xié)議棧后被封裝成IPv6格式,如何使IPv6輸出隊(duì)列的命令幀回到用戶空間,,利用原來(lái)的IPv4套接口進(jìn)行發(fā)送,是后臺(tái)數(shù)據(jù)系統(tǒng)解決的難點(diǎn)問(wèn)題,。
??? (3)及時(shí)響應(yīng)事件驅(qū)動(dòng):在等待數(shù)據(jù)接收時(shí),,后臺(tái)數(shù)據(jù)系統(tǒng)發(fā)送控制命令是一個(gè)事件驅(qū)動(dòng)的過(guò)程,如何及時(shí)響應(yīng)這個(gè)事件驅(qū)動(dòng),,提高工作效率,,是衡量后臺(tái)數(shù)據(jù)系統(tǒng)的一項(xiàng)重要指標(biāo)。
1.2?后臺(tái)數(shù)據(jù)系統(tǒng)模型
??? 后臺(tái)數(shù)據(jù)系統(tǒng)主要用于收集信息,,發(fā)送控制命令,,完成對(duì)無(wú)線傳感器網(wǎng)絡(luò)中傳感器節(jié)點(diǎn)的監(jiān)測(cè)與控制。根據(jù)后臺(tái)數(shù)據(jù)系統(tǒng)所實(shí)現(xiàn)的不同功能,,系統(tǒng)設(shè)計(jì)采用分層體系結(jié)構(gòu),,分成內(nèi)核空間和用戶空間兩大部分,采用Linux操作系統(tǒng)作為內(nèi)核空間基本平臺(tái),。分層的體系結(jié)構(gòu)能使系統(tǒng)的功能實(shí)現(xiàn)透明化,,各個(gè)層不需要了解其他層的具體工作,只需根據(jù)層間的接口所提供的服務(wù),,獨(dú)立完成自己的功能,,這種設(shè)計(jì)使后臺(tái)數(shù)據(jù)系統(tǒng)具有很強(qiáng)的靈活性和可擴(kuò)展性。后臺(tái)數(shù)據(jù)系統(tǒng)模型如圖3所示,。

????????????????????????
??? 接收數(shù)據(jù)包時(shí),,在用戶空間開(kāi)啟一個(gè)進(jìn)程,利用面向連接的IPv4套接口建立通信鏈路,。用戶將自己編寫(xiě)的內(nèi)核函數(shù)通過(guò)insmod命令模塊載入內(nèi)核netfilter[3]架構(gòu),,使數(shù)據(jù)包在到達(dá)IPv4接收隊(duì)列時(shí),通過(guò)NF_HOOK()[4]函數(shù)將數(shù)據(jù)傳送到IPv6協(xié)議棧,,通過(guò)IPv6套接口,,完成傳感數(shù)據(jù)包的接收處理,并寫(xiě)入數(shù)據(jù)庫(kù),。
??? 發(fā)送命令幀時(shí),,首先需要解決的是如何將構(gòu)造的IPv6命令幀封裝在IPv4數(shù)據(jù)包中。其次,,需要利用本地主機(jī)通信的方式,,采用UNIX域協(xié)議,,及時(shí)發(fā)送控制命令信息。
2 后臺(tái)數(shù)據(jù)系統(tǒng)的實(shí)現(xiàn)
2.1 接收流程的實(shí)現(xiàn)
??? 后臺(tái)數(shù)據(jù)系統(tǒng)首先在Linux內(nèi)核中將自己編寫(xiě)的模塊載入netfilter架構(gòu),。當(dāng)該系統(tǒng)接收到公網(wǎng)Internet傳送過(guò)來(lái)的IPv4數(shù)據(jù)包后,,調(diào)用Linux內(nèi)核中原有的IPv4 協(xié)議棧,對(duì)IPv4協(xié)議和TCP協(xié)議進(jìn)行解析,,獲取CDMA網(wǎng)關(guān)的IPv4地址以及TCP狀態(tài)等信息,,再由netfilter架構(gòu)中已載入模塊獲得內(nèi)核IP隊(duì)列中的IPv4數(shù)據(jù)包,取出TCP協(xié)議的載荷數(shù)據(jù),,發(fā)往IPv6接收隊(duì)列,,最終通過(guò)IPv6協(xié)議棧,經(jīng)過(guò)INET6套接口到達(dá)用戶空間,。獲得最終應(yīng)用層傳感信息,,并寫(xiě)入數(shù)據(jù)庫(kù)。處理流程如圖4所示,。

????????????????????????
??? 后臺(tái)數(shù)據(jù)系統(tǒng)在用戶空間進(jìn)行處理時(shí),,將從內(nèi)核空間獲得的傳感數(shù)據(jù)根據(jù)Type字段分成地址信息和傳感信息,進(jìn)行不同的操作。
??? 后臺(tái)數(shù)據(jù)系統(tǒng)的接收模塊與MySQL[6]數(shù)據(jù)庫(kù)建立連接后,,根據(jù)收到的信息進(jìn)行判斷,,將相應(yīng)的傳感信息進(jìn)行存儲(chǔ)。
2.2 發(fā)送流程的實(shí)現(xiàn)
??? 發(fā)送信息流程主要負(fù)責(zé)命令幀的構(gòu)造,,發(fā)送各種控制信息,,實(shí)現(xiàn)對(duì)整個(gè)傳感器網(wǎng)絡(luò)及其內(nèi)部單個(gè)節(jié)點(diǎn)的控制??刂菩畔⒅饕ǎ嚎刂葡鄳?yīng)節(jié)點(diǎn)進(jìn)行溫度、濕度,、光強(qiáng)以及CO2濃度等各種數(shù)據(jù)的采集,,執(zhí)行部分的操作命令等。具體過(guò)程如圖5所示,。

??????????????????
2.2.1 命令幀的構(gòu)造與響應(yīng)
??? 命令幀的構(gòu)造是一個(gè)基于事件驅(qū)動(dòng)的過(guò)程,。通過(guò)點(diǎn)擊網(wǎng)頁(yè)的事件,觸發(fā)后臺(tái)數(shù)據(jù)系統(tǒng)的調(diào)用函數(shù)開(kāi)始構(gòu)造IPv6命令幀,。
??? 命令幀的響應(yīng)過(guò)程是通過(guò)本地通信的UNIX域協(xié)議進(jìn)行的,。在后臺(tái)數(shù)據(jù)系統(tǒng)啟動(dòng)時(shí)便創(chuàng)建了一個(gè)新的線程作為監(jiān)聽(tīng)模塊,用于建立本地通信的套接字" title="套接字">套接字,,綁定UNIX域套接口,,之后監(jiān)聽(tīng)模塊阻塞,等待事件的觸發(fā),。當(dāng)用戶或管理者需要某一個(gè)具體的傳感節(jié)點(diǎn)采集相應(yīng)的傳感數(shù)據(jù)時(shí),,通過(guò)點(diǎn)擊Web網(wǎng)頁(yè)的發(fā)送按鈕,,觸發(fā)發(fā)送命令幀的程序,開(kāi)始主動(dòng)連接本地UNIX域套接口,,由于后臺(tái)數(shù)據(jù)系統(tǒng)的監(jiān)聽(tīng)模塊是一個(gè)單獨(dú)的線程,,當(dāng)有連接請(qǐng)求到達(dá)時(shí),立刻會(huì)被喚醒,,監(jiān)聽(tīng)模塊調(diào)用read函數(shù),,接收此命令幀,并將其拷貝到發(fā)送模塊緩沖區(qū),。
2.2.2? 命令幀的發(fā)送
??? 發(fā)送模塊將緩沖區(qū)中命令幀取出,,使用面向無(wú)連接的IPv6套接字,經(jīng)過(guò)Linux內(nèi)核的UDP和IPv6協(xié)議棧將命令幀發(fā)送到IPv6輸出隊(duì)列,。
??? 在內(nèi)核中,,提前在netfilter架構(gòu)上加載ipip6_kern.o模塊,主要用于截獲IPv6輸出隊(duì)列的數(shù)據(jù)包并進(jìn)行處理,。在命令幀到達(dá)IPv6輸出隊(duì)列后,,由ipip6_kern.o模塊中的“鉤子”函數(shù),將整個(gè)數(shù)據(jù)包攔截下來(lái),,判斷是否是命令幀,,若是命令幀,則將其從IPv6輸出隊(duì)列取出,,同時(shí)拷貝到netlink套接字緩沖區(qū),,重新封裝,加載netlink報(bào)頭,,并將封裝后的命令幀利用netlink套接字發(fā)送回用戶空間,。用戶空間的轉(zhuǎn)發(fā)模塊可以接收該命令幀,并將其拷貝到與傳感器網(wǎng)關(guān)設(shè)備相連的套接字緩沖區(qū),,最終實(shí)現(xiàn)IPv4命令幀的發(fā)送,。
3 功能驗(yàn)證
????實(shí)驗(yàn)是在農(nóng)業(yè)基地的一個(gè)溫室中進(jìn)行的,在溫室中擺放15個(gè)傳感器節(jié)點(diǎn),,其中4個(gè)CO2濃度節(jié)點(diǎn),,5個(gè)溫度節(jié)點(diǎn),3個(gè)光強(qiáng)節(jié)點(diǎn),,3個(gè)空氣濕度節(jié)點(diǎn),。圖6是溫度傳感器工作時(shí)的實(shí)驗(yàn)系統(tǒng)(圖中只標(biāo)明溫度傳感器)。

??????????????????
??? 由于后臺(tái)數(shù)據(jù)系統(tǒng)構(gòu)建在IPv6網(wǎng)絡(luò)之上,,IPv6網(wǎng)絡(luò)可以為每一個(gè)溫度傳感器節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),。首先節(jié)點(diǎn)啟動(dòng)后,將自身的地址信息發(fā)送到服務(wù)器系統(tǒng),,服務(wù)器系統(tǒng)中的接收模塊接收到數(shù)據(jù)包后,,檢查type字段是否為0,,為0則確定為地址信息包,將接收到的數(shù)據(jù)包的相關(guān)信息存放到MySQL數(shù)據(jù)庫(kù)的地址信息表項(xiàng)中,,數(shù)據(jù)庫(kù)中記錄的地址表項(xiàng)如圖7所示,。

?????????????????????
??? 在圖7中,擴(kuò)展地址后四位為8919的節(jié)點(diǎn)是無(wú)線傳感器網(wǎng)絡(luò)的網(wǎng)關(guān),,在sensor_type中用X表示,。所有其他傳感器節(jié)點(diǎn)采集的傳感信息均發(fā)送到網(wǎng)關(guān)上,它通過(guò)串口和CDMA網(wǎng)絡(luò)接入設(shè)備相連,,封裝成CDMA數(shù)據(jù),,從CDMA公網(wǎng)中轉(zhuǎn)發(fā)出去,擴(kuò)展地址后四位為6041,,6042,,6043,6044,,6045為5個(gè)溫度傳感器節(jié)點(diǎn),,在sensor_type中用T表示。
??? 在IPv6網(wǎng)絡(luò)上還可以實(shí)現(xiàn)對(duì)單個(gè)具體的溫度傳感器節(jié)點(diǎn)進(jìn)行管理和控制,,可以在Web網(wǎng)頁(yè)上觸發(fā)6045節(jié)點(diǎn),,使它完成對(duì)溫度傳感數(shù)據(jù)的采集,并最終傳送到后臺(tái)數(shù)據(jù)系統(tǒng)的數(shù)據(jù)庫(kù)中,。圖8為后臺(tái)數(shù)據(jù)系統(tǒng)接收溫度節(jié)點(diǎn)6045傳送的一次溫度傳感數(shù)據(jù)時(shí),,用Ethereal軟件抓包分析的結(jié)果。

?????????????????????

??? 如圖8所示,,目的地址為211.71.71.145,,為后臺(tái)數(shù)據(jù)系統(tǒng)的IPv4地址。圖中標(biāo)注的6045為節(jié)點(diǎn),,而01表示傳感數(shù)據(jù),,83用二進(jìn)制表示為10000011,最高2位為10,,表示傳感信息包,后6位為3,,表示溫度傳感數(shù)據(jù),。隨后的兩位18和01,則表示節(jié)點(diǎn)6045采集的實(shí)時(shí)溫度,。
??? 一般情況下,,節(jié)點(diǎn)周期性地(本系統(tǒng)采集周期為1分鐘)采集周圍的環(huán)境參數(shù)并傳輸?shù)胶笈_(tái)數(shù)據(jù)系統(tǒng)數(shù)據(jù)庫(kù)模塊。節(jié)點(diǎn)6045采集的實(shí)時(shí)溫度曲線如圖9所示,。

????????????????
???? 本文設(shè)計(jì)和實(shí)現(xiàn)了一套應(yīng)用于精準(zhǔn)農(nóng)業(yè)的無(wú)線傳感器網(wǎng)絡(luò)后臺(tái)數(shù)據(jù)處理系統(tǒng),,通過(guò)netfilter架構(gòu),,在Linux內(nèi)核中注冊(cè)一個(gè) “鉤子”函數(shù),利用動(dòng)態(tài)載入內(nèi)核模塊的方式,,實(shí)現(xiàn)了處理IPv4封裝IPv6數(shù)據(jù)的系統(tǒng)框架,。擴(kuò)展了內(nèi)核的功能。同時(shí),,利用Linux內(nèi)核本身所具有的本地UNIX域協(xié)議,,實(shí)現(xiàn)了控制命令的主動(dòng)發(fā)送。此外,,該后臺(tái)數(shù)據(jù)系統(tǒng)還具有開(kāi)放式網(wǎng)絡(luò)體系結(jié)構(gòu)以及通用的數(shù)據(jù)接口,,具有良好的擴(kuò)展性,能夠適用于無(wú)線傳感器網(wǎng)絡(luò)的其他應(yīng)用,。
參考文獻(xiàn)
[1] 孫利民,,李建中,陳渝,等.無(wú)線傳感器網(wǎng)絡(luò).北京:清華大學(xué)出版社,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.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。