《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于Contiki的6LoWPAN邊界路由器的設(shè)計
基于Contiki的6LoWPAN邊界路由器的設(shè)計
2016年電子技術(shù)應(yīng)用第3期
田廣東,葉 鑫
重慶郵電大學(xué) 通信與信息工程學(xué)院,重慶400065
摘要: 以TI公司的CC2538 SoC作為核心硬件平臺,基于Contiki開源操作系統(tǒng)設(shè)計了一種6LoWPAN邊界路由器,同時搭建了一個包含一臺接入有線網(wǎng)絡(luò)的PC、2個6LoWPAN節(jié)點以及一個6LoWPAN邊界路由器的測試網(wǎng)絡(luò)。測試結(jié)果表明,所設(shè)計的6LoWPAN邊界路由器成功實現(xiàn)了6LoWPAN節(jié)點和PC之間數(shù)據(jù)的轉(zhuǎn)發(fā)功能,可以應(yīng)用于智能家居、環(huán)境監(jiān)控等多種場合,具有一定的應(yīng)用價值。
關(guān)鍵詞: 6LoWPAN Contiki 邊界路由器
中圖分類號: TN923
文獻標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.017
中文引用格式: 田廣東,葉鑫. 基于Contiki的6LoWPAN邊界路由器的設(shè)計[J].電子技術(shù)應(yīng)用,2016,42(3):61-63,70.
英文引用格式: Tian Guangdong,Ye Xin. Design of 6LoWPAN border router based on Contiki[J].Application of Electronic Technique,2016,42(3):61-63,70.
Design of 6LoWPAN border router based on Contiki
Tian Guangdong,Ye Xin
School of Communication and Information Engineering, Chongqing University of Posts and Telecommunications, Chongqing 400065,China
Abstract: This paper chooses CC2538 SoC as the core hardware platforms, relying on Contiki, to design a 6LoWPAN border router. Meantime, a temporarily network, including a PC connected to the Internet, 2 6LoWPAN nodes and a 6LoWPAN border router is created to evaluate the performance of the 6LoWPAN border router. The result shows that the 6LoWPAN border router can forward the data packets between the PC and 6LoWPAN nodes. This 6LoWPAN border router can be applied to some scenario such as smart home, environment monitor and so on.
Key words : 6LoWPAN;Contiki;border router

0 引言

    6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)是一種基于IEEE 802.15.4的無線通信協(xié)議,旨在為嵌入式設(shè)備,如無線傳感節(jié)點提供IPv6連接[1]。6LoWPAN的出現(xiàn)以全IP的方式真正解決了無線傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)互通。6LoWPAN已經(jīng)得到了Google、Cisco、Honeywell等公司的高度重視,有望取代ZigBee標(biāo)準(zhǔn),成為事實上的標(biāo)準(zhǔn),當(dāng)前已經(jīng)有很多關(guān)于6LoWPAN的應(yīng)用[2]。6LoWPAN網(wǎng)絡(luò)底層使用IEEE 802.15.4標(biāo)準(zhǔn),在MAC層和IPv6網(wǎng)絡(luò)層之間引入適配層,主要提供包分片與重組、頭部壓縮和鏈路層轉(zhuǎn)發(fā)等功能。

qrs4-t1.gif

    目前已經(jīng)有多種開源或商業(yè)的6LoWPAN協(xié)議棧的實現(xiàn)[3],其中基于Contiki的SICSlowpan以其開源、可移植性好、超輕量級、長期維護等優(yōu)勢得到了廣泛關(guān)注。SICSlowpan符合RFC4944標(biāo)準(zhǔn),實現(xiàn)了頭部編碼壓縮、分片、地址分配等功能,具有較好的互操作性。

    6LoWPAN邊界路由器是連接6LoWPAN傳感網(wǎng)和IP網(wǎng)絡(luò)的橋梁,使兩者的互操作成為可能。6LoWPAN邊界路由器的基本功能有:完成IP協(xié)議棧和6LoWPAN協(xié)議棧之間的轉(zhuǎn)換,使IP網(wǎng)絡(luò)中的主機可以訪問6LoWPAN傳感網(wǎng)絡(luò)中的節(jié)點。本文的目標(biāo)就是在Contiki的基礎(chǔ)下,設(shè)計一種實用的6LoWPAN邊界路由器,為進一步研究6LoWPAN奠定基礎(chǔ)。典型的基于Contiki實現(xiàn)的6LoWPAN協(xié)議棧如圖1所示。

1 系統(tǒng)組成和目標(biāo)

    6LoWPAN邊界路由器也可以看成是一種網(wǎng)關(guān)或服務(wù)器,可連接傳統(tǒng)IP網(wǎng)絡(luò)和6LoWPAN傳感網(wǎng)絡(luò)并自動完成網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換。為了驗證6LoWPAN邊界路由器在網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換中的作用,本文設(shè)計了一個包含1個6LoWPAN邊界路由器、2個6LoWPAN節(jié)點,1臺PC的測試網(wǎng)絡(luò),整體測試網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖2所示。

