文獻(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的無(wú)線通信協(xié)議,旨在為嵌入式設(shè)備,如無(wú)線傳感節(jié)點(diǎn)提供IPv6連接[1]。6LoWPAN的出現(xiàn)以全I(xiàn)P的方式真正解決了無(wú)線傳感器網(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)有多種開(kāi)源或商業(yè)的6LoWPAN協(xié)議棧的實(shí)現(xiàn)[3],其中基于Contiki的SICSlowpan以其開(kāi)源、可移植性好、超輕量級(jí)、長(zhǎng)期維護(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ī)可以訪問(wèn)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)無(wú)縫連接IP網(wǎng)絡(luò)和6LoWPAN傳感網(wǎng)絡(luò)的過(guò)程中具有下列特點(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)無(wú)縫連接IPv6網(wǎng)絡(luò),支持6LoWPAN標(biāo)準(zhǔn)的鄰居發(fā)現(xiàn)協(xié)議6LoWPAN ND[6];(4)支持ping等簡(jiǎn)單的常用網(wǎng)絡(luò)管理命令,方便網(wǎng)絡(luò)的調(diào)試。
2 硬件設(shè)計(jì)
6LoWPAN邊界路由器是6LoWPAN網(wǎng)絡(luò)的核心,處理能力要求較高,但從性能和成本兩方面考慮,邊界路由器的主控并沒(méi)有采用高性能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ù),緊接著就可以通過(guò)函數(shù)指針訪問(wèn)。具體來(lái)說(shuō),首先要深入分析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)聽(tīng)I(yíng)Pv4連接。IPv4主機(jī)收到的命令會(huì)被適配器提取出來(lái)經(jīng)分析并判定是否需要轉(zhuǎn)發(fā)到6LoWPAN網(wǎng)絡(luò)。如果命令無(wú)效或者目的節(jié)點(diǎn)失效,將會(huì)返回一個(gè)錯(cuò)誤消息給IPv4主機(jī)。經(jīng)過(guò)這一確認(rèn)過(guò)程,包含該命令的IPv6數(shù)據(jù)包就被轉(zhuǎn)發(fā)給相應(yīng)的6LoWPAN節(jié)點(diǎn)。與此同時(shí),適配器還會(huì)啟動(dòng)一個(gè)定時(shí)器,如果該命令的應(yīng)答沒(méi)有在規(guī)定的時(shí)間內(nèi)返回,同樣會(huì)返回一個(gè)錯(cuò)誤信息給主機(jī)端;如果正常,適配器會(huì)收到6LoWPAN節(jié)點(diǎn)的數(shù)據(jù),該數(shù)據(jù)會(huì)被提取出來(lái),壓縮在IPv4報(bào)文中并發(fā)送給IPv4主機(jī)端。
圖4描述了報(bào)文經(jīng)由邊界路由器在IPv6客戶端和6LoWPAN網(wǎng)絡(luò)之間交換的通信過(guò)程。該通信過(guò)程分為兩個(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來(lái)連接特定的端口,所有來(lái)自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)命令是無(wú)效的,邊界路由器會(huì)發(fā)送一個(gè)錯(cuò)誤消息給IPv4主機(jī),避免再同6LoWPAN節(jié)點(diǎn)通信這一多余過(guò)程。
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邊界路由器之間則通過(guò)無(wú)線方式連接。設(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命令來(lái)測(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è)試過(guò)程中,利用sokit軟件,設(shè)定從PC上向6LoWPAN節(jié)點(diǎn)發(fā)送“Hello World?鄞”字符串?dāng)?shù)據(jù),利用抓包軟件wireshark進(jìn)行抓包,整個(gè)過(guò)程如圖8和圖9所示。
從圖中可以看出,在PC向6LoWPAN節(jié)點(diǎn)發(fā)送數(shù)據(jù)包的過(guò)程中,傳輸層的承載協(xié)議是UDP,成功抓取到了數(shù)據(jù)包的轉(zhuǎn)發(fā)過(guò)程。也從側(cè)面說(shuō)明6LoWPAN邊界路由器發(fā)揮了協(xié)議轉(zhuǎn)換的作用。
5 結(jié)束語(yǔ)
本文選取了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ú)線傳感網(wǎng)絡(luò)應(yīng)用中的多種場(chǎng)合,下一步計(jì)劃是將所設(shè)計(jì)的6LoWPAN邊界路由器應(yīng)用到無(wú)線抄表上。
參考文獻(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.