《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于多個(gè)開(kāi)源系統(tǒng)的6LoWPAN邊界路由器的設(shè)計(jì)
基于多個(gè)開(kāi)源系統(tǒng)的6LoWPAN邊界路由器的設(shè)計(jì)
2018年電子技術(shù)應(yīng)用第7期
鄔明彪1,2,吳桂清1,陳清華2
1.湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙410082;2.浙江清華長(zhǎng)三角研究院,浙江 嘉興314006
摘要: 在開(kāi)源系統(tǒng)OpenWrt基礎(chǔ)上,開(kāi)發(fā)應(yīng)用程序socket-support,并將6LBR移植到OpenWrt上。以TP-link的TL-WR703N芯片和TI公司生產(chǎn)的低功耗CC1310芯片作為核心硬件平臺(tái),基于Contiki、6LBR與OpenWrt系統(tǒng)設(shè)計(jì)了一種6LoWPAN邊界路由器。同時(shí)采用CC1310芯片設(shè)計(jì)了兩個(gè)6LoWPAN子節(jié)點(diǎn),搭建了一個(gè)包含PC、子節(jié)點(diǎn)和邊界路由器在內(nèi)的物聯(lián)網(wǎng)應(yīng)用測(cè)試網(wǎng)絡(luò)。測(cè)試結(jié)果表明,PC端可利用CoAP協(xié)議通過(guò)邊界路由器實(shí)現(xiàn)對(duì)6LoWPAN子節(jié)點(diǎn)的數(shù)據(jù)采集與控制,可以應(yīng)用于工業(yè)控制、環(huán)境檢測(cè)、智能家居等多種場(chǎng)合,具有一定的應(yīng)用價(jià)值。
關(guān)鍵詞: OpenWrt 6LBR Contiki 邊界路由器
中圖分類號(hào): TN923
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.175198
中文引用格式: 鄔明彪,吳桂清,陳清華. 基于多個(gè)開(kāi)源系統(tǒng)的6LoWPAN邊界路由器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2018,44(7):64-67.
英文引用格式: Wu Mingbiao,Wu Guiqing,Chen Qinghua. Design of 6LoWPAN border router based on multiple open source system[J]. Application of Electronic Technique,2018,44(7):64-67.
Design of 6LoWPAN border router based on multiple open source system
Wu Mingbiao1,2,Wu Guiqing1,Chen Qinghua2
1.College of Electrical and Information Engineering,Hunan University,Changsha 410082,China; 2.Insitute of Information Technology,Yangtze Delta Region Institute of Tsinghua University,Jiaxing 314006,China
Abstract: Based on the open source system of OpenWrt,it develops application socket-support,and ports the 6LoWPAN/RPL border router(6LBR) to the OpenWrt. It Choses TL-WR703N SoC and CC1310DK as the core handware platforms, and relys on Contiki,6LBR and OpenWrt, to design a 6LoWPAN border router. Meantime,it uses lowpower CC1310 chips produced by TI company to design two 6LoWPAN sub nodes,and buids a testing network of Internet of Things, including a PC, two 6LoWPAN nodes and a 6LoWPAN border router. The result shows that PC terminal can use CoAP protocol to realize the data acquisition and control of the 6LoWPAN node.This 6LoWPAN border router can be applied to some seenarios such as industrial control, environmmental monitoring, smart home and so on, and it has the certain application value.
Key words : OpenWrt;6LBR;Contiki;border router

