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