网站大量收购独家精品文档,联系QQ:2885784924

基于NS2的TCP拥塞控制仿真.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于NS2的TCP建模与仿真 摘要:TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。本文利用NS2网络仿真器对TCP/IP中的拥塞控制与拥塞窗口,快速重传与快速恢复算法进行了仿真,使对协议中的几种机制和算法有了形象的理解。 关键字:TCP/IP协议,NS2仿真,拥塞控制,快速重传,快速恢复 引言 TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。例如,TCP协议在RFC793中正式定义;RFC1122对如何检测错误和不一致性以及解决方法进行了说明;RFC1323给出了对TCP的一些扩展功能;RFC2518中重点阐述了TCP的拥塞控制机制描述了更新后避免过度拥塞的算法;RFC3168描述了对显示拥塞的报告等。据统计,当前在所有因特网的数据包中,大约有95%包的传送使用了TCP协议,因此针对TCP协议相关机制的研究很有实际意义。 在TCP协议的研究中,仿真是一种有效又经济的研究方法,而且可以给人以更加形象的认识。目前的网络仿真工具主要包括两类:一是基于大型网络开发的网络仿真工具,如OPNET、GloMoSim等;二是基于小型网络开发的网络仿真工具,如NS2、COMNET III等。大多数网络仿真工具的价格昂贵,而本文采用的NS2是一种应用广泛、影响力较大源代码公开的网络模拟软件 图1 NS2进行网络模拟的基本流程 为了分析仿真结果,NS2提供了两种基本数据追踪能力跟踪。能够将每个数据包在任何时刻的状态到指定文件中,包在队列或链路中丢弃、到达、离开行为监视有选择记录自己需要的数据,统计发送包、接收包丢弃包。Congestion avoidance)阶段,该阶段拥塞窗口呈线性增长,每次窗口大小增加1。当冲突发生时,将采取冲突控制策略,同时动态调整拥塞窗口cwnd和慢启动门限值ssthresh,如:ssthresh=ssthresh/2;谈后拥塞窗口职位1,并重新启动慢启动过程。 快速重传与快速恢复 在TCP连接中如果收到1~2个重复的确认包(表示对第i个数据的确认包),这可能是一些报文段的重新排序,但如果连续收到3个或3个以上的重复,则可能是一个序列号为i的报文段丢失了。此时我们重传丢失的报文段,而无需等待定时器超时。这就是快速重传算法。接下来执行的不是慢启动算法而是拥塞控制算法,该拥塞控制算法就是快速恢复算法。 这个算法的实现过程如下: 1、当收到3个重复ACK时,把ssthresh设置为cwnd的一半,把cwnd设置为ssthresh的值加3,然后重传丢失的报文段,加3的原因是因为收到3个重复的ACK,表明有3个“老”的数据包离开了网络。 再收到重复的ACK时,拥塞窗口增加1。 当收到新的数据包的ACK时,把cwnd设置为第一步中的ssthresh的值。原因是因为该ACK确认了新的数据,说明从重复ACK时的数据都已收到,该恢复过程已经结束,可以回到恢复之前的状态了,也即再次进入拥塞避免状态。set nf [open out.nam w] …… #添加finish过程以关闭模拟器和Trace文件并启动Nam程序 proc finish {} { global ns nf $ns flush-trace close $nf exec nam out.nam ;#表示后台运行 exit 0 } #创建两个节点 set n0 [$ns node] set n1 [$ns node] #在两个节点间创建一条链路,用到命令行输入的参数 # 链路对象 起点 终点 链路带宽 链路延时 队列类型 $ns duplex-link $n0 $n1 $bandwidth $delay DropTail …… #创建TCP连接 set tcp [$ns create-connection TCP/RFC793edu $n0 TCPSink $n1 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时间 s

文档评论(0)

管理学科 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档