1、TCP拥塞控制算法性能比较1、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,来模拟这四种算法。2、模拟结果与算法分析比较1、模拟拥塞控制四
2、种算法的 cwnd变换图:2、TCP 拥塞控制的四个阶段这是 TCP拥塞控制的核心,也体现了 TCP拥塞控制的基本思想,它分为启动阶段,拥塞避免,快速重传和快速恢复阶段。(1) 启动阶段当连接刚建立或在发生一次超时的情况下,进入慢启动阶段。一个新的 TCP连接建立后,cwnd 被初始化为 1,源端只被允许发送一个报文段。当发出的报文收到接受端的 ACK确认后,cwnd 加 1,即增加一个报文段发送。在这个阶段中,cwnd 随 RTT呈指数增长。采用慢启动方法,可以防止 TCP在启动一个新的连接时发送过多的数据而造成数据丢失和网络拥塞,同时,由于 cwnd实际上以指数规律增长也就避免了单纯的 A
3、IMD算法造成的吞吐量增加过慢的问题。cwnd 的无限增长必将引起网络拥塞,于是引入一个状态变量:慢启动阈值ssthresh。当 cwndssthresh是,则采用拥塞避免算法,减缓 cwnd的增长速度。(2) 拥塞避免阶段在拥塞避免阶段,当 TCP探测到网络将要发生拥塞,并没有直接采用复位cwnd1,重新开始慢启动的方法。因为一旦发生拥塞,需要很长的时间来恢复,而慢启动算法中 cwnd的指数增长就显得有些激进,它很可能会加重网络拥塞。因此,在这个阶段,采用相对更保守的调节机制改变 awnd的增长方式,使它由指数增长变成线性增长,具体过程如下:1. 将慢启动阈值 ssthresh设置为当前 c
4、wnd的一半,即ssthresh=cwnd/2;2. 发生超时时,置 cwnd=1,在 cwnd=ssthresh 时,执行拥塞避免算法,cwnd 每收到一个 ACK确认时,只增加 1/cwnd个数据包这就使得 cwnd随 RTT呈线性增长。(3) 快速重传和快速恢复阶段由于在拥塞避免阶段,当发生超时时,cwnd 重新置 1,进入慢启动,这将导致过大减小发送窗口尺寸,很大程度上降低了 TCP连接的吞吐量。为了完善TCP的性能,又引入了快速重传和快速恢复机制。快速重传阶段,当源端收到 3个或者 3个以上的重复 ACK确认,即认为发生了数据包丢失,此时将 ssthresh设置为当前 cwnd的一半
5、,ssthresh=awnd/2,并重新传送丢失的数据包,进入快速恢复阶段。在快速恢复阶段,源端每收到一个重复的 ACK,则 cwnd加 1;若收到非重复的 ACK,置 cwndssthresh,转入拥塞避免;当发生超时重传时,置ssthresh=cwnd/2,cwnd=1,进入慢启动阶段。快速重传和快速恢复机制避免了数据包一发生超时就直接进入慢启动,在很大程度上提高了 TCP的性能和吞吐量。3、算法分析比较Reno算法一是对于收到连续 3个重复的 ACK确认,算法不经过慢启动,而直接进入拥塞避免阶段;二是增加了快速重传和快速恢复机制。Reno 算法以其简单、有效和鲁棒性成为 TCP源算法的主
6、流,被广泛的采用。但它不能有效的处理多个分组从同一数据窗口丢失的情况。NewReno 对 Reno中快速恢复算法进行了补充,它考虑了一个发送窗口内多个分组同时丢失的情况。Reno 算法中,发送方收到一个不重复的应答后就退出快速恢复,而 NewReno中,只有当所有的分组都被应答后才退出快速恢复状态。NewReno的实现只要修改 TCP发送端的实现代码,实现简单。SACK 算法也针对一个窗口内多个分组丢失的情况而对 Reno算法进行改进:SACK定义了一个变量 pipe来表示出现在路由器上分组的估计数量,接收方 TCP发送 SACK分组来通知发送方接收数据的情况,这样源端就能准确的知道那些数据被
7、正确的传到接收端,从而避免不必要的重传,减少延时,提高网络吞吐量。但 SACK算法的实现需要修改 TCP发送端和接收端的实现代码,增加了 TCP的复杂性,因此不易大规模的应用。Vegas 与上述的算法不同,它是以 RTT的变化来作为拥塞信号,调节源端的发送速率。通过监测 RTT的变化来改变 cwnd的大小。由于 Vegas采用 RTT的改变来判断网络的可用带宽,能较好的预测网络带宽的使用情况,其公平性、效率都较好。但是,由于 Vegas与其它算法在竞争带宽方面存在不公平现象,因此未能在 Internet上普遍采用,还需要不断改进。3、TCP reno 算法分析修改网络结构图上的参数,源节点 0
8、、1、2 为 TCP代理节点,频宽为 10Mbps,传递延迟时间为 1ms;路由器与目的节点间频宽为 1Mbps,传递延迟为 40ms。上图为修改参数后生成的 cwnd变化图。从 Reno 运 行 机 制 中 很 容 易 看 出 , 为 了 维 持 一 个 动 态 平 衡 , 必 须 周 期 性 地产 生 一 定 量 的 丢 失 , 再 加 上 加 法 增 加 乘 法 减 少 ( AIMD) 算 法 机 制 -减 少 快 ,增 长 慢 , 尤 其 是 在 大 窗 口 环 境 下 , 由 于 一 个 数 据 报 的 丢 失 所 带 来 的 窗 口 缩 小要 花 费 很 长 的 时 间 来 恢 复 , 这 样 , 带 宽 利 用 率 不 可 能 很 高 且 随 着 网 络 的 链 路带 宽 不 断 提 升 , 这 种 弊 端 将 越 来 越 明 显 。 公 平 性 方 面 , 根 据 统 计 数 据 ,Reno 的 公 平 性 还 是 得 到 了 相 当 的 肯 定 , 它 能 够 在 较 大 的 网 络 范 围 内 理 想 地 维持 公 平 性 原 则 。