葛卫民,赵冬雪,邱胜男,罗咏梅
(天津大学计算机科学与技术学院,天津 300072)
无线Ad hoc网络是一种基于无线通信技术的特殊网络,网络中每个节点都具有路由的存储转发功能.它具有无中心、自组织、多跳路由、动态拓扑等特点,这些特点使 Ad hoc网络中的丢包原因呈现多样化.容易出错的无线信道、MAC层的竞争、节点移动造成的路由失效、网络拥塞等原因均会导致传输控制协议(transmission control protocol,TCP)数据包丢失[1].然而,目前广泛使用的 TCP协议是针对链路传输错误率低的有线网络设计的,它不区分网络拥塞、路由失效以及无线链路错误造成的数据包丢失,而是把所有的数据包丢失都看成是网络拥塞引起的,从而错误地启动拥塞控制机制,造成拥塞窗口的减小和不必要的重传,导致吞吐率下降[2].因此,TCP协议不能很好地适应无线移动Ad hoc网络的特点.
目前,针对无线Ad hoc中TCP性能问题的改进方案主要可分为单层方案和跨层方案两类.无论哪一种方案,依据可用带宽信息调节 TCP在源端的发送速率都是改进 TCP性能的一种有效方法.CRP[3]、TCP-Westwood[4]、TCP-Door[5]等单层改进方案是基于Ad hoc网络自身的特点,对 TCP/IP协议栈中的MAC层、网络层或传输层中的一层进行修改以提高TCP协议的性能.TCP-Door[5](TCP detect of outof-order and response)把包是否有序作为区分拥塞丢包和移动丢包的依据并以此来调整 TCP源端的行为.TCP-Westwood[4]在传输层对当前的可用带宽进行估计,根据可用带宽调整拥塞窗口和慢启动阈值.CRP[3](congestion adaptive routing protocol)在网络层主动防止拥塞事件的发生,而不是等到传输层拥塞控制机制检测到拥塞发生再被动地进行处理.但是,Ad hoc网络的特点主要表现在MAC层和物理层上,在优化Ad hoc网络下TCP的性能时,如果跨过这些底层的信息,很难得到较好的优化方案.由于无线Ad hoc网络环境自身的特点增强了协议层之间的相关性,近年来,通过跨层交互来改进 TCP性能成了研究的趋势,TCP-Feedback[6]、C3TCP[7]、CHCC[8]等跨层方案都得到了较好的效果.TCP-Feedback[6]是一种基于网络层反馈信息的跨层机制,这种方案通过传输层与网络层的交互,了解网络层的路由状态,利用网络层的反馈信息调整 TCP的传输状态.C3TCP[7](cross-layer congestion control for TCP)也是利用下层反馈信息的跨层方案.此方案的主要思想是在MAC层对当前传输路径的可用带宽进行估计,包括带宽和延迟信息,进而调整TCP的发送速率.这种方案更适合Ad hoc网络的特点.但是,它忽略了 MAC层重传所需的时间,因此,在带宽和延迟估计上不是很准确,会使估计值过高,使得TCP的性能不够稳定.
笔者提出了一种提高无线 Ad hoc网络环境下TCP协议性能的改进方案,即无线 Ad hoc网络基于MAC层带宽延迟估计的 TCP拥塞控制方法(BDETCP:TCP congestion control using bandwidth and delay estimation under wireless Ad hoc network).该方法借鉴了C3TCP的带宽估计方法,即在MAC层逐跳估计可用带宽和延迟进而得到端到端可用带宽和延迟的方法.但是在两方面进行了改进:①在计算单跳延迟时,提出的方法包含了 MAC层协议重传机制所引入的延迟,而 C3TCP在计算单跳延迟时没有计算这部分延迟,因此,本方案的估计结果更加准确;②在拥塞控制策略上进行了改进,C3TCP只在发生丢包时,利用估计到的带宽延迟信息调整拥塞窗口和阈值,而本文的方案在此基础上还增加了一种在没有丢包的情况下动态调整拥塞窗口和阈值的方法,增强了TCP对网络状态变化的适应性,从而有效提高了Ad hoc网络的传输性能.
BDE-TCP主要涉及到网络协议栈的MAC 层和传输层,其主要思想是在MAC 层对当前的可用带宽进行估计,通过跨层交互机制将得到的带宽和延迟信息反馈给传输层,传输层源端根据当前的网络状态调整其发送速率.该方案有 3个组成部分:①MAC层带宽延迟估计;②跨层信息交互机制;③改进的 TCP拥塞控制方法.其中,MAC层带宽延迟估计是整个方案的基础和核心.
在 MAC层对带宽延迟进行估计的目的是要得到端到端传输路径上的可用带宽和数据包的往返延迟,进而计算出传输路径的带宽延迟积,作为 TCP发送端调整发送速率的依据.根据文献[8]提出了一种估计端到端可用带宽的方法,即逐跳估计可用带宽,然后将带宽最小的那一跳的带宽作为路径的可用带宽,每跳延迟之和作为路径上包的传输延迟.显然,该方法的关键是如何估计每跳的带宽和延迟.
目前,IEEE 802.11 MAC协议是无线Ad hoc网络链路层使用的主流协议,本文中的方法是针对该协议的DCF工作模式而提出的.
假设在 MAC层传输的数据包的长度是Packet_len,单跳传输这个数据包所需的时间是 T,那么就可以计算出单跳的可用带宽BWE,即
考虑节点与节点之间的竞争,以及节点内部流与流之间的竞争,可知单跳延迟应该包括排队延迟 Tq,获得媒体接入所需的时间 Tc,以及传输延迟 Tr.所以总的单跳延迟时间为
传输延迟Tr的计算为
式(3)中的SIFS和DIFS分别表示优先级帧间隔和分散帧间隔.式(4)和式(5)中的PLCP是物理层对数据包的封装;MAC是链路层对数据包的封装;Basic_rate为 PLCP头部的发送速率;Data_rate为普通数据域的发送速率.
式(2)中的Tc是从MAC层队列取出并开始处理该数据包时开始,一直到 RTS/CTS完成接入控制的时间.考虑MAC层的多次重传,MAC层需要定义一个计时器,分两部分计算 Tc的时间:①数据包从队列中取出到获得信道使用权准备发送数据的这段时间;②数据发送后,计时器重新开始计时,一直到成功接收该数据包的 MAC层 ACK确认时,从该计时器中取出的时间.如果传输该数据包共进行了 n次信道竞争,那么第②部分时间就是n-1次重传竞争信道需要的时间.每一次将数据发送到媒介上之前,都需取出该计时器的值,将其累加到信道竞争时间 Tc上,一直到收到MAC层ACK确认或超过重传次数限制为止.这样就解决了数据包重传带来的带宽和延迟估计不准确的问题.
有了单跳带宽和延迟的计算方法后,就可以估计整个传输路径的带宽和延迟.在正向传送的过程中,转发数据包的节点计算本节点处单跳的带宽和延迟,之后将延迟累加并存入到包头,将新估计的带宽与包头中原有的带宽两者的较小值重新存入包头中.在接收端,将正向传输过程中估计的带宽和延迟存入TCP的ACK头部,由ACK带回到发送端.同样,在反向传输时,转发该 ACK的节点将修改包含 ACK包的数据帧中的延迟信息.
TCP的 ACK回到发送端时会携带正向传输的带宽延迟和反向传输的延迟信息,利用这些信息可以计算出带宽延迟积 BDP,BDP能够反映出网络当前所能提供的最大容量,即路径带宽大小,同时对于发送端来说,其值就是最佳窗口大小的比特数[9].
BDE-TCP的总体结构如图1所示.它包括 3个组成部分:对IEEE 802.11,MAC层协议的扩展,完成MAC层单跳的带宽延迟估计;设计跨层交互机制,辅助MAC层完成带宽延迟估计,提供TCP与MAC层间信息的交互;对 TCP拥塞控制方法进行调整,使TCP能够适应无线Ad hoc网络的特点,提高TCP的性能.
图1中:带有“a”的是跨层交互机制内的交互;带有“b”的是跨层交互机制与外部的交互.1为MAC层估计的单跳带宽延迟信息;2为从 MAC头部读出的原带宽延迟信息;3为向MAC头部写入的新带宽延迟信息;4为向TCP的ACK数据包中写入的带宽延迟信息;5为调整 TCP拥塞控制的信息;6为丢包事件.
图1 系统结构示意Fig.1 Structure of system
实现 MAC层的带宽延迟估计,需要对MAC层协议和TCP协议进行扩展.
为了使数据包能够携带带宽延迟信息,需要在MAC层头部扩展出两个位,如图2所示.
图2 扩展后的MAC层头部Fig.2 Expanded head of MAC frame
图2 中:BWE 为 unsigned short int,占 16 bits;delay 为 unsigned short int,占 16 bits;其中,带宽信息BDE的单位为kb/s,延迟的单位为µs.返回到接收端后,计算带宽延迟积时再将单位转换回bit/s.
同时,为了完成带宽延迟估计,数据包到达接收端后,对正向的带宽和延迟信息需要由 TCP的 ACK包带回给发送端.因此,需要利用TCP的数据包头部的选项字段储存正向的带宽延迟信息,如图3所示.
图3 扩展后的TCP头部Fig.3 Expanded head of TCP segment
跨层交互机制参考了文献[10]中提出的 ECLAIR体系结构,将跨层部分与现有的TCP/IP协议层分离,使跨层交互变得更加简单,并且更有效率.
跨层模块只涉及到TCP层与MAC层之间信息的共享,其主要任务是完成信息处理和交互的功能.
(1)在网络的中间节点(包括接收端)处,MAC层在收到数据包时,先交给跨层模块,跨层模块取出带宽和延迟信息并存储,同时记录此项信息对应的MAC帧.MAC层得到数据包并对当前节点处进行带宽延迟估计后,请求跨层模块取出该数据包到达时携带的带宽和延迟信息,之后继续做其他处理.
(2)在接收端,节点将数据包头部的带宽和延迟信息取出,交给跨层模块,当 TCP层对该数据包发出ACK时,跨层模块将正向的带宽和延迟信息存入TCP的ACK包头部.
(3)在发送端,跨层模块从TCP层的ACK头部取出正向带宽和延迟信息,从 MAC头部取出反向延迟信息,计算带宽延迟积,定时向TCP层发出控制信息.
(4)在发送端检测出丢包事件时,跨层模块设置拥塞窗口和慢起动阈值.
为了实现 MAC层的带宽延迟估计,并将其传回到 TCP发送端,以实现对TCP发送端发送速率的控制,在 TCP发送端、中间节点和 TCP接收段都需要对估计的带宽延迟信息进行处理.
1)中间节点对 MAC层估计的带宽延迟信息的处理
中间节点在接收到数据包后,会请求跨层模块进行处理.跨层模块从MAC帧头部取出带宽和延迟信息,再从IP包和TCP数据包的头部取出源IP地址、目的 IP地址、源端口号、目的端口号以及包的序列号,将这些信息存入新创建的节点中,同时,在节点中记录本节点的创建时间.最后将该节点插入到链表的尾部.
当节点竞争到信道后,准备要发送数据包时,会请求跨层模块来获得对应的旧的带宽延迟信息.此时,跨层模块用该数据包中的源 IP地址、目的 IP地址、源端口号、目的端口号以及包的序列号等信息作为关键字在链表中查找,返回查找到的指向该节点的指针,在 MAC层更新完带宽延迟信息后,会将该节点删除.
遇到重传的情况时,由于 IEEE 802.11,MAC协议采用了自动重传机制,在 MAC层没有收到发送帧的ACK确认帧时不会将数据包从队列中删除,因此,需重传的数据包中已存在带宽和延迟信息,只需要根据重传情况更新[11].
图4给出了MAC层带宽延迟估计流程图.
图4 带宽延迟估计流程Fig.4 Flow chart estimation of bandwidth delay
2)TCP接收端对 MAC层估计的带宽延迟信息的处理
当 TCP接收端在 MAC层收到数据包时,将MAC帧头部的带宽和延迟信息取出,交给跨层模块,并存入一个节点信息包括源 IP地址、目的 IP地址、源端口号、目的端口号、包序列号、带宽、延迟等信息的链表中.当TCP接收端对该数据包发出ACK时,TCP会请求跨层模块将正向的带宽和延迟信息存入TCP的 ACK包头部,实现将带宽和延迟信息传回到TCP 发送端[12].
3)TCP发送端对TCP的ACK包带回的带宽延迟信息的处理
当 TCP发送端的 MAC层收到含有 TCP的ACK包的数据帧时,首先由跨层模块从MAC层数据帧头部和TCP的ACK包头部取出带宽延迟信息,并计算本跳的延迟delay和带宽bandwidth,之后计算带宽延迟积new_bdp,计算过程为
其中:th是TCP数据包的头部;mh是MAC帧头部.
得到新的带宽延迟信息后,用新得到的带宽延迟积new_bdp平滑旧的带宽延迟积bdp
其中 delta是带宽延迟积的平滑系数,在这里取值为0.8.
调整 TCP窗口和阈值的方法主要有两种:动态调整和静态调整.动态调整是指,定时地根据当前的网络状况调整 TCP的拥塞窗口和慢启动阈值;静态调整是指,当检测到丢包事件才会调整 TCP的拥塞窗口和慢启动阈值[13].把这两种方法相结合,调整后TCP的状态转换如图5所示.
图5 调整后的TCP状态转换示意Fig.5 TCP state transition diagram after adjusted
1)静态调整算法
当 TCP发生丢包时,TCP请求跨层模块处理丢包事件,此时,跨层模块设置窗口和阈值的策略与TCP当前所处的状态无关,而与 TCP检测到丢包事件的方法有关.
如果是超时检测出的丢包事件,不能准确地区分丢包原因,因此把超时的情况都看成是网络拥塞.这时,通过BDP计算出相应的窗口大小wnd,将慢启动阈值设置为 wnd,将窗口设置为 1,重新开始慢启动过程.
如果是重复 ACK检测出的丢包事件,则说明已经有数据包离开了网络,并且不再占用网络的带宽资源.因此,将慢启动阈值设置为 wnd,将窗口设置为当前窗口与 wnd中的较小值,并根据当前拥塞窗口和慢启动阈值的关系来确定TCP状态.
伪代码表示的静态调整算法为
wnd_=BDP/segment_size;//将带宽延迟积转化成理想发送窗口大小
2)动态调整算法
拥塞窗口和慢启动阈值的动态调整由跨层模块的定时器触发.定时器超时后,通过 BDP计算出相应的窗口大小 wnd,然后用 wnd调整拥塞窗口和慢启动阈值.
若当前 TCP处于慢启动状态,此时拥塞窗口cwnd比慢启动阈值 ssthread小.如果 cwnd比 wnd小,说明传输路径上还可以容纳更多的数据包,此时,对拥塞窗口不做调整,将慢启动阈值设为 wnd.如果cwnd不小于 wnd,则将拥塞窗口和慢启动阈值降低为 wnd,这样 TCP就从原来的慢启动过程进入以wnd为阈值的线性增长过程.
若当前 TCP处于拥塞避免状态,此时拥塞窗口cwnd比慢启动阈值 ssthread大.如果 cwnd不大于wnd,这时慢启动阈值也一定小于 wnd,则对拥塞窗口不再作任何调整,只将慢启动阈值设置为 wnd.如果 cwnd比 wnd大,将窗口和慢启动阈值都降低为wnd,相当于降低了数据的发送速率,然后以一个新阈值重新开始线性增长.
伪代码表示的动态调整算法为
wnd_=BDP/segment_size;//将带宽延迟积转化成理想发送窗口大小
if(cwnd_<wnd_){//拥塞窗口小于理想发送窗口
ssthresh_=wnd_;
}
else{//拥塞窗口不小于理想发送窗口
cwnd_=wnd_;
ssthresh_=wnd_;
}
使用NS2仿真工具对TCP改进方案进行性能评价.仿真场景分为静态场景和动态场景两类.
静态场景包括5种.前4种场景如图6所示,其中场景a、b中的相邻节点之间的距离为100,m.场景c、d中,相邻节点之间的距离为 150,m.场景 e为随机分布场景,50个节点分布在 1,000,m×500,m的矩形区域内,节点随机分布,所有节点都静止不动.网络中有5条随机选取的TCP连接.
动态场景是在 1,000,m×500,m的矩形区域随机设置了50个节点.使用了4个不同的平均移动速度:1,m/s、5,m/s、10,m/s、20,m/s.节点移动的停留时间都设置为0,即节点将不停地随机移动.
在上述两种仿真场景下,对传统的 TCP(TCP Reno)和 BDE-TCP的性能进行对比.应用层采用典型的 FTP业务.性能评价指标使用平均吞吐率和平均慢启动次数.
图6 静态仿真场景Fig.6 Static simulation scenario
在各场景下测得的吞吐率如图 7所示.仿真结果显示,相对于TCP,BDE-TCP在各场景下的性能都有所提升,总吞吐率分别提高了14.8%、12.4%、9.7%、6.2%、8.6%.
图7 静态场景下的吞吐率Fig.7 Throughput in static scenario
图8给出了各静态场景中的平均慢启动次数.BDE-TCP在各场景下的平均慢启动次数都降低了一定的幅度,一般在 10%~25%.这可以说明调整后的 TCP拥塞控制方法更能够适应当前网络的状态,进而说明了本方案在 MAC层进行带宽延迟估计的准确性更高.
图8 静态场景下的慢启动次数Fig.8 Slow-start times in static scenario
由仿真结果可知,提出的 MAC层带宽延迟估计方案可以更准确地计算当前传输路径中的可利用的资源,利用带宽延迟积动态的调整窗口,避免了 TCP一味地增加拥塞窗口来探测网络容量直到丢包发生为止.比较所有的静态场景,数据流分布越复杂的场景,BDE-TCP提高的吞吐率的幅度越小,产生这一结果有两种可能性:①信道的可利用带宽较小,所能提高的信道利用率也就相对较小;②在信道竞争较强的区域,丢包频繁发生,导致估计出的带宽延迟信息的准确性也会受到影响.
图9和图10分别给出了动态场景下的吞吐率和平均慢启动次数.
图9 动态场景下的吞吐率Fig.9 Throughput in dynamic scenario
由图9可以看出,在动态场景下,BDE-TCP的平均吞吐率提高了 8%.节点移动速度越高,吞吐率的提升越小.这是由于在动态场景下,随着节点移动速度加快,移动性的丢包增加,存有带宽延迟信息的ACK无法到达数据包的发送端,带宽延迟估计算法不能准确测量到当前的可用带宽,因而不能根据当前的网络状况,对TCP拥塞进行有控制的调整.
由图10可以看出,BDE-TCP的平均慢启动次数减少了10%到20%,减小的幅度也比静态场景下的要少.在动态场景下,由于节点的移动会导致链路的中断,造成了移动性的丢包,而在移动性丢包较多的情况下,MAC层没有足够的带宽延迟信息来对当前网络的处理能力进行估计,导致了对 TCP拥塞窗口和慢启动阈值的设置不准确,影响了改进效果.
图10 动态场景下的慢启动次数Fig.10 Slow-start times in dynamic scenario
利用跨层交互的思想提出了一种提高无线 Ad hoc网络环境下 TCP协议性能的改进方案 BDPTCP,并利用 NS2仿真工具实现了该方案.仿真结果表明,该方案可以准确地估计出当前网络的可用带宽和数据包在传输路径上的往返延迟,利用估计的带宽和延迟信息能够把 TCP的拥塞窗口限制在一个合理的范围内,既可以充分利用多变的网络可用带宽传输尽可能多的数据包,保证了网络资源的利用率,又可以避免盲目地向网络中注入大量的数据包而引起的网络拥塞,减少了不必要的数据包重传,使Ad hoc网络的性能明显提高.通过仿真方法在几种典型的场景下验证了 BDP-TCP的有效性,下一步将针对大规模的复杂场景进行仿真实验,特别是通过实验床实验进一步验证该方案的有效性.
[1] Corson S,Macker J.RFC 2501. Mobile Ad hoc Networking(MANET):Routing Protocol Performance Issues and Evaluation Considerations[S]. http://www.rfceditor.org/rfc/rfc2501.txt,1999-01.
[2] Jain A,Pruthi A,Thakur R C. TCP analysis over wireless mobile Ad hoc networks[C]//Proceedings of IEEE International Conference on Personal Wireless Communications. New Delhi,India,2002:95-99.
[3] Harish R,Tran D A. Congestion adaptive routing in Ad hoc networks[J]. IEEE Transactions on Parallel and Distributed Systems,2006,17(11):1294-1305.
[4] Casetti C,Gerla M,Mascolo S. TCP westwood:Bandwidth estimation for enhanced transport over wireless links[C]//Proceedings of ACM MOBICOM. Rome,Italy,2001:287-297.
[5] Wang Feng,Zhang Yongguang. Improving TCP performance over mobile Aad-hoc networks with out-of-order detection and response[C]// Proceedings of ACM MOBICOM. Long Beach,USA,2002:6-66.
[6] Chandran K,Raghunathan S,Venkatesan S,et al. A feedback based scheme for improving TCP performance in Ad hoc wireless networks[C]//Proceedings of IEEE Personal Communications.Amsterdam,Netherlands,2001:34-39.
[7] Kliazovich D,Granelli F. Cross-layer congestion control in Ad hoc wireless networks[J]. Ad hoc Networks,2006,4(6):687-708.
[8] Wang Xuyand,Perkins D. Cross-layer hop-by-hop congestion control mobile Ad hoc networks[C]//Proceedings of IEEE Communications Society Subject Metter Experts.Las Vegas,NV,USA,2008:2456-2461.
[9] Stevens W R. TCP/IP Illustrated[M]. Reading MA:Addison Wesley,1994.
[10] Raisinghani V,Lyer S.ECLAIR:An efficient cross-layer architecture for wireless protocol stacks[C]// Proceedings of Word Wireless Congress.San Francisco,USA,2004:229-234.
[11] Dovrolis C,Ramanathan P,Moore D. What do packet dispersion techniques measure[C]// Proceedings of IEEE INFOCOM.Anchorage,Alaska,USA,2001,2:905-914.
[12] Jain M,Dovrolis C. Pathload:A measurement tool for end-to-end available bandwidth[C]//Proceedings of Passive and Active Measurement Workshop(PAM).Fort Collins,2002.
[13] Jain M,Dovrolis C. End-to-end estimation of the available bandwidth variation range[C]//Proceedings of ACM SIGMETRICS Conference.Banff,Canada,2005:537-549.