文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.017
中文引用格式: 吉福生,王亞琛,華磊. 基于OpenWrt的6LoWPAN邊界路由器的實現[J].電子技術應用,2017,43(6):68-70,74.
英文引用格式: Ji Fusheng,Wang Yachen,Hua Lei. The realize of border router in 6LoWPAN based on OpenWrt[J].Application of Electronic Technique,2017,43(6):68-70,74.
0 引言
6LoWPAN作為WSN和IPv6技術結合的產物,既繼承了IPv6巨大地址空間的優勢,又滿足了無線傳感網低功耗的要求,受到了越來越多無線傳感器網絡使用者的喜愛[1]。就6LoWPAN網絡自身特性而言,它應當和某些外部網絡互連,使外部網絡可以監測和控制6LoWPAN網絡才具有更實際的意義。而IP網絡作為目前的主流網絡,如何實現該網絡與6LoWPAN網絡的連通,是目前亟待解決的問題。
OpenWrt作為一個功能強大的開源路由器Linux系統,用戶可以很方便地對其進行定制、優化,從而實現自己的功能需求[2]。本文設計的基于OpenWrt的6LoWPAN邊界路由器,成功解決了6LoWPAN網絡與IP網絡之間異構網絡互通的問題,對于無線傳感網的發展及促進異構網絡之間的無縫融合具有深遠的意義。
1 系統架構
6LoWPAN邊界路由器作為連接IPv6網絡和6LoWPAN網絡的橋梁,需要同時提供兩種網絡的接入功能,以及數據包在兩種不同網絡之間的轉發和路由。本文設計的6LoWPAN邊界路由器的系統架構如圖1所示,主要包括底層硬件、設備驅動、操作系統及上層應用等幾部分。
該邊界路由器通過自身的以太網接口與IPv6網絡進行通信,而與6LoWPAN網絡之間的通信,則通過基于IEEE802.15.4的射頻模塊來實現。系統拓撲如圖2所示。
2 系統硬件設計
6LoWPAN邊界路由器主要用來幫助一些能力受限的6LoWPAN節點接入IPv6網絡,基于以上目的,該邊界路由設備在硬件設計上需具備較好的協議執行能力和一定的處理能力[3]。本文設計的6LoWPAN邊界路由器的硬件結構設計如圖3所示,主要包括以太網接入部分和6LoWPAN網絡接入部分,兩部分之間通過串口連接。
以太網接入部分主控芯片選用的是臺灣雷凌(Ralink)科技公司推出的一款高集成低成本SOC芯片RT5350F。該芯片是一顆高性能的MIPS 24Kc CPU內核,最高主頻為360 MHz,較高的主頻保證了一定的處理能力。除此之外,該部分采用16 MB Flash閃存作為程序存儲器,采用32 MB的16 bit SDRAM作為內存,可以嵌入完整的TCP/IP網絡協議,實現強大的網絡通信功能,同時還能有足夠的空間用于安裝程序以及依賴庫,滿足用戶的功能擴展需求。
由于RT5350只提供了IEEE802.11協議的射頻接口,而6LoWPAN協議目前是建立在IEEE802.15.4標準上,所以需要采用其他芯片來提供6LoWPAN網絡接入的功能支持。本文采用以CC2530F256芯片為主的射頻接入模塊及其外部功能拓展電路,提供向6LoWPAN網絡的接入。
3 系統軟件設計
為實現兩種異構網絡的互連,邊界路由器必須同時具有IPv6和6LoWPAN標準。雖然6LoWPAN協議是由IPv6協議轉變而來,但該協議具有自己的特殊性:它包含一個適配層來實現IP數據包在IEEE 802.15.4鏈路上的傳輸[4]。
由于IPv6數據包的最大傳輸單元為1 280 B,而IEEE802.15.4定義MAC層的每一幀的長度為127 B,這樣就會造成IPv6數據報和IEEE802.15.4幀在長度上的不匹配,許多IPv6數據包不能完整地放進一個IEEE802.15.4幀中進行傳輸[5]。為了解決這一問題,IPv6數據包需要在適配層進行分片和重組,同時還要對數據包的頭部進行壓縮,以適應IEEE802.15.4幀的大小[6]。
根據以上情況,對6LoWPAN邊界路由器協議棧部分進行了如圖4所示的設計:先分別實現IPv6和6LoWPAN協議棧,然后通過SLIP(Serial Line Internet Protocol)協議在兩種協議棧間建立一個串行通信鏈路,讓兩種異構網絡能夠通過該鏈路進行IP數據報的傳輸,從而實現兩種異構網絡之間的通信。
3.1 IPv6接入模塊
該模塊的建立主要采用OpenWrt操作系統來完成。該系統使用uClibc、busybox和shell解釋器等,通過嵌入式Linux工具,提供硬件抽象層和軟件包管理,系統的內部組成如圖5所示。用戶只需要重新編譯uClibc和軟件包以匹配目標架構,從而獲得在不同嵌入式設備上相同的應用程序。鑒于OpenWrt嵌入式系統的諸多優點,它非常適合應用于IP網絡接入模塊。
3.2 6LoWPAN接入模塊
6LoWPAN接入模塊主要是基于Contiki操作系統實現,該系統作為一個可以高度移植、支持多任務環境并且開源免費的嵌入式操作系統,非常適合用于6LoWPAN接入模塊的設計。該系統的軟件結構如圖6所示,主要由三部分組成:uIP協議棧、Rime協議棧和上層應用程序。
uIP是一個小型的符合RFC規范的TCP/IP協議棧,使得Contiki可以直接和Internet通信。uIP協議棧主要任務是處理由底層驅動收到的數據包,或者將需要轉發的數據包交由底層設備驅動來實現數據包轉發[7]。而其包含的網絡層RPL(IPv6 Routing Protocol for Low-Power and Lossy Network)協議,則提供了6LoWPAN的組網功能。
MAC層的Rime是一個輕量級的、為低功耗無線傳感器網絡設計的協議棧,該協議棧提供了大量的通信原語,能夠實現從簡單的一跳廣播通信到復雜的可靠多跳數據傳輸等通信功能[8]。
上層應用程序主要包括橋接程序和邊界路由程序。前者用于通過SLIP串口實現數據包向RPL接口的轉發,它是RPL數據收發轉換的中間層。后者負責向IP接入模塊請求本節點的子網前綴,初始化6LoWPAN接入模塊,并定時維護組建的6LoWPAN網絡。
3.3 兩種協議棧之間通道的建立
兩個協議棧之間通道的建立主要借助tun虛擬網卡驅動和SLIP協議來實現。其中,tun虛擬網卡驅動主要用來接收來自TCP/IP協議棧的網絡數據包并發送,或者反過來將接收到的網絡數據包傳給協議棧處理;同時該部分還要承擔在點對點設備傳輸過程中,對數據包進行相應封裝的任務。至于封裝格式,主要由點對點設備傳輸方式決定,本文采用的是SLIP協議,是在鏈路層上傳輸的串行線路網際協議,主要對要傳輸的IP數據包進行簡單的封裝,即加上相應的頭部和尾部,并對數據包進行適當的修改,防止頭部和尾部的誤判。
以上通道的建立主要在OpenWrt系統上實現,通過一個tunslip6程序來建立相應的虛擬網卡和SLIP封裝。具體的SLIP通道處理數據的流程可以用圖7來描述。
3.4 整個邊界路由的運行過程
當邊界路由器的射頻接口接收到了6LoWPAN子網發送來的比特流后, 先需要經過適配層對數據包進行分片整合,整合成一個完整的IPv6數據包。之后傳遞到網絡層,經由RPL路由協議判定數據包的目的地址是否是在6LoWPAN網絡中。如果是,則轉發數據包到6LoWPAN網絡中;如果不是,則繼續判斷數據包的目的地址前綴是否屬于6LoWPAN網絡。如果屬于,則因為沒有目的端的路由,丟棄;如果不屬于,則轉發到IPv6接入模塊。在IPv6接入模塊中,先判斷是否存在目的地址的路由,如果存在,則直接發送到相應的IPv6主機;如果不存在目的端的路由,則應進行鄰居發現操作,根據結果對數據包做出相應處理。整個過程如圖8所示。
該邊界路由器對以太網數據幀的處理流程與上述處理6LoWPAN數據包的過程相反,本文不再贅述。
4 測試
為了驗證本文設計的6LoWPAN邊界路由器是否能夠連通IPv6網絡和6LoWPAN網絡,進行了連通性測試。測試過程中除了邊界路由器外,還包括兩個6LoWPAN傳感器節點和一臺IPv6主機。
首先放置兩個傳感器節點在離邊界路由器10 m左右距離的位置,邊界路由器通過LAN口和IPv6主機連接。由于實驗室沒有提供IPv6網絡的接入,所以邊界路由器的WAN口暫不使用。之后在IPv6主機上分別對兩個傳感器節點進行ping命令測試。從測試結果可以看出,響應時間在30 ms內,并且數據包無丟失,能夠保證IPv6網絡和6LoWPAN網絡的數據的轉發和路由。
5 結論
本文提出了一種基于OpenWrt操作系統的6LoWPAN邊界路由器的實現方法,通過在邊界路由器上分別實現兩種協議棧,并在協議棧之間建立SLIP通道來實現數據包在兩種異構網絡之間的轉發和路由。通過對邊界路由器進行ping命令的測試,證明該方案是可行的,能夠實現6LoWPAN網絡和IPv6網絡主機之間的通信。而在現實應用中,可以作為物聯網設備接入互聯網的中間網關設備隨著物聯網設備的大量使用,該設備具有廣闊的應用前景。
參考文獻
[1] 錢志鴻,王義君.面向物聯網的無線傳感器網絡綜述[J].電子與信息學報,2013,35(1):215-227.
[2] 曹為華,凌強,張雷,等.基于OpenWrt系統路由器的模式切換與網頁設計[J].微型機與應用,2015,34(23):91-94.
[3] 田廣東,葉鑫.基于Contiki的6LoWPAN邊界路由器的設計[J].電子技術應用,2016,42(3):61-63.
[4] 梁少剛,周小龍.6LoWPAN邊界路由器應用研究與實現[J].廣東通信技術,2015,35(1):22-26.
[5] Zach Shelby,Samita Charabarti.Neighbor discovery optimization for IPv6 over low-power wireless personal area networs[S].IETF,RFC6775,2012.
[6] 張效奎.物聯網中輕量級IPv6協議的研究與應用[D].上海:東華大學,2013.
[7] 李鳳國.基于6LoWPAN的無線傳感器網絡研究與實現[D].南京:南京郵電大學,2013.
[8] SHELBY Z,CHAKRABARTI S,NORDMARK E,et al.Neighbor discovery optimization for IPv6 over low-power wireless personal area networks(6Lo WPANs)[S].IETF,RFC6775,2012.
作者信息:
吉福生1,2,王亞琛1,2,華 磊1,2
(1.重慶郵電大學 通信與信息工程學院,重慶400065;2.重慶高校市級光通信與網絡重點實驗室,重慶400065)