0 引言

    自從物聯(lián)網(wǎng)概念的提出,6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)邊界路由器就是主要的研究?jī)?nèi)容之一。為實(shí)現(xiàn)Internet網(wǎng)絡(luò)與無(wú)線傳感器網(wǎng)絡(luò)的互聯(lián),IETF工作組早在2004年就提出并制定了基于IPv6的以IEEE802.15.4作為底層標(biāo)準(zhǔn)的低功耗無(wú)線個(gè)域網(wǎng)6LoWPAN技術(shù)標(biāo)準(zhǔn),其主要包括6LoWPAN適配層、IPv6報(bào)頭壓縮與解壓、數(shù)據(jù)分片與重組、路由協(xié)議、IPv6網(wǎng)絡(luò)接入和節(jié)點(diǎn)地址管理技術(shù)等[1]

    目前6LoWPAN協(xié)議已實(shí)現(xiàn)在多種開(kāi)源系統(tǒng)上,例如6LBRContiki,本文采用開(kāi)源的、高度可移植的6LBR和Contiki操作系統(tǒng)。其中,Contiki是一個(gè)開(kāi)源的專門為需要聯(lián)網(wǎng)、硬件資源嚴(yán)重受限的嵌入式設(shè)備而設(shè)計(jì)的事件驅(qū)動(dòng)多任務(wù)操作系統(tǒng)[2],通過(guò)uIP協(xié)議棧提供了對(duì)IPv4和IPv6的TCP/IP協(xié)議的支持,還包含了一套輕量級(jí)的無(wú)線傳感器網(wǎng)絡(luò)協(xié)議棧Rime;同時(shí)在IPv6中還實(shí)現(xiàn)了6LoWPAN協(xié)議、RPL無(wú)線路由協(xié)議以及應(yīng)用層協(xié)議CoAP。6LBR是為工業(yè)應(yīng)用準(zhǔn)備的6LoWPAN/RPL邊界路由解決方案,它運(yùn)行在低成本、開(kāi)放的硬件平臺(tái)和Linux主機(jī)上,因此6LBR更符合未來(lái)邊界路由器的發(fā)展方向,其設(shè)計(jì)思路更能滿足今后的應(yīng)用需求[2]。

    本文在Contiki和OpenWrt的基礎(chǔ)上,將6LBR移植到嵌入式OpenWrt系統(tǒng)上,設(shè)計(jì)了一種實(shí)用的邊界路由器。其能夠完成IP協(xié)議棧和6LoWPAN協(xié)議棧之間的轉(zhuǎn)換,使IP網(wǎng)絡(luò)中的主機(jī)可以訪問(wèn)6LoWPAN傳感網(wǎng)絡(luò)中的節(jié)點(diǎn)[3]

1 邊界路由器實(shí)現(xiàn)方案

    OpenWrt是一個(gè)基于Linux內(nèi)核的路由器操作系統(tǒng),支持各種處理器架構(gòu),對(duì)擁有ARM架構(gòu)的TL-WR703N路由器有很好的支持。提供簡(jiǎn)單易用的環(huán)境框架以及模塊化設(shè)計(jì)來(lái)構(gòu)架自己的應(yīng)用程序,這大大方便了開(kāi)發(fā)應(yīng)用程序和6LBR移植到OpenWrt系統(tǒng)中。本文在OpenWrt系統(tǒng)的基礎(chǔ)上,提出了兩種6LoWPAN邊界路由器的解決方案,分別是6LBR-OpenWrt邊界路由器方案和OpenWrt邊界路由器解決方案。

2 6LBR-OpenWrt邊界路由器

2.1 6LBR-OpenWrt邊界路由器系統(tǒng)結(jié)構(gòu)

    6LBR用于將基于802.15.4與6LoWPAN的無(wú)線傳感器網(wǎng)絡(luò)和基于以太網(wǎng)的IPv6網(wǎng)絡(luò)連接起來(lái)。6LBR設(shè)計(jì)靈活,它可以配置為支持各種網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)用于連接無(wú)線傳感器網(wǎng)絡(luò)與IP世界。路由器TL-WR703N不能直接與6LoWPAN網(wǎng)絡(luò)中的網(wǎng)絡(luò)子節(jié)點(diǎn)進(jìn)行無(wú)線通信,要采用運(yùn)行Contiki程序的CC1310DK芯片,程序帶有相關(guān)SLIP協(xié)議,系統(tǒng)框圖如圖1所示。

