文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.03.017
中文引用格式: 田廣東,,葉鑫. 基于Contiki的6LoWPAN邊界路由器的設(shè)計(jì)[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.
0 引言
6LoWPAN(IPv6 over Low Power Wireless Personal Area Network)是一種基于IEEE 802.15.4的無線通信協(xié)議,,旨在為嵌入式設(shè)備,如無線傳感節(jié)點(diǎn)提供IPv6連接[1],。6LoWPAN的出現(xiàn)以全I(xiàn)P的方式真正解決了無線傳感器網(wǎng)絡(luò)與IPv6網(wǎng)絡(luò)的互聯(lián)互通,。6LoWPAN已經(jīng)得到了Google、Cisco,、Honeywell等公司的高度重視,,有望取代ZigBee標(biāo)準(zhǔn),成為事實(shí)上的標(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ā)等功能,。
目前已經(jīng)有多種開源或商業(yè)的6LoWPAN協(xié)議棧的實(shí)現(xiàn)[3],,其中基于Contiki的SICSlowpan以其開源、可移植性好,、超輕量級(jí),、長期維護(hù)等優(yōu)勢(shì)得到了廣泛關(guān)注。SICSlowpan符合RFC4944標(biāo)準(zhǔn),實(shí)現(xiàn)了頭部編碼壓縮,、分片,、地址分配等功能,具有較好的互操作性。
6LoWPAN邊界路由器是連接6LoWPAN傳感網(wǎng)和IP網(wǎng)絡(luò)的橋梁,,使兩者的互操作成為可能,。6LoWPAN邊界路由器的基本功能有:完成IP協(xié)議棧和6LoWPAN協(xié)議棧之間的轉(zhuǎn)換,使IP網(wǎng)絡(luò)中的主機(jī)可以訪問6LoWPAN傳感網(wǎng)絡(luò)中的節(jié)點(diǎn),。本文的目標(biāo)就是在Contiki的基礎(chǔ)下,,設(shè)計(jì)一種實(shí)用的6LoWPAN邊界路由器,為進(jìn)一步研究6LoWPAN奠定基礎(chǔ),。典型的基于Contiki實(shí)現(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ò)并自動(dòng)完成網(wǎng)絡(luò)協(xié)議的轉(zhuǎn)換,。為了驗(yàn)證6LoWPAN邊界路由器在網(wǎng)絡(luò)協(xié)議轉(zhuǎn)換中的作用,,本文設(shè)計(jì)了一個(gè)包含1個(gè)6LoWPAN邊界路由器、2個(gè)6LoWPAN節(jié)點(diǎn),,1臺(tái)PC的測(cè)試網(wǎng)絡(luò),,整體測(cè)試網(wǎng)絡(luò)的結(jié)構(gòu)圖如圖2所示,。
本文設(shè)計(jì)的6LoWPAN邊界路由器在實(shí)現(xiàn)無縫連接IP網(wǎng)絡(luò)和6LoWPAN傳感網(wǎng)絡(luò)的過程中具有下列特點(diǎn):(1)遵循6LoWPAN標(biāo)準(zhǔn)協(xié)議,鏈路層基于ContikiMac,,采用RDC機(jī)制,,有效降低功耗,路由協(xié)議采用Router Over方式,,基于ContikiRPL,,支持RPL協(xié)議[4];(2)兼容IPv4網(wǎng)絡(luò),,即能實(shí)現(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è)計(jì)
6LoWPAN邊界路由器是6LoWPAN網(wǎng)絡(luò)的核心,,處理能力要求較高,但從性能和成本兩方面考慮,,邊界路由器的主控并沒有采用高性能ARM芯片,,而是采用了TI公司的片上系統(tǒng)解決方案CC2538芯片,CC2538基于ARM Cortex-M3架構(gòu),,內(nèi)部資源豐富,,性能強(qiáng)勁,能很好地支持最新的Contiki3.x版本,,完全可以滿足本文的設(shè)計(jì)要求,。以太網(wǎng)模塊采用ENC28J60芯片及HR911105A網(wǎng)絡(luò)變壓器。為了調(diào)試方便,,本文設(shè)計(jì)了USB轉(zhuǎn)串口模塊,,用于在PC上打印信息,其驅(qū)動(dòng)芯片采用cp2102,。邊界路由器的整體硬件結(jié)構(gòu)圖如圖3所示,。
為了便于后續(xù)的功能擴(kuò)展及滿足各種需求,本6LoWPAN傳感器節(jié)點(diǎn)的硬件結(jié)構(gòu)設(shè)計(jì)基本與6LoWPAN邊界路由器相同,,不同之處在于去掉了以太網(wǎng)模塊,,其他部分設(shè)計(jì)與邊界路由器相同。
3 軟件設(shè)計(jì)
6LoWPAN邊界路由器的軟件實(shí)現(xiàn)主要基于Contiki協(xié)議棧,,Contiki以函數(shù)指針結(jié)構(gòu)體的形式在每一層定義了很多鉤子函數(shù),,或者稱為服務(wù)接入點(diǎn)。每一層不同的實(shí)現(xiàn)可以很容易連接到這些鉤子函數(shù),,緊接著就可以通過函數(shù)指針訪問,。具體來說,,首先要深入分析Contiki內(nèi)核的結(jié)構(gòu),然后根據(jù)本文需求對(duì)Contiki原有的協(xié)議棧進(jìn)行相應(yīng)的修改,,增添所需的額外功能,,本設(shè)計(jì)要求至少要兼容IPv4網(wǎng)絡(luò)的通信。
由于6LoWPAN是為支持IPv6而設(shè)計(jì)的,,但當(dāng)前仍有大量的設(shè)備只能運(yùn)行IPv4協(xié)議,,因此,本文在應(yīng)用層定義了一個(gè)IPv6/IPv4適配器,,其作用就是兼容IPv4協(xié)議同時(shí)還能驗(yàn)證客戶端輸入指令的有效性,。當(dāng)邊界路由器初始化完畢后,該應(yīng)用層適配器會(huì)創(chuàng)建一個(gè)IPv4套接字接口用于監(jiān)聽IPv4連接,。IPv4主機(jī)收到的命令會(huì)被適配器提取出來經(jīng)分析并判定是否需要轉(zhuǎn)發(fā)到6LoWPAN網(wǎng)絡(luò),。如果命令無效或者目的節(jié)點(diǎn)失效,將會(huì)返回一個(gè)錯(cuò)誤消息給IPv4主機(jī),。經(jīng)過這一確認(rèn)過程,,包含該命令的IPv6數(shù)據(jù)包就被轉(zhuǎn)發(fā)給相應(yīng)的6LoWPAN節(jié)點(diǎn)。與此同時(shí),,適配器還會(huì)啟動(dòng)一個(gè)定時(shí)器,,如果該命令的應(yīng)答沒有在規(guī)定的時(shí)間內(nèi)返回,同樣會(huì)返回一個(gè)錯(cuò)誤信息給主機(jī)端,;如果正常,,適配器會(huì)收到6LoWPAN節(jié)點(diǎn)的數(shù)據(jù),該數(shù)據(jù)會(huì)被提取出來,,壓縮在IPv4報(bào)文中并發(fā)送給IPv4主機(jī)端,。
圖4描述了報(bào)文經(jīng)由邊界路由器在IPv6客戶端和6LoWPAN網(wǎng)絡(luò)之間交換的通信過程。該通信過程分為兩個(gè)階段:IPv6客戶端發(fā)送命令給6LoWPAN節(jié)點(diǎn)以及6LoWPAN節(jié)點(diǎn)返回應(yīng)答,。邊界路由器主要完成壓縮,、解壓縮、分片及重組等工作,。
類似的,,IPv4主機(jī)和6LoWPAN網(wǎng)絡(luò)之間的消息流程可以從圖5中看出。同樣可將其看成兩個(gè)階段:IPv4主機(jī)發(fā)送命令給6LoWPAN節(jié)點(diǎn)以及6LoWPAN節(jié)點(diǎn)返回應(yīng)答,。這里邊界路由器更像是一個(gè)服務(wù)器,,等待IPv4來連接特定的端口,所有來自IPv4主機(jī)的命令都被轉(zhuǎn)交給邊界路由器而不是6LoWPAN節(jié)點(diǎn),。這些命令包含目的節(jié)點(diǎn)或節(jié)點(diǎn)ID號(hào)以及要執(zhí)行的動(dòng)作,。它們被壓縮在IPv4數(shù)據(jù)包中并被遞交給IPv4/IPv6適配器,適配器會(huì)執(zhí)行相應(yīng)的動(dòng)作,。當(dāng)發(fā)現(xiàn)命令是無效的,,邊界路由器會(huì)發(fā)送一個(gè)錯(cuò)誤消息給IPv4主機(jī),,避免再同6LoWPAN節(jié)點(diǎn)通信這一多余過程。
4 邊界路由器功能驗(yàn)證
為了驗(yàn)證6LoWPAN邊界路由器確實(shí)發(fā)揮了應(yīng)有的作用,,讓兩個(gè)6LoWPAN節(jié)點(diǎn)和6LoWPAN邊界路由器彼此相距10 m遠(yuǎn),,6LoWPAN邊界路由器經(jīng)以太網(wǎng)接口以有線方式接入Internet,6LoWPAN節(jié)點(diǎn)和6LoWPAN邊界路由器之間則通過無線方式連接,。設(shè)定讓6LoWPAN節(jié)點(diǎn)以一定時(shí)間間隔循環(huán)向PC發(fā)送ASCII碼字節(jié)數(shù)據(jù)流,,為了便于觀察效果,設(shè)定讓串口打印出相關(guān)信息,,利用串口助手可以很方便地看到相關(guān)的數(shù)據(jù),。
4.1 連通性測(cè)試
聯(lián)通性測(cè)試主要利用ping命令來測(cè)試PC和6LoWPAN邊界路由器的連通性。圖6所示為6LoWPAN邊界路由器啟動(dòng)時(shí)獲取到的IPv4地址,,其IPv4地址為172.23.10.177,,PC的IPv4地址為172.23.10.134。圖7所示為在PC上利用ping命令測(cè)試的最終結(jié)果,,可以看出數(shù)據(jù)包的往返時(shí)間較小,證明連通性較好,。
4.2 數(shù)據(jù)通信測(cè)試
在確定了6LoWPAN邊界路由器和PC之間較好的連通性后,,就可以測(cè)試6LoWPAN節(jié)點(diǎn)和PC之間的數(shù)據(jù)交換。測(cè)試過程中,,利用sokit軟件,,設(shè)定從PC上向6LoWPAN節(jié)點(diǎn)發(fā)送“Hello World?鄞”字符串?dāng)?shù)據(jù),利用抓包軟件wireshark進(jìn)行抓包,,整個(gè)過程如圖8和圖9所示,。
從圖中可以看出,在PC向6LoWPAN節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的過程中,,傳輸層的承載協(xié)議是UDP,,成功抓取到了數(shù)據(jù)包的轉(zhuǎn)發(fā)過程。也從側(cè)面說明6LoWPAN邊界路由器發(fā)揮了協(xié)議轉(zhuǎn)換的作用,。
5 結(jié)束語
本文選取了CC2538 SoC作為6LoWPAN邊界路由器的硬件平臺(tái)的核心,,在Contiki協(xié)議棧的基礎(chǔ)上,完成了6LoWPAN邊界路由器的設(shè)計(jì),,測(cè)試結(jié)果表明達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),。所設(shè)計(jì)的6LoWPAN邊界路由器可以應(yīng)用于無線傳感網(wǎng)絡(luò)應(yīng)用中的多種場(chǎng)合,下一步計(jì)劃是將所設(shè)計(jì)的6LoWPAN邊界路由器應(yīng)用到無線抄表上,。
參考文獻(xiàn)
[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.