无线传感器网络IPv6路由协议报文分片重组的方法

文档序号:7814425阅读:305来源:国知局
无线传感器网络IPv6路由协议报文分片重组的方法
【专利摘要】本发明公开一种无线传感器网络IPv6路由协议报文分片重组的方法,6LowPAN适配层利用首分片IP头部的信息,构建虚拟IP帧,并根据RPL缓存下一跳路由,使剩余分片能够不再经IP重组直接发往下一跳节点,从而降低端到端时延,提高存储空间利用率,从而改善IPv6数据报分片重组传输的性能。
【专利说明】无线传感器网络IPv6路由协议报文分片重组的方法

【技术领域】
[0001]本发明属于通信【技术领域】,具体涉及一种无线传感器网络IPv6路由协议报文分片重组的方法。

【背景技术】
[0002]当前无线传感器网络(Wireless Sensor Network,WSN)存在体制多样,协议不同,互联互通存在困难的特点。传感网IEEE802.15.4仅对物理层和介质访问控制(MAC)层给出了规范,Zigbee协议提供了网络层及以上的通信协议,但仍无法实现到IP网络的无缝联接。针对与现有IP网络的互联互通问题,近年来IETFdnternet工程任务组)开展了深入研究,成立了 6LoWPAN 工作组,研究制定在 LoWPAN(Low-Power Wireless Personal AreaNetworks)上运行IPv6 (Internet Protocol Vers1n 6)协议栈的一系列技术与标准,利用IEEE802.15.4链路支持基于IP的通信,遵守开放标准以及保证与其它IP设备的互操作性,使WSN节点可以IP化。与传统的因特网TCP/IP协议体系结构相比,6LoWPAN在层次结构上多了一个适配层,该层是保证6LoWPAN网络正常运行的关键,主要完成IPv6协议帧的分片重组,巾贞头压缩及mesh-under路由等过程。
[0003]在6LoWPAN (IPv6 over Low-Power Wireless Personal Area Networks,基于 IPv6的低功耗无线个域网)网络中,数据包的传输需要多个中间节点的转发。数据包由源到目的节点需要经过两个过程:转发和路由。RFC4919指出6LoWPAN中的路由协议应满足路由过程低开销,内存占用小,支持休眠机制以减少能量消耗等要求。此外,IPv6协议中规定的链路层最小 MTU (maximum transmiss1n unit)为 1280bytes,而 IEEE802.15.4 物理层 MTU为127bytes,数据巾贞控制开销最多要消耗25bytes,因此数据链路层只有102bytes可用。当一个IP数据报经过报头压缩后长度大于102bytes时,源节点或者中间节点的适配层须对其进行分片,然后接收节点或者中间节点对其进行重组恢复完整数据报,减少IPv6协议在IEEE802.15.4协议上实现的障碍。根据路由协议在协议栈的位置不同可以分为两类:一类为Mesh-under,路由决策在6LoWPAN适配层,利用mesh报头进行简单的二层转发;另一类为Route-over,路由决策在网络层,主要为IETF ROLL工作组提出的RPL (IPv6 RoutingProtocol for LLNs)协议。
[0004]Mesh-under路由协议具有简单、快速、低开销等优点,但其缺陷也十分明显。第一,Mesh路由是在适配层上进行,因此传感器网络将不具有任何IP化的特征。第二,现有互联网的网络管理和诊断工具都是基于IP的,这些工具不适用于Mesh-under路由。第三,Mesh-under路由不支持超大规模组网,可扩展性差。
[0005]Route-over路由转发是真正适合6LoWPAN网络的转发方式,这种方式对适配层的数据格式没有任何特殊要求,网络层收到数据报时,适配层已完成了数据报的解压缩过程。然而传统的基于Route-over协议的IP报文分片重组中,每个中间节点都可作为一个IP路由器,数据报由源节点逐跳转发至目的节点。在转发过程中,适配层每接收到一个分片,都会将其复制到重组缓存区中,待所有的分片都到达并进入缓存区,整个IP报文的分片重组完成,适配层将其送至网络层进行路由获取下一跳节点的IP地址。随后,适配层重新对该数据包进行分片,根据获取的下一跳MAC地址将分片发送出去,直至数据报到达目的节点,重组完成并送至上层。然而,这种方法存在很大问题,即数据报在每个中间节点都要进行重组分片才转发出去,在一些无线通信条件下,例如频分双工、竞争信道等,都会增加IP报文端到端到传输时延,此外,中间节点需要缓存每一个到来的分片直至重组恢复出完整的数据包,若出现重组失败,则会导致存储空间利用率低,计算复杂。


