NS-2下的TCP和TCPReno模块程序.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
NS-2下的TCP和TCP Reno模块分析 NS-2简介 NS是由UC Berkeley开发的,基于C++和Otcl两种程序设计语言实现的网络环境模拟器,用于各种IP网络环境。目前NS实现了对许多网络协议的模拟,如TCP,UDP,和数据源发生器(traffic source)如FTP,WWW,Telnet,Web,CBR和VBR等。同时模拟了路由队列的管理机制,如Drop Tail,RED和VBR,也实现了Dijkstra和其他的路由算法。 本论文采用NS-2环境,分析了TCP和TCP Veno协议,并由此构造出NS-2下的TCP Veno协议环境。如果不做说明,本章及以后的TCP协议都是指的TCP Tahoe协议。 NS-2下的TCP模块分析 NS-2下的TCP模块介绍 本测试采用了NS-2.26环境,TCP及TCP模块放在ns-allinone-2.26\ns-2.26\tcp目录下,涉及tcp.h,tcp.cc,tcp-reno.cc三个文件。另外,各模块的默认参数文件ns-default.tcl放在ns-allinone-2.26\ns-2.26\tcl\lib目录下。由于只是用于网络模拟,这里的TCP模块是单向代理,发送端和接收端分离开,接收端不能发送数据(只能发送ACK),而发送端也不能接收数据(只能接收ACK)。单向连接对于我们的测试来说,是没有影响的。 TCP模块的tcp.cc和tcp.h文件包含TCP TAHOE及其各中改进版本可能用到的公用参数和公用子程序,改进版本包括TCP Vegas 、TCP Reno、NEW Reno,应用了其他一些改进算法的TCP如TCP ABS、TCP FACK、TCP QS等也用到了这些参数和子程序。在这里我们对其他的改进算法不进行分析,仅分析接收和运行TCP Veno有关的参数和子程序。 TCP与上层应用层的数据交换(如FTP等)使用了send_msg(nbytes,char*) , 由FTP调用,将FTP的数据发送到TCP层。而TCP在对FTP的数据进行分组处理后,与下层IP层进行通信,交换数据用到了底层的子程序send_one(*pkt,flags), 由TCP调用,用来将单个数据包发送到IP层,并由IP层进行转发到目的地。 TCP模块的分组头 NS-2采用了分组头的概念,用分组头代表一个分组,而没有具体的数据。发送和接收都只处理分组头,因为网络模拟是不需要具体的数据的,并且这种设计降低了计算机的开销,使单台计算机进行模拟网络成为可能。NS-2中,一个分组由多个分组头构成,如一个分组可以包括IP分组头、TCP分组头、RTP分组头、AODV分组头等。如果只传TCP,就可以去掉其他分组头。 TCP的分组头在tcp.h中定义。如下: struct hdr_tcp { double ts_; /* 发端发送时盖的时间戳*/ double ts_echo_; /* 对端收到时盖的时间戳 */ int seqno_; /* 本数据包的发送序号*/ int reason_; /*重传的原因*/ … static int offset_; // 本分组头在分组中的偏移量 inline static int offset() { return offset_; } //取得偏移量值 inline static hdr_tcp* access(Packet* p) { //用于从分组获取本TCP分组头 return (hdr_tcp*) p-access(offset_); } /* 用于获取前面参数的子程序 */ double ts() { return (ts_); } double ts_echo() { return (ts_echo_); } int seqno() { return (seqno_); } int reason() { return (reason_); } … }; 其中ts_、ts_echo_用于计算rtt时间,offset_记录下本TCP分组头在该分组中的偏移,而acess(*p)则根据此偏移量来获取该分组。TCP的发端和收端就是通过发送本端TCP分组头和接收对端分组头,来获取数据包的序号等信息,完成双方的通信。 TCP模块参数介绍 除了分组头的参数,TCP中的大量参数在TCP代理的类定义class TcpAgent中给出。下面列出了常用的参数: TracedInt t_rtt_; /* 往返时间RTT */ TracedInt t_srtt_; /

文档评论(0)

1112111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档