qrs2-t1.gif

2.2 6LBR的運(yùn)行模式

    6LBR目前有兩種運(yùn)行方式:網(wǎng)橋模式和路由模式。在路由模式中,子節(jié)點(diǎn)構(gòu)成的6LoWPAN無(wú)線傳感器網(wǎng)絡(luò)和以太網(wǎng)有不同的網(wǎng)絡(luò)前綴;在網(wǎng)橋模式中,前綴則一樣。文獻(xiàn)[2]和文獻(xiàn)[4]詳細(xì)介紹了6LBR的幾種模式,網(wǎng)橋模式不再贅述。在本文用到的路由器模式中,6LBR當(dāng)作一個(gè)完整的IPv6路由器,用于連接以太網(wǎng)和6LoWPAN網(wǎng)絡(luò)。6LoWPAN網(wǎng)絡(luò)由RPL協(xié)議來(lái)管理,以太網(wǎng)端通過(guò)IPv6鄰居發(fā)現(xiàn)協(xié)議管理。在這種模式下,通過(guò)數(shù)據(jù)包過(guò)濾器模塊,6LBR向Contiki提供了一個(gè)虛擬的接口。路由器模式可以將傳感器網(wǎng)絡(luò)分隔成一個(gè)獨(dú)立的子網(wǎng),這樣能清晰地分辨出無(wú)線傳感器中的節(jié)點(diǎn);由于網(wǎng)絡(luò)前綴有切換功能,節(jié)點(diǎn)可以在不同的6LoWPAN網(wǎng)絡(luò)中移動(dòng);節(jié)點(diǎn)會(huì)根據(jù)新的網(wǎng)絡(luò)前綴獲得一個(gè)新的地址,路由器模式結(jié)構(gòu)如圖2所示。

qrs2-t2.gif

2.3 軟件設(shè)計(jì)

    本文采用路由器模式,CC1310上運(yùn)行的Slip-radio程序可以實(shí)現(xiàn)6LBR Linux進(jìn)程和802.15.4無(wú)線電的通信,通過(guò)串口收發(fā)數(shù)據(jù)。MAC(Medium Acess Control)層在6LBR里,驅(qū)動(dòng)方式為載波偵聽(tīng)多路訪問(wèn)(Carrier Sense Multiple Acess,CSMA);RDC(Radio Duty Cycling)層在Slip-radio里,MAC層接收RDC層發(fā)來(lái)的數(shù)據(jù),并通過(guò)RDC發(fā)送數(shù)據(jù);如果RDC層檢測(cè)到數(shù)據(jù)碰撞,MAC重發(fā)此數(shù)據(jù)。6LBR移植到TL-WR703N路由器上之后,需要在路由器上創(chuàng)建6lbr.conf文件,其主要內(nèi)容如下:

    MODE=ROUTER

    RAW_ETH=0

    BRIDGE=1

    ETH_JOIN_BRIDGE=0

    DEV_BRIDGE=br-lan

    DEV_TAP=tap0

    DEV_ETH=br-lan

    RAW_ETH_FCS=0

    DEV_RADIO=/dev/ttyUSB0  BAUDRATE=9600

    CC1310DK與TL-WR703N串口連接,路由器上系統(tǒng)會(huì)根據(jù)串口生成一個(gè)虛擬網(wǎng)卡tap0,br-lan包括有線lan口和無(wú)線網(wǎng);然后讓tap0口和br-lan口相接。PC通過(guò)lan口把數(shù)據(jù)傳給TL-WR703N,數(shù)據(jù)經(jīng)過(guò)6LBR處理之后通過(guò)tap0即串口發(fā)送給CC1310,CC1310通過(guò)無(wú)線的方式將數(shù)據(jù)傳給6LoWPAN傳感器網(wǎng)絡(luò)。

