带你读《物联网之魂:物联网协议与物联网操作系统》之一: 网络通信技术-阿里云开发者社区

开发者社区> 华章出版社> 正文

带你读《物联网之魂:物联网协议与物联网操作系统》之一: 网络通信技术

简介: 本书为“物联网工程实战丛书”的第3卷。书中从物联网工程的实际需求出发,阐述了物联网协议的相关知识及物联网操作系统的设计和开发理念,从源头告诉读者需要开发什么样的物联网操作系统。本书适合作为高等院校物联网工程、通信工程、网络工程、电子信息工程、微电子和集成电路等相关专业的教材,也适合物联网协议的研究者和物联网操作系统的研发人员阅读。另外,本书还适合作为智慧城市建设等政府管理部门相关人员的参考读物。

物联网工程实战丛书
点击查看第二章
物联网之魂:物联网协议与物联网操作系统
 

image.png


 
孙昊 王洋 赵帅 杜秀芳 曾凡太 编著

第1章 网络通信技术

1.1 数字通信概述

  数字通信是指用数字信号作为载体来传输信息,或者用数字信号对载波进行数字调制后再传输的通信方式。它的主要技术设备包括发射器、接收器及传输介质。数字通信系统的通信模式主要包括数字频带传输通信系统、数字基带传输通信系统及模拟信号数字化传输通信系统3种。
  数字信号与传统的模拟信号不同。它是一种无论在时间上还是幅度上都属于离散的负载数据信息的信号。与传统的模拟通信相比其具有以下优势:首先是数字信号有极强的抗干扰能力,由于在信号传输的过程中不可避免地会受到系统外部及系统内部的噪声干扰,而且噪声会跟随信号的传输而放大,这无疑会干扰到通信质量。但是数字通信系统传输的是离散性的数字信号,虽然在整个过程中也会受到噪声干扰,但只要噪声绝对值在一定的范围内就可以消除噪声干扰。其次是在进行远距离的信号传输时,通信质量依然能够得到有效保证。因为在数字通信系统当中利用再生中继方式,能够消除长距离传输噪音对数字信号的影响,而且再生的数字信号和原来的数字信号一样,可以继续进行传输,这样数字通信的质量就不会因为距离的增加而产生影响,所以它也比传统的模拟信号更适合进行高质量的远距离通信。此外,数字信号要比模拟信号具有更强的保密性,而且与现代技术相结合的形式非常简便,目前的终端接口都采用数字信号。同时数字通信系统还能够适应各种类型的业务要求,例如电话、电报、图像及数据传输等,它的普及应用也方便实现统一的综合业务数字网,便于采用大规模集成电路,便于实现信息传输的保密处理,便于实现计算机通信网的管理等。
  要进行数字通信,就必须进行模数变换。也就是把信号发射器发出的模拟信号转换为数字信号。基本的方法包括:首先把连续性的模拟信号用相等的时间间隔抽取出模拟信号的样值,然后将这些抽取出来的模拟信号样值转变成最接近的数字值。因为这些抽取出的样值虽然在时域进行了离散化处理,但是在幅度上仍然保持着连续性。而量化过程就是将这些样值在幅度上也进行离散化处理,最后把量化过后的模拟信号样值转化为一组二进制数字代码,然后将数字信号送入通信网进行传输。在接收端则是一个还原过程,也就是把收到的数字信号变为模拟信号,通过数模变换重现声音及图像。如果信号发射器发出的信号本来就是数字信号,则不用再进行数模变换的过程,可以直接进入数字网进行传输。

1.2 数字通信关键技术

  数字通信的关键性技术包括编码、调制、解调、解码及过滤等,其中,数字信号的调制及解调是整个系统的核心也是最基本、最重要的技术。现代通信的数字化技术主要表现在以下几个方面。
  1.信源的编码技术
  常用的编码方法有:

  • 脉冲编码调制(PCM):在光纤通信系统中,光纤中传输的是二进制光脉冲“0”码和“1”码,它由二进制数字信号对光源进行调制而产生。数字信号是对连续变化的模拟信号进行抽样、量化和编码产生的,称为PCM(Pulse Code Modulation),即脉冲编码调制。
  • 增量调制(ΔM):或称增量脉码调制方式(DM),是继PCM后出现的又一种模拟信号数字化的方法,1946年由法国工程师De Loraine提出,目的在于简化模拟信号的数字化方法。增量调制主要在军事通信和卫星通信中广泛使用,有时也作为高速大规模集成电路中的A/D转换器使用。

  增量调制是一种把信号上一采样的样值作为预测值的单纯预测编码方式。增量调制是预测编码中最简单的一种。它将信号瞬时值与前一个抽样时刻的量化值之差进行量化,而且只对这个差值的符号进行编码,而不对差值的大小编码。因此量化只限于正和负两个电平,只用一比特传输一个样值。如果差值是正的,就发“1”码,若差值为负就发“0”码。因此数码“1”和“0”只是表示信号相对于前一时刻的增减,不代表信号的绝对值。同样,在接收端,每收到一个“1”码,译码器的输出相对于前一个时刻的值上升一个量阶。每收到一个“0”码就下降一个量阶。当收到连“1”码时,表示信号连续增长,当收到连“0”码时,表示信号连续下降。译码器的输出再经过低通滤波器滤去高频量化噪声,从而恢复原信号,只要抽样频率足够高,量化阶距大小适当,收端恢复的信号与原信号非常接近,量化噪声可以很小。
  2.信道编码技术
  从信道传输质量来看,希望在噪声干扰的情况下,编码的信息在传输过程中差错愈小愈好。为此,就要求传输码有检错和纠错的能力,欲使检错(纠错)能力愈强,就要求信道的冗余度愈大,从而使信道的利用率降低。同时,信道传输的速率与信息码速率一般是不等的,有时相差很大,这是在设计通信系统时必须注意的问题。
  3.现代调制解调技术
  有效利用频谱是无线通信发展到一定阶段时所必须解决的问题,况且随着大容量和远距离数字通信的发展,尤其是卫星通信和数字微波中继通信,其信道是带宽有限的和非线性的,这使传统的数字调制解调技术面临着新的挑战,这就需要进一步研究一种或多种新的调制解调方式,充分节省频谱并高效率地利用有限的频带,如现代的恒包络数字调制解调技术、扩展频谱调制解调技术。
  4.信道复用技术
  欲在同一信道内传输千百条话路,就需要利用信道复用技术。所谓信道复用,就是将输入的众多不同信息来源的信号,在发信端进行合并后在信道上传输,当到达收信端后又将它们分开,恢复为原多路信号的过程,也称为复接和分接,简称复用。理论上只要使多路信号分量之间相互正交,就能实现信道复用。常用的复用方式主要有频分复用(FDM)、时分复用(TDM)、码分复用(CDM)和空分复用(SDM)4种。数字通信中实现复用的关键是需要解决多种多样的同步问题。
  5.多址技术
  目前,现代通信是多点间的通信,即多用户之间的相互通信方式除了传统的交换方式外,人们需要在任何地点、任何时间,能够与任意对象交换信息,往往采用多址方式来予以实现。例如,卫星通信就是通过通信卫星与地球上任一个或多个地球站进行通信,而不需要专门的交换机的多址方式。多址方式有:频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)空分多址(SDMA)等。
  6.通信协议
  在当今的信息社会里,现代通信不仅仅是国内范围内的通信,而且是超越国界的。因此,在国内通信中需要规定统一的多种标准,以避免在通信过程中造成相互间的干扰或因通信线路(系统)的接口不同,而无法进行通信。在国际上成立了一个专门的机构——国际电报电话咨询委员会(CCITT),现为国际电信联盟(ITU)和国际无线电咨询委员会(CCIR),这两个机构在开展工作的几十年来,分别制定了一系列各国必须遵守的国际通信标准,并制定了为世界各国通信工作者所公认的众多协议和建议。随着通信体制日新月异的发展,仍然还有许多新开发的领域需要制定新的标准,例如ISDN和多种网路的协议等。在设计各种通信系统时,这是必须注意的关键问题。

1.3 数字通信OSI模型

  国际标准化组织(ISO)发布了开放系统互联(OSI)参考模型,OSI参考模型是一个7层结构,如图1.1所示。

image.png

  1.物理层
  物理层负责实现相邻计算机节点之间比特流的透明传输,尽可能屏蔽掉具体传输介质与物理设备间的差异,使上层的数据链路层不必考虑网络的具体传输介质是什么。
  2.数据链路层
  数据链路层负责建立和管理节点间的链路。接受来自物理层的位流形式的数据,并封装成帧传送到上一层;同样,也将来自上一层的数据帧,拆装为位流形式的数据转发到物理层;并且还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
  3.网络层
  网络层负责通过路由算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与物理层之间的信息转发,建立、维持与终止网络的连接。具体说就是,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备上传送到另一个网络设备上。
  4.传输层
  传输层负责提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时对数据进行分割,然后,传输层将数据传送到网络层,并确保数据能准确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层负责监督工作。
  5.会话层
  会话层负责向两个实体的表示层提供建立和使用连接的方法,将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
  6.表示层
  表示层负责对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
  7.应用层
  应用层负责直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。
  由于OSI是一个理想的模型,因此一般网络系统只涉及其中的几层,很少有系统能够具有完整的7层,并完全遵循它的规定。在7层模型中,每一层都提供一个特殊的网络功能。从网络功能的角度观察:下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;而上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。
  有一个很容易理解OSI 七层模型的例子,最初推出这个模型,是为了满足美国科学家需要在两台计算机之间进行通信的需求。
  (1)需求1
  科学家们要解决的第一个问题是两台计算机之间怎么通信。具体体现就是一台计算机发出比特流,另一台计算机能收到。
  于是,科学家们提出了物理层的概念:主要定义物理设备标准,如网线的接口类型、光纤的接口类型,以及各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
  (2)需求2
  现在能通过电线发数据流了,但是还希望通过无线电波或其他介质来传输,而且还要保证传输过去的比特流是正确的,要有纠错功能。
  于是,科学家们又提出了数据链路层的概念:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
  (3)需求3
  现在可以在两台计算机之间发送数据了,那么如果要在多台计算机之间发送数据呢?怎么找到原始发出(源)的那台?或者,A要给F发信息,中间要经过B、C、D、E,但是中间还有好多节点如K、J、Z、Y。怎么选择最佳路径?这就是路由要做的事。
  于是,科学家们又提出了网络层的概念:通过路由算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与物理层之间的信息转发,建立、维持与终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备上。一般,数据链路层是解决同一网络内节点之间的通信,而网络层主要解决不同子网之间的通信,例如路由选择问题。
  (4)需求4
  现在能正确地发送比特流数据到另一台计算机上了,但是当发送大量数据时候,可能需要很长时间,例如一个视频格式的文件,网络会中断很多次(事实上,即使有了物理层和数据链路层,网络还是会经常中断,只是中断的时间是毫秒级别),因此还需要保证传输大量文件时的准确性。因此,要对发出去的数据进行封装,就像发快递一样,一个一个地发。
  于是,科学家们又提出了传输层的概念:向用户提供可靠的、端到端的差错和流量控制,保证报文的正确传输。提供建立、连接和拆除传输连接的功能。传输层在网络层基础上提供“面向连接”和“面向无连接”两种服务。例如TCP,是用于发送大量数据的,我发了1万个包出去,另一台计算机就要告诉我是否接收到了1万个包,如果缺了3个包,就告诉我第1001个包、第234个包和第8888个包丢了,那么我会再发一次,这样就能保证对方把这个视频完整接收了。
  例如UDP,是用于发送少量数据的。我发20个包出去,一般不会丢包,所以,我不管你收到多少个。在多人互动游戏中也经常用UDP协议,因为一般都是简单的信息,而且有广播的需求。如果用TCP,效率就会降低,因为它会不停地告诉主机:我收到了20个包,或者我收到了18个包,再发我两个!如果同时有1万台计算机都这样做,那么用TCP反而会降低效率,不如用UDP,主机发出去就算了,如果你丢了几个包至多就卡一下,下次再发包时你再更新即可。
  (5)需求5
  现在我们已经保证给正确的计算机发送正确的封装过后的信息了。但是用户级别的体验好不好?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发?当然不行,所以我们要建立一个自动收发包、自动寻址的功能。
  于是,科学家们又提出了会话层的概念:建立和管理应用程序之间的通信。允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。例如提供单方向会话或双向同时会话,并管理会话中的发送顺序,以及会话所占用的时间长短。
  (6)需求6
  现在我能保证应用程序自动收发包和寻址了。但是要用Linux给Windows发包,两个系统的语法不一致,就像安装包一样,exe是不能在Linux系统上用的,shell在Windows系统上也是不能直接运行的。于是需要表示层,帮助解决不同系统之间通信的语法问题。
  (7)需求7
  现在所有必要条件都准备好了,我们可以写个Android程序,web程序去实现需求。
  因为OSI模型的层数太多,顺序也不好记忆,于是有人就用All People Seem To Need Data Processing来帮助记忆,因为这7个单词的首字母和OSI模型每一层的首字母是一样的。

1.4 TCP/IP网络通信协议

  通信协议对物联网来说十分常用且关键,无论是近距离无线传输技术还是移动通信技术,都影响着物联网的发展。通信协议是指双方实体完成通信或服务所必须遵循的规则和约定。
  我们将物联网协议分为两大类,一类是传输协议,一类是通信协议。传输协议一般负责子网内设备间的组网及通信。通信协议则主要是运行在传统互联网TCP/IP协议之上的设备通信协议,负责设备通过互联网进行数据交换及通信。
  物联网的通信环境有Ethernet、Wi-Fi、RFID、NFC(近距离无线通信)、ZigBee、6LoWPAN(IPv6低速无线版本)、Bluetooth、GSM、GPRS、GPS、3G和4G等网络,而每一种通信应用协议都有一定的适用范围。AMQP、JMS和HTTP都是工作在以太网的协议,CoAP协议是专门为资源受限设备开发的协议,MQTT的兼容性则强很多。

1.4.1 TCP/IP协议

  互联网的发展很大程度上要归功于Vinton Cerf和Robert Kahn这对老搭档。他们在20世纪70年代设计的TCP/IP协议奠定了现代网络的基石,也因此获得了计算机界的最高荣誉——图灵奖。
  TCP/IP的设计非常成功。几十年来,底层的带宽、延时,还有介质都发生了翻天覆地的变化,顶层也多了不少应用,但TCP/IP却安如泰山。它不但战胜了国际标准化组织的OSI七层模型,而且目前还看不到被其他方案取代的可能。第一代从事TCP/IP工作的工程师,到了退休年龄也在做着朝阳产业。OSI七层模型过于笨重,在实际应用中,市场明显更青睐TCP/IP四层模型。
  TCP/IP是一个四层协议系统,如图1.2所示。

image.png

  每一层负责不同的功能。

  • 链路层:也称数据链路层或网络接口层。包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
  • 网络层:也称互联网层。处理分组在网络中的活动,例如分组的选路。
  • 运输层:也称传输层。主要为两台主机上的应用程序提供端到端的通信。
  • 应用层:负责处理特定的应用程序细节。

  TCP/IP协议族具体包含多个协议,如图1.3所示。
  IP协议负责数据传输到哪里,而TCP协议负责数据的可靠传输。它们在数据传输过程中主要完成以下功能:
  (1)由TCP协议把数据分成若干数据包,给每个数据包写上序号,以便接收端把数据还原成原来的格式。
  (2)IP协议给每个数据包写上发送主机和接收主机的地址,一旦写上源地址和目的地址,数据包就可以在互联网上传送数据了。IP协议还具有利用路由算法进行路由选择的功能。
  (3)这些数据包可以通过不同的传输途径(路由)进行传输,由于路径不同,加上其他的原因,可能出现顺序颠倒、数据丢失、数据失真甚至重复的现象。这些问题都由TCP协议来处理,它具有检查和处理错误的功能,必要时还可以请求发送端重发。

image.png

  TCP/IP协议族跟OSI模型的对比,如图1.4所示。

image.png

  互联网时代,TCP/IP协议已经一统江湖,现在的物联网的通信架构也是构建在传统互联网基础架构之上。在当前的互联网通信协议中,HTTP协议由于开发成本低,开放程度高的优势,几乎占据了大半江山,所以很多厂商在构建物联网系统时也基于HTTP协议进行开发。包括Google主导的physic web项目,都是期望在传统Web技术基础上构建物联网协议标准。
  HTTP协议是典型的CS通信模式,由客户端主动发起连接,向服务器请求XML或JSON数据。该协议最早是为了适用Web浏览器的上网浏览场景而设计的,目前在PC、手机、Pad等终端上都应用广泛,但并不适用于物联网场景。HTTP协议在物联网场景中应用有以下三大弊端:

  • 必须由设备主动向服务器发送数据,难以主动向设备推送数据。这对于数据采集等场景还可以勉强适用,但是对于频繁的操控场景,只能通过设备定期主动拉取的方式,实现成本和实时性都大打折扣。
  • 安全性不高。由于Web的不安全性,HTTP是明文协议,在很多要求高安全性的物联网场景,如果不做很多安全准备工作(如采用https等),后果将不堪设想。
  • 不同于用户交互终端如PC、手机,物联网场景中的设备多样化,对于运算和存储资源都十分受限的设备,HTTP协议实现、XML/JSON数据格式的解析,都是不可能的任务。

1.4.2 CoAP协议

  CoAP(Constrained Application Protocol,受限应用协议),应用于无线传感网中的协议,是6LowPAN协议栈中的应用层协议,适用于资源受限的通信网络。
  CoAP协议的特点如下:

  • 报头压缩:CoAP包含一个紧凑的二进制报头和扩展报头。它只有短短的4B的基本报头,基本报头后面跟扩展选项。一个典型的请求报头为10~20B。
  • 方法和URIs:为了实现客户端访问服务器上的资源,CoAP支持GET、PUT、POST和DELETE等方法。CoAP还支持URIs,这是Web架构的主要特点。
  • 传输层使用UDP协议:CoAP协议是建立在UDP协议之上,以减少开销和支持组播功能。它也支持一个简单的停止和等待的可靠性传输机制。
  • 支持异步通信:HTTP对M2M(Machine-to-Machine)通信不适用,这是由于事务总是由客户端发起。而CoAP协议支持异步通信,这对M2M通信应用来说是常见的休眠/唤醒机制。
  • 支持资源发现:为了自主地发现和使用资源,它支持内置的资源发现格式,用于发现设备上的资源列表,或者用于设备向服务目录公告自己的资源。它支持RFC5785中的格式,在CoAP中用/.well—known/core路径表示资源描述。
  • 支持缓存:CoAP协议支持资源描述的缓存,可以优化其性能。

  CoAP协议主要实现:

  • libcoap(C语言实现);
  • Californium(Java语言实现)。

  CoAP和6LowPan,分别是应用层协议和网络适配层协议,其目标是解决设备直接连接到IP网络,也就是IP技术应用到设备之间、互联网与设备之间的通信需求。因为IPV6技术带来了巨大的寻址空间,不光解决了未来巨量设备和资源的标识问题,也使互联网上的应用可以直接访问支持IPv6的设备,而不需要额外的网关。

1.4.3 MQTT协议(低带宽)

  MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),是由IBM开发的即时通信协议,相比来说是比较适合物联网场景的通信协议。MQTT协议采用发布/订阅模式,所有的物联网终端都通过TCP连接到云端,云端通过主题的方式管理各个设备关注的通信内容,负责设备与设备之间的消息转发。
  MQTT在协议设计时就考虑到不同设备的计算性能的差异,因此所有的协议都是采用二进制格式编/解码,并且编/解码格式非常易于开发和实现。其最小的数据包只有2个字节,对于低功耗、低速网络也有很好的适应性。MQTT有非常完善的QoS(Quality of Service)机制,根据业务场景可以选择最多一次、至少一次、刚好一次的3种消息送达模式。其运行在TCP协议之上,同时支持TLS(TCP+SSL)协议,并且由于所有数据通信都经过云端,安全性得到了较好的保障。
  MQTT协议的适用范围:在低带宽、不可靠的网络下,提供基于云平台的远程设备的数据传输和监控。
  MQTT协议的特点:

  • 使用基于代理的发布/订阅消息模式,提供一对多的消息发布模式。
  • 使用TCP/IP提供网络连接。
  • 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。
  • 支持QoS,有3种消息发布服务质量:即至多一次、至少一次、只有一次。

  MQTT协议主要实现和应用:

  • 已经有PHP、Java、Python、C和C#等多个语言版本的协议框架。
  • IBM Bluemix的一个重要部分是其IoT Foundation服务,这是一项基于云的MQTT实例。
  • 移动应用程序也早就开始使用MQTT,如 Facebook Messenger 和com等。

  MQTT协议一般适用于设备数据采集到端(Device→Server,Device→Gateway),属于集中星型网络架构(hub-and-spoke),不适用设备与设备之间通信,设备控制能力弱。另外,其实时性较差,一般都在秒级。

1.4.4 AMQP协议(互操作性)

  AMQP(Advanced Message Queuing Protocol,先进消息队列协议),是OASIS组织提出的,该组织曾提出OSLC(Open Source Lifecyle)标准,用于业务系统,例如PLM、ERP、MES等进行数据交换。
  AMQP协议适用范围:最早应用于金融系统之间的交易消息传递,在物联网应用中,主要适用于移动手持设备与后台数据中心的通信和分析。
  AMQP协议特点:

  • Wire级的协议,它描述了在网络上传输数据的格式,以字节为流。(注:字节流是由字节组成的,字符流是由字符组成的)
  • 面向消息、队列、路由(包括点对点和发布/订阅),可靠、安全。

  AMQP协议有广泛的用途,一些厂商使用了不同的语言编写AMQP协议实现软件,以达到消息传递的目的。不同的AMQP实现软件,可运行在不同的软件环境下。下面列出了4种AMQP协议软件实现的编程语言和运行环境。

  • OpenAMQ:AMQP的开源实现,用C语言编写,运行于Linux、AIX、Solaris、Windows、和OpenVMS系统。
  • Apache Qpid:Apache的开源项目,支持C++、Ruby、Java、JMS、Python和.NET。
  • Redhat Enterprise MRG:实现了AMQP的最新版本0~10,提供了丰富的特征集,比如完全管理、联合、Active-Active集群,有Web控制台,还有许多企业级特征,客户端支持C++、Ruby、Java、JMS、Python和.NET。
  • RabbitMQ:一个独立的开源实现,服务器端用Erlang语言编写,支持多种客户端,如Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP和STOMP等,支持AJAX。
    RabbitMQ发布在Ubuntu和FreeBSD平台。

  AMQP工作流程:发布者(Publisher)发布消息(Message),经由交换机(Exchange)。交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。最后AMQP代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。具体工作流程如图1.5所示。

image.png

1.4.5 XMPP协议(即时通信)

  XMPP(Extensible Messaging and Presence Protocol,可扩展通信和表示协议),其前身是Jabber,是一个开源组织产生的网络即时通信协议,后被IETF国际标准组织完成了标准化工作。
  XMPP协议的适用范围:用于即时通信的应用程序中,还能用在网络管理、内容供稿、协同工具、档案共享、游戏和远端系统监控中等。
  XMPP协议的特点:

  • 属于客户机/服务器通信模式。
  • 用于分布式网络。
  • 简单的客户端,将大多数工作放在服务器端进行。
  • 标准通用标记语言的子集XML的数据格式。

  XMPP是基于XML的协议,由于其开放性和易用性,在互联网及时通信应用中运用广泛。相对HTTP,XMPP在通信的业务流程上是更适合物联网系统的,开发者不用花太多心思去解决设备通信时的业务通信流程,相对开发成本会更低。但是HTTP协议中的安全性及计算资源消耗的硬伤并没有得到本质的解决。

1.4.6 JMS协议

  JMS(Java Message Service,Java消息服务),是Java平台中著名的消息队列协议。
  Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
  JMS是一种与厂商无关的API,用来收发系统消息,它类似于JDBC(Java Data Base Connectivity)。这里,JDBC是可以用来访问许多不同关系数据库的API,而JMS则提供同样与厂商无关的访问方法,以访问消息收发服务。JMS能够通过消息收发服务(有时称为消息中介程序或路由器)从一个JMS客户机向另一个JMS客户机发送消息。消息是JMS中的一种类型对象,由两部分组成:即报头和消息主体。报头由路由信息及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,分别是:文本消息(TextMessage)、目标消息(ObjectMessage)、消息映射(MapMessage)、消息字节(BytesMessage)、消息流(StreamMessage)和无有效负载的消息(Message)。
  MQTT、AMQP、XMPP、JMS和CoAP这几种协议都已被广泛应用,并且每种协议至少有10种以上的代码实现,都宣称支持实时的发布/订阅的物联网协议,但是在具体物联网系统架构设计时,需考虑实际场景的通信需求,选择合适的协议。MQTT、XMPP和和CoAP的比较如表1.1所示。

image.png

1.5 UDP协议

  UDP为应用程序发送和接收数据报,但是与TCP不同,UDP是不可靠的,它只是把数据报发送出去,但并不能保证该数据报能安全无误地到达最终目的地。
  说到UDP,经常拿它与TCP来对比。UDP是无须连接的,所以非常适合DNS查询。如图1.5和图1.6是分别在基于UDP和TCP时执行DNS查询的两个包,前者明显更加直截了当,两个包就完成了。
  基于UDP的查询如表1.2所示。

image.png

  基于TCP的查询如表1.3所示。

image.png
image.png

  UDP为什么能如此直接呢?其实是因为它设计简单,在UDP协议头中,只有端口号、包长度和校验码等少量信息,总共就8个字节,其小巧的头部给它带来了一些优点。

  • 由于UDP协议头长度还不到TCP头的一半,所以在同样大小的包里,UDP包携带的净数据比TCP包多一些。
  • 由于UDP没有序列号(seq)和应答(ack)等概念,无法维持一个连接,所以省去了建立连接的负担。这个优势在DNS查询中体现得淋漓尽致。

  UDP数据报封装成一份 I P数据报的格式,如图1.6所示。

image.png

  UDP首部的各字段如图1.7所示。

image.png

  端口号表示发送进程和接收进程。
  UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节(发送一份0字节的UDP数据报是OK)。这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度。
  当然简单的设计不一定是好事,更多的时候会带来问题。
  UDP不像TCP一样在乎双方MTU(Maximum Transmission Unit,最大传输单元)的大小。它拿到应用层的数据之后,直接打上UDP头就交给下一层了。那么超过MTU的时候怎么办?
  在这种情况下,发送方的网络层负责分片,接收方收到分片后再组装起来,这个过程会消耗资源,降低性能。
  UDP没有重传机制,所以丢包由应用层来处理。例如,某个写操作需要6个包完成。当基于UDP的写操作中有一个包丢失时,客户端不得不重传整个写操作(6个包)。相比之下,基于TCP的写操作就好很多,只要重传丢失的那一个包即可。试想一下,在高性能环境中,一个写操作需要数十个包来完成,UDP的劣势就体现出来了。
  分片机制存在弱点,会成为黑客的攻击目标。接收方之所以知道什么时候该把分片组装起来,是因为每个包里都有More fragments的flag。1表示后续还有分片,0则表示这是最后一个分片,可以组装了。如果黑客持续快速地发送flag为1的UDP包,接收方一直无法把这些包组装起来,就有可能耗尽内存。

1.6 HTTP协议

  HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(World Wide Web,WWW)服务器传输超文本到本地浏览器的传送协议。
  HTTP是基于TCP/IP通信协议来传递数据的(如HTML文件、图片文件和查询结果等)。

1.6.1 工作原理

  HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即Web服务器发送所有请求。
  Web服务器有:Apache服务器和IIS服务器(Internet Information Services)等。Web服务器根据接收到的请求后,向客户端发送响应信息。HTTP默认端口号为80,但是也可以改为8080或者其他端口。
  HTTP协议的三点注意事项:

  • HTTP是无连接的:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端及服务器指定使用适合的MIME-type(文件后缀名)内容类型。
  • HTTP是无状态的:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要前面的信息时它的应答就较快。

  如图1.8所示为HTTP协议通信流程。

image.png

1.6.2 消息结构

  HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。
  一个HTTP“客户端”是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP请求的目的。
  一个HTTP“服务器”同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。
  HTTP使用统一资源标识符(Uniform Resource Identifiers,URI)来传输数据和建立连接。
  一旦建立连接后,数据消息就通过类似Internet邮件所使用的格式[RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送。
  客户端请求消息:客户端发送一个HTTP请求到服务器的请求消息包括请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,如图1.9给出了请求报文的一般格式。
  服务器响应消息:HTTP响应也由4部分组成,分别是状态行、消息报头、空行和响应正文,如图1.10所示。

image.pngimage.png

1.6.3 请求方法

  根据HTTP标准,HTTP请求可以使用多种请求方法,如表1.4所示。
  HTTP 1.0协议中定义了3种请求方法,分别是GET、POST和HEAD方法。
  HTTP 1.1协议中新增了5种请求方法,分别是OPTIONS、PUT、DELETE、TRACE和CONNECT方法。

image.png

1.6.4 响应头信息

  HTTP请求头提供了关于请求、响应或者其他发送实体的信息。在本节中将具体介绍HTTP响应头信息,如表1.5所示。

image.png
image.png

1.6.5 状态码

  当浏览者访问一个网页时,其浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
  HTTP状态码的英文为HTTP Status Code。下面是常见的HTTP状态码:

  • 200:请求成功;
  • 301:资源(网页等)被永久转移到其他URL;
  • 404:请求的资源(网页等)不存在;
  • 500:内部服务器错误。

1.6.6 内容类型

  Content-Type(内容类型),一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件,这就是为什么一些ASP网页点击下载的结果却是一个文件或一张图片的原因。

1.7 FTP协议

  FTP与我们已描述的另一种应用不同,它采用两个 TCP连接来传输一个文件。
  控制连接以通常的客户服务器方式建立。服务器以被动方式打开用于FTP的端口(21),等待客户的连接。客户则以主动方式打开TCP端口21,来建立连接。控制连接始终等待客户与服务器之间的通信。该连接将命令从客户传给服务器,并传回服务器的应答。
  由于命令通常是由用户输入的,所以IP对控制连接的服务类型就是“最大限度地减小迟延”。
  每当一个文件在客户与服务器之间传输时,就创建一个数据连接。由于该连接用于传输目的,所以IP对数据连接的服务特点就是“最大限度提高吞吐量”。如图1.11所示为客户与服务器之间的连接情况。

image.png

  从图1.11中可以看出,交互式用户通常不处理在控制连接中转换的命令和应答。这些细节均由两个协议解释器来完成。标有“用户接口”的方框功能是按用户所需提供各种交互界面(全屏幕菜单选择,逐行输入命令等),并把它们转换成在控制连接上发送的 FTP命令。
  类似地,从控制连接上传回的服务器应答也被转换成用户所需的交互格式。
  从图1.11中还可以看出,正是这两个协议解释器根据需要激活文件传送功能。
  FTP协议规范提供了控制文件传送与存储的多种选择。在以下4个部分的选择项中,每一部分都必须选择一项。
  1.文件类型

  • ASCII码文件类型(默认选择):文本文件以NVT ASCII码形式在数据连接中传输。这要求发送方将本地文本文件转换成NVT ASCII码形式,而接收方则将NVT ASCII码再还原成本地文本文件。其中,用NVT ASCII码传输的每行都带有一个回车,之后是一个换行。这意味着接收方必须扫描每个字节,查找CR、LF对。
  • EBCDIC文件类型:该文本文件传输方式要求两端都是 EBCDIC系统。
  • 图像文件类型(也称为二进制文件类型):数据发送呈现为一个连续的比特流。通常用于传输二进制文件。

    • 本地文件类型:该方式在具有不同字节大小的主机间传输二进制文件。每一字节的比特数由发送方规定。对使用8bit字节的系统来说,本地文件以8bit字节传输就等同于图像文件传输。

  2.格式控制
  格式控制选项只对ASCII和EBCDIC文件类型有效。

  • 非打印(默认选择):文件中不含有垂直格式信息。
  • 远程登录格式控制:文件含有向打印机解释的远程登录垂直格式控制。
  • Fortran 回车控制:每行首字符是Fortran格式控制符。

  3.结构

  • 文件结构(默认选择):文件被认为是一个连续的字节流。不存在内部的文件结构。
  • 记录结构:该结构只用于文本文件(ASCII或EBCDIC)。
  • 页结构:每页都带有页号发送,以便接收方能随机地存储各页。该结构由TOPS - 20操作系统提供(主机需求RFC不提倡采用该结构)。

  4.传输方式
  它规定文件在数据连接中如何传输。

  • 流方式(默认选择):文件以字节流的形式传输。对于文件结构,发送方在文件尾提示关闭数据连接。对于记录结构,有专用的两字节序列码标志记录结束和文件结束。
  • 块方式:文件以一系列块来传输,每块前面都带有一个或多个首部字节。
  • 压缩方式:一个简单的全长编码压缩方法,压缩连续出现的相同字节。在文本文件中常用来压缩空白串,在二进制文件中常用来压缩 0字节(这种方式很少使用,也不受支持。现在有一些更好的文件压缩方式支持FTP)。

  如果算一下以上所有选择的排列组合数,那么对传输和存储一个文件来说就有72种不同的方式。幸运的是,其中很多选择或是废弃了,或是不为多数实现环境所支持,所以可以忽略掉。
  通常由UNIX实现的FTP客户和服务器限制了我们的选择:

  • 类型:ASCII或图像;
  • 格式控制:只允许非打印;
  • 结构:只允许文件结构;
  • 传输方式:只允许流方式。

  这就限制我们只能取一或两种方式:ASCII或图像(二进制)。
  该实现满足主机需求RFC的最小需求(该RFC也要求能支持记录结构,但只有操作系统支持它才可以,而UNIX则不支持)。
  很多非UNIX的实现提供了处理它们自己的文件格式的FTP功能。主机需求RFC指出“FTP协议有很多特征,虽然其中一些通常不实现,但对FTP中的每一个特征来说,都存在着至少一种实现”

1.8 Bluetooth协议

  蓝牙技术是一种尖端的开放式无线通信标准,能够在短距离范围内无线连接桌上型电脑与笔记本电脑、便携设备、PDA、移动电话、拍照手机、打印机、数码相机、耳麦、键盘甚至鼠标。
  利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够简化设备与互联网之间的通信,从而数据传输变得更加迅速高效。
  蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。其数据速率为1Mbps。采用时分双工传输方案实现全双工传输。
  简而言之,蓝牙技术让各种数码设备之间能够无线沟通。有了蓝牙无线技术,可以轻松连接计算机和便携设备、移动电话及其他外围设备——在9米(30英尺)距离之内以无线方式彼此连接。
  相比于其他无线技术:红外、无线2.4G、Wi-Fi来说,蓝牙具有加密措施完善、传输过程稳定及兼容设备丰富等诸多优点。尤其是在授权门槛逐渐降低的今天,蓝牙技术开始真正普及到所有的数码设备中。

1.8.1 Bluetooth发展史及优势

  目前蓝牙技术最新的协议是蓝牙技术联盟 (Bluetooth Special Interest Group),是2016年6月16日发布的新一代蓝牙标准——蓝牙5。蓝牙5比原来拥有更快的传输速度,更远的传输距离。
  蓝牙名字源于一个小故事。公元940—985年,哈洛德·布美塔特(Harald Blatand,后人称Harald Bluetooth)统一了整个丹麦。他的名字Blatand可能取自两个古老的丹麦词语,bla意思是黑皮肤的,而tan是伟人的含义。和许多君王一样 ,哈洛德四处扩张领土,为政治、经济和荣誉而征战。公元960年哈洛德到达了他权力的最高点,征服了整个丹麦和挪威。而蓝牙是这个丹麦国王Viking的“绰号”,因为他爱吃蓝梅,牙齿被染蓝,因此而得这一“绰号”。
  在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。行业组织人员,在经过一夜关于欧洲历史和未来无线技术发展的讨论后,有些人认为用Blatand国王的名字命名再合适不过了。Blatand国王将挪威、瑞典和丹麦统一起来;他的口齿伶俐,善于交际,就如同这项即将面世的技术。该项技术将被定义为允许不同工业领域之间的协调工作,保持着各个系统领域之间的良好交流,例如计算机、手机和汽车行业之间的工作。
  为什么要推出蓝牙?
  蓝牙技术最初由爱立信创制。该技术始于爱立信公司的1994方案,它是研究在移动电话和其他配件间进行低功耗、低成本无线通信连接的方法。发明者希望为设备间的通信创造一组统一规则(标准化协议),以解决用户间互不兼容的移动电子设备。
  研究的目的是要找到一种方法,能够除掉连接移动电话和PC卡、耳机、台式计算机及其他设备之间的电缆。此项研究是一个大项目中的一部分,该项目主要研究如何将各种不同的通信设备通过移动电话接入蜂窝网上。经项目人员研究得出结论,这种连接的最后一段应该是短距离的无线连接。随着项目的进展,日益明朗化的是短距离无线通信的应用范围几乎无限广阔。
  1997年,爱立信公司借此概念接触了移动设备制造商,讨论其项目合作发展,结果获得支持。1998年5月,爱立信、诺基亚、东芝、IBM和英特尔5家公司,在联合开展短距离无线通信技术的标准化活动时提出了蓝牙技术。
  1999年5月20日,这5家公司成立了蓝牙“特别兴趣组”(Special Interest Group,SIG),即蓝牙技术联盟的前身,以使蓝牙技术能够成为未来的无线通信标准。芯片“霸主”英特尔公司负责半导体芯片和传输软件的开发,爱立信公司负责无线射频和移动电话软件的开发,IBM和东芝公司负责笔记本电脑接口规格的开发。
  1999年下半年,著名的业界“巨头”微软、摩托罗拉、三星、朗讯与蓝牙特别小组的5家公司共同发起成立了蓝牙技术推广组织,从而在全球范围内掀起了一股“蓝牙”热潮。全球业界开发出了一大批蓝牙技术的应用产品,使蓝牙技术呈现出极其广阔的市场前景,迎来了波澜壮阔的全球无线通信浪潮。
  到2000年4月,SIG的成员数已超过1500家,其成长速度超过了其他的无线联盟组织。这些公司联合开发了蓝牙1.0标准,并于1999年7月公布。蓝牙的详细发展史如表1.6所示。

image.png


  目前最新的蓝牙5.0相对之前的版本有更大的技术优势,表现在以下几方面:
  • 更快的传输速度:蓝牙5.0的开发人员称,新版本的蓝牙传输速度上限为24Mbps,是之前4.2LE版本的两倍。
  • 更远的有效距离:蓝牙5.0的另外一个重要改进是,它的有效距离是上一版本的4倍,理论上,蓝牙发射和接收设备之间的有效工作距离可达300米。
  • 导航功能:蓝牙5.0将添加更多的导航功能,因此该技术可以作为室内导航信标或类似定位设备使用,结合Wi-Fi可以实现精度小于1米的室内定位。举个例子,如果你和小编一样是路痴的话,你可以使用蓝牙技术,在诺大的商业中心找到路。
  • 物联网功能:物联网还在持续火爆,因此,蓝牙5.0针对物联网进行了很多底层优化,力求以更低的功耗和更高的性能为智能家居服务。
  • 升级硬件:之前的一些蓝牙版本更新只要求升级软件,但蓝牙5.0很可能要求升级到新的芯片。不过,旧的硬件仍可以兼容蓝牙5.0,但无法享用其新的性能了。搭载蓝牙5.0芯片的“旗舰”级手机已经问世,相信中低端手机也将陆陆续续内置蓝牙5.0芯片。

    • 更多的传输功能:全新的蓝牙5.0能够增加更多的数据传输功能,硬件厂商可以通过蓝牙5.0创建更复杂的连接系统,比如Beacon或位置服务。因此通过蓝牙设备发送的广告数据可以发送少量信息到目标设备中,甚至无须配对。
  • 更低的功耗:蓝牙5.0降低了蓝牙的功耗,使人们在使用蓝牙的过程中再也不必担心待机时间短的问题。

1.8.2 Bluetooth技术

  目前主流的操作系统都支持蓝牙堆栈技术。蓝牙协议栈的结构如图1.12所示。

image.png

  苹果公司从2012年的Mac OS X v10.2产品就开始采用蓝牙技术。关于微软平台,Windows在XP时代就对Bluetooth 1.1/2.0/2.0+EDR提供了原生支持。Linux有两个常用的蓝牙堆栈,即BlueZ和Affix。多数Linux核心程序都包括BlueZ堆栈,它最早是由高通开发的。Affix堆栈是由Nokia开发的。FreeBSD从5.0版本开始支持蓝牙。NetBSD从4.0版本开始支持蓝牙。蓝牙堆栈也被接入OpenBSD端口。
  蓝牙协议体系中的协议按SIG的关注程度分为4层:

  • 核心协议:BaseBand、LMP、L2CAP、SDP;
  • 电缆替代协议:RFCOMM;
  • 电话传送控制协议:TCS-Binary、AT命令集;
  • 选用协议:PPP、UDP/TCP/IP、OBEX、WAP、vCard、vCal、IrMC、WAE。

  除上述协议层外,规范还定义了主机控制器接口(Host Controller Interface HCI),它为基带控制器、连接管理器、硬件状态和控制寄存器提供命令接口。在图1.11中,HCI位于L2CAP的下层,但HCI也可位于L2CAP上层。
  蓝牙核心协议由SIG制定的蓝牙专用协议组成。绝大部分蓝牙设备都需要核心协议(加上无线部分),而其他协议则根据应用的需要而定。总之,电缆替代协议、电话控制协议和被采用的协议在核心协议基础上构成了面向应用的协议。

1.9 ZigBee协议

  ZigBee是一种新兴的短距离、低复杂度、低功耗、低数据速率和低成本的无线网络技术。主要用于近距离无线连接。TI公司的ZigBee芯片样片如图1.13所示。它依据IEEE 802.15.4标准,在数千个微小的传感器之间相互协调实现通信。ZigBee无线网络主要是为工业现场自动化控制数据传输而建立。因此它具备简单、方便、稳定和低成本等特点,弥补了蓝牙技术不能满足工业自动化中对低数据量、低成本、低功耗、高可靠性的无线数据通信的需求。

image.png

1.9.1 ZigBee发展历史

  ZigBee(蜜蜂协议),是基于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术,它来源于蜜蜂的八字舞,蜜蜂(bee)是通过飞翔和“嗡嗡”(zig)抖动翅膀的“舞蹈”与同伴传递花粉所在方位的信息,而ZigBee协议的方式特点与其类似,便更名为ZigBee。
  ZigBee协议是由ZigBee联盟制定的无线通信标准,该联盟成立于2001年8月。2002年下半年,英国Invensys公司、日本三菱电气公司、美国摩托罗拉公司及荷兰飞利浦半导体公司共同宣布加入ZigBee联盟,研发名为ZigBee的下一代无线通信标准,这一事件成为该技术发展过程中的里程碑事件。ZigBee联盟现有的理事公司包括BM Group、Ember、飞思卡尔半导体、Honeywell(霍尼韦尔)、三菱电机、摩托罗拉、飞利浦、三星电子、西门子,以及德州仪器。ZigBee联盟的目的是为了在全球统一标准上实现简单可靠、价格低廉、功耗低、无线连接的监测和控制产品进行合作,并在2004年12月发布了第一个正式标准。
  下面列出ZigBee的几个重要的里程碑事件。

  • 2001年8月,ZigBee Alliance成立。
  • 2004年,ZigBee V1.0诞生。它是Zigbee规范的第一个版本。由于推出时间仓促,存在一些错误。
  • 2006年,推出ZigBee 2006,功能比较完善。
  • 2007年年底,ZigBee PRO推出。
  • 2009年3月,Zigbee RF4CE推出,具备更强的灵活性和远程控制能力。
  • 2009年开始,Zigbee采用了IETF的6LoWPAN标准作为新一代智能电网Smart Energy(SEP 2.0)的标准,致力于形成全球统一的易于与互联网集成的网络,实现端到端的网络通信。

  ZigBee版本升级历程如图1.14所示。

image.png

  • ZigBeeV1.0:这是第一个ZigBee标准公开版,2005年6月开放下载。
  • ZigBeeV1.1:这是第二个ZigBee标准公开版,2007年1月开放下载。
  • ZigBeeV1.2:这是第三个ZigBee标准公开版,2008年1月开放下载。又称ZigBee Pro。

  ZigBee协议的诞生源于对工业物联网的需求。但为了满足不同的应用背景,ZigBee联盟先后颁布了:

  • ZigBee Home Automation(ZigBee HA);
  • ZigBee Light Link(ZigBee LL);
  • ZigBee Building Automation(ZigBee BA);
  • ZigBee Retail Services(ZigBee RS);
  • ZigBee Health Care(ZigBee HC);
  • ZigBee Telecommunication Services(ZigBee TS);

等应用层协议来满足智能家居、智能照明、智能建筑、智能零售、智能健康、智能通信服务等领域。问题是这些应用层协议是独立不互通的。以国内应用最广的智能家居领域为例,欧瑞博采用了标准的ZigBee HA协议的智能开关,和飞利浦采用标准的ZigBee LL的Hue智能灯泡是不能互相控制的。
  这里强调标准ZigBee协议的原因是由于早期ZigBee版本由于标准化不完善,给了厂商太多选择,很多厂商虽然采用了ZigBee HA的协议,但是终端的智能家居厂商根据自家的需求定制化了ZigBee HA,而非标准ZigBee协议,导致不同厂家产品还是不能互联互通。
  这也类似于Android,不同手机厂商都是采用Android系统,但是都进行了大量的定制化,导致最后的手机系统也是千差万别。可以说,ZigBee之前仅仅解决了智能设备的连接问题,但是没有解决智能设备互联互通的问题。
  2016年5月,ZigBee联盟推出了ZigBee 3.0标准,其主要任务就是为了统一上述众多应用层协议,解决了不同应用层协议之间的互联互通问题。用户只要购买任意一个经过ZigBee 3.0的网关就可以控制不同厂家基于ZigBee 3.0的智能设备,如图1.15所示。

image.png

  ZigBee 3.0统一了采用不同应用层协议的ZigBee设备的发现、加入和组网方式,使得ZigBee设备的组网更便捷、更统一。
  并且ZigBee联盟推出了ZigBee 3.0认证,就是来规范各个厂商使用标准的ZigBee 3.0协议,以保证基于ZigBee 3.0设备的互通性。
  距ZigBee 3.0标准发布后的第7个月,ZigBee联盟于2016年12月宣布其8家成员公司已有20个ZigBee 3.0芯片平台获得认证通过,并表示未来IoT应用开发者在开发建筑照明、能源应用、传感器、控制器、网关和其他的物联网应用时,有更多供货商可供选择,不用再担心互操作性问题。

1.9.2 ZigBee的特点及优势

  ZigBee是一种无线连接,可工作在2.4GHz(全球流行)、868MHz(欧洲流行)和915 MHz(美国流行)3个频段上,分别具有最高250Kbps、20Kbps和40Kbps的传输速率,它的传输距离在10~75m的范围内,但可以继续增加。作为一种无线通信技术,ZigBee具有如下特点:

  • 数据传输速率低:10KB/s~250KB/s,专注于低传输应用。
  • 低功耗:由于ZigBee的传输速率低,发射功率仅为1mW(毫瓦),而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。据估算,ZigBee设备仅靠两节5号电池就可以维持长达6个月到2年左右的使用时间,这是其他无线设备望尘莫及的。
  • 成本低:ZigBee模块的初始成本在6美元左右,也许很快就能降到1.5~2.5美元,并且ZigBee协议是免专利费的。低成本对于ZigBee也是一个关键的因素。
  • 时延短:通信时延和从休眠状态激活的时延都非常短,典型的搜索设备时延为30ms,休眠激活的时延是15ms,活动设备信道接入的时延为15ms。因此ZigBee技术适用于对时延要求苛刻的无线控制(如工业控制场合等)应用。
  • 网络容量大:一个星型结构的ZigBee网络最多可以容纳254个从设备和一个主设备,一个区域内可以同时存在最多100个ZigBee网络,而且网络组成灵活。
  • 可靠:采取了碰撞避免策略,同时为需要固定带宽的通信业务预留了专用时隙,避开了发送数据的竞争和冲突。MAC层采用了完全确认的数据传输模式,每个发送的数据包都必须等待接收方的确认信息。如果传输过程中出现问题可以进行重发。
  • 安全:ZigBee提供了基于循环冗余校验(CRC)的数据包完整性检查功能,支持鉴权和认证,采用了AES-128的加密算法,各个应用可以灵活确定其安全属性。

1.9.3 ZigBee基本概念

  ZigBee可使用的频段有3个,分别是2.4GHz的ISM频段、欧洲的868MHz频段,以及美国的915MHz频段,而不同频段可使用的信道分别是16、1、10个,如图1.16所示。

image.png

  ZigBee规范是由ZigBee Alliance所主导的标准,定义了网络层(Network Layer)、应用层(Application Layer)、媒体访问控制层(Media Access Control Layer;MAC Layer)、物理层(PHY Layer),如图1.17所示。

image.png

  ZigBee网络中的设备主要分为以下3类:

  • 协调器(Coordinator):负责启动整个网络。它也是网络的第一个设备。协调器选择一个信道和一个网络ID(也称之为PAN ID,即Personal Area Network ID),随后启动整个网络。
  • 路由器(Router):路由器的功能主要是:允许其他设备加入网络,路由和协助它自己的由电池供电的终端设备的通信。
  • 终端设备(End-Device):终端设备没有特定的维持网络结构的责任,它可以睡眠或者唤醒,因此它可以是一个电池供电设备。

  ZigBee的网络拓扑主要包括3种类型,分别是星型、串型和网状,如图1.18所示。

image.png

  ZigBee里常见的几个概念介绍如下:

  • ZigBee信道:2.4 GHz的射频频段被分为16个独立的信道。每一个设备都有一个默认的信道集(DEFAULT_CHANLIST)。协调器扫描自己的默认信道集并选择一个信道上噪声最小的信道作为自己所建网络的信道。终端节点和路由节点也要扫描默认信道集并选择一个信道上已经存在的网络加入。
  • PAN ID:PAN ID指网络编号,用来区分不同的ZigBee网络。协调器是通过选择网络信道及PAN ID来启动一个无线网络的。PAN ID的有效范围为0~0x3FFF。
  • IEEE物理地址:每个ZigBee设备都有一个64位的IEEE长地址,即MAC地址。物理地址是在出厂时候初始化的,它是全球唯一的。当一个ZigBee节点加入网络时,它的IEEE地址不能与网络中现有节点的IEEE地址冲突且不能为0xFFFFFFFFFFFFFFFF。
  • 网络地址:网络地址也称短地址,通常用16位的短地址来标识自身和识别对方。对于协调器来说,短地址始终为0x0000,对于路由器和节点来说,短地址由其所在网络中的协调器分配。

1.9.4 ZigBee协议栈

  ZigBee软件协议栈主要包括以下几种:

  • FreakZ协议栈和Contiki操作系统;
  • msstatePAN协议栈(精简版ZigBee协议栈);
  • Microchip ZigBee Stack;
  • BeeStack(Freescale);
  • SimpliciTI协议栈(TI);
  • Z-Stack协议栈和OSAL操作系统(TI);
  • TinyOS操作系统。

  ZigBee协议栈包括IEEE 802.15.4的PHY和MAC层,网络层(NWK)、应用层和安全服务提供层。ZigBee堆栈有两个接口:数据实体接口和管理实体接口。数据实体接口的目标是向上层提供所需的常规数据服务。管理实体接口的目标是向上层提供访问内部层参数、配置和管理数据的机制。从应用角度看,通信的本质就是端点到端点的连接。ZigBee协议栈与ZigBee层间的连接如图1.19所示。

image.png

  从应用角度看,通信的本质就是端点到端点的连接(例如,一个带开关组件的设备与带一个或多个灯组件的远端设备进行通信,目的是将这些灯点亮)。
  端点之间的通信是通过称为簇的数据结构实现的。这些簇是应用对象之间共享信息所需的全部属性的容器,在特殊应用中使用的簇在模板中有定义。
  所有端点都使用应用支持子层(Application Support sublayer,APS)提供的服务。APS通过网络层和安全服务提供层与端点相接,并为数据传送、安全和绑定提供服务,因此能够适配不同但兼容的设备,比如带灯的开关。
  APS使用网络层(NWK)提供的服务。NWK负责设备到设备的通信,并负责网络中设备初始化所包含的活动、消息路由和网络发现。应用层可以通过ZigBee设备对象(ZDO ZigBee Device Object)对网络层参数进行配置和访问。

1.10 6LoWPAN低速无线个域网协议

  6LoWPAN是一种基于IPv6的低速无线个域网标准,即IPv6 over IEEE 802.15.4。
  无线个域网(Wireless Personal Area Network,WPAN)是为了实现活动半径小、业务类型丰富、面向特定群体、无线无缝的连接而提出的新兴无线通信网络技术。WPAN能够有效地解决“最后的几米电缆”的问题。
  WPAN是一种与无线广域网(WWAN)、无线城域网(WMAN)、无线局域网(WLAN)并列但覆盖范围相对较小的无线网络。在网络构成上,WPAN位于整个网络链的末端,用于实现同一地点终端与终端间的连接,如连接手机和蓝牙耳机等。WPAN所覆盖的范围一般在10m半径以内,必须运行于许可的无线频段。WPAN设备具有价格便宜、体积小、易操作和功耗低等优点。
  将IP协议引入无线通信网络一直被认为是不现实的(不是完全不可能)。迄今为止,无线网只采用专用协议,因为IP协议对内存和带宽要求较高,要降低它的运行环境要求以适应微控制器及低功率,IP协议应用于无线连接很困难。
  基于IEEE 802.15.4实现IPv6通信的IETF 6LoWPAN?草案标准的发布有望改变这一局面。6LoWPAN所具有的低功率运行的潜力使它很适合应用在从手持机到仪器的设备中,支持AES-128加密,为身份认证和信息安全性打下了基础。
  IEEE 802.15.4标准,用于设计开发,靠电池运行1到5年的、紧凑型、低功率、廉价、嵌入式设备(如传感器)。该标准使用工作在2.4GHz频段的无线电收发器传送信息,使用的频带与Wi-Fi相同,但其射频发射功率大约只有Wi-Fi的1%。这限制了IEEE 802.15.4设备的传输距离,因此,多台设备必须一起工作才能在更长的距离上逐跳传送信息和绕过障碍物。
  IETF 6LoWPAN工作组的任务,定义如何利用IEEE 802.15.4链路,支持基于IP的通信,同时遵守开放标准以及保证与其他IP设备的互操作性。
  这样做是为了适应多种复杂网关(每种网关对应一种本地802.15.4协议)以及专用适配器安全与管理程序的需要。然而,利用IP并不是件容易的事情:IP的地址和包头很大,传送的数据可能过于庞大而无法容纳在很小的IEEE 802.15.4数据包中。6LoWPAN工作组面临的技术挑战是发明一种将IP包头压缩到只传送必要内容的小数据包中的方法。他们的方法是Pay as you go式的包头压缩方法。这些方法去除了IP包头中的冗余或不必要的网络级信息。IP包头在接收时从链路级802.15.4包头的相关域中得到这些网络级信息。
  最简单的使用情况,是一台与邻近802.15.4设备通信的802.15.4设备,将非常高效率地得到处理。整个40字节IPv6包头,被缩减为1个包头,压缩字节(HC1)和1字节的“剩余跳数”。因为源和目的IP地址可以由链路级64位唯一ID(EUI-64)或802.15.4中使用的16位短地址生成。8字节用户数据报协议传输包头被压缩为4字节。
  随着通信任务变得更加复杂,6LoWPAN也相应调整。为了与嵌入式网络之外的设备通信,6LoWPAN增加了更大的IP地址。当交换的数据量小到可以放到基本包中时,可以在没有开销的情况下打包传送。对于大型传输,6LoWPAN增加分段包头来跟踪信息如何被拆分到不同的段中。如果单一跳802.15.4就可以将包传送到目的地,数据包可以在不增加开销的情况下传送。多跳则需要加入网状路由(mesh-routing)包头。
  IETF 6LoWPAN取得的突破是得到一种非常紧凑、高效的IP实现,消除了以前造成各种专门标准和专有协议的因素。这在工业协议(BACNet、LonWorks、通用工业协议、监控与数据采集)领域具有特别的价值。这些协议最初开发是为了提供特殊的行业特有的总线和链路(从控制总线到AC电源线)上的互操作性。
  几年前,这些协议的研发团队选择开发IP是为了实现利用以太网等现代技术。6LoWPAN的出现使这些老协议把它们的IP选择扩展到新的链路(如802.15.4)。因此,可与专为802.15.4设计的新协议(如ZigBee和ISA100.11a)互操作。受益于此,各类低功率无线设备能够加入IP家庭中,与Wi-Fi、以太网以及其他类型的设备“称兄道弟”。
  随着IPv4地址的耗尽,IPv6是大势所趋。物联网技术的发展,将进一步推动IPv6的部署与应用。IETF 6LoWPAN技术具有无线低功耗、自组织网络的特点,是物联网感知层、无线传感器网络的重要技术。ZigBee新一代智能电网标准中SEP 2.0已经采用6LoWPAN技术,随着美国智能电网的部署,6LoWPAN将成为实际标准,全面替代ZigBee标准。
  6LoWPAN协议的技术优势如下:

  • 普及性:IP网络应用广泛,作为下一代互联网核心技术的IPv6,也在加速其普及的步伐,在低速无线个域网中使用IPv6更易于被接受。
  • 适用性:IP网络协议栈架构受到广泛的认可,低速无线个域网完全可以基于此架构进行简单、有效地开发。
  • 更多地址空间:IPv6应用于低速无线个域网时,最大亮点就是庞大的地址空间。这恰恰满足了部署大规模、高密度低速无线个域网设备的需要。
  • 支持无状态自动地址配置:IPv6中当节点启动时,可以自动读取MAC地址,并根据相关规则配置好所需的IPv6地址。这个特性对传感器网络来说,非常具有吸引力,因为在大多数情况下,不可能对传感器节点配置用户界面,节点必须具备自动配置功能。
  • 易接入:低速无线个域网使用IPv6技术,更易于接入其他基于IP技术的网络及下一代互联网,使其可以充分利用IP网络的技术进行发展。
  • 易开发:目前基于IPv6的许多技术已比较成熟,并被广泛接受,针对低速无线个域网的特性对这些技术进行适当的精简和取舍,可以简化协议开发的过程。

1.11 LoRa WAN低功耗广域网协议

  长期以来,要提高通信距离常用的办法是提高发射功率,但同时也带来了更多的能耗。电池供电的设备(如水表)一般只能使用微功率无线通信,这样就限制了其通信距离。SemTech公司推出的LoRa射频芯片,因为采用了扩频调制技术,从而在同等的功耗下取得更远的通信距离。
  2013年SemTech公司推出了SX1276/8系列的扩频调制射频芯片,它的实现方式非常巧妙,整个解调器引擎只需要5万个门单元电路。功耗低,休眠电流为0.2uA,接收电流为12mA,发射电流为29mA@13dBm,和常见的GFSK芯片Si4438及CC1125接近,通信距离是GFSK芯片的3倍。
  SemTech公司官方宣称该芯片可以达到可视距离15千米,城市环境中3千米的通信距离。根据实测数据:SX1278在1Kbps的速率下可以单跳覆盖一个5000多户的小区。这意味着,使用简单的星型组网就可以建立LoRa微功率网络,而GFSK调制的芯片常常需要树形或MESH等复杂的路由网络。
  LoRa的灵敏度很高,抗干扰能力也很强,小巧灵活,更适合在一些企业特定的专网里工作。
  作为一项无线技术,LoRa所具备的功耗低、传输距离广、信号穿透性强、灵敏度高等特点,相较于ZigBee、2.4G等传统无线技术而言具有很明显的技术优势。因此,对一些具体的项目及企业的私网需求而言,LoRa私有协议比LoRaWAN更加灵活,成本更低。
  但是根据用户使用经验,发现LoRa射频芯片至少有两个缺点:首先,其通信速率低,其真正与GFSK拉开通信距离差距的速率都低于1Kbps,这意味着LoRa主要用于低速率通信,如传感器数据;其次,其1.5~2美金的售价比GFSK芯片高出许多,给产品带来高成本。
  LoRaWAN是基于LoRa的低功耗广域网,它主要包括两个部分:通信协议和体系结构,如图1.20所示。它能构建一个低功耗、可扩展、高服务质量、安全的长距离无线网络。

image.png

  1.LoRaWAN体系结构
  借助于LoRa长距离的优势,LoRaWAN采用星型无线拓扑,有效延长了电池寿命,降低了网络复杂度,后续可轻易扩展容量。它将网络实体分成4类:即End Nodes(终端节点)、Gateway(网关)、LoraWAN Server(LoRaWAN服务器)和Applicaton Server(用户服务器),如图1.21所示。

image.png

  2.LoRaWAN通信协议
  在LoRaWAN的星型网络中,End Nodes使用单跳无线与一个或多个Gateway通信;Gateway通过标准IP链路(Ethernet、3G/GPRS和Wi-Fi)与LoRaWAN Server通信;Gateway负责End Nodes和LoRaWAN Server信息的中继,如图1.22所示。

image.png

  LoRaWAN主要为此类设备提供无线通信:低功耗(电池一次性工作几年)、低速率(主要是传感器数据)、低成本(免流量费用)和长距离,如图1.23所示。LoRaWAN、Narrow-band、LTE Cat-1、LTE Cat-M和NB-LTE的性能比较如图1.24所示。

image.png

  LoRa联盟负责制定LoRaWAN标准和执行认证。该组织是一个开放、非赢利和快速增长的机构,成员包括科技巨头(IBM、Cisco、HP、Foxconn、Semtech和Sagemcom等)、名牌企业(如Schneider、Bosch、Diehl、Mueller和ZTE等)、运营商(如Orange和SwissCom等)。设备接入数量趋势如表1.7所示。

image.png

  LoRaWAN的目标是:

  • 标准化:通过LoRaWAN Specification(说明书)和Certification(认证),从欧洲到非洲,从北美到东南亚,任何公司的LoRaWAN产品实现互连互通。
  • 市场化:通过标准化和生态圈,扩大LoRaWAN在物联网市场的份额。

  LoRaWAN的初衷是提供区域、国家或全球的物联网。这样一来,它的体系和协议变得庞大复杂是必然的。LoRaWAN应用范围如下:

  • 运营商:毫无疑问,运营商是最希望部署LPWAN(低功耗广域网)来为客户提供“无处不在”的物联网服务,这是在移动互联网已经饱和的情况下,又一波“增长红利”。这就可以理解欧洲国家(法国、荷兰和比利时等)部署LoRaWAN的热情了。
  • 大规模节点的私网:智能工厂是最可能部署物联网的行业,毕竟有大量的设备需要监测和控制,且部署物联网能马上受益;节点多(>1000),需要LoRaWAN提供大规模接入能力。
  • 要求QoS的私网:部分私网对于QoS(网络质量)有特殊的要求,比如抗干扰能力强、吞吐量大、唤醒延时小,LoRaWAN能较好地满足这些需求。

  IP(Internet Protocol)协议是最成功的网络协议之一,它奠定了互联网的基础,在信息互联上把世界变成了地球村;从服务器,到PC、手机,甚至手表,都离不开IP协议。它的成功原因在于:开放,所有标准文档谁都可以下载使用;免费,使用IP不用缴纳版权费;标准,有委员会制定标准,保证全球IP设备互联互通;推动,科技巨头(如IBM、MicroSoft和Cisco等)都在大力推进IP的使用和标准化。
  而LoRa WAN与IP有极大的相似:

  • 开放:用户可以下载标准文档,还有宝贵的End Nodes和Gateway源代码;
  • 免费:使用LoRaWAN不用缴纳版本费用;
  • 标准:由LoRa Alliance负责标准的制定和更新,对LoRaWAN产品执行认证;
  • 推动:有运营商、科技巨头(IBM、Cisco等)和生态圈企业一起来建设LoRaWAN;
  • 安全:它是第一个对网络和应用数据使用128AES双重加密的无线网络。

  LoRaWAN能否成为世界级的物联网标准,也需要考虑其他因素:基础科技的革新(比如超大容量储能电池的发明、超远距离高速无线通信技术等)、竞争对手的压力、商业风险,甚至全球经济危机等。
  LoRaWAN会有多大市场份额,需要从微观和宏观来分析来看。微观角度看,各行业(如生产、交通、医疗、农业、仓储)以及城市和人们的生活要智能化,都依赖传感器将物理信息(如温湿度、位置、压力、热和光等)转换成数字信息(即0和1二进制数据)。传感器主要是电池供电,采集数据量较小,数量庞大,地域分布广;它对通信的要求是长距离、低功耗、低速率和低成本。可见,LoRaWAN在以“传感器为主体”的物联网中大有用武之地。
  从宏观角度看,SNS Research分析预测,45%~55%的设备将会接入LPWAN(低功耗广域网,LoRaWAN是其中之一)物联网。
  Machina Research分析预测,到2025年,将会有超过30亿设备接入LPWAN物联网,如图1.25所示。

image.png

  LoRaWAN的本质是无线通信网络,因此需要遵循以下规定:

  • 切换信道(ChangeChannel):End Devices每次发送数据包都需要随机切换信道,经验表明,切换信道可以有效降低同频干扰和无线信号衰减,从而建立一个更健壮的网络。
  • 发送占空比(DutyCycle):依赖不同的地区和国家,在ISM频段,一个无线电设备允许最大发射占空比是有限制的,这样做是为了保证公平和防止非法占用信道。以欧洲设备通信为例,Duty Cycle=1%,即发送占空比为百分之一,如果一个设备发射时间=1s,接下来的99s,它将不能再发射无线电信号(可以接收无线电信号)。
  • 驻留时间(DwellTime):该限制主要是北美地区,在ISM频段,一个无线电设备每0.4s必须切换信道,这样做是为了保证信道利用率和增强抗干扰能力。例如,如果一个设备发射时间=1s,那么它必须跳频3次,才能完成发射任务。

1.12 NB-IoT窄带物联网协议

  在通信领域物联网方向,NB-IoT基本上是“独领风骚”,风光无限。
  在通信领域,经过1G、2G、3G和4G技术的不断发展,加之智能手机的广泛普及,现在已经基本上实现了人与人之间随时随地的连接。
  从早期的电报,到后来的电话和短信,再到现在即时传送图片、音频和视频等多媒体文件,通信技术手段已经十分强大、多元化。人类对技术的追求、对生活的追求,永远不会停住脚步。技术还有潜力可以挖掘,需求也在不断涌现。在商业利益的驱动下,通信厂商会不断推出新的产品,新的服务,吸引用户,以获取利益。
  而通信人也开始把目光从人的身上,转移到了物的身上。既然人都可以相连,那么物物也可以相连,把所有的物体,都连到网络里面,如图1.26所示。于是,物联网就诞生了。

image.png

1.12.1 物联网应用场景和技术特点

  人与人之间进行通信的网络,叫做人联网。物与物之间进行通信的网络,叫做物联网。试想一下这些场景:如果所有的汽车都联网了,如图1.27所示,自动驾驶是不是就实现了?车与车之间会协调路径、距离、速度,车祸就再也不会发生了。

image.png

  如果所有的家电都联网了,如图1.28所示,实现了随时控制,人还没到家,就可以先开启空调和热水器;出门在外忘记关灯,可以远程关灯,还能远程监控,是不是更方便,更安全?

image.png

  甚至动物,如果保护区里所有的珍稀野生动物都联网控制了,科学家是不是可以更方便地检测它们的生命状态,更好地进行保护和研究?这还只是一小部分!事实上,只要开动脑筋,各种创意简直就是源源不断,如表1.8所示。

image.png

  物联网的应用场景远远不止表1.9中所列部分。根据预测,2020年,全球终端连接数将达到500亿个,其中,物的连接数将是人的连接数的4倍,如图1.29所示。

image.png

  据预测,2025年全球物联网市场规模将达到19万亿美元。
  物联网其实并不是一个新概念。在很多年前就有人提出过物联网。这么多年来,物联网其实一直在不断发展。
  1995年,比尔·盖茨的THE ROAD AHEAD(《未来之路》)一书中就提到过物联网。但是因为技术的原因,过去一直发展的是WLAN物联网。从名字就可以看出来了,WLAN(Wireless Local Area Networks,无线局域网)是一种覆盖范围较小的物联网络。WLAN物联网,以Wi-Fi、蓝牙、ZigBee、Z-Wave等技术为代表。如图1.30所示。

image.png

  这种WLAN物联网,无法完全满足某些行业应用的要求。第一个问题是速度(网速)。
  人们用手机上网的时候,当然希望速度一定要快。目前主流的通信标准——LTE,理论速度已经达到300Mbps。当然,实际体验速度远远达不到。正常情况下,这个速度已经能够满足人们大部分的工作和生活需求(玩游戏、看视频)。
  除了速度之外,还有功耗、覆盖、成本,以及连接数量。
  功耗影响待机时间,覆盖影响信号质量,成本影响使用费用。连接数量就是终端数量,对人联网来说就是手机数量。简单来说,就是每个小区可以容纳多少通信终端。
  例如功耗,手机如果功耗较大,至多是充电频繁一些。但是对于智能水表,如图1.31所示,如果功耗大,每天都要换电池,或者一个月换一次,估计水厂和水厂工人都会崩溃吧?

image.png

  物联网对功耗、覆盖、连接数量这几个指标非常非常敏感。而对于速率,大部分物联网应用反而并不敏感。比如抄个电表读数,上报个位置经纬度,这些数据量都很小,没有几个字节,不需要多大的带宽速度。
  WLAN物联网,主要受限于覆盖范围和功耗上。于是,LPWAN(Low Power Wide Area Network,低功耗广域网)概念被提了出来。其名称里就有两个最重要的特点:即低功耗和广覆盖。
  相比其他网络类型(WLAN、2G/3G/4G)相比,LPWAN的定位是完全不同的,如图1.32所示。

image.png

  LPWAN强调的是覆盖,牺牲的是速率。因此也把LPWAN叫做蜂窝物联网。这个称谓也体现了它和2G/3G/4G这种蜂窝通信技术之间的共性,即都是通过基站或类似设备提供信号的,如图1.33所示。

image.png

  LPWAN物联网包括很多技术标准(协议),目前比较主流的有NB-IoT、LoRa、Sigfox、eMTC。这些技术标准,都是由不同的厂家或者通信机构组织提出来。物联网的市场很大,所有人都想分一杯羹。LPWAN整体上还处于混战状态。在竞争过程中,NB-IoT脱颖而出,处于暂时领先地位。
  可以和NB-IoT势均力敌的是eMTC,其英文全称是enhanced Machine Type of Communication,即增强型机器类型通信。但是eMTC和NB-IoT的应用场景不同,eMTC适合对速度和带宽有要求的物联网应用。而LoRa和Sigfox,因为频谱的原因,所以没有竞争优势。常见的物联网协议特点如表1.9所示。

image.png

  LoRa和Sigfox在国内没有自己的专用频段,先天不足。
  NB-IoT目前在几大标准中非常有竞争力,尤其在我国,受到多方追捧。NB-IoT 窄带物联网应用场景如图1.34所示。
  它之所以这么“火”,有多方面的原因。首先,它确实是一项非常先进的技术。就刚才提及的通信网络的几项指标中,NB-IoT除了速率之外,其他方面都表现优异。

image.png

  在功耗方面,NB-IoT牺牲了速率,却换回了更低的功耗。采用简化的协议,适合的设计,大幅提升了终端的待机时间,部分窄带(NB)终端设备,待机时间号称可以达到10年。
  在信号覆盖方面,NB-IoT有更好的覆盖能力(20dB增益),就算你的水表埋在井盖下面,也不影响信号收发。
  在连接数量方面,每小区可以支持5万个终端,相当强大了。
  最重要的是成本价格。NB-IoT通信模块成本很低,每模组有希望压到5美元之内甚至更低,有利于大批量采购和使用。NB-IoT的特点就是:吃的少,用的少,能干活,不讲究,如图1.35所示。

image.png

  除了自身优点之外,NB-IoT的“火爆”,和它背后的支持者——通信设备商里的“大哥大”华为公司主推有关。华为公司为了NB-IoT,一直都在积极布局,努力助推。通过图1.36,可以看出华为在NB-IOT标准演进过程中发挥的作用。

image.png

  除了华为之外,运营商们对NB-IoT也是青睐有加。因为NB-IoT是运营商建网,不像LoRa这样的网络是企业独立建网。想要使用NB-IoT的终端,必须使用运营商的NB-IoT网络。这种情况下,运营商当然积极推动NB-IoT。
  更重要的一点是政府也在大力支持NB-IoT网络的发展,为此还专门下发过很多文件,指定划分了专门的频谱,推动行业标准的规范化。就连移动这样原本没有FDD-LTE牌照的运营商(NB-IoT只支持FDD-LTE),国家工信部也特批给了NB-IoT专用的FDD-LTE使用权。

1.12.2 无线通信技术发展过程

  目前,国内三大运营商都推出了自己的NB-IoT商用网络,建立了大量的NB-IoT基站,也公布了资费标准和套餐。NB-IoT“一统天下”是不太可能的。因为应用场景的不同,所以物联网的技术需求还是会朝多元化方向发展。也就是说,未来的物联网,一定是多种技术标准共存,共同发挥作用,不可能是某一家完全垄断。移动通信技术一直在不断发展进步,各国在通信标准制定上都积极参与,争取话语权。从2G到4G,移动通信网络不断更新换代。
  2G通信标准GSM(Global System For Mobile Communications,全球移动通信系统),是由欧洲电信标准组织ETSI制订的一个数字移动通信标准。它的空中接口采用时分多址技术。自20世纪90年代中期投入商用以来,被全球超过100个国家采用。GSM标准的设备占据当前全球蜂窝移动通信设备市场80%以上。2G通信系统如图1.37所示。

image.png

  MSC(Mobile Switching Center)是移动交换中心,BSC(Base Station Controller)指的是基站控制器。基站子系统BSS可分为两部分,即通过无线接口与移动台相连的基站收发信台(BTS),以及与移动交换中心相连的基站控制器(BSC)。BTS负责无线传输、BSC负责控制与管理。一个BSS系统由一个BSC与一个或多个BTS组成,BSS子系统可由多个BSC和BTS组成。
  GPRS通用分组无线服务技术(General Packet Radio Service),是GSM移动电话用户可用的一种移动数据业务。GPRS可说是GSM的延续,被称为2.5G,即介于二代和三代移动通信技术之间的技术,如图1.37所示。GPRS访问速率理论上最快可以达到171.2Kbps。EDGE(Enhanced Data Rate for GSM Evolution)是增强型数据速率GSM演进技术,也是一种GSM到3G的过渡技术,它能够充分利用现有GSM资源,比GPRS更加优良,因此被称为2.75G技术,理论速率最高可达473.6Kbps。SGSN和GGSN都属于核心网的PS,负责走数据业务,例如彩信、上网等。SGSN提供网络介入功能,分组路由和转发,以及GPRS的移动性能管理。GGSN为MS访问外部网络提供网关功能。

image.png

  UMTS(Universal Mobile Telecommunications System,环球移动通信系统),属于第三代通信技术(3G)的一种,是TDSCDMA(移动3G)和WCDMA(联通3G)的统称。
  HSPA(High-Speed Packet Access,高速数据信息包接入/存取技术),是一种建立在UMTS基础之上,对现存UMTS进行扩展和改进的通信协议。
  ISDN(Integrated Service Digital NetWork,综合业务数字网),是电话网络与数字网络结合而成的一种网络,它提供了端到端的数字连接,用来提供语音业务和非语音业务等各种服务。
  无线网络子系统(RNS - Radio Network Subsystem)包括在接入网中控制无线电资源的无线网络控制器(RNC)。RNC具有宏分集合并能力,可提供软切换能力。每个RNC可覆盖多个NodeB。NodeB实质上是一种与基站收发信台等同的逻辑实体,它受RNC控制,提供移动设备(UE)和无线网络子系统(RNS)之间的物理无线链路连接。同样,基站系统(BSS)由基站控制器构成,基站控制器控制一个或多个基站收发信台,与NodeB不同,每个BSS对应于一个蜂窝,如图1.39所示。

image.png

  第四代移动电话行动通信标准,指的是第四代移动通信技术,即4G技术。该技术包括TD-LTE和FDD-LTE两种制式。
  4G是集3G与WLAN于一体,并能够快速传输数据、高质量、音频、视频和图像等。4G能够以100Mbps以上的速度下载,比目前的家用宽带ADSL(4兆)快25倍,并能够满足几乎所有用户对于无线服务的要求。此外,4G可以在DSL和有线电视调制解调器没有覆盖的地方部署,然后再扩展到整个地区。很明显,4G有着不可比拟的优越性。
  4G移动系统网络结构可分为三层:物理网络层、中间环境层和应用网络层。物理网络层提供接入和路由选择功能,它们由无线和核心网的结合格式完成。中间环境层的功能有QoS映射、地址变换和完全性管理等,如图1.40所示。
  物理网络层与中间环境层及其应用环境之间的接口是开放的,它使提供新的应用及服务变得更为容易,提供无缝高数据率的无线服务,并运行于多个频带。
  PSTN ( Public Switched Telephone Network,公共交换电话网络),是一种常用电话系统,即日常生活中常用的电话网。公共交换电话网络是一种全球语音通信电路交换网络,包括商业的网络和政府拥有的网络。

image.png

  从GPRS到LTE,移动网速越来越快。到了4G时代,移动通信网络的发展出现了分支。一边是大流量,一边是小数据,一边是移动宽带,一边是物联网,如图1.41所示。

image.png

  从2G到4G,移动通信网络都只是为了连接人而生。但随着万物互联时代的到来,移动通信网络需面向连接物而演进。
  为此,3GPP(3rd Generation Partnership Project,第三代合作伙伴计划)在Release 13制定了NB-IoT标准来应对现阶段的物联网需求,在终端支持上也多了一个与NB-IoT对应的终端等级cat-NB1。
  3GPP在Release 13定义了3种蜂窝物联网标准,分别是EC-GSM、eMTC(LTE-M,对应Cat-M1)和NB-IoT(Cat-NB1),其频谱分布如图1.42所示。其中:

  • GSM是最早的广域M2M无线连接技术,EC-GSM增强了其功能和竞争力。
  • UMTS没有衍生出低功耗物联网“变体”。
  • LTE-M(Cat-M1)基于LTE技术演进,属于LTE的子集。
  • NB-IoT(Cat-NB1)尽管和LTE紧密相关,且可集成于现有的LTE系统之上,但认为是独立的新空口技术。

image.png

1.12.3 NB-IoT窄带物联网节能原理

  NB-IoT属于低功耗广域网(LPWAN),其设计原则都是基于物联网特点和使用场景为基础。
  首先,相比传统的2G/3G/4G网络,物联网主要有以下三大特点:

  • 懒:终端都很“懒”,大部分时间在“睡觉”,每天传送的数据量极低,且允许一定的传输延迟(比如智能水表)。
  • 静止:并不是所有的终端都需要移动性,大量的物联网终端长期处于静止状态。
  • 上行为主:与人的连接不同,物联网的流量模型不再是以下行为主,可能是以上行为主。

  这三大特点支撑了低速率和传输延迟上的技术折中,从而实现覆盖增强、功耗降低、成本减少的蜂窝物联网,如图1.43所示。

image.png

  1.减少信令开销降低功耗
  NB-IoT信令流程基于LTE设计去掉了一些不必要的信令,在控制面和用户面均进行了优化。原LTE信令流程如图1.44所示。其中,UE(User Equipment)是用户设备,eNB是无线通信基站,EPC(Evolved Packet Core)是分组核心网。

image.png

  NB-IoT信令流程①如图1.45所示。

image.png

  NB-IoT信令流程②如图1.46所示。

image.png

  2.PSM & eDRX节能模式
  DRX(extended Discontinuous Reception,不连续接收)和PSM(Power Saving Mode,节能模式)是NB-IoT的两大省电技术,如图1.47所示。
  手机(终端)和网络不断传送数据是很费电的。如果没有DRX,即使我们没有用手机上网,手机也需要不断地监听网络(PDCCH子帧),以保持和网络的联系,这导致手机耗电很快。因此,在LTE系统中设计了DRX,让手机周期性地进入睡眠状态(sleep state),不用时刻监听网络,只在需要的时候,将手机从睡眠状态中唤醒进入wake up state后才监听网络,以达到省电的目的。eDRX意味着扩展DRX周期,意味着终端可睡更长时间,更省电,如图1.48所示。
  一些物联网终端本来就很懒,长期睡眠,而在PSM模式下,相当于关机状态,所以更加省电。
  其原理是,当终端进入空闲状态,释放RRC连接后,开始启动定时器T3324,当T3324终止后,进入PSM模式,并启动T3412(周期性TAU更新)。在此期间,终端停止检测寻呼和执行任何小区/PLMN选择或MM流程,工作过程如图1.49所示。此时,网络无法发送数据给终端或寻呼终端,网络与终端几乎失联(终端仍注册在网络中)。只有当周期性TAU更新定时器超时后,才退出PSM模式。这个定时器可设置最大12.1天。

image.png

image.png

image.png

1.12.4 NB-IoT通信系统拓扑结构

  无线通信系统拓扑结构中提到,无线通信系统由核心网、接入网和空中接口几部分组成。
 1.核心网
  为了将物联网数据发送给应用,蜂窝物联网(CIoT)在EPS中定义了两种优化方案: CIoT EPS用户面功能优化(User Plane CIoT EPS optimisation)和CIoT EPS控制面功能优化(Control Plane CIoT EPS optimisation)。
  其中,EPS(Evolved Packet System,演进的分组系统)中的所谓演进是相对于PS而言,PS是2G/3G分组系统,EPS自然就是4G系统了。4G系统没有CS(Circuit Switch,电路交换)域,只有PS(Packet Switch,分组交换)域。
  对于CIoT EPS控制面功能优化,上行数据从eNB(CIoT RAN)传送至MME(Mobility Management Entity 移动管理实体),在这里传输路径分为两个分支:或者通过SGW(Serving GateWay 服务网关)传送到PGW(PDN?Gateway),PDN(Packet Data Network)再传送到应用服务器;或者通过SCEF(Service Capa- bility Exposure Function)连接到应用服务器(CIoT Services),后者仅支持非IP数据传送。与下行数据传送路径一样,只是方向相反,如图1.50所示。

image.png

  这一方案无须建立数据无线承载,数据包直接在信令无线承载上发送。因此,这一方案极适合非频发的小数据包传送。
  SCEF是专门为NB-IoT设计而新引入的,它用于在控制面上传送非IP数据包,并为鉴权等网络服务提供一个抽象的接口。
  对于CIoT EPS用户面功能优化,物联网数据传送方式和传统数据流量一样,在无线承载上发送数据,由SGW传送到PGW再到应用服务器。因此,这种方案在建立连接时会产生额外开销,不过它的优势是数据包序列传送更快。这一方案支持IP数据和非IP数据传送。
  2.接入网
  NB-IoT的接入网架构与LTE一样,如图1.51所示。eNB通过S1接口连接到MME/ SGW,只是接口上传送的是NB-IoT消息和数据。尽管NB-IoT没有定义切换,但在两个eNB之间依然有X2接口。X2接口使能UE在进入空闲状态后,快速启动恢复流程,接入到其他eNB。

image.png

  3.频段
  NB-IoT沿用LTE定义的频段号,Release 13为NB-IoT指定了14个频段,如表1.10所示。国内运营商频段占用,如表1.11所示。窄带物联网物理层设计参数如表1.12所示。

image.png

image.png

image.png

1.12.5 NB-IoT窄带物联网信号收发技术

  NB-IoT占用180KHz带宽,这与在LTE帧结构中一个资源块的带宽是一样的。所以,以下3种部署方式成为可能,如图1.52所示。

image.png

  • 独立部署(Stand alone operation):适合用于重耕GSM频段,GSM的信道带宽为200kHz,这刚好为NB-IoT 180kHz带宽辟出空间,且两边还有10kHz的保护间隔,如图1.53所示。

    image.png

  • 保护带部署(Guard band operation):利用LTE边缘保护频带中未使用的180kHz带宽的资源块。
  • 带内部署(In-band operation):利用LTE载波中间的任何资源块。

  1.信号覆盖等级CE Level
  CE Level(Coverage Enhancement Level,覆盖增强等级)从0到2,共分3个等级,分别对应可对抗144dB、154dB、164dB的信号衰减。基站与NB-IoT终端之间会根据其所在的CE Level来选择相对应的信息重发次数。
  2.双工模式
  Release 13 NB-IoT仅支持FDD(Frequency Division Duplexing,频分双工)半双工Type-B模式。
  FDD意味着上行和下行在频率上分开,UE不会同时处理接收和发送。
  半双工设计意味着只需多一个切换器去改变发送和接收模式,比起全双工所需的元件,成本更低廉,且可降低电池能耗。在Release 12中,定义的半双工分为Type-A和Type-B两种类型,其中type B为Cat.0所用,如图1.54所示。

image.png

  在Type-A下,UE在发送上行信号时,其前面一个子帧的下行信号中最后一个Symbol不接收,用来作为保护时隙(Guard Period,GP)。而在Type-B下,UE在发送上行信号时,前面子帧和后面子帧都不接收下行信号,使得保护时隙加长,对于设备要求降低,提高了信号的可靠性,如图1.55所示。

image.png

 3.下行链路
  对于下行链路,NB-IoT定义了以下3种物理信道:

  • NPBCH:窄带物理广播信道。
  • NPDCCH:窄带物理下行控制信道。
  • NPDSCH:窄带物理下行共享信道。

  此外,还定义了两种物理信号:

  • NRS:窄带参考信号。
  • NPSS和NSSS:主同步信号和辅同步信号。

  相比LTE,NB-IoT的下行物理信道较少,并且去掉了PMCH(Physical Multicast Channel,物理多播信道),原因是NB-IoT不提供多媒体广播/组播服务。如图1.56所示为NB-IoT传输信道和物理信道之间的映射关系。

image.png

  MIB(Management Information Base,管理信息库)消息在NPBCH中传输,其余信令消息和数据在NPDSCH上传输,NPDCCH负责控制UE和eNB间的数据传输。
  NB-IoT下行调制方式为QPSK(Quadrature Phase Shift Keyin,正交相移键控)。NB-IoT下行最多支持两个天线端口(Antenna Port),即AP0和AP1。
  和LTE一样,NB-IoT也有PCI(Physical Cell ID,物理小区标识),称为NCellID(Narrowband physical Cell ID),一共定义了504个NCellID。
  4.帧和时隙结构
  和LTE循环前缀(Normal CP)物理资源块一样,在频域上由12个子载波(每个子载波宽度为15kHz)组成,在时域上由7个OFDM符号组成0.5毫秒(ms)的时隙,这样保证了和LTE的相容性,对于带内部署方式至关重要,如图1.57所示。
  每个时隙0.5ms,2个时隙就组成了一个子帧(SF),10个子帧组成一个无线帧(RF)。这就是NB-IoT的帧结构,依然和LTE一样,如图1.58所示。

image.png

image.png

  5.RS(窄带参考信号)
  NRS(窄带参考信号)也称为导频信号,主要作用是下行信道质量测量估计,用于UE端的相关检测和解调。在用于广播和下行专用信道时,所有下行子帧都要传输NRS,无论有无数据传送。
  NB-IoT下行最多支持两个天线端口,NRS只能在一个天线端口或两个天线端口上传输,资源的位置在时间上与LTE的CRS(Cell-Specific Reference Signal,小区特定参考信号)错开,在频率上则与之相同,这样在带内部署(In-Band Operation)时,若检测到CRS,可与NRS共同使用来做信道估测。
  6.同步信号
  NPSS(主同步)为NB-IoT UE时间和频率同步提供参考信号,与LTE不同的是,NPSS中不携带任何小区信息,NSSS(辅同步)带有PCI。NPSS与NSSS在资源位置上避开了LTE的控制区域。
  7.上行链路
  对于上行链路,NB-IoT定义了两种物理信道:

  • NPUSCH:窄带物理上行共享信道。
  • NPRACH:窄带物理随机接入信道。

  此外还有DMRS,即上行解调参考信号。
  NB-IoT上行传输信道和物理信道之间的映射关系如图1.59所示。

image.png

  除了NPRACH,所有数据都通过NPUSCH传输。
  8.时隙结构
  NB-IoT上行使用SC-FDMA,考虑到NB-IoT终端的低成本需求,在上行要支持单频(Single Tone)传输,子载波间隔除了原有的15kHz,还新制订了3.75kHz的子载波间隔,共48个子载波。
  当采用15kHz子载波间隔时,资源分配和LTE一样。当采用3.75kHz的子载波间隔时,如图1.58所示。
  15kHz为3.75kHz的整数倍,所以对LTE系统干扰较小。由于下行的帧结构与LTE相同,为了使上行与下行相容,子载波空间为3.75kHz的帧结构中,一个时隙同样包含7个Symbol,共2ms长,刚好是LTE时隙长度的4倍。
  此外,NB-IoT系统中的采样频率(Sampling Rate)为1.92MHz,子载波间隔为3.75kHz的帧结构中,一个Symbol的时间长度为512Ts(Sampling Duration),加上循环前缀(Cyclic Prefix,CP)长16Ts,共528Ts。因此,一个时隙包含7个Symbol再加上保护区间(Guard Period)共3840Ts,即2ms长。

image.png

  NPUSCH用来传送上行数据和上行控制信息。NPUSCH传输可使用单频或多频传输,如图1.61所示。

image.png

  在NPUSCH上定义了两种格式:即format 1和format 2。NPUSCH format 1为UL-SCH上的上行信道数据而设计,其资源块不大于1000 bit;NPUSCH format 2传送上行控制信息(UCI)。
  映射到传输块的最小单元叫资源单元(Resource Unit,RU),它由NPUSCH格式和子载波空间决定。有别于LTE系统中的资源分配的基本单位为子帧,NB-IoT根据子载波和时隙数目作为资源分配的基本单位。

1.12.6 NB-IoT窄带物联网小区接入

  NB-IoT的小区接入流程和LTE相似:小区搜索取得频率和符号同步、获取SIB(System Information Blocks)信息、启动随机接入流程建立RRC(Radio Resource Control,无线资源控制)连接。当终端返回RRC_IDLE状态,需要进行数据发送或收到寻呼时,会再次启动随机接入流程。
  1.协议栈和信令承载
  总地来说,NB-IoT协议栈基于LTE设计,但是根据物联网的需求,去掉了一些不必要的功能,减少了协议栈处理流程的开销。因此,从协议栈的角度看,NB-IoT是新的空口(空中接口)协议。
  以无线承载RB(Radio Bearer)为例,在LTE系统中,SRB(Signalling Radio Bearers,信令无线承载)会部分复用,SRB0用来传输RRC消息,在逻辑信道CCCH(Common Control Channel)上传输;而SRB1既用来传输RRC消息,也会包含NAS消息,其在逻辑信道DCCH?(Dedicated Control Channel,专用控制信道)上传输。LTE中还定义了SRB2,但NB-IoT没有。
  此外,NB-IoT还定义了一种新的信令无线承载SRB1bis。SRB1bis和SRB1的配置基本一致,除了没有PDCP(Packet Data Convergence Protocol,分组数据汇聚协议)。这也意味着在控制面(Control Plane)CIoT EPS optimisation下只有SRB1bis,因为只有在这种模式下才不需要SIB,简化了SIB的协议栈,如图1.62所示。

image.png

  NB-IoT经过简化,去掉了一些对物联网不必要的SIB(System Information Blocks),只保留了8个信息块,每个信息块的内容如表1.13所示。
  需特别说明的是,SIB-NB是独立于LTE系统传送的,并非夹带在原LTE的SIB之中。

image.png

  2.小区重选和移动性
  由于NB-IoT主要为非频发小数据包流量而设计,所以RRC_CONNECTED中的切换过程并不需要,被移除了。如果需要改变服务小区,NB-IoT终端会进行RRC释放,进入RRC_IDLE状态,再重选至其他小区。
  在RRC_IDLE状态,小区重选定义了intra frequency和inter frequency两类小区,inter frequency指的是in-band operation下两个180 kHz载波之间的重选。
  NB-IoT的小区重选机制也做了适度的简化,由于NB-IoT 终端不支持紧急拨号功能,所以当终端重选时无法找到Suitable Cell的情况下,终端不会暂时驻扎(Camp)在Acceptable Cell,而是持续搜寻直到找到Suitable Cell为止。根据3GPP TS 36.304定义,所谓Suitable Cell为可以提供正常服务的小区,而Acceptable Cell为仅能提供紧急服务的小区。
  3.随机接入过程
  NB-IoT的RACH过程和LTE一样,只是参数不同。
  基于竞争的NB-IoT随机接入过程如图1.63所示。

image.png

  基于非竞争的NB-IoT随机接入过程如图1.64所示。

image.png

1.12.7 NB-IoT连接管理

  由于NB-IoT并不支持不同技术间的切换,所以RRC状态模式也非常简单,如图1.65所示。

image.png

  RRC连接建立(Connection Establishment)流程和LTE一样,但内容却不相同,如图1.66所示。
  很多原因都会引起RRC(Radio Resource Control无线资源控制)建立,但是在NB-IoT中,连接请求(RRCConnectionRequest)中的建立原因(Establishment Cause)里没有访问接入延迟容忍(delayTolerantAccess),因为NB-IoT被预先假设为容忍延迟。

image.png

  另外,在Establishment Cause里,UE将说明支持单频或多频的能力。
  与LTE不同的是,NB-IoT新增了挂起-释放(Suspend-Resume)流程(Suspend将线程挂起,运行→阻塞;Resume将线程解挂,阻塞→就绪)。当基站释放连接时,基站会下达指令让NB-IoT终端进入挂起(Suspend)模式,该挂起(Suspend)指令带有一组Resume ID,此时,终端进入释放(Suspend)模式并存储当前的AS context。
  当终端需要再次进行数据传输时,只需要在RRC Connection Resume Request中携带Resume ID,基站即可通过此Resume ID来识别终端,并跳过相关配置信息交换,直接进入数据传输。挂起-释放(Suspend-Resume)流程如图1.67所示。

image.png

  简而言之,在RRC_Connected至RRC_IDLE状态时,NB-IoT终端会尽可能地保留RRC_Connected下所使用的无线资源分配和相关安全性配置,减少两种状态之间切换时所需的信息交换数量,以达到省电的目的。

1.12.8 NB-IoT数据传输

  NB-IoT定义了两种数据传输模式:即控制面优先(Control Plane CIoT EPS optimisation)方案和用户面优先(User Plane CIoT EPS optimisation)方案。对于数据发起方,由终端选择决定哪一种方案。对于数据接收方,由MME参考终端习惯,选择决定哪一种方案。
  1.控制面优先数据传输方案
  对于控制面优先(Control Plane CIoT EPS Optimisation)数据传输方案,终端和基站间的数据交换在RRC级上完成。对于下行,数据包附带在RRC连接设置(RRC connection setup)消息里;对于上行,数据包附带在RRC连接设置完成(RRC connection setup complete)消息里。如果数据量过大,RRC不能完成全部传输,将使用DL信息传输(DLInformationTransfer)和UL信息传输(ULInformationTransfer)使消息继续传送,如图1.68所示。

image.png

  这两类消息中包含的是带有NAS消息的byte数组,其对应NB-IoT数据包,因此对于基站是透明的,UE的RRC也会将它直接转发给上一层。
  在这种传输模式下,没有RRC connection reconfiguration流程,数据在RRC connection setup消息里传送,或者在RRC连接启动之后立即进行RRC连接释放并启动Resume流程。
  2.用户面优先数据传输方案
  在用户面优先(User Plane CIoT EPS optimisation)数据传输模式下,数据通过传统的用户面传送,为了降低物联网终端的复杂性,只可以同时配置一个或两个DRB。RRC连接恢复流程如图1.69所示,RRC连接释放流程如图1.70所示。

image.png

  此时,有两种情况:

  • 当RRC连接释放时,RRC连接释放会携带Resume ID,并启动Resume流程。如果Resume启动成功,更新密匙安全建立后,保留了先前RRC_Connected的无线承载也随之建立,如图1.70所示。

    image.png

  • 当RRC连接释放时,如果RRC连接释放没有携带Resume ID,或者Resume请求失败,安全和无线承载建立过程如图1.71所示。

    image.png

  首先,通过安全模式控制(SecurityModeCommand)和安全模式完成(SecurityMode Complete)模式建立AS级安全。
  在安全模式控制(SecurityModeCommand)消息中,基站使用SRB1和DRB提供加密算法和对SRB1完整性保护。LTE中定义的所有算法都包含在NB-IoT里。
  当安全激活后,进入RRC连接重配置(RRC connection reconfiguration)流程建立DRB,如图1.72所示。

image.png

  在重配置消息中,基站为UE提供无线承载,包括RLC(Radio Link Control,无线链路层控制协议)和逻辑信道配置。PDCP仅配置于DRB(Data Radio Bearer,数据无线承载),因为SRB(Signalling Radio Bearers,信令无线承载)采用默认值。在MAC配置中,将提供BSR、SR、DRX等配置。最后,物理配置提供将数据映射到时隙和频率的参数。
  3.多载波配置
  在RRC connection reconfiguration消息中,可在上/下行设置一个额外的载波,称为非锚定载波(non-anchor carrier)。
  基于多载波配置,系统可以在一个小区里同时提供多个载波服务,因此,NB-IoT的载波可以分为两类:提供NPSS、NSSS与承载NPBCH和系统信息的锚定载波(Anchor Carrier),以及非锚定载波(Non-Anchor Carrier),即除锚定载波之外的载波。
  当提供非锚定载波时,UE在此载波上接收所有数据,但同步、广播和寻呼等消息只能在锚定载波上接收。
  NB-IoT终端一律需要在锚定载波上面随机接入(Random Access),基站会在Random Access过程中传送非锚定载波调度信息,以将终端卸载至非锚定载波上进行后续数据传输,避免锚定载波的无线资源吃紧。
  另外,单个NB-IoT终端同一时间只能在一个载波上传送数据,不允许同时在锚定载波和非锚定载波上传送数据。

1.13 MQTT网络协议

  物联网(IoT)设备必须连接互联网。通过连接到互联网,设备就能相互协作,以及与后端服务协同工作。互联网的基础网络协议是TCP/IP。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是基于TCP/IP协议栈而构建的,已成为IoT通信的标准。
  MQTT最初由IBM于20世纪90年代晚期所开发。它最初的用途是将石油管道上的传感器与卫星相连接。顾名思义,它是一种支持在各方之间异步通信的消息协议。异步消息协议在空间和时间上将消息发送者与接收者分离,因此可以在不可靠的网络环境中进行扩展。虽然叫做消息队列遥测传输,但它与消息队列毫无关系,而是使用了一个发布和订阅的模型。在2014年末,它正式成为了一种OASIS开放标准,而且在一些流行的编程语言中受到支持(通过使用多种开源实现)。
  MQTT是一种轻量级的、灵活的网络协议,可在严重受限的设备硬件和高延迟/带宽有限的网络上实现。它的灵活性使得为IoT设备和服务的多样化应用场景提供支持成为可能。

1.13.1 网络协议比较

  大多数开发人员已经熟悉HTTP Web服务。那么为什么不让IoT设备连接到Web服务?设备可采用HTTP请求的形式发送其数据,并采用HTTP响应的形式从系统接收更新。这种请求和响应模式存在一些严重的局限性:
  HTTP是一种同步协议,客户端需要等待服务器响应。Web浏览器具有这样的要求,但它的代价是牺牲了可伸缩性。在IoT领域,大量设备及很可能不可靠或高延迟的网络使得同步通信成为问题。而异步消息协议更适合IoT应用程序,传感器发送读数,让网络确定将其传送到目标设备和服务的最佳路线和时间。
  HTTP是单向的。客户端必须发起连接。客户端发出请求,服务器进行响应。将消息传送到网络上的所有设备上,不但很困难,而且成本很高,而这是IoT应用程序中的一种常见使用情况。
  HTTP是一种有许多标头和规则的重量级协议。它不适合资源受限的设备网络。
  出于上述原因,大部分高性能、可扩展的系统都使用异步消息总线进行内部数据交换,而不使用Web服务。
  事实上,企业中间件系统中使用的最流行的消息协议被称为AMQP(高级消息排队协议)。但是在高性能环境中,计算能力和网络延迟通常不是问题。AMQP致力于在企业应用程序中实现可靠性和互操作性,它拥有庞大的特性集,但不适合资源受限的IoT应用程序。
  其他流行的消息协议,例如,XMPP(Extensible Messaging and Presence Protocol,可扩展消息和状态协议)是一种对等即时消息(IM)协议。它高度依赖于支持IM用例的特性,比如存在状态和介质连接。与MQTT相比,它在设备和网络上需要的资源都要多得多。

1.13.2 发布和订阅模型

  MQTT协议的一个关键特性是发布和订阅模型。与所有消息协议一样,它将数据的发布者与使用者分离。MQTT协议在网络中定义了两种实体类型:消息代理和一些客户端。代理是一个服务器,它从客户端接收所有消息,然后将这些消息路由到相关的目标客户端。客户端是能够与代理交互发送和接收消息的任何设备,可以是现场的IoT传感器,是数据中心内处理IoT数据的应用程序。
  客户端连接到代理,它可以订阅代理中的任何消息“主题”。此连接可以是简单的TCP/IP连接,也可以是用于发送敏感消息的加密TLS连接。
  客户端通过将消息和主题发送给代理,发布某个主题范围内的消息。然后代理将消息转发给所有订阅该主题的客户端。
  因为MQTT消息是按主题进行组织的,所以应用程序开发人员能灵活地指定某些客户端只能与某些消息交互。例如,传感器将在sensor_data主题范围内发布读数,并订阅config_change主题。将传感器数据保存到后端数据库中的数据处理应用程序会订阅sensor_data主题。管理控制台应用程序能接收系统管理员的命令来调整传感器的配置,比如灵敏度和采样频率,并将这些更改发布到config_change主题中。传感器的MQTT发布和订阅模型如图1.73所示。
  同时,MQTT是轻量级的。它有一个用来指定消息类型的简单报头,有一个基于文本的主题,还有一个任意的二进制有效负载。应用程序可对有效负载采用任何数据格式,比如JSON、XML、加密二进制或Base64,只要目标客户端能够解析该有效负载。
  开始进行MQTT开发的最简单工具是Python Mosquitto模块,该模块包含在Eclipse Paho项目中,提供了多种编程语言格式的MQTT SDK和库。它包含能在本地计算机上运行的MQTT代理,还包含使用消息与代理交互的命令行工具。可以从Mosquitto网站下载并安装Mosquitto模块。

image.png

1.13.3 MQTT协议命令

  1.mosquitto命令
  mosquitto命令在本地计算机上运行MQTT代理。也可以使用-d选项在后台运行它。
  $ mosquitto –d
  2.mosquitto_sub命令
  在另一个终端窗口中,可以使用mosquitto_sub命令连接到本地代理并订阅一个主题。运行该命令后,将等待从订阅的主题接收消息,并打印出所有消息。
  $ mosquitto_sub -t "dw/demo"
  3.mosquitto_pub 命令
  在另一个终端窗口中,可以使用 mosquitto_pub 命令连接到本地代理,然后向一个主题发布一条消息。
  $ mosquitto_pub -t "dw/demo" -m "hello world!"
  现在,运行 mosquitto_sub 的终端会在屏幕上打印出hello world!。刚才使用MQTT代理发送并接收了一条消息。
  当然,在生产系统中,不能使用本地计算机作为代理。相反,可以使用IBM Bluemix Internet of Things Platform服务,这是一种可靠的按需服务,功能与MQTT代理类似。Bluemix 服务集成并使用MQTT作为与设备和应用程序通信的协议。
  IBM Bluemix Internet of Things Platform服务的工作原理如下:
  (1)从Bluemix控制台,可以在需要时创建Internet of Things Platform服务的实例。
  (2)添加能使用MQTT连接该服务实例的设备。每个设备有一个ID和名称。只有列出的设备能访问该服务,Watson IoT Platform仪表板会报告这些设备上的流量和使用信息。
  (3)对于每个设备客户端,Bluemix会分配一个主机名、用户名和密码,用于连接到用户的服务实例(MQTT 代理)。在Bluemix上,用户名始终为use-token-auth,密码始终是图1.74中显示的每个连接设备的令牌。
  在IBM Bluemix中创建Internet of Things Platform服务,结果如图1.74所示。

image.png

  使用远程MQTT代理时,需要将代理的主机名和身份验证凭证传递给mosquitto_sub和mosquitto_pub命令。例如,下面的命令使用了Bluemix提供的用户名和密码,订阅我们的Internet of Things Platform服务上的demo主题:
  $ mosquitto_sub -t "demo" -h host.iotp.mqtt.bluemix.com -u username -P password
  有关使用mosquitto工具的更多选择,以及如何使用mosquitto API创建自己的MQTT客户端应用程序,请参阅Mosquitto网站上的文档。
  有了必要的工具后,让我们来更深入地研究MQTT协议。

1.13.4 MQTT协议参数

  MQTT是一种连接协议,它指定了如何组织数据字节并通过TCP/IP网络传输它们。但实际上,开发人员并不需要了解这个连接协议,只需要知道每条消息有一个命令和数据有效负载。该命令定义消息类型(例如CONNECT消息或SUBSCRIBE消息)。所有MQTT库和工具都提供了直接处理这些消息的简单方法,并能自动填充一些必需的字段,比如消息和客户端ID。
  (1)首先,客户端发送一条CONNECT消息来连接代理。CONNECT消息要求建立从客户端到代理的连接。CONNECT消息包含以下内容参数,如表1.14所示。

image.png

  (2)客户端收到来自代理的一条CONNACK消息。CONNACK消息包含以下内容参数,见表1.15。

image.png

  (3)建立连接后,客户端会向代理发送一条或多条SUBSCRIBE消息,表明它会从代理接收针对某些主题的消息。消息可以包含一个或多个重复的参数,如表1.16所示。

image.png

  (4)客户端成功订阅某个主题后,代理会返回一条SUBACK消息,其中包含一个或多个returnCode参数,见表1.17所示。

image.png

  与SUBSCRIBE消息对应,客户端也可以通过UNSUBSCRIBE消息取消订阅一个或多个主题,见表1.18所示。

image.png

  客户端可向代理发送 PUBLISH消息。该消息包含一个主题和数据有效负载。然后代理将消息转发给所有订阅该主题的客户端,见表1.19所示。

image.png

  MQTT的优势在于它的简单性,在可以使用的主题类型或消息有效负载上没有任何限制。这支持一些有趣的用例。例如,请考虑以下问题:
  如何使用MQTT发送1对1消息?双方可以协商使用一个特定于它们的主题。例如,主题名称可以包含两个客户端的ID,以确保它的唯一性。
  客户端如何传输它的存在状态?系统可以为presence主题协商一个命名约定。例如,presence/client-id主题可以拥有客户端的存在状态信息。当客户端建立连接时,将该消息设置为true,在断开连接时,该消息被设置为false。客户端也可以将一条last will消息设置为false,以便在连接丢失时设置该消息。代理可以保留该消息,让新客户端能够读取该主题并找到存在状态。
  如何保护通信?客户端与代理的连接可以采用加密TLS连接,以保护传输中的数据。此外,因为MQTT协议对有效负载数据格式没有任何限制,所以系统可以协商一种加密方法和密钥更新机制。在这之后,有效负载中的所有内容可以是实际JSON或XML消息的加密二进制数据。

1.14 协 议 转 换

  协议转换指将一个设备协议转换成适用于另一设备的协议过程,目的是为了使不同协议之间实现互操作。协议通常是以软件的形式出现。比如路由器将一个网络中的数据格式、数据速率等转换成适用于另一个网络的协议。网络中有很多种协议,分别应用在不同的领域。
  主要的协议转换消息涉及数据消息、事件、命令和时间同步的转换。
  每个网络内部都有各自的信息交流方式,当两个网络需要相互沟通的时候,如果彼此不识别对方的交流方式,那么就无法相互沟通,协议转换即起到了为两个网络相互“翻译”的作用。实际情况下,可以在不同的网络类型中分别设置一个网关,网络与网络之间通过网关相连,网关即起到协议转换的作用。
  协议转换是一种映射,就是把某一协议的收发信息(或事件)序列映射为另一协议的收发信息序列。需要映射的信息为重要信息,因此协议转换可以看作是两个协议的重要信息之间的映射。所谓重要信息和非重要信息是相对而言的,要根据具体需要加以确定,选择不同的重要信息作映射,会得到不同的转换器。
  工业通信需要多个设备之间的信息共享和数据交换,而常用的工控设备通信口有RS-232、RS-485、CAN和网络,由于各接口协议不同,使得异构网络之间的操作和信息交换难以进行,通过多协议转换器可以将不同接口设备组网,实现设备间的相互操作。基于多种通信接口和各种协议,形成了种类繁多的协议转换器,主要类别有E1/以太网协议转换器、RS-232/485/422/CAN转换器等。
  协议网关通常在使用不同协议的网络区域间做协议转换。这一转换过程可以发生在OSI参考模型的第2层、第3层或第2与第3层之间。但是有两种协议网关不提供转换的功能:即安全网关和管道。由于两个互连的网络区域的逻辑差异,安全网关是两个技术上相似的网络区域间的必要中介,如私有广域网和公有的因特网。

1.14.1 RS-232/485/CAN转换器

  具有串行通信能力的设备仍然在控制领域、通信领域大面积使用,随着接入设备的增多,应用功能复杂程度的提高,传统的串行通信网络的缺点越来越明显,而采用RS-232/CAN智能转换器,升级、改造或重新构建既有通信或控制网络,能够很方便地实现RS-232设备多点组网和远程通信,特别是在不需要更改原有RS-232通信软件的情况下,用户可直接嵌入原有的应用领域,使系统设计达到更先进的水平,在系统功能和性能大幅度提高的情况下,减少了重复投资和系统更新换代所造成的浪费。
  USB-RS232接口转换器首要的功能是实现两种总线的协议转换。主机端可以使用新的USB总线协议,向外发送数据,转换器内部将数据格式转变为RS-232串行信号,再发送到设备上。设备回送主机的数据,经转换器转变为USB协议数据。
  USB-RS232接口转换器在对所流经的数据进行协议转换时,可以增加特别的功能。

  • 由于USB总线的速度比RS-232接口快很多,可以在接口转换器上设计数据缓冲区,以协调两总线的速度差。
  • RS-232接口有一些变种,如RS-485、RS-422接口,接口转换器中可以设计RS-232/485或是RS-232/422接口转换器,简化整个系统的通信接口转换。
  • 接口转换器在进行数据格式转换时,可以设计加密、解密算法,对流经的数据进行处理,提高系统的数据保密性。

1.14.2 基于现场总线的协议转换器

  基于现场总线的研究,发现多种总线标准的竞争与共存在客观应用上造成了不便。
  CAN总线协议和Modbus协议的结合,通过引用Modbus协议代替原自定义串口协议,将通信任务按读、写进行归纳分类,再用Modbus协议定义的标准功能码简化通信流程,提高效率,同时也使系统具备开放性,能方便地结成网络。Modbus协议是主从协议,而CAN总线协议是多主对等协议,这也就决定了所设计的协议转换器在Modbus网络中作为从站,而在CAN网络中作为发送优先级最高的节点。
  Modbus和CAN协议转换原理:在DSP的RAM中划分Modbus报文和CAN报文的存储缓冲区(包含各自的输入和输出缓冲区);协议转换器从Modbus主站收到的报文存入Modbus接收缓冲区,向主站返回应答时从CAN总线的接收缓冲区读取数据打包成Modbus应答报文的格式进行发送;协议转换器从Modbus接收缓冲区获取报文并存入CAN报文发送缓冲区,依据功能码进行发送分析,决定采用单次还是分次发送方式。总地来说,就是一种存储转发机制,这种机制首先考虑的是通信转换的可靠性,存储转换带来的延时直接导致通信实时性的降低。
  数量众多的物联网协议各有各的特点和应用场景。如果深究起原理来,还涉及OSI的七层模型和各种标准。
  物联网的协议分为两种,即接入协议与通信/网络协议。接入协议大多都不属于TCP/IP协议族,只能用于设备子网(设备与网关组成的局域网)内的通信;而通信/网络协议属于TCP/IP协议族,能够在互联网中进行数据传输,如图1.75所示。
  采用接入协议的物联网设备,需要通过网关进行协议转换,转换成通信/网络协议才能接入互联网。而采用通信协议的物联网设备,则可以直接接入互联网。
  常用的接入协议包括蓝牙、ZigBee、LoRa、NB-IoT、Wi-Fi、RS-485、RS-232、NFC、RFID等;常用的通信协议包括HTTP、CoAP、MQTT、XMPP、AMQP、JMS等。其中:

  • Wi-Fi不需要网关。作为接入协议的Wi-Fi在对接互联网时,并不需要网关做协议转换,而是可以直接接入互联网,这是由于Wi-Fi采用的标准IEEE 802.11就包含在TCP/IP协议族中,该标准规定了物理层和数据链路层,并能够以TCP/IP协议作为网络层等其他各层的协议,因此能够无缝对接互联网。
  • 作为通信协议的CoAP,在目前的互联网环境下无法广泛使用。CoAP是应用层的协议,但是其在网络层依赖的是IPv6,而IPv6目前并没有在互联网环境中普及,因此,CoAP作为通信协议在互联网上的传输受到极大的限制,目前更多应用于局域网中。

image.png

  为什么会有接入协议的存在?物联网设备都采用通信/网络协议不就万事大吉了?
  相对于通信/网络协议的优势,接入协议所依赖的硬件资源要求更低,功耗更低,网络传输的数据量也更小,因此,在远程抄表等一些场景中更具优势。这些场景中,物联网设备往往没有外接电源,因此要求功耗尽可能低,比如,一节纽扣电池能够供电一年左右。这样的要求是HTTP等协议所需的硬件环境难以胜任的。

1.14.3 物联网协议转换器——网关

  继计算机、互联网之后,物联网的崛起掀起了世界信息产业发展的第三次浪潮。物联网是新一代信息技术的重要组成部分,可以看作是互联网的升级与扩展。根据国际电信联盟(ITU)的定义,物联网主要解决物品与物品(Thing to Thing,T2T),人与物品(Human to Thing,H2T),人与人(Human to Human,H2H)之间的互连。通过以互联网为基础,延伸和扩展到了任何物品与物品之间进行信息交换和通信。简言之,物联网就是物物相连的互联网。物联网应用通过传感器间接或者直接将设备运行状态及数据上传到云服务器上,然后就可以利用云计算和大数据等先进技术手段对数据进行处理,从而为用户更好地服务,方便更好地利用和控制设备。
  物联网是指通过信息感知节点,按照相互约定的协议将传感器、执行器或者嵌入式设备与互联网连接起来,进行信息交换与通信,以实现智能化识别、定位、跟踪、监控和管理。近几年,物联网发展迅猛,各种各样的基于物联网的应用应运而生。物联网的应用十分广泛,工业生产、环境保护、军队布防、仓储管理、智能家居、社交网络、医疗研究等各个方面都需要借助物联网设备和应用来进一步提高效率。
  1.物联网网关的概念
  物联网的概念由来已久,但是物联网的具体实现方式和组成架构一直都没有形成统一的意见。物联网网关作为其中的一项关键性技术,有着开发成本高、开发周期长、软硬件不兼容、核心技术难以掌握、商业模式不确定、标准难以统一等诸多问题。从资源整合的角度来说,采用成熟的网关解决方案配合自己的项目开发无疑是最佳的选择方式。物联网架构可分为3层:即感知层、网络层和应用层,其中连接感知层和网络层的关键技术即物联网网关。在物联网时代中,物联网网关将会是至关重要的环节,如图1.76所示。

image.png

  作为连接感知层与网络层的纽带,物联网网关可以实现感知网络与通信网络,以及不同类型感知网络之间的协议转换,既可以实现广域互联,也可以实现局域互联。在无线传感网中,物联网网关是不可或缺的核心设备。此外物联网网关还需要具备设备管理功能,运营商通过物联网网关设备可以管理底层的各感知节点,了解各节点的相关信息,并实现远程控制。
  2.物联网网关的形态
  从物联网网关的定义来看,物联网网关很难以某种相对固定的形态出现。总体来说,凡是可以起到将感知层采集到的信息通过此终端的协议转换发送到互联网的设备都可以算做物联网网关。形态可以是盒子状,可以是平板电脑,可以有显示屏幕的交互式形态,可以是封闭或半封闭的非交互形态。
  3.物联网网关关键技术

  • 多标准互通接入能力:目前用于进程通信的技术标准很多。常见的传感网技术包括ZigBee、Z-Wave、RUBEE、WirelessHART、IETF6IowPAN、ANT/ANT+、Wibree和Insteon等。各类技术主要针对某一类应用展开,之间缺乏兼容性和体系规划。例如,Z.Wave主要应用于无线智能家庭网络,RUBEE适用于恶劣环境,WirelessHART主要集中在工业监控领域。实现各种通信技术标准的互联互通,成为物联网网关必须要解决的问题。研发人员针对每种标准设计单独的网关,再通过网关之间的统一接口实现,还可以采用标准的适配层、不同技术标准开发相应的接口实现,如图1.77所示。
  • 网关的可管理性:物联网网关作为与网络相连的网元,其本身要具备一定的管理功能,包括注册登录管理、权限管理、任务管理、数据管理、故障管理、状态监测、远程诊断、参数查询和配置、事件处理、远程控制和远程升级等。如需要实现全网的可管理,不仅要实现网关设备本身的管理,还要进一步通过网关实现子网内各节点的管理。例如获取节点的标识、状态、属性等信息,以及远程唤醒、控制、诊断、升级维护等。根据子网的技术标准不同,协议的复杂性不同,所能进行的管理内容有较大差异。

image.png

  在物联网环境中,分布着成千上万的数据节点,每个节点都在不停地更新数据。由于数据信息完全分散,节点支持数据传输协议不尽相同,给数据收集、数据查询带来很大的难度。显然,如果不对数据进行综合采集,将会产生很大的网络开销,而且不便于管理,传输效率、传输安全也得不到保障。在这种情况下,我们需要一种设备能同时通过近场通信信息采集,通过远程通信的方式传输数据到云端,并对设备进行管理。不同协议之间进行转换,包括节点配置、数据采集、数据处理、设备控制等功能,这就是物联网智能网关。物联网智能网关主要实现设备管理、多协议接入功能,以及协议转换与标准数据传输协议的功能。
  多数据协议转换的物联网智能网关解决了物联网应用中多节点、多协议设备接入物联网云平台效率低、复杂度高的困局。支持多种协议的设备接入和物联网协议数据上传到云平台,从而方便其在工业和城市物联网项目中的推广和移植。通过加入设备管理与配置模块,极大地方便了用户的使用。

1.14.4 物联网网关

  基于物联网技术的智能网关技术方案,包括嵌入式硬件平台、操作系统和应用软件等几部分。
  1.嵌入式硬件平台
  嵌入式硬件平台主要由嵌入式处理器和外部设备组成。嵌入式处理器采用TIam3352处理器(德州仪器),该处理器采集于ARM Cortex-A8架构,拥有二级高速缓存、通用内存接口(支持DDR/DDR2/DDR3)、通用存储接口,内部集成了两个千兆以太网链路层接口功能(以太网接口1,以太网接口2),6个UART(串口),2个McSPI,3个I2C接口和一个Jtag接口。外部设备包括512MDDR3内存、512MB Nand flash存储器、一个网口、一个蓝牙模块、一个Wi-Fi模块、一个CAN模块和4个485模块。
  蓝牙模块、Wi-Fi模块和4个485模块分别通过UART接口与嵌入式处理器连接;DDR3连接到通用内存接口;Nand flash连接到通用存储接口;网口连接到以太网接口1;CAN模块用MCP2510CAN控制芯片实现,通过McSPI接口与嵌入式处理器连接。
  2.操作系统
  操作系统为开源的Linux 3.2.0系统,通过J-Link仿真器和JTAG接口,将TI提供的uboot和Linux 3.2.0烧录到Nand falsh中,然后将TI提供的接口驱动安装完毕,实现操作系统在硬件中的部署,同时为应用软件运行提供必要的环境支持。
  3.应用软件
  应用软件主要实现业务功能,由3部分组成,包括多协议数据接入系统、网关内部管理系统和网关内部数据缓存系统。应用软件是基于Linux操作系统,通过gcc编译器将应用软件编译为可执行文件,后通过串口下载到Linux操作系统中,并设置应用软件随操作系统自动启动。
  4.多协议数据接入系统
  多协议数据接入系统中由4个Connecter模块组成。每个Connecter实现一种协议数据交互和解析。Connecter为接入设备和协议以及包含的动作的抽象,每个Connecter就是一个智能体。它可以根据配置自动识别设备,进行数据读写和数据解析,将数据传递给需要的Connecter。在计算机系统中每个Connecter也是一个进程。这样就可以根据硬件接口增加或者删减Connecter,可以做到灵活扩展网关功能。目前支持CanConnecter、ModBusConnecter、MQTTConnecter和HttpConnecter 4种,但可以根据硬件和协议定制添加Connecter。
  5.网关内部管理系统
  网关内部管理系统简称CMS(Connecter Management System),主要用来做Connecter的管理。由于每个Connecter都是单独的进程,这样Connecter的启动、暂停和停止等一系列的操控需要专门的系统来管理。CMS根据客户端的JSON配置文档,来启动需要的Connecter,并分配Connecter运行的JSON配置文档。这样每个启动的Connecter就会按照用户的定义运行起来。
  网关运行需要配置文档,配置文档采用JSON格式。流行的JSON数据交互格式,简洁易用,日益成为新的交换格式的标准。
  6.网关内部缓存系统
  网关内部缓存系统采用高性能的Redis内存数据库,由于每个Connecter是一个独立的进程,那么Connecter之间的数据交互,就涉及进程间的通信。常见的进程间的通信用管道、信号量、消息队列、共享内存和套接字(socket)通信等。经过分析,本实例采用基于套接字的Redis内存数据库做数据缓冲。Redis是一个key-value存储系统。它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove,以及取交集、并集和差集等操作,而且这些操作都是原子性的。本实例主要采用Redis基本的字符串存储,做一对一的Connecter之间的通信,一对多的Connecter模型中采用Redis订阅发布模式,这样一个Connecter向Redis服务器发布数据时,那么订阅此数据的Connecter都可以接收到数据。
  与传统网关不同的地方在于,本实例支持现有流行的物联网协议MQTT与数据平台进行交互。MQTT使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,对负载内容屏蔽的消息传输和小型传输的开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。作为一种优化方案,支持HTTP协议,HTTP协议已经成为互联网上应用最为广泛的协议。HTTP协议稳定、安全,但是开销大,而MQTT轻巧、快速,二者可以互补。作为优化方案,与平台交互的数据格式采用JSON格式。JSON数据由多个键值对组成,可以方便地定义数据,赋予数据更多含义,比如数据包括数据来源、数据物理含义、数据单位和数据长度等,这样云平台对数据利用更加方便。
  7.硬件核心板
  硬件核心板采用TI am3352核心板,am3352功能强大,定位工业控制。外围实现485、CAN、Wi-Fi、蓝牙和网口硬件模块连接。
  操作系统采用剪裁的Linux 3.2.0,Linux 3.2.0具有系统稳定、比较简洁、运行速度快等特点。
  应用软件包括多协议数据接入系统,网关管理模块和数据缓存系统。根据接入关系,应用层又可以划分为下行接入层、业务层和上行接入层。下行接入层和上行接入层都属于多协议数据接入系统。下行接入层主要在设备侧,上行接入侧主要在物联网云平台交互侧,业务层由网关管理系统和数据缓存系统实现,主要包括网关内部安全管理、数据存储和Connecter之间的通信。

1.14.5 物联网网关应用

  物联网网关作为一个新的名词,在未来的物联网时代将会扮演非常重要的角色,它将成为连接感知网络与传统通信网络的纽带。作为网关设备,物联网网关可以实现感知网络与通信网络,以及不同类型感知网络之间的协议转换,既可以实现广域互联,也可以实现局域互联。此外,物联网网关还需要具备设备管理功能,运营商通过物联网网关设备可以管理底层的各感知节点,了解各节点的相关信息,并实现远程控制。
  有物联网应用的地方,必然有物联网网关的存在。通过连接感知层的传感器、射频(RFID)、微机电系统(MEMS)、智能嵌入式终端,物联网网关的应用将遍及智能交通、环境保护、政府工作、公共安全、平安家居、智能消防、工业监测、环境监测、路灯照明管控、景观照明管控、楼宇照明管控、广场照明管控、老人护理、个人健康、花卉栽培、水系监测、食品溯源等多个领域。不同应用方向的物联网网关所使用的协议与网关形态会有不同差异,但它们的基本功能都是把感知层采集到的各类信息,通过相关协议转换形成高速数据传递到互联网上,同时实现一定的管理功能。
  1.智能家居
  物联网网关在家庭中的使用也是很有代表性的,物联网应用智能家居模型如图1.78所示。现今,许多家用设备形式越来越多样,有些设备本身就具备遥控能力,如空调和电视机等,有些如热水器、微波炉、电饭煲和冰箱等则不具备这方面的能力。而这些设备即使可以遥控,但对其的控制能力和控制范围都非常有限。并且这些设备之间都是相互孤立存在的,不能有效实现资源与信息的共享。随着物联网技术的发展,物联网网关技术的日益成熟,智能家居中各家用设备间互联互通的问题将得到解决。
  电视机、洗衣机、空调、冰箱等家电设备,门禁、烟雾探测器、摄像头等安防设备,台灯、吊灯、电动窗帘等采光照明设备,通过集成特定的通信模块,分别构成各自的自组网子系统。而在家庭物联网网关设备内部,集成了几套常用的自组网通信协议,能够同时与使用不同协议的设备或子系统进行通信。用户只需对网关进行操作,便可以控制家里所有连接到网关的智能设备。

image.png

  2.车联网网关
  车联网是物联网应用做得比较好的行业之一,被国内学术界认为是第一个切实可行的物联网系统,已经通过国家专家组论证,预计投入2000个亿支持相关单位研发车联网系列产品。国产CARMAN系统即多功能的车载终端与车联网网关二合一的产品。CARMAN系统基于国标GB-T19056-2003/国家交通运输部行业标准的要求,集合了数字化视频压缩存储和3G无线传输技术(DigitalVideoRecord),结合了GPS定位监控、汽车行驶记录仪、SD卡大容量存储、驾驶员IC卡身份识别、公交报站器、多路数据接口、车载蓝牙免提语音通话功能、倒车监控、Wi-Fi热点、车载MP3/MP4、车载影音和车载功放等功能。通过3G视频传输技术,双码流传输,速率可调,传输更快,视频更清晰流畅。通过WCDMA或CDMA可以上传抓拍的图片,实现移动目标实时监控,做到实时传输监控视频和图像。系统自带的多媒体行驶记录分析软件可以实现4路图像同步回放,以及条件回放、剪辑存储、字符叠加、地理信息和行驶记录叠加、事件分析和记录提取等功能。一体化结构极大地压缩了产品体积,扩展了产品的性能,符合未来车联网网关的发展趋势。

1.15 小 结

  本章介绍了数字通信的常用规范协议,考虑到物联网涉及有线通信和无线通信,本章以网络通信协议为基础,以无线通信协议为重点,详细介绍了近场通信协议、短距离通信协议,以及广域通信协议的功能、标准和应用场景等内容。

1.16 习 题

  1.通信协议和接入协议有哪些区别?

  2.TCP/IP协议的七层模型是什么?

  3.简述HTTP 协议的要点。

  4.Wi-Fi协议的要点是什么?是哪些技术优势使其广泛流行?

  5.窄带物联网协议在5G通信中有什么重要作用?

  6.窄带物联网NB-IoT协议实施、部署的优势和难点在哪里?

  7.MQTT为什么适合IoT应用?
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接