《Fast Tcp与网络仿真软件NS2仿真平台的建立》由会员分享,可在线阅读,更多相关《Fast Tcp与网络仿真软件NS2仿真平台的建立(7页珍藏版)》请在金锄头文库上搜索。
1、FAST TCP 与 NS2 仿真平台研究分析摘要:随着网络带宽和距离的不断增大传统的TCP协议已经成为阻碍网络高速传输的瓶颈。本文介绍了一种新的拥塞控制算法FAST TCP。本文主要讲述了FAST TCP拥塞控制相对于目前TCP拥塞控制的优越性以及网络仿真平台NS2与科学绘图工具Gnuplot的安装使用与数据分析。1 传统 TCP 存在的缺陷随着 Internet 的迅猛发展,网络规模、用户和应用急剧增加,随之而来的是日益突出的网络拥塞问题。拥塞控制是确保 Internet 鲁棒性的关键因素,也是各种网络资源管理和控制机制的基础,因此成为当前国内外计算机网络和控制理论交叉领域研究的一个热点课
2、题。90 年代中后期到 21 世纪以来,Internet 得到迅猛发展,传统的传输控制协议已经渐渐暴露出一些缺陷:首先是拥塞现象变得越来越严重;其次是高带宽的网络出现,从 100Mbps 到 1Gbps 到 10Gbps;最后网络的应用的多样化,音视频应用越来越多,而音视频基本上都是用 UDP 来传输数据,UDP 不提供数据可靠性的保障,同时也没有拥塞控制和流控,因此当 UDP 和 TCP 在一起竞争的时候,如果造成丢包的话,此时 TCP 退避三舍,而 UDP 照样传输,显然会造成TCP 的应用会变得奇慢,当然这个本质不是 TCP 的问题,但是给 TCP 带来了问题。2 FAST TCP 的出
3、现与优越性针对上述问题,TCP 拥塞控制进入了新的阶段:加州理工学院网络实验室Steven H.Low 等人在源端针对高速、长时延、大容量的高性能网络提出的一种新型高速传输控制协议FAST TCP协议。FAST TCP 是下一代高性能网络的一种新型的传输控制协议,它是建立在Vegas思想的基础上的改进方案,它致力于解决高速、高延时环境下的问题,但它又仅限于对发送方的代码予以修改。和Vegas相比较,虽然都是基于平衡的窗口控制方案,FAST TCP是根据距离平衡点位置的远近来调整窗口大小变化的快慢的。相比较现有TCP拥塞控制算法,FAST TCP具有不可比拟的优越性,FAST TCP 协议完全将
4、拥塞控制器建立在各连接源端,采用估测的排队时延作为拥塞反馈信号,其基于平衡的设计思想使其稳定性、吞吐量、公平性和快速响应等性能指标要优于TCP Reno、HSTCP和STCP等网络传输控制协议,它从根本上改变了传统的TCP的拥塞度量机制、网络容量的探测方式,同时对AIMD(和式增加积式减小)机制也做了大幅度的改进。与一般的TCP相比,FAST TCP的不同主要表现在三个方面:首先,它是一个基于平衡的算法,因此消除了包级振荡。第二,它使用队列时延作为主要的拥塞测量在高速长距离网络中。队列时延对拥塞的测量比丢包率具有更高的可靠性。第三,它具有稳定的流动态性能够在平衡状态获得加权指数级的公平性,且不
5、会给长距离流不公正的待遇。但是,目前的TCP FAST仍然存在需要改进的地方,比如如何寻找平衡点以及和现有TCP拥塞控制算法相兼容问题,如何选择合适的协议参数,使FAST协议表现出良好性能的公开等问题。因此针对FAST TCP 协议公开问题的研究,是十分必要和有意义的。3 NS2网络仿真平台的安装配置3.1为什么选择NS2设计开发新协议常常需要对其进行性能测试和评价,一般有两种方法:构建测试床在实际网络环境中进行测试;另外,就是在仿真环境测试。在实际环境下测试往往由于测试床的构造过于复杂或造价过高,并且对于大规模测试几乎是不可能的,而且其测试结果往往难过重现,因而一般将其作为辅助手段。而软件仿
6、真由于其可控性、可重现性,可扩展性等优点而在网络研究界中得到了广泛的应用。基于FAST TCP协议的研究,需要在局域网、城域网、以及广域网中进行测试,需要高性能的路由交换设备,学校网络实验室根本无法满足测试的需要。针对实验条件无法满足本次研究的需要,目前业界使用最广泛的网络仿真软件就是NS2,NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用
7、的一种网络模拟软件。NS2是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由 UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前 NS2可以用于仿真各种不同的 IP网,已经实现的一些仿真有:网络传输协议,比如 TCP和UDP;业务源流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如 Droptail , RED和CBQ;路由算法,比如 Dijkstra等。NS2也为进行局域网的仿真而实现了多播以及一些 MAC 子层协议。NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一个开放脚本语言,用来对
8、NS2进行编程;Tk是Tcl的图形界面开发工具,可帮助用户在图形环境下开发图形界面; OTcl是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用 C+编写,以OTcl解释器作为前端; Tclcl则提供NS2和OTcl的接口,使对象和变量出现在两种语言中。NS2使用C+和Otcl作为开发语言。 NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络
9、组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。 NS是用Otcl和C+编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C+写出并编译的,这些对象通过映射对 Otcl解释器可见。 当仿真完成以后, NS将会产生一个或多个基于文本的跟踪文件。只要在Tcl脚本中加入一些简单的语句,这些文件中就会包含详细的跟踪信息。这些数据可以用于下一步的分析处理,也可以使用 NAM将整个仿真过程展示出来。这使得在低成本下,也能准确
10、的完成对研究的测试与实验数据的分析。3.2 基本于Ubuntu Linux 的NS2与Gnuplot的安装在终端里输入如下语句,安装一些编译必备的包。$sudo apt-get install build-essential$sudo apt-get install tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev$ sduo apt-get install libxmu-devlibxmu-headers有的文章说要移除gcc,因为高版本的gcc对安装有影响,其实是可以不用移除的,后面会有解决方案的。然后下载ns2-allinone-2.33.tar.gz压缩包,我的是放在
11、home/bq(自己的文件夹)下,输入如下命令解压:$tar xvfz ns-allinone-2.33.tar.gz然后进入ns-allinone-2.33文件夹输入$ cd ./install安装然后进入$cd /ns-allinone-2.33/otcl-1.13,然后$ sudogedit configure.in把77行的SHLIB_LD=“ld -shared“,改为SHLIB_LD=“gcc -shared“,保存退出。然后$ sudogedit configure在5518行找,把SHLIB_LD=“ld -shared“改为SHLIB_LD=“gcc -shared“,保存退
12、出。cd回到目录ns-allinone-2.33下,重新运行sudo ./install 顺利完成安装然后cd进入/home/bq/下,$ sudogedit .bashrc。在文件末尾加入:PATH=“$PATH:/home/bq/ns-allinone-2.33/bin:/usr/ns-allinone-2.33/tcl8.4.18/unix:/home/bq/ns-allinone-2.33/tk8.4.18/unix“LD_LIBRARY_PATH=“/home/bq/ns-allinone-2.33/otcl-1.13:/usr/ns-allinone-2.33/lib“TCL_LI
13、BRARY=“$TCL_LIBRARY:/home/bq/ns-allinone-2.33/tcl8.4.18/library“保存退出。然后重新安装 $ sudo ./install。到这一步,应该可以说完成了,在终端输入ns,出现%就证明安装成功。最后,本实验用新的tcp文件替换原有的,使之支持FAST TCP,并用改写的makefile替换原有的,使本实验能够实现对内部算法的改进。在命令行下输入:# apt-get install gnuplot系统自动获取包信息、处理依赖关系,就可以完成安装,安装完毕后。在命令行下运行: $ gnuplot 就进入了gnuplot 系统出现:gnupl
14、otGnuplot安装成功。4、NS2网络仿真的实现4.1 使用NS进行网络仿真的方法和一般过程 。进行网络仿真前,首先分析仿真涉及哪个层次, NS仿真分两个层次:一个是基于 OTcl编程的层次。利用 NS已有的网络元素实现仿真,无需修改NS本身,只需编写 OTcl脚本。另一个是基于 C+和OTcl编程的层次。如果NS中没有所需的网络元素,则需要对 NS进行扩展,添加所需网络元素,即添加新的C+和OTcl类,编写新的 OTcl脚本。 假设用户已经完成了对 NS的扩展,或者 NS所包含的构件已经满足了要求,那么进行一次仿真的步骤大致如下: (1)开始编写OTcl脚本。首先配置模拟网络拓扑结构,此
15、时可以确定链路的基本特性,如延迟、带宽和丢失策略等。 (2)建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。(3)配置业务量模型的参数,从而确定网络上的业务量分布。 (4)设置Trace对象。NS通过Trace文件来保存整个模拟过程。仿真完后,用户可以对 Trace文件进行分析研究。 (5)编写其他的辅助过程,设定模拟结束时间,至此 OTcl脚本编写完成。 (6)用NS解释执行刚才编写的 OTcl脚本。 (7)对Trace文件进行分析,得出有用的数据。 (8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。NS2采用两级体系结构,为了提高代码的执行效率, NS2 将数据操作与控制
16、部分的实现相分离,事件调度器和大部分基本的网络组件对象后台使用C+实现和编译,称为编译层,主要功能是实现对数据包的处理;NS2的前端是一个 OTcl 解释器,称为解释层,主要功能是对模拟环境的配置、建立。从用户角度看, NS2 是一个具有仿真事件驱动、网络构件对象库和网络配置模块库的 OTcl脚本解释器。 NS2中编译类对象通过 OTcl连接建立了与之对应的解释类对象,这样用户间能够方便地对 C+对象的函数进行修改与配置,充分体现了仿真器的一致性和灵活性。4.2 一个简单的仿真实现仿真的网络结构拓扑图如 (图1):n0N2N3N1(图1)其中,n0与n2之间的带宽为 10000M,延时0ms;n2与n2之间带宽为100Mb,延时50ms,缓存为80000packets;n3与n1之间的带宽为 10000M,延时0ms.在头部生成的文件中,rqa.tr/rf3.tr记录该次仿真的跟踪信息。最后,使用gnuplot作图,获得仿真信息(如图2):结束语本文简要的介绍了目前TCP协议的缺陷与一种新的传输控制协议FCP FAST相对于当前TCP的优