第5章
无线传感器网络传输层协议
5.1 无线传感器网络传输层协议概述
在OSI模型中,传输层是第四层,是整个协议的核心层,主要负责在源和目标之间提供可靠的、性价比合理的数据传输功能。为了实现传输层对上层透明、可靠的数据传输服务,传输层主要研究控制链路的流量和如何避免拥塞,保证数据能够有效、无差错地传输到目的节点。
与OSI模型类似,在无线传感器网络中,传输层能够实现节点之间和节点与外部网络之间的通信,主要负责将监测区域内的数据传送到外部网络,理想的传输层能支持可靠的信息传递并提供有效的拥塞控制,以此来延长无线传感器网络的生命周期。
传统的Internet主要采用TCP/IP协议,也有的采用UDP协议,其中UDP采用的是无连接的传输,虽然能够保证网络的实时性,时延非常小,但其数据丢包率较高,不能保证数据可靠传输,不适用于无线传感器网络,下面将详细讨论TCP协议。
TCP协议提供端到端的可靠数据传输,采用重传机制来确保数据被无误地传输到目的节点。但是由于无线传感器网络自身的特点,TCP协议不能直接用于无线传感器网络,原因如下。
(1)TCP协议提供的是端到端的可靠数据传输,也就是说,只提供从源节点到目的节点的数据交换,中间节点只能作为转发节点,没有数据处理能力。而无线传感器网络中存在大量的冗余信息,要求节点能够对接收到的数据包进行简单的处理(如融合、计算)后再转发,从而提升网络的性能,这种机制在TCP协议中会被当作丢包来处理,从而源节点会再次重发该数据包,造成能量的浪费和拥塞。
(2)TCP协议采用的三次握手机制,时间太长,过程也相当复杂。对于无线传感器网络来说,保证它的实时性是非常重要的,而且无线传感器网络中节点的动态性强,TCP没有相对应的处理机制。
(3)TCP协议对可靠性要求很高,要求所有的数据包都被传送到目的节点,否则就会重传,可靠性保证采用的是基于数据包的传输方式;而无线传感器网络中节点众多,数据包中包含了太多的冗余信息,进行简单处理后可能会减少数据包的数量,采用的是基于事件的可靠性,只要求目的节点接收到源节点发送的事件,可以有一定的数据包丢失或者删除。
(4)在网络中,反馈非常重要。TCP协议采用的ACK反馈机制,目的节点接收到数据包后,反馈一个ACK数据包来通知源节点已经成功收到数据包,在这个过程中需要经历所有的中间节点,时延非常大且能量消耗也特别大;而无线传感器网络中对时延的要求比较高,能量也非常有限。
(5)对于拥塞控制的无线传感器网络协议来说,有时非拥塞丢包是正常的,但是在TCP协议中,非拥塞的丢包会引起源端进入拥塞控制阶段,从而降低网络的性能。
(6)最后一点也最重要,在TCP协议中,每个节点都被要求有一个独一无二的IP地址,这在大规模的无线传感器网络中基本上不可能实现,也是没有必要的。无线传感器网络节点只需要处理好它与相邻节点之间的通信即可,也省去了要传输长地址的麻烦,节省了能量。
因此,无线传感器网络的传输层协议不能直接使用传统的TCP协议,而应该根据无线传感器网络应用的特点和网络自身的条件来设计自己的协议,归纳起来,主要包括以下几点。
1. 降低传输层协议的能耗
传统的传输层协议之所以不适用于无线传感器网络,其中一个重要的原因就是传统的传输协议需要消耗大量的能量,TCP协议采用三次握手协议,控制开销太大。无线传感器网络是大规模、分布式的网络,节点分布密集、价格低廉,能源不可替换。因此在无线传感器网络设计中,节省能量是首要考虑的因素,研究一种高效的传输协议对于延长网络的生命周期是非常有益的。
无线传感器网络有很多种降低能耗的方式,如节点周期性地睡眠或者数据融合等,而且能量效率与节点、睡眠机制和数据融合的联系也相当紧密。有一个好的拥塞控制机制的协议能够最大限度地节省能量,基于事件的可靠性保证在一定程度上也能够减少能源的消耗,因此在设计协议时,必须在综合考虑、权衡系统所需要的性能后,根据这三个指标来确定协议机制。
2. 进行有效的拥塞控制
在无线传感器网络中,观测区域内的节点感知到数据之后将数据发送给Sink节点,采用的是多对一传输模式,这样势必就会造成越靠近Sink节点的地方数据流越大,而节点的处理能力和存储能力是有限的,这样会造成部分数据包丢失而引发重传,导致进一步的拥塞,从而加重网络的负担,有时甚至会使整个网络瘫痪。我们通过进行有效的拥塞控制来提高网络性能,拥塞控制包括拥塞发现和拥塞避免两方面,拥塞发现一般通过以下两种方法来检测。
(1)根据队列缓存利用率来判断节点是否处于拥塞状态。例如,如果节点A的拥塞度设为0.5,节点中队列缓存拥塞度高于0.5则认为拥塞,若节点A中存储的数据包大小为N,队列长度为M,如果N/M>0.5,则判断该节点处于拥塞状态。一般来说,节点通过周期性地检测队列长度来计算队列拥塞度,并将此值包含在反馈信息中。
(2)根据信道空闲状态来判断是否拥塞。节点周期性地侦听信道,看看是否有数据在信道上传输,可采用这种最直接的方式来判断拥塞状态。
方法(1)只能对单个节点进行缓存利用率的测量,不能代表整个链路的拥塞度,具有一定的片面性。而方法(2)要求节点时刻保持侦听状态,这样势必会消耗大量的能量,对于能量有限的无线传感器网络来说,采用两种方法相结合的方式才是最好的,而现在的主流协议也正是采用这种方式。节点先检测队列缓存度,发现缓存度高之后再进行信道的侦听,这样能够保证效率,也能够减少能量的消耗。
检测到拥塞后,不同的协议也有不同的消除或缓解拥塞机制,其中用得最多的是拥塞反馈和数据路由的切换。简而言之,拥塞反馈是指节点检测到拥塞之后,就会给它的父节点发送一个包含拥塞控制信息的数据包,通知上游节点减缓或停止数据包的发送。数据路由的切换则是在节点检测到拥塞之后,另择一条最优的路径传输数据,从而减少拥塞节点的数据流,待拥塞解除后,恢复原最优路径继续传输数据。
3. 保证网络的可靠性
保证无线传感器网络的可靠性主要是通过发送数据的冗余信息和数据包的重传机制来完成的。众多节点检测到同一信息之后,发送包含同一事件的数据包,会有一定的冗余信息,即使有部分数据包丢失或者被删除之后还能够保证事件被可靠地传输到目的节点;另外一个就是数据包的重传,重传有三种机制,即ACK反馈重传、NACK反馈重传和IACK反馈重传,一般来说,节点首先将数据包复制之后保存在缓存中,若收到目的节点发回来的“成功发送”反馈信息,则将数据包删除,反之则重新发送数据包。
可靠性可以分为两种:数据包可靠性和基于事件的可靠性。TCP协议采用的就是基于数据包的可靠性度量,这种机制要保证所有的数据包都被目的节点无误地收到。而在无线传感器网络中可靠性保证虽然也分为这两种,但基于数据包的可靠性度量只是用在某些要求特别高的领域,如军事、战场等;对于一般的无线传感器网络来说,基于数据包的可靠性是没有必要的,因为大量的冗余信息允许一定的数据包丢失或者融合,并不要求所有数据包都可靠地传输,如温度、天气测量等,这种方式称为基于事件的可靠性度量。采用这种方式能够在一定程度上减少拥塞,降低节点消耗的能量。