当前位置:首页 > 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
在拥塞避免阶段,当TCP探测到网络将要发生拥塞,并没有直接采用复位cwnd=1,重新开始慢启动的方法。因为一旦发生拥塞,需要很长的时间来恢复,而慢启动算法中cwnd的指数增长就显得有些激进,它很可能会加重网络拥塞。因此,在这个阶段,采用相对更保守的调节机制改变awnd的增长方式,使它由指数增长变成线性增长,具体过程如下:
1. 将慢启动阈值ssthresh设置为当前cwnd的一半,即ssthresh=cwnd/2; 2. 发生超时时,置cwnd=1,在cwnd
(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算法中,发送方收到一个不重复的应答后就退出
共分享92篇相关文档