IPv6技术在物联网中的应用
2010-06-27陈仲华
陈仲华
(中国电信股份有限公司上海研究院 上海 200122)
1 引言
2 物联网的网络困境
物联网丰富的应用和庞大的节点规模既带来了商业上的巨大潜力,同时也带来了技术上的挑战。
首先,物联网由众多的节点连接构成,无论是采用自组织方式,还是采用现有的公众网进行连接,这些节点之间的通信必然牵涉到寻址问题。目前物联网的寻址系统可以采用两种方式,一种方式是采用基于E.164电话号码编址的寻址方式,但由于目前大多数物联网应用的网络通信协议都采用TCP/IP协议,电话号码编址的方式必然需要对电话号码与IP地址进行转换,这提高了技术实现的难度,并增加了成本。同时由于E.164编址体系本身的地址空间较小,也无法满足大量节点的地址需求。另一种方式是直接采用IPv4地址的寻址体系来进行物联网节点的寻址,随着互联网本身的快速发展,IPv4的地址已经日渐匮乏,从目前的地址消耗速度来看,IPv4地址空间已经很难再满足物联网对网络地址的庞大需求。从另一方面来看,物联网对海量地址的需求,也对地址分配方式提出了要求,海量地址的分配无法使用手工分配,使用传统DHCP的分配方式对网络中的DHCP服务器也提出了极高的性能和可靠性要求,可能造成DHCP服务器性能不足,成为网络应用的一个瓶颈。
其次,目前互联网的移动性不足也造成了物联网移动能力的瓶颈。IPv4协议在设计之初并没有充分考虑到节点移动性带来的路由问题,即当一个节点离开了它原有的网络,如何再保证这个节点访问可达性的问题。由于IP网络路由的聚合特性,在网络路由器中路由条目都是按子网来进行汇聚的,当节点离开原有网络,其原来的IP地址离开了该子网,而节点移动到目的子网后,网络路由器设备的路由表中并没有该节点的路由信息(为了不破坏全网路由的汇聚,也不允许目的子网中存在移动节点的路由),会导致外部节点无法找到移动后的节点。因此如何支持节点的移动能力是需要通过特殊机制实现的,在 IPv4中 IETF提出了 MIPv4(移动 IP)的机制来支持节点的移动。但这样的机制引入了著名的三角路由问题,对于少量节点的移动,该问题引起的网络资源损耗较小,而对于大量节点的移动,特别是物联网中特有的节点群移动和层移动,会导致网络资源被迅速耗尽,使网络处于瘫痪的状态。
再次,网络质量保证也是物联网发展过程中必须解决的问题。目前IPv4网络中实现QoS有两种技术,其一采用资源预留(interserv)的方式,利用RSVP等协议为数据流保留一定的网络资源,在数据包传送过程中保证其传输的质量;其二采用Diffserv技术,由IP包自身携带优先级标记,网络设备根据这些优先级标记来决定包的转发优先策略。目前IPv4网络中服务质量的划分基本是从流的类型出发,使用Diffserv来实现端到端服务质量保证,例如视频业务有低丢包、时延、抖动的要求,就给它分配较高的服务质量等级;数据业务对丢包、时延、抖动不敏感,就分配较低的服务质量等级,这样的分配方式仅考虑了业务的网络侧质量需求,没有考虑业务的应用侧的质量需求,例如,一个普通视频业务对服务质量的需求可能比一个基于物联网传感的手术应用对服务质量的需求要低。因此物联网中的服务质量保障必须与具体的应用相结合。
最后,物联网节点的安全性和可靠性也需要重新考虑。由于物联网节点限于成本约束很多都是基于简单硬件的,不可能处理复杂的应用层加密算法,同时单节点的可靠性也不可能做得很高,其可靠性主要还是依靠多节点冗余来保证。因此,靠传统的应用层加密技术和网络冗余技术很难满足物联网的需求。
3 IPv6的物联网技术解决方案
3.1 IPv6地址技术
IPv6拥有巨大的地址空间,同时128 bit的IPv6的地址被划分成两部分,即地址前缀和接口地址。与IPv4地址划分不同的是,IPv6地址的划分严格按照地址的位数来进行,而不采用IPv4中的子网掩码来区分网络号和主机号。IPv6地址的前64位被定义为地址前缀,地址前缀用来表示该地址所属的子网络,即地址前缀用来在整个IPv6网中进行路由。而地址的后64位被定义为接口地址,接口地址用来在子网络中标识节点。在物联网应用中可以使用IPv6地址中的接口地址来标识节点,在同一子网络下,可以标识264个节点。这个标识空间约有185亿亿个地址空间,这样的地址空间完全可以满足节点标识的需要。
另一方面,IPv6采用了无状态地址分配的方案来解决高效率海量地址分配的问题。其基本思想是网络侧不管理IPv6地址的状态,包括节点应该使用什么样的地址、地址的有效期有多长,且基本不参与地址的分配过程。节点设备连接到网络中后,将自动选择接口地址(通过算法生成IPv6地址的后64位),并加上FE80的前缀地址,作为节点的本地链路地址,本地链路地址只在节点与邻居之间的通信中有效,路由器设备将不路由以该地址为源地址的数据包。在生成本地链路地址后,节点将进行DAD(地址冲突检测),检测该接口地址是否有邻居节点已经使用,如果节点发现地址冲突,则无状态地址分配过程将终止,节点将等待手工配置IPv6地址。如果在检测定时器超时后仍没有发现地址冲突,则节点认为该接口地址可以使用,此时终端将发送路由器前缀通告请求,寻找网络中的路由设备,当网络中配置的路由设备接收到该请求,则将发送地址前缀通告响应,将节点应该配置的IPv6地址前64位的地址前缀通告给网络节点,网络节点将地址前缀与接口地址组合,构成节点自身的全球IPv6地址。
采用无状态地址分配之后,网络侧不再需要保存节点的地址状态,维护地址的更新周期,这大大简化了地址分配的过程,网络可以以很低的资源消耗来达到海量地址分配的目的。
反倾销是木质家具出口中比较常见的贸易争端,例如2005年中国卧室家具遭遇的反倾销案例,该案例始于2004年美国国内制造商诉讼中国卧室家具价格不公平,2005年美国商务部对中国卧室家具增收进口税达200%以上,对中美卧室家具贸易造成了严重影响。2015年美国贸易委员会启动了第二轮评估,评估对中国制造的卧室家具的高关税是否合理。
3.2 IPv6的移动性技术
IPv6协议设计之初就充分考虑了对移动性的支持。针对移动IPv4网络中的三角路由问题,移动IPv6提出了相应的解决方案。
首先,从终端角度IPv6提出了IP地址绑定缓冲的概念,即IPv6协议栈在转发数据包之前需要查询IPv6数据包目的地址的绑定地址,如果查询到绑定缓冲中目的IPv6地址存在绑定的转交地址,则直接使用这个转交地址为数据包的目的地址,这样发送的数据流量就不会再经过移动节点的家乡代理,而直接转发到移动节点本身。
其次,MIPv6引入了探测节点移动的特殊方法,即某一区域的接入路由器以一定时间进行路由器接口的前缀地址通告,当移动节点发现路由器前缀通告发生变化,则表明节点已经移动到新的接入区域。与此同时根据移动节点获得的通告,节点又可以生成新的转交地址,并将其注册到家乡代理上。
MIPv4与MIPv6转发比较如图1所示。
由图1可知MIPv6的数据流量可以直接发送到移动节点,而MIPv4流量必须经过家乡代理的转发。在物联网应用中,传感器有可能密集地部署在一个移动物体上,例如为了监控地铁的运行参数等,需要在地铁车厢内部署许多传感器,从整体上来看,地铁的移动就等同于一群传感器的移动,在移动过程中必然发生传感器的群体切换,在MIPv4的情况下,每个传感器都需要建立到家乡代理的隧道连接,这样对网络资源的消耗非常大,很容易导致网络资源耗尽而瘫痪。在MIPv6的网络中,传感器进行群切换时只需要向家乡代理注册,之后的通信完全由传感器和数据采集的设备之间直接进行,这样就可以使网络资源消耗的压力大大下降。因此,在大规模部署物联网应用,特别是移动物联网应用时,MIPv6是一项关键性的技术。
3.3 IPv6的服务质量技术
在网络服务质量保障方面,IPv6在其数据包结构中定义了流量类别字段和流标签字段。流量类别字段有8位,和IPv4的服务类型(ToS)字段功能相同,用于对报文的业务类别进行标识;流标签字段有20位,用于标识属于同一业务流的包。流标签和源、目的地址一起,惟一标识了一个业务流。同一个流中的所有包具有相同的流标签,以便对有同样QoS要求的流进行快速、相同的处理。
目前,IPv6的流标签定义还未完善。但从其定义的规范框架来看,IPv6流标签提出的支持服务质量保证的最低要求是标记流,即给流打标签。流标签应该由流的发起者信源节点赋予一个流,同时要求在通信的路径上的节点都能够识别该流的标签,并根据流标签来调度流的转发优先级算法。这样的定义可以使物联网节点上的特定应用有更大的调整自身数据流的自由度,节点可以只在必要的时候选择符合应用需要的服务质量等级,并为该数据流打上一致的标记。在重要数据转发完成后,即使通信没有结束节点也可以释放该流标记,这样的机制再结合动态服务质量申请和认证、计费的机制,就可以做到使网络按应用的需要来分配服务质量。同时,为了防止节点在释放流标签后又误用该流标签,造成计费上的问题,信源节点必须保证在120 s内不再使用释放了的流标签。
在物联网应用中普遍存在节点数量多,通信流量突发性强的特点。与IPv4相比,由于IPv6的流标签有20 bit,足够标记大量节点的数据流,同时与IPv4中通过五元组(源、目的IP地址,源、目的端口、协议号)不同,IPv6可以在一个通信过程中(五元组没有变化),只在必要的时候数据包才携带流标签,即在节点发送重要数据时,动态提高应用的服务质量等级,做到对服务质量的精细化控制。
当然IPv6的QoS特性并不完善,由于使用的流标签位于IPv6包头,容易被伪造,产生服务盗用的安全问题。因此,在IPv6中流标签的应用需要开发相应的认证加密机制。同时为了避免流标签使用过程中发生冲突,还要增加源节点的流标签使用控制的机制,保证在流标签使用过程中不会被误用。
3.4 IPv6的安全性与可靠性技术
首先,在物联网的安全保障方面,由于物联网应用中节点部署的方式比较复杂,节点可能通过有线方式或无线方式连接到网络,因此节点的安全保障的情况也比较复杂。在使用IPv4的场景中一个黑客可能通过在网络中扫描主机IPv4地址的方式来发现节点,并寻找相应的漏洞。而在IPv6场景中,由于同一个子网支持的节点数量极大(达到百亿亿数量级),黑客通过扫描的方式找到主机难度大大增加。
在IP基础协议栈的设计方面,IPv6将IPSec协议嵌入到基础的协议栈中,通信的两端可以启用IPSec加密通信的信息和通信的过程。网络中的黑客将不能采用中间人攻击的方法对通信过程进行破坏或劫持。同时,黑客即使截取了节点的通信数据包,也会因为无法解码而不能窃取通信节点的信息。
同时,由于IP地址的分段设计,将用户信息与网络信息分离,使用户在网络中的实时定位很容易,这也保证了在网络中可以对黑客行为进行实时的监控,提升了网络的监控能力。
在另一个方面,物联网应用中由于成本限制,节点通常比较简单,节点的可靠性也不可能做得太高,因此,物联网的可靠性要靠节点之间的互相冗余来实现。又因为节点不可能实现较复杂的冗余算法,因此一种较理想的冗余实现方式是采用网络侧的任播技术来实现节点之间的冗余。
采用IPv6的任播技术后,多个节点采用相同的IPv6任播地址(任播地址在IPv6中有特殊定义)。在通信过程中发往任播地址的数据包将被发往由该地址标识的 “最近”的一个网络接口,其中“最近”的含义指的是在路由器中该节点的路由矢量计算值最小的节点。当一个“最近”节点发生故障时,网络侧的路由设备将会发现该节点的路由矢量不再是“最近”的,从而会将后续的通信流量转发到其他的节点,这样物联网的节点之间就自动实现了冗余保护的功能,而节点上基本不需要增加算法,只需要应答路由设备的路由查询,并返回简单信息给路由设备即可。
4 结束语
IPv6具有很多适合物联网大规模应用的特性,但目前也存在一些技术问题需要解决,例如,无状态地址分配中的安全性问题,移动IPv6中的绑定缓冲安全更新问题,流标签的安全防护,全球任播技术的研究等。虽然IPv6还有众多的技术细节需要完善,但从整体来看,使用IPv6不仅能够满足物联网的地址需求,同时还能满足物联网对节点移动性、节点冗余、基于流的服务质量保障的需求,很有希望成为物联网应用的基础网络技术。