




免费预览已结束,剩余29页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
吉首大学毕业论文摘要NS-2是美国DARPA支持的项目VINT(Virtual InterNet Testbed)开发的通用的多协议网络模拟软件,开发的源代码使研究者更好的进行各种算法的实现和协议的改进。NS2是一个离散事件模拟器,事件规定系统状态的改变,状态的修改仅在事件发生时进行,典型的事件有分组到达、时钟超时等。同时,ns还具有丰富的构件库,对一些通用的实体进行了建模,对象易于组合,扩展。ns的构件库支持的网络类型有:广域网、局域网、移动通信网、卫星通信网等,支持的路由方式有:层次路由、动态路由、多播路由等,ns还提供跟踪和监测对象,可以把网络系统中的状态和事件记录下来以便分析,如:tracefile,生成.tr文件记录了仿真过程的数据信息,从中可以提取有用的数据信息。NS2模拟的步骤大致如下:编写Otcl脚本,配置网络结构,确定拓扑图,建立协议代理,设置网络事件,要传输的文件,用ns解释执行脚本,分析trace文件,得出有用的数据,用工具画出曲线图,或用Nam工具观看网络模拟运行过程。通过NS2仿真技术对网络性能进行分析已成为计算机网络研究的重要手段。由于其 扩展性强、执行效率高, 已被广泛应用于各种网络的仿真。基于先进设计思想的NS2, 是一个免费的、开源的多协议网络仿真软件,在网络仿真领域中占有十分重要的地位。 本文主要是从NS2入门开始介绍,可以选择linux或windows + cygwin下进行安装NS2的环 境进行试验,了解NS软件的基本知识,通过编写Tcl脚本、运行NS2、对结果进行分析来 进行网络仿真。关键词:网络仿真;节点;无线网络IAbstractNow this informationization time, the network is nearly everywhere, it has already extended every corner to the society, economy, security, influencing every aspect of personal life. In the course of studying, receive the cost, the environment, artificial all sorts of factors influence, often need to go on under the environment of network imitated.Analyze to network performance that has already become the important means that studies of the computer network through NS2 artificial technology. Because its expanding is strong, carries out and high in efficiency, have already widely used in the emulation of various networks. NS2, with advanced design ideas, is a free-of-charge and open-source multiprotocol network simulation software. NS2 is a very important tool in the area of network simulation. This text to begin, introduce while being the ABC of from NS2 mainly, can choose linux or windows go on environment to install NS2 carry on the test under the+cygwin, understand ABC of NS software, through writing Tcl script, operating NS2, analyzing to the result that carries on network emulation. This subject mainly has 50 nodal wireless networks to set up one according to the existing agreement in NS2, the script is written mainly by the following several pieces of module: ( 1) Set of parameters;( 2) Initialize the overall variable; (3)Create wireless channel, targeting the wireless node; (4)Create a node; (5)Utilize the random scene to produce the tool setdest to produce 50 movement scenes, introduce the scene file; (6)Utilize cbrgen tool to produce a dataflow scene at random, introduce cbr dataflow file; (7) Set the end of time, start nam cartoon reveal.This text uses artificial software of NS2 network to carry on emulation to realize to AODV route agreement, the ones that can find out AODV route agreement through an analysis of trace file lose bag rate very low, it is a more steady agreement.Keyword: Network simulation; Node; Wireless networkII目录摘要 . I Abstract. II 第一章 前言 . 1 第二章 网络仿真软件简介与对比. 22.1 网络仿真概览 . 22.1.1 网络仿真的优点. 32.1.2 网络仿真的缺点. 32.2 主流网络仿真软件简介 . 42.3 主流仿真软件的比较 . 5第三章 NS2基本介绍. 73.1 下载与安装 NS2. 73.1.1 NS2 的下载. 73.1.2 在 Linux 下的安装 . 83.2 NS2 仿真的基本流程 .83.3 NS2 主要构建概览. 113.4 NS2 源码目录结构. 133.5 NS2 相关知识点. . 14模拟和离散事件模拟 . 14创建节点. . 14配置节点. . 15与 node 相关的 Tcl 命令. . 16链路(link) .16创建单项链路. . 16与链路相关的 Tcl 命令:. . 17定时器(timer) . 18IV代理(agent) . 18TCP. .18trace 文件. 18第四章 AODV路由协议简介. 19第五章 基于 NS2 的无线网络协议仿真. 215.1 NS2仿真一般步骤. 215.2 基于NS2的无线网络协议仿真实现. 215.3 nam 动画显示工具 . . 305.4 trace 文件分析. 31 第六章 结论. 32 参考文献. 33 致谢 . . .34 基于 NS2 的无线网络协议的设计第一章 前言NS是Network Simulator 的英文缩写,字面翻译即为网络模拟器,又称网络仿真器。NS2 则是网络仿真器的第2 版。NS2 是一款开放源代码的网络仿真软件,最初由UC Berkeley 开发而成。他最初为 了研究大规模网络以及当前和未来的网络协议交互行为而开发。它为有线和无线网络上 的TCP、路由和多播等协议的仿真提供了强有力的支持。NS2 是一个开源项目,所有源 代码都开放,任何人可以获得、使用和修改其源代码。正因为此,世界各地的研究人员 每天都在扩展和更新它的功能,为其添加新的协议支持和功能模块。它也是目前网络研 究领域应用最广泛的网络仿真软件之一。Network Simulator NS2:NS2是一个多协议网络离散模拟工具,目前在于建立一个 网络模拟平台,为网络研究者提供网络模拟工具,它主要用于网络协议及算法的设计和 实现。目前NS2 可以用于仿真各种不同的通信网络。它功能强大,模块丰富,已经实现 的一些仿真模块有:网络传输协议,如TCP 和UDP;业务源流量产生器,如FTP、Telnet、 Web CBR 和VBR;路由队列管理机制,如Droptail、RED 和CBQ;路由算法,如Dijkstra, 以及无线网络的WLAN,Ad hoc 路由,移动IP 和卫星通信网络等。NS2 也为进行局域 网的仿真而实现了多播以及一些MAC 子层协议。NS 一般被认为起源于1989 年由UC Berkeley 开发的REAL 网络仿真器(REAL network simulator)。其实REAL 网络仿真器是在哥伦比亚大学(Columbia University)开 发的NEST网络实验床(Network Simulation Test bed)的基础上改进而来。REAL 网络仿 真器主要用于仿真各种IP 网络。该软件的开发最初是针对基于UNIX 系统下的网络设 计和仿真而进行的。由于NS-2 作为一个开源项目开发,因此,世界上的其他组织和个 人也对NS 的发展做出了贡献。NS-2 也从他们那里吸收了很多实用的功能和模块。在我们这次实验中就是使用NS2对无线网络进行仿真,NS2仿真器作为仿真领域受 欢迎和使用范围广的共享软件。23第二章 网络仿真软件简介与对比2.1 网络仿真概览近年来,网络通信技术日新月异,对网络技术的研究也同样炙手可热,这也促使人 们不断提高研究水平,更新研究技术,增加研究手段。目前网络通信的研究一般可分为 一下三种方式:1、 理论研究:在理论和协议层面上对网络通信技术及系统进行分析研究,如采用 数学建模、协议分析、状态机、集合论以及概率统计等多种理论分析手段和方法对通信 网络及其算法、协议、网络性能等各个方面进行研究。2、 网络仿真:即计算机模拟仿真方法,本书对模拟与仿真不做区分,二者通指通 过计算机软件模拟真实网络进行试验研究的方法。也称为虚拟网络实验床(Virtual Network Test bed)。3、 试验网方法:采用建立实验室测试网络、网络试验床(Network Test bed)和小 规模商用试验网络的方式对网络进行实战检验,如当前第三代移动通信网,各大网络设 备提供商和运营商就在不同城市建有不同规模的试验网络,并进行一定量的测试放号。 使广大用户参与到网络的测试中,也使得网络设备和系统收到实际应用环境的检验。三种方法各有利弊,相辅相成并各有侧重点。理论研究适用于早期研究与设计阶 段,对新算法和新技术进行理论准备和验证,除了人力和知识,几乎不需要什么额外成 本;试验网的方法是网络和系统在投入实际适用前的一次系统的演练,能够发现网络设 计与用户需求之间的相合度以及检验网络实际使用的效用和性能。该阶段建设成本很 高,要求技术和设备开发相对成熟,网络系统基本成型,一般主要是针对业务和系统稳 定性和服务性能的检验;而网络仿真阶段可以说是理论方法和试验网方法的中间阶段, 它可以对新协议进行初步实现和验证,并有利于及时调整和改进,这个阶段,由于采用 计算机软件进行仿真,使得很多研究人员能够研究大规模网络和学习新协议新算法的设 计和实现。并且能够在实用前对其进行检验和改进,此外,他还可以在各种新老系统和 算法之间进行比较而不必话费巨资去建立多个实际系统。因此,网络仿真是网络通信研 究中非常重要的一种方法。2.1.1 网络仿真的优点网络仿真的优点主要体现在以下几个方面:(1) 成本低:与试验网方法比较而言,网络设备、构件和系统均通过计算机软件 模拟实现,实现成本低廉。(2) 灵活可靠、可重构:由于采用软件实现,他的实用、配置和改变更加灵活可 靠,对规模网络也可以轻松进行重新构建。(3)避重就轻:可以通过软件的方法,有选择性的选择在研究中感兴趣的方面, 而把其他一些不相干的方面忽略,这样更加有利于对感兴趣点的深入研究,提 高研究效率。(4) 提供研究大规模网络的机会:大规模网络不一定每人都有机会参与建设和研 究,而网络仿真平台给了无这样条件的科研人员一个研究大规模网络的机会。(5) 易于比较:由于可以通过软件配置轻松建立、重构各种网络模型,实现各种 不同的协议和算法,这使得研究人员能够轻松的比较这些不同模型、协议和算 法之间的性能等各方面的优劣。2.1.2 网络仿真的缺点由于是通过软件去进行模拟仿真,它毕竟是虚拟网络,与真实的网络环境还是有一 定的差异性,因此,仿真方法也存在一些天生的不足之处:(1)无法完全重现真实网络环境,使得仿真网络可能会忽略一些重要的网络细 节;(2) 在对协议、算法和网络系统进行仿真之前,必须通过软件编程对其进行软件 模块的实现,这增加了额外的工作量;(3) 网络仿真所得的结果并不一定与真实网络环境下的结果一致,因此,在投入 实际应用之前,还需要多方面的验证和通过测试网和真实网络的检验。总而言 之,网络仿真是当前网络通信研究中的重要技术手段之一,在网络通信的建设 开发过程中起着不可替代的重要作用。大部分网络通信的技术研究也都必须经 过网络仿真研究这么一个重要环节。2.2 主流网络仿真软件简介俗话说,“工欲善其事必先利其器”,为了方便网络研究人员的研究工作,一款好 的网络仿真软件是必不可少的。网络仿真软件必须提供简单易用的网络仿真环境的建立 手段,必须实现常用的已经存在的绝大部分网络协议、算法和应用模块,必须能够方便 的进行配置和扩展,利于添加新的协议和算法。当前有许多优秀的网络仿真软件,其中应用比较广泛的主流仿真软件有 OPNET、NS2、MATLAB、SPW、QualNet 等,这为网络研究人员提供了很好的网络仿真平台。(1)OPNETOPNET 是Optimized Performance Network Engineering Tool 的简称,最早是由 麻省理工学院LIDS 实验室受美国军方委托开发,可模拟LAN, WAN, ISDN及卫星通 信网等各种网络。可以模拟现有的绝大部分网络和协议如:ATM, Frame Relay, FDDI, Ethernet, Token Ring, TCP/UDP/IP, HTTP 等等。我们所指的OPNET 网络仿真软件 一般是指OPNET Modeler,目前作为商业软件由OPNET Technology 公司进行开发 和维护,是其四个系列网络仿真软件产品的其中之一,它主要面向的用户为网络设 计专业人士,能够帮助客户进行网络结构、设备和应用的设计、建设、分析和管理。(2)NS2NS2是本次设计的主角,在后面会更深入的介绍。(3)MATLABMATLAB 是英文Matrix Laboratory(矩阵实验室)的缩写。MATLAB 软件是由 美国Mathworks 公司推出的用于数值计算和图形处理的科学计算系统环境。 MATLAB 环境下,用户集成了程序设计、数值计算、图形绘制、输入输出、文件 管理、网络仿真、人工智能/神经网络、工业控制等各个领域的研究功能。 MATLAB 提供了一个人机交互的系统环境,该系统的基本数据结构是矩阵,在生成矩阵对象 时,不要求作明确的维数说明。与利用C语言或FORTRAN 语言作数值计算的程序 设计相比,利用MATLAB 可以节省大量的编程时间。(4)SPW/SPDSPW(Signal Processing Worksystem)仿真软件是CoWare Inc.公司的产品,现已 改名为SPD(Signal Processing Designer),它提供了面向电子系统的模块化设计、 仿真及实施环境,是进行算法开发,滤波器设计,C 代码生成,硬/软件结构联合设计和硬件综合的理想环境。SPW 的一个显著特点是他提供了HDS 接口和MATLAB 接口。MATLAB 里面的很多模型可以直接调入SPW,然后利用HDS 生 成C 语言仿真代码或者是HDL 语言仿真代码。SPW 通常可以应用于无线和有线载 波通信、多媒体和网络设计与分析等领域。(5) QualNet/GloMoSimQualNet 是Scalable Network Technologies, Inc. (SNT)的旗舰产品,QualNet 原 是美国加州大学洛杉矶分校 (UCLA) 开发的开放源代码的GloMoSim 的商业版, GloMoSim(Global Mobile Information System Simulator)是一款面向无线网络系统的 大规模网络仿真平台,它是用并行运算语言Parsec 编写的。QualNet Developer 是 一套先进的用于定制网络模型和进行网络仿真的软件。QualNet 拥有较快的速度、 较好的可扩展性和保真度,通过快速建模和深入分析工具,使得工程师们易于优化 现有的网络性能。模型的源代码为开发人员提供构建配合新网络功能的实验所需的 库。从有线LAN 和WAN,到蜂窝、卫星、WLAN 和移动Ad Hoc 网络,QualNet 支 持广泛的联网应用仿真功能。QualNet 拥有高效的内核,能够以合理的仿真速度模 拟具有大话务量和高移动性的大型网络。2.3 主流仿真软件的比较表1-1主流仿真软件对照表软件条目OPNETNS2MATLABSPWQualNet/GloMoSim界面友好性GUI、代码Tcl script主要是代码GUI、代码GUI、代码拓扑结构配置GUI、配置方 便Tcl script代码编程主要代码GUI、代码GUI、代码支持的构件库丰富的构件库丰富的组件模块丰富的工具箱丰富的构件库丰富的构件库配置灵活性一般非常灵活比较灵活比较灵活比较灵活执行效率较高较高低一般一般支持语言Proto-CC+/OTclC/FORTRANC/HDLC/C+/PARSEC可扩展性差好比较好比较好一般续前页兼容性差一般一般与MATLAB兼 容一般主要应用场合网络路由仿真网络协议仿真、IP网络科学计算、矩阵运算DSP、无线通 信、链路层无线通信、无线通信系统主要特色网络设备模型 库;混合建模; 与网管的接口开放源码;免 费良好的扩展 性;广泛的网络用户支持功能强大、内 容丰富的工具 箱;简单的脚本编程与MATLAB的兼 容;从建模到 硬件设计的自动实现大规模网络支 持;标准分层模 型;批量仿真使用成本高开源免费较高高高/开源免费入门难度难度大较难一般难较难通用性差一般较好差差 第三章 NS2基本介绍3.1 下载与安装 NS2NS2 支持Windows, Linux, Uinx, machitosh 以及其他支持POSIX 的操作系统,它的 主要支持的操作系统是Linux 系统,他支持目前几乎所有的主流Linux 发行版本。此外, 由于有Cygwin 的支持,NS2在windowsCygwin 的平台上的安装和使用也变得简单方 便起来2。3.1.1 NS2 的下载NS2 目前由南加州大学信息技术学院(USC-ISI: The University of Southern Californias Information Sciences Institute)负责开发和维护,其官方主页在 /nsnam/ns/,目前, 它还有一个新的维客( WiKi ) 主页( 也称知 识库) , 其首页地址是/nsnam/index.php/Main_Page。这两个地方都 有关于NS2 的最新消息。其安装说明和下载的官方英文页面在 /nsnam/ns/ns-build.html。由于NS2 是一个集成的仿真环境,除了NS2 本身之外,他还需要许多其他软件包的 支持,如Tcl,Tk,OTcl,xgraph, Nam 等软件包,而这些包之间又有相互的版本依赖关 系,因此,我们一般不会手工单独安装各个软件包,而直接下载它提供的一次性包(allinone:即all in one)。下载allinone 包可以一次性获取所有需要的各个软件包,并且 也不会出现版本冲突问题。ns-allinone-2.29.tar.gz 是linux 下的tar 工具的压缩包,它包含以下软件包的源码:(1)Tcl release 8.4.13 (必备组件)(2)Tk release 8.4.13 (必备组件)(3)Otcl release 1.12 (必备组件)(4)TclCL release 1.18 (必备组件)(5)Ns release 2.30 (必备组件 )(6)Nam release 1.12 (可选组件)(7)Xgraph version 12 (可选组件)(8)CWeb version 3.4g (可选组件)(9)SGB version 1.0 (?) (可选组件, 为所有类UNIX 平台安装sgblib 库)(10)Gt-itm gt-itm and sgb2ns 1.1 (可选组件)(11) Zlib version 1.2.3 (可选, 安装Nam 软件包需要用到)3.1.2在 Linux 下的安装我们从源代码自己编译安装NS2,它与Linux 下通过源码包安装软件一样,并且 allinone 包中还直接提供了安装脚本“install”,这也大大简化了用户的安装过程和难度。 下面就在Linux 下一步一步安装NS-2.29:首先用U盘把下载的软件包ns-allinone-2.29.tar.gz拷贝到根目录为/home/dzy下。(1)解压软件包,使用tar 命令解压以 .gz 结尾的软件包。(2)解压后,在命令提示符下输入cd /home/dzy/ns-all-inone2.29/.install进行安装, 直到提示安装完成。(3)设置全局路径变量。安装成功后,最后输出部分会提示你必须设置三个全局 变量PATH、LD_LIBRARY_PATH 和TCL_LIBRARY。在自己的家目录下编辑 终端配置文件 .bashrc。注意要带“.”开头,.bashrc 是bash 终端的配置文件, 每次打开一个终端窗口,该文件中的脚本就会自动运行。由于vi命令不会,就 找到.bashrc文件用gedit打开, 把exportPATH=$PATH:/ns-allinone-2.29/bin:/home/dzy/ns-allinone-229/tcl8.4.13/unix:/home/dzy/ns-allinone-2.29/tcl8.4.13/unix exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dzy/ns-allinone-2.29/otcl-1.12:/home/dzy/ns-allinone-2.29/lib exportTCL_LIBRARY=$TCL_LIBRARY:/home/dzy/ns-allinone-2.29/tcl8.4.13/library编辑结束后保存退出,然后重新打开一个终端,脚本运行生效。3.2 NS2 仿真的基本流程进行模拟前,首先要分析模拟设计哪个层次。NS模拟分为两个层次:一个是基于Otcl 编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写 Otcl脚本;另一个是基于C+和Otcl编程的层次,如果NS中没有所需的网络元素,就需 要首先对NS扩展,添加所需要的网络元素。这需要利用前面所提到的分裂对象模型,添 加新的C+类和Otcl类,然后再编写Otcl脚本。使用NS2 进行网络仿真的基本操作流程如下图3-1 所示,用户首先要进行问题定 义,考虑自己要仿真什么东西,大概的拓扑结构应该怎样,是否需要对源代码进行修改 或添加等;如果需要添加或修改代码,如图中右边方框中所示,有一个对NS2 源码进行 修改、重新编译和调试的过程;如果不需要修改代码,即采用NS2 已有构件即可完成仿 真工作,那么用户的主要任务就是编写Tcl/OTcl 仿真代码,生成一个.tcl 脚本文件, 并用NS2 执行该脚本进行仿真,仿真程序结束后会生成相应的Trace 文件,即仿真结果 文件,用户使用不同的工具对该脚本中的内容进行分析得到我们想要的结果图表,如果 结果是我们的预期,那么整个仿真过程即可顺利结束,否则,应该分析问题所在,并重 新考虑问题定义、源码修改、Tcl 脚本修改的必要性。 图3-1NS2 进行网络仿真的基本流程整个仿真过程主要有三个部分的工作量:一为修改源代码,二为编写Tcl 仿真脚本, 三为分析结果,下面对这三个步骤中需要注意的问题做进一步的描述:(1) 源码修改:这一步只有在仿真需要修改源代码时才进行考虑,修改源代码是一 项比较具有挑战性的工作,这需要用户有一定的编程和调试水平。特别需要注意的 是,由于NS2 是采用C+和OTcl 两种语言编写的,因此在修改源代码时,需要记 着修改相应的OTcl 代码。我们会在后续的章节中介绍一下NS2 的源码结构目录, 让读者对整个源码框架有个大致的了解,这有利于用户找到自己想要的源码文件和 头文件。(2)Tcl/OTcl 仿真代码编写:这是NS2 仿真中最重要和必不可少的一环,大部分 NS2 的仿真工作实际就是编写Tcl 代码来描述网络结果、网络构件属性和控制调度 网络模拟事件的启停的过程。因此,这需要用户对NS2 中的网络构件非常熟悉。(3)仿真结果分析:结果分析是真正体现仿真工作成效的重要一环,仿真结果分析要求用户熟悉NS2 的Trace 文件的结构,并且能够使用一些小工具对该结果文件进 行分析以及根据分析结果数据绘制一些汇总图标等。 假设用户已经完成了对NS的扩展,或者NS所包含的构建已经满足了要求,那么就行一次模拟的步骤大致如下:开始编写Otcl脚本。现在配置模拟网络拓扑结构,此时可以确定链路的基本特性, 如延迟、带宽和丢失策略等。建立协议代理,包括端设备的协议绑定和通信业务量模型的建立。配置业务量模型的参数,从而确定网络上的业务量分布。配置Trace对象。Trace对象能够把模拟过程中发生的特定类型的时间记录在trace 文件中。NS功过trace文件来保存整个模拟过程。仿真完成后,用户可以对trace文件 进行分析研究。编写其他的辅助过程,设定模拟结束时间,至此Otcl脚本编写完成。用NS解释执行刚才编写的Otcl脚本。对trace文件进行分析,得出有用的数据。也可以用Nam等工具观看网络模拟运行 的过程。调整配置拓扑结构和业务量模型,重新进行上述模拟过程。3.3 NS2 主要构建概览NS2是一种面向对象的离散时间驱动的网络仿真器,因此,它的所有构建4已编写成 相应的C+类和OTcl对象。C+也被称为编译类,是算法和协议的具体实现代码,OTcl 对象也称为解释对象,是用户接口对象,用户编写仿真脚本主要就是建立OTcl对象、设 置其属性、然后通过事件调度器调度网络模拟事件的发生。见图3-2。图3-2为NS2的构件图从上图可以看出,NsObject 是大部分基本网络构件的父类,它本身的父类是 TclObject类7。主要的基本网络组件可以划分为两类,分类器(Classifier)和连接器 (Connector)。它们都是NsObject 的直接子类,也是很多基本网络组件的父类。分类器 的派生类组件对象包括地址分类器(AddressClassifier)和端口分类器(PortClassifier) 等。连接器的派生类组件对象包括队列(Queue)、链路延迟(LinkDelay)、各种代理(Agent),和跟踪对象(Trace)类。代理又分成了很多种如TcpAgent、TcpSink 等。NS 使用事件调度器(Event Scheduler)对所有组件的工作和该工作发生的时间进行控制和调度。在NS2 仿真最常用到的网络构件有节点(node)、链路(link)、代理(Agent)、 应用(Application)、队列(Queue)、跟踪(Trace)对象等等。其中,节点(node) 主要用于仿真网络上的节点,包括主机和各种网络设备等,节点中可以配置很多属性, 如节点类型、节点地址类型、所用路由算法等等;链路(link)则是将节点连接起来的 一条通路,在链路上有队列(Queue)和延迟(Delay),可以仿真实际网络上的包缓冲 和传输延时等情况;代理(Agent)是NS2 最具特色的对象之一,他可以仿真传输层的 协议如TCP 和UDP,也可以用于仿真网络业务流量,如CBR 流量等。跟踪对象(Trace) 是NS 中用于存储仿真结果的一个对象,用于配置需要跟踪的一些参数,并将其写入跟 踪日志文件(Trace file)中。应用(Application)对象可用来仿真各种应用层对象如FTP、 HTTP 等。3.4 NS2 源码目录结构对于新增和修改源代码的用户来说,对源代码的分析是必不可少的,本节以NS-2.29 为例,对其源代码目录结构作一个简单的介绍,以利于快速定位需要新增和修改文件的 位置。采用allinone 包成功安装NS2 之后,会在其源码目录下构成如图3-3所示的目录结构。图3-3NS2源码目录结构如图中标注,NS2 的C+源代码都在home/dzy/ns-allinone-2.29/ns-2.29/的相应目录下,而home/dzy/ns-allinone-2.29/ns-2.29/doc 下是ns 的官方文档NS 手册所在的位置, 在 home/dzy/ns-allinone-2.29/ns-2.29/tcl 目录中则是与tcl 有关的代码和示例。NS2 的可执 行文件在home/dzy/ns-allinone-2.29/bin 目录下,调用的库文件则在home/dzy/ns-allinone-2.29/lib 中,这一点我们在安装那一节的设置环境变量时已经涉及 到。3.5 NS2相关知识点本节所讲到的构建将涵盖NS构件库的骨架部分,从节点结构的角度讲,包括了从应 用层到链路的各个层次,从模拟过程上说设计了时间调度机制、定时器、数据包转发以 及trace等各个方面。模拟和离散事件模拟在NS中,整个模拟过程是由一个名为Simulator的TCL类来定义和控制的,Simulator 类提供了一系列对模拟进行配置的接口,这期中包括选择“事件调度器(event scheduler)” 的接口。进行模拟通常要首先创建一个Simulator类的实例对象,并调用该对象的一系列 方法来创建节点(Node)、拓扑(Topology)等模拟所必须的对象。Simulator类提供了 一些与建立模拟有关的方法,分为3类:(1)创建和管理拓扑结构,即管理Node和Link;(2)与tracing有关的方法;、(3)与时间调度器(event scheduler)有关的方法。 模拟开始以后,Simulator对象会完成一系列初始化的工作,这期中包括:(1)通过调用create_packetformat来初始化packet的结构;(2)创建一个“事件调度器(scheduler、缺省时为calendar scheduler)”;(3)创建一个“null agent”。创建节点节点(node)是网络拓扑的重要组成不分,本节主要介绍在NS中创建和管理节点的 方法。每进行一次模拟都需要建立一个Simulator类的实例来控制模拟的过程,Simulator 类提供了一些实例过程来创建和管理节点。建立一个节点的基本方法是调用Simulator类的node过程:set nsnew Simulator$ns node一个单播节点(unicast node)的基本结构如图4-1所示,它除妖包括两个Tcl对象: 地址分类器(address classifier)和端口分类器(port classifier),她们分别用来判断分 组的目标地址以及分组的目标Agent。图3-4 单播节点结构图配置节点配置节点就是在创建节点之前定义它的各种属性,函数Simulator:node-config用 来配置节点的属性。节点的属性包括节点的地址类型、移动节点的各个网络构建的类型、 ad-hoc网络中的移动节点的路由协议类型、是否打开各层(Agent、Router、MAC)的trace 功能等等。Node-config命令可以分成几行来写,比如:$ns_ node-config -addressingType hier$ns_ node-config macTrace ON用户可以单独设定那些需要变动的选项,而其他选项会保持不变。 目前,使用node-config命令这种节点配置的方法主要针对移动节点和卫星节点与 node 相关的 Tcl 命令(1)set $node $ns node 建立一个节点实例。(2)$node id 返回该节点id(3)$node neighbors 返回邻居节点的列表。(4)$node add-neighbor增加一个邻居节点。(5) $node node-addr 返回节点的地址,在地址类型为def时,节点的地址与节点 的id相同,在地址类型为hierarchical时,节点的地址是一个字符串。(6)$node reset 重置连到这个node上的所有agent。(7)$node agent 返回 port_num 端 口 所 指 向 的 agent 对 象 , 如 果port_num端口没有指向任何对象,返回null字符串。(8) $node attach将agent对象链接到节点上,如果没 有指定端口号,节点会自己分配一个空闲的端口,并把agent连接到该端口上; 如果指定端口为port_num,节点会把agent连接到端口port_num上。(9)$node detach将阿根廷与节点分离,并把一个null_agent链接到agent原来所在的端口上。链路(link)链路是网络拓扑的第2部分,在前面介绍了如何在NS中设置并创建网络拓扑中的节 点。本节将介绍如何创建链路来把节点连接起来。创建单项链路在Tcl中,我们可以通过实例过程simplex-link来生成从一个节点到另一个节点的 单项链路,这个链路的功能是由Tcl的SimpleLink 类实现。下面是simplex-link过程的 用法:set nsnew Simulator$ns simplex-link 这个命令建立了一条从到的链路(link),该link的带宽为,延迟为,队列类型为与链路相关的 Tcl 命令:(1)$ns_ simplex-link 创建一条 从node1到node2的单向链路,链路的带宽为bw,延迟为delay,队列类型为qtype, 根据队列类型的不同,有些队列可能需要通过args来设定一些参数。(2)$ns_ duplex-link 创建一条 从node1到node2的双向链路,链路的带宽为bw,延迟为delay,队列类型为qtype, 根据队列类型的不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年神经外科垂体瘤经鼻蝶入路术后尿崩症处理考试题(含答案及解析)
- 2026届福建省厦门外国语中学化学高一上期末质量跟踪监视试题含解析
- 羽毛球课件封面设计
- 2026届云南省楚雄市高三化学第一学期期末复习检测模拟试题含解析
- 关注客户需求变化及时调整服务策略以满足市场变化与发展趋势
- 羊水污染分级课件
- 采购岗位职责及环保合规要求
- 财务经理职责与风险控制
- 青年教师教育技术应用培养指导计划
- 儿科护师岗位职责和护理职责
- 外卖餐饮培训课件
- 安全生产考核巡查办法全文
- 燃气电气火灾培训课件
- 对外经贸大学2025年硕士研究生招生专业目录
- 数据标注教学课件
- 2025年云南省中考道德与法治试卷真题(含标准答案及解析)
- 上海海事大学工程热力学英文课件chapter1 Basicconception
- 2025至2030中国HTCC陶瓷基板市场销售模式及竞争前景分析报告
- 房屋过户买卖合同贷款事宜范本
- 幕墙施工安全课件
- 呼吸系统疾病诊疗指南共识
评论
0/150
提交评论