专利名称:一种6LoWPAN协议中地址压缩控制表的维护方法
技术领域:
本发明属于基于IPv6的低速无线个域网技术领域,尤其涉及一种6LoWPAN协议中地址压缩控制表的维护方法。
背景技术:
为了更好的理解本发明的背景技术,可以参考以下技术资料RFC 4944, Transimission of IPv6 Packets over IEEE802.15. 4 Networksdraft-ietf-61owpan-hc-07, Compression Format for IPv6 Datagrams in 6LoffPAN Networksdraft-ietf-61owpan-nd-09, Neighbor Discovery Optimization for Low-power and Lossy Networks
无线个人局域网(WPAN)是一种采用无连接的个人局域网。2003年7月,IEEE为 LR-WPAN推出了 IEEE802. 15. 4技术标准,该协议主要定义了物理层(PHY)和媒体访问控制层(MAC)的协议,主要应用场合是自动化读表、自动化控制和传感器网络。IEEE802. 15. 4专注于低速率、低功耗的短距离无线连接,最高速率仅为2501ApS,电池寿命可达6个月到2 年,是一种经济高效、低复杂度、低功耗、低数据率和低成本的无线网络技术。最早在IEEE802. 15. 4上提出网络层协议的是ZigBee联盟,他们定义了网络层和应用层的数据帧格式和交互方式,然而ZigBee协议无法与现有的IP网络直接通信,因此人们又提出了 6LoWPAN协议,6LoWPAN是为了能使无线传感器网络和IPv6网络互联互通而设计的一个协议,可以说是IPv6为应用于无线传感器网络环境而设计的简化版。6LoWPAN所具有的低功率运行的潜力使它很适合应用于从手持机到仪器的设备中,同时对AES-U8加密的支持也为无线网络提供了强健的安全性。为了能在802. 15. 4链路上高效的传输IPv6的报文,61owpan在链路层和网络层之间引入了适配层,通过适配层来大量降低IPv6报文的传输开销。这种“pay as you go”式的包头压缩方法去除了 IP包头中的冗余或不必要的网络信息,IP包头在接收时从链路级 802. 15. 4包头的相关域中得到这些网络级信息。IEEE802. 15. 4的物理层MTU值为127字节,数据帧控制开销最多要消耗25字节, 因此数据链路层只有102字节可用;数据链路层安全算法要消耗21字节(AES-CCM-128占用21字节,AES-CCM-64占用13字节,AES-CCM-32占用9字节),对于网络层负载只有81字节可用;再考虑40字节IPv6包头和8字节UDP包头,剩余33字节给应用层使用;因此简化 IPv6包头势在必行。61owpan适配层报头压缩的基本原理是将ipv6包头中的字段提取出来组成新的包头,用一个字节的dispatch字段标识后续哪些字段使用何种方式进行了简化。在最佳情况下,40字节的IPv6地址可以压缩为一个字节的压缩字段和1字节的hop limit字段。 61owpan适配层数据包头格式如图1至3所示。为了实现IPv6包头的压缩功能,RFC4944定义了 L0WPAN_HC1报头和L0WPAN_BC0报头,L0WPAN_HC1报头压缩的是IPv6报文,L0WPAN_BC0包头压缩的是广播报文。L0WPAN_ HCl数据包头格式如图4所示,其中, SA :IPv6源地址压缩控制 DA :IPv6目的地址压缩控制 TF 流量类别和流标签字段控制 NH 下一包头字段控制 HC2 :HC2 压缩控制(UDP、I CMP, TCP)
源IPv6地址和目的IPv6地址在40字节的IPv6包头中一共占用了 32字节,是最大的一部分开销。L0WPAN_HC1包头允许从链路层地址生成IPv6地址,具体方法是使用48bits 的mac地址生成EUI-64地址,然后用本地链路网络前缀和生成的EUI-64
地址组合成本地链路的IPv6地址。由于L0WPAN_HC1只适用于压缩本地链路的IPv6 地址,而对于全局地址无法适用,只能在后续包头中包含完整的32字节IPv6地址。因此有人提出了 L0WPAN_IPHC报头,它依赖于一张整个网络共享的CONTEXT表,用4bits作为表项的索引CID,对应有16个表项,每个表项存储一个IPv6地址的64位前缀(采用定长64 位IPv6地址前缀方案);这样我们就可以有16个被索引的网络,每个网络的64bits前缀可以用4bits的索引CID代替,对一个IPv6地址就节约了 60bits的包头空间。如图5所示,6L0WPAN_IPHC压缩报头格式,L0WPAN_IPHC的编码字段如下TF 流量类别和流标签字段控制;NH 下一头字段控制;HLIM 跳数字段限制;CID CONTEXT索引字段控制;SAC :IPv6 源地址压缩控制;SAM :IPv6源地址压缩模式;M 多播压缩控制;DAC :IPv6目标地址压缩控制;DAM :IPv6目标地址压缩模式。当CONTEXT表维护算法得出某个地址前缀被数据包高频率使用时,需要将该前缀放入CONTEXT表中,协调器节点将CONTEXT表项进行更新操作,需要对整个网络进行同步; 其中协调器节点将向各结点广播CONTEXT更新表项,其报文采用eiowpan邻居发现协议中的CONTEXT选项格式,报文格式如图6所示,其中CID项占4个比特的空间。基于IPv6的无线传感器网络使用eiowpan协议在网络内部进行通讯,为了适应 IEEE802. 15. 4的短帧长数据帧和无线传感器网络的低功率特性,elowpan协议在数据链路层和网络层之间增加了一个适配层,其主要目的是对网络层的IPv6包头及网络层以上的包头部分进行压缩,去除冗余数据,达到网络流量的优化效果。最新的6LoWPAN协议采用的使IPHC包头压缩算法,该算法的核心思想使维护一张全网同步的CONTEXT表,使用该表为包头压缩提供支持。L0WPAN_IPHC压缩报头采用CONTEXT表来辅助压缩IPv6地址,然而要使的整个网络任意结点都能正确识别压缩后的eiowpan数据包,则必须将CONTEXT表同步到整个网络中,往往会造成较大的时延。而L0WPAN_IPHC采用CONTEXT表的初衷是为了用CID代替IPv6 地址前缀,以达到减少包头,降低网络中流量的目的。但是CONTEXT表的引入本身又需要管理开销,这样又给整个网络中增加了管理数据流量。特别是CONTEXT表项的更新,CONTEXT 每一项更新都需要保证更新项能被同步到整个网络的结点中去,因此造成了客观上的网络流量的增多。另一方面,如果CONTEXT表项更新算法设计的不好,在网络突发流量的时候可能会导致表项的频繁更新,从而加重网络负载。
发明内容
为了解决上述网络负载较大的技术问题,本发明提供了一种6LoWPAN协议中地址压缩控制表的维护方法,包括如下步骤
A、在协调器节点中生成控制表和地址缓存表,所述控制表由多个表项组成,每个表项包括对应索引号CID的IPV6地址前缀项、效力项和权重项,所述地址缓存表由多个表项组成,每个表项包括IPV6地址前缀项、效力项和权重项;其中,效力项具有有效和无效两个状态;
B、在所述地址缓存表中,将与有效的效力项对应的权重项的数值减Ni,若权重项的数值小于或等于阈值M1,则将对应的效力项设置为无效;
C、在所述控制表中,将与有效的效力项对应的权重项的数值减N2,若权重项的数值小于或者等于阈值M2,则将对应的效力项设置为无效;
D、判断所述控制表中是否存在无效的效力项,若有则在所述地址缓存表的有效的效力项中,找出数值最大的权重项,将该效力项置为无效;
E、将所述数值最大的权重项对应的IPV6地址前缀填入所述控制表中无效的效力项对应的IPV6地址前缀项中,并将所述控制表中对应的效力项置为有效,协调器节点将包含所述IPV6地址前缀和对应的索引号CID的报文发送到相邻的子节点上;
其中,Ni、N2、Ml和M2是正整数。优选地,在步骤D中,若不存在无效的效力项,则执行如下步骤
G、所述地址缓存表的有效的效力项中最大权重项的数值,是否大于K倍所述控制表的有效的效力项中最小权重项的数值,若是则执行步骤H ;
H、将所述最大权重项对应的IPV6地址前缀项与所述最小权重项对应的IPV6地址前缀项互换数值;将所述最小权重项的数值置为a与所述最大权重项的数值除以K的和,将所述地址缓存表中所述最大权重项对应的效力项置为无效,将所述控制表中所述最小权重项对应的效力项置为有效;
其中a和K是正整数。优选地,所述协调器节点在接收到数据包后执行以下步骤
步骤Al、所述协调器节点在接收到的数据包中提取源IPV6地址前缀和目的IPV6地址前缀,若数据包包含有索引号CID的6LoWPAN包头,则执行步骤A2 ;否则执行步骤A3 ; 步骤A2、在所述控制表中,对与步骤Al中所述索引号CID对应的权重项的数值加N3 ; 步骤A3、对所述地址缓存表执行以下步骤
步骤A31、若存在所述源IPV6地址前缀或目的IPV6地址前缀,则将对应的权重项的数值加N4 ;否则查找是否存在状态是无效的效力项;
步骤A32、若存在状态是无效的效力项,则将所述源IPV6地址前缀或目的IPV6地址前缀写入与该效力项对应的IPV6地址前缀项中,并将该效力项的状态设置为有效,对应的权重项的数值设置为M3 ;
步骤A33、若不存在状态是无效的效力项,则将与数值最小的权重项对应的IPV6地址前缀项中,写入所述源IPV6地址前缀或目的IPV6地址前缀,并将对应的权重项的数值设置为M3 ;
其中N3、N4和M3是正整数。
优选地,在所述步骤A2中,若所述索引号CID对应的权重项的数值为一定数值M4, 则保持该数值不变;在所述步骤A31中,若所述对应的权重项的数值为一定数值M5,则保持该数值不变;其中M4和M5是正整数。优选地,所述索引号CID长度是4比特,所述效力项长度是1比特,所述控制表的权重项长度是6比特,所述地址缓存表的权重项长度是7比特;所述m=N2=N3=N4=l, Μ1=Μ2=0,Κ=2, Μ3=4, Μ4=63, Μ5=127。本发明针是6L0WPAN无线传感器网络上基于L0WPAN_IPHC的CONTEXT表维护算法。该方法在现有的L0WPAN_IPHC压缩包头和CONTEXT设计的基础上,具有如下优点
1.在CONTEXT表和CONTEXT地址缓存表中都有一项weight权重项,用该字段保存该 IPv6地址前缀在6lowpan网络中出现的频率,使得我们可以在其中调度出高频率的IPv6地址前缀保存在CONTEXT表中。2.为能使得占少量几个比特空间的权重项能表示尽量多的出现频率值,在算法中采用了计时器定时对全部的权值进行递减操作,而在每个IPv6地址前缀在数据包中出现时又进行增操作,这样的方式可以保证近期活跃的IPv6地址前缀可以获得更高的权重。3.将流经协调器结点的数据包中的地址前缀进行统计,获得IPv6地址前缀的出现频率,并以频率权值的形式保存在CONTEXT地址缓存表中。4.在中间结点(路由器结点)中引入了上联CONTEXT表和下联CONTEXT表,使得分层同步算法成为可能,分层同步算法使每个结点仅同步自己的子结点,这样使得基于IPHC 的6LowPAN协议在大规模网络应用时可能出现的CONTEXT表更新延迟问题得到有效的减缓。5.在更新CONTEXT表项的时候引入了防抖动系数,防止出现频率相近的IPv6地址前缀而产生的CONTEXT表项频繁更新问题。综上,本发明避免了由于频繁更新CONTEXT表项而导致的网络带宽资源浪费和能量消耗,保证近期活跃的IPv6地址前缀可以获得更高的权重,以使网络达到优化。同时又提出了 CONTEXT表的分层同步算法,使得基于IPHC的6LowPAN协议在大规模网络应用时可能出现的CONTEXT表更新延迟问题得到有效的减缓。
图1是一般的IPV6数据报文格式;
图2是LowPanJCl压缩IPV6数据报文格式;
图3是LowPanJCl压缩IPV6数据报文并通过L2层Mesh方式传输格式; 图4是6L0WPAN_HC1压缩报头格式; 图5是6L0WPAN_IPHC压缩报头格式; 图6是6L0WPAN邻居发现协议中的CONTEXT更新项格式; 图7是CONTEXT表分层同步算法示意图; 图8是本发明的一种具体实施例的流程图。
具体实施例方式以下将结合附图,对本发明的具体实施例作进一步详细说明。
本发明的6LoWPAN协议中地址压缩控制表的维护方法的一种具体实施例,包括如下步骤
A、在协调器节点中生成控制表和地址缓存表,所述控制表由多个表项组成,每个表项包括对应索引号CID的IPV6地址前缀项、效力项和权重项,所述地址缓存表由多个表项组成,每个表项包括IPV6地址前缀项、效力项和权重项;其中,效力项具有有效和无效两个状态;
B、在所述地址缓存表中,将与有效的效力项对应的权重项的数值减Ni,若权重项的数值小于或等于阈值M1,则将对应的效力项设置为无效;
C、在所述控制表中,将与有效的效力项对应的权重项的数值减N2,若权重项的数值小于或者等于阈值M2,则将对应的效力项设置为无效;
D、判断所述控制表中是否存在无效的效力项,若有则在所述地址缓存表的有效的效力项中,找出数值最大的权重项,将该效力项置为无效;
E、将所述数值最大的权重项对应的IPV6地址前缀填入所述控制表中无效的效力项对应的IPV6地址前缀项中,并将所述控制表中对应的效力项置为有效,协调器节点将包含所述IPV6地址前缀和对应的索引号CID的报文发送到相邻的子节点上;
其中,Ni、N2、Ml和M2是正整数。本发明的6LoWPAN协议中地址压缩控制表的维护方法的更为具体的实施例中,首先在协调器节点中生成控制表,或者称之为CONTEXT表,用于CID索引IPV6地址前缀,网络中每个叶结点和根结点都保留一份CONTEXT表,中间结点保留2份CONTEXT表,分别为上联 CONTEXT表(或者称为上联控制表)和下联CONTEXT表(或者称为下联控制表),其中协调器节点属于根节点;端节点属于叶节点,不能转发数据包;中间节点位于端节点和协调器节点之间,能转发数据包;其中CONTEXT表格式如下
权利要求
1.一种6LoWPAN协议中地址压缩控制表的维护方法,其特征是,包括如下步骤A、在协调器节点中生成控制表和地址缓存表,所述控制表由多个表项组成,每个表项包括对应索引号CID的IPV6地址前缀项、效力项和权重项,所述地址缓存表由多个表项组成,每个表项包括IPV6地址前缀项、效力项和权重项;其中,效力项具有有效和无效两个状态;B、在所述地址缓存表中,将与有效的效力项对应的权重项的数值减Ni,若权重项的数值小于或等于阈值Ml,则将对应的效力项设置为无效;C、在所述控制表中,将与有效的效力项对应的权重项的数值减N2,若权重项的数值小于或者等于阈值M2,则将对应的效力项设置为无效;D、判断所述控制表中是否存在无效的效力项,若有则在所述地址缓存表的有效的效力项中,找出数值最大的权重项,将该效力项置为无效;E、将所述数值最大的权重项对应的IPV6地址前缀填入所述控制表中无效的效力项对应的IPV6地址前缀项中,并将所述控制表中对应的效力项置为有效,协调器节点将包含所述IPV6地址前缀和对应的索引号CID的报文发送到相邻的子节点上;其中,Ni、N2、Ml和M2是正整数。
2.如权利要求1所述的6LoWPAN协议中地址压缩控制表的维护方法,其特征是在步骤D中,若不存在无效的效力项,则执行如下步骤G、所述地址缓存表的有效的效力项中最大权重项的数值,是否大于K倍所述控制表的有效的效力项中最小权重项的数值,若是则执行步骤H;H、将所述最大权重项对应的IPV6地址前缀项与所述最小权重项对应的IPV6地址前缀项互换数值;将所述最小权重项的数值置为a与所述最大权重项的数值除以K的和,将所述地址缓存表中所述最大权重项对应的效力项置为无效,将所述控制表中所述最小权重项对应的效力项置为有效;其中a和K是正整数。
3.如权利要求1所述的6LoWPAN协议中地址压缩控制表的维护方法,其特征是,所述协调器节点在接收到数据包后执行以下步骤步骤Al、所述协调器节点在接收到的数据包中提取源IPV6地址前缀和目的IPV6地址前缀,若数据包包含有索引号CID的6LoWPAN包头,则执行步骤A2 ;否则执行步骤A3 ;步骤A2、在所述控制表中,对与步骤Al中所述索引号CID对应的权重项的数值加N3 ;步骤A3、对所述地址缓存表执行以下步骤步骤A31、若存在所述源IPV6地址前缀或目的IPV6地址前缀,则将对应的权重项的数值加N4 ;否则查找是否存在状态是无效的效力项;步骤A32、若存在状态是无效的效力项,则将所述源IPV6地址前缀或目的IPV6地址前缀写入与该效力项对应的IPV6地址前缀项中,并将该效力项的状态设置为有效,对应的权重项的数值设置为M3 ;步骤A33、若不存在状态是无效的效力项,则将与数值最小的权重项对应的IPV6地址前缀项中,写入所述源IPV6地址前缀或目的IPV6地址前缀,并将对应的权重项的数值设置为M3 ;其中N3、N4和M3是正整数。
4.如权利要求3所述的6LoWPAN协议中地址压缩控制表的维护方法,其特征是在所述步骤A2中,若所述索引号CID对应的权重项的数值为一定数值M4,则保持该数值不变; 在所述步骤A31中,若所述对应的权重项的数值为一定数值M5,则保持该数值不变;其中M4 和M5是正整数。
5.如权利要求4所述的6LoWPAN协议中地址压缩控制表的维护方法,其特征是所述索引号CID长度是4比特,所述效力项长度是1比特,所述控制表的权重项长度是6比特, 所述地址缓存表的权重项长度是7比特;所述m=N2=N3=N4=l,M1=M2=0,K=2, Μ3=4, Μ4=63, Μ5=127。
全文摘要
本发明公开了一种6LoWPAN协议中地址压缩控制表的维护方法,包括如下步骤在协调器节点生成控制表和地址缓存表;在地址缓存表和控制表中分别将有效的效力项对应的权重项的数值减N1和N2,若地址缓存表和控制表中的权重项的数值分别不大于阈值M1和M2,则分别将对应的效力项设置为无效;判断控制表中是否存在无效的效力项,若有则在地址缓存表的有效的效力项中,找出数值最大的权重项,将该效力项置为无效;将数值最大的权重项对应的IPV6地址前缀填入控制表中无效的效力项对应的IPV6地址前缀项中,并将控制表中对应的效力项置为有效,协调器节点将包含IPV6地址前缀和对应的索引号CID的报文发送到相邻的子节点上。
文档编号H04L29/12GK102202106SQ20111013050
公开日2011年9月28日 申请日期2011年5月19日 优先权日2011年5月19日
发明者华贵斌, 吴俊华, 吴双桥, 江勇, 赵倩 申请人:清华大学深圳研究生院