ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:35.80KB ,
资源ID:21253804      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21253804.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(TCP与UDP模拟实验Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

TCP与UDP模拟实验Word下载.docx

1、 若是没有额外的参数设置,TCP封包的长度为1KB。此外,若想查看NS2模拟参数内定值,可以在ns-allinone-2.29ns-2.29tcllib目录下的ns-default.tcl中找到。另外,在s2到d之间有一条固定的传输速率的联机(Constant Bit Rate,CBR),CBR应用程序的结构在UDP之上,为此必须在s2使用UDP agent来产生,“udp”用来发送UDP封包,在d上使用Null Agent来产生“sink”,以接收由s2传送过来的UDP封包,然后再把接收的封包释放出来。CBR的传输速率为1Mbps,每一个封包大小为1KB。CBR是在0.1s开始传送,在4.5

2、s结束传输;FTP是在1.0s开始传送,4.0s结束传输。2.TCL程序代码:#针对不同的数据流定义不同的颜色,这是要给NAM用的$ns color 1 Blue$ns color 2 Red#打开一个NAM记录文件set nf open out.nam w$ns namtrace-all $nf#打开一个仿真过程记录文件,用来记录封包传送的过程set nd open out.tr w$ns trace-all $ndproc finish global ns nf nd $ns flush-trace close $nf close $nd #以背景执行的方式去执行NAM exec nam

3、out.nam &#产生传输结点,s1的id为0,s2的id为1set s1 $ns nodeset s2 $ns node#产生路由器结点,r的id为2set r $ns node#产生数据接收结点,d的id为3set d $ns node#s1-r的链路具有2Mbps的频宽,10ms的传递延迟时间,DropTail的队列管理方式#s2-r的链路具有2Mbps的频宽,10ms的传递延迟时间,DropTail的队列管理方式#r-d的链路具有1.7Mbps的频宽,20ms的传递延迟时间,DropTail的队列管理方式$ns duplex-link $s1 $r 2Mb 10ms DropTail

4、$ns duplex-link $s2 $r 2Mb 10ms DropTail$ns duplex-link $r $d 1.7Mb 20ms DropTail#设置r到d之间的Queue Limit为10个封包大小$ns queue-limit $r $d 10#设置结点的位置,这是要给NAM用的$ns duplex-link-op $s1 $r orient right-down$ns duplex-link-op $s2 $r orient right-up$ns duplex-link-op $r $d orient right#观测r到d之间queue的变化,这是要给NAM用的$n

5、s duplex-link-op $s1 $r queuePos 0.5#建立一条TCP的联机set tcp new Agent/TCP$ns attach-agent $s1 $tcpset sink new Agent/TCPSink$ns attach-agent $d $sink$ns connect $tcp $sink#在NAM中,TCP的联机会以蓝色表示$tcp set fid_1#在TCP联机之上建立FTP应用程序set ftp new Application/FTP$ftp attach-agent $tcp$ftp set type_FTP#建立一条UDP的联机set ud

6、p new Agent/UDP$ns attach-agent $s2 $udpset null new Agent/null$ns attach-agent $d $null$ns connect $udp $null#在NAM中,UDP的联机会以红色表示$tcp set fid_2#在UDP联机之上建立CBR应用程序set cbr new Application/CBR$cbr attach-agent $udp$cbr set type_CBR#设置传送封包的大小为1000byte$cbr set packet_size_1000#设置传送的速率为1Mbps$cbr set rate_1

7、mb$cbr set random_false#设置FTP和CBR数据传送开始和结束时间$ns at 0.1 “$cbr start”$ns at 1.0 “$ftp start”$ns at 4.0 “$ftp stop”$ns at 4.5 “$cbr stop”#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$ns at 4.5 “$ns detach-agent $s1 $tcp; $ns detach-agent $d $sink”#在模拟环境中,5s后去调用finish来结束模拟(这样要注意模拟环境中的5s并不一定等#于实际模拟的时间)#执行模拟3.执行方法在执行此T

8、CL script时,请先进入绘图模式。($是在cygwin下的提示符号)$ startxwin.bat$ ns lab3.tcl4.执行结果 在与lab3.tcl同一个目录下会产生一个out.tr(仿真过程记录文件)和一个out.nam(NAM记录文件),另外会打开两个新窗口(图略)。5.执行NAM,观察网络仿真的过程(图略)。五、分析模拟结果1.仿真过程记录文件内容与格式 模拟结束后,除了使用NAM观看模拟的过程,另外就是使用仿真过程记录文件去做一些数值的分析,因此这个记录文件很重要,所以需要先了解这些记录文件中记录的格式。 以下是out.tr的部分记录+ 0.108 1 2 cbr 10

9、00 2 1.0 3.1 1 1- 0.108 1 2 cbr 1000 2 1.0 3.1 1 1r 0.114 1 2 cbr 1000 2 1.0 3.1 0 0+ 0.114 1 2 cbr 1000 2 1.0 3.1 0 0Eventtimefromnodetopkttypesizeflagsfidsrcaddrdstseqnumpkt idr :receive (at to_node);+ :enqueue (at queue);- :dequeue (at queue);d :drop (at queue);src_addr :node.port;dst_addr :node.

10、port. 每一笔记录的开始都是封包事件发生的原因,若是“r”,则表示封包被某个结点所接收;若是“+”则表示进入了队列;若是“”则表示离开队列;若是“d”则表示封包被队列所丢弃。接着的第二个字段表示的是事件发生的时间;字段三和字段四表示事件发生的地点(从from node到to node);字段五表示封包的类型;字段六是封包的大小,字段七是封包的标记标注;字段八表示封包是属于哪一个数据流;字段九和字段十表示封包的来源端和目的端,这两个字段的格式是a.b,a代表结点编号,b表示端口号(Port Number);字段十一表示封包的序号;字段十二表示封包的id。 以前面仿真过程记录文件的第一笔为例,

11、意思说有一个封包packet id为1,数据流id为2,序号为1,长度为1000bytes,类型为CBR,它是从来源端1.0要到目的地3.1,在时间0.1s的时候,从结点1(s2)进入了结点2(r)的队列中。2.端点到端点的延迟(End-to-End Delay)#这是测量CBR封包端点到端点延迟时间的awk程序BEGIN#程序初始化,设置一变量以记录目前最高处理封包的ID highest_packet_id=0; action=$1; time=$2; from=$3; to=$4; type=$5; pktsize=$6; flow_id=$8; src=$9; dst=$10; seq_

12、no=$11; packet_id=$12;#记录目前最高的packet ID if (packet_id highest_packet_id) highest_packet_id=packet_id;#记录封包的传送时间 if (start_timepacket_id=0) start_timepacket_id=time;#记录CBR(flow_id=2)的接收时间 if (flow_id=2 & action!= “d”) if (action= “r”) end_timepacket_id=time;else #把不是flow_id=2的封包或者是flow_id=2但此封包被drop的

13、时间设为1 end_timepacket_id=-1;END#当数据行全部读取完后,开始计算有效封包的端点到端点的延迟时间 for (packet_id=0;packet_id=highest_packet_id;packet_id+) start=start_timepacket_id; end=end_timepacket_id; packet_duration=end start;#只把接收时间大于传送时间的记录列出来 if(startcbr_delay3.抖动率(Jitter) 抖动率就是延迟时间变化量(Delay Variance),由于网络的流量随时都在变化,当流量大的时候,许多封

14、包就是必须在结点的队列中等待被传送,因此每个封包从传送端到目的地端的时间也不一定会相同,而这个不同的差异就是所谓的抖动率。抖动率越大,则表示网络越不稳定。#这是测量CBR封包jitter的awk程序#jitter=(recvtime(j) sendtime(j)-(recvtime(i)-sendtime(i)/(j-i),其中ji highest_packet_id) if (start_timepacket_id=0) #记录下包的seq_no pkt_seqnopacket_id=seq_no; #初始化jitter计算所需变量 last_seqno=0; last_delay=0; s

15、eqno_diff=0;#当数据列全部读取完后,开始计算有效封包的端点到端点的延迟时间end)#得到了delay值(packet_duration)后计算jitterseqno_diff=pkt_seqnopacket_id last_seqno;delay_diff=packet_duration last_delay;if (seqno_diff=0) jitter=0; jitter=delay_diff/seqno_diff;printf(“%f%fn”,start,jitter);last_seqno=pkt_seqnopacket_id;last_delay=packet_dura

16、tion;执行方法($为cygwin shell的提示符号)。$awk f measure-jitter.awk out.tr若要把结果存到文件中,可使用导向的方式,把结果存到cbr_jitter文件中。$awk f measure-jitter.awk out.trcbr_jitter执行结果:(略)4.封包遗失率(Packet Loss)#这是测量CBR封包遗失率的awk程序#程序初始化,设置一变量记录packet被drop的数目 fsDrops=0; numFs=0;#统计从n1送出多少packets if(from=1 & to=2 & action= “+”) numFs+;#统计f

17、low_id为2,且被drop的封包 if(flow_id=2 & action= “d”) fsDrops+;end printf(“number of packets sent:%d lost:%dn”,numFs,fsDrops);执行方式($为cygwin shell的提示符号)。 $awk f measure-loss.awk out.tr执行结果。 number of packets sent:550 lost:8这代表CBR送出了550个封包,但其中8个封包被丢掉了。5.吞吐量(Throughput)#这是测量CBR封包平均吞吐量(Average Throughput)的awk程

18、序 init=0; i=0;action=$1; if (action= “r” & from=2 & to=3 & flow_id=2) pkt_byte_sumi+1=pkt_byte_sumi+pktsize; if (init=0) start_time=time; init=1; end_timei=time; i=i+1;#为了画图好看,把第一笔记录的throughput设为零,以表示传输开始 printf(“%.2ft%.2fn”,end_time0,0); for (j=i;ji;j+)#单位为kbps th=pkt_byte_sumj/(end_timej-start_time)*8/1000; printf(“%.2ft%.2fn”,end_time,th); printf(“%.2ft%.2fn”,end_timei-1,0); $awk f measure-throughput.awk out.tr注:利用绘图工具gnuplot呈现模拟结果。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1