qrs4-t2.gif

    本文設(shè)計的6LoWPAN邊界路由器在實現(xiàn)無縫連接IP網(wǎng)絡(luò)和6LoWPAN傳感網(wǎng)絡(luò)的過程中具有下列特點:(1)遵循6LoWPAN標(biāo)準(zhǔn)協(xié)議,鏈路層基于ContikiMac,采用RDC機制,有效降低功耗,路由協(xié)議采用Router Over方式,基于ContikiRPL,支持RPL協(xié)議[4];(2)兼容IPv4網(wǎng)絡(luò),即能實現(xiàn)IPv4客戶端和6LoWPAN傳感網(wǎng)之間的通信[5];(3)無縫連接IPv6網(wǎng)絡(luò),支持6LoWPAN標(biāo)準(zhǔn)的鄰居發(fā)現(xiàn)協(xié)議6LoWPAN ND[6];(4)支持ping等簡單的常用網(wǎng)絡(luò)管理命令,方便網(wǎng)絡(luò)的調(diào)試。

2 硬件設(shè)計

    6LoWPAN邊界路由器是6LoWPAN網(wǎng)絡(luò)的核心,處理能力要求較高,但從性能和成本兩方面考慮,邊界路由器的主控并沒有采用高性能ARM芯片,而是采用了TI公司的片上系統(tǒng)解決方案CC2538芯片,CC2538基于ARM Cortex-M3架構(gòu),內(nèi)部資源豐富,性能強勁,能很好地支持最新的Contiki3.x版本,完全可以滿足本文的設(shè)計要求。以太網(wǎng)模塊采用ENC28J60芯片及HR911105A網(wǎng)絡(luò)變壓器。為了調(diào)試方便,本文設(shè)計了USB轉(zhuǎn)串口模塊,用于在PC上打印信息,其驅(qū)動芯片采用cp2102。邊界路由器的整體硬件結(jié)構(gòu)圖如圖3所示。

qrs4-t3.gif

    為了便于后續(xù)的功能擴展及滿足各種需求,本6LoWPAN傳感器節(jié)點的硬件結(jié)構(gòu)設(shè)計基本與6LoWPAN邊界路由器相同,不同之處在于去掉了以太網(wǎng)模塊,其他部分設(shè)計與邊界路由器相同。

3 軟件設(shè)計

    6LoWPAN邊界路由器的軟件實現(xiàn)主要基于Contiki協(xié)議棧,Contiki以函數(shù)指針結(jié)構(gòu)體的形式在每一層定義了很多鉤子函數(shù),或者稱為服務(wù)接入點。每一層不同的實現(xiàn)可以很容易連接到這些鉤子函數(shù),緊接著就可以通過函數(shù)指針訪問。具體來說,首先要深入分析Contiki內(nèi)核的結(jié)構(gòu),然后根據(jù)本文需求對Contiki原有的協(xié)議棧進行相應(yīng)的修改,增添所需的額外功能,本設(shè)計要求至少要兼容IPv4網(wǎng)絡(luò)的通信。

    由于6LoWPAN是為支持IPv6而設(shè)計的,但當(dāng)前仍有大量的設(shè)備只能運行IPv4協(xié)議,因此,本文在應(yīng)用層定義了一個IPv6/IPv4適配器,其作用就是兼容IPv4協(xié)議同時還能驗證客戶端輸入指令的有效性。當(dāng)邊界路由器初始化完畢后,該應(yīng)用層適配器會創(chuàng)建一個IPv4套接字接口用于監(jiān)聽IPv4連接。IPv4主機收到的命令會被適配器提取出來經(jīng)分析并判定是否需要轉(zhuǎn)發(fā)到6LoWPAN網(wǎng)絡(luò)。如果命令無效或者目的節(jié)點失效,將會返回一個錯誤消息給IPv4主機。經(jīng)過這一確認(rèn)過程,包含該命令的IPv6數(shù)據(jù)包就被轉(zhuǎn)發(fā)給相應(yīng)的6LoWPAN節(jié)點。與此同時,適配器還會啟動一個定時器,如果該命令的應(yīng)答沒有在規(guī)定的時間內(nèi)返回,同樣會返回一個錯誤信息給主機端;如果正常,適配器會收到6LoWPAN節(jié)點的數(shù)據(jù),該數(shù)據(jù)會被提取出來,壓縮在IPv4報文中并發(fā)送給IPv4主機端。

    圖4描述了報文經(jīng)由邊界路由器在IPv6客戶端和6LoWPAN網(wǎng)絡(luò)之間交換的通信過程。該通信過程分為兩個階段:IPv6客戶端發(fā)送命令給6LoWPAN節(jié)點以及6LoWPAN節(jié)點返回應(yīng)答。邊界路由器主要完成壓縮、解壓縮、分片及重組等工作。

