浅谈TCP-BM对于异构网络TCP协议的重要性

时间:2023-06-30

  所谓异构网络(Heterogeneous Network)是一种类型的网络,其是由不同制造商生产的计算机,网络设备和系统组成的,大部分情况下运行在不同的协议上支持不同的功能或应用。互联网可以由多个异构网络互联组成。

TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的运输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。

目前改善TCP协议在异构网络环境下的性能的方法主要分为以下三类:链路层方法、分离连接方法和端到端方法。

链路层方法是通过本地重传和前向纠错屏蔽发送端与链路相关的丢包。但由于链路层协议与高层协议都有独立的差错控制功能,存在一定的重复性,相互竞争会降低无线信道的利用率,导致端到端吞吐量下降。代表性协议是Snoop[4]。

分离链接方法是在基站处将TCP连接分成有线连接和无线连接两部分:有线连接部分使用传统的TCP协议,无线连接部分使用改进的TCP协议。它破坏了端到端的TCP语义连接性。代表性协议是Indirect-TCP[5]。

端到端方法只修改TCP发送端和接收端的协议,保证了端到端的TCP语义连接性。代表性协议是TCP Westwood[6]。该协议在发端监视收到的ACK数据流,并以此来估计当前链路的可用带宽。一旦丢包,发端将利用估计的带宽对慢启动阈值和拥塞窗口进行适当设置,保证了网络的快速恢复并可更有效地避免拥塞。

本文提出了一种适用于异构网络的TCP算法TCP -BM(TCP Based Measurement),其基本思想是利用往返时延RTT来控制拥塞窗口的增长速度,使发送窗口稳定在一个比较理想的状态,在网络发生丢包后,通过对RTT的实时分析判断出丢包原因,从而采取相应的控制措施。

1 传统TCP Reno协议及分析

  1.1 TCP Reno协议流程

TCP Reno协议包括慢启动、拥塞避免、快速重传和快速恢复4个阶段:

(a)慢启动阶段:TCP将拥塞窗口值设为1,发送端每收到一个新的ACK就把拥塞窗口值增加一个,即W=W+1,W表示拥塞窗口;

(b)拥塞避免阶段:发送端每收到一个新的ACK就把拥塞窗口值增加拥塞窗口值的倒数,即W=W+1/W;

(c)丢包标志为3个重复ACK:发送端重传丢失的包,并且在窗口范围内继续发送新的数据包,此后发送端每收到1个重复的ACK就将拥塞窗口值增加1;

(d)丢包标志为计时器超时:发送端重传丢失的包,然后将慢启动阈值设为当前窗口的一半,将拥塞窗口设为1。

因为TCP协议是端到端的协议,因此这里的说明只涉及发送端和接收端。在连接开始时,发送端执行(a), 直到拥塞窗口值大于(或等于)慢启动阈值或者出现丢包:(1)如果是出现丢包,发送端执行策略与丢包标志相关,如果丢包标志为3个重复ACK,则发送端执行(c), 直到发送端收到新的ACK为止,然后发送端TCP将拥塞窗口和慢启动阈值都设为快速重传前拥塞窗口值的一半,重新开始拥塞避免阶段;如果丢包标志为计时器超时,则发送端执行(d),重新开始慢启动阶段;(2)如果是拥塞窗口大于(或等于)慢启动阈值,则发送端执行(b),该策略一直持续到出现丢包为止,一旦出现丢包,发送端执行策略同慢启动阶段出现丢包时采取的策略一样。

 1.2 TCP Reno协议分析

快速恢复算法避免了在快速重传之后通道为空的现象,从而避免了在单个报文丢失后重新开始慢启动阶段。TCP发送端在每个往返时延内多重传1个包,因此在只有1个数据包丢失的情况下,该协议性能。当1个窗口中有2个报文丢失时,在TCP发送端快速重传和快速恢复就将被执行2次,因为在快速恢复阶段窗口的调整策略为ssthresh=cwnd/2,cwnd=ssthresh,因此慢启动阈值和拥塞窗口都将被减小2次,这是不必要的。当有更多数据包丢失时,根据Reno协议TCP发送端就必须等待重发计时器超时才能恢复。