【发明内容】

[0006]本发明所要解决的是现有无线传感器网络6LowPAN协议中Route-over分片重组过程中数据报逐跳重组分片然后才转发而造成端到端时延增大、存储空间利用率低的问题,提供一种无线传感器网络IPv6路由协议报文分片重组的方法。
[0007]为解决上述问题,本发明是通过以下技术方案实现的:
[0008]无线传感器网络IPv6路由协议报文分片重组的方法,包括如下步骤:
[0009]步骤1,利用接收到的第一个分片解压缩后得到的IPv6头部信息,构建虚拟IP帧,再根据RPL缓存的路由确定下一跳路由节点;即
[0010]适配层接收IP报文,并检查收到帧的分片头部,如果该分片为第一个分片,则进行首部解压缩恢复IPv6的头部,并记录源目的IP地址。接着,根据目的IP地址判断该分片是否需要转发,若需要则利用IPv6头部构建一个虚拟IP数据报,并通过查找路由表获取下一跳节点的IP地址,进而得到下一跳MAC地址。
[0011]步骤2,根据解压缩后得到的目的IP地址判断接收到分片的节点是中间节点还是目的节点;若是中间节点,则创建转发映射表;若是目的节点,则送进重组缓存,开始数据报重组过程;
[0012]步骤3,中间节点接收到后续分片,查找转发映射表,根据转发映射表将分片发送至下一跳。
[0013]所述步骤I中,对第一个分片解压缩后得到的IPv6头部信息,包括版本号(Vers1n),通信量等级(Ttraffic Class),流标记(Flow Label),有效负载长度(PayloadLength),下一个报头(Next Header),跳数限制(Hop Limit)和源目的IP地址。
[0014]所述步骤I中,RPL缓存的路由直接查找路由表获取,无需重新路由发现。
[0015]所述步骤I中,还进一步包括,若接收到的是非分片报文,直接进行首部解压缩;若首先接收到的是后续分片而不是第一个分片,则直接丢弃该分片。
[0016]所述步骤2中,创建的转发映射表包括,curTag即当前的TAG标识符,nextTag即新的TAG标识符,同一 IP数据包所有分片在每个中间跳都要更新TAG标识符,nextMacAddr即下一跳节点的MAC地址,parentMacAddr即源节点的MAC地址,totalOfFrag即分片前报文总长度,countOfFrag即已经处理的分片长度,指针next即用于同一个节点构建多个数据报的转发映射表。
[0017]所述步骤2中,还进一步包括,通过重组定时器Tfrag发出定时信号以发现重组过程的错误。
[0018]所述步骤3中,还进一步包括,若查找到映射表失败,说明该数据报第一分片丢失或者映射表构建失败,直接将该分片丢弃,等待下一个数据分片的到来。
[0019]与现有技术相比,本发明在6LowPAN适配层利用数据报首分片的IP头部信息,构建虚拟IP帧,并根据RPL缓存下一跳路由,使剩余分片能够不再经IP重组直接发往下一跳节点,解决现有RPL分片重组过程中数据报逐跳重组分片再转发的问题,降低端到端时延,提高存储空间利用率,从而改善IPv6数据报分片重组传输的性能。

【专利附图】

【附图说明】
[0020]图1为传统基于RPL路由协议的分片重组转发方法(图左)与本发明无线传感器网络IPv6路由协议报文分片重组的方法(图右)的对比图。
[0021]图2为本发明的IPv6数据报分片流程图。
[0022]图3为本发明的IPv6数据报转发流程图。
[0023]图4为本发明的IPv6数据报重组流程图。

【具体实施方式】
[0024]为使本发明的目的、技术方案和优点更加清晰,下面将结合附图对本发明进行详细描述。
[0025]附图1为传统基于RPL路由协议的分片重组转发方法(图左)与本发明无线传感器网络IPv6路由协议报文分片重组的方法(图右)的对比图。在本发明中,6LowPAN适配层利用首分片IP头部的信息,构建虚拟IP帧,并根据RPL缓存下一跳路由,使剩余分片能够不再经IP重组直接发往下一跳节点,从而降低端到端时延。此外,本发明的关键还在于,中间节点的6LoWPAN适配层在转发过程中构建虚拟IP帧和转发映射,分片的重组只需要在所有分片到达目的节点时进行。
[0026]基于上述原理所涉及的一种无线传感器网络IPv6路由协议报文分片重组的方法,主要包括三个过程:分片过程、转发过程、重组过程,这3个过程都是由适配层执行,下面具体介绍一下每个过程的具体流程:
[0027](I)分片过程,参照附图2:
[0028](1.1)初始化,初始化压缩之前的头部长度uncomp_hdr_len及已处理的61owpan头部总长度rime_hdr_len (包括分片首部,IPHC,IPv6首部未压缩字段,NHC, UDP首部未压缩字段)为O。
[0029](1.2)首部压缩。调用IP首部压缩功能完成IPv6头部压缩,并将压缩后的头部存入缓存中,无需头部压缩的则直接跳过。更新rime_hdr_len及uncomp_hdr_len。
[0030](1.3)判断是否需要分片。若 uip_len-uncomp_hdr_len>MAC_MAX_PAYLOAD-framer_hdrIen-rime_hdr_len,即IP数据报的长度大于链路层的MTU,则需要进行分片。其中,uip_len等于数据报的总长度,MAX_PAYL0AD为链路层MTU(102字节),framer_hdrlen为MAC层巾贞头。若不需要分片,直接将载荷装入数据缓存区(packet_buf)的数据部分。
[0031](1.4)生成分片I(FRAGl)。生成FRAGl头部:dispatch,分片前的报文长度datagram_size、分片标识符 datagram_tag。更新 rime_hdr_len,等于 61owpan 头部长度加上分片头长度。然后利用rime_hdr_len更新packet_buf的载荷长度rime_payload_len,即 rime_payload_len = (MAC_MAX_PAYLOAD-framer_hdrlen-rime_hdr_len) &0xf8? 再将rime_payload_len长的IPv6载荷填入packet_buf后续缓存中。最后将FRAGl发送到MAC层,发送至下一跳,并更新processed_ip_out_len,表示已经处理的分片长度。
[0032](1.5)生成后续分片(FRAGN)。与FRAGl相同,只是头部信息多了一项datagram_offset,表示分片在报文中的位置,此外,FRAGN不需要保留首部压缩生成的61owpan头部。
[0033](1.6)判断是否分片完毕。若 uip_len-processed_ip_out_len〈rime_payload_len,则分片完毕,datagram_tag加I,全局变量清O,释放packet_buf。否则,重复步骤(1.5)。
[0034](2)转发过程,参照附图3:
[0035](2.1)初始化。初始化uncomp_hdr_len及rime_hdr_len为O,将数据缓存区packet_buf的指针rime_ptr初始化为缓存的开头处,并给映射表分配内存。
[0036](2.2)获取头部信息。适配层接收到来自MAC层的数据报,对packet_buf中的第一首部进行判断,如果为分片头部,则提取分片信息:分片前的报文长度datagram_SiZe、分片标识符datagram_tag、分片在报文中的位置datagram_offset,更新rime_hdr_len为分片头部长度,后移rime_ptr至rime_ptr+rime_hdr_len。若为分片1,设置相应标志位first_fragment为I,若为最后一个分片,设置相应标志位last_fragment为I。
[0037](2.3)首部解压缩。如果是分片1,调用IP首部解压缩功能对数据报头部进行解压缩,获取源目的IP地址,并将恢复的IPv6头部填入适配层缓存区61owpan_buf ;如果是后续分片N,跳过首部解压缩,转至步骤(2.7);如果是没有压缩过的头部,则直接将头部信息复制到61owpan_buf中。
[0038](2.4)构建虚拟IP巾贞。将IPv6头从61owpan_buf复制到uip缓存中,数据部分用“O”补齐。
[0039](2.5)确定下一跳路由。查找RPL路由表,获取下一跳路由的IP地址,进而得到下一跳路由的MAC地址。
[0040](2.6)构建映射表。将转发映射项表示为一个链表MapNode {curTag, nextMacAddr,parentMacAddr, totalOfFrag, countOfFrag, MapNode*next},其中 curTag 表不当前的 TAG标识符,nextTag表示新的TAG标识符,同一 IP数据包所有分片在每个中间跳都要更新TAG标识符,nextMacAddr表示下一跳节点的MAC地址,parentMacAddr表示源节点的MAC地址,totalOfFrag是分片前报文总长度,countOfFrag表示已经处理的分片长度,指针next用于同一个节点构建多个数据报的映射表。当中间节点收到某个数据报的第I个分片时,根据上述信息建立转发映射,将虚拟IP帧送回适配层,首部压缩并提取首分片,转发出去。
[0041](2.7)转发后续分片。适配层收到后续分片,查找映射表,若查找成功,则根据转发映射表将分片转发至下一跳节点,更新countOfFrag ;若查找失败,则直接丢弃该分片。此夕卜,若countOfFrag = totalOfFrag,表示该数据报的分片全部接收。
[0042](2.8)数据载荷重组。目的节点每收到一个数据报的分片,适配层都会将其放入重组缓存区,待所有的分片接收完毕,适配层对数据报进行重组恢复出完整的IPv6数据报文,然后将其送至网络层。此外,目的节点的适配层收到第一个分片时,会启动一个定时器Tftag,如果定时器到期分片仍未到齐,节点会将先前接收到的所有分片丢弃,等待新数据报的到来。
[0043](3)重组过程,参照附图4:
[0044]本发明中数据报重组只会在目的节点进行,中间节点不需要对数据报分片进行重组。
[0045](3.1)获取首部信息。提取分片首部信息(datagram_size, datagram_tag, datagram_offset)。
[0046](3.2)重组初始化。首先判断61oWpan_buf中是否有数据,即是否有数据报正在进行重组,若有数据报正在进行重组且新收到的分片或数据报与正在重组的分片不属于同一个数据报文,则丢弃该分片,返回。若没有数据报正在重组且收到的是分片,则进行重组初始化,设置重组标志 reas_tag = datagram_tag,重组缓存长度 61owpan_len = datagram_size,启动重组定时器。
[0047](3.3)首部解压缩。与上述转发过程的步骤(2.3)相同。
[0048](3.4)数据报载荷重组。将MAC层缓存中的数据载荷复制到61owpan_buf中。对于非分片数据报,更新61owpan_len,而对于分片数据报,则更新processed_ip_in_len,表示已经重组的数据长度。
[0049](3.5)判断是否得到完整数据报。对于分片报文,若processed_ip_in_len =61owpan_len,则表示重组完成,得到了原始的IPv6报文。对于非分片报文,processed_ip_in_len = O。将数据报从61owpan_buf复制到IP层缓存区uip_buf中,上传至网络层。最后,将 61owpan_len 和 processed_ip_in_len 重置为 O。
【权利要求】
1.无线传感器网络IPv6路由协议报文分片重组的方法,其特征是,包括如下步骤: 步骤1,利用接收到的第一个分片解压缩后得到的IPv6头部信息,构建虚拟IP帧,再根据RPL缓存的路由确定下一跳路由节点; 步骤2,根据解压缩后得到的目的IP地址判断接收到分片的节点是中间节点还是目的节点;若是中间节点,则创建转发映射表;若是目的节点,则送进重组缓存,开始数据报重组过程; 步骤3,中间节点接收到后续分片,查找转发映射表,根据转发映射表将分片发送至下一跳。
2.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤I中,对第一个分片解压缩后得到的IPv6头部信息,包括版本号,通信量等级,流标记,有效负载长度,下一个报头,跳数限制和源目的IP地址。
3.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤I中,RPL缓存的路由直接查找路由表获取。
4.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤I中,还进一步包括,若接收到的是非分片报文,直接进行首部解压缩;若首先接收到的是后续分片而不是第一个分片,则直接丢弃该分片。
5.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤2中,创建的转发映射表包括,curTag即当前的TAG标识符,nextTag即新的TAG标识符,同一 IP数据包所有分片在每个中间跳都要更新TAG标识符,nextMacAddr即下一跳节点的MAC地址,parentMacAddr即源节点的MAC地址,totalOfFrag即分片前报文总长度,countOfFrag即已经处理的分片长度,指针next即用于同一个节点构建多个数据报的转发映射表。
6.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤2中,还进一步包括,通过重组定时器Tfrag发出定时信号以发现重组过程的错误。
7.根据权利要求1所述的无线传感器网络IPv6路由协议报文分片重组的方法,其特征是, 所述步骤3中,还进一步包括,若查找到映射表失败,说明该数据报第一分片丢失或者映射表构建失败,直接将该分片丢弃,等待下一个数据分片的到来。
【文档编号】H04L12/951GK104202268SQ201410471839
【公开日】2014年12月10日 申请日期:2014年9月16日 优先权日:2014年9月16日
【发明者】李晓记, 陈晶晶, 张之义, 孙少鹏, 郑霖, 刘争红 申请人:桂林电子科技大学, 中国电子科技集团公司第五十四研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1