一、简介
NB-IoT的网络架构
我们从华为的官方网站可以看到NB-IoT的网络架构:
重点看最下排的几个部件:
• Device:NB-IoT终端设备,如智能水表、气表等各种表,通过NB空口连接到eNodeB。
• eNodeB:就是基站,简称eNB,连接到核心网。
• IoT Core:面向IoT业务的核心网,主要作用是传输、转发数据。
• IoT Platform:华为的IoT业务管理平台,主要作用是汇集、管理数据。
• APP Server: IoT数据的最终目的地,属于应用层,根据不同的需求、方案来处理数据,一般是用户自己的服务器。
二、网络组成及数据传输
对于开发者来说,只需要做好Device和APP Server层面的事情,中间的步骤,都是华为、或者电信运营商的事情。
我们再看上图里上方部分,描述了其通信协议。NB-IoT支持UDP和CoAP两个通信协议,所以有两条路径:
• UDP协议:NB-IoT设备—eNode—核心网—客户服务器—应用层
• CoAP协议:NB-IoT设备—eNode—核心网—华为IoT平台—客户服务器—应用层
对于UDP和CoAP的两个协议,华为处理起来是有区别的,在上面那张图看不出区别,所以我们要看另一张图,下面这张图也是华为的,从中可以看出CoAP的数据流程:
我们可以看到,使用CoAP协议必须与华为的IoT平台配合,这个平台称为OceanConnect。通过这个平台,用户可以配置profile、编解码等信息,对数据进行解析,用户服务器通过数据查询接口(RESTful)获取平台上的数据,同时可以使用订阅接口,对数据变化进行订阅等。
基于华为方案的NB-IoT设备,使用CoAP协议必须经过华为IoT平台,在这个平台上数据会有一个比较统一的接口(或通道)。如果数据不想经过华为IoT平台,则不能使用CoAP协议,只能使用UDP协议。
CoAP通信协议
我们来看一下CoAP通信协议的特点。
由于IoT中很多设备都是资源受限的,即只有少量的内存空间和有限的计算能力,像HTTP这种协议就显得过于庞大而不适用了。为此,IETF(Intemet Engineering Task Force)工作组为受限节点制定相关的REST(Representational State Transfer)形式的应用层协议。
REST架构是client/server的架构模型,它把数据看做“资源”,放到IoT里,可以是温度计测量的温度,或者电池的剩余电量这些数据。
和HTTP协议类似,它提供了人们能轻松看懂的URL来访问资源,也可以使用GET, POST, PUT 和 DELETE来操作资源,这种相似性使得CoAP和Web结合和统一起来。
CoAP协议的传输层使用UDP协议。由于UDP传输的不可靠性,CoAP协议采用了双层结构,定义了带有重传的事务处理机制,并且提供资源发现和资源描述等功能。CoAP采用尽可能小的载荷,从而限制了分片。
总之,CoAP是简化了HTTP协议的RESTful API。对于资源受限的微处理器和IP网络通信,资源与带宽是我们需要优先考虑的问题,所以,HTTP并不是一种可行的选择,而CoAP则更为合适。