文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.017
中文引用格式: 田廣東,葉鑫. 基于Contiki的6LoWPAN邊界路由器的設計[J].電子技術應用,,2016,,42(3):61-63,70.
英文引用格式: Tian Guangdong,,Ye Xin. Design of 6LoWPAN border router based on Contiki[J].Application of Electronic Technique,,2016,42(3):61-63,,70.
0 引言
6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)是一種基于IEEE 802.15.4的無線通信協(xié)議,,旨在為嵌入式設備,,如無線傳感節(jié)點提供IPv6連接[1]。6LoWPAN的出現(xiàn)以全IP的方式真正解決了無線傳感器網(wǎng)絡與IPv6網(wǎng)絡的互聯(lián)互通,。6LoWPAN已經(jīng)得到了Google,、Cisco、Honeywell等公司的高度重視,,有望取代ZigBee標準,,成為事實上的標準,當前已經(jīng)有很多關于6LoWPAN的應用[2],。6LoWPAN網(wǎng)絡底層使用IEEE 802.15.4標準,在MAC層和IPv6網(wǎng)絡層之間引入適配層,主要提供包分片與重組,、頭部壓縮和鏈路層轉(zhuǎn)發(fā)等功能。
目前已經(jīng)有多種開源或商業(yè)的6LoWPAN協(xié)議棧的實現(xiàn)[3],,其中基于Contiki的SICSlowpan以其開源,、可移植性好、超輕量級,、長期維護等優(yōu)勢得到了廣泛關注,。SICSlowpan符合RFC4944標準,實現(xiàn)了頭部編碼壓縮、分片,、地址分配等功能,具有較好的互操作性,。
6LoWPAN邊界路由器是連接6LoWPAN傳感網(wǎng)和IP網(wǎng)絡的橋梁,使兩者的互操作成為可能,。6LoWPAN邊界路由器的基本功能有:完成IP協(xié)議棧和6LoWPAN協(xié)議棧之間的轉(zhuǎn)換,,使IP網(wǎng)絡中的主機可以訪問6LoWPAN傳感網(wǎng)絡中的節(jié)點。本文的目標就是在Contiki的基礎下,設計一種實用的6LoWPAN邊界路由器,,為進一步研究6LoWPAN奠定基礎,。典型的基于Contiki實現(xiàn)的6LoWPAN協(xié)議棧如圖1所示。
1 系統(tǒng)組成和目標
6LoWPAN邊界路由器也可以看成是一種網(wǎng)關或服務器,,可連接傳統(tǒng)IP網(wǎng)絡和6LoWPAN傳感網(wǎng)絡并自動完成網(wǎng)絡協(xié)議的轉(zhuǎn)換。為了驗證6LoWPAN邊界路由器在網(wǎng)絡協(xié)議轉(zhuǎn)換中的作用,,本文設計了一個包含1個6LoWPAN邊界路由器,、2個6LoWPAN節(jié)點,1臺PC的測試網(wǎng)絡,,整體測試網(wǎng)絡的結(jié)構圖如圖2所示,。
本文設計的6LoWPAN邊界路由器在實現(xiàn)無縫連接IP網(wǎng)絡和6LoWPAN傳感網(wǎng)絡的過程中具有下列特點:(1)遵循6LoWPAN標準協(xié)議,鏈路層基于ContikiMac,,采用RDC機制,,有效降低功耗,路由協(xié)議采用Router Over方式,,基于ContikiRPL,,支持RPL協(xié)議[4];(2)兼容IPv4網(wǎng)絡,,即能實現(xiàn)IPv4客戶端和6LoWPAN傳感網(wǎng)之間的通信[5],;(3)無縫連接IPv6網(wǎng)絡,支持6LoWPAN標準的鄰居發(fā)現(xiàn)協(xié)議6LoWPAN ND[6],;(4)支持ping等簡單的常用網(wǎng)絡管理命令,,方便網(wǎng)絡的調(diào)試。
2 硬件設計
6LoWPAN邊界路由器是6LoWPAN網(wǎng)絡的核心,,處理能力要求較高,,但從性能和成本兩方面考慮,邊界路由器的主控并沒有采用高性能ARM芯片,,而是采用了TI公司的片上系統(tǒng)解決方案CC2538芯片,,CC2538基于ARM Cortex-M3架構,內(nèi)部資源豐富,,性能強勁,,能很好地支持最新的Contiki3.x版本,完全可以滿足本文的設計要求,。以太網(wǎng)模塊采用ENC28J60芯片及HR911105A網(wǎng)絡變壓器,。為了調(diào)試方便,本文設計了USB轉(zhuǎn)串口模塊,,用于在PC上打印信息,,其驅(qū)動芯片采用cp2102。邊界路由器的整體硬件結(jié)構圖如圖3所示。
為了便于后續(xù)的功能擴展及滿足各種需求,,本6LoWPAN傳感器節(jié)點的硬件結(jié)構設計基本與6LoWPAN邊界路由器相同,,不同之處在于去掉了以太網(wǎng)模塊,其他部分設計與邊界路由器相同,。
3 軟件設計
6LoWPAN邊界路由器的軟件實現(xiàn)主要基于Contiki協(xié)議棧,,Contiki以函數(shù)指針結(jié)構體的形式在每一層定義了很多鉤子函數(shù),或者稱為服務接入點,。每一層不同的實現(xiàn)可以很容易連接到這些鉤子函數(shù),,緊接著就可以通過函數(shù)指針訪問。具體來說,,首先要深入分析Contiki內(nèi)核的結(jié)構,,然后根據(jù)本文需求對Contiki原有的協(xié)議棧進行相應的修改,增添所需的額外功能,,本設計要求至少要兼容IPv4網(wǎng)絡的通信,。
由于6LoWPAN是為支持IPv6而設計的,但當前仍有大量的設備只能運行IPv4協(xié)議,,因此,,本文在應用層定義了一個IPv6/IPv4適配器,其作用就是兼容IPv4協(xié)議同時還能驗證客戶端輸入指令的有效性,。當邊界路由器初始化完畢后,,該應用層適配器會創(chuàng)建一個IPv4套接字接口用于監(jiān)聽IPv4連接。IPv4主機收到的命令會被適配器提取出來經(jīng)分析并判定是否需要轉(zhuǎn)發(fā)到6LoWPAN網(wǎng)絡,。如果命令無效或者目的節(jié)點失效,,將會返回一個錯誤消息給IPv4主機。經(jīng)過這一確認過程,,包含該命令的IPv6數(shù)據(jù)包就被轉(zhuǎn)發(fā)給相應的6LoWPAN節(jié)點,。與此同時,適配器還會啟動一個定時器,,如果該命令的應答沒有在規(guī)定的時間內(nèi)返回,,同樣會返回一個錯誤信息給主機端;如果正常,,適配器會收到6LoWPAN節(jié)點的數(shù)據(jù),,該數(shù)據(jù)會被提取出來,壓縮在IPv4報文中并發(fā)送給IPv4主機端,。
圖4描述了報文經(jīng)由邊界路由器在IPv6客戶端和6LoWPAN網(wǎng)絡之間交換的通信過程,。該通信過程分為兩個階段:IPv6客戶端發(fā)送命令給6LoWPAN節(jié)點以及6LoWPAN節(jié)點返回應答。邊界路由器主要完成壓縮,、解壓縮,、分片及重組等工作,。
類似的,IPv4主機和6LoWPAN網(wǎng)絡之間的消息流程可以從圖5中看出,。同樣可將其看成兩個階段:IPv4主機發(fā)送命令給6LoWPAN節(jié)點以及6LoWPAN節(jié)點返回應答,。這里邊界路由器更像是一個服務器,等待IPv4來連接特定的端口,,所有來自IPv4主機的命令都被轉(zhuǎn)交給邊界路由器而不是6LoWPAN節(jié)點,。這些命令包含目的節(jié)點或節(jié)點ID號以及要執(zhí)行的動作。它們被壓縮在IPv4數(shù)據(jù)包中并被遞交給IPv4/IPv6適配器,,適配器會執(zhí)行相應的動作,。當發(fā)現(xiàn)命令是無效的,邊界路由器會發(fā)送一個錯誤消息給IPv4主機,,避免再同6LoWPAN節(jié)點通信這一多余過程。
4 邊界路由器功能驗證
為了驗證6LoWPAN邊界路由器確實發(fā)揮了應有的作用,,讓兩個6LoWPAN節(jié)點和6LoWPAN邊界路由器彼此相距10 m遠,,6LoWPAN邊界路由器經(jīng)以太網(wǎng)接口以有線方式接入Internet,6LoWPAN節(jié)點和6LoWPAN邊界路由器之間則通過無線方式連接,。設定讓6LoWPAN節(jié)點以一定時間間隔循環(huán)向PC發(fā)送ASCII碼字節(jié)數(shù)據(jù)流,,為了便于觀察效果,設定讓串口打印出相關信息,,利用串口助手可以很方便地看到相關的數(shù)據(jù),。
4.1 連通性測試
聯(lián)通性測試主要利用ping命令來測試PC和6LoWPAN邊界路由器的連通性。圖6所示為6LoWPAN邊界路由器啟動時獲取到的IPv4地址,,其IPv4地址為172.23.10.177,,PC的IPv4地址為172.23.10.134。圖7所示為在PC上利用ping命令測試的最終結(jié)果,,可以看出數(shù)據(jù)包的往返時間較小,,證明連通性較好。
4.2 數(shù)據(jù)通信測試
在確定了6LoWPAN邊界路由器和PC之間較好的連通性后,,就可以測試6LoWPAN節(jié)點和PC之間的數(shù)據(jù)交換,。測試過程中,利用sokit軟件,,設定從PC上向6LoWPAN節(jié)點發(fā)送“Hello World?鄞”字符串數(shù)據(jù),,利用抓包軟件wireshark進行抓包,整個過程如圖8和圖9所示,。
從圖中可以看出,,在PC向6LoWPAN節(jié)點發(fā)送數(shù)據(jù)包的過程中,傳輸層的承載協(xié)議是UDP,,成功抓取到了數(shù)據(jù)包的轉(zhuǎn)發(fā)過程,。也從側(cè)面說明6LoWPAN邊界路由器發(fā)揮了協(xié)議轉(zhuǎn)換的作用,。
5 結(jié)束語
本文選取了CC2538 SoC作為6LoWPAN邊界路由器的硬件平臺的核心,在Contiki協(xié)議棧的基礎上,,完成了6LoWPAN邊界路由器的設計,,測試結(jié)果表明達到了預期的設計目標。所設計的6LoWPAN邊界路由器可以應用于無線傳感網(wǎng)絡應用中的多種場合,,下一步計劃是將所設計的6LoWPAN邊界路由器應用到無線抄表上,。
參考文獻
[1] Chen Yibo,Hou KunMean,,Zhou Haiying,,et al.6LoWPAN stacks:a survey[C].IEEE Conference Publications,2011.
[2] YoungKi Park,,Ngoc-Thanh Dinh.A network monitoring system in 6LoWPAN networks[C].IEEE Conference Publications,,2012.
[3] Dhananjay Singh,U.S.Tiwary.Global healthcare monitoring system using 6lowpan networks[C].IEEE Conference Publications,,2009.
[4] Olfa Gaddour,,Anis Koubaa.RPL in a nutshell:a survey[J].Computer Networks,2012,,56(14).
[5] B.da Silva Campos,,RODRIGUES J J,OLIVEIRA L M,,et al.Design and construction of wireless sensor network gateway with IPv4/IPv6 support[C].2011 IEEE International Conference on Communications,,Kyoto,Japan,,2011.
[6] SHELBY Z,,CHAKRABARTI S,NORDMARK E,,et al.Neighbor discovery optimization for IPv6 over low-power wireless personal area networks(6LoWPANs),,RFC 6775,2012.