文獻標識碼: 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的無線通信協議,旨在為嵌入式設備,如無線傳感節點提供IPv6連接[1]。6LoWPAN的出現以全IP的方式真正解決了無線傳感器網絡與IPv6網絡的互聯互通。6LoWPAN已經得到了Google、Cisco、Honeywell等公司的高度重視,有望取代ZigBee標準,成為事實上的標準,當前已經有很多關于6LoWPAN的應用[2]。6LoWPAN網絡底層使用IEEE 802.15.4標準,在MAC層和IPv6網絡層之間引入適配層,主要提供包分片與重組、頭部壓縮和鏈路層轉發等功能。
目前已經有多種開源或商業的6LoWPAN協議棧的實現[3],其中基于Contiki的SICSlowpan以其開源、可移植性好、超輕量級、長期維護等優勢得到了廣泛關注。SICSlowpan符合RFC4944標準,實現了頭部編碼壓縮、分片、地址分配等功能,具有較好的互操作性。
6LoWPAN邊界路由器是連接6LoWPAN傳感網和IP網絡的橋梁,使兩者的互操作成為可能。6LoWPAN邊界路由器的基本功能有:完成IP協議棧和6LoWPAN協議棧之間的轉換,使IP網絡中的主機可以訪問6LoWPAN傳感網絡中的節點。本文的目標就是在Contiki的基礎下,設計一種實用的6LoWPAN邊界路由器,為進一步研究6LoWPAN奠定基礎。典型的基于Contiki實現的6LoWPAN協議棧如圖1所示。
1 系統組成和目標
6LoWPAN邊界路由器也可以看成是一種網關或服務器,可連接傳統IP網絡和6LoWPAN傳感網絡并自動完成網絡協議的轉換。為了驗證6LoWPAN邊界路由器在網絡協議轉換中的作用,本文設計了一個包含1個6LoWPAN邊界路由器、2個6LoWPAN節點,1臺PC的測試網絡,整體測試網絡的結構圖如圖2所示。
本文設計的6LoWPAN邊界路由器在實現無縫連接IP網絡和6LoWPAN傳感網絡的過程中具有下列特點:(1)遵循6LoWPAN標準協議,鏈路層基于ContikiMac,采用RDC機制,有效降低功耗,路由協議采用Router Over方式,基于ContikiRPL,支持RPL協議[4];(2)兼容IPv4網絡,即能實現IPv4客戶端和6LoWPAN傳感網之間的通信[5];(3)無縫連接IPv6網絡,支持6LoWPAN標準的鄰居發現協議6LoWPAN ND[6];(4)支持ping等簡單的常用網絡管理命令,方便網絡的調試。
2 硬件設計
6LoWPAN邊界路由器是6LoWPAN網絡的核心,處理能力要求較高,但從性能和成本兩方面考慮,邊界路由器的主控并沒有采用高性能ARM芯片,而是采用了TI公司的片上系統解決方案CC2538芯片,CC2538基于ARM Cortex-M3架構,內部資源豐富,性能強勁,能很好地支持最新的Contiki3.x版本,完全可以滿足本文的設計要求。以太網模塊采用ENC28J60芯片及HR911105A網絡變壓器。為了調試方便,本文設計了USB轉串口模塊,用于在PC上打印信息,其驅動芯片采用cp2102。邊界路由器的整體硬件結構圖如圖3所示。
為了便于后續的功能擴展及滿足各種需求,本6LoWPAN傳感器節點的硬件結構設計基本與6LoWPAN邊界路由器相同,不同之處在于去掉了以太網模塊,其他部分設計與邊界路由器相同。
3 軟件設計
6LoWPAN邊界路由器的軟件實現主要基于Contiki協議棧,Contiki以函數指針結構體的形式在每一層定義了很多鉤子函數,或者稱為服務接入點。每一層不同的實現可以很容易連接到這些鉤子函數,緊接著就可以通過函數指針訪問。具體來說,首先要深入分析Contiki內核的結構,然后根據本文需求對Contiki原有的協議棧進行相應的修改,增添所需的額外功能,本設計要求至少要兼容IPv4網絡的通信。
由于6LoWPAN是為支持IPv6而設計的,但當前仍有大量的設備只能運行IPv4協議,因此,本文在應用層定義了一個IPv6/IPv4適配器,其作用就是兼容IPv4協議同時還能驗證客戶端輸入指令的有效性。當邊界路由器初始化完畢后,該應用層適配器會創建一個IPv4套接字接口用于監聽IPv4連接。IPv4主機收到的命令會被適配器提取出來經分析并判定是否需要轉發到6LoWPAN網絡。如果命令無效或者目的節點失效,將會返回一個錯誤消息給IPv4主機。經過這一確認過程,包含該命令的IPv6數據包就被轉發給相應的6LoWPAN節點。與此同時,適配器還會啟動一個定時器,如果該命令的應答沒有在規定的時間內返回,同樣會返回一個錯誤信息給主機端;如果正常,適配器會收到6LoWPAN節點的數據,該數據會被提取出來,壓縮在IPv4報文中并發送給IPv4主機端。
圖4描述了報文經由邊界路由器在IPv6客戶端和6LoWPAN網絡之間交換的通信過程。該通信過程分為兩個階段:IPv6客戶端發送命令給6LoWPAN節點以及6LoWPAN節點返回應答。邊界路由器主要完成壓縮、解壓縮、分片及重組等工作。
類似的,IPv4主機和6LoWPAN網絡之間的消息流程可以從圖5中看出。同樣可將其看成兩個階段:IPv4主機發送命令給6LoWPAN節點以及6LoWPAN節點返回應答。這里邊界路由器更像是一個服務器,等待IPv4來連接特定的端口,所有來自IPv4主機的命令都被轉交給邊界路由器而不是6LoWPAN節點。這些命令包含目的節點或節點ID號以及要執行的動作。它們被壓縮在IPv4數據包中并被遞交給IPv4/IPv6適配器,適配器會執行相應的動作。當發現命令是無效的,邊界路由器會發送一個錯誤消息給IPv4主機,避免再同6LoWPAN節點通信這一多余過程。
4 邊界路由器功能驗證
為了驗證6LoWPAN邊界路由器確實發揮了應有的作用,讓兩個6LoWPAN節點和6LoWPAN邊界路由器彼此相距10 m遠,6LoWPAN邊界路由器經以太網接口以有線方式接入Internet,6LoWPAN節點和6LoWPAN邊界路由器之間則通過無線方式連接。設定讓6LoWPAN節點以一定時間間隔循環向PC發送ASCII碼字節數據流,為了便于觀察效果,設定讓串口打印出相關信息,利用串口助手可以很方便地看到相關的數據。
4.1 連通性測試
聯通性測試主要利用ping命令來測試PC和6LoWPAN邊界路由器的連通性。圖6所示為6LoWPAN邊界路由器啟動時獲取到的IPv4地址,其IPv4地址為172.23.10.177,PC的IPv4地址為172.23.10.134。圖7所示為在PC上利用ping命令測試的最終結果,可以看出數據包的往返時間較小,證明連通性較好。
4.2 數據通信測試
在確定了6LoWPAN邊界路由器和PC之間較好的連通性后,就可以測試6LoWPAN節點和PC之間的數據交換。測試過程中,利用sokit軟件,設定從PC上向6LoWPAN節點發送“Hello World?鄞”字符串數據,利用抓包軟件wireshark進行抓包,整個過程如圖8和圖9所示。
從圖中可以看出,在PC向6LoWPAN節點發送數據包的過程中,傳輸層的承載協議是UDP,成功抓取到了數據包的轉發過程。也從側面說明6LoWPAN邊界路由器發揮了協議轉換的作用。
5 結束語
本文選取了CC2538 SoC作為6LoWPAN邊界路由器的硬件平臺的核心,在Contiki協議棧的基礎上,完成了6LoWPAN邊界路由器的設計,測試結果表明達到了預期的設計目標。所設計的6LoWPAN邊界路由器可以應用于無線傳感網絡應用中的多種場合,下一步計劃是將所設計的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.