杨晓萍,王 瑞,狄 特,牛 超
(吉林大学a.通信工程学院,长春130012;b.汽车仿真与控制国家重点实验室,长春130022)
传统TCP(Transmission Control Protocol)Veno[1]算法无法辨别数据包丢失的原因,用于无线网络传输层的TCP Westwood算法同样无法解决该问题。当丢失的数据包是由随机干扰引起时,误将其认为是网络发生了拥塞,进而盲目地启动拥塞控制机制。当无线网络环境较差时,频繁地减小拥塞控制窗口,使网络性能明显下降,吞吐量水平变低。针对无线网络自身所具有的特点,对TCP协议进行改进并提高拥塞控制性能成为目前研究的热点。
当前对无线网络TCP[2]的优化方案可以归纳为4种:TCP分段连接方案[3,4]、TCP的跨层合作方案[5]、TCP数据链路层方案[6]和TCP端到端的解决方案。这4种方案中对无线网络环境优化较为有效的是TCP端到端的传输层方案[7]。该方案在保证对其他层或中间路由器不加改动的情况下,只对TCP进行自身修改,使其能适应无线网络环境,不但部署简单,而且易于实现。TCP端到端的传输层方案 包 括 TCP Pacing、TCP Veno、TCP Vegas、TCP Westwood、TCP Probing 和 TCP SACK 等[8]。TCP SACK[9]算法在ACK(Acknowledgement)确认报头中增加SACK选项,通过SACK选项可使TCP发送方只发送丢失的数据而不用发送后续全部数据,从而提高了数据的传输效率;TCP Probing[10]在检测到有数据包丢失后进入探测阶段,探测时间由信道环境决定;网络处于拥塞的情况下,TCP Vegas在判断网络是否处于拥塞时用延迟作为标准,并对比网络实际传输速率与期望传输速率的差值,进而预测网络拥塞的发生;TCP Westwood[11,12]算法是在TCP Reno算法的基础上提出的用来解决无线网络中随机丢包的一种算法,它是一种基于速率的TCP拥塞控制算法,源端实时的检测和计算接收ACK速率的均值对网络中可用带宽进行预测。为解决TCP Westwood算法无法辨别无线随机错误丢包和网络拥塞丢包的问题,笔者对TCP Westwood算法进行了改进,提出一种改进算法Westwood-c。
Westwood算法在没有报文丢失的情况下按照经典的Reno[13]算法变化拥塞窗口Pcwnd,在TCP慢启动阶段及拥塞避免阶段分别采用指数增长和加性增长。在收到3个ACK或时钟超时时,意味着网络产生了传输错误或拥塞情况,这时Westwood算法利用带宽估计值Bbe对拥塞窗口及慢启动阈值进行设置[14]。
Westwood算法虽然遵守TCP端到端的设计原则,同时在一定程度上削弱了无线网络随机错误对带宽利用率的影响,但Westwood算法无法辨别是无线随机错误导致的数据包丢失还是网络拥塞导致的数据包丢失。最主要的是无线网络环境处在高误码率以及大延迟的情况下,Westwood算法会误认为是无线网络当中发生了拥塞情况,并频繁地使用拥塞控制机制,从而忽略网络中时延抖动和随机错误丢包情况,所以极大降低了网络利用率。
针对Westwood算法无法辨别网络拥塞和无线随机错误丢包问题,提出了Westwood-c改进算法。Westwood-c算法按照
在发送端不间断地对期望带宽Bexpected和实际带宽Bactual进行测算,其中Pcwnd是当前的拥塞窗口,Tminrtt是当前测得往返时间Trtt[15]的最小值。Tcrtt平滑处理后的值
改进算法Westwood-c在接收ACK的同时,会实时记录Trtt大小并累加到Tsumrtt中,同时将Trtt的累加次数Tcntrtt加1。再对Ddiff进行定义
当Trtt>Tminrtt时,可知链路缓存中存在积压报文,并将其积压数量设为N,通过式(3)与式(4)可得
从上述可知,缓存中的报文积压是产生Tcrtt与Tminrtt之间额外延时的主要原因。综上,得到
通过对比积压的报文数N和门限值β辨别网络目前的状态。当N<β时,可判定丢包是网络随机错误造成的;当N≥β时,可判定丢包是由网络拥塞引起的。据证明当β值为3时最为合理。
1)慢启动阶段。在Pcwnd<Pssthresh(慢启动阈值)时,Westwood算法以及Westwood-c算法均与Reno算法相同,保持指数增长。
2)加性增长阶段。当 Pcwnd>Pssthresh时,Westwood-c算法针对 Westwood算法进行了如下改进:当N<β时,在接收每个ACK报文时,对Pcwnd值的设置与原算法保持不变;为了保证网络处于高吞吐量的同时降低Pcwnd的增长速度,推迟出现网络拥塞的时间,当N≥β时,每接收两个ACK报文后,对Pcwnd的值进行设置:Pcwnd=Pcwnd+1/Pcwnd。
3)乘性减少阶段。在积压报文数N=3时,Westwood-c算法做了如下改进:当N<β时,报文丢失是由无线网络随机错误而引发的,则Pssthresh=Pcwnd;当N≥β时,网络拥塞是报文丢失的主要原因,且按照Westwood算法对Pcwnd值进行设置:(BbeTminrtt)/Spacketsize。由以上分析可知,Westwood-c算法主要通过验证N和β的值辨别报文丢失的原因并划分连接目前所处的阶段。Westwood-c算法的流程图如图1所示。
图1 Westwood-c算法流程图Fig.1 Flowchart of Westwood-c algorithm
下面通过NS-2网络仿真软件进行试验,对比分析Westwood和Westwood-c两种算法的吞吐量。
3.1.1 随机错误率固定时的吞吐量
仿真实验的拓扑如图2所示。在只有单一数据流的情况下,将随机错误率设置为10%。此时该链路的网络吞吐量主要由随机错误率决定。发送端S0经由路由器R0和R1向接收端S1发送采用TCP协议的FTP数据流,持续发送100 s,R1与S1之间链路的随机错误率设置为10%,用来模拟无线网络的丢包环境,S0分别采用改进算法Westwood-c和Westwood算法,路由器均采用经典的Drop Tail队列管理算法。
两种算法仿真的瞬时吞吐量数据如图3所示,Westwood和Westwood-c的吞吐量分别约为2.8 Mbit/s和5 Mbit/s,改进算法的吞吐量高于原算法约80%。由于Westwood-c算法加入了丢包原因区分机制,因此,在只存在随机错误的情况下,并未缩减源端的发送窗口数量,从而吞吐量高于Westwood算法。
3.1.2 随机错误率改变时的吞吐量
图2 单链路单数据流实验拓扑Fig.2 Single link single data stream lab topology
在保证网络其他参数不变的情况下,将R1与S1之间随机错误率设置为0.1%、0.5%、1%、5%和10%5个值并分别进行试验,不同随机错误率时的平均吞吐量如图4所示。可见,随机错误丢包对网络吞吐量影响很大,随机错误率越高,Westwood和Westwood-c算法下的平均吞吐量就越低。当随机错误率大于5%时,Westwood-c算法的平均吞吐量明显高于Westwood算法;在丢包率设置为10%时,改进算法Westwood-c的吞吐量是原算法吞吐量的2倍左右,即为图3的情况。
图3 随机错误固定时的瞬时吞吐量Fig.3 The instantaneous throughput with fixed random error
图4 随机错误改变时的平均吞吐量Fig.4 The average throughput with changed random error
仿真拓扑仍使用图2,只是将R0与R1之间的链路带宽设置为1 Mbit/s,时延改为40 ms,R1与D1链路间的随机错误率仍设置为10%,其他参数设置保持不变。实验结果如图5和图6所示。
图5 随机错误与网络拥塞并存时的瞬时吞吐量Fig.5 Instantaneous throughput with random errors and network congestion
图6 随机错误与网络拥塞并存时的平均吞吐量Fig.6 Average throughput with random errors and network congestion
从图5可以看出,在随机错误率和网络拥塞并存的情况下,Westwood-c算法的吞吐量水平同样明显高于原算法。从图6中可以看出,两种算法得到吞吐量数据线的变化趋势与图4相同,显然,在丢包率大时,Westwood-c算法的吞吐量更大。其原因是引入了判断N和β值大小机制,能识别拥塞丢包和随机错误丢包,使发送窗口长时间处于增长阶段(不会因为随机错误丢包而减小发送窗口),并能在加性增长阶段使窗口长时间处于较大状态,延迟了网络拥塞的出现。图7是在进行图5实验时,同时记录的两种算法源端发送窗口的变化情况,证实了上述分析的正确性。
图7 拥塞窗口PcwndFig.7 Congestion window Pcwnd
3.3.1 有线和无线混合网络
1)吞吐量。图8为仿真网络拓扑图,AP(Access Point)为网络访问接入端,S0发送TCP协议的FTP(File Transfer Protocol)数据流经路由器R0及AP至M0,S1采用UDP协议发送CBR(Constant Bit Rate)数据流至M1,UDP(User Datagram Protocol)流模拟网络中存在非响应背景流。
分别进行两次实验,第1次:S0端使用Westwood算法发送数据;第2次:S0端使用Westwood-c算法发送数据,S0在0~30 s内持续发送TCP数据流,S1端在0~10 s和20~30 s期间,发送速率为1 Mbit/s的UDP数据流。图9是从R0输出的吞吐量,可以看出,在存在非响应流竞争带宽的情况下,Westwood-c算法同样使网络吞吐量高于Westwood算法。
图8 有线和无线混合网络中存在非响应流的仿真Fig.8 The presence of non-response flow simulation in wired and wireless hybrid networks
图9 R0端输出的瞬时吞吐量Fig.9 Instantaneous throughput of R0output
2)响应性。在上述实验环境下,将S1改成每隔0.5 s向M1发送时间为0.5 s,速率为1 Mbit/s的UDP流。在S0端两种算法的瞬时吞吐量如图10所示,在加入和撤出非响应流时,从曲线的变化斜率可得知,Westwood-c对链路带宽的判断更加准确,而且响应速度更快。
图10 S0端输出的瞬时吞吐量Fig.10 Instantaneous throughput of S0output
3.3.2 有线网络
将图8的仿真实验拓扑中,无线接收端M0的链路带宽和时延换成与M1相同的有线连接,R0和R1采用弃尾算法。实验仍然按照第3.3.1节中所述步骤进行。得到两种算法的瞬时吞吐量曲线(见图11),在有线环境下,两种算法的吞吐量曲线几乎重合,显然对可用带宽的判断都是准确的。这主要是因为链路中只存在拥塞丢包而不存在随机丢包,Westwood-c的丢包辨别结果与Westwood相同。两种算法瞬时吞吐量的曲线形状也同样得到证实(见图12),此时两种算法的响应速度也是一致。因此,Westwood-c算法可应用于有线、无线或混合网络中。
图11 有线网络中R0端输出瞬时吞吐量Fig.11 Instantaneous throughput of R0 output in wired network
图12 有线网络中S0端输出的瞬时吞吐量Fig.12 The instantaneous throughput of S0 output in the wired network
友好性是评价TCP算法性能的重要指标,下面将用实验检验Westwood-c算法的友好性。
其网络拓扑如图8所示,在保持链路带宽设置不变的情况下,更改发送端S0、S1及接收端M0、M1与路由器R0、R1的时延均为10 ms,两路由器之间的瓶颈带宽为1 Mbit/s,链路时延40 ms,路由器采用弃尾算法。S0端分别发送Westwood和Westwood-c数据流,S1端发送TCP Reno数据流,得到图13的瞬时吞吐量。可以看到,两种算法相对Reno算法都具有友好性,Westwood-c算法对Reno算法的侵略性更低,在友好性方面也表现得更好。
图13 与TCP Reno算法竞争带宽时的瞬时吞吐量Fig.13 Instantaneous throughput of competing for bandwidth with TCP Reno algorithm
笔者详细分析了Westwood算法的原理,针对其无法辨别网络拥塞和无线随机错误两种丢包方式的问题,提出了一种TCP改进算法——Westwood-c。在该算法中加入了丢包判别机制并优化了加性增长机制。利用NS-2对两种算法进行仿真实验并分析可知,Westwood-c算法实现了拥塞丢包和无线随机丢包的区分,与Westwood算法相比,使网络吞吐量增大,网络带宽利用率提高。Westwood-c算法在与TCP Reno算法共存情况下,其友好性略优于Westwood算法。
[1]张丽娟,杨晓萍,陈虹,等.基于自适应参数设置的AIMD算法[J].吉林大学学报:信息科学版,2010,28(1):77-83.ZHANG Lijuan,YANG Xiaoping,CHEN Hong,et al.Enhanced AIMD Mechanism Based on Adaptive Parameter Settings[J].Journal of Jilin University:Information Science Edition,2010,28(1):77-83.
[2]徐昌彪,隆克平.无线网络中差错控制与拥塞控制策略的分析与探讨[J].计算机工程,2001,27(8):104-106.XU Changbiao,LONG Keping.Analysis& Considerations about the Policies of Error Controls and Congestion Controls in Wireless Networks[J].Computer Engineering,2001,27(8):104-106.
[3]邓颖姝.无线网络中TCP性能的改进方案[D].大连:大连海事大学信息科学技术学院,2009.DENG Yingshu.TCP Perfomance Improvement Programme in the Weireless Network[D].Dalian:College of Information Science and Technology,Dalian Maritime University,2009.
[4]KARUNAHARAN RATNAM,IBRAHIM MATTA.WTCP:An Efficient Mechanism for Improving Wireless Access to TCP Services[J].International Journal of Communication Systems,2003,16(1):47-62.
[5]王绍林.无线和有线网络中的TCP性能改进方案[D].合肥:中国科学技术大学计算机科学与技术学院,2007.WANG Shaolin.Research on Performance Improvement of TCP Protocol in Wireless and Wired Networks[D].Hefei:College of Computer Science and Technology,University of Science and Technology of China,2007.
[6]孙芳蕾.基于无线TCP数据链路层解决机制的研究[D].西安:西安电子科技大学计算机学院,2004.SUN Fanglei.The Study of Link Layer Solution Mechanism over Wireless TCP[D].Xi'an:College of Computer,Xidian University,2004.
[7]张振宇.TCP Veno算法的改进研究及其在Linux网络实验平台中的实现[D].长春:吉林大学通信工程学院,2012.ZHANG Zhenyu.Research on TCP Veno Enhanced Congestion Control Algorithm and Implementation in Linux Network Test Bed[D].Changchun:College of Communication Engineering,Jilin University,2012.
[8]孔金生,任平英.TCP网络拥塞控制研究[J].计算机技术与发展,2014,24(1):43-46.KONG Jinsheng,REN Pingying.Summary of TCP Network Congestion Control Research [J].Computer Technology and Development,2014,24(1):43-46.
[9]HU Han.Performance Research and Improvement of TCP-SACK in Wireless Environment[C]∥2010 3rd IEEE International Conference on Computer Science and Information Technology-ICCSIT 2010.Sichuan:IEEE,2010:547-551.
[10]王波,范平志.基于无线自组织网络的TCP Freeze-Probing改进协议[J].软件学报,2005,16(5):878-885.WANG Bo,FAN Pingzhi.TCP Freeze-Probing Enhancement for Mobile Ad Hoc Networks[J].Journal of Software,2005,16(5):878-885.
[11]黄精籼.无线网络中TCP Westwood拥塞控制算法研究[D].桂林:广西师范大学计算机科学与信息工程学院,2012.HUANG Jingxian.Research on Congestion Control Algorithm of TCP Westwood in Wireless Networks[D].Guilin:College of Computer Science and Information Engineering,Guangxi Normal University,2012.
[12]卢川.Westwood算法的改进研究及其在Linux网络中的实现[D].长春:吉林大学通信工程学院,2013.LU Chuan.Research on Westwood Enhanced Congestion Control Algorithm and Implementation in Linux Network[D].Changchun:College of Communication Engineering,Jilin University,2013.
[13]张牧,李君.TCP拥塞控制算法的仿真研究[J].计算机工程与应用,2008,44(21):82-84.ZHANG Mu,LI Jun.Simulation of TCP Congestion Control Algorithm [J].Computer Engineering and Applications,2008,44(21):82-84.
[14]何建新,祝青.基于带宽测量TCP拥塞控制慢启动改进[J].微型电脑应用,2009,25(10):61-63.HE Jianxin,ZHU Qing.Improvement of the TCP Congestion Control Slow Start Based on the Bandwidth Measurement[J].Microcomputer Applications,2009,25(10):61-63.
[15]刘俊,隆克平,徐昌彪,等.两种改善无线TCP性能的新机制[J].电子学报,2004,32(12):2059-2062.LIU Jun,LONG Keping,XU Changbiao,et al.Two New Mechanisms for Improving the Performance of Wireless TCP [J].Journal of Electronic,2004,32(12):2059-2062.