馬親民,戴光智
(1.華中師范大學(xué) 物理學(xué)院,武漢 430079;2.華南理工大學(xué);3.深圳職業(yè)技術(shù)學(xué)院)
馬親民(博士研究生、講師),研究方向為計算機網(wǎng)絡(luò)通信及網(wǎng)絡(luò)安全;戴光智(副教授),研究方向為計算機應(yīng)用及無損檢測。
無線傳感器網(wǎng)絡(luò)(WSN)是集成了傳感器、微機電、現(xiàn)代網(wǎng)絡(luò)和無線通信技術(shù),具有信息感知、采集和處理功能的綜合性智能通信系統(tǒng),在工業(yè)、農(nóng)業(yè)、環(huán)境、醫(yī)療、交通等領(lǐng)域具有廣泛的應(yīng)用[1]。2003年,IEEE標(biāo)準委員會發(fā)布了WSN方面的國際標(biāo)準IEEE 802.15.4正式版,目前已經(jīng)發(fā)展到2006版本。該標(biāo)準定義了WSN的物理層和MAC(Media Access Control,媒體訪問控制)層,2004年底業(yè)界成立的ZigBee聯(lián)盟正式通過鏈路層以上的協(xié)議規(guī)范,包括網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。目前IEEE 802.15.4標(biāo)準已經(jīng)和ZigBee標(biāo)準已經(jīng)在智能家居、醫(yī)療保健等低功耗、低速率通信環(huán)境中得到了廣泛的應(yīng)用。然而,ZigBee技術(shù)知識考慮了WSN內(nèi)部節(jié)點之間的互通,卻無法直接與外界網(wǎng)絡(luò)互連。為了解決IEEE 802.15.4不斷趨于成熟與ZigBee日益顯露出來的固有局限性之間的矛盾,同時考慮到無線個域網(wǎng)(Wireless Personal Area Networks,WPAN)的飛速發(fā)展,2004年11月因特網(wǎng)工程任務(wù)小組(Internet Engineering Task Force,IETF)成立6LoWPAN(IPv6over Low-power Wireless Personal Networks)工作組,目標(biāo)就是將IPv6融入到以IEEE 802.15.4作為底層協(xié)議標(biāo)準的WPAN中,物理層和MAC層采用IEEE 802.15.4協(xié)議,網(wǎng)絡(luò)層采用IPv6協(xié)議,從而實現(xiàn)WSN與Internet的無縫連接[2]。由于IPv6協(xié)議的龐大、復(fù)雜與WSN節(jié)點資源受限之間存在巨大差異,6LoWPAN協(xié)議的思想就是在這兩者之間增加一個中間層——適配層(Adaption Layer),來讓IPv6可以適配WSN。
目前實現(xiàn)WSN與IPv6互連的方式有三種:①僅網(wǎng)關(guān)支持IPv6;②僅某些特殊節(jié)點支持IPv6;③所有節(jié)點全部支持IPv6。①和②不能凸顯IPv6的特性和優(yōu)勢,反而需要進行額外的協(xié)議轉(zhuǎn)換工作,③中每個節(jié)點都有一個全球唯一的IPv6地址,可以實現(xiàn)WSN與IPv6的無縫連接,6LoWPAN適配層加在IPv6與IEEE 802.15.4的 MAC層之間,發(fā)揮著承上啟下的重要作用。與ZigBee相對比的網(wǎng)絡(luò)模型如圖1所示[3]。
圖1 IEEE 802.15.4、ZigBee、6LoWPAN之間的關(guān)系
IETF 6LoWPAN適配層主要的功能包括:地址配置、報文的分片和重組、IPv6報頭壓縮、路由、網(wǎng)絡(luò)管理等。本文主要分析和研究報文的分片和重組功能[3]。根據(jù)RFC2460協(xié)議規(guī)定,IPv6以下的鏈路層的最大傳輸單元MTU(Maximum Transmission Unit)最小應(yīng)該是1 280字節(jié)[5]。因此作為鏈路層的6LoPAN就要能夠接收1 280字節(jié)的數(shù)據(jù)包,并將其分成127字節(jié)以內(nèi)的IEEE 802.15.4能夠接收的MAC層的數(shù)據(jù)幀。
根據(jù)RFC2460協(xié)議規(guī)定IPv6數(shù)據(jù)包(packet)由基本頭部、0個或數(shù)個擴展頭部以及可變長的有效載荷三部分組成,其中基礎(chǔ)頭部包含了源和目的的128位IPv6地址,因此其長度規(guī)定稍長為40字節(jié)。而擴展頭部在原本就緊張的資源的WSN網(wǎng)絡(luò)中,通常不會用到。IPv6數(shù)據(jù)包及其基本頭部結(jié)構(gòu)如圖2所示。
圖2 IPv6數(shù)據(jù)包及其基本頭部結(jié)構(gòu)
IEEE 802.15.4MAC層的數(shù)據(jù)幀由三部分組成[6]:
◆MHR即MAC Header,包含有幀控制信息、地址信息以及安全信息等;
◆MAC Payload即MAC有效負載,是該層的SDU,存放6LoWPAN以及ZigBee數(shù)據(jù);
◆MFR即MAC尾部,為整個數(shù)據(jù)幀的校驗和。
IEEE 802.15.4MAC層幀格式如圖3所示。假設(shè)沒有使用安全頭,那么其中MAC頭部最大占用23字節(jié),如果地址域中的源和目的PAN ID啟用、源和目的地址全部使用長地址,加上幀校驗固定使用的2字節(jié),MAC幀中的控制部分最長將是25字節(jié)。當(dāng)然,如果不啟動PAN ID,全部使用短地址,控制信息就可以減小,可以容納更大的上層數(shù)據(jù)包。因此,當(dāng)該層不適用任何安全機制的情況下,允許最大的負載長度為127-25=102字節(jié)[3]。
圖3 IEEE 802.15.4MAC層幀格式
如果MAC啟動安全機制,又會增加控制信息的字節(jié)數(shù),它們所增加的開銷如表1所列。
表1 IEEE 802.15.4MAC層安全級別及其開銷
按照最高安全級別即AES-CCM-128計算,那么剩下的載荷空間將只有127-25-21=81字節(jié)。而對于IPv6協(xié)議而言,最小的數(shù)據(jù)包都是1 280字節(jié),因此必須要將IPv6數(shù)據(jù)報進行分片和重組,這就是6LoWPAN的中心工作之一[8]。
如果整個的IPv6數(shù)據(jù)報可以全部填充到一個IEEE 802.15.4的幀里面去,就無需分片處理。如果IPv6的數(shù)據(jù)報超過了,就需要進行分片處理。6LoWPAN的分片幀有兩種起始片幀(First Fragment)、后續(xù)片幀(Subsequent Fragments)兩種(注:沒有結(jié)尾片幀),除了最后一個分片幀外,其余分片幀的封裝數(shù)據(jù)都應(yīng)該是8位的整數(shù)倍。其中起始片幀頭以5位二進制組合11000開頭,隨后依次是datagram_size字段、datagram_tag字段,如下所示。
?
后續(xù)片幀頭以5位二進制組合11100開頭,隨后依次是datagram_size字段、datagram_tag字段和datagram_offset字段,包括最后一個分片也是如此結(jié)構(gòu),如下所示:
?
其中固定的二進制組合11000是固定格式搭配,表示是經(jīng)過分片的數(shù)據(jù)幀。
datagram_size(數(shù)據(jù)報長度):一個11比特的組合,表示在分片之前的IPv6數(shù)據(jù)報的原始長度,該原始數(shù)據(jù)報經(jīng)過6LoWPAN分片之后的所有分片幀的該字段值全部相等。該字段可以看出,它能允許的上層IPv6數(shù)據(jù)報的最大長度為211=2 048字節(jié),符合IPv6對鏈路層最小MTU 1 280字節(jié)的規(guī)定。很顯然,只要起始分片包含了datagram_size就夠了,后續(xù)分片可以將其省略從而減少開銷。但是,在每個分片中包含datagram_size帶來一個好處:方便接收端完成分片的重組工作。因為在接收端,不排除有后續(xù)分片早與起始分片到達的可能,這時接收方很容易提前知道要重組的原始IPv6數(shù)據(jù)報有多大,從而準備好緩沖區(qū)。這個格式的安排以較少的開銷換取處理效率的提高,也在一定程度上防止了基于IPv4的分組重組攻擊[9]。
datagram_tag(數(shù)據(jù)報標(biāo)記):用來標(biāo)識一個被拆分的IPv6數(shù)據(jù)報,所以同一個數(shù)據(jù)報的所有分片的該字段的值全部相等。該字段16位長,可以標(biāo)識216個數(shù)據(jù)報,其初始值可以根據(jù)需要自己定義。發(fā)送端在每發(fā)送一個完整的IPv6數(shù)據(jù)報之后,將其自加1,達到65535之后,又重新折返回0,依次循環(huán)。以IEEE 802.15.4標(biāo)準規(guī)定的LR-WPAN網(wǎng)絡(luò)最快的速率是250kbps計算,65 535×1 280/250=335s,也就是說要出現(xiàn)重復(fù)標(biāo)記的,需要5min多的時間[10]。
datagram_offset(數(shù)據(jù)報偏移):該字段僅在后續(xù)分片中出現(xiàn),是一個8字節(jié)長度的自增1的數(shù)據(jù),用來標(biāo)識該分片在重組時的排列序號。
作為接收端的對應(yīng)6LoWPAN適配層,收到了分片之后的數(shù)據(jù)幀,進行數(shù)據(jù)包重組的步驟依次如下[8-9]:
① 根據(jù)片頭2位的組合判斷是否是分片數(shù)據(jù)幀。如果是11,說明是,繼續(xù)執(zhí)行b;否則進行別的相應(yīng)處理,本文暫不涉及。
②根據(jù)MAC源地址以及分片幀頭部的datagram_tag字段的8字節(jié)內(nèi)容去查找緩存空間,判斷是否是首次接收到該IPv6數(shù)據(jù)報的分片幀。如果是,將datagram_tag的值進行緩存,建立一個單鏈表并講其基本信息填入鏈表表頭,以便接收該IPv6數(shù)據(jù)報的其他分片;否則直接往下執(zhí)行。
③根據(jù)幀頭部5位的組合來判斷是否為起始分片。如果是,將新生成的節(jié)點接入單鏈表;否則根據(jù)datagram_offset字段判斷該分片的相對位置,并據(jù)此將新的節(jié)點插入到單鏈表中。
④判斷同一個原始IPv6數(shù)據(jù)包的所有分片是否全部接收完畢。如果是,就對鏈表進行處理,提取出數(shù)據(jù)信息首尾相連組成原始IPv6數(shù)據(jù)包,然后將該數(shù)據(jù)包送上層處理,并釋放緩沖區(qū),接著開始接收后面的分片;如果沒有接收完畢,就跳到最開始等待新的分片幀的到來。
整個處理流程如圖4所示。
圖4 數(shù)據(jù)包重組程序處理流程
本文在PC機上 Windows 7 Professional環(huán)境下,用Visual C++模擬實現(xiàn)上述的IPv6數(shù)據(jù)包的分片和重組過程。測試用例是嚴格按照IPv6的基本頭部結(jié)構(gòu)和UDP的頭部結(jié)構(gòu)封裝成長度不同的16個IPv6原始數(shù)據(jù)包,其中長度最長的是1 280字節(jié)(因為按照IPv6運行于IEEE 802.15.4的規(guī)定,其 MTU為1 280字節(jié))。程序模擬結(jié)果中,這些IPv6原始數(shù)據(jù)都分解成為由2~13(1 280/102=12.54)個分片進行發(fā)送,接收端收到數(shù)據(jù)之后對其進行緩沖、排隊、數(shù)據(jù)提取、重裝成原始的IPv6數(shù)據(jù)包。結(jié)果截圖如圖5所示。
圖5 計算機模擬6LoWPAN分片重組
實驗結(jié)果表明,在6LoWPAN適配層的作用下,以IEEE 802.15.4作為底層協(xié)議的無線傳感器網(wǎng)絡(luò)可以支持IPv6協(xié)議,從而實現(xiàn)全IP式的WSN,為傳感器網(wǎng)絡(luò)開辟了嶄新的廣闊的應(yīng)用市場。
[1]孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.
[2]向浩,李堃,袁家斌.基于6LoWPAN的IPv6無線傳感器網(wǎng)絡(luò)[J].南京理工大學(xué)學(xué)報:自然科學(xué)版,2010(1):56-60.
[3]ZigBee Alliance.Understanding ZigBee gateway,2010.
[4]Montenegro G,Kushalnagar,Hui J,etal.Transmission of IPv6Packets over IEEE 802.15.4Networks[S].RFC4944,Sep.2007.
[5]Deering S,Hinden R.Internet Protocol Version6(IPv6)Specification[S].RFC2460,December 1998.
[6]IEEE Std 802.15.4-2006,Wireless Medium Access Control(MAC)and Physical Layer(PHY)Specifications for Low Rate Wireless Personal Area Networks(WPANs)[S].IEEE Computer Society,2006.
[7]N Kushalnagar,G Montenegro,C Schumacher.IETF RFC 4919,IPv6over Low-Power Wireless Personal Area Networks (6LoWPANs):Overview,Assumptions,Problem Statement,and Goals[S],2007.
[8]IETF 6LoWPAN Group[OL].[2013-10].http://datatracker.ietf.org/wg/61owpan/.
[9]李鳳國.基于6LoWPAN的無線傳感器網(wǎng)絡(luò)研究與實現(xiàn)[D].南京:南京郵電大學(xué),2013.
[10]李海.6LoWPAN適配層研究與實現(xiàn)[D].上海:華東師范大學(xué),2007.