qrs4-t4.gif

    類似的,IPv4主機和6LoWPAN網(wǎng)絡(luò)之間的消息流程可以從圖5中看出。同樣可將其看成兩個階段:IPv4主機發(fā)送命令給6LoWPAN節(jié)點以及6LoWPAN節(jié)點返回應(yīng)答。這里邊界路由器更像是一個服務(wù)器,等待IPv4來連接特定的端口,所有來自IPv4主機的命令都被轉(zhuǎn)交給邊界路由器而不是6LoWPAN節(jié)點。這些命令包含目的節(jié)點或節(jié)點ID號以及要執(zhí)行的動作。它們被壓縮在IPv4數(shù)據(jù)包中并被遞交給IPv4/IPv6適配器,適配器會執(zhí)行相應(yīng)的動作。當(dāng)發(fā)現(xiàn)命令是無效的,邊界路由器會發(fā)送一個錯誤消息給IPv4主機,避免再同6LoWPAN節(jié)點通信這一多余過程。

qrs4-t5.gif

4 邊界路由器功能驗證

    為了驗證6LoWPAN邊界路由器確實發(fā)揮了應(yīng)有的作用,讓兩個6LoWPAN節(jié)點和6LoWPAN邊界路由器彼此相距10 m遠(yuǎn),6LoWPAN邊界路由器經(jīng)以太網(wǎng)接口以有線方式接入Internet,6LoWPAN節(jié)點和6LoWPAN邊界路由器之間則通過無線方式連接。設(shè)定讓6LoWPAN節(jié)點以一定時間間隔循環(huán)向PC發(fā)送ASCII碼字節(jié)數(shù)據(jù)流,為了便于觀察效果,設(shè)定讓串口打印出相關(guān)信息,利用串口助手可以很方便地看到相關(guān)的數(shù)據(jù)。

4.1 連通性測試

    聯(lián)通性測試主要利用ping命令來測試PC和6LoWPAN邊界路由器的連通性。圖6所示為6LoWPAN邊界路由器啟動時獲取到的IPv4地址,其IPv4地址為172.23.10.177,PC的IPv4地址為172.23.10.134。圖7所示為在PC上利用ping命令測試的最終結(jié)果,可以看出數(shù)據(jù)包的往返時間較小,證明連通性較好。

qrs4-t6.gif

qrs4-t7.gif

4.2 數(shù)據(jù)通信測試

    在確定了6LoWPAN邊界路由器和PC之間較好的連通性后,就可以測試6LoWPAN節(jié)點和PC之間的數(shù)據(jù)交換。測試過程中,利用sokit軟件,設(shè)定從PC上向6LoWPAN節(jié)點發(fā)送“Hello World?鄞”字符串?dāng)?shù)據(jù),利用抓包軟件wireshark進行抓包,整個過程如圖8和圖9所示。

qrs4-t8.gif

qrs4-t9.gif

    從圖中可以看出,在PC向6LoWPAN節(jié)點發(fā)送數(shù)據(jù)包的過程中,傳輸層的承載協(xié)議是UDP,成功抓取到了數(shù)據(jù)包的轉(zhuǎn)發(fā)過程。也從側(cè)面說明6LoWPAN邊界路由器發(fā)揮了協(xié)議轉(zhuǎn)換的作用。

5 結(jié)束語

    本文選取了CC2538 SoC作為6LoWPAN邊界路由器的硬件平臺的核心,在Contiki協(xié)議棧的基礎(chǔ)上,完成了6LoWPAN邊界路由器的設(shè)計,測試結(jié)果表明達(dá)到了預(yù)期的設(shè)計目標(biāo)。所設(shè)計的6LoWPAN邊界路由器可以應(yīng)用于無線傳感網(wǎng)絡(luò)應(yīng)用中的多種場合,下一步計劃是將所設(shè)計的6LoWPAN邊界路由器應(yīng)用到無線抄表上。

參考文獻

[1] Chen Yibo,Hou KunMean,Zhou Haiying,et al.6LoWPAN stacks:a survey[C].IEEE Conference Publications,2011.

[2] YoungKi Park,Ngoc-Thanh Dinh.A network monitoring system in 6LoWPAN networks[C].IEEE Conference Publications,2012.

[3] Dhananjay Singh,U.S.Tiwary.Global healthcare monitoring system using 6lowpan networks[C].IEEE Conference Publications,2009.

[4] Olfa Gaddour,Anis Koubaa.RPL in a nutshell:a survey[J].Computer Networks,2012,56(14).

[5] B.da Silva Campos,RODRIGUES J J,OLIVEIRA L M,et al.Design and construction of wireless sensor network gateway with IPv4/IPv6 support[C].2011 IEEE International Conference on Communications,Kyoto,Japan,2011.

[6] SHELBY Z,CHAKRABARTI S,NORDMARK E,et al.Neighbor discovery optimization for IPv6 over low-power wireless personal area networks(6LoWPANs),RFC 6775,2012.

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