李洋
(武漢信息傳播職業(yè)技術(shù)學(xué)院,湖北 武漢 430223)
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)主要包含了底層的硬件、設(shè)備驅(qū)動、操作系統(tǒng)、上層應(yīng)用。
6LoWPAN邊界路由器能夠幫助一些能力上受限制的6LoWPAN邊節(jié)點(diǎn)接入IPv6網(wǎng)絡(luò),對以上目的進(jìn)行實(shí)現(xiàn),這個(gè)邊界的路由設(shè)備在硬件設(shè)計(jì)方面有著良好的協(xié)議執(zhí)行能力、處理的能力。本文設(shè)計(jì)的6LoWPAN邊界路由器硬件結(jié)構(gòu)設(shè)計(jì)還包含以太網(wǎng)接入部分、6LoWPAN網(wǎng)絡(luò)接入部分,這兩個(gè)部分能夠應(yīng)用串口實(shí)施連接。
以太網(wǎng)的接入部分主控芯片的選用是Ralink科技公司的SOC芯片RT5350F,這個(gè)芯片是一顆高性能MIPS 24Kc CPU內(nèi)核,最高的主頻則是在360 MHz,較高主頻能夠確保處理能力。另外,這個(gè)部分采用16 MB Flash閃存作為程序的存儲器,應(yīng)用32 MB的16 bit SDRAM作為內(nèi)存,嵌入完整的TCP/IP網(wǎng)絡(luò)協(xié)議,能夠?qū)崿F(xiàn)網(wǎng)絡(luò)通信功能的強(qiáng)大需求,并且還有著充足的空間作為安裝程序、依賴庫,對用戶功能的擴(kuò)展需求進(jìn)行滿足。
為實(shí)現(xiàn)這兩種異構(gòu)網(wǎng)絡(luò)之間的互連,邊界的路由器應(yīng)該有著IPv6、6LoWPAN的標(biāo)準(zhǔn)。雖然說6LoWPAN協(xié)議主要是由IPv6協(xié)議所轉(zhuǎn)變的,但是這個(gè)協(xié)議還有著自己特殊的性質(zhì),包含了一個(gè)適配層,實(shí)現(xiàn)IP數(shù)據(jù)包在IEEE 802.15.4鏈路上的傳輸。因?yàn)镮Pv6數(shù)據(jù)包最大的傳輸單位是1 280 B,IEEE802.15.4定義MAC層的每一幀的長度為127 B,造成了IPv6數(shù)據(jù)報(bào)和IEEE802.15.4幀在長度上的不匹配,一些IPv6數(shù)據(jù)包不能完整的放進(jìn)一個(gè)IEEE802.15.4幀中實(shí)施傳輸,為對其問題進(jìn)行解決,IPv6數(shù)據(jù)包通常需要在適配層實(shí)施分片、重組,另外還需壓縮數(shù)據(jù)包頭部,適應(yīng)IEEE802.15.4幀的大小。
按照以上資料分析得知,就6LoWPAN邊界路由器協(xié)議棧部分的設(shè)計(jì),先實(shí)現(xiàn)了IPv6和6LoWPAN協(xié)議棧,之后經(jīng)過SLIP協(xié)議在兩種協(xié)議棧間建立串行通信的鏈路,促使兩種異構(gòu)網(wǎng)絡(luò)能夠經(jīng)過該鏈路傳輸IP數(shù)據(jù),實(shí)現(xiàn)兩種異構(gòu)網(wǎng)絡(luò)的通信。
IPv6接入模塊建立主要是采用OpenWrt操作系統(tǒng)來完成。該系統(tǒng)使用uClibc、busybox和shell解釋器等,通過嵌入式Linux工具,提供硬件抽象層和軟件包管理,系統(tǒng)的內(nèi)部組成。用戶只需要重新編譯uClibc和軟件包以匹配目標(biāo)架構(gòu),從而獲得在不同嵌入式設(shè)備上相同的應(yīng)用程序。鑒于OpenWrt嵌入式系統(tǒng)的諸多優(yōu)點(diǎn),它非常適合應(yīng)用于IP網(wǎng)絡(luò)接入模塊。
6LoWPAN接入模塊主要是基于Conki操作系統(tǒng)實(shí)現(xiàn),該系統(tǒng)作為一個(gè)可以高度移植、支持多任務(wù)環(huán)境并且開源免費(fèi)的嵌入式操作系統(tǒng),非常適合用于6LoWPAN接入模塊的設(shè)計(jì)。該系統(tǒng)的軟件結(jié)構(gòu)主要由 uIP協(xié)議棧、Rime協(xié)議棧和上層應(yīng)用程序所組成的。
1.uIP是一個(gè)小型的符合RFC規(guī)范的TCP/IP協(xié)議棧,使得Conki可以直接和Internet通信。uIP協(xié)議棧主要任務(wù)是處理由底層驅(qū)動收到的數(shù)據(jù)包,或者將需要轉(zhuǎn)發(fā)的數(shù)據(jù)包交由底層設(shè)備驅(qū)動來實(shí)現(xiàn)數(shù)據(jù)包轉(zhuǎn)發(fā)。
2.MAC層的Rime是一個(gè)輕量級的、為低功耗無線傳感器網(wǎng)絡(luò)設(shè)計(jì)的協(xié)議棧,該協(xié)議棧提供了大量的通信原語,能夠?qū)崿F(xiàn)從簡單的一跳廣播通信到復(fù)雜的可靠多跳數(shù)據(jù)傳輸?shù)韧ㄐ殴δ堋?/p>
3.上層應(yīng)用程序主要包括橋接程序和邊界路由程序。前者用于通過SLIP串口實(shí)現(xiàn)數(shù)據(jù)包向RPL接口的轉(zhuǎn)發(fā),它是RPL數(shù)據(jù)收發(fā)轉(zhuǎn)換的中間層。后者負(fù)責(zé)向IP接入模塊請求本節(jié)點(diǎn)的子網(wǎng)前綴,初始化6LoWPAN接入模塊,并定時(shí)維護(hù)組建的6LoWPAN網(wǎng)絡(luò)。
兩個(gè)協(xié)議棧之間通道的建立主要借助tun虛擬網(wǎng)卡驅(qū)動和SLIP協(xié)議來實(shí)現(xiàn)。其中,tun虛擬網(wǎng)卡驅(qū)動主要用來接收來自TCP/IP協(xié)議棧的網(wǎng)絡(luò)數(shù)據(jù)包并發(fā)送,或者反過來將接收到的網(wǎng)絡(luò)數(shù)據(jù)包傳給協(xié)議棧處理;同時(shí)該部分還要承擔(dān)在點(diǎn)對點(diǎn)設(shè)備傳輸過程中,對數(shù)據(jù)包進(jìn)行相應(yīng)封裝的任務(wù)。至于封裝格式,主要由點(diǎn)對點(diǎn)設(shè)備傳輸方式?jīng)Q定,本文采用的是SLIP協(xié)議,是在鏈路層上傳輸?shù)拇芯€路網(wǎng)際協(xié)議,主要對要傳輸?shù)腎P數(shù)據(jù)包進(jìn)行簡單的封裝,即加上相應(yīng)的頭部和尾部,并對數(shù)據(jù)包進(jìn)行適當(dāng)?shù)男薷模乐诡^部和尾部的誤判。
以上通道的建立主要在OpenWrt系統(tǒng)上實(shí)現(xiàn),通過一個(gè)tunslip6程序來建立相應(yīng)的虛擬網(wǎng)卡和SLIP封裝。
在邊界路由器的射頻接口接收到6LoWPAN子網(wǎng)發(fā)送來的比特流后,先需要經(jīng)過適配層對數(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)闆]有目的端的路由,丟棄;如果不屬于,則轉(zhuǎn)發(fā)到IPv6接入模塊。在IPv6接入模塊中,先判斷是否存在目的地址的路由,如果存在,則直接發(fā)送到相應(yīng)的IPv6主機(jī);如果不存在目的端的路由,則應(yīng)進(jìn)行鄰居發(fā)現(xiàn)操作,根據(jù)結(jié)果對數(shù)據(jù)包做出相應(yīng)處理。
為驗(yàn)證本文設(shè)計(jì)的6LoWPAN邊界路由器是否能夠連通IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò),進(jìn)行了連通性測試。測試過程中除了邊界路由器外,還包括兩個(gè)6LoWPAN傳感器節(jié)點(diǎn)和一臺IPv6主機(jī)。需要先放置兩個(gè)傳感器節(jié)點(diǎn)在離邊界路由器10 m左右距離的位置,邊界路由器通過LAN口和IPv6主機(jī)連接。因?yàn)閷?shí)驗(yàn)室沒有提供IPv6網(wǎng)絡(luò)的接入,所以邊界路由器的WAN口暫不使用。之后在IPv6主機(jī)上分別對兩個(gè)傳感器節(jié)點(diǎn)進(jìn)行ping命令測試。從測試結(jié)果可以看出,響應(yīng)時(shí)間在30 ms內(nèi),并且數(shù)據(jù)包無丟失,能夠保證IPv6網(wǎng)絡(luò)和6LoWPAN網(wǎng)絡(luò)的數(shù)據(jù)的轉(zhuǎn)發(fā)和路由。
綜上所述,基于OpenWrt操作系統(tǒng)的6LoWPAN邊界路由器的實(shí)現(xiàn)方法,通過在邊界路由器上分別實(shí)現(xiàn)兩種協(xié)議棧,在協(xié)議棧之間建立SLIP通道來實(shí)現(xiàn)數(shù)據(jù)包在兩種異構(gòu)網(wǎng)絡(luò)之間的轉(zhuǎn)發(fā)和路由。對邊界路由器進(jìn)行ping命令的測試,證明這個(gè)方案是可行的,可以實(shí)現(xiàn)6LoWPAN網(wǎng)絡(luò)和IPv6網(wǎng)絡(luò)主機(jī)之間的通信。在實(shí)際應(yīng)用過程中,能夠作為物聯(lián)網(wǎng)設(shè)備接入互聯(lián)網(wǎng)的中間網(wǎng)關(guān)設(shè)備隨著物聯(lián)網(wǎng)設(shè)備的大量使用,這個(gè)設(shè)備具有廣闊的應(yīng)用前景。