本文列举了市面上物联网通信中的各类消息技术——即工作在网络通信中的应用层协议,并总结了它们各自的特点和具体的物联网应用场景。
这些协议直接用于无线或有线网络环境中设备与人之间的通信,物联网开发者将处理这些协议。
物联网连接的问题空间
上图是物联网连接的问题空间,其中物联网的通信环境包括以太网、Wi-Fi、RFID、NFC(近场通信)、Zigbee、6LoWPAN(IPV6低速无线版)、蓝牙、GSM、GPRS、GPS、3G、4G等网络,每种通信应用协议都有一定的适用范围。AMQP、JMS、REST/HTTP都工作在以太网上,COAP协议是专门为资源受限的设备开发的,而DDS和MQTT的兼容性强得多。
协议的简要介绍
MQTT(Message Queuing Telemetry Transport),消息队列遥测传输,IBM开发的即时通讯协议,现在已经成为OASIS的推荐标准;
DDS(Data Distribution Service for Real-Time Systems)实时系统的数据分发服务,是知名OMG组织提出的协议,其权威性应该能够证明其未来的应用前景;
AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是OASIS提出的高级消息队列协议,曾经提出过OSLC(Open Source lifecycle,开源生命周期)标准,用于PLM、ERP、MES等业务系统之间的数据交换。
XMPP(可扩展消息和存在协议)是一种可扩展的通信和表示协议。XMPP的前身是Jabber,是一个开源组织出品的网络即时通讯协议。XMPP已经被IETF国际标准组织标准化。
JMS (JAVA Message Service),JAVA消息服务,这是JAVA平台中众所周知的消息队列协议;
REST(representative state transfer)表示状态转换,是基于HTTP协议开发的一种通信风格,目前还不是一个标准。
COAP(受限应用协议),一种用于无线传感器网络的协议。
上述协议已经被广泛使用,每种协议至少有10种代码实现,都声称支持实时发布/订阅物联网协议。但在设计具体物联网系统的架构时,需要考虑实际场景的通信需求,选择合适的协议。
下面以智能家居为例来说明这些协议的应用方向。智能家居中的智能照明控制可以使用XMPP协议来控制灯的开关;智能家居的供电和电厂的发动机组监控可以使用DDS协议;当电力输送到千家万户时,MQTT协议可以用于电力线路的巡视和维护。所有家用电器的用电量可以通过使用AMQP协议传输到云端或家庭网关进行分析;最后,如果用户想在网上发布自己的能耗查询服务,可以使用REST/HTTP打开API服务。
下面我们将逐一详细介绍这些协议:
MQTT协议(低带宽)
适用范围:在低带宽、不可靠的网络下,提供基于云平台的远程设备的数据传输和监控。
特点:
使用基于代理的发布/订阅消息模式来提供一对多的消息发布。
使用TCP/IP提供网络连接
传输量小,开销小(固定长度报头为2个字节),协议交换最少,以减少网络流量。
支持QoS,有“最多一次”、“至少一次”、“仅一次”三种消息发布服务质量
协议的主要实现和应用:
已经有PHP、JAVA、Python、C、C#等语言的协议。
IBM Bluemix的一个重要部分是其物联网基础服务,这是一个基于云的MQTT实例。
移动应用长期以来一直使用MQTT,如Facebook Messenger和com。
评论:
MQTT协议一般适用于设备->服务器(设备->网关)和轴辐式网络架构,但不适用于设备到设备的通信。再说设备控制能力弱,实时性差,一般在二级。
DDS协议(高可靠性、实时性)
适用范围:分布式高可靠性、实时传输设备数据通信。目前,DDS已经广泛应用于国防、民航、工业控制等领域。
特点:
以数据为中心
使用无代理发布/订阅消息模式,点对点、一对多和多对多
提供了多少种21 QoS服务质量策略?
协议的主要实现:
OpenDDS是一个开源的C++实现
OpenSplice DDS
评论:
DDS很好的支持设备间的数据分发,设备控制,设备和云之间的数据传输。同时DDS数据分发的实时效率非常高,可以在几秒钟内同时向多个设备分发数百万条消息。DDS提供了许多保证服务质量(QoS)的方法,这也是它适合国防、军事和工业控制等高可靠性和安全性应用的原因。但是这些应用都是在有线网络中工作,在无线网络中没有实现案例,尤其是在资源有限的情况下。
AMQP协议(互操作性)
适用范围:最早应用于金融系统之间的交易报文传输。在物联网的应用中,主要应用于移动手持设备与后台数据中心之间的通信和分析。
特点:
有线级协议,描述网络上传输的数据格式,以字节为流。
消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全性
协议实现:
Erlang中的实现是RabbitMQ。
AMQP的开源实现,而OpenAMQ是用C语言写的。
Apache Qpid
stormMQ
XMPP协议(即时消息)
应用范围:即时通讯应用还可以用于网络管理、内容馈送、协作工具、文件共享、游戏、远程系统监控等。
特点:
客户端/服务器通信模式
分布式网络
简单客户端,将大部分工作放在服务器端。
通用标记语言标准子集XML的数据格式
评论:
XMPP协议是基于XML文本来传输即时通讯指令的。它最初的设计目的是互连即时消息服务。在一些物联网应用中,用于向设备发送复杂的操作命令,进行设备控制。
REST/HTTP(松耦合服务调用)
适用范围:REST/HTTP主要用于简化互联网中的系统架构,快速实现客户端与服务器的松耦合,降低客户端与服务器的交互延迟。所以在物联网的应用层面,REST可以开放物联网中的资源,让服务被其他应用调用。
特点:
REST指的是一组架构约束和原则。满足这些约束和原则的应用程序或设计是RESTful的。
客户端和服务器之间的交互在请求之间是无状态的。
在服务器端,应用程序的状态和功能可以划分到各种资源中,并向客户端公开。资源的例子有:应用程序对象、数据库记录、算法等。每个资源使用URI(通用资源标识符)来获得唯一的地址。所有资源共享一个统一的接口来在客户端和服务器之间传输状态。
使用标准的HTTP方法,比如GET、PUT、POST和DELETE。
点评:REST/HTTP其实是互联网中服务调用API的封装风格。在物联网中,数据被收集到物联网的应用系统中。在物联网的应用系统中,通过开放REST API,可以开放数据服务,供互联网中的其他应用调用。
CoAP协议
适用范围:CoAP是一个RESTful API,简化了HTTP协议。CoAP是6LowPAN协议栈中的应用层协议,适用于资源有限的IP网络。
特点:
CoAP使用二进制报头代替HTTP协议中的文本报头。
CoAP减少了标题中内容类型选项的数量,如删除文本/html (UTF-8)、图像/jpeg、视频/raw等。
协议的主要实现:
Liboap(用C语言实现)
Californium(java语言实现)
评论:
CoAP和6LowPan分别是应用层协议和网络适配层协议,旨在解决直接连接到IP网络的设备的通信需求,即IP技术对设备、互联网和设备的应用。由于IPV6技术带来了巨大的寻址空间,不仅解决了未来庞大设备和资源的识别问题,还使得互联网应用可以直接访问支持IPV6的设备,而不需要额外的网关。
上述协议有两个特点,在选择物联网的通信技术时需要考虑:
发布/订阅服务更适合物联网环境下的通信。
DDS、MQTT、AMQP和JMS都是基于发布/订阅模式的。发布/订阅框架具有服务自我发现、动态扩展和事件过滤的特点。解决了物联网系统在应用层的快速数据源获取、物联退出、兴趣订阅、带宽流量减少等问题。,实现了事物在空间(双方不需要知道通信地址)、时间、同步上的松耦合。
服务质量是物联网通信中的一个重要考虑因素。
借助服务策略,DDS可以有效地控制和管理网络带宽、内存空间等资源的使用,还可以控制数据的可靠性、实时性和生存时间。通过灵活运用这些服务质量策略,DDS可以开发出一个不仅在窄带无线环境中,而且在宽带有线通信环境中都能满足实时性要求的数据分发系统。
作者简介:席华彬,Siemens PLM Software 高级顾问
本文章来源于互联网,如有侵权,请联系删除!