文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2017.06.017
中文引用格式: 吉福生,,王亞琛,華磊. 基于OpenWrt的6LoWPAN邊界路由器的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,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技術(shù)結(jié)合的產(chǎn)物,,既繼承了IPv6巨大地址空間的優(yōu)勢(shì),又滿足了無(wú)線傳感網(wǎng)低功耗的要求,,受到了越來(lái)越多無(wú)線傳感器網(wǎng)絡(luò)使用者的喜愛[1],。就6LoWPAN網(wǎng)絡(luò)自身特性而言,它應(yīng)當(dāng)和某些外部網(wǎng)絡(luò)互連,,使外部網(wǎng)絡(luò)可以監(jiān)測(cè)和控制6LoWPAN網(wǎng)絡(luò)才具有更實(shí)際的意義,。而IP網(wǎng)絡(luò)作為目前的主流網(wǎng)絡(luò),如何實(shí)現(xiàn)該網(wǎng)絡(luò)與6LoWPAN網(wǎng)絡(luò)的連通,,是目前亟待解決的問(wèn)題,。
OpenWrt作為一個(gè)功能強(qiáng)大的開源路由器Linux系統(tǒng),用戶可以很方便地對(duì)其進(jìn)行定制,、優(yōu)化,,從而實(shí)現(xiàn)自己的功能需求[2]。本文設(shè)計(jì)的基于OpenWrt的6LoWPAN邊界路由器,,成功解決了6LoWPAN網(wǎng)絡(luò)與IP網(wǎng)絡(luò)之間異構(gòu)網(wǎng)絡(luò)互通的問(wèn)題,,對(duì)于無(wú)線傳感網(wǎng)的發(fā)展及促進(jìn)異構(gòu)網(wǎng)絡(luò)之間的無(wú)縫融合具有深遠(yuǎn)的意義。
1 系統(tǒng)架構(gòu)
6LoWPAN邊界路由器作為連接IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò)的橋梁,需要同時(shí)提供兩種網(wǎng)絡(luò)的接入功能,,以及數(shù)據(jù)包在兩種不同網(wǎng)絡(luò)之間的轉(zhuǎn)發(fā)和路由,。本文設(shè)計(jì)的6LoWPAN邊界路由器的系統(tǒng)架構(gòu)如圖1所示,主要包括底層硬件,、設(shè)備驅(qū)動(dòng),、操作系統(tǒng)及上層應(yīng)用等幾部分。
該邊界路由器通過(guò)自身的以太網(wǎng)接口與IPv6網(wǎng)絡(luò)進(jìn)行通信,,而與6LoWPAN網(wǎng)絡(luò)之間的通信,則通過(guò)基于IEEE802.15.4的射頻模塊來(lái)實(shí)現(xiàn),。系統(tǒng)拓?fù)淙鐖D2所示,。
2 系統(tǒng)硬件設(shè)計(jì)
6LoWPAN邊界路由器主要用來(lái)幫助一些能力受限的6LoWPAN節(jié)點(diǎn)接入IPv6網(wǎng)絡(luò),基于以上目的,,該邊界路由設(shè)備在硬件設(shè)計(jì)上需具備較好的協(xié)議執(zhí)行能力和一定的處理能力[3],。本文設(shè)計(jì)的6LoWPAN邊界路由器的硬件結(jié)構(gòu)設(shè)計(jì)如圖3所示,主要包括以太網(wǎng)接入部分和6LoWPAN網(wǎng)絡(luò)接入部分,,兩部分之間通過(guò)串口連接,。
以太網(wǎng)接入部分主控芯片選用的是臺(tái)灣雷凌(Ralink)科技公司推出的一款高集成低成本SOC芯片RT5350F。該芯片是一顆高性能的MIPS 24Kc CPU內(nèi)核,,最高主頻為360 MHz,,較高的主頻保證了一定的處理能力。除此之外,,該部分采用16 MB Flash閃存作為程序存儲(chǔ)器,,采用32 MB的16 bit SDRAM作為內(nèi)存,可以嵌入完整的TCP/IP網(wǎng)絡(luò)協(xié)議,,實(shí)現(xiàn)強(qiáng)大的網(wǎng)絡(luò)通信功能,,同時(shí)還能有足夠的空間用于安裝程序以及依賴庫(kù),滿足用戶的功能擴(kuò)展需求,。
由于RT5350只提供了IEEE802.11協(xié)議的射頻接口,,而6LoWPAN協(xié)議目前是建立在IEEE802.15.4標(biāo)準(zhǔn)上,所以需要采用其他芯片來(lái)提供6LoWPAN網(wǎng)絡(luò)接入的功能支持,。本文采用以CC2530F256芯片為主的射頻接入模塊及其外部功能拓展電路,,提供向6LoWPAN網(wǎng)絡(luò)的接入。
3 系統(tǒng)軟件設(shè)計(jì)
為實(shí)現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)的互連,,邊界路由器必須同時(shí)具有IPv6和6LoWPAN標(biāo)準(zhǔn),。雖然6LoWPAN協(xié)議是由IPv6協(xié)議轉(zhuǎn)變而來(lái),但該協(xié)議具有自己的特殊性:它包含一個(gè)適配層來(lái)實(shí)現(xiàn)IP數(shù)據(jù)包在IEEE 802.15.4鏈路上的傳輸[4],。
由于IPv6數(shù)據(jù)包的最大傳輸單元為1 280 B,,而IEEE802.15.4定義MAC層的每一幀的長(zhǎng)度為127 B,這樣就會(huì)造成IPv6數(shù)據(jù)報(bào)和IEEE802.15.4幀在長(zhǎng)度上的不匹配,許多IPv6數(shù)據(jù)包不能完整地放進(jìn)一個(gè)IEEE802.15.4幀中進(jìn)行傳輸[5],。為了解決這一問(wèn)題,,IPv6數(shù)據(jù)包需要在適配層進(jìn)行分片和重組,同時(shí)還要對(duì)數(shù)據(jù)包的頭部進(jìn)行壓縮,,以適應(yīng)IEEE802.15.4幀的大小[6],。
根據(jù)以上情況,對(duì)6LoWPAN邊界路由器協(xié)議棧部分進(jìn)行了如圖4所示的設(shè)計(jì):先分別實(shí)現(xiàn)IPv6和6LoWPAN協(xié)議棧,,然后通過(guò)SLIP(Serial Line Internet Protocol)協(xié)議在兩種協(xié)議棧間建立一個(gè)串行通信鏈路,,讓兩種異構(gòu)網(wǎng)絡(luò)能夠通過(guò)該鏈路進(jìn)行IP數(shù)據(jù)報(bào)的傳輸,從而實(shí)現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)之間的通信,。
3.1 IPv6接入模塊
該模塊的建立主要采用OpenWrt操作系統(tǒng)來(lái)完成,。該系統(tǒng)使用uClibc、busybox和shell解釋器等,,通過(guò)嵌入式Linux工具,,提供硬件抽象層和軟件包管理,系統(tǒng)的內(nèi)部組成如圖5所示,。用戶只需要重新編譯uClibc和軟件包以匹配目標(biāo)架構(gòu),,從而獲得在不同嵌入式設(shè)備上相同的應(yīng)用程序。鑒于OpenWrt嵌入式系統(tǒng)的諸多優(yōu)點(diǎn),,它非常適合應(yīng)用于IP網(wǎng)絡(luò)接入模塊,。
3.2 6LoWPAN接入模塊
6LoWPAN接入模塊主要是基于Contiki操作系統(tǒng)實(shí)現(xiàn),該系統(tǒng)作為一個(gè)可以高度移植,、支持多任務(wù)環(huán)境并且開源免費(fèi)的嵌入式操作系統(tǒng),,非常適合用于6LoWPAN接入模塊的設(shè)計(jì)。該系統(tǒng)的軟件結(jié)構(gòu)如圖6所示,,主要由三部分組成:uIP協(xié)議棧,、Rime協(xié)議棧和上層應(yīng)用程序。
uIP是一個(gè)小型的符合RFC規(guī)范的TCP/IP協(xié)議棧,,使得Contiki可以直接和Internet通信,。uIP協(xié)議棧主要任務(wù)是處理由底層驅(qū)動(dòng)收到的數(shù)據(jù)包,或者將需要轉(zhuǎn)發(fā)的數(shù)據(jù)包交由底層設(shè)備驅(qū)動(dòng)來(lái)實(shí)現(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是一個(gè)輕量級(jí)的,、為低功耗無(wú)線傳感器網(wǎng)絡(luò)設(shè)計(jì)的協(xié)議棧,,該協(xié)議棧提供了大量的通信原語(yǔ),能夠?qū)崿F(xiàn)從簡(jiǎn)單的一跳廣播通信到復(fù)雜的可靠多跳數(shù)據(jù)傳輸?shù)韧ㄐ殴δ?sup>[8],。
上層應(yīng)用程序主要包括橋接程序和邊界路由程序,。前者用于通過(guò)SLIP串口實(shí)現(xiàn)數(shù)據(jù)包向RPL接口的轉(zhuǎn)發(fā),,它是RPL數(shù)據(jù)收發(fā)轉(zhuǎn)換的中間層。后者負(fù)責(zé)向IP接入模塊請(qǐng)求本節(jié)點(diǎn)的子網(wǎng)前綴,,初始化6LoWPAN接入模塊,,并定時(shí)維護(hù)組建的6LoWPAN網(wǎng)絡(luò)。
3.3 兩種協(xié)議棧之間通道的建立
兩個(gè)協(xié)議棧之間通道的建立主要借助tun虛擬網(wǎng)卡驅(qū)動(dòng)和SLIP協(xié)議來(lái)實(shí)現(xiàn),。其中,,tun虛擬網(wǎng)卡驅(qū)動(dòng)主要用來(lái)接收來(lái)自TCP/IP協(xié)議棧的網(wǎng)絡(luò)數(shù)據(jù)包并發(fā)送,或者反過(guò)來(lái)將接收到的網(wǎng)絡(luò)數(shù)據(jù)包傳給協(xié)議棧處理,;同時(shí)該部分還要承擔(dān)在點(diǎn)對(duì)點(diǎn)設(shè)備傳輸過(guò)程中,,對(duì)數(shù)據(jù)包進(jìn)行相應(yīng)封裝的任務(wù)。至于封裝格式,,主要由點(diǎn)對(duì)點(diǎn)設(shè)備傳輸方式?jīng)Q定,,本文采用的是SLIP協(xié)議,是在鏈路層上傳輸?shù)拇芯€路網(wǎng)際協(xié)議,,主要對(duì)要傳輸?shù)腎P數(shù)據(jù)包進(jìn)行簡(jiǎn)單的封裝,即加上相應(yīng)的頭部和尾部,,并對(duì)數(shù)據(jù)包進(jìn)行適當(dāng)?shù)男薷?,防止頭部和尾部的誤判。
以上通道的建立主要在OpenWrt系統(tǒng)上實(shí)現(xiàn),,通過(guò)一個(gè)tunslip6程序來(lái)建立相應(yīng)的虛擬網(wǎng)卡和SLIP封裝,。具體的SLIP通道處理數(shù)據(jù)的流程可以用圖7來(lái)描述。
3.4 整個(gè)邊界路由的運(yùn)行過(guò)程
當(dāng)邊界路由器的射頻接口接收到了6LoWPAN子網(wǎng)發(fā)送來(lái)的比特流后,, 先需要經(jīng)過(guò)適配層對(duì)數(shù)據(jù)包進(jìn)行分片整合,,整合成一個(gè)完整的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ò)。如果屬于,,則因?yàn)闆]有目的端的路由,,丟棄;如果不屬于,,則轉(zhuǎn)發(fā)到IPv6接入模塊,。在IPv6接入模塊中,先判斷是否存在目的地址的路由,,如果存在,,則直接發(fā)送到相應(yīng)的IPv6主機(jī);如果不存在目的端的路由,則應(yīng)進(jìn)行鄰居發(fā)現(xiàn)操作,,根據(jù)結(jié)果對(duì)數(shù)據(jù)包做出相應(yīng)處理,。整個(gè)過(guò)程如圖8所示。
該邊界路由器對(duì)以太網(wǎng)數(shù)據(jù)幀的處理流程與上述處理6LoWPAN數(shù)據(jù)包的過(guò)程相反,,本文不再贅述,。
4 測(cè)試
為了驗(yàn)證本文設(shè)計(jì)的6LoWPAN邊界路由器是否能夠連通IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò),進(jìn)行了連通性測(cè)試,。測(cè)試過(guò)程中除了邊界路由器外,,還包括兩個(gè)6LoWPAN傳感器節(jié)點(diǎn)和一臺(tái)IPv6主機(jī)。
首先放置兩個(gè)傳感器節(jié)點(diǎn)在離邊界路由器10 m左右距離的位置,,邊界路由器通過(guò)LAN口和IPv6主機(jī)連接,。由于實(shí)驗(yàn)室沒有提供IPv6網(wǎng)絡(luò)的接入,所以邊界路由器的WAN口暫不使用,。之后在IPv6主機(jī)上分別對(duì)兩個(gè)傳感器節(jié)點(diǎn)進(jìn)行ping命令測(cè)試,。從測(cè)試結(jié)果可以看出,響應(yīng)時(shí)間在30 ms內(nèi),,并且數(shù)據(jù)包無(wú)丟失,,能夠保證IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò)的數(shù)據(jù)的轉(zhuǎn)發(fā)和路由。
5 結(jié)論
本文提出了一種基于OpenWrt操作系統(tǒng)的6LoWPAN邊界路由器的實(shí)現(xiàn)方法,,通過(guò)在邊界路由器上分別實(shí)現(xiàn)兩種協(xié)議棧,,并在協(xié)議棧之間建立SLIP通道來(lái)實(shí)現(xiàn)數(shù)據(jù)包在兩種異構(gòu)網(wǎng)絡(luò)之間的轉(zhuǎn)發(fā)和路由。通過(guò)對(duì)邊界路由器進(jìn)行ping命令的測(cè)試,,證明該方案是可行的,,能夠?qū)崿F(xiàn)6LoWPAN網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)主機(jī)之間的通信。而在現(xiàn)實(shí)應(yīng)用中,,可以作為物聯(lián)網(wǎng)設(shè)備接入互聯(lián)網(wǎng)的中間網(wǎng)關(guān)設(shè)備隨著物聯(lián)網(wǎng)設(shè)備的大量使用,,該設(shè)備具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1] 錢志鴻,,王義君.面向物聯(lián)網(wǎng)的無(wú)線傳感器網(wǎng)絡(luò)綜述[J].電子與信息學(xué)報(bào),,2013,35(1):215-227.
[2] 曹為華,,凌強(qiáng),,張雷,等.基于OpenWrt系統(tǒng)路由器的模式切換與網(wǎng)頁(yè)設(shè)計(jì)[J].微型機(jī)與應(yīng)用,,2015,,34(23):91-94.
[3] 田廣東,葉鑫.基于Contiki的6LoWPAN邊界路由器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,,2016,,42(3):61-63.
[4] 梁少剛,,周小龍.6LoWPAN邊界路由器應(yīng)用研究與實(shí)現(xiàn)[J].廣東通信技術(shù),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] 張效奎.物聯(lián)網(wǎng)中輕量級(jí)IPv6協(xié)議的研究與應(yīng)用[D].上海:東華大學(xué),,2013.
[7] 李鳳國(guó).基于6LoWPAN的無(wú)線傳感器網(wǎng)絡(luò)研究與實(shí)現(xiàn)[D].南京:南京郵電大學(xué),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.重慶郵電大學(xué) 通信與信息工程學(xué)院,,重慶400065;2.重慶高校市級(jí)光通信與網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,,重慶400065)