基于OPNET的TCP拥塞控制仿真

时间:2022-05-30 11:36:00

基于OPNET的TCP拥塞控制仿真

摘要:论文分析慢启动、拥塞避免、快速重传、快速恢复等四个拥塞控制阶段的特点。利用OPNET Modeler软件构建了一个简单的网络模型,在此基础上分别对Tahoe,Reno,New Reno,SACK等拥塞控制算法进行仿真,对比研究了它们各自的不同点。

关键词:OPNET仿真;拥塞控制;TCP

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)35-2093-02

TCP Congestion Control Simulation Based on OPNET

HUANG Yuan-jiang1, LI Shi-yin1, GUO Jing2, JIANG Hai-ming1, LI Yao3

(1.School of Information and Electrical Engineering of CUMT,Xuzhou 221008,China;2.School of Electrical and Information Engineering of Dalian University of Technology,Dalian 116024,China;3.Guohong Chemical Ltd. Zoucheng 273500,China)

Abstract: The paper analyses the characteristic of four congestion control phases including Slow Stare,Congestion Avoidance, Fast Retransmit and Fast Recovery.A simple network model is builted with OPNET Modeler and some simulations about Tahoe,Reno, NEW Reno and SACK are run with it in order to show the differences among them.

Key words: OPNET simulation;congestion control;TCP

1 引言

随着社会的发展,计算机广泛应用到各个领域,成为现代人不可或缺的工具。同时带来问题是网络结构和规模越来越复杂化以及网络的应用越来越多样化,网络负载日益繁重,容易造成网络拥塞,严重影响了通信。因此,拥塞控制是计算机通信领域的一个热门话题。

单纯的依靠经验进行网络规划和设计、网络设备的研发以及网络协议的开发,已经不能适应网络的发展。因而急需一种科学的手段来反映和预测网络的性能,网络仿真应运而生。

OPNET公司起源于MIT(麻省理工学院),成立于1986年。1987年OPNET公司了其第一个商业化的网络性能仿真软件,提供了具有重要意义的网络性能优化工具,使得具有预测性的网络性能管理和仿真成为了可能。OPNET这一仿真工具为解决通信网络(包括固定网、移动网络和卫星网络)仿真和优化以及网络高效的管理提供了整套解决方案,成为当前网络仿真以及分析领域出类拔萃的软件。

2 TCP网络拥塞控制

为了更好地在运输层进行拥塞控制,1999年公布的因特网建议标准[RFC 2581]定义了拥塞控制的四个阶段,即慢启动(slow start)、拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)。

慢启动阶段:拥塞窗口(Cwnd)是指在没有收到确认ACK的情况下最多能发送的数据包的数量。TCP协议主要通过拥塞窗口来控制发送的速率,以达到拥塞控制的目的。TCP建立链接以后,拥塞控制进入慢启动阶段。初始拥塞窗口为一个字段大小,每收到一个ACK确认,拥塞窗口增加一个字段。

拥塞避免阶段:慢启动阀值(ssthresh)是慢启动和拥塞避免阶段的分界点。当拥塞窗口增加到慢启动阀值大小时,就进入拥塞避免阶段,拥塞窗口的增长速度减慢,每收到一个ACK确认的时候,拥塞窗口只增加1/Cwnd。

快速重传和快速恢复阶段:当数据包超时时,拥塞窗口被设置为1,重新进入慢启动,这会导致过大地减小发送窗口尺寸,降低TCP连接的吞吐量。因此快速重传和恢复就是在源端收到3个或3个以上重复ACK时,就断定数据包已经被丢失,并重传数据包,同时将慢启动阀值设置为当前拥塞窗口的一半,而不必等到超时。

拥塞控制算法就是建立在以上基础之上的。现有的拥塞控制算法有:Tahoe,Reno,New Reno,SACK。

Tahoe:包含慢启动,拥塞避免,快速重传三个阶段。当有数据包丢失的时候,不必等待计时器满,只要收到3个ACK便开始重传数据。

Reno: 包含慢启动,拥塞避免,快速重传,和快速恢复阶段。在Tahoe基础上增加了了快速恢复。因此,当数据包丢失的时候,拥塞窗口不像Tahoe那样减到只有一个数据包。

New Reno:尽力避免了Reno在快速恢复阶段的许多重传超时,利用一个ACK确认部分发送窗口,立即重传余下的数据包。

SACK:SACK算法是在Reno基础上进行扩展,对数据包进行有选择地确认和重传,从而避免不必要的重传,减少时延,提高网络吞吐量。

3 拥塞控制的仿真及性能分析

3.1 模型的建立

在计算机通信网络中,数据通过交换机、路由器等数据交换设备到达目的地,由于线路带宽等因素的影响,当网络负载过大的时候,出现拥塞就不可避免。为了简化实际模型,如图1所示,模型由三部分组成:客户端(client)、服务器(server)、packet_discader。在客户端和服务器端之间实现FTP,传输文件大小约为1.5GB,最小超时重传时间为0.5秒。数据不经过网络中的任何交换设备,而是由服务器直接发送到客户端,客户只负责对数据进行确认,通信线路采用DS1(1.544Mbps)速度。为了真实的反映出网络拥塞时数据丢失情况,OPNET提供了一种方法来实现:通过配置packet_discader人为的控制数据包丢失来替代现实中由于网络拥塞而丢失数据的情况。

利用OPNET可以很方便的针对各种拥塞控制算法进行不同的配置。在以上模型建立后,需配置客户端和服务器的TCP参数,如图2所示。

Maximum Segment Size指一个数据包的大小。Receive Buffer指接收缓冲区大小。 Slow_Start Initial count设置慢启动阶段初始拥塞窗口大小,1表示一个数据包,2表示两个,依次类推,这里我们设置为1。Fast Retransmit,Fast Recovery,Selective ACK即分别指快速重传,快速恢复,选择性重传,Disable表示无效,Enable表示有效,通过改变这个来实现不同的拥塞控制算法。例如,若要实现Tahoe,Fast Retransmit为Enable,Fast Recovery,Selective ACK为Disable;若要实现Reno则,Fast Retransmit,Fast Recovery为Enable,Selective ACK为Disable。

3.2 仿真结果分析

如图3,用OPNET仿真器仿真了这几种算法,将结果显示在同一张图上,由此可以清楚的看出它们之间的区别。为了方便比较,所有算法都是在相同外部条件下仿真的,数据设定在同一时刻丢失一个数据包。横坐标为时间(s),纵坐标为拥塞窗口(byte)。

(a):无数据丢失; (b):数据丢失时不采取快速重传和快速恢复;(c):Tahoe;(d):Reno;(e):New Reno;(f):SACK

图3 拥塞控制算法的比较

(a)是理想的情况,即没有数据丢失,所有数据都得到确认;(b)、(c)、(d)、(e)、(f)是在有数据丢失情况下网络的反应。(a)只有慢启动和拥塞避免阶段,拥塞窗口一直增长。当然,这个增长并不是无限的,它受限于网络带宽等因素。(b)是当数据丢失的时候,重新进入慢启动,并且慢启动阀值有所改变。(c)是Tahoe,它采用了快速重传算法,不必等待计时器满,只要收到3个ACK便开始重传数据。比较(b)和(c),可以看出Tahoe恢复拥塞窗口的速度快了。(d)是Reno,在Tahoe的基础上增加了快速恢复算法。因为当拥塞发生的时候,没有必要像Tahoe把拥塞窗口减为一个数据包。比较(c)和(d),发现当数据丢失的时候,Reno将拥塞窗口变为了慢启动阀值加上三个数据包,随后,当收到新的确认ACK后拥塞窗口变为了慢启动阀值。(e)是New Reno,是在Reno基础上的改进,使它能够提高Reno 的执行效率。当快速恢复阶段结束时,拥塞窗口就利用它所开启的窗口进行重传。如果有多个数据包需要重传,那么Reno TCP 将会多次启动快速恢复和快速重传算法,每次启动拥塞窗口都会下降为原来的一半。New Reno TCP 的基本原理是,在所有发送的数据包没有收到确认之前快速恢复阶段不能结束。(f)是SACK,接收端只对正确到达的数据包给予确认,这样当数据丢失时发送端只需要重传丢失的数据包。SACK 会报告这些正确到达的数据包,尽管它们并不是顺序的。也就是说,当两个数据包中间的一个包丢失时,接收端会发送两个正确到达的数据包的确认,而不会发送中间一个数据包的确认。

4 结束语

拥塞控制在计算机网络中占有重要地位,好的拥塞控制算法保证了通信的流畅。本文通过OPNET Modeler仿真软件建立模型对各种拥塞控制算法进行了仿真。OPNET能够非常准确和直观地反映出各种拥塞控制算法的特点。

参考文献:

[1] 王文博,张金文.OPNET Modeler与网络仿真[M].北京:人民邮电出版社,2003.

[2] 谢希仁.计算机网络[M].4版.大连:大连理工大学出版社,2004.

[3] [美]Andrew S,puter Networks[M].3版.熊桂喜,王小虎,译.北京:清华大学出版社,1998.

上一篇:集成开发环境下汇编语言源程序的上机过程 下一篇:自动支持面向对象特性C程序的开发方案