马亲民,戴光智
(1.华中师范大学 物理学院,武汉 430079;2.华南理工大学;3.深圳职业技术学院)
马亲民(博士研究生、讲师),研究方向为计算机网络通信及网络安全;戴光智(副教授),研究方向为计算机应用及无损检测。
无线传感器网络(WSN)是集成了传感器、微机电、现代网络和无线通信技术,具有信息感知、采集和处理功能的综合性智能通信系统,在工业、农业、环境、医疗、交通等领域具有广泛的应用[1]。2003年,IEEE标准委员会发布了WSN方面的国际标准IEEE 802.15.4正式版,目前已经发展到2006版本。该标准定义了WSN的物理层和MAC(Media Access Control,媒体访问控制)层,2004年底业界成立的ZigBee联盟正式通过链路层以上的协议规范,包括网络层、传输层和应用层。目前IEEE 802.15.4标准已经和ZigBee标准已经在智能家居、医疗保健等低功耗、低速率通信环境中得到了广泛的应用。然而,ZigBee技术知识考虑了WSN内部节点之间的互通,却无法直接与外界网络互连。为了解决IEEE 802.15.4不断趋于成熟与ZigBee日益显露出来的固有局限性之间的矛盾,同时考虑到无线个域网(Wireless Personal Area Networks,WPAN)的飞速发展,2004年11月因特网工程任务小组(Internet Engineering Task Force,IETF)成立6LoWPAN(IPv6over Low-power Wireless Personal Networks)工作组,目标就是将IPv6融入到以IEEE 802.15.4作为底层协议标准的WPAN中,物理层和MAC层采用IEEE 802.15.4协议,网络层采用IPv6协议,从而实现WSN与Internet的无缝连接[2]。由于IPv6协议的庞大、复杂与WSN节点资源受限之间存在巨大差异,6LoWPAN协议的思想就是在这两者之间增加一个中间层——适配层(Adaption Layer),来让IPv6可以适配WSN。
目前实现WSN与IPv6互连的方式有三种:①仅网关支持IPv6;②仅某些特殊节点支持IPv6;③所有节点全部支持IPv6。①和②不能凸显IPv6的特性和优势,反而需要进行额外的协议转换工作,③中每个节点都有一个全球唯一的IPv6地址,可以实现WSN与IPv6的无缝连接,6LoWPAN适配层加在IPv6与IEEE 802.15.4的 MAC层之间,发挥着承上启下的重要作用。与ZigBee相对比的网络模型如图1所示[3]。
图1 IEEE 802.15.4、ZigBee、6LoWPAN之间的关系
IETF 6LoWPAN适配层主要的功能包括:地址配置、报文的分片和重组、IPv6报头压缩、路由、网络管理等。本文主要分析和研究报文的分片和重组功能[3]。根据RFC2460协议规定,IPv6以下的链路层的最大传输单元MTU(Maximum Transmission Unit)最小应该是1 280字节[5]。因此作为链路层的6LoPAN就要能够接收1 280字节的数据包,并将其分成127字节以内的IEEE 802.15.4能够接收的MAC层的数据帧。
根据RFC2460协议规定IPv6数据包(packet)由基本头部、0个或数个扩展头部以及可变长的有效载荷三部分组成,其中基础头部包含了源和目的的128位IPv6地址,因此其长度规定稍长为40字节。而扩展头部在原本就紧张的资源的WSN网络中,通常不会用到。IPv6数据包及其基本头部结构如图2所示。
图2 IPv6数据包及其基本头部结构
IEEE 802.15.4MAC层的数据帧由三部分组成[6]:
◆MHR即MAC Header,包含有帧控制信息、地址信息以及安全信息等;
◆MAC Payload即MAC有效负载,是该层的SDU,存放6LoWPAN以及ZigBee数据;
◆MFR即MAC尾部,为整个数据帧的校验和。
IEEE 802.15.4MAC层帧格式如图3所示。假设没有使用安全头,那么其中MAC头部最大占用23字节,如果地址域中的源和目的PAN ID启用、源和目的地址全部使用长地址,加上帧校验固定使用的2字节,MAC帧中的控制部分最长将是25字节。当然,如果不启动PAN ID,全部使用短地址,控制信息就可以减小,可以容纳更大的上层数据包。因此,当该层不适用任何安全机制的情况下,允许最大的负载长度为127-25=102字节[3]。
图3 IEEE 802.15.4MAC层帧格式
如果MAC启动安全机制,又会增加控制信息的字节数,它们所增加的开销如表1所列。
表1 IEEE 802.15.4MAC层安全级别及其开销
按照最高安全级别即AES-CCM-128计算,那么剩下的载荷空间将只有127-25-21=81字节。而对于IPv6协议而言,最小的数据包都是1 280字节,因此必须要将IPv6数据报进行分片和重组,这就是6LoWPAN的中心工作之一[8]。
如果整个的IPv6数据报可以全部填充到一个IEEE 802.15.4的帧里面去,就无需分片处理。如果IPv6的数据报超过了,就需要进行分片处理。6LoWPAN的分片帧有两种起始片帧(First Fragment)、后续片帧(Subsequent Fragments)两种(注:没有结尾片帧),除了最后一个分片帧外,其余分片帧的封装数据都应该是8位的整数倍。其中起始片帧头以5位二进制组合11000开头,随后依次是datagram_size字段、datagram_tag字段,如下所示。
?
后续片帧头以5位二进制组合11100开头,随后依次是datagram_size字段、datagram_tag字段和datagram_offset字段,包括最后一个分片也是如此结构,如下所示:
?
其中固定的二进制组合11000是固定格式搭配,表示是经过分片的数据帧。
datagram_size(数据报长度):一个11比特的组合,表示在分片之前的IPv6数据报的原始长度,该原始数据报经过6LoWPAN分片之后的所有分片帧的该字段值全部相等。该字段可以看出,它能允许的上层IPv6数据报的最大长度为211=2 048字节,符合IPv6对链路层最小MTU 1 280字节的规定。很显然,只要起始分片包含了datagram_size就够了,后续分片可以将其省略从而减少开销。但是,在每个分片中包含datagram_size带来一个好处:方便接收端完成分片的重组工作。因为在接收端,不排除有后续分片早与起始分片到达的可能,这时接收方很容易提前知道要重组的原始IPv6数据报有多大,从而准备好缓冲区。这个格式的安排以较少的开销换取处理效率的提高,也在一定程度上防止了基于IPv4的分组重组攻击[9]。
datagram_tag(数据报标记):用来标识一个被拆分的IPv6数据报,所以同一个数据报的所有分片的该字段的值全部相等。该字段16位长,可以标识216个数据报,其初始值可以根据需要自己定义。发送端在每发送一个完整的IPv6数据报之后,将其自加1,达到65535之后,又重新折返回0,依次循环。以IEEE 802.15.4标准规定的LR-WPAN网络最快的速率是250kbps计算,65 535×1 280/250=335s,也就是说要出现重复标记的,需要5min多的时间[10]。
datagram_offset(数据报偏移):该字段仅在后续分片中出现,是一个8字节长度的自增1的数据,用来标识该分片在重组时的排列序号。
作为接收端的对应6LoWPAN适配层,收到了分片之后的数据帧,进行数据包重组的步骤依次如下[8-9]:
① 根据片头2位的组合判断是否是分片数据帧。如果是11,说明是,继续执行b;否则进行别的相应处理,本文暂不涉及。
②根据MAC源地址以及分片帧头部的datagram_tag字段的8字节内容去查找缓存空间,判断是否是首次接收到该IPv6数据报的分片帧。如果是,将datagram_tag的值进行缓存,建立一个单链表并讲其基本信息填入链表表头,以便接收该IPv6数据报的其他分片;否则直接往下执行。
③根据帧头部5位的组合来判断是否为起始分片。如果是,将新生成的节点接入单链表;否则根据datagram_offset字段判断该分片的相对位置,并据此将新的节点插入到单链表中。
④判断同一个原始IPv6数据包的所有分片是否全部接收完毕。如果是,就对链表进行处理,提取出数据信息首尾相连组成原始IPv6数据包,然后将该数据包送上层处理,并释放缓冲区,接着开始接收后面的分片;如果没有接收完毕,就跳到最开始等待新的分片帧的到来。
整个处理流程如图4所示。
图4 数据包重组程序处理流程
本文在PC机上 Windows 7 Professional环境下,用Visual C++模拟实现上述的IPv6数据包的分片和重组过程。测试用例是严格按照IPv6的基本头部结构和UDP的头部结构封装成长度不同的16个IPv6原始数据包,其中长度最长的是1 280字节(因为按照IPv6运行于IEEE 802.15.4的规定,其 MTU为1 280字节)。程序模拟结果中,这些IPv6原始数据都分解成为由2~13(1 280/102=12.54)个分片进行发送,接收端收到数据之后对其进行缓冲、排队、数据提取、重装成原始的IPv6数据包。结果截图如图5所示。
图5 计算机模拟6LoWPAN分片重组
实验结果表明,在6LoWPAN适配层的作用下,以IEEE 802.15.4作为底层协议的无线传感器网络可以支持IPv6协议,从而实现全IP式的WSN,为传感器网络开辟了崭新的广阔的应用市场。
[1]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[2]向浩,李堃,袁家斌.基于6LoWPAN的IPv6无线传感器网络[J].南京理工大学学报:自然科学版,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的无线传感器网络研究与实现[D].南京:南京邮电大学,2013.
[10]李海.6LoWPAN适配层研究与实现[D].上海:华东师范大学,2007.