2 TCP-BM协议

该算法的基本思想是在慢启动阶段根据网络的实时状况来合理地调节拥塞窗口的增长速度;将拥塞避免过程分为正增长过程和负增长过程,从而使发送窗口稳定在比较理想的状态而有预见性地避免拥塞。在网络发生丢包后,通过对RTT的实时分析以及估计的带宽判断出丢包原因,从而采取不同的恢复措施。下面详细介绍TCP-BM协议的几个阶段,未说明部分沿用传统的TCP Reno协议。

2.1慢启动阶段

开始时数据量较少,对带宽的利用率较低,因此可以使拥塞窗口较快地增长;当拥塞窗口增大到一定程度时,减小其增长速度,使其相对缓慢并且平滑地增加;当拥塞窗口的大小接近于慢启动阈值时,再次减小其增加速度,使其更加缓慢且平滑地接近于慢启动阈值。算法描述如下:

If (cwnd

If (cwnd*(1+(double)(rtt/rttmin))

cwnd+=(double)(rtt/rttmin);

else if (2*cwnd < ssthresh)

cwnd+=1;

else cwnd+=(double)(rttmin/ rtt)

其中,cwnd表示拥塞窗口;ssthresh表示慢启动阈值,rtt表示当前的往返时延值,它反映当前的网络状态;rttmin表示往返时延历史数据中的值,它反映历史上网络的状态。在连接开始时,拥塞窗口大小设为1,以后每收到一个ACK,拥塞窗口就增加(double)(rtt/rttmin);拥塞窗口增大到一定程度时降低其增长速度,变为每收到一个ACK,拥塞窗口就增加1;当拥塞窗口接近于慢启动阈值时,拥塞窗口以更缓慢的方式进行增长,cwnd+=(double)(rttmin/rtt), 直到拥塞窗口大于(或等于)慢启动阈值或者出现丢包为止。

 2.2 拥塞避免阶段

当拥塞窗口大于(或等于)慢启动阈值后,TCP发送端发送的数据量已经向网络所能容忍的一个限度靠近,此时不能再使拥塞窗口像慢启动阶段那样快速地增长,因此利用往返时延值将此阶段分为正增长和负增长2个阶段,使传输过程能更长时间地稳定在该阶段。算法描述如下:

if((rtt/rttmin)< A

cwnd = cwnd + B1*increment;

else

cwnd = cwnd - B2*increment;

令T=rtt/rttmin,则T表示当前往返时延值是往返时延历史数据中的值的多少倍,即当前的网络状态比历史上网络的状态差多少;A表示拥塞阈值,即当前往返时延值达到往返时延历史数据中的值的A倍时,网络将趋于拥塞。。经过多次仿真分析A取1.5,B1取1,B2取0.5能达到较好的性能。

 2.3快速重传和快速恢复

网络发生丢包后,TCP发送端采取快速重传措施,重传丢失的报文,然后根据丢包标志的不同,通过比较的往返时延值和前的往返时延值以及估计的带宽值来区分丢包原因,从而采取不同的控制措施。算法描述如下:

If (dupacks)

if(rtt>=lastrtt&&bw2

ssthresh= cwnd /2, cwnd =ssthresh;

if (timeout)

ssthresh=cwnd/2,cwnd=1;

其中,dupacks表示3个重复ACK的情况,lastrtt表示上的往返时延值,bw2和bw1分别表示第二个重复ACK时的测量带宽和第三个重复ACK时的测量带宽(bw1=d/(t2-t1),bw2=d/(t3-t2),d表示ACK所确认的报文段的长度,t1表示个重复ACK到来的时间,t2表示第二个重复ACK到来的时间,t3表示第三个重复ACK到来的时间),timeout表示计时器超时的情况。当丢包标志为timeout时,因为计时器超时是比3个重复ACK更严重的情况,所以此处沿用传统的方法对拥塞窗口和慢启动阈值进行调整,其调整策略见算法描述。

3 性能分析

在ns-2[7]仿真平台上进行仿真,其网络拓扑。网络拓扑由3段链路和4个节点组成,其中S表示TCP发送端,R表示路由器,BS表示基站,D表示TCP接收端,有线部分包括从发送端到路由器,从路由器到基站两部分,一段为无线部分。其中发送端与路由器之间的有线链路带宽为100 Mb/s,延迟为1 ms,路由器与基站之间的有线链路带宽为100 Mb/s, 延迟为49 ms,基站与接收端之间的无线链路带宽为1 Mb/s,延迟为0.01 ms。数据包的大小采用固定长度,其值设为1 000 byte,无线误码率设为0,仿真时间设为200 s,且只采用一个FTP数据流,该数据流在10 s开始,在200 s结束。


在上述仿真环境下比较TCP-BM协议和TCP Reno协议拥塞窗口随时间的变化情况。


横轴表示时间,单位为s,纵轴表示拥塞窗口大小,单位为packet。不难看出,在整个200 s的仿真过程中,TCP Reno协议的拥塞窗口大小随时间的变化非常剧烈,而TCP-BM协议的拥塞窗口的大小除了出现少数几次较为剧烈的波动之外,其余时间变化则较为平缓。对仿真追踪所得到的实验数据进行统计分析,TCP Reno协议的拥塞窗口值为1,值为26,且变化频繁,变化范围集中在10~18;而TCP-BM协议的拥塞窗口值为1,且只出现了屈指可数的几次,值为21,稳定之后变化范围集中在13~17。

对拥塞窗口值在时间上进行平均,TCP Reno协议的拥塞窗口平均值大小为13.10,而TCP-BM协议的拥塞窗口平均值大小为14.03,这说明TCP-BM协议发送量比TCP Reno协议有明显增加,这必将会导致业务吞吐量的提高。

对拥塞窗口值的方差在时间上进行平均可得TCP Reno协议的拥塞窗口值的平均方差大小为28.86,而TCP-BM协议的拥塞窗口值的平均方差为1.72,这表明了TCP-BM协议的拥塞窗口变化情况要比改进前缓和得多,说明了TCP-BM协议的带宽利用率较为稳定。

对TCP Reno协议和TCP-BM协议吞吐量变化情况进行比较。


横轴表示时间,单位为s,纵轴表示吞吐量,单位为kb/s。可以明显看出,TCP-BM协议的吞吐量比TCP Reno协议有明显的提高。TCP-BM的拥塞窗口波动也可以说明这一问题。终其吞吐量稳定在644 kb/s左右,TCP-BM协议的吞吐量比TCP Reno协议提高了大约19.3%。

对丢包率进行统计分析,对上述仿真结果进行计算可得,TCP Reno协议的丢包率为1.65%,而TCP-BM协议的丢包率为0.21%,对其进行比较可发现,TCP-BM协议的丢包率比TCP Reno协议的丢包率减小了1.44%,这也从一定程度上说明了TCP-BM协议的吞吐量比TCP Reno协议的吞吐量有所提高。

在传统的TCP Reno协议的基础上提出了一种适用于异构网络的TCP拥塞控制协议,该协议在慢启动阶段根据往返时延值适当调整拥塞窗口的增长速度,在拥塞避免阶段利用当前的往返时延与往返时延的历史值的比值来控制拥塞窗口的增加与减小,不但能充分利用网络资源。经过仿真验证,改进后的TCP算法性能优于传统的TCP Reno协议。下一步工作是要进一步改进该算法,使之适用于更复杂的网络环境。

上一篇:下一代传送网和IP承载网的融合演进
下一篇:呼叫中心与渠道扁平化管理设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料