IEEE 802.15.4[1] 是一组低功耗、低速率短距离无线传输协议,作为Zigbee WirelessHART、6LoWPAN 与MiWi 等协议的基础,描述了低速率无线个人局域网的物理层和媒体接入控制协议。其低功耗、低成本的优点使其在无线传感领域中获得了广泛的应用,特别是基于Zigbee 协议[2]的应用已经遍布于工业控制、智能测绘、医疗、家居等各行各业。
Zigbee 协议栈紧凑简单,制订了完整的网络层与应用层协议,并提供丰富的接口与安全管理体系。相对于常见的无线通信标准,Zigbee 具体实现要求很低,只要8 位处理器再配上4 kB ROM 和64 kB RAM 等就可以满足其最低需要,从而大大降低了芯片成本。但是Zigbee 基本协议及其终端只能实现与Zigbee 终端的交互,无法实现IP 寻址。虽然Zigbee 联盟最近提出了Zigbee-IP 的概念,但Zigbee 协议栈的独立性与非开源性质增加了其与传统IP 网络及其节点的交互的难度。
随着物联网的兴起,无线传感器网络(WSN)向IPv6 网络的融合逐渐提上日程,基于IPv6 的低功耗无线个域网(6LoWPAN) [3] 由此应运而生。6LoWPAN 协议主要在IEEE 802.15.4链路层之上实现了精简的IPv6 协议,通过在链路层与IP 层间添加适配层实现首部压缩与数据包的分片重装,很好地实现了IPv6 网络与低功耗无线网络之间的协议适配。目前,IETF 6LoWPAN 工作组已经形成的3个标准文档,提出了低功耗网络中运行IP6 协议的假设、问题和目标[4],制订了6LoWPAN 的功能及报文格式[5],以及基于上下文(Context)的IP 报文头压缩(IPHC) 方法[6]。此外,还出台了6LoWPAN 邻居发现协议、低功耗有损网络路由协议(RPL) 等相关标准草稿。基于该标准体系的系统开发已经成功应用于相关产品中,如Sensinode 公司的基于NanoStack 的NanoRouter 产品和NanoService 产品、TI 公司生产的基于CC-6LoWPAN 的Sub-GHz 6LoWPAN Network Processor产品等。
IETF 核心工作组专为资源能量带宽受限的网络( 如6LoWPAN) 设计了轻量级的应用层协议(CoAP)[7],处于数据报协议(UDP) 之上,为应用终端之间提供了一种方法/响应交互模式,支持内置的资源发现(RD)机制以及组播机制,同时包含几个关键Web概念如统一资源标识符(URI) 和内容类型。CoAP 是对超文本传输协议(HTTP)的一种简化,满足轻量级的同时还便于与HTTP 进行转化。
综上所述,无论从物联网还是WSN 的发展趋势来看,6LoWPAN 作为一种新兴的基于IPv6 的无线传感网协议,具备更高的应用价值与发展潜力。但从目前的行业应用现状分析,未来很长一段时间内,Zigbee 仍然会承担一个很重要的角色。6LoWPAN 的逐步推广使得两种网络及其节点的互通成为必然。本文在原有6LoWPAN 以及Zigbee 标准不变的基础上,首先分析了异构节点互通问题,并设计了协议转换、网关功能以及节点交互流程;然后分析了现有的异构节点互通方案,给出了本文设计的异构节点互通场景、系统结构、协议转换模式以及网关功能;最后对寻址、服务发现等互联互通关键技术进行了分析,并基于此设计了异构节点交互流程。
1、异构网络协议融合互通的相关研究
6LoWPAN 作为一个将低功耗网络融合到传统网络的协议,与Zigbee协议的互通问题同样与IPv6 协议密不可分。实现异构网络协议的融合互通一般采用在网络层进行协议转换,因此Zigbee 协议与IPv6 协议的转换过程必不可少。目前Zigbee 与IPv6融合的技术相对比Zigbee 与6LoWPAN 融合的技术更全面些。
1.1 Zigbee-6LoWPAN
现有Zigbee 与6LoWAN 互通方案如图1 所示。目前有关Zigbee 节点与6LoWPAN 节点互通的方案较少,总结起来主要包括双栈网关与双栈节点两种方案。两种方案的共通点是在Zigbee 的应用层添加了IPv6 协议块,即将IP 数据包作为应用层数据处理。双栈节点可实现Zigbee 与6LoWPAN 的功能,但不能同时实现,且对于功耗、资源限制的节点来说不适用。双栈网关很好地减少了域内节点的资源能源消耗。这两种方案仍停留在框架层面,均未实现首部压缩与解压缩以及数据包的分片与重装,也未解决关键的寻址问题与服务发现问题。由于6LoWPAN 与IPv6 密不可分的关系,上述部分问题可在Zigbee 与IPv6 网络融合方案中找到相近的解决方案。
图1 现有Zigbee 与6LoWAN 互通方案
1.2 Zigbee-IPv6
Zigbee 与IPv6 网络互通的最直接的方式就是在Zigbee 网络层与应用层之间添加IPv6/UDP 层,此时所有的Zigbee 节点均被分配了一个IPv6 地址。当网关(Zigbee 协调器) 处收到IP网络数据包时,将其封装成Zigbee 网络层并转发至Zigbee 网络中。当网关收到Zigbee 数据包时,则将其解封装并利用IPv6 载荷继续传输。由于Zigbee/ 802.15.4 中的数据为异步通信方式,所以一般采用UDP 协议传输数据。这种方式最大的问题在于数据包大小,也就是首部压缩与数据分片的问题。
Sakane S 等人设计了一种基于地址转换的Zigbee 节点与IPv6 节点的交互机制[8]。通过双栈网关实现地址转换。这种方式解决了Zigbee 节点与IPv6 节点的地址统一问题,但是打破了Zigbee 端到端的信息安全等特征,且没有解决Zigbee 网络中最重要的服务发现功能。
Reen-Cheng Wang 等人对上述基于NAT 的交互方式进行了改进,提出了一套完整的Zigbee 节点与IPv6 节点交互机制。IPv6 over Zigbee 交互机制[9]如图2 所示。双栈网关不仅实现了Zigbee 地址与IPv6 地址之间的转换,也实现了Zigbee 服务发现功能与IP 网络的简单服务发现协议(SSDP)的转换。Zigbee-IPv6 协议栈如图3 所示。协议转换是在双栈网关的网络层进行的,保证了应用层数据传输的加密机制。为了防止广播风暴,该机制对每个Zigbee 域设定为一个多播组,更好地支持了低功耗网络与IP 网络的融合。但此方案依然没有解决数据包分片的问题。上述关于Zigbee与IPv6 的融合方案,网络地址转换、服务发现功能转换等机制对6LoWPAN 与IP 网络以及Zigbee 网络的融合有很好的借鉴作用。
图2 IPv6 over Zigbee 交互机制
图3 Zigbee-IPv6 协议栈
2、6LoWPAN-IPv6-Zigbee系统架构
图4 所示为本文所实现的6LoWPAN-IPv6-Zigbee 架构中异构节点互通的场景。6LoWPAN 节点与Zigbee 节点处于同一混合域中,通过同一个功能复杂的边界网关实现域内异构节点间的互通,并可接入IP 网络实现与其他节点互通。
图4 异构节点通信应用场景
2.1 协议转换模式
图5 所示为在图4 所示的应用场景下网关中的协议转换图。同一域内的Zigbee 节点与6LoWPAN 节点之间的交互主要通过网关中Zigbee 协议栈与6LoWPAN 协议栈之间的转发实现。此外,在边界网关中同样设置IPv6 协议栈,以便域内节点与域外的IPv6 节点或者其他域节点进行通信。在处理服务发现协议的组播消息时网关也需要进行上层协议解析并且可以在不同的服务发现协议间进行转换。
图5 协议转换模式
2.2 网关功能描述
边界网关是Zigbee 协调器与6LoWPAN 边界路由器功能的结合,同时还需完成Zigbee 协调器与6LoWPAN 边界路由的交互功能。
网关功能主要有:
(1) 基本协议解析功能,包括Zigbee 协议、6LoWPAN协议以及IPv6 协议栈。
(2) 网络层协议转换,主要提供首部转换模块,即将Zigbee 协议的网络层首部与IP 首部进行转换,必要时可以将Zigbee 的应用支持子层(APS) 首部与传输层协议进行转换。
(3) 地址转换功能。由于是网络层转发,Zigbee 地址需先转换为IPv6 地址,然后通过6LoWPAN 进行地址压缩。由于边界网关同时包含Zigbee协议与6LoWPAN 协议,且两种协议使用不同的方法分配16 位短地址,因此在边界网关中地址映射表存在3种链路层地址:EUI-64、6LoWPAN16位短地址、Zigbee16 位短地址。
(4)服务发现协议转换,主要在应用层通过Zigbee 的应用层数据格式与CoAP-HTTP 格式转换来实现Zigbee 设备对象- 服务发现(ZDO-SD)协议与轻量级的应用层- 资源发现(CoAP-RD)协议的转换。
3、关键技术
3.1 网络地址转换
异构网络协议互通的首要问题是寻址。每个Zigbee 节点需要一个IPv6 地址来与6LoWPAN 节点通信。6LoWPAN-IPv6-Zigbee 地址的转换过程通常在边界网关实现。
IEEE 802.15.4 定义的链路层地址有两种:由设备制造商设定的全球唯一的EUI-64 地址以及在个域网(PAN)内动态分配的16 位短地址。由于Zigbee 与6LoWPAN 均是基于IEEE802.15.4 底层协议的,因此这两种地址在两种网络协议中同时存在,但要实现跨协议数据传输,则只能采用由EUI-64 生成IPv6 地址的方式。
6LoWPAN 网络与Zigbee 网络各自进行域内通信时通常使用16 位短地址,但两者的生成方式不同。6LoWPAN 边界路由采用重复地址检测机制(DAD) 为节点分配短地址,而Zigbee 协调器则采用CSkips 算法为节点分配短地址。因此边界网关应为需要进行异构通信的节点分配两种短地址,即每一个EUI-64 地址对应一个6LoWPAN 短地址和一个Zigbee短地址。
由于Zigbee 协议不存在适配层,因此需在其中添加Zigbee 地址与IPv6地址转换模块。此外,在边界网关中需设置一个16 位Zigbee 短地址和16位6LoWPAN 短地址与EUI-64 地址的映射表。边界网关中的地址映射表如表1 所示。此映射表不仅包含本域内节点的16 位短地址与EUI-64 地址的映射关系,还可能包含域外节点的地址映射表项。例如,Zigbee 协调器需为某个与此域内Zigbee 节点通信的6LoWPAN 节点分配一个16 位短地址,并在映射表中添加此条目,此时6LoWPAN 节点被Zigbee 节点当作同种节点进行通信。
表1 边界网关中的地址映射表
3.2 报文转换
由于Zigbee 地址与IPv6 地址转换的可行,Zigbee 首部与IPv6 首部转换也可实现,即在Zigbee 协调器或者边界网关中实现Zigbee 网络层帧头与IPv6 首部之间的转换模块。上述地址的转换过程也包含在此报文转换模块中。
Zigbee 协议帧中媒体访问控制(MAC) 帧头之后包含8 字节网络层帧头以及2~10 字节的APS 帧头,因此不需要像6LoWPAN 协议一样进行首部的压缩与解压缩。这两种帧头中除了基本的源、目的地址与端口信息外,还包含路由、安全等信息。因此在Zigbee 与IPv6 首部转换模块中,除了对地址进行转换外,还需进行路由与安全方面的考虑。
6LoWPAN 数据包与Zigbee 数据包均在链路层最大传送单元(MTU)之内,因此两种节点的通信则不考虑数据包的分片与重组,但6LoWPAN 层实现的首部压缩与解压缩必不可少。
3.3 服务发现
在网络初始化之后,节点通信之前的一个重要过程即服务发现与设备发现。节点在网络上搜索自己感兴趣的服务及其设备与之通信,同时需要向网络广播自己的设备信息以及服务功能信息供其他节点查询。
Zigbee 联盟在Zigbee应用层中自己设计了一套服务发现与设备发现机制—— 在ZDO 中定义的服务发现(SD)机制。本文在IP 网络中采用通用即插即用(UPnP)架构及其SSDP 协议。由于UPnP 建立在UDP 协议以及HTTP之上,而6LoWPAN 支持UDP 协议以及简化的HTTP 协议( 核心工作组的CoAP 协议),因此本文在6LoWPAN 协议应用层上也采用UPnP 架构,服务发现采用CoAP 协议及其RD 机制,实现6LoWPAN 与IPv6 节点及Zigbee 节点的服务与设备发现协议转换。
图6 为6LoWPAN、IPv6 及Zigbee节点基于服务发现机制的协议对比。
图6 服务发现协议对比图
综上所述,在服务发现机制上,6LoWPAN-IPv6-Zigbee 系统架构主要在边界网关上实现基于Zigbee 的ZDO-SD 协议、基于IP 的HTTPU-SSDP 协议以及基于6LoWPAN的CoAP-RD 协议之间的转换。
3.4 节点交互流程
节点交互过程主要分为3 个阶段:网络初始化阶段、服务发现阶段以及数据传输阶段。域内模式节点交互流程如图7 所示。图7 主要描述3 个阶段中由6LoWPAN 节点发起Zigbee 加入请求情况时6LoWPAN 节点(A)、边界网关(B)、Zigbee 节点(C) 之间的主要交互流程。
图7 域内模式节点交互流程
(1)网络初始化
6LoWPAN 节点与Zigbee 节点共享边界网关的地址前缀信息以及组播组标识,分别通过6LoWPAN 邻居发现协议以及Zigbee 网络发现协议向边界网关进行地址注册,边界网关分别通过重复地址检测机制以及CSkips 算法为节点分配16 位6LoWAN短地址与Zigbee 短地址。
(2)服务发现
节点A 向网关B 发起服务发现请求,B 实现RD 协议向SD 协议的转换,并通过组播消息转发此请求给Zigbee 节点,提供相应服务的节点C收到请求后向B 回复单播服务确认信息。B 将回复信息经过服务发现协议转换以及地址转换后转发给节点A。
(3)数据传输
通过网络初始化以及服务发现阶段的交互,需要通信的两个节点A与C 完成了异构网络地址注册和设备服务信息互通,A 与C 即可顺利进行通信。通信时源地址与目的地址的设置如图7 所示,B 通过地址映射表可实现网络地址转换、数据包的转发等功能。
4、结束语
本文根据对已有关于6LoWPAN与Zigbee 结合方案的分析,在6LoWPAN 基本协议及其应用层协议CoAP 的基础上,结合相关方案的网络地址转换机制以及服务发现功能转换机制,实现6LoWPAN 网络与Zigbee 的互联互通,以解决6LoWPAN与Zigbee 通信所面临的问题。通过总体协议转换模块图、节点交互流程图以及对网关协议转换功能的设计,本文实现了6LoWPAN-IPv6-Zigbee 总体框架。
本文充分考虑了6LoWPAN 协议与Zigbee 协议特征,在保留原有协议基本不变的基础上,通过在网关中添加部分转换模块来实现6LoWPAN 与Zigbee 协议的互通,提出了新的通信模式以及功能框架,具有一定的创新性与普适性,为更深入地研究6LoWPAN 网络与异构网络融合奠定了基础。
6LoWPAN-IPv6-Zigbee 提出了一些框架性的功能模块以及节点交互流程,但是未对其进行细化,因此在遇到具体应用时还需进一步拓展。
5、参考文献
[1] IEEE 802.15.4-2006. IEEE Standard for information technology -Telecommunications and information exchange between systems - Local and metropolitan area networks specific requirements, Part 15.4: Wireless Medium access control (MAC) and physical layer (PHY) specifications for low-rate wireless personal area networks (LR-WPANs) [S]. 2006.
[2] ZigBee Specification. Version 1.0 [R]. ZigBee Alliance, 2004.
[3] SHELBY Z, BORMANN C. 6LoWPAN: The wireless embedded Internet [M]. New York, NY, USA: John Wiley & Sons Ltd, 2009.
[4] KUSHALNAGAR N, MONTENEGRO G, SCHUMACHER C. IPv6 over low-power wireless personal area networks (6LoWPANs): Overview, assumptions, problem statement, and goals [S]. RFC 4919. Fremont, CA, USA: IETF, 2007.
[5] MONTENEGRO G, KUSHALNAGAR N, HUI J, et al. Transmission of IPv6 packets over IEEE 802.15.4 networks [S]. RFC 4944. Fremont, CA, USA: IETF, 2007.
[6] HUI J, THUBERT P. Compression format for IPv6 data grams over IEEE 802.15.4-based networks [S]. RFC 6282. Fremont, CA, USA: IETF, 2011.
[7] SHELBY Z, HARTKE K, BORMANN C, et al. Constrained application protocol (CoAP) [S]. IETF Internet Draft draft-ietf-core-coap-08. 2011.
[8] SAKANE, S, ISHII Y, TOBA K, et al. A translation method between 802.15.4 nodes and IPv6 nodes [C]//Proceedings of the International Symposium on Applications and the Internet Workshops (SAINT’06), Jan 23-27, 2006, Phoenix, AZ, USA. Los Alamitos, CA, USA: IEEE Computer Society, 2006:34-37.
[9] WANG R C, CHANG R S, CHAO H C. Internetworking between ZigBee/802.15.4 and IPv6/802.3 network [R]. Taipei, China: NICI IPv6 Steering Committee, 2007.