OpenWrt 可以被描述為一個嵌入式的 Linux 發(fā)行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個單一的、靜態(tài)的系統(tǒng)。OpenWrt的包管理提供了一個完全可寫的文件系統(tǒng),從應(yīng)用程序供應(yīng)商提供的選擇和配置,并允許您自定義的設(shè)備,以適應(yīng)任何應(yīng)用程序。
對于開發(fā)人員,OpenWrt 是使用框架來構(gòu)建應(yīng)用程序,而無需建立一個完整的固件來支持;對于用戶來說,這意味著其擁有完全定制的能力,可以用前所未有的方式使用該設(shè)備。
6LoWPAN是一種基于IPv6的低速無線個域網(wǎng)標準,即IPv6 over IEEE 802.15.4。
將IP協(xié)議引入無線通信網(wǎng)絡(luò)一直被認為是不現(xiàn)實的(不是完全不可能)。迄今為止,無線網(wǎng)只采用專用協(xié)議,因為IP協(xié)議對內(nèi)存和帶寬要求較高,要降低它的運行環(huán)境要求以適應(yīng)微控制器及低功率無線連接很困難。
基于IEEE 802.15.4實現(xiàn)IPv6通信的IETF 6LoWPAN[1] 草案標準的發(fā)布有望改變這一局面。6LoWPAN所具有的低功率運行的潛力使它很適合應(yīng)用在從手持機到儀器的設(shè)備中,而其對AES-128加密的內(nèi)置支持為強健的認證和安全性打下了基礎(chǔ)。
IEEE 802.15.4標準設(shè)計用于開發(fā)可以靠電池運行1到5年的緊湊型低功率廉價嵌入式設(shè)備(如傳感器)。該標準使用工作在2.4GHz頻段的無線電收發(fā)器傳送信息,使用的頻帶與Wi-Fi相同,但其射頻發(fā)射功率大約只有Wi-Fi的1%。這限制了IEEE 802.15.4設(shè)備的傳輸距離,因此,多臺設(shè)備必須一起工作才能在更長的距離上逐跳傳送信息和繞過障礙物。
基于OpenWrt的6LoWPAN邊界路由器的實現(xiàn)
6LoWPAN作為WSN和IPv6技術(shù)結(jié)合的產(chǎn)物,既繼承了IPv6巨大地址空間的優(yōu)勢,又滿足了無線傳感網(wǎng)低功耗的要求,受到了越來越多無線傳感器網(wǎng)絡(luò)使用者的喜愛[1]。就6LoWPAN網(wǎng)絡(luò)自身特性而言,它應(yīng)當(dāng)和某些外部網(wǎng)絡(luò)互連,使外部網(wǎng)絡(luò)可以監(jiān)測和控制6LoWPAN網(wǎng)絡(luò)才具有更實際的意義。而IP網(wǎng)絡(luò)作為目前的主流網(wǎng)絡(luò),如何實現(xiàn)該網(wǎng)絡(luò)與6LoWPAN網(wǎng)絡(luò)的連通,是目前亟待解決的問題。
OpenWrt作為一個功能強大的開源路由器Linux系統(tǒng),用戶可以很方便地對其進行定制、優(yōu)化,從而實現(xiàn)自己的功能需求[2]。本文設(shè)計的基于OpenWrt的6LoWPAN邊界路由器,成功解決了6LoWPAN網(wǎng)絡(luò)與IP網(wǎng)絡(luò)之間異構(gòu)網(wǎng)絡(luò)互通的問題,對于無線傳感網(wǎng)的發(fā)展及促進異構(gòu)網(wǎng)絡(luò)之間的無縫融合具有深遠的意義。
1 系統(tǒng)架構(gòu)
6LoWPAN邊界路由器作為連接IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò)的橋梁,需要同時提供兩種網(wǎng)絡(luò)的接入功能,以及數(shù)據(jù)包在兩種不同網(wǎng)絡(luò)之間的轉(zhuǎn)發(fā)和路由。本文設(shè)計的6LoWPAN邊界路由器的系統(tǒng)架構(gòu)如圖1所示,主要包括底層硬件、設(shè)備驅(qū)動、操作系統(tǒng)及上層應(yīng)用等幾部分。
該邊界路由器通過自身的以太網(wǎng)接口與IPv6網(wǎng)絡(luò)進行通信,而與6LoWPAN網(wǎng)絡(luò)之間的通信,則通過基于IEEE802.15.4的射頻模塊來實現(xiàn)。系統(tǒng)拓撲如圖2所示。
2 系統(tǒng)硬件設(shè)計
6LoWPAN邊界路由器主要用來幫助一些能力受限的6LoWPAN節(jié)點接入IPv6網(wǎng)絡(luò),基于以上目的,該邊界路由設(shè)備在硬件設(shè)計上需具備較好的協(xié)議執(zhí)行能力和一定的處理能力[3]。本文設(shè)計的6LoWPAN邊界路由器的硬件結(jié)構(gòu)設(shè)計如圖3所示,主要包括以太網(wǎng)接入部分和6LoWPAN網(wǎng)絡(luò)接入部分,兩部分之間通過串口連接。
以太網(wǎng)接入部分主控芯片選用的是***雷凌(Ralink)科技公司推出的一款高集成低成本SOC芯片RT5350F。該芯片是一顆高性能的MIPS 24Kc CPU內(nèi)核,最高主頻為360 MHz,較高的主頻保證了一定的處理能力。除此之外,該部分采用16 MB Flash閃存作為程序存儲器,采用32 MB的16 bit SDRAM作為內(nèi)存,可以嵌入完整的TCP/IP網(wǎng)絡(luò)協(xié)議,實現(xiàn)強大的網(wǎng)絡(luò)通信功能,同時還能有足夠的空間用于安裝程序以及依賴庫,滿足用戶的功能擴展需求。
由于RT5350只提供了IEEE802.11協(xié)議的射頻接口,而6LoWPAN協(xié)議目前是建立在IEEE802.15.4標準上,所以需要采用其他芯片來提供6LoWPAN網(wǎng)絡(luò)接入的功能支持。本文采用以CC2530F256芯片為主的射頻接入模塊及其外部功能拓展電路,提供向6LoWPAN網(wǎng)絡(luò)的接入。
3 系統(tǒng)軟件設(shè)計
為實現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)的互連,邊界路由器必須同時具有IPv6和6LoWPAN標準。雖然6LoWPAN協(xié)議是由IPv6協(xié)議轉(zhuǎn)變而來,但該協(xié)議具有自己的特殊性:它包含一個適配層來實現(xiàn)IP數(shù)據(jù)包在IEEE 802.15.4鏈路上的傳輸[4]。
由于IPv6數(shù)據(jù)包的最大傳輸單元為1 280 B,而IEEE802.15.4定義MAC層的每一幀的長度為127 B,這樣就會造成IPv6數(shù)據(jù)報和IEEE802.15.4幀在長度上的不匹配,許多IPv6數(shù)據(jù)包不能完整地放進一個IEEE802.15.4幀中進行傳輸[5]。為了解決這一問題,IPv6數(shù)據(jù)包需要在適配層進行分片和重組,同時還要對數(shù)據(jù)包的頭部進行壓縮,以適應(yīng)IEEE802.15.4幀的大小[6]。
根據(jù)以上情況,對6LoWPAN邊界路由器協(xié)議棧部分進行了如圖4所示的設(shè)計:先分別實現(xiàn)IPv6和6LoWPAN協(xié)議棧,然后通過SLIP(Serial Line Internet Protocol)協(xié)議在兩種協(xié)議棧間建立一個串行通信鏈路,讓兩種異構(gòu)網(wǎng)絡(luò)能夠通過該鏈路進行IP數(shù)據(jù)報的傳輸,從而實現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)之間的通信。
3.1 IPv6接入模塊
該模塊的建立主要采用OpenWrt操作系統(tǒng)來完成。該系統(tǒng)使用uClibc、busybox和shell解釋器等,通過嵌入式Linux工具,提供硬件抽象層和軟件包管理,系統(tǒng)的內(nèi)部組成如圖5所示。用戶只需要重新編譯uClibc和軟件包以匹配目標架構(gòu),從而獲得在不同嵌入式設(shè)備上相同的應(yīng)用程序。鑒于OpenWrt嵌入式系統(tǒng)的諸多優(yōu)點,它非常適合應(yīng)用于IP網(wǎng)絡(luò)接入模塊。
3.2 6LoWPAN接入模塊
6LoWPAN接入模塊主要是基于Contiki操作系統(tǒng)實現(xiàn),該系統(tǒng)作為一個可以高度移植、支持多任務(wù)環(huán)境并且開源免費的嵌入式操作系統(tǒng),非常適合用于6LoWPAN接入模塊的設(shè)計。該系統(tǒng)的軟件結(jié)構(gòu)如圖6所示,主要由三部分組成:uIP協(xié)議棧、Rime協(xié)議棧和上層應(yīng)用程序。
uIP是一個小型的符合RFC規(guī)范的TCP/IP協(xié)議棧,使得Contiki可以直接和Internet通信。uIP協(xié)議棧主要任務(wù)是處理由底層驅(qū)動收到的數(shù)據(jù)包,或者將需要轉(zhuǎn)發(fā)的數(shù)據(jù)包交由底層設(shè)備驅(qū)動來實現(xiàn)數(shù)據(jù)包轉(zhuǎn)發(fā)[7]。而其包含的網(wǎng)絡(luò)層RPL(IPv6 Routing Protocol for Low-Power and Lossy Network)協(xié)議,則提供了6LoWPAN的組網(wǎng)功能。
MAC層的Rime是一個輕量級的、為低功耗無線傳感器網(wǎng)絡(luò)設(shè)計的協(xié)議棧,該協(xié)議棧提供了大量的通信原語,能夠?qū)崿F(xiàn)從簡單的一跳廣播通信到復(fù)雜的可靠多跳數(shù)據(jù)傳輸?shù)韧ㄐ殴δ埽?]。
上層應(yīng)用程序主要包括橋接程序和邊界路由程序。前者用于通過SLIP串口實現(xiàn)數(shù)據(jù)包向RPL接口的轉(zhuǎn)發(fā),它是RPL數(shù)據(jù)收發(fā)轉(zhuǎn)換的中間層。后者負責(zé)向IP接入模塊請求本節(jié)點的子網(wǎng)前綴,初始化6LoWPAN接入模塊,并定時維護組建的6LoWPAN網(wǎng)絡(luò)。
3.3 兩種協(xié)議棧之間通道的建立
兩個協(xié)議棧之間通道的建立主要借助tun虛擬網(wǎng)卡驅(qū)動和SLIP協(xié)議來實現(xiàn)。其中,tun虛擬網(wǎng)卡驅(qū)動主要用來接收來自TCP/IP協(xié)議棧的網(wǎng)絡(luò)數(shù)據(jù)包并發(fā)送,或者反過來將接收到的網(wǎng)絡(luò)數(shù)據(jù)包傳給協(xié)議棧處理;同時該部分還要承擔(dān)在點對點設(shè)備傳輸過程中,對數(shù)據(jù)包進行相應(yīng)封裝的任務(wù)。至于封裝格式,主要由點對點設(shè)備傳輸方式?jīng)Q定,本文采用的是SLIP協(xié)議,是在鏈路層上傳輸?shù)拇芯€路網(wǎng)際協(xié)議,主要對要傳輸?shù)腎P數(shù)據(jù)包進行簡單的封裝,即加上相應(yīng)的頭部和尾部,并對數(shù)據(jù)包進行適當(dāng)?shù)男薷模乐诡^部和尾部的誤判。
以上通道的建立主要在OpenWrt系統(tǒng)上實現(xiàn),通過一個tunslip6程序來建立相應(yīng)的虛擬網(wǎng)卡和SLIP封裝。具體的SLIP通道處理數(shù)據(jù)的流程可以用圖7來描述。
3.4 整個邊界路由的運行過程
當(dāng)邊界路由器的射頻接口接收到了6LoWPAN子網(wǎng)發(fā)送來的比特流后, 先需要經(jīng)過適配層對數(shù)據(jù)包進行分片整合,整合成一個完整的IPv6數(shù)據(jù)包。之后傳遞到網(wǎng)絡(luò)層,經(jīng)由RPL路由協(xié)議判定數(shù)據(jù)包的目的地址是否是在6LoWPAN網(wǎng)絡(luò)中。如果是,則轉(zhuǎn)發(fā)數(shù)據(jù)包到6LoWPAN網(wǎng)絡(luò)中;如果不是,則繼續(xù)判斷數(shù)據(jù)包的目的地址前綴是否屬于6LoWPAN網(wǎng)絡(luò)。如果屬于,則因為沒有目的端的路由,丟棄;如果不屬于,則轉(zhuǎn)發(fā)到IPv6接入模塊。在IPv6接入模塊中,先判斷是否存在目的地址的路由,如果存在,則直接發(fā)送到相應(yīng)的IPv6主機;如果不存在目的端的路由,則應(yīng)進行鄰居發(fā)現(xiàn)操作,根據(jù)結(jié)果對數(shù)據(jù)包做出相應(yīng)處理。整個過程如圖8所示。
該邊界路由器對以太網(wǎng)數(shù)據(jù)幀的處理流程與上述處理6LoWPAN數(shù)據(jù)包的過程相反,本文不再贅述。
4 測試
為了驗證本文設(shè)計的6LoWPAN邊界路由器是否能夠連通IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò),進行了連通性測試。測試過程中除了邊界路由器外,還包括兩個6LoWPAN傳感器節(jié)點和一臺IPv6主機。
首先放置兩個傳感器節(jié)點在離邊界路由器10 m左右距離的位置,邊界路由器通過LAN口和IPv6主機連接。由于實驗室沒有提供IPv6網(wǎng)絡(luò)的接入,所以邊界路由器的WAN口暫不使用。之后在IPv6主機上分別對兩個傳感器節(jié)點進行ping命令測試。從測試結(jié)果可以看出,響應(yīng)時間在30 ms內(nèi),并且數(shù)據(jù)包無丟失,能夠保證IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò)的數(shù)據(jù)的轉(zhuǎn)發(fā)和路由。
5 結(jié)論
本文提出了一種基于OpenWrt操作系統(tǒng)的6LoWPAN邊界路由器的實現(xiàn)方法,通過在邊界路由器上分別實現(xiàn)兩種協(xié)議棧,并在協(xié)議棧之間建立SLIP通道來實現(xiàn)數(shù)據(jù)包在兩種異構(gòu)網(wǎng)絡(luò)之間的轉(zhuǎn)發(fā)和路由。通過對邊界路由器進行ping命令的測試,證明該方案是可行的,能夠?qū)崿F(xiàn)6LoWPAN網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)主機之間的通信。而在現(xiàn)實應(yīng)用中,可以作為物聯(lián)網(wǎng)設(shè)備接入互聯(lián)網(wǎng)的中間網(wǎng)關(guān)設(shè)備隨著物聯(lián)網(wǎng)設(shè)備的大量使用,該設(shè)備具有廣闊的應(yīng)用前景。
評論
查看更多