11 物联网网关
很多时候,我们的物联网种的设备会将消息上传到云平台,我们前面将的MQTT协议就可以实现这个功能。但是也有很多情况下,物联网中的设备时无法连接到云平台的,比如最常用的传感器,可能使用的时BLE或ZigBee协议,自身连IP地址都没有,这样的设备怎样连接到云平台?
答案是可以的,只不过不是直接连接,而是间接连接。在架构设计中有句话:”没有什么架构问题是不能通过添加一个层来解决的。“ 在这个问题的解决方案中,添加的这个层就是物联网网关。
物联网网关的作用就是设备和云平台之间的桥梁。我们可以把互联网网关放在网络环境(例如WiFi,4G)比较好的环境中。其他的物联网设备则采用LoRa等通信计算连接到物联网网关上,从而间接的实现设备的联网。
11.1 网络协议转换
物联网网关是设备和云平台之间的桥梁,这种桥梁不仅仅实现物理连接的转换,同时也实现协议的转换。物联网设备和网关连接的时候,可以采用BLE,ZigBee,LoRa等协议,甚至可以采用内部的私有协议。网关通过这些协议解析出数据之后,再使用和云平台通信的协议来组织数据,上传到云平台。因此,网关需要能够支持不同的通信技术,如下图所示:
图中的北向接口和南向接口,是约定俗成的说法。北向接口指的是网关和云平台之间的接口(上北下南,向上传输的接口是北向),南向接口是和物联网设备之间的接口。
由于网关连接的物联网设备各种各样,使用的协议也各种各样,因此网关的协议转换通常采用插件的软件架构方式。 这样,我们可以根据接口的情况动态的配置协议转换功能,并且能够对不常用的、甚至私有的协议开发解析功能。
11.2 网关的存储能力
网关中需要存储的信息分为两部分。
- 网关和设备的配置信息。存储这些信息是为了设备再运行过程中能够快速读取。
- 物联网设备上传的,经了协议转换之后的通用格式的数据。这些数据是临时存储,避免网络故障等原因导致设备数据丢失。
既然涉及到数据的存储与传输,那么不得不提的就是数据安全的问题。物联网网关需要做好以下的数据安全方面的事情:
- 完善的本地身份认证机制,防止网关设备被恶意修改配置或数据。
- 数据的加密传输能力。
- 支持专用传输通道,例如VPN或者运营商的专网接入。
11.3 其他的基础能力
网关还需要提供其他的配置管理的基础能力,包括但不限于设备管理、配置管理、在线升级等功能。
11.4 边缘计算
以上的这些是网关的传统功能。但是在现在这个”智能“时代,我们越来越看重设备的智能性,因此一个趋势就是越来越强调物联网网关的数据分析处理的能力。这个也就是我们经常听到的”边缘计算“。
我们知道,物联网的一大特性就是海量的接入设备。这就导致海量的数据涌入云平台。一方面这些数据会占用大量的网络带宽,另一方面对云平台的计算能力提出了很大的挑战。
另外,有一些原始数据是比较私密或敏感的,比如家庭摄像头拍摄的影像数据、工业场景中的一些数据。我们不希望这些原始数据被上传到云平台。
因此,目前的物联网中,在逐步尝试将原本在云平台上的计算任务,放到靠近数据原产地的设备上完成。这个过程称为将计算能力下沉到边缘设备,也称为边缘计算。
但是,很大物联网设备由于计算能力、能耗等的限制,是无法承担这些任务的,因此一个最轻量的解决方案就是在物联网网关中完成这些计算任务。
整个边缘计算的实现,还是基于分层的思路。在物联网网关中,完成初步的数据处理,或者需要快速响应的计算任务。云平台则负责大规模数据和复杂计算的任务,以及整体的协调控制。
11.4.1 边缘计算对网关的要求
边缘计算的能力,对网关提出了新的要求,对网关的影响注意体现在3个方面:
- 容器虚拟化的能力:让开发人员能够快速的测试应用程序,也方便进行大规模的部署,或者更新应用程序。
- 需要具备自治能力:当与云平台的通信中断时,不影响网关处理数据的计算任务。
- 能够为底层的各种硬件资源提供统一的开发框架。
加入这些能力后,网关的架构会变得如下图所示:
11.4.2 开源框架
目前边缘计算还处于快速发展期,也有很大的开源软件来帮助我们快速实现这些功能,还有一些组织在推进边缘计算的标准化,这些组织主要有:
- Linux Foundation Edge 推广的LF Edge
- Cloud Native Computing Foundation推广的Cloud Native
- Eclipse基金会下的Eclipse IoT
- OpenStack基金会
在容器技术方面,有开源的KubeEdge项目,致力于将Kubernetes的能力扩展到边缘设备。
在开发框架中,有EdgeX Foundry项目,致力于为工业互联网提供通用的边缘技术框架。还有Home Edge,专门针对智能家居领域的边缘计算。