3 OpenWrt邊界路由器

3.1 OpenWrt邊界路由器系統(tǒng)結(jié)構(gòu)

    OpenWrt邊界路由器也采用到CC1310DK芯片,與第一種方案不同的是,CC1310DK芯片不僅作為與6LoWPAN傳感器網(wǎng)絡(luò)連接的802.15.4接口,還作為無(wú)線傳感器網(wǎng)絡(luò)的RPL根節(jié)點(diǎn),支持對(duì)網(wǎng)絡(luò)的路由功能和管理RPL網(wǎng)絡(luò),集成了6LoWPAN適配層,并能完成IPv6協(xié)議和IEEE802.15.4協(xié)議的轉(zhuǎn)換,使完整的6LoWPAN/RPL網(wǎng)絡(luò)和OpenWrt邊界路由器實(shí)現(xiàn)通信,因此真正起到6LoWPAN邊界路由器功能的是CC1310DK。TP-WR703N通過(guò)以太網(wǎng)網(wǎng)口或者無(wú)線的方式與計(jì)算機(jī)主機(jī)連接,這樣OpenWrt邊界路由器便實(shí)現(xiàn)了處理來(lái)自IP網(wǎng)絡(luò)和WSN的IPv6之間轉(zhuǎn)發(fā)的數(shù)據(jù)。其系統(tǒng)框圖如圖3所示。

qrs2-t3.gif

