基于NS2的TCP拥塞控制仿真_第1页
基于NS2的TCP拥塞控制仿真_第2页
基于NS2的TCP拥塞控制仿真_第3页
基于NS2的TCP拥塞控制仿真_第4页
基于NS2的TCP拥塞控制仿真_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于NS2的TCP建模与仿真摘要:TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。本文利用NS2网络仿真器对TCP/IP中的拥塞控制与拥塞窗口,快速重传与快速恢复算法进行了仿真,使对协议中的几种机制和算法有了形象的理解。关键字:TCP/IP协议,NS2仿真,拥塞控制,快速重传,快速恢复一、 引言TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。例如,TCP协议在RFC793中正式定义;RFC1122对如何检测错误和不一致性以及解决方法进行了说明;

2、RFC1323给出了对TCP的一些扩展功能;RFC2518中重点阐述了TCP的拥塞控制机制描述了更新后避免过度拥塞的算法;RFC3168描述了对显示拥塞的报告等。据统计,当前在所有因特网的数据包中,大约有95%包的传送使用了TCP协议,因此针对TCP协议相关机制的研究很有实际意义。在TCP协议的研究中,仿真是一种有效又经济的研究方法,而且可以给人以更加形象的认识。目前的网络仿真工具主要包括两类:一是基于大型网络开发的网络仿真工具,如OPNET、GloMoSim等;二是基于小型网络开发的网络仿真工具,如NS2、COMNET III等。大多数网络仿真工具的价格昂贵,而本文采用的NS2是一种应用广泛

3、、影响力较大和源代码公开的免费网络模拟软件。二、 网络仿真器NS2NS是Network Simulator的英文缩写,又称网络仿真器。它是一款开放源代码的网络模拟软件,最初由加州大学伯克利分校(UC Berkeley)开发。NS-2支持Windows、Linux、Unix、Mac以及其他支持POSIX标准的操作系统,它主要支持的操作系统是Linux系统,目前几乎支持所有主流的Linux发行版本,本文使用的是Windows+Cygwin平台。NS2是一个可扩展、易配置和可编程的事件驱动网络仿真引擎。底层的仿真引擎由C+编写,同时利用面向对象的OTCL语言作为仿真时命令和配置的接口语言。C+的特点

4、:具有很快的运行速度,但每次改变均需要编译,较为复杂,适合处理繁琐但比较固定的工作。OTCL在运行速度上无法和C+比拟,但相对来说更加灵活,适合用来设计个人的仿真方案。C+和OTCL之间通过TCLCL工具包实现互相调用。图1NS2进行网络模拟的基本流程为了分析仿真结果,NS2提供了两种基本数据追踪能力:一是跟踪,生成“.nam”和“.tr”文件。能够将每个数据包在任何时刻的状态保存到指定文件中,记录包在队列或链路中丢弃、到达、离开等行为;二是监视,用户有选择地记录自己需要的数据,可利用Gawk、Gnuplot等工具统计发送包、接收包及丢弃包等结果进行分析。在本文的仿真中,我们没有进行源代码的修

5、改,而是利用NS2中已有网络组建进行了仿真模拟,并利用图形界面给出了形式化的仿真结果。三、 TCP协议中相关机制TCP(Transmission Control Protocol:传输控制协议)对应于ISO/OSI模型的第四层传输层,传输层提供从源端到目的端的“端到端”连接。通过三次握手协议进行了会话连接后,TCP进入了会话维持阶段,在该阶段TCP的一个重要功能就是流量控制和拥塞控制,它用于处理网络中不同网段间不同速率的匹配,防止网络发生拥塞,并在数据包丢失时重发,以此提供稳定可靠的网络服务。3.1 拥塞控制与拥塞窗口拥塞控制室TCP协议的精髓,与流量控制只关注收发两端流量不同,拥塞控制关注整

6、个网络的流量,是一种全局控制机制。TCP提供了一系列的检测,避免和拥塞控制的方法。最著名和常用的就是“慢启动”(slow start)和动态拥塞窗口机制(Dynamic Congestion Window)。两者在实际应用中结合使用,系统为每个TCP连接维护两个变量:拥塞窗口(cwnd)和慢启动门限(ssthresh)。慢启动门限一般代表我们对网络容量的一个评估。在网络连接好后,初始发送的拥塞窗口为1,即第一次只能发送一个数据包,当得到该包的确认后,拥塞窗口大小翻倍,即cwnd=2,以此类推,窗口大小乘指数增长一直到慢启动门限大小,即cwnd=ssthresh。这相对于一开始就使用门限大小的窗

7、口发送数据来说是慢启动。慢启动结束后,系统进入了所谓的“冲突避免”(Congestion avoidance)阶段,该阶段拥塞窗口呈线性增长,每次窗口大小增加1。当冲突发生时,将采取冲突控制策略,同时动态调整拥塞窗口cwnd和慢启动门限值ssthresh,如:ssthresh=ssthresh/2;谈后拥塞窗口职位1,并重新启动慢启动过程。3.2 快速重传与快速恢复在TCP连接中如果收到12个重复的确认包(表示对第i个数据的确认包),这可能是一些报文段的重新排序,但如果连续收到3个或3个以上的重复,则可能是一个序列号为i的报文段丢失了。此时我们重传丢失的报文段,而无需等待定时器超时。这就是快速

8、重传算法。接下来执行的不是慢启动算法而是拥塞控制算法,该拥塞控制算法就是快速恢复算法。这个算法的实现过程如下:1、当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络。 2、再收到重复的ACK时,拥塞窗口增加1。3、当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。NS2中对TCP协议

9、中的上述几种机制都提供了支持。四、 仿真过程4.1TCP慢启动算法仿真本仿真中我们创建两个节点n0、n1,并在这两个节点之间创建一条TCP连接,为了便于对操作窗口大小进行配置,我们采用命令行传参的方式运行模拟脚本。(1) 编写tcl脚本在脚本中我们定义整个仿真过程,包括网络拓扑结构,tcp创建等,为了进一步绘制慢启动与非慢启动的对比图,我们还需要添加Record过程。#创建网络模拟对象set ns new Simulator #创建模拟器对象,每个模拟必须新建一个ns模拟器#打开Trace文件记录模拟结果set nf open out.nam w#添加finish过程以关闭模拟器和Trace文

10、件并启动Nam程序proc finish global ns nf $ns flush-trace close $nf exec nam out.nam & ;#&表示后台运行 exit 0#创建两个节点set n0 $ns nodeset n1 $ns node#在两个节点间创建一条链路,用到命令行输入的参数# 链路对象 起点 终点 链路带宽 链路延时 队列类型$ns duplex-link $n0 $n1 $bandwidth $delay DropTail#创建TCP连接set tcp $ns create-connection TCP/RFC793edu $n0 TCPSink $n1

11、 1#在该TCP连接上加上FTP的应用层业务数据set ftp new Application/FTP#Record过程set f0 open cwndrecNoss.tr w ;#打开记录文件proc Record ;#定义记录过程 global f0 tcp ns ;#声明全局变量 set intval 0.1 ;#设定记录间隔时间 set now $ns now ;#获取当前ns时间 set cwnd $tcp set cwnd_ ;#获取当前cwnd值 puts $f0 $now $cwnd ;#将时间点和cwnd值记录到文件中 $ns at expr $now + $intval R

12、ecord ;#定时调用记录过程$ns at 0.1 Record ;#ns首次调用Record过程(2) 仿真结果在仿真中我们设定带宽为1Mb,时延为100ms,窗口大小64,模拟时间5s。在startxwin窗口下输入ns slowstart.tcl 1Mb 100ms 64 5,开始运行仿真,得到如下仿真图:图2(a) 仿真开始图2(b) 第二次发送数据包图2(c) 第三次发送数据包图2(d) 第n次发送需要注意的是,在NS2中提供了多个TCP代理,其中TCP/RFC793edu不支持慢启动,而TCP/Reno支持慢启动,我们对他们分别进行了仿真,并记录到不同的Trace文件中。为了对比

13、慢启动和非慢启动,我们利用曲线图进行比较,这里我们利用NS2中的Xgraph进行绘图。图3慢启动对照曲线图通过仿真图我们可以形象的看到TCP协议慢启动的过程,在慢启动过程中,一次发送的数据包数目在慢启动开始成指数型增长,达到慢启动门限后成线性增长;而非慢启动过程在连接建立后立即大量传输数据,如此容易造成拥塞。4.2TCP快速重传和快速恢复仿真由于TCP/Reno已经实现了快速重传和快速恢复算法,因此,仿真过程采用该协议进行仿真,为了产生丢包,我们在拓扑过程中设置了一个瓶颈,因此在拓扑结构中采用了四个节点0、1、2、3,其中1、2之间网络带宽为0.5Mb,0、1之间和2、3之间网络带宽为5Mb。

14、仿真结果如下图:图4TCP快速重传与快速恢复仿真图图5数据包丢失后进行拥塞控制效果图通过对图4、5的对比分析,我们可以形象的看到TCP在快速重传和快速恢复的过程。由于本人对NS2中的gunplot工具不熟悉,没有将数据重传的具体的收发过程绘制出来,还请老师见谅。五、 总结本文利用NS2网络仿真器对TCP协议中的拥塞控制中慢启动、快速重传、快速恢复机制进行了仿真,并给出了仿真结果,使读者可以更加形象更加深入的了解TCP的这几种算法,达到了仿真的目的。其实利用NS2网络仿真器,我们不仅可以对TCP、UDP等网络协议进行仿真,还可以对路由队列管理机制,路由算法,以及无线网络、LAN、移动IP和卫星通信网络等进行仿真。而且由于它的开源性,仿真这可以自己编写相应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论