文献标识码:A
文章编号: 0258-7998(2013)10-0102-03
TCP Westwood(TCPW)协议[1]是专门针对无线网络应用环境而提出的传输控制协议,它是在TCP Reno协议的基础上修改而来的。TCPW通过估算网络的可用带宽,对拥塞窗口(cwnd)和慢启动阈值(ssthresh)进行优化控制,在一定程度上改善了传统TCP协议在发生数据丢包时所导致的网络带宽利用率下降的问题[2]。然而,TCPW算法无法区分网络丢包的原因,在高误码率、频繁移动的无线网络环境下,往往会由于较多的无线丢包而频繁调用网络拥塞控制算法,降低了网络带宽利用率[3]。
本文提出一种基于TCPW协议的改进拥塞控制算法TCPW-J,该算法根据当前网络的带宽估计值的变化情况来推断网络丢包发生的最可能原因,使网络控制协议能够对拥塞情况作出更加准确的判断,减少在不必要情况下调用网络拥塞控制算法的次数。经过分析和仿真实验的验证,表明TCPW-J能够较为有效地判断丢包的原因,提高了TCPW算法对网络带宽的利用率。
1 TCPW-J算法
1.1 设计思想
网络拥塞是一种持续过载的网络状态,网络拥塞会导致数据包丢失、时延增加、吞吐量下降等现象[4]。基于这些因素,在网络拥塞状态下得到的带宽估计值(BWE)比正常情况下的要小很多。另一方面,由于无线网络误码率较高等原因而导致的数据丢包具有偶然性,并不影响往返时延(RTT),因此发生无线丢包时,所计算出来的BWE值相对于正常情况下并不会产生较大变化。
基于以上事实和分析,提出的TCPW-J算法对BWE进行持续观测,得到TCP连接在一段时间内的BWE变化范围,并划分网络拥塞情况等级。根据计算的网络拥塞等级,推断当前网络的拥塞情况,并做出恰当的调整。
1.2 算法实现
TCPW-J算法持续计算BWE并记录其最大和最小值,得到BWE的变化范围,即:
结合式(1)、式(2),可以看出A∈[0,1]表示了当前带宽估计值与历史变化情况相比的大小程度,间接地反映了网络的拥塞情况。式(2)中的A越小,表明当前网络带宽已经处于较好的情况,网络拥塞的可能性较小或趋于稳定;反之,A越大则表明网络拥塞的可能性越大或程度越高。这里将A划分成三个等级,其等级L越高则表明拥塞可能性越大。
L=1 A∈[0,0.25]2 A∈(0.25,0.5]3 A∈(0.5,1]
根据上述划分的拥塞等级范围,对TCPW的拥塞控制算法进行改进。
新的拥塞控制算法用伪代码描述如下:
(1) 收到新的ACK之后
if (L==1||L==2)
/*网络拥塞可能性较小或轻度拥塞*/
if(cwnd>ssthresh) /*拥塞避免*/
cwnd=cwnd+1/cwnd;
else /*慢启动*/
cwnd=cwnd+1;
endif
else /*网络拥塞可能性较大*/
ssthresh=(BWE*RTTmin)/seg_size;
if(cwnd>ssthresh)
cwnd=cwnd+(1/cwnd)/2;
/*减慢cwnd增长速度*/
else
cwnd=cwnd+1;
endif
endif
(2) 收到重复的ACK之后
if(3 DUPACKs are received)
if (L==1) /*网络拥塞可能性较小*/
快速重传;
if(cwnd>ssthresh) /*拥塞避免*/
cwnd=cwnd+1/cwnd;
else /*保持慢启动*/
cwnd=cwnd+1;
endif
else if(L==2) /*网络拥塞呈现拥塞趋势*/
快速重传;
快速恢复;
else if(L==3) /*网络拥塞可能性较大*/
ssthresh=(BWE*RTTmin)/seg_size;
if(cwnd>ssthresh)
cwnd=ssthresh;
endif
endif
endif
2 仿真结果与分析
采用OPNET Modeler 14.5仿真平台对New Reno、TCPW以及TCP-J算法在混合链路上进行仿真,如图1所示。
在图1中模拟了一个作为数据源的服务器子网(Server Subnet)、一个数据访问子网(Client Subnet)以及IP云(IP Cloud)作为两者之间传输数据的混合链路。配置FTP服务用于模拟连续的TCP数据传输,FTP文件大小为50 MB,数据包延迟为0.1 s,两个子网之间是瓶颈链路,最大传输速率为10 Mb/s,模拟时间为12 min。
2.1不同误码率下的吞吐量分析
表1中给出了三种算法分别在不同误码率环境下的吞吐量统计结果。可以很清晰地看到,在误码率较高的环境下,TCPW-J的吞吐量明显高于New Reno和TCPW算法。而且随着误码率的提高,TCPW-J相对于TCPW的吞吐量的提升更加明显,其原因在于TCPW-J算法能够有效地区分拥塞丢包和无线丢包,减少了不必要的拥塞窗口调整次数,提高了带宽的利用率。
在测试友好性的过程中,建立两个不同的TCP流,分别运行New Reno和TCPW-J协议。表2给出了这两种算法在不同误码率环境下的平均吞吐量对比结果。从结果中可以看出,TCPW-J对New Reno是友好的。
本文在TCPW的基础之上提出了改进算法TCPW-J,根据带宽估计值BWE的变化情况划分拥塞等级,以推测最可能导致丢包的原因,区分无线丢包和拥塞丢包。仿真实验结果表明,TCPW-J算法在误码率较高的无线网络环境下,不仅表现出了更高的网络带宽利用率吞吐量,而且保持了良好的公平性和友好性。
参考文献
[1] CLAUDIO C, MARIO G, SAVERIO M, et al. TCP westwood: end-to-end congestion control for wired/wireless networks[J]. Wireless Networks Journal, 2002(8):467-469.
[2] LOW SH, PAGANINI F, DOYLE J C. Internet congestion control [J]. IEEE Control Systems Magazine, 2002,22(1):28-43.
[3] CHEN J, PAGANINI F, WANG R. Fluid-flow analysis of TCP westwood with RED[A]. Proceedings of the IEEE GLOBECOM 2003, 2003:4064-4068.
[4] (美)STEVENS W R著.TCP/IP详解,卷1:协议[M]. 范建华,等译. 北京:机械工业出版社,2000:226-243.
[5] JAIN R, CHIU D, HAWE W. A quantitative measure of fairness and discrimination for resource allocation in shared systems[Z]. DEC Research Report TR-301.1984.