重庆邮电学院 重庆400065
摘 要 本文分析了在ad hoc网络中TCP协议的主要缺陷,并对目前提出的几种改进方案进行了比较分析,最后给出了结论和研究方向。
关键词 Ad hoc网络 TCP 网络拥塞 拥塞控制
1 引言
无线ad hoc网络是一种具有高度动态拓扑结构的网络。每一个无线ad hoc网络由一组移动节点组成,它们与传统的蜂窝技术的根本区别在于移动节点之间的通信是在没有固定基础设施(例如基站或路由器)支持的条件下进行的。
鉴于TCP/IP已经成为事实上的Internet标准协议栈,作为Internet扩展的无线ad hoc网络也必将采用它。然而,由于无线ad hoc网中的分组丢失主要由无线差错和节点移动性所致,而TCP将所有的分组丢失都归因于拥塞并启动拥塞控制和避免算法,所以若在无线ad hoc网中直接采用传统的TCP协议将可能导致端到端的吞吐量无谓降低。因此,分析TCP的性能并研究如何使其适应无线ad hoc网络环境就变得尤为重要。
2 ad hoc网络中TCP协议的主要缺陷
由于ad hoc网络存在着BER(Bit Error Rate)高、带宽低、移动性及能量有限等特点,使得原本为固定主机、有线网络设计的TCP协议在这种环境下出现了很多不适应的问题。
(1)缺乏有效的错误恢复机制。一旦检测出丢包,TCP便触发拥塞控制处理过程,首先重传未被确认的包,减小拥塞窗口从而降低发送速率;然后激活拥塞控制机制,包括超时时钟指数回退、减小慢启动阈值;最后进入拥塞避免阶段以确保拥塞得以解除。如果丢包是由于ad hoc网络的BER高或者节点移动造成的路由故障时发生的而不是网络的拥塞,那么TCP的这种错误恢复机制会导致协议性能下降,包括吞吐量的下降和延迟的增加
(2)ad hoc网络中有限的传输带宽。由于移动节点可用带宽往往较低,从而使得TCP源端的发送速率受到限制,使其用较小的拥塞窗口发送数据。在这种情况下,一旦有数据包丢失,源端就不能收到足够多的重复确认包从而触发快速重传,而只能通过超时机制恢复,因而降低了可用带宽的使用效率并且增加了延迟。
(3)由于缺乏有效的错误检测和恢复机制,TCP在ad hoc环境下的能量使用效率也不高。例如,当无线链路上发生了不频繁的随机短暂突发性错误时,TCP源端便降低其拥塞窗口,然后很保守地逐步增加拥塞窗口的大小。在拥塞窗口缓慢地膨胀过程中,无错(error-free)的传输机会便被浪费了,并且增加了通讯时间。而当错误持续时间较长(例如衰减信道、链路频繁的突发性错误、长时间的网络分割、网络拥塞)时,TCP源端尽管降低了其拥塞窗口大小,但仍然在尝试着发送数据,从而造成更多数据包的丢失。尽管吞吐量会有所增加,但是却消耗了更多的能量,降低了能量使用的效率。而在ad hoc网络中节点的能量关系到自身以及网络的寿命,要做到尽可能地低的能量耗费。
3 主要的几种改进方案
3.1 TCP-Feedback
TCP-Feedback是一种基于反馈的机制,TCP发送端收到中间节点传来的路由故障通知(Route Failure Notification,RFN),确定丢包是由路由故障而不是网络拥塞造成的。当收到RFN通知后,发送端认为当前到目的端没有路由可用,于是进入"snooze"状态,冻结所有和连接有关的变量如计时器和拥塞窗口的大小并不再发送任何数据。如果收到路由协议携带的路由重建通知(Route Re-establishment Notification,RRN)后,发送端认为到目的端已有可用路由,于是离开“snooze”状态,恢复中断前所有和连接有关的变量并开始发送数据。同时,设置了路由故障计时器防止发送端无限制地等待RRN通知。发送端一旦收到RFN通知,路由故障计时器就被触发。如果路由故障计时器到期仍未收到RRN,发送端就认为是由于网络拥塞造成的丢包,启动TCP拥塞控制机制。
在路由重建延迟较大的条件下,由于涉及到重传的次数较多,这种方案较之标准的TCP性能还是有所增强。但是用何种路由协议携带RFN和RRN信息可使TCP获得最佳性能,仍有待进一步的研究。
3.2 TCP-ELFN
在TCP-ELFN中,TCP同样要与路由协议交互,以获得路由故障的消息并采取相应的策略。一旦有中间节点检查到从发端到收端的路由故障后,该中间节点就向源节点发送显式链路故障通知(Explicit Link Failure Notification,ELFN),ELFN消息包括发送端和接收端的主机地址、端口以及TCP序列号,这样TCP就能区分丢包是由于路由故障(节点移动造成的)还是由于网络拥塞造成的。不过动态资源路由协议(DSR)中的路由故障消息需要修改成ELFN。ELFN类似于网络控制报文协议ICMP中的“主机不可到达”消息。
当发送端收到ELFN后,将TCP置为“stand-by”模式。在“stand-by”模式中,发送端向目的地定时发送探测包用以检查路由是否恢复并屏蔽TCP的计时器。收到ACK后,发端认为到收端已经有可用路由,于是TCP离开“stand-by”模式,恢复TCP的计时器的状态,同时以中断前的速率发送数据包。
在Ad hoc网络中节点的频繁移动导致DSR路由协议存在“无效路由”问题。比如,有节点向源端响应了“路由请求”消息,但是由于返回的路由涉及到的节点移走或者其中有链路中断,导致返回路由无效。发端如果不能迅速检查到返回路由已经失效,TCP由于接收不到ACK将进入拥塞退避状态。可见,“无效路由”问题会严重影响TCP的性能。对于TCP-ELFN中修改后的TCP性能,“无效路由”问题同样存在较大影响。另外,发送探测包的间隔和选用何种数据包作为探测包都值得进一步的研究。
这种方案比起标准的TCP性能还是有所增强,但是还需要进一步的研究,如选用其他的路由协议对TCP性能的提高是否会更好以及对于发送探测包的间隔应该会有更多、更合适的值。
3.3 固定RTO
这种方案的思想就是把任何连接中断都看作是瞬时的,这样出现路由故障可以迅速恢复,不用激起TCP指数退避机制以免造成不必要的长时间的恢复延迟。当连续两次重传都超时,源端认为路由出现故障,屏蔽TCP指数退避机制,同时以固定间隔而不是以指数逐渐增加的间隔重传数据包。
如果丢失的分组在第二次重传计时器(RTO)到期后仍未得到确认,发送端将RTO的值加倍,然后不断重传丢失的分组,但RTO的值不再变化将保持恒定直到路由恢复,重传的数据包得到确认。
研究表明,固定RTO用于按需路由算法可以使TCP性能获得显著的提高。尽管如此,固定RTO仅限于无线网络,对于将来和固定网络的融合不是很有利。
3.4 ATCP
前面的三种方案都需要对TCP协议进行修改,但ATCP可以避免这样的变动。这种方案只是在网络层和传输层之间插入一个中间层ATCP(Ad hoc TCP),ATCP负责监视网络状态,通过网络控制报文协议的“目的地不可达”消息或ECN机制的显式拥塞通知(Explicit Congestion Notification,ECN)分别判断网络分割或网络拥塞。当发送端收到三个重复的ACK,ATCP认为信道有损耗,将TCP置为“persist”模式并迅速从TCP缓存中重传丢失的分组。在收到下一个ACK后,TCP才能回复到正常状态;如果源端收到ICMP的“目的地不可达”消息,ATCP认为出现网络分割,同样将TCP置为“persist”模式,但是此时并不重传分组,直到链路重建后才将TCP恢复到正常状态;当源端收到表示网络拥塞的ECN,ATCP仅仅把ECN上传给TCP,由TCP激起拥塞控制机制。
ATCP同样可以提高TCP的性能。但是在该方案中假设源端总是可达的,这种假设在Ad hoc网络中很难满足,如果该假设不能很好地满足,那么发送端就收不到网络控制报文协议的“目的地不可达”消息,这样发送端会不断地重传分组而不是进入预期的“persist”模式,而且ECN机制会引起安全问题,这些不利因素都会影响到ATCP方案。
3.5 TCP DOOR
这个方案与前四个最大的不同在于不需要中间节点的参与。它的思想是在Ad hoc网络,节点的频繁移动可能导致收端收到无序的数据分组,无序的分组可能足以表明在网络内链路出现过故障。不仅仅是数据分组,发端同样也可能收到无序的ACK。TCP DOOR对于收发双方都能准确地检查到无序分组的交付,但是需要在数据分组和ACK中增加额外的排序信息。在TCP“选项”字段中,用一个字节选项表示ACK的排序信息,两个字节选项表示数据分组的排序信息。发送端每发送一个数据分组(不管是否是重传的分组),就对其排序信息中的流序列号增加一次,而标准的TCP不会增加重传数据分组的流序列号。这样,收端就可以准确地检查无序分组的交付并通过ACK中的特定比特告知发送端。每个重传的ACK,收端都会增加其排序信息中的流序列号,以便发送端了解自身发送分组(不管分组是否重传)的确切顺序。因此,这种方案为源端提供了可靠的双向数据流顺序的信息,使得TCP发送端可以采取相应的策略。
检查到无序分组的交付,TCP发送端有两种反应机制:1.临时屏蔽拥塞控制(temporarily disabling congestion),2.拥塞避免中的立即恢复(instant recovery during congestion avoidance)。前者认为无序分组是由于路由改变而不是网络拥塞造成的,不必激起TCP拥塞控制机制。因此当检查到无序分组后,发送端在一段时间内(T1)保持变量如RTO,拥塞窗口大小(cwnd)不变。对于后者,当检查到无序分组后,TCP发送端检查在前一段时间内(T2)是否激起过拥塞控制机制,如果是,发端将立即恢复到激起拥塞控制之前的状态,因为后者认为激起拥塞控制是由于链路临时中断而不是网络拥塞造成的。
总地来说,TCP DOOR能显著提供TCP的性能。同时响应机制中的拥塞避免中的立即恢复的性能要好于临时屏蔽拥塞控制,而且仅有发送端检测机制(即检测ACK的无序)就足够了。
在TCP DOOR方案中,假定无序分组是由于路由混乱造成的。这种假定仍有待进一步探究。
4 结论
上述介绍的几种方案都是认为丢包是由其他原因而不是由网络拥塞造成的,因此尽量避免TCP指数退避机制以提高TCP的性能。这几种方案各有优缺点,在一定程度上改善了Ad hoc网络中TCP的性能,但都存在一定的局限性。今后对TCP性能改善的研究还需要与路径不对称问题、节点的能源管理、与固定网络的融合以及安全性等问题结合考虑。
----《中国数据通信》