你好!欢迎来到深圳市品慧电子有限公司!
全国统一服务电话:(+86)-755-2950 0800
当前位置:品慧电子 >> 产品知识 >> 6LoWPAN适配层分片重组的研究与实现

6LoWPAN适配层分片重组的研究与实现


摘要: 对比ZigBee技术,分析了全IP传感器网络的实现方式,在IEEE 802.15.4和IPv6之间增加6LoWPAN适配层,从而实现WSN对IPv6的无缝对接。接着分析了IPv6和IEEE 802.15.4之间数据格式的差别,由此给出了对原始IPv6数据包进行分片重组的方案。最后,通过程序验证了方案的可行性。

引言

无线传感器网络(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(IPv6 over Lowpower 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。

1 6LoWPAN适配层分析

1.1 6LoWPAN网络模型

目前实现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之间的关系

图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层的数据帧。

1.2 IPv6报文格式

根据RFC2460协议规定IPv6数据包(packet)由基本头部、0个或数个扩展头部以及可变长的有效载荷三部分组成,其中基础头部包含了源和目的的128位IPv6地址,因此其长度规定稍长为40字节。而扩展头部在原本就紧张的资源的WSN网络中,通常不会用到。IPv6数据包及其基本头部结构如图2所示。

图2 IPv6数据包及其基本头部结构

图2 IPv6数据包及其基本头部结构

1.3 IEEE 802.15.4 MAC层的数据帧格式

IEEE 802.15.4MAC层的数据帧由三部分组成[6]:

◆ MHR即MAC Header,包含有帧控制信息、地址信息以及安全信息等;
◆ MAC Payload即MAC有效负载,是该层的SDU,存放6LoWPAN以及ZigBee数据;
◆ MFR即MAC尾部,为整个数据帧的校验和。

IEEE 802.15.4 MAC层帧格式如图3所示。假设没有使用安全头,那么其中MAC头部最大占用23字节,如果地址域中的源和目的PAN ID启用、源和目的地址全部使用长地址,加上帧校验固定使用的2字节,MAC帧中的控制部分最长将是25字节。当然,如果不启动PAN ID,全部使用短地址,控制信息就可以减小,可以容纳更大的上层数据包。因此,当该层不适用任何安全机制的情况下,允许最大的负载长度为127-25=102字节[3]。

图3 IEEE 802.15.4 MAC层帧格式

图3 IEEE 802.15.4 MAC层帧格式

如果MAC启动安全机制,又会增加控制信息的字节数,它们所增加的开销如表1所列。

表1 IEEE 802.15.4 MAC层安全级别及其开销

表1 IEEE 802.15.4 MAC层安全级别及其开销

按照最高安全级别即AESCCM128计算,那么剩下的载荷空间将只有1272521=81字节。而对于IPv6协议而言,最小的数据包都是1 280字节,因此必须要将IPv6数据报进行分片和重组,这就是6LoWPAN的中心工作之一[8]。

2 6LoWPAN适配层数据报的分片
  如果整个的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标准规定的LRWPAN网络最快的速率是250 kbps计算,65 535×1 280/250=335 s,也就是说要出现重复标记的,需要5 min多的时间[10]。

  datagram_offset(数据报偏移):该字段仅在后续分片中出现,是一个8字节长度的自增1的数据,用来标识该分片在重组时的排列序号。

3 6LoWPAN适配层数据报的重组
  作为接收端的对应6LoWPAN适配层,收到了分片之后的数据帧,进行数据包重组的步骤依次如下[89]:
① 根据片头2位的组合判断是否是分片数据帧。如果是11,说明是,继续执行b;否则进行别的相应处理,本文暂不涉及。

② 根据MAC源地址以及分片帧头部的datagram_tag字段的8字节内容去查找缓存空间,判断是否是首次接收到该IPv6数据报的分片帧。如果是,将datagram_tag的值进行缓存,建立一个单链表并讲其基本信息填入链表表头,以便接收该IPv6数据报的其他分片;否则直接往下执行。

③ 根据帧头部5位的组合来判断是否为起始分片。如果是,将新生成的节点接入单链表;否则根据datagram_offset字段判断该分片的相对位置,并据此将新的节点插入到单链表中。

④ 判断同一个原始IPv6数据包的所有分片是否全部接收完毕。如果是,就对链表进行处理,提取出数据信息首尾相连组成原始IPv6数据包,然后将该数据包送上层处理,并释放缓冲区,接着开始接收后面的分片;如果没有接收完毕,就跳到最开始等待新的分片帧的到来。
  整个处理流程如图4所示。

图4 数据包重组程序处理流程

图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分片重组

图5 计算机模拟6LoWPAN分片重组

实验结果表明,在6LoWPAN适配层的作用下,以IEEE 802.15.4作为底层协议的无线传感器网络可以支持IPv6协议,从而实现全IP式的WSN,为传感器网络开辟了崭新的广阔的应用市场。

参考文献

[1] 孙利民,李建中,陈渝,等. 无线传感器网络[M]. 北京:清华大学出版社, 2005.
[2] 向浩,李堃,袁家斌. 基于6LoWPAN的IPv6无线传感器网络[J].南京理工大学学报:自然科学版,2010(1):5660.
[3] ZigBee Alliance.Understanding ZigBee gateway, 2010.
[4] Montenegro G, Kushalnagar, Hui J, etal.Transmission of IPv6 Packets 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.42006,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,IPv6 over LowPower Wireless Personal Area Networks (6LoWPANs):Overview, Assumptions, Problem Statement, and Goals [S],2007.
[8] IETF 6LoWPAN Group [OL]. [201310]. http://datatracker.ietf.org/wg/61owpan/.
[9] 李凤国. 基于6LoWPAN的无线传感器网络研究与实现[D]. 南京:南京邮电大学,2013.
[10] 李海. 6LoWPAN适配层研究与实现[D]. 上海:华东师范大学,2007.
马亲民(博士研究生、讲师),研究方向为计算机网络通信及网络安全;戴光智(副教授),研究方向为计算机应用及无损检测。

用户评论

发评论送积分,参与就有奖励!

发表评论

评论内容:发表评论不能请不要超过250字;发表评论请自觉遵守互联网相关政策法规。

热门推荐

    联系品慧电子
    • 电话:+86-0755-2950 0800
    • 传真:+86-0755-2973 8675
    • 微信:联系客服
    • QQ:800009589