以下内容转自IBM developerWorks

通信对物联网极为重要。网络技术使得 IoT 设备不仅能与其他设备进行通信,还能与在云中运行的应用程序和服务进行通信。互联网依靠标准化的协议来确保能够在各种各样的设备之间安全可靠地进行通信。标准协议指定了设备用来建立和管理网络,以及在这些网络间传输数据的规则和格式。

我们通常认为,网络是由堆栈技术构建的,堆栈底部的技术(比如蓝牙低功耗)与物理连接设备相关,而堆栈中更靠上的技术(比如 IPv6)与逻辑设备寻址和网络流量路由相关。堆栈顶部的技术(如消息排队技术)由运行在这些层之上的应用程序使用。

在本文中,我将介绍一些被广泛采用的 IoT 网络技术和标准。还将解释你将如何选择哪种网络协议。然后我将讨论与 IoT 中的网络相关的关键考虑因素和挑战,包括传输距离、带宽、电量使用、间歇连通性、互操作性和安全性。

网络标准和技术

开放式系统互联 (OSI) 模型是一种 ISO(国际标准化组织) 标准抽象模型,它描述了一个包含 7 层的协议栈。这些层从上往下依次是:应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。TCP/IP 或互联网协议套件支撑着互联网,提供了 OSI 模型中各层的简化的具体实现。

图 1. OSI 和 TCP/IP 网络模型
[转]物联网中的网络协议 结构
OSI 模型和 TCP/IP 模型

TCP/IP 模型仅包含 4 层,并合并了 OSI 模型的一些层(参见 图 1):

尽管 TCP/IP 和 OSI 模型抽象的提供了有用的用于讨论的网络协议,以及实现每种协议的具体技术,但实际上,一些协议无法恰当地归入这些分层模型中。例如,使用加密来确保网络流量的隐私和数据完整性的传输层安全 (TLS) 协议,可能被认为是跨 OSI 的第 4、5 和 6 层而运行。

IoT 网络协议

IoT 中被广泛采用且能归入 TCP/IP 层的一些网络协议如 图 2 所示。

图 2. 与 TCP/IP 模型对应的 IoT 网络协议
[转]物联网中的网络协议 结构
TCP/IP 模型和 IoT 协议

IoT 领域正在采用许多新兴且有竞争性的网络技术。许多技术由不同的供应商提供或针对不同的垂直市场,比如家庭自动化、医疗保健或工业 IoT,它们通常为相同的标准协议提供了替代性实现。例如,IEEE 802.15.4 描述了低速率无线个域网 (LR-WPAN) 的工作原理,并且由多种竞争性技术实现,包括 ZigBee、Z-Wave、EnOcean、SNAP 和 6LoWPAN。

例如,用于连接互联网的技术(比如以太网)通常可应用在 IoT 中;但是,人们正在开发新的技术来专门解决 IoT 的挑战。越朝物理传输技术方向考虑协议栈,面临的特定于 IoT 设备和 IoT 上下文的挑战就越多。

网络的结构被称为网络的拓扑结构。IoT 中采用的最常见网络拓扑结构是星型和网状拓扑结构。在星型拓扑结构中,每个 IoT 设备直接与一个中央集线器(网关)相连,该集线器会传输来自上游连接设备的数据。在网状拓扑结构中,设备与传输距离内的其他设备以及网络中的节点相连,这些设备可充当简单的传感器节点,也能充当路由流量的传感器节点,或者充当网关节点。网状网络比星型拓扑结构的网络更为复杂,但优势在于故障恢复能力更强,因为它们不依赖于单个中央网关。

网络接入层和物理层 IoT 网络拓扑结构

需要知道的靠近协议栈底部的 IoT 网络技术包括蜂窝技术、wifi 和以太网,以及更专业的解决方案,比如 LPWAN、蓝牙低功耗 (BLE)、ZigBee、NFC 和 RFID。

根据 Gartner 报告,NB-IoT 正在成为 LPWAN 网络的标准,要了解关于 NB-IoT 的更多信息,请阅读这篇 IoT for All 文章。

互联网层 IoT 网络拓扑结构

互联网层技术(OSI 第 3 层)负责识别和路由数据包。与这层相关且IoT通常采用的技术包括 IPv6、6LoWPAN 和 RPL。

应用层 IoT 网络拓扑结构

HTTP 和 HTTPS 在互联网应用中随处可见,在 IoT 中也是如此,IoT 中广泛部署了 RESTful HTTP 和 HTTPS 接口。CoAP(受限应用协议)就像一种轻量级 HTTP,常常与基于 UDP 的 6LoWPAN 结合使用。MQTT、AMQP 和 XMPP 等消息协议也常常用在 IoT 应用中:

这一层上选择的技术将取决于 IoT 项目的具体应用需求。例如,对于涉及多个传感器的经济型家庭自动化系统,MQTT 是一个不错的选择,因为它非常适合在没有太多存储或处理能力的设备上实现消息功能,而且该协议的实现既简单又轻便。

IoT 网络考虑因素和挑战

考虑在 IoT 应用中采用哪些网络技术时,一定要留意以下限制:

传输距离

网络可通过附加到网络的 IoT 设备的典型数据传输距离来描述:

您的网络应该设计为,从 IoT 设备中获取数据,并将数据用于这些设备中。所以请确保您选择的网络协议与您的用例所需的传输距离相匹配。例如,不应为需要跨数千米距离运行的 WAN 应用选择 BLE。如果在所需的距离内传输数据存在挑战,可考虑边缘计算,它可以将数据分析转移到设备上,而不是将数据转移到别处进行处理。

带宽

带宽,或在特定时间段内能传输的数据量,限制了可从 IoT 设备收集数据并传输到上游的速率。考虑以下因素:

您选择的网络协议的包大小应与通常传输的数据大小相匹配。发送填满空数据的包是一种低效操作,但另一方面,将更大的数据块拆分为太多小包也会产生开销。数据传输速率并不总是对称的(也就是说,上传速率可能低于下载速率)。因此,如果设备间存在双向通信,则需要考虑数据传输。无线和蜂窝网络通常具有较低的带宽,所以需要考虑对高数据量应用选择无线技术是否妥当。

另外,考虑是否所有原始数据都需要传输。一个解决方案可能是通过降低采样频率,捕获更少的变量,或者在设备上执行某种过滤来丢弃不重要数据,从而捕获更少的数据。如果在传输数据前对其进行聚合,有助于减少要传输的数据量,但是此过程会影响上游分析的灵活性和粒度。聚合和突发性发送并不总是适合时间敏感或延迟敏感的数据。所有这些技术还会增加 IoT 设备的数据处理和存储需求。

功耗

从设备传输数据会消耗电力,长距离传输数据需要的电力比短距离更多。必须考虑依靠电池运行的设备,以节约用电,从而延长电池寿命和减少操作成本。要延长电池寿命,可以在设备空闲时让其进入休眠模式。一个不错的主意是对设备在不同负载和不同网络条件下的能耗进行建模,确保设备的电源供应和存储容量与使用特定网络技术传输必要数据所需的电量相匹配。

间歇连通性

IoT 设备并不总是处于连接状态。在某些情况下,设备被设计为定期连接,以节省用电或带宽。但是,有时不可靠的网络可能导致设备由于连接问题而掉线。有时会出现服务质量问题,比如处理使用共享频谱的无线网络上的干扰或信道争用。

互操作性

有如此多不同设备连接到 IoT,互操作性可能是一大挑战。采用标准协议是在互联网上维护互操作性的传统方法。但是,对于 IoT,标准化流程有时很难跟上快速的变化节奏,而且发布的技术基于即将出现的标准版本,而这些标准仍可能发生变化。在这些情况下,可以考虑围绕这些技术的生态系统;也就是说,询问以下问题:它们是否被广泛采用?它们是开放的还是专用的?有多少实现可用?

安全性

安全始终是优先考虑事项,所以一定要选择实现端到端安全的网络技术,包括身份验证、加密和开放端口保护。例如,IEEE 802.15.4 包含的一种安全模型提供了许多安全特性,包括访问控制、消息完整性、消息机密性和重放保护,这些特性是由基于此标准的技术(比如 ZigBee)实现的。

结束语

选择要采用的 IoT 网络技术的整个过程中都涉及到折中考虑。您选择的网络技术会影响 IoT 设备的设计,而且我在本文中讨论的大部分考虑因素都是相互依赖的。例如,网络传输距离、数据速率和功耗都是直接相关的。如果增加网络传输距离或速率和传输的数据量,IoT 设备几乎肯定需要额外的电力来在这些条件下传输数据。

对于基本的家庭自动化项目,电源考虑标准可能不太重要,因为设备很可能直接通过壁式插座供电。带宽限制和连接丢失具有更高的优先级,所以您可以采用 wifi,因为它提供了合理的带宽,而且使得该项目更容易使用商用硬件进行构建。但是,wifi 没有针对低功耗设备进行优化,所以对于通过电池供电的设备,该选择可能不是一个好的选择。

在本文中,我概述了一些最常用于 IoT 的网络协议和技术。您需要根据这些 IoT 网络挑战来考虑您的需求,找到最适合您的 IoT 应用的技术。