3.2 軟件設(shè)計(jì)

    CC1310DK通過(guò)USB接口與TL-WR703N連接,此時(shí)串口在路由器上生成/dev/ttyUSB0端口號(hào),OpenWrt上的tunslip6軟件包把端口號(hào)虛擬成tun0網(wǎng)卡。可以實(shí)現(xiàn)在TL-WR703N上ping通6LoWPAN傳感器網(wǎng)絡(luò)中的子節(jié)點(diǎn),外部網(wǎng)絡(luò)如PC通過(guò)lan口ping通邊界路由器,但無(wú)法ping通6LoWPAN傳感器網(wǎng)絡(luò)中的子節(jié)點(diǎn);為了實(shí)現(xiàn)IP網(wǎng)絡(luò)與6LoWPAN傳感器網(wǎng)絡(luò)的通信,有兩種方式,第一種是對(duì)OpenWrt里的firewall/files里添加如下配置:

    config zone option input 'ACCEPT'

                option forward 'REJECT'

                option output 'ACCEPT'

                option name '6lowpan'

                option network 'lan6'

    config forwarding   option dest 'lan'

                        option src '6lowpan'

    config forwarding   option dest '6lowpan'

                        option src 'lan'

    在socket-support軟件包里加入如下腳本命令:

    uci set network.lan6=interface

    uci set network.lan6.proto=static

    uci set network.lan6.ifname=tun0

    uci set network.lan6.ip6assign=64

    uci commit network

    Uci命令行添加了一個(gè)tun0的網(wǎng)口,tun0是6LoWPAN傳感器網(wǎng)絡(luò)和邊界路由器通信的接口,這個(gè)配置就是讓lan口和tun0口相通,兩者可以相互轉(zhuǎn)發(fā)數(shù)據(jù)。

    6LoWPAN子節(jié)點(diǎn)里運(yùn)行帶有CoAP協(xié)議的程序。CoAP協(xié)議(Constrained Application Protocol)是為物聯(lián)網(wǎng)中資源受限設(shè)備制定的基于UDP的應(yīng)用層傳輸協(xié)議,可讓小型設(shè)備接入互聯(lián)網(wǎng)世界。Libcoap是CoAP協(xié)議的C語(yǔ)言實(shí)現(xiàn),它提供了server和client的功能。6LoWPAN子節(jié)點(diǎn)用作server端;OpenWrt提供了Libcoap軟件包,TL-WR703N路由器可作client端,通過(guò)coap-client指令實(shí)現(xiàn)路由器對(duì)6LoWPAN無(wú)線傳感器網(wǎng)絡(luò)中子節(jié)點(diǎn)的數(shù)據(jù)通信。實(shí)際上目前的通信僅在TL-WR703N路由器和傳感器網(wǎng)絡(luò)構(gòu)成的局域網(wǎng)實(shí)現(xiàn)。外部網(wǎng)絡(luò)通過(guò)對(duì)路由器TL-WR703N的操作實(shí)現(xiàn)通信,因此本文第二種方式為在OpenWrt系統(tǒng)上開(kāi)發(fā)了軟件包socket-support,軟件包主要基于socket程序在Linux下開(kāi)發(fā)了服務(wù)器端,通信協(xié)議為TCP協(xié)議,計(jì)算機(jī)、手機(jī)等外部設(shè)備運(yùn)行客戶端。

    這兩種方式的數(shù)據(jù)通信除了在PC端接收發(fā)送不同外,基本是一樣的。PC通過(guò)以太網(wǎng)口將數(shù)據(jù)傳遞給路由器TL-WR703N,運(yùn)行border-router程序的CC1310與路由器通信接口是虛擬網(wǎng)卡tun0。CC1310可以看作是6LoWPAN網(wǎng)關(guān)節(jié)點(diǎn),網(wǎng)關(guān)節(jié)點(diǎn)通過(guò)SLIP協(xié)議從路由器收到數(shù)據(jù)包,數(shù)據(jù)包格式為IPv6,而無(wú)線傳感網(wǎng)絡(luò)通信標(biāo)準(zhǔn)為IEEE 802.15.4。所以網(wǎng)關(guān)節(jié)點(diǎn)利用6LoWPAN適配層對(duì)數(shù)據(jù)包進(jìn)行報(bào)頭壓縮、數(shù)據(jù)分片,處理后的數(shù)據(jù)根據(jù)目的地址也就是6LoWPAN網(wǎng)絡(luò)子節(jié)點(diǎn)的IPv6地址發(fā)送下去;子節(jié)點(diǎn)收到數(shù)據(jù)后進(jìn)行數(shù)據(jù)重組,響應(yīng)命令,將采集到的數(shù)據(jù)壓縮、分片后傳給網(wǎng)關(guān)節(jié)點(diǎn),6LoWPAN網(wǎng)關(guān)節(jié)點(diǎn)對(duì)收到的數(shù)據(jù)重組通過(guò)tun0口傳給路由器,路由器通過(guò)以太網(wǎng)口傳到IPv6網(wǎng)絡(luò)上。其通信過(guò)程如圖4所示。

qrs2-t4.gif

4 邊界路由器功能驗(yàn)證

    由于6LBR是作為軟件包應(yīng)用程序移植到OpenWrt上的,為了測(cè)試應(yīng)用方便,可以在第二種方案的基礎(chǔ)上選擇6LBR應(yīng)用程序包。這兩種方案都需要邊界路由器串口連接CC1310DK,TP-WR703N目前只提供一個(gè)端口,所以在調(diào)試時(shí)只能分開(kāi)測(cè)試驗(yàn)證。

4.1 6LBR-Openwrt邊界路由器連通性測(cè)試

    連通性測(cè)試主要采取如下步驟: 

    (1)在PC端打開(kāi)cmd.exe或者,執(zhí)行如下命令ping-6 bbbb::100,測(cè)試PC到網(wǎng)關(guān)已通,如圖5所示。

qrs2-t5.gif

    (2)在運(yùn)行有Copper插件的火狐瀏覽器內(nèi)輸入coap://[子節(jié)點(diǎn)IPv6地址]:5683/,可以訪問(wèn)子節(jié)點(diǎn)的Web端程序,然后可以選擇特定的資源使用GET/POST/PUT/DELETE來(lái)獲取資源的具體內(nèi)容,可以看出子以太網(wǎng)和無(wú)線網(wǎng)的IPv6地址前綴并不相同,因此工作方式為路由模式,如圖6所示。

qrs2-t6.gif

4.2 OpenWrt邊界路由器連通性測(cè)試

    (1)打開(kāi)網(wǎng)絡(luò)調(diào)試助手,選擇TCP Client模式連接邊界路由器,輸入getip和getipall命令可得到邊界路由器的IPv6地址以及子節(jié)點(diǎn)的IPv6地址,如圖7所示。

qrs2-t7.gif

    (2)ping6子節(jié)點(diǎn)地址進(jìn)行ping連通性測(cè)試,也可將子節(jié)點(diǎn)的IPv6地址輸入到瀏覽器地址欄里訪問(wèn)子節(jié)點(diǎn)Web界面。既可在Web頁(yè)面進(jìn)行GET/POST/PUT/DELETE命令操作,也可在網(wǎng)絡(luò)調(diào)試助手內(nèi)輸入coap命令進(jìn)行對(duì)子節(jié)點(diǎn)控制,如:coap-client-m get coap://:[子節(jié)點(diǎn)IPv6地址]:5683/sen/batmon/tem-p(得到子節(jié)點(diǎn)芯片的溫度值29)。因此可根據(jù)具體的實(shí)際應(yīng)用選擇Web端頁(yè)面的方式還是網(wǎng)絡(luò)調(diào)試助手,如圖8所示。

qrs2-t8.gif

5 結(jié)論

    本文以Contiki、6LBR以及OpenWrt等多個(gè)開(kāi)源系統(tǒng)為基礎(chǔ),從多方面設(shè)計(jì)研究了6LoWPAN邊界路由器,提出了多種可實(shí)施的解決方案。從測(cè)試結(jié)果可看出,所設(shè)計(jì)的6LoWPAN邊界路由器達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),可以根據(jù)具體無(wú)線傳感網(wǎng)絡(luò)應(yīng)用場(chǎng)合選擇合適的邊界路由器,下一步將陸續(xù)完善邊界路由器并應(yīng)用到環(huán)境檢測(cè)中。

參考文獻(xiàn)

[1] 王國(guó)清.6LoWPAN的研究及在WSN節(jié)點(diǎn)中的實(shí)現(xiàn)[D].北京:北方工業(yè)大學(xué),2014.

[2] 張巖.基于Contiki系統(tǒng)的物聯(lián)網(wǎng)應(yīng)用平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2013.

[3] 田廣東,葉鑫.基于Contiki的6LoWPAN邊界路由器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(3):61-63,70.

[4] SPANDAN.6LBRModes[EB/OL].(2016-5-20)[2017-12-31].https://Github.com/cetic/6lbr/wiki/6LBR Modes.

[5] HUI J,THUBERT P.Compression format for IPv6 datagrams over IEEE 802.15. 4-based networks[S].RFC 6282,2011.

[6] 楊勇.基于Contiki的6LoWPAN網(wǎng)關(guān)節(jié)點(diǎn)設(shè)計(jì)[D].武漢:華中師范大學(xué),2013.

[7] 朱若鑫.基于多個(gè)開(kāi)源系統(tǒng)的6LoWPAN技術(shù)在物聯(lián)網(wǎng)應(yīng)用中的研究[D].昆明:云南大學(xué),2015.

[8] 常英亮.基于嵌入式Linux的物聯(lián)網(wǎng)網(wǎng)關(guān)研究與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2014.

[9] 盛李立.基于Contiki操作系統(tǒng)的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:武漢工程大學(xué),2012.



作者信息:

鄔明彪1,2,吳桂清1,陳清華2

(1.湖南大學(xué) 電氣與信息工程學(xué)院,湖南 長(zhǎng)沙410082;2.浙江清華長(zhǎng)三角研究院,浙江 嘉興314006)

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