重庆邮电大学 6LoWPAN调研报告
HC_ICMP编码具体格式如下:
★ Type(bit 0)
· 0:不压缩,在链路上传输
· 1:Type字段在HC_ICMP编码字段的Compressed Type字段中指出 ★ Code(bit 1)
· 0:不压缩,在链路上传输 · 1:Code字段为0 ★ Reserved(bit 2)
· 0:该32位被全部或部分使用,不压缩,在链路上传输 ·1:ICMPv6报文头部后面的头32位是保留的,在这里被省去 ★ Compressed(bit 3-7)
·bit 3指出当前是错误报文还是信息报文(错误报文的最高位为0,而信息报文的最高位为1,所以bit 3实际上对应ICMPv6头部Type字段的最高位)。bit 4到7则对应这ICMPv6 Type字段的低4位。若Type(bit 0)字段为0,bit 3到7为全0。
这样,可以将ICMP报文头压缩由四个字节压缩到三个字节。
4.5、组播支持
IPv6组播对IPv6协议特别是邻居发现协议有非常重要的作用。此外,WSN的一些应用也需要MAC层的广播功能。然而,IEEE 802.15.4 MAC层不支持组播仅提供有限的广播功能,这就需要适配层利用受控广播泛洪的方式来在整个LowPAN网络中传播IPv6组播报文。 1)适配层广播帧
6LowPAN使用适配层广播帧来封装IPv6组播报文或其它广播负载,格式如下所示。
在适配层广播帧中,适配层头部的B字段需要被置为1,并在适配层头部后添加一个Broadcast字段。其中Broadcast字段的S标志位指出Source Address字段使用的是EUI-64地址还是16-bits短地址,Broadcast Radius字段设置为本网络指定的最大广播跳数,Sequence Number字段设置为节点当前的广播序号计数值,Source Address设置为本源节点的MAC地址,负载报文将紧随在Broadcast字段之后。 2)受控广播泛洪算法
在介绍受控广播泛洪算法之前,需要先给出6LowPAN逻辑节点的概念。运
33
重庆邮电大学 6LoWPAN调研报告
行IEEE 802.15.4 MAC协议的无线节点可以从硬件功能上分成全功能节点FFD(Full Function Device)和部分功能节点RFD(Reduce Function Device)两类。为了从逻辑上划分各节点的不同协议行为,在适配层上将节点分为PAN Coordinator、Common Coordinator以及End Device三类逻辑节点。
? PANCoordinator:只能是全功能节点(FFD),在硬件上有着较为丰富的
资源,可以承担较为复杂的任务,是整个LowPAN网络的根节点。 ? Common Coordinator:也只能是全功能节点(FFD),同PAN Coordinator
相似,有着较为丰富的资源,可作为PAN内部在MAC层上的路由器,为其邻居节点转发数据。
? End Device:可以使用全功能节点(FFD)也可以使用部分功能节点
(RFD),但是一般考虑到End Device节点通常不需要太多的计算资源,因此通常从节点能耗方面考虑采用部分功能节点(RFD)。
适配层使用的受控广播泛洪算法来发送适配层广播帧,其算法描述如下:源发节点或者中继节点转发适配层广播帧时,应该首先检查其适配层邻居缓存,并根据邻居缓存信息处理:
(1) 若该节点的所有邻居均为PAN Coordinator或者Common Coordinator,且均为该节点的子节点时,直接用IEEE 802.15.4 MAC层广播该适配层广播帧。特别的,若只有一个PAN Coordinator或者Common Coordinator的邻居且其为适配层广播帧的入口节点,不断转发适配层广播帧。
(2) 若该节点的部分邻居为End Device或者为该节点的父节点,并且不为适配层广播帧的入口节点时,除了执行(1)中的IEEE 802.15.4 MAC层广播以外,还要通过IEEE 802.15.4 MAC层广单播向该邻居发送该帧。
(3) 若该节点的邻居均为End Device或该节点的父节点,并且不为适配层广播帧的入口节点时,只通过IEEE 802.15.4 MAC层单播向其每个邻居发送该帧。
下图4.16即为使用受控广播泛洪算法时适配层广播帧在LowPAN网络中的传
播过程。需要注意的是该过程需要和广播风暴控制配合使用才能完成。
34
重庆邮电大学 6LoWPAN调研报告
图4.16 受控广播泛洪(1)
图4.16受控广播泛洪(2)
3)广播风暴控制
6LowPAN使用受控广播泛洪算法可以大大减少需要发送的适配层广播帧数量,但是若使用Mesh拓扑时,整个LowPAN网络拓扑中会存在大量环路。在这种存在环路的网络中,中继节点对广播帧的重复转发将会造成严重的广播风暴。 为了避免广播风暴,每个节点需要记录已经转发过和适配层广播帧。具体做法是节点维护一张广播记录表(BRT),每张广播记录表中有若干个广播记录项(BRE),每个广播记录项至少有Source Address、Sequence Number和Broadcast Valid Time(广播有效时间,BVT)三个字段,广播记录表的结构如下图4.17所示。
图4.17广播记录表(BRT)
当节点收到一个适配层广播帧后,首先检查Broadcast字段中的Source Address:
? 若是本地节点地址,直接丢弃;
? 若不是本地节点,根据Broadcast字段中的Source Address和Sequence
35
重庆邮电大学 6LoWPAN调研报告
Number来检查本节点维护的BRT:
? 若在BRT中找到匹配并且BVT不为0的BRE,则认为该帧已经被本
地节点收到或者转发过,丢弃该广播帧;
? 若没有找到,则认为是第一次收到该广播帧。节点需要为其新建一
个BRE(源发节点发送适配层广播帧时不需要在BRT中添加一个新的BRE),并根据Broadcast字段初始化BRE的Source Address和Sequence Number两个字段,Broadcast Valid Time设置为本网络指定的广播有效时间值。同时,将Broadcast字段中的Broadcast Radius减1,若该值减到0则停止转发,否则使用受控广播泛洪算法继续转发该广播帧。最后,将新收到的适配层广播帧递交给上层是。特别的,对于End Device,可以选择不对收到的广播帧进行转发。
每个BRE中有一个Broadcast Valid Time字段,该值表示现一个适配层广播帧在网络中传播的有效时间。协议栈定时减小该值,若该值减小到0,则认为适配层广播帧已经过期并删除对应的BRE。若此后再收到Source Address和Sequence Number均相同的广播帧,节点将不再认为是重复的适配层广播帧,仍然需要为其新建BRE并进行比较。
五、6LoWPAN邻居发现协议
与传统网络不同,6LoWPAN网络具有高丢包、低功率等特点,传输帧的MAC层载荷小于100字节,包头压缩和分片使得载荷更小,并且6LoWPAN网络在链路层不支持组播,需要通过广播或单播复制来模拟出组播,而一些节点为了省电常处于休眠状态。这些都使得传统IPv6邻居发现协议中的NS消息组播传输,RA消息定期接收,以及需要节点处理的地址解析等功能不适合6LowPAN网络。6LoWPAN邻居发现(6LoWPAN Neighbor Discov—ery)协议优化了IPv6邻居发现的机制,定义了节点注册(NR)机制。
5.1、节点引导过程
图3所示的是节点引导过程。6LoWPAN 邻居发现协议定义了节点注册消息(NR,NodeRegistration)和节点确认消息(NC,Node Confirmation) 两个新的ICMP报文。NR消息是节点向路由器发送注册绑定信息,NC消息是路由器发送给注册节点的响应信息。
(1)一个节点首先根据自己的EUI一64地址或MAC地址生成接口标识,形
36
重庆邮电大学 6LoWPAN调研报告
成链路本地单播地址。节点通过广播路由器请求消息(RS,RouterSolicitation),接收路由器发出的路由器通告消息(RA,Router Advertisemem),加入一个6LoWPAN 网络。如果在RA消息中包含有效的地址前缀,主机节点将自动配置一个全局地址。
(2)节点向链路本地路由器发送NR消息,NR消息包含节点想注册的地址,也有可能请求路由器分配一个地址。在处理完地址并完成冲突地址检测后,路由器将回复NC消息,消息包含路由器确认的地址集合。由此,主机节点完成引导,可以使用6LoWPAN网络。节点可以向6LoWPAN 网内、外任一脚6地址发送报文,除了是链路本地地址,其余地址的报文都会转发到默认路由器,默认路由器的链路层地址解析在节点注册时已经完成。6LowPAN路由绑定表需要通过定期发送新的NR消息进行更新,如果主机移位或网络拓扑发生变化,现有的路由器不可用时,节点需要重新向另一个路由器进行注册。如果在同一个6LoWPAN 网络内,主机节点地址不变。如果主机节点移动到另一个6LoWPAN网络内,节点需要重新完成引导过程。
图5.1
5.2、消息和选项
6LoWPAN邻居发现协议新定义的NR和NC消息,使用了RFC4861中的RS和RA消息,还新增加了6LoWPAN 地址选项(6AO,6LoWPAN Ad&ess Option),6LoWPAN 信息选项(6IO,6LoWPAN Infor—mationOption),6LoWPAN 概要选项(6SO,6LoWPAN SummaryOption)和所有者接口标识选项(0I10,Owner InterfaceIdentifierOption)4个ICMPv6选项。NR 和NC 消息承载于标准的ICMPv6报文内,主要用于节点向路由器的注册过程,未注册节点向在线路由器的单播IPv6地址发送NR消息,在完成地址冲突检测后,路由器会向节点返回NS消息,完成注册过程。同时,需要节点周期性地发送NR消息,刷新路由器的地址绑定表,发送周期要小于绑定表项的生命周期。NR和NC消息注册选项目前主要有两种选项:6AO选项,包含主机节点想绑定到接口上的地址;6IO选项,NC消息可能用此选项携带LoWPAN前缀等信息。
37