通信网原理实验报告ns2.docx

上传人:b****8 文档编号:23999517 上传时间:2023-05-23 格式:DOCX 页数:12 大小:301.75KB
下载 相关 举报
通信网原理实验报告ns2.docx_第1页
第1页 / 共12页
通信网原理实验报告ns2.docx_第2页
第2页 / 共12页
通信网原理实验报告ns2.docx_第3页
第3页 / 共12页
通信网原理实验报告ns2.docx_第4页
第4页 / 共12页
通信网原理实验报告ns2.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

通信网原理实验报告ns2.docx

《通信网原理实验报告ns2.docx》由会员分享,可在线阅读,更多相关《通信网原理实验报告ns2.docx(12页珍藏版)》请在冰豆网上搜索。

通信网原理实验报告ns2.docx

通信网原理实验报告ns2

实验四ns2

一、实验目的

1.掌握ns2仿真器的使用方法;

2.增强对计算机通信网原理课程的理解。

二、实验环境

1.PC机一台;

2.cygwin、ns2软件。

三、实验内容

(一)安装与配置

1.安装cygwin

a)在cygwin官方网站下载setup.exe。

b)运行setup.exe,使用默认配置选择unix安装。

c)在选择安装组件时确认安装以下内容:

XFree86-base,XFree86-bin,XFree86-prog,XFree86-lib,XFree86-etc,make,patch,perl,gcc,gcc-g++,gawk,gnuplot,tar和gzip。

Diffstat,diffutils,libXmu,libXmu-devel,libXmu6,libXmuu1,

X-startup-scripts

xorg-x11-base

xorg-x11-bin

xorg-x11-devel

xorg-x11-bin-dlls

xorg-x11-bin-lndir

xorg-x11-etc

xorg-x11-fenc

xorg-x11-fnts

xorg-x11-libs-data

xorg-x11-xwin

2.安装NS2

a)在NS2官方网站下载ns2-allinone-2.34.tar.gz安装包。

b)将ns2-allinone-2.34.tar.gz拷贝放入cygwin用户目录下。

c)运行cygwin,命令行下输入tarxvfzns2-allinone-2.34.tar.gz。

d)进入ns2-allinone-2.34目录,执行./install开始安装。

e)安装结束后,会提示设定PATH,LD_LIBRARY_PATH,TCL_LIBRARY等内容,可在用户目录下修改.bashrc文件,添加以下内容:

exportNS_HOME=/home/Administrator/ns-allinone-2.34

exportPATH=$NS_HOME/nam-1.13:

$NS_HOME/tcl8.4.18/unix:

$NS_HOME/tk8.4.18/unix:

$NS_HOME/bin:

$PATHexportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.18/unix:

$NS_HOME/tk8.4.18/unix:

$NS_HOME/otcl-1.13:

$NS_HOME/lib:

$LD_LIBRARY_PATHexportTCL_LIBRARY=$NS_HOME/tcl8.4.18/library

f)进入~/ns-allinone-2.34/ns-2.34目录,可运行./validate进行验证。

3.测试

a)关闭cygwin窗口,再重新打开。

b)初始化图形界面,运行startxwin.bat。

c)运行exampletcl脚本。

进入~/ns-allinone-2.34/ns-2.34/tcl/ex目录,可选择运行以下example:

nssimple-dyn.tcl

nssimple-rtg.tcl

nssimple-eqp.tcl

nssimple-eqp1.tcl

(二)数据分析

a)RED队列分析

图一当前队列大小

分析图一可以得出,队列大小变化非常剧烈,而且在三秒之前,队列没有充分地利用起来,三秒之后tcp1和tcp2竞争使用队列比较剧烈。

图二平均队列大小

分析图二可以看出,开始时tcp1急剧占用链路r1-r2,造成队列急剧增大。

当增大到一定值时便达到了峰值。

从第三秒开始,由于tcp2的加入,队列又有了一部分的增大,增大到最大值后便开始小幅度地波动。

b)Tcp2的延迟分布

图三Tcp2传输延迟

从图三中可以看出Tcp2的最小延迟为28ms,这是由于从s2到r1需要延迟3ms,从r1到r2需要延迟20ms,从r2到s4需要延迟5ms,一共刚好延迟28ms。

另外它的延迟时间大小呈现出一定的规律。

即每次增大到一定程度时,延迟降为最小值28ms,这是因为多余的延迟是由r1结点的队列造成的,每个包到来时都要在队列中等待一段时间。

也就是说队列越长,延迟就越大,当队列长度增加到一定值时,根据RED队列丢弃算法会丢弃一些包,这导致Tcp的发送窗口降为0,队列长度也就变为0了,延迟也就降为最小值。

 

c)Tcp2的丢包率

图四Tcp2丢包率

检测到Tcp2传输了446个包,其中丢弃的包为16个,故丢包率为3.59%。

d)Tcp2的抖动

图五Tcp2抖动性

从图五中可以看出tcp2的Jitter的变化比较大,有正也有负的。

由于tcp1的存在并且s1到r1的链路延迟更小,它能够更好地占用r1到r2的链路资源。

图六Tcp1抖动性

从图六中可以看出在0到3秒内由于没有其他流抢用资源,它没有什么抖动,当tcp2介入时,它便有了一定的抖动,但不像tcp2抖动得那样厉害。

 

e)Tcp2的吞吐量

图七Tcp2吞吐量变化

从图七中可以看出从3秒开始Tcp2的吞吐量按指数增加,当增大到一定值时便开始波动,基本上维持在0.4Mb/s左右。

这是因为链路r1到r2的带宽只有1.5Mb/s,并且tcp1在传输延迟上有更大的优势。

(三)脚本程序

主要步骤有以下几个:

1.初始化一个模拟器。

2.设定相应的跟踪文件以便相应的分析工具使用,包括tr文件等,Trace对象能够把模拟过程中发生的特定类型的事件记录在tr文件中。

3.定义网络的拓扑结构,包括结点位置,链路信息等等。

4.设定传输层及应用层代理,并将传输层代理绑定在相应的结点上,将应用层的代理绑定在相应的传输层代理上。

5.建立传输层链接。

6.设定模拟的开始和结束时间。

7.运行该tcl文件,观察模拟的结果。

;#新的模拟器对象:

setns[newSimulator]

$nscolor1Red

$nscolor2Blue

settn[openhomework.namw];#用于保存nam跟踪文件

$nsnamtrace-all$tn

setta[openhomework.trw];#保存trace文件

$nstrace-all$ta

sethomeWorkWinFile[openhomeWorkWinFilew];#保存tcp发送窗口大小

;#定义一个finish过程,包括关闭两个trace文件,以及一个nam模拟

procfinish{}{

globalnstnta

$nsflush-trace

close$tn

close$ta

execnamhomework.nam&

exit0

}

;#定义结点

sets1[$nsnode]

sets2[$nsnode]

setr1[$nsnode]

setr2[$nsnode]

sets3[$nsnode]

sets4[$nsnode]

;#定义链路,包括起点,终点,带宽,延迟,队列处理方式

$nsduplex-link$s1$r110Mb2msDropTail

$nsduplex-link$s2$r110Mb3msDropTail

$nssimplex-link$r1$r21.5Mb20msRED

$nssimplex-link$r2$r11.5Mb20msDropTail

$nsduplex-link$r2$s310Mb4msDropTail

$nsduplex-link$r2$s410Mb5msDropTail

;#定义链路的位置

$nsduplex-link-op$s1$r1orientright-down

$nsduplex-link-op$s2$r1orientright-up

$nssimplex-link-op$r1$r2orientright

$nssimplex-link-op$r2$r1orientleft

$nsduplex-link-op$r2$s3orientright-up

$nsduplex-link-op$r2$s4orientright-down

$nsqueue-limit$r1$r225;#定义队列的大小,这是要给NAM用的

$nssimplex-link-op$r1$r2queuePos0.5;#观测n2到n3之间queue的变化,这是要给NAM用的

;#采用RED的队列处理方式

setredq[[$nslink$r1$r2]queue]

settraceq[openhomeWorkRedTrace.trw]

$redqtracecurq_

$redqtraceave_

$redqattach$traceq

;#绑定代理

settcp1[newAgent/TCP]

$nsattach-agent$s1$tcp1

settcp2[newAgent/TCP]

$nsattach-agent$s2$tcp2

$tcp1setfid_1

$tcp2setfid_2

setsinktcp1[newAgent/TCPSink]

$nsattach-agent$s3$sinktcp1

setsinktcp2[newAgent/TCPSink]

$nsattach-agent$s4$sinktcp2

;#建立链接

$nsconnect$tcp1$sinktcp1

$nsconnect$tcp2$sinktcp2

;#绑定应用层代理

setftp1[newApplication/FTP]

$ftp1attach-agent$tcp1

setftp2[newApplication/FTP]

$ftp2attach-agent$tcp2

$ftp1settype_FTP

$ftp2settype_FTP

;#启动或停止应用层代理

$nsat0"$ftp1start";#ftp1在0秒位置启动

$nsat3"$ftp2start";#ftp2在3秒位置启动

$nsat10"$ftp2stop"

$nsat10"$ftp1stop"

;#每隔0.1秒记录窗口大小

procplotWindow{tcpSourcefile}{

globalns

settime0.1

setnow[$nsnow]

setcwnd[$tcpSourcesetcwnd_]

puts$file"$now$cwnd"

$nsat[expr$now+$time]"plotWindow$tcpSource$file"

}

$nsat0.1"plotWindow$tcp2$homeWorkWinFile";#从0.1秒开始记录tcp1的窗口大小

$nsat40"finish";#在40秒位置结束

$nsrun

四、实验总结

这次实验是我第一次使用ns2软件,ns2软件学习起来比较困难,但是真正理解之后,还是很有意思的。

利用ns2软件可以进行网络的模拟仿真,进行新协议的开发和改进,比如TCP等传输协议,以及AODV等路由协议,用NS2来进行模拟是比较方便的,对于一个计算机网络来讲,这些协议是至关重要的。

但是NS2学习起来有一定的困难,大部分是C++代码与OTcl发代码,但是真正掌握了它的原理和用法,用起来还是很方便的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

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

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