返回 登录
0

以不一样的视角看物联网协议

嵌入式系统接入互联网形成一个物联网系统,协议是必不可少的关键技术。传统上以解决人机对话为目标的互联网协议遇到了物物相连的物联网系统,显得像大马拉小车,有劲使不上,物联网协议就此应运而生。

毫无疑问,人类和嵌入式设备通过完全不同的方式使用互联网。人类主要通过万维网—运行在互联网上的应用集合—访问互联网。当然,网页并不是互联网人机交换的唯一选择,我们还可以通过电子邮件、短信、手机应用程序,以及一系列的社交媒体工具实现互联。

与互联网相比,在物联网中,智能电子设备之间通过互联网实现信息的交互,但这些设备上并没有类似于网页浏览器和社交媒体的工具,人们已经着手开发这类工具和服务。

TCP/IP协议栈

TCP/IP协议栈是互联网的核心。它可以通过OSI七层参考模型来表示,如图1所示。图中顶部的三层组合在一起,以简化模型。


图1 TCP/IP协议栈参考模型

1. 物理层和数据链路层

嵌入式系统中最使用的物理层协议包括:

1)以太网(10,100,1G)
2)WiFi(802.11b,g,n)
3)串行PPP(点对点协议)
4)GSM,3G,LTE,4G

2. 网络层

网络层是互联网的基础。该层提供了网络间及物理层之间的连接。该层中,设备拥有人们随处可见的IP地址。

3. 传输层

该层位于网络层之上,具有TCP和UDP两种传输协议。

TCP通常用于网络间的人机交互(电子邮件、网页浏览等),以致很多人认为TCP协议是传输层使用的唯一协议。TCP提供了逻辑连接、传输确认、丢包重传和流控服务。

但对嵌入式系统而言,使用TCP有点小题大做了。尽管长期以来,UDP主要用于类似于DNS和DHCP的网络服务,现在,在传感器数据采集和远程控制领域,它有了新的用武之地。

UDP也适合于实时数据应用,例如音频和视频应用。这是因为,TCP的包应答和重传特性对这类应用是无效的,并且增加了额外的开销。如果一个数据块(例如一段对话)没有按时到达目的地,也没有必要重传该包。如果重传,它会破坏包的顺序并导致信息错误。

设计物联网设备时,必须考虑如何将本地设备连接到互联网。可以通过网关,或者将该功能集成到设备中以实现连接。目前,很多MCU集成了以太网控制器,简化了联网的工作。

物联网协议栈

你可以使用熟悉的Web技术来构建物联网系统吗?答案是肯定,但没有使用新的协议有效。

HTTP(S)和WebSocket是数据负载中传送XML或JavaScript对象符号(JSON)的常用标准。JSON为网页开发人员提供了一个抽象层,可以为Web应用创建一个到Web服务器的持续、稳定的连接。

1. HTTP

HTTP是用于Web服务的客户端–服务器模型的基础。实现HTTP连接的安全的方式是在物联网设备中只包含一个客户端,不包含服务器。换言之,设计一个只发起连接、不接收的物联网设备比较安全。总之,不允许外部设备访问你的局域网。

2. WebSocket

WebSocket是一个全双工通信协议,它在客户端和服务器之间,通过一个TCP连接实现全双工通信。它是HTML 5规范的一部分,WebSocket标准简化了双向Web通信和连接管理方面的复杂度。

3. XMPP

XMPP(可扩展通信与表示协议)是现有Web技术在物联网领域开发新用途的一个很好的实例。

XMPP最初用于即时消息与现场信息。现在已经扩展到支持VoIP信令、协作、轻量级中间件、内容聚合及广义的XML数据路由等领域。它是家用电器大规模管理的竞争者,这些白色家电包括洗衣机、干衣机、冰箱等。

4. CoAP

尽管Web协议可用于物联网设备,对大多数物联网应用来说,它的体积太庞大。IETF制定的资源受限的应用协议(CoAP),可用于低功耗和资源受限的网络。CoAP是一个REST类型的协议,采用了与HTTP类似的语法,其语义可以与HTTP的语义一一对应。

对基于电池供电或能量收集供电的设备来说,CoAP协议是一个很好的选择。其部分特性如下:

1)CoAP运行在UDP协议之上。
2)由于UDP传输不可靠,CoAP重现了一些TCP的功能。例如,CoAP可以识别需要确认的请求和无需确认的请求。
3)CoAP报文采用异步请求/响应模式。
4)所有的报文头、方法和状态码基于二进制编码,以减少协议开销。
5)不同于HTTP,缓存CoAP响应的能力不依赖请求方式,取决于应答码。
6)CoAP面向需要轻量级协议和建立永久连接的需求。如果拥有Web应用背景,使用CoAP会比较容易。

5. MQTT

MQ(消息队列)遥测传输是一个开源的协议栈(MQTT),面向资源受限的设备和低带宽、高延迟的网络。它采用发布/订阅消息传输模式,是一个轻量级的协议,适合将小型设备连接到资源受限的网络。
MQTT带宽利用率高,数据不可知,并具有连续的会话意识。可以帮助物联网设备减少资源消耗,还可以确保可靠性和一定程度的服务等级。

MQTT面向大型网络中的小型设备,这些设备需要通过互联网中的后台服务器来监视和控制。它不是一个设备到设备的传输,也不是“组播”数据到多个接收器的传输。MQTT非常简单,仅提供了一些控制选项。

协议比较

表1概述了所有的物联网协议,开发这些互联网定义的物联网协议的目的是满足低存储空间、低带宽和高延迟设备的联网需求。

表1 超越MQTT:从思科的视角看物联网协议(Paul Duffy,2013.4.30)

协议 CoAP XMPP RESTful HTTP MQTT
传输类型 UDP TCP TCP TCP
消息模式 请求/响应 发布/订阅 请求/响应 请求/响应 发布/订阅 请求/响应
2G、3G、4G适用性(1000个节点) 很好 很好 很好 很好
LLN适用性(1000个节点) 很好 可以 可以 可以
资源占用 10K RAM/Flash 10K RAM/Flash 10K RAM/Flash 10K RAM/Flash
成功案例 生活局域网 大型家电的远程管理 智能能源规范2(能源管理,家庭服务) 扩展企业消息到物联网应用中

互联网和物联网协议比较如下,图2提供了将互联网协议与物联网中的性能优势比较。资料来源于Zach Shelby的报告“物联网驱动标准”。


图2 互联网和物联网协议比较

如图2左侧所示,Web应用的协议栈可以很容易地生成几百到几千字节的数据开销。比较而言,物联网协议针对受限制的设备和网络进行了优化,仅生成几十个字节的数据开销。

相关阅读

作者:何小庆,著名的嵌入式系统专家,国内最早涉足嵌入式OS者之一,创办了北京麦克泰软件技术有限公司,有30年嵌入式技术和市场经验。他还是中国软件行业协会理事、嵌入式系统分会副理事长,嵌入式系统联谊会秘书长。
本文选自《嵌入式操作系统风云录:历史演进与物联网未来》第 9 章。

评论