《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于OpenWrt的6LoWPAN邊界路由器的實(shí)現(xiàn)
基于OpenWrt的6LoWPAN邊界路由器的實(shí)現(xiàn)
2017年電子技術(shù)應(yīng)用第6期
吉福生1,2,王亞琛1,2,華 磊1,2
1.重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065;2.重慶高校市級(jí)光通信與網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,重慶400065
摘要: OpenWrt作為一個(gè)高度模塊化、自動(dòng)化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組建和擴(kuò)展性?;谠撓到y(tǒng),提出了一種6LoWPAN邊界路由器的設(shè)計(jì)方案。通過(guò)在邊界路由器上分別搭建兩種協(xié)議棧,實(shí)現(xiàn)對(duì)于IPv6和6LoWPAN網(wǎng)絡(luò)的接入;之后在協(xié)議棧之間建立SLIP通道,實(shí)現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)之間的通信。借助OpenWrt系統(tǒng)強(qiáng)大的路由功能和包管理機(jī)制,該邊界路由器可以直接接入IPv6網(wǎng)絡(luò),并具備極強(qiáng)的拓展性。
中圖分類(lèi)號(hào): TN923
文獻(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.
The realize of border router in 6LoWPAN based on OpenWrt
Ji Fusheng1,2,Wang Yachen1,2,Hua Lei1,2
1.School of Telecommunication and Information,Chongqing University of Posts and Telecommunications,Chongqing 400065,China; 2.Optical Communication and Network Key Laboratory of Chongqing,Chongqing 400065,China
Abstract: OpenWrt is a highly modular and automatic embedded Linux system. It includes effective network components for network forming and extensibility. Based on OpenWrt, a design scheme of the 6LoWPAN border router is presented. In order to gain access to both IPv6 and 6LoWPAN, two kinds of protocol are designed respectively on the border router. Through the establishment of a SLIP channel between two protocol stacks,communication between the heterogeneous networks is realized. Owing to the powerful routing function and strong packet management mechanism of OpenWrt system, this border router has direct access to IPv6 network and its scalability is good.
Key words : OpenWrt;6LoWPAN border router;6LoWPAN;IPv6

0 引言

    6LoWPAN作為WSN和IPv6技術(shù)結(jié)合的產(chǎn)物,既繼承了IPv6巨大地址空間的優(yōu)勢(shì),又滿(mǎn)足了無(wú)線(xiàn)傳感網(wǎng)低功耗的要求,受到了越來(lái)越多無(wú)線(xiàn)傳感器網(wǎng)絡(luò)使用者的喜愛(ài)[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)大的開(kāi)源路由器Linux系統(tǒng),用戶(hù)可以很方便地對(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ú)線(xiàn)傳感網(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)用等幾部分。

qrs3-t1.gif

    該邊界路由器通過(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所示。

qrs3-t2.gif

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ò)串口連接。

qrs3-t3.gif

    以太網(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í)還能有足夠的空間用于安裝程序以及依賴(lài)庫(kù),滿(mǎn)足用戶(hù)的功能擴(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ò)之間的通信。

qrs3-t4.gif

3.1 IPv6接入模塊

    該模塊的建立主要采用OpenWrt操作系統(tǒng)來(lái)完成。該系統(tǒng)使用uClibc、busybox和shell解釋器等,通過(guò)嵌入式Linux工具,提供硬件抽象層和軟件包管理,系統(tǒng)的內(nèi)部組成如圖5所示。用戶(hù)只需要重新編譯uClibc和軟件包以匹配目標(biāo)架構(gòu),從而獲得在不同嵌入式設(shè)備上相同的應(yīng)用程序。鑒于OpenWrt嵌入式系統(tǒng)的諸多優(yōu)點(diǎn),它非常適合應(yīng)用于IP網(wǎng)絡(luò)接入模塊。

qrs3-t5.gif

3.2 6LoWPAN接入模塊

    6LoWPAN接入模塊主要是基于Contiki操作系統(tǒng)實(shí)現(xiàn),該系統(tǒng)作為一個(gè)可以高度移植、支持多任務(wù)環(huán)境并且開(kāi)源免費(fèi)的嵌入式操作系統(tǒng),非常適合用于6LoWPAN接入模塊的設(shè)計(jì)。該系統(tǒng)的軟件結(jié)構(gòu)如圖6所示,主要由三部分組成:uIP協(xié)議棧、Rime協(xié)議棧和上層應(yīng)用程序。

qrs3-t6.gif

    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ú)線(xiàn)傳感器網(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ù)拇芯€(xiàn)路網(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)描述。

qrs3-t7.gif

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)闆](méi)有目的端的路由,丟棄;如果不屬于,則轉(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所示。

qrs3-t8.gif

    該邊界路由器對(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)室沒(méi)有提供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] 錢(qián)志鴻,王義君.面向物聯(lián)網(wǎng)的無(wú)線(xiàn)傳感器網(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ú)線(xiàn)傳感器網(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)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。