当前位置:文档之家› ns2使用及实验报告级计算机网络实验

ns2使用及实验报告级计算机网络实验

高级计算机网络实验吴德云SC11011042-SC11011042-吴德云一、实验目的学生能够初步掌握NS2网络模拟平台,并且能够利用网络模拟平台进行简单的实验,加深对TCP拥塞控制与流量控制机制的理解,并且能够为实验需要简单修改NS2的核心模块。

二、实验要求1、了解NS2基本原理。

2、熟悉Tcl和Otcl脚本语言。

3、熟悉分裂对象模型和Tcl。

4、熟悉NS的基本模块。

5、按照《NS2安装与使用.doc》的操作流程搭好实验必需的环境。

6、本次实验室的核心是,按照预设改变修改NS2核心模块(即C++代码),并用利用NS2模拟出修改后的效果。

三、实验过程1、安装NS2点击/sourceforge/nsnam/ns-allinone-2.33.tar.gz下载。

下载的版本是有问题的,源文件有两个bug。

1、选择解压缩位置本演示实验在当前用户下新建PROGRAM目录:图2:解压缩位置2、解压缩鼠标右击软件包选择解压缩到此处:图3:解压缩3、在终端安装(1)打开一个终端(位置:应用程序>系统工具>终端):在终端里输入sudo-i,回车;按提示输入密码,回车,进入root权限操作:图4:进入root权限(2)下载并安装下一步安装ns-2.33时所必需要的系统包:首先,在终端里输入apt-get install build-essential进行下载、安装,这一步是为了gcc and some essential的安装;接着,在终端里输入apt-get install tcl8.4tcl8.4-dev tk8.4tk8.4-dev进行下载、安装,这一步是为了tcl and tk的安装;(注意4个名字中间用空格隔开)最后,在终端里输入apt-get install libxmu-dev进行下载、安装,这一步是为了nam的安装。

以上三步示意图如下:图5:apt-get install build-essential图6:apt-get install tcl8.4tcl8.4-dev tk8.4tk8.4-dev图7:apt-get install libxmu-dev(3)输入cd命令,转到ns-allinnone-2.33文件夹下,输入./install,进行安装,如下图所示:图8:安装NS2程序按下回车键,同学们可以休息一会啦,这个过程大概需要5分钟左右(具体时间关乎您机器的性能),5分钟之后大概出现如下提示:Ns-allinone package has been installed successfully.Here are the installation places:tcl8.4.18:/home/ttcndujian/PROGRAM/ns-allinone-2.33/{bin,include,lib}tk8.4.18:/home/ttcndujian/PROGRAM/ns-allinone-2.33/{bin,include,lib}otcl:/home/ttcndujian/PROGRAM/ns-allinone-2.33/otcl-1.13tclcl:/home/ttcndujian/PROGRAM/ns-allinone-2.33/tclcl-1.19ns:/home/ttcndujian/PROGRAM/ns-allinone-2.33/ns-2.33/nsgt-itm:/home/ttcndujian/PROGRAM/ns-allinone-2.33/itm,edriver,sgb2alt,sgb2ns,sgb2comns,sgb2hierns----------------------------------------------------------------------------------Please put/home/ttcndujian/PROGRAM/ns-allinone-2.33/bin:/home/ttcndujian/PROGRAM/ns-allinone-2.33 /tcl8.4.18/unix:/home/ttcndujian/PROGRAM/ns-allinone-2.33/tk8.4.18/unixinto your PATH environment;so that you'll be able to run itm/tclsh/wish/xgraph.IMPORTANT NOTICES:(1)You MUST put/home/ttcndujian/PROGRAM/ns-allinone-2.33/otcl-1.13,/home/ttcndujian/PROGRAM/ns-allinone-2.33/lib,into your LD_LIBRARY_PATH environment variable.If it complains about X libraries,add path to your X librariesinto LD_LIBRARY_PATH.If you are using csh,you can set it like:setenv LD_LIBRARY_PATH<paths>If you are using sh,you can set it like:export LD_LIBRARY_PATH=<paths>(2)You MUST put/home/ttcndujian/PROGRAM/ns-allinone-2.33/tcl8.4.18/library into your TCL_LIBRARY environmentalvariable.Otherwise ns/nam will complain during startup.After these steps,you can now run the ns validation suite withcd ns-2.33;./validateFor trouble shooting,please first read ns problems page/nsnam/ns/ns-problems.html.Also search the ns mailing list archivefor related posts.此时,ns2程序已基本安装结束,下面需要做的是按照下面给出的提示来配置环境变量,否则无法使用。

退出现在使用的这个终端,重现打开一个,进行下一步操作:5、设置环境变量在新建的终端里输入如下命令:gedit.bashrc,回车。

(注意不要忘记bashrc前面的点,而且新打开的bashrc不是空文件)在打开的文件里最下方添加如下内容:export PATH="$PATH:/home/ttcndujian/PROGRAM/ns-allinone-2.33/bin:/home/ttcndujian/PROGRAM/ns-allinone-2.33/tcl8.4.18/unix" export LD_LIBRARY_PA TH="$LD_LIBRARY_PAHT:/home/ttcndujian/PROGRAM/ns-allinone-2.33/otcl-1.13,/home/ttcndujian/PROGRAM/ns-allinone-2.33/lib"export TCL_LIBRARY="$TCL_LIBRARY:/home/ttcndujian/PROGRAM/ns-allinone-2.33/tcl8.4.18/library"然后,保存,退出。

(注意黑色部分可能与你具体的ns-allinone-2.33安装路径相关)。

示意图如下:图9:输入命令,准备添加环境变量图10:添加环境变量这样,一个完整的NS就安装好了。

重启终端,以便重新载入环境变量,使刚才的配置生效。

6、验证安装(1)在重启后的终端下输入ns,如果得到%,说明安装成功,如图:图11:验证NS2安装成功(2)安装xgraph:输入命令:sudo apt-get install xgraph,输入密码回车安装xgraph,如图所示:图10:安装xgraph7、运行例子先进入目录/home/ttcndujian/PROGRAM/ns-allinone-2.33/ns-2.33/tcl/ex,然后键入命令ns simple.tcl,并回车,如图所示:图11:准备运行例子图12:例子运行成功此时出现上面的网络模拟动画。

至此,NS就算是安装好了:)。

注意:安装过程中出现了如下错误***buffer overflow detected***:ns terminated=======Backtrace:=========这是gcc的版本问题,解决方法如下:a安装gcc-4.4输入:sudo apt-get intall gcc-4.4b.安装g++-4.4输入:sudo apt-get intall g++-4.4c.修改tcl8.4.18/unix文件夹下的文件Makefile.in将Makefile.in的270行:CC=@CC@修改为:CC=@CC@-V4.4;注意是大写的‘V’,这样gcc使用的参数版本为4.4。

d.重新安装ns2.33。

2、编写Tcl脚本(1)编写一个Tcl脚本,实现如图1的一个网络拓扑。

实现以下仿真:a.节点0与节点4之间用FTP协议实现连接;b.节点1与节点4之间用UDP的CBR应用;c.节点3与节点4之间用FTP协议实现连接。

图1(2)脚本编写#产生一个仿真的对象set ns[new Simulator]#针对不同的数据流定义不同的颜色,这是要给NAM用的$ns color1Blue$ns color2Red$ns color3Green#开启一个NAM trace fileset nf[open out.nam w]$ns namtrace-all$nf#开启一个trace file,用来记录封包传送的过程set nd[open out.tr w]$ns trace-all$nd#定义一个结束的程序proc finish{}{global ns nf nd$ns flush-traceclose$nfclose$nd#以背景执行的方式去执行NAMexec nam out.nam&exit0}#产生四个网络节点set n0[$ns node]set n1[$ns node]set n2[$ns node]set n3[$ns node]set n4[$ns node]#把节点连接起来$ns duplex-link$n0$n22Mb10ms DropTail$ns duplex-link$n1$n22Mb10ms DropTail$ns duplex-link$n2$n41.7Mb20ms DropTail$ns duplex-link$n3$n43Mb10ms DropTail#设定ns2到n4之间的Queue Size为10个封包大小$ns queue-limit$n2$n410#设定节点的位置,这是要给NAM用的$ns duplex-link-op$n0$n2orient right-down$ns duplex-link-op$n1$n2orient right-up$ns duplex-link-op$n2$n4orient right$ns duplex-link-op$n3$n4orient left-up#观测n2到n4之间queue的变化,这是要给NAM用的……具体参见SC11011042.tcl3、修改NS2核心模块(1)预设改变:修改队列的丢包策略,当接收队列中未丢包,数据包正常入队列,一旦出现队列丢包现象,则暂停接受数据包,一直到队列为空再接受。

相关主题