当前位置:文档之家› TCP拥塞控制算法性能比较-Read

TCP拥塞控制算法性能比较-Read

TCP拥塞控制算法性能比较
一、NS2仿真
1.仿真实验的网络结构图
如图所示0、1、2为源节点,3为路由器,4为目的节点。

源节点0、1、2为TCP代理节点,频宽为8Mbps,传递延迟时间为0.1ms,仿真时使用FTP流量。

路由器的队列管理机制使用DropTail,频宽为0.8Mbps,传递延迟为100ms。

在这个实验中建立3条TCP数据流,0和4、1和4、2和4。

在OTCL编码中,代理节点的协议代理分别设置为TCP/Reno、TCP/Newreno、TCP/Sack1和tcp/Vegas,来模拟这四种算法。

二、模拟结果与算法分析比较
1、模拟拥塞控制四种算法的cwnd变换图:
2、TCP拥塞控制的四个阶段
这是TCP拥塞控制的核心,也体现了TCP拥塞控制的基本思想,它分为启动阶段,拥塞避免,快速重传和快速恢复阶段。

(1) 启动阶段
当连接刚建立或在发生一次超时的情况下,进入慢启动阶段。

一个新的TCP连接建立后,cwnd被初始化为1,源端只被允许发送一个报文段。

当发出的报文收到接受端的ACK确认后,cwnd加1,即增加一个报文段发送。

在这个阶段中,cwnd随RTT呈指数增长。

采用慢启动方法,可以防止TCP在启动一个新的连接时发送过多的数据而造成数据丢失和网络拥塞,同时,由于cwnd实际上以指数规律增长也就避免了单纯的AIMD算法造成的吞吐量增加过慢的问题。

cwnd的无限增长必将引起网络拥塞,于是引入一个状态变量:慢启动阈值ssthresh。

当cwnd<ssthresh时,TCP执行慢启动算法,cwnd随RTT呈指数增长;
当cwnd>ssthresh是,则采用拥塞避免算法,减缓cwnd的增长速度。

(2) 拥塞避免阶段
在拥塞避免阶段,当TCP探测到网络将要发生拥塞,并没有直接采用复位cwnd=1,重新开始慢启动的方法。

因为一旦发生拥塞,需要很长的时间来恢复,而慢启动算法中cwnd的指数增长就显得有些激进,它很可能会加重网络拥塞。

因此,在这个阶段,采用相对更保守的调节机制改变awnd的增长方式,使它由指数增长变成线性增长,具体过程如下:
1. 将慢启动阈值ssthresh设置为当前cwnd的一半,即ssthresh=cwnd/2;
2. 发生超时时,置cwnd=1,在cwnd<ssthresh条件下,TCP执行慢启动;
3. awnd>=ssthresh时,执行拥塞避免算法,cwnd每收到一个ACK确认时,只增加1/cwnd个数据包这就使得cwnd随RTT呈线性增长。

(3) 快速重传和快速恢复阶段
由于在拥塞避免阶段,当发生超时时,cwnd重新置1,进入慢启动,这将导致过大减小发送窗口尺寸,很大程度上降低了TCP连接的吞吐量。

为了完善TCP 的性能,又引入了快速重传和快速恢复机制。

快速重传阶段,当源端收到3个或者3个以上的重复ACK确认,即认为发生了数据包丢失,此时将ssthresh设置为当前cwnd的一半,ssthresh=awnd/2,并重新传送丢失的数据包,进入快速恢复阶段。

在快速恢复阶段,源端每收到一个重复的ACK,则cwnd加1;若收到非重复的ACK,置cwnd=ssthresh,转入拥塞避免;当发生超时重传时,置ssthresh=cwnd/2,cwnd=1,进入慢启动阶段。

快速重传和快速恢复机制避免了数据包一发生超时就直接进入慢启动,在很大程度上提高了TCP的性能和吞吐量。

3、算法分析比较
Reno算法一是对于收到连续3个重复的ACK确认,算法不经过慢启动,而直接进入拥塞避免阶段;二是增加了快速重传和快速恢复机制。

Reno算法以其简单、有效和鲁棒性成为TCP源算法的主流,被广泛的采用。

但它不能有效的处理多个分组从同一数据窗口丢失的情况。

NewReno对Reno中快速恢复算法进行了补充,它考虑了一个发送窗口内多个分组同时丢失的情况。

Reno算法中,发送方收到一个不重复的应答后就退出
快速恢复,而NewReno中,只有当所有的分组都被应答后才退出快速恢复状态。

NewReno的实现只要修改TCP发送端的实现代码,实现简单。

SACK算法也针对一个窗口内多个分组丢失的情况而对Reno算法进行改进:SACK定义了一个变量pipe来表示出现在路由器上分组的估计数量,接收方TCP 发送SACK分组来通知发送方接收数据的情况,这样源端就能准确的知道那些数据被正确的传到接收端,从而避免不必要的重传,减少延时,提高网络吞吐量。

但SACK算法的实现需要修改TCP发送端和接收端的实现代码,增加了TCP的复杂性,因此不易大规模的应用。

Vegas与上述的算法不同,它是以RTT的变化来作为拥塞信号,调节源端的发送速率。

通过监测RTT的变化来改变cwnd的大小。

由于Vegas采用RTT的改变来判断网络的可用带宽,能较好的预测网络带宽的使用情况,其公平性、效率都较好。

但是,由于Vegas与其它算法在竞争带宽方面存在不公平现象,因此未能在Internet上普遍采用,还需要不断改进。

三、TCP reno算法分析
修改网络结构图上的参数,源节点0、1、2为TCP代理节点,频宽为10Mbps,传递延迟时间为1ms;路由器与目的节点间频宽为1Mbps,传递延迟为40ms。

上图为修改参数后生成的cwnd变化图。

从Reno运行机制中很容易看出,为了维持一个动态平衡,必须周期性地产生一定量的丢失,再加上加法增加乘法减少(AIMD)算法机制--减少快,增长慢,尤其是在大窗口环境下,由于一个数据报的丢失所带来的窗口缩小要花费很长的时间来恢复,这样,带宽利用率不可能很高且随着网络的链路带宽不断提升,这种弊端将越来越明显。

公平性方面,根据统计数据,Reno的公平性还是得到了相当的肯定,它能够在较大的网络范围内理想地维持公平性原则。

相关主题