引言
智慧城市已经热炒几年了,目前还在升温,并且一些做国际联网应用的大企业提出了“城市大脑”的概念。当年这些概念的提出,对于推进智慧城市建设是有意义的,但作为城市的管理者和建设者,不能被这些概念所“忽悠”,因为目前还没有哪个做网络应用的企业是真的站在城市建设者和管理的角度来考虑智慧城市的建设问题,并且由于他们“大脑”想的更多是企业的利益,还不是哪个具体的城市,所以,城市的建设者和管理者可以多参考他们的想法,但是主导权还是要放在自己的手里,从实际出发,去规划、设计自己的智慧城市。
笔者虽然是从事网络安全行业,但是几年来为了智慧城市的安全,不得不对城市和智慧城市有所理解,有一些体会和想法,供读者参考。
第一个问题,我们讨论智慧城市建设中,IPV6作为传感器地址的问题。
IPV6在国际上已经讨论了有若干多年了,中共中央办公厅、国务院办公厅已于2017年印发了《推进互联网协议第六版(IPv6)规模部署行动计划》。其中的动因之一是由于IPV6可以为地球上的“每一粒砂子,分配一个地址”,为万物互联提供了地址基础。
但是,今天笔者想给大家泼一点冷水。
1.计算机联网与万物联网的通信地址需求
对于计算机联网与各类“物”的联网,其共同点是每个联网的节点,都需要有一个地址,对自己进行标识,以区别于其它的节点。但是,采用什么样的地址,与相应的通信模式是相关的。
早期的局域网一般都采用总线制,使用的多是802.3协议,寻址直接使用MAC地址。而对于较大的计算机联网,特别是Internet这种国际联网,每个联网节点都存在与在网上的任意节点通信需求的可能,这样通信协议就必须保证任意一个节点都能寻找到其它任意不同的节点地址,同时也可以被任意其它节点寻找到的可能。IP协议,正是支撑了这样的一个需求,特别是IPV6,地址空间是128位(16个字节),真的可以为每一粒砂子提供一个地址。
对于“物”的联网,是否有这样的地址需求呢?每个“物”是否有与在网上联接的其它的“物”进行这种通信呢?这是需要做一点分析的。
1.1 物联网传感器的基本连接方式
1.1.1 物的连接方式
“物”能连接到网上,要考虑几种方式:
通过各类标识码的读卡器,将这个物映射到网上;
通过数字标签RFID将所代表的“物”映射到网上;
通过大量的传感器,将“物”的非电量转换为可以被网络识别的电量;
电气设备的直接连接;
可能的其它方式。
本文仅对传感器(不包括视频摄像头)的连网进行分析。
1.1.2 传感器的基本原理
传感器是将非电物理量转化为电量的一种变换器。如图1所示:
图1传感器
转换的原理实际是很简单的,无非是将一些对某个非电物理量变化比较敏感的电学物理量接入到实际的“物”的某个比较容易检测到的部位,当这个“物”的物理量变化时,就会引起相关敏感元器件的电阻、电容、电感,或者是其它的电子元器件发生变化,从而变成电流、电动势、电磁场强度等等的变化。传感器的部署从系统论的分层观点来看,应该是智慧城市的最底层。
1.1.3 传感器的几种主要场景
这些传感器变换化的电量,主要有以下的几种应用场景:
(1)无控制的数值上传
这种情况就是为测量之用,是最简单、最直接的应用。
(2)有控制数值上传及控制信号的产生
这种情形的应用,在工业控制体系中是比较普遍的,传感器不仅用于测量,同时还会事先设定一定的阈值,当达到阈值规定时,会有相应的触发,导致执行器做出相应的动作,这种控制有开环的控制,也有经过反馈形成的闭环控制。如图2所示:
图2控制
控制系统要向上一级控制器报送状态数据,如执行器所执行动作的频率,执行器所维持的状态,传感器上报数据的范围,传感器的状态等等。
图3传感器的汇聚
1.1.4 多传感器汇聚场景
在工业控制和智慧城市需要的控制项目中,可能还需要与相应的计算端进行连接,由计算端给出相应的计算结果,再命令相应的执行器执行各类动作。执行器可能是一个也可能是多个。这就是系统控制,而计算端可以是针对一个“物”状态的(端)计算,也可以是针对多个“物”的边缘的系统计算。如图3所示。
1.2 传感器地址
对于一个单路的传感器的测量体系,传感器的地址不那么重要。但是,对于一个多路的体系来说,无论是仅用于测量,还是用于控制,传感器的地址都是非常重要的。如果每个传感器没有区别于其它传感器的地址,那么就无法确认数据是由哪个传感器所产生的,系统当然也无法正常地运行。
传感器地址必须满足以下的条件:
(1)在一个小系统内,地址空间要足够,以保证小系统内的所有传感器都有一个独立的地址;
(2)地址应该足够的短,这样计算资源和网络资源用于地址解析的开销就少,特别是对于实时性要求较高的应用场景,这种对资源的节省,就会减少延时;
(3)保证传感器是合法接入的(关于这一点,本文暂不讨论)。
2.传感器数值(数据)的通信模式
前面说过,通信的地址寻址方式与网络传输模式是相关的,分析传感器的传输需求,对于分析传感器的寻址是重要的。
无论是哪一种应用场景,传感器是一个单向的数据上传的部件,也就是说它的通信仅仅是向一个方向的传输,当然它的数据可能会有多个系统对其进行采集,无论数据是由传感器推送给上一级节点,还是由上一级节点对传感器进行询问。数据是由传感器产生并由传感器作为通信的信源端,传感器永远不会成为信宿端。
2.1 控制执行器与控制信号
在物联网中,控制是可能存在的,一些系统需要从感知端获得数据,当数据达到某个阈值时,应该触发控制执行器产生某些动作,使得系统处于一个良好的状态。前面已经说过,这种控制有开环的,也有闭环的。控制,无论是开环还是闭环,对实时性的要求一般会比较高,执行端可以认为是通信的信宿端。但是,执行端并不一定仅仅是接收数据,也可能会将自身(或系统)的状态数据作为信源端发送给更高一级的节点,显然控制执行端也是需要相应地址的。
需要说明的是,控制信号不同于数据,一个是实时要求比较高,另一个是控制信号是不能像数据那样重复使用的。
3.计算机网络与传感器网络通信
3.1 计算机网络通信
各计算机之间的通信寻址方式是与这个网络的复杂度有关的,对于早期的局域网来说,通信协议多采用的是IEEE802.3总线网的协议,这个协议描述的是物理层和数据链路层的MAC子层的实现方法,寻址也仅仅是针对MAC地址进行寻址。而对于范围较大的网络来说,可能是多网的结构,网与网之间是不能直接用MAC地址寻址的。这样的复杂网络环境,任意两台计算机之间的通信,先建立会话,使得通信信道建立后,通信才能得以实现,所以OSI七层协议模型是非常重要的。TCP/IP协议,虽然没有一一的对应七层协议,但是协议中的功能一点都没少。IP层是为了解决寻址的,IP地址必须与MAC地址相对应,而TCP/UDP是对应到传输层的。
一个通信的建立必须包括五元组:源IP地址、源端口、目的地址、目的端口、4层协议号。这样就保证了任意一台计算机与另外任意一台计算机之间的通信的可靠性和唯一性。
对于复杂网络的计算机通信来说,这是非常必要的。
3.2 传感器网络通信
在传感网络中,从传感器的汇聚端,如图3(注:汇聚端的说法,不一定准确,是指传感器将数据传送的最近节点)所示,仍然可以看成是复杂的计算机网络的通信,但是传感器与汇聚器之间,则不能简单地看成是计算机网络通信。
(一)传感器网络使用IPV6地址导致的问题
对于使用IPV6作为传感器的识别地址就会存在以下的问题:
3.2.1 IPV6需要与MAC地址建立对应关系
对于任意一个传感器,我们确实需要有一个可以识别的地址,如果没有这样的一个地址,就不知道数据的来源,就无法体现这个数据的价值。但是,是否一定需要用IPV6作为地址则是需要分析的。
相当多数的传感器目前仍然是非数字化的传感器,即便是已经数字化了的传感器,是否需要一个MAC地址,然后再与IPV6建立对应关系呢?
虽然IPV6地址空间足够大,但是只要传感器的汇聚端能够识别连接到该汇聚端上的所有传感器就足够了,一般这种汇聚端可连接的传感器,不过是几个,十几个、几十个的都是比较少见的,就算数量级很大,我们也可以用汇聚器级联的方式进行扩展。我们完全不需要那么大的地址空间来区别各个传感器,何况还要在传感器上加个网卡。
3.2.2 IPV6地址空间数据过大,导致传感器数据报有效数据占比过低
IPV6的地址空间是128位,对于一个五元组来说,源地址加上源端口就需要18个字节,完整五元组就需要37个字节,而一个传感器产生的数值往往只有3到5位十进制数据,一个5位十进制数据的数值转换成二进制,也仅仅是3个字节,用37个字节的地址大包装箱,只装上了3个字节的小货物,大量的算力和带宽都浪费在对地址的处理上,是极不合理的。一些从事物联网应用的企业也证明了这一点,他们对每个月传输一次的计量数据(积攒了一个月,数据量还算比较大),对于IPV4来说,数据部分仅占了数据报三分之一。
3.2.3 传感器的通信模式
对于计算机网络来说,任意两台计算机之间是有通信需求的,这任意的两台计算机可能是在不同的国度,也就是说有全球可达的通信需求。这种通信的路径,很难说是南北向的还是东西向的(向直接的服务端请求通信是南北向的,而与其它的计算机节点的通信,则都可以认为是东西向的),并且通信是双向的。而对于传感器与汇聚端的通信来说,仅仅单向的由传感器向汇聚端的通信,这就说明:
(1)传感器的数据没有全球可达的通信需要,如果有,完全可能通过汇聚端进行传输;
(2)传感器之间没有通信的需求,并且也不存在传感器之间通信的可能,即便有,也可以通过汇聚端来实现;
(3)传感器与汇聚端的通信是定向的,不需要用五元组来确定。
结论
用IPV6作为传感器的识别地址是不科学的,完全没有必要,甚至是有害的。