一种IPv6协议栈剪裁改进方案
2013-04-14泉州师范学院数学与计算机科学学院福建泉州362000
(泉州师范学院数学与计算机科学学院,福建 泉州362000)
无线传感器网络(Wireless Sensor Networks,WSN)是由大量具有无线通信能力与计算能力的微型节点以自组织方式构成的智能无线网络。WSN在国防军事、环境监测、智能城市等许多重要领域都有广阔的应用前景。在实际应用中,WSN一般不以孤立网络的形式存在,而是与因特网(Internet)相连,以便实现远程的管理与访问。随着Internet逐步进入下一代IPv6互联网,WSN和IPv6网络的结合成为当前的热点研究方向之一,在网络互联的可行性和互联方式方面,文献 [1]进行了比较全面的讨论。IPv6最初设计并没考虑嵌入式应用,所以要想在WSN中使用IPv6的关键就是要对IPv6协议栈进行剪裁以适用于WSN。笔者在现有IPv6协议栈剪裁研究的基础上提出了一种高效的IPv6报头压缩改进方案,并对改进方案的压缩性能进行了分析❶。
1 现有IPv6协议栈裁剪方案
IEEE 802.15.4标准定义了一个短距离、低复杂度、低功耗、低数据速率的介质访问控制层(MAC)和物理层(PHY)规范,非常适合 WSN的应用需求,因此被广泛应用于 WSN各种领域。IPv6标准报头是40字节,为了在IEEE 802.15.4上更加有效的传输IPv6数据包,剪裁IPv6协议栈的最有效方法就是压缩IPv6报头❶。
1.1 IPv6标准报头格式
IPv6标准报头长度为40字节,其结构如表1所示。
表1 IPv6标准报头结构
1.2 现有IPv6报头压缩方案
针对标准IPv6标准报头结构,6LoWPAN研究的报头压缩方案有2个:RFC4944和RFC6282。
1)RFC4944方案 RFC4944方案在最理想的情况下可将IPv6的标准首部压缩到2字节,即1字节首部压缩字段HC1和1字节跳数限制,HC1字节编码是标识IPv6报头中各字段的压缩方式,IPv6报头中未压缩的内容按顺序存放在未压缩字段中❷。该方案的IPv6报头压缩关键就在HC1。如表1所示,IPv6标准报头有8个字段,版本可以省略;由于在大多数WSN应用场景中,不需要流量控制,所以传输类型和流标签也可以省略;负载长度可以通过MAC帧的长度域计算出来,因此也可压缩;下一首部字段携带在HC1字节中;跳数限制字段不压缩,存放在未压缩字段中。剩下的是源地址和目的地址字段,RFC标准中规定IPv6地址采用无状态配置方式时,地址由64位前缀和64位接口标识符生成。IEEE 802.15.4定义2种寻址方式:64位扩展地址和16位短地址。每一个IEEE 802.15.4设备都分配一个EUI-64标识符,用作64位扩展地址进行寻址,具有全球唯一性,因此通过该标识符可以生成一个IPv6接口地址,实现IPv6地址的自动配置。16位短地址是在节点成功加入WSN网络后,由节点所在网络内的协调者动态分配,只能保证在该网络内的唯一性,不能用作实现IPv6地址的自动配置。因此如果IPv6地址为本地链路地址,而且IEEE 802.15.4寻址模式为扩展地址,就可以将IPv6地址压缩,否则就要将其放在未压缩字段中[2]。针对以上讨论,压缩的HC1字节编码如表2所示。
2)RFC6282方案 RFC6282方案是在RFC4944方案基础上提出的改进方案。该方案在最理想的情况下还是可以将IPv6完整的报头压缩到2字节,但是这2字节都是HC1字节编码。该方案中针对RFC4944方案的一个重要改进就是把原来没有压缩的1字节跳数限制字段压缩为2位,对其他压缩位重新排列组合,增加部分主要是添加了支持IPv6区分服务、流标签和扩展报头压缩等。该方案的HC1字节编码比较复杂,鉴于篇幅原因就不展开说明了。该方案在支持IPv6协议完整性和功能性上比较全面,但是缺点是太复杂,对于目前处理能力有限、能量受限、硬件资源匮乏的传感器节点来说并不实用❶。
因此,笔者结合RFC4944和RFC6282两个方案的优点,提出一个改进的IPv6协议栈剪裁方案。
表2 HC1字节具体编码格式
2 改进IPv6协议栈剪裁方案
改进方案是在RFC4944基础上结合RFC6282的优点提出,在最理想的情况下可将IPv6标准报头压缩到1字节。虽然RFC4944方案已经相当精简,但是该压缩方法仍然存在冗余。因为方案中对IPv6报头的跳数限制字段并没压缩,而RFC6282方案把跳数限制字段压成2bit,因为在实际应用中,1、64和255这3种跳数限制值是最常用的,也就是说这3个值已可满足大部分应用需求。因此,改进方案把RFC4944方案中未压缩的跳数限制字段压缩成2bit,并调整HC1字节编码的顺序和含义,使IPv6报头在理想情况下压缩成1字节的HC1。
现在将跳数限制压缩为2bit放在HC1中,如表3所示。RFC4944方案的HC1字节中前4bit标识IPv6源地址和目的地址的压缩状态,也有冗余,因为可根据上文的分析来判断IPv6接口标识符的压缩状态,如果IEEE 802.15.4 寻址模式为64位扩展地址,IPv6接口标识符直接压缩,而若是16位短地址寻址模式,IPv6接口标识符不压缩,直接放在随后的未压缩字段中。因此HC1字节中只需2bit标识IPv6源地址和目的地址前缀的压缩状态。另外RFC4944的HC1编码最后一位是“标识是否有下一个报头压缩(HC2)”,在改进方案中不需要HC2,所以该位也可省略。剩余的这一位在改进方案中用来标识多播域,因为IPv6中最重要的 “邻居发现协议”需要识别目的地址是否为多播地址,另外多播地址在路由方面有很重要的应用,用一位来标识目的地址的类别可节省后续很多计算资源。改进方案的HC1字节编码按照IPv6报头顺序重新排序,具体编码格式如表3所示。
表3 改进方案HC1字节具体编码格式
3 改进方案性能测试
3.1 性能分析
改进方案实际是在压缩IPv6之前加入HC1压缩控制首部,针对不同应用场景可以选择不同的压缩方案。当2个节点为邻居节点且跳数限制字段值为特殊值时,可以将40字节的IPv6头部压缩为1个字节。当内部节点和网关节点通信时,IPv6报头最短可压缩到3个字节,即1个字节控制首部,2个字节节点地址。当通信双方为一个内部节点和一个外部节点时,最好的情况是压缩到4个字节,即2个字节控制首部,2个字节节点地址。总之,在WSN内进行传输的大部分数据都能符合压缩方案的条件,而且都具有较高的压缩比,因此,对于WSN内全IPv6通信以及WSN同IPv6网络直接进行通信,改进方案都是一个比较理想的选择。
3.2 性能测试
试验采用的传感器节点是一个在研环境监测项目的研究成果,节点处理器为Atmega128,工作频率为8MHz;射频芯片为CC1100,采用3V供电;传感器节点上有温湿度传感器。试验使用5个传感器节点和1个网关节点组成星形网络,5个节点和网关的距离均在20m以内,所有节点都是单跳到达网关的,另外用一台PC机模拟IPv6网络。
影响WSN性能有2个很重要的指标:能量和丢包率。能量可以通过网络生存时间来体现,因此,笔者主要通过网络生存时间和丢包率2个指标来测试改进方案在WSN中的性能。
1)网络生存时间 WSN的能量大多消耗在数据传输和处理器指令处理上,剪裁方案的报头压缩可以缩短传输的数据报,降低数据传输的能耗,但是报头压缩会增加处理器指令,也就是会增加能耗,因此,试验将验证剪裁方案是否能增加网络生存时间。试验中5个节点数据发送速率均为250Kb/s,同时设定节点每隔10s采集一次温湿度数据并发送给网关节点,最后由网关节点把数据转发给PC机。试验分2组,一组是报头没压缩,一组是报头有压缩。实验结果是网络生存时间在报头没压缩情况下为84h,而有压缩的情况下达131h,使用改进方案压缩报头比不压缩报头的网络生存时间提高了近56%,因此报头压缩在处理器处理增加的能耗和传输节约的能耗相比还是有不少差距,节约的能耗明显更多。
2)丢包率 试验使用8个节点采样周期,即8个发送频率(周期的倒数),每个节点在每个频点发送2000个数据包,在PC端统计收到的数据包总数,从而计算得出整个网络的丢包率。试验还是分成压缩和没有压缩2组进行,试验结果如图1所示。
由图1结果分析,网络的丢包率和发送频率有关,发送频率越高,数据包在网络信道中产生冲突的概率越大,也就是丢包率越高;同时可以明显看出同样频率发送数据,没有压缩的情况下丢包率更高,所以数据包的长度越大,丢包率越高。
图1 网络丢包率统计比较图
4 结 语
针对WSN中IPv6协议栈剪裁方案的不足,笔者提出了高效可行的改进方案。在理想情况下,改进方案可将IPv6报文首部压缩为1个字节。试验结果表明,采用改进方案可以有效延长整体网络生存时间和减少丢包率。改进方案主要是针对网络层的报文首部进行压缩,后续研究可进一步研究运输层的报文压缩方案。另外,改进方案试验没有考虑WSN内部路由的情况,后续研究中应在有内部路由,网络规模更大的情况下进一步研究方案的适应性和有效性。
[1]侯惠峰,刘湘雯,于宏毅,等 .无线传感器网络与IPv6网络的互联方式研究 [J].电信科学,2006(6):56-62.
[2]苑乐,周华春,高德云,等 .基于6LoWPAN的IPv6传感器网络报头压缩方案的设计与实现 [J].现代电子技术,2011(17):75-81.