張溢斐 李小龍
(重慶郵電大學工業物聯網與網絡化控制教育部重點實驗室,中國 重慶400065)
近年來,物聯網發展迅速,在工業現場、智能電網、倉儲物流等領域得到了廣泛應用。作為物聯網的重要組成部分,無線傳感器網絡(Wireless Sensor Networks,WSNs)是信息通信領域的一個熱點。無線傳感器網絡包含諸多協議標準,如ZigBee、6LoWPAN、ISA 100.11a、RFID等,隨著各種技術的發展,采用不同傳感網協議的網絡在現實生活中相互通信成為一個亟待解決的問題。
IEEE 802.15.4[1]是一種低功耗、低速率、短距離無線傳輸協議,描述了低速率無線個人局域網的物理層和媒體接入控制協議,具有可擴展性,且只規定了底層,即單一的媒體訪問控制(MAC)層和多樣的物理層,至于MAC以上的協議,可以采用不同的方案。由此就產生了多種不同的技術,比如ZigBee、6LoWPAN、ISA100.11a等。基于ZigBee協議[2]的應用已經遍布于工業控制、智能測繪、醫療、家居等各行各業,在技術的成熟度和產品的市場化方面都要比6LoWPAN更有優勢,但是6LoWPAN也有其特有的優勢,即6LoWPAN[3]網絡層采用IPv6協議,使得6LoWPAN設備能夠擁有IPv6地址,并在網絡層面上通信,甚至可以接入互聯網,使互聯網的應用擴展到物理世界的任意角落。
本文研究了ZigBee網絡和6LoWPAN網絡,設計實現了ZigBee和6LoWPAN這兩種不同傳感器網絡之間相互通信的異構WSNs網關系統,在不改變ZigBee與6LoWPAN協議的基礎上,成功解決了兩種無線傳感器網絡間不同協議互通的問題,對促進異構網絡之間的無縫融合有積極意義。

圖1 異構WSNs節點通信應用場景Fig.1 Heterogeneous WSNs communication scenario
圖1所示為本文所實現的ZigBee與6LoWPAN傳感器網絡中異構節點互通的場景。ZigBee網絡與6LoWPAN網絡通過本文設計的一個網關實現異構傳感網節點間的互通,并可接入IP網絡與互聯網上的節點實現互通。

圖2 協議轉換模型Fig.2 Protocol conversion model
圖2所示是在圖1的具體應用場景中網關的協議轉換圖。ZigBee網絡接入模塊與6LoWPAN接入模塊分別通過串口與ARM處理器相連,一起構成網關的整體。ZigBee節點采集到的數據通過無線發送給ZigBee協調器,即ZigBee網絡接入模塊,解析出數據的有效載荷,通過SLIP協議發給ARM處理器,轉換成IPv6數據,再通過SLIP協議發送給6LoWPAN邊界路由器,即6LoWPAN網絡接入模塊,繼而轉發給6LoWPAN節點。
網關由ARM處理器、ZigBee模塊、6LoWPAN模塊組成,ZigBee模塊與6LoWPAN模塊還分別作為ZigBee網絡的協調器與6LoWPAN網絡的邊界路由器。
網關功能主要有:
(1)基本協議解析功能,包括ZigBee協議、6LoWPAN協議以及IPv6協議。
(2)服務查詢功能,主要通過在網關建立起一個存儲傳感網節點EUI-64地址與所提供服務的服務表實現,節點向網關發送服務查詢請求命令,網關向節點返回服務查詢響應。
(3)協議轉換功能。EUI-64地址要轉換成IPv6地址,ZigBee數據包轉換成IPv6數據包。
2.1.1 服務注冊
服務注冊是將兩個傳感網中所有節點的EUI-64地址與其所提供的服務建立映射關系,將這些服務和提供服務的節點信息存儲在服務表中,從而使網關具有服務查詢功能[5]。
首先是網關初始化。ZigBee網絡和6LoWPAN網絡采用動態組網方式自動組網,之后ZigBee節點上傳自身信息給ZigBee協調器,包括EUI-64地址、提供的服務類型(溫濕度檢測、設備控制等),6LoWPAN節點同樣上傳信息給邊界路由器,最后ARM處理器匯總信息,建立映射并生成服務表。服務表如表1所示。

表1 服務表Tab.1 Service table
2.1.2 服務查詢
服務查詢是傳感網節點向網關提出服務查詢請求,網關向節點返回服務查詢響應。
為了傳感器節點能查詢到服務提供者的EUI-64地址,設立了服務代碼表,如表2所示,定義了服務查詢請求以及服務查詢響應的數據包格式,如圖3和圖4所示:
(1)服務代碼表
把溫度、濕度、一氧化碳濃度等服務類型分別用以下代碼表示,如表2所示:

表2 服務代碼表Tab.2 Service code table
(2)服務查詢請求

圖3 服務查詢請求數據包格式Fig.3 Service query request frame format
其中,字符“?”為數據包的標志位,字符“P”為數據包的識別符,字符“1”為要查詢的服務——濕度。
(3)服務查詢響應

圖4 服務查詢響應數據包格式Fig.4 Service query response frame format
其中,字符“!”為數據包的標志位,字符“P”為數據包的識別符,字符“1”為要查詢的服務——濕度,EUI-64為濕度服務提供者的EUI-64地址。
節點查詢到服務提供者的EUI-64地址后,就可以構造報文發送到相應節點了。
ZigBee節點與6LoWPAN節點發送數據的時候要把自身的EUI-64地址、查詢得到的6LoWPAN的EUI-64地址以及真正要發送的數據打包放在應用層負載中,因此,應用層數據通信協議就需要包含這些必要信息數據。在傳輸過程中統一的數據報文格式[6]如圖5所示。

圖5 應用層數據格式Fig.5 Application layer data format
ZigBee無線模塊與6LoWPAN無線模塊都通過串口與ARM處理器相連,數據的傳輸通過串口進行。為了增加Linux主控單元和WSN子網接入模塊之間通信的安全性,在報文傳輸過程中采用SLIP協議封裝[7],接收數據時可以通過SLIP的標志位判斷數據是否完整來決定接收或者丟棄,SLIP作為鏈路層協議直接承載IP數據包。SLIP協議封裝具體格式如圖6所示,將原報文中的字符0xC0替換為0XDB、0xDC,將字符0xDB替換為0xDB、0xDD,解封裝是反之即可,這里不再贅述。

圖6 SLIP的封裝過程Fig.6 Encapsulation process of SLIP
ZigBee數據需要轉換成IPv6數據來與6LoWPAN網絡通信,且6LoWPAN傳輸層采用UDP協議,因此UDP/IPv6數據包封裝與解封裝必不可少。
當應用層的數據產生后,首先要在傳輸層添加UDP首部,然后在網絡層添加IPv6首部,最后在數據鏈路層添加SLIP首部,生成UDP/IPv6數據包的過程如圖7所示。
ARM板串口接收到ZigBee模塊發送來的數據包,SLIP解封裝后得到應用層數據,依次取出報文中的各個變量,即ZigBee節點EUI-64地址、6LoWPAN節點的EUI-64地址、數據包長度、純數據。按照IPv6首部、UDP首部、UDP偽首部、UDP校驗和的規定依次填充各個變量,最終構造出UDP/IPv6數據包[8]。然后添加SLIP首部后通過串口發送給6LoWPAN邊界路由器,邊界路由器將IPv6報文壓縮到只含必要內容,且能在以IEEE 802.15.4標準為底層協議的WSN內傳輸的小數據包,之后發送給目的6LoWPAN節點。
6LoWPAN節點發送數據到ZigBee節點時,要進行UDP/IPv6數據包的解封裝,過程與前面所述相反。

圖7 UDP/IPv6數據包封裝過程Fig.7 Encapsulation process of UDP/IPv6 data packets
節點交互過程主要分為3個階段:網關初始化階段、服務查詢階段以及數據傳輸階段。圖8所示為ZigBee節點(A)、異構WSNs網關(B)、6LoWPAN節點(C)之間的交互流程[9]。主要描述了3個階段中網關初始化生成服務表后,由ZigBee節點發起服務查詢請求,網關返回服務查詢響應,ZigBee節點得到目的6LoWPAN節點地址后,發送數據到6LoWPAN節點,6LoWPAN節點接收數據的整個過程。
(1)網關初始化
網關初始化包括網絡初始化和服務注冊。網關啟動后,ZigBee節點和6LoWPAN節點分別自動組網,建立ZigBee網絡和6LoWPAN網絡,之后節點向網關上傳自己的EUI-64地址和所提供的服務,完成服務注冊,由此網關建立起節點EUI-64地址與所提供服務的一一映射,存儲ZigBee節點和6LoWPAN節點的EUI-64地址及節點提供的服務。

圖8 網關節點交互流程Fig.8 Interaction flow of gateway nodes

圖9 網關測試系統示意圖Fig.9 Gateway test system schematic diagram
(2)服務查詢
節點A向網關B發起服務查詢請求,B收到請求后在服務表中查詢此服務由哪個6LoWPAN節點提供,查詢到是節點C后,把節點C的EUI-64地址回復給節點A,于是節點A就知道了節點C的EUI-64地址。
(3)數據傳輸
經過上面兩步網絡初始化和服務查詢之后,節點A知道了提供所需服務的節點的EUI-64地址,然后構造這樣的報文,即把ZigBee的EUI-64地址、6LoWPAN的EUI-64地址加上要發送的數據打包按照ZigBee協議發給網關,在網關處進行如下處理:ARM處理器接收到數據包后依次取出ZigBee的EUI-64地址、6LoWPAN的EUI-64地址以及數據,再調用UDP/IPv6封裝程序封裝成一個IPv6數據包。然后通過串口發到6LoWPAN邊界路由器的網絡層,再往下傳送到適配層進行分片、壓縮等處理,傳給MAC層及物理層,通過無線發送到目的6LoWPAN節點,至此完成了數據從ZigBee節點到6LoWPAN節點的全過程。
網關測試系統示意圖如圖9所示:包括ARM處理器、ZigBee無線通信模塊、6LoWPAN無線通信模塊、ZigBee與6LoWPAN網絡節點。ARM處理器采用三星公司的ARM9處理器芯片S3C2440,ZigBee模塊采用CC2530芯片,6LoWPAN模塊也采用CC2530芯片。ARM處理器與兩個無線通信模塊都采用串口相連。ZigBee模塊同時作為ZigBee網絡的協調器,6LoWPAN模塊也同時作為6LoWPAN網絡的邊界路由器。兩個傳感網節點通過無線方式發送數據給ZigBee模塊和6LoWPAN模塊。
本文的ZigBee網絡軟件設計采用TI免費協議棧ZStack-CC2530-2.3.0-1.4.0,工具軟件采用IAR Embedded Workbench for 80517.60。在TI免費協議棧的基礎上,通過修改其應用層來實現不同的功能。
在本文的6LoWPAN傳感網中,我們采用本實驗室獨立開發的6LoWPAN協議棧6lowsn_stack_v0.55,本協議棧已經實現了6LoWPAN的基本功能如報頭壓縮、分片等。工具軟件采用IAR Embedded Workbench for 80517.60。用于6LoWPAN協議棧的芯片解決方案采用單芯片方案,即此協議棧可以單獨運行在一塊CC2530芯片上,成本和復雜性都比較低。

圖10 服務查詢抓包結果Fig.10 Capture package results of service query

圖11 數據傳輸抓包結果Fig.11 Capture package results of data transmission
網關啟動后,ZigBee節點與6LoWPAN節點分別各自組網,并在網關處建立起服務表。ZigBee節點向網關發送服務查詢請求,網關向ZigBee節點返回服務查詢響應。之后ZigBee節點向網關發送數據,網關經過處理后發送給目的6LoWPAN節點,完成了服務查詢與數據傳輸的全過程,使用Chipcon Packet sniffer軟件對整個過程進行抓包,抓包結果如下:
圖10是服務查詢抓包結果。可以看出網關啟動后,ZigBee節點與6LoWPAN節點分別各自組網,之后ZigBee節點發送服務查詢請求命令“?P1”,網關查詢服務表后得到服務“1”提供者6LoWPAN節點的EUI-64地址,于是向ZigBee節點返回服務查詢響應 “!P1”加上6LoWPAN節點的EUI-64地址,服務查詢階段結束。
圖11是數據傳輸抓包結果。ZigBee節點把自身EUI-64地址、查詢到的6LoWPAN的EUI-64地址和要發送的數據“am”打包作為應用層數據發送給網關。網關接收到數據包后經過解析、封裝IPv6包,發送給6LoWPAN邊界路由器,最后轉發給目的6LoWPAN節點,抓包顯示收到ZigBee節點發來的數據包“am”。
本文對ZigBee和6LoWPAN這兩種不同協議類型的傳感網之間的通信進行了研究,并給出了實現方案,詳細闡述了實現異構傳感網通信的關鍵技術,并搭建了測試平臺進行軟硬件結合的測試,達到了設計的初衷,滿足了異構傳感網通信的需求,實現了兩者之間的點對點通信。在不更改協議棧的基礎上進行的網關設計具有較強的實用性和可擴展性,方便接入IPv6網絡以及更多不同協議的傳感網進行自由通信。
[1]蔣挺,趙成林.紫蜂技術及其應用[M].北京:北京郵電大學出版社,2006.
[2]ZigBee Specification.Version 1.0[R].ZigBee Alliance,2004.
[3]Shelby z,Bormann c.6LoWPAN:The wireless embedded Internet[M].New York,NY,USA:John Wiley&Sons Ltd.,2009.
[4]戚劍超.基于IPv6的無線傳感器網絡應用研究[D].合肥:合肥工業大學,2009.
[5]孫紀敏,沈玉龍,孫玉,張思東.傳感器網絡接入Internet體系結構和服務提供方法[J].通信學報,2008,29(4):84-89.
[6]吳功宜,董大凡,王珺,劉乾.計算機網絡高級軟件編程技術[M].北京:清華大學出版社,2007.
[7]Andrew S.Tanenbaum.Computer Networks[M].3rd edition.北京:清華大學出版社,2002.
[8]Qing Li,Tatuya Jinmei,Keiichi Shima.IPv6 詳解,卷 1:核心協議實現[M].北京:人民郵電出版社,2009.
[9]Wang r c,Chang r s,Chao h c.Internetworking between ZigBee/802.15.4 and IPv6/802.3 network[R].Taipei,China:NICI IPv6 Steering Committee,2007.