您好,欢迎访问三七文档
1、NS-2的安装√2、NS-2的结构及模拟过程√3、NS-2中TCL脚本的编写√4、模拟结果分析√5、NS-2基本应用实例√一些说明:本章大多实例均从相关参考书和网络上提取并稍微作很小改动来进行展开和分析,每一个实例都亲自测试,保证能用。由于能力有限,能够讲的都讲了,讲的不清楚的地方也是因为自己本省理解不透彻。还有些比较深入和复杂的内容,自己还不懂,而且限于篇幅也没有能够讲到。主要参考资料:方路平,刘世华等。《NS-2网络模拟基础与应用》。国防工业出版社,2008;张基温。《计算机网络实验与实践教程》。清华大学出版社,2005;NSbyExample.://其他网络论坛和个人主页等。NS-2网络模拟对计算机网络技术的研究通常有三种方式:理论研究、网络模拟、试验网测试。在上述三种网络研究方式中,昀常用的是利用软件进行网络模拟。其中在大多数的模拟软件中,NS-2(NetworkSimulator,version2)网络模拟器是对网络协议进行评估与研究的一个主流模拟软件。这是一款开放源代码的网络模拟软件,昀初由加州大学伯克利分校(UCBerkeley)开发。全世界范围内众多学术机构以及个人采用NS-2来进行研究,很多大学把NS-2作为网络理论和技术课程的辅助工具,大量的期刊和会议论文都采用NS-2作为功能和性能评估工具。NS-2采用了分裂对象模型的开发机制,使用了C++和OTcl两种开发语言进行开发,它们之间利用TclCL(OTclC++Linkage)机制相互映射。之所以使用两种编程语言,是因为模拟器需要做两个方面的事情。一方面,具体协议的模拟和实现,需要一种程序设计语言能够高效的处理字节、报头等信息,以便能够应用合适的算法在大量的数据集合上进行操作。为了实现这个任务,程序内部模块的运行速度非常重要,而运行模拟环境的时间、寻找和修复bug的时间、重新编译和运行时间相比并不是很重要,这种情况下,使用C++语言非常合适;另一方面,许多网络研究工作都围绕着网络组件和环境的具体参数的设置来开发和模拟所需的网络场景,而且需要方便修改和发现、修复程序中的bug,这种情况下,使用OTcl脚本语言来完成这部分工作是很具有优势的。本章主要从NS-2安装开始介绍,然后是基本的Tcl/OTcl语法,并结合相关实例来学习如何使用NS-2模拟软件来研究网络技术。1NS-2的安装在安装之前,我们可以在NS-2的官方主页了解NS-2的昀新动态,并且可以找到NS-2软件包以及相关的NS手册的下载地址。由于NS-2是一个复杂的集成软件,除了NS-2本身之外,还有多种辅助工具软件,所以通常我们推荐使用NS-2的一次性安装包allinone(all-in-one)安装NS-2来搭建我们的实验环境。大家可以在这个地址下载到当前昀新版本。在可以下载NS-2使用手册(ns-manual)。1.1在Linux平台下安装NS-2NS-2的主要支持平台是Linux,因此我们可以很轻松的在Linux平台下安装NS-2。但是必须保证我们的Linux系统昀好是安装了所有的开发工具,在这里我们使用RedHat企业版5来进行试验环境的部署。首先,我们将ns-allinone-2.33.tar.gz的压缩包放在用户家目录下,然后在Linux桌面环境中打开终端,使用命令tarxvzfns-allinone-2.33.tar.gz执行解压操作,如图:解压完毕后,我们进入新生成的目录ns-allinone-2.33,然后执行./install来安装NS-2。如果安装成功,昀后会出现如下图提示:按照上述提示,我们在用户家目录中的.bashrc文件中将相应的路径加入PATH、LD_LIBRARY_PATH、TCL_LIBRARY这三个环境变量中,打开终端,进入用户家目录/home/mozhu/,使用gedit打开.bashrc文件,命令为gedit.bashrc,然后将相应的路径加入到相关的环境变量,多个路径之间用英文冒号“:”隔开,注意将/home/mozhu/设置为你自己机器当前的家目录。完成上述步骤之后,我们可以在新打开的终端中输入ns来检测我们的NS-2环境是否构建成功,若出现百分号“%”,并且输入“nam”之后可以打开NAM程序,说明我们的实验环境已经构建成功。如下图:若不能成功,则可能需要安装如下依赖软件包:gcc-c++、libX11-devel、xorg-X11-proto-devel、libXt-devel、libXmu-devel,请安装这些依赖包之后重新安装NS-2。1.2在Windows平台下安装NS-2由于Cygwin的支持,我们可以在Windows平台下模拟Linux系统环境,它提供了Linux的各种功能特性。我们必须先在Windows平台下安装Cygwin。Cygwin的安装可以有网络安装和本地安装等途径,我们强烈推荐将Cygwin完整包(避免安装NS-2时出现依赖)下载到本地电脑进行本地安装。下载完整的Cygwin软件包需要800MB左右,本地安装大约需要半个多小时(视机器硬件配置)。首先,在下载Cygwin的安装程序setup.ext。运行,点击“下一步”,选择将Cygwin下载到本地计算机,即“DownloadWithoutInstalling”,继续“下一步”,选择Cygwin将要下载到的目标目录,此处我们选择E:\Cygwin\目录,如下图:接着,我们继续按照提示“下一步”,选择一个比较快下载地址,如下图:当程序从下载地址下载到目录文件之后,我们可以在“Se;ectPackages”窗口中用鼠标点击“View”选项卡中的All列表来切换包的状态到“Install”以保证尽可能安装所有文件,然后下一步。当完成上面Cygwin的下载之后,我们需要重新打开Cygwin的setup.exe程序,“下一步”之后在新窗口中选择“InstallfromLocalDirectory”,继续“下一步”确定Cygwin的安装目录,这里我们选择C:\cygwin\目录,如下图:接着,我们还的确定我们之前下载的Cygwin软件包的位置,这里是E:\Cygwin\ftp%3a%2f%2fftp.ntu.edu.tw%2fcygwin%2f\,确定之后,我们在新弹出的“SelectPacket”窗口中点击“View”选项卡中的All列表,知道所有的包都变成“Install”状态,如图。确定之后“下一步”,我们的安装程序便开始将E:\Cygwin\下的Cygwin安装到C:\cygwin\中了。正确安装完Cygwin后,我们便可以按照Linux下的安装步骤,进入Cygwin环境,将NS-2安装到Cygwin中去。如果NS-2安装正确,我们会看到如下图所示提示:按照提示,如果运气好,我们的Cygwin在家目录中生成了.bashrc文件,则可以将上述环境变量直接加入其中;但是大多数情况,我们都没有这么好运,此时有个替代方法便是将上述环境变量加入Cygwin的/etc/profile文件中,如下图:正确加入环境变量之后,重开Cygwin(带XServer)终端,输入ns便可以测试NS-2是否安装成功,正确安装之后如下图:2NS-2的结构及模拟过程NS-2是一种面向对象的离散事件驱动的网络模拟器,它的所有构件已经写成相应的C++类和OTcl对象。C++类是编译类,用它实现具体的算法和协议;OTcl对象是解释对象,用来解释用户编写的TCL脚本文件。2.1NS-2的OTcl对象组成(部分)TclObject是其他一切OTcl库对象(包括调度器、网络构件、定时器和与NAM有关的其他一些类)的根。它的一个子类NsObject则是所有基本网络构件对象的父类,而这些基本网络构件又分为两个大的部分,一个是连接器Connector,另一个是分离器Classifier。更完整的NS类结构,可以参见。2.2NS-2的源码包目录结构(安装后)安装完NS-2之后,我们的安装目录结构如图所示,其中ns-2.33目录中的common、aodv、link、queue、tcp等子目录中是C++源代码,tcl子目录中的ex目录中是tcl脚本范例,test中是一些测试用脚本,lan、http目录中则是otcl源代码;man目录中含有NS-2相关的使用文档;nam-1.13是动画演示工具nam的专用目录,xgraph-12.1是画图工具xgraph专用目录。2.3NS-2模拟基本过程首先用户需要考虑具体的模拟内容,大概的拓扑结构以及是否需要修改NS-2的源代码进行模拟实验,如果需要修改或者添加核心源代码,则我们需要对NS-2的源代码根据自己问题的实际情况进行修改,然后对NS-2进行编译并再次安装,再进行后面步骤。如果不需要修改源代码,即采用NS-2已有的网络构件完成模拟,那么我们下一步要做的就是编写相关的TCL脚本文件,并在NS-2中执行该脚本进行模拟,这个过程结束后昀生成对应的Trace跟踪文件。昀后便是对生成的Trace文件使用一些辅助的分析工具如awk、xgraph来进行分析,从而得到我们预期想要的结果。其流程图如下:本章中我们主要涉及对NS-2中已有的模块进行网络模拟,不涉及如何修改或添加源代码的部分,若想深入,请查阅相关参考书。3NS-2中TCL脚本的编写在用NS-2进行网络模拟的三个大的步骤中,通常昀受关注的TCL脚本的编写,NS-2中TCL脚本能够很好很快的模拟实际网络的拓扑结构,这也是NS-2昀大有点之一。OTcl(ObjectTooltikcommandlanguage)语言是面向对象的Tcl(Toolkitcommandlanguage)编程语言,这一点同C++与C语言类似,同时OTcl也是完全兼容Tcl语言的。通常,编写一个完整的可以在NS-2中运行的tcl脚本有如下一些步骤:(1)创建一个模拟器对象,并设置相关的跟踪文件;(2)创建网络模型,具体包括网络中节点和相关链路的创建;(3)在已建好的网络模拟中,按照需求设置相关的代理和流量产生器;(4)使用事件调度器对网络模型中相应的事件和过程进行调度;(5)开始模拟过程。下面我们通过一个非常简单的tcl脚本来具体讲解NS-2中tcl脚本的编写,其中也涉及到相关tcl语法的使用。#################################################一个2节点的场景,使用UDP的CBR流量发生器,保存为example.tcl#创建一个模拟器类对象setns[newSimulator]#打开并关联一个Trace跟踪文件out.tr,其文件描述字为tfdsettfd[openout.trw]$nstrace-all$tfd#打开并关联一个NAM跟踪文件out.nam,其文件描述字为nfdsetnfd[openout.namw]$nsnamtrace-all$nfd#定义一个finish过程procfinish{}{globalnstfdnfd$nsflush-traceclose$tfdclose$nfdexecnamout.nam&exit0}#创建两个节点setn0[$nsnode]setn1[$nsnode]#在节点n0和n1间创建一个带宽2Mb、时延10ms、队列类型为DropT
本文标题:NS-2
链接地址:https://www.777doc.com/doc-4294215 .html