ns-3-中文教程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ns-3Tutorial(htmlversion)1.Introduction2.Resources3.GettingStarted4.ConceptualOverview5.Tweakingns-36.BuildingTopologies7.TheTracingSystem8.ClosingRemarksIndexns-3Tutorial(htmlversion)Forapdfversionofthistutorial,see:•ns-3Doxygen/Manual:DocumentationofthepublicAPIsofthesimulator•Tutorial(thisdocument)•ReferenceManual:ReferenceManual•ns-3wikiThisdocumentiswritteninGNUTexinfoandistobemaintainedinrevisioncontrolonthens-3codeserver.BothPDFandHTMLversionsshouldbeavailableontheserver.Changestothedocumentshouldbediscussedonthens-developers@isi.edumailinglist.Thissoftwareisfreesoftware;youcanredistributeitand/ormodifyitunderthetermsoftheGNUGeneralPublicLicenseaspublishedbytheFreeSoftwareFoundation;eitherversion2oftheLicense,or(atyouroption)anylaterversion.Thissoftwareisdistributedinthehopethatitwillbeuseful,butWITHOUTANYWARRANTY;withouteventheimpliedwarrantyofMERCHANTABILITYorFITNESSFORAPARTICULARPURPOSE.SeetheGNUGeneralPublicLicenseformoredetails.YoushouldhavereceivedacopyoftheGNUGeneralPublicLicensealongwiththisprogram.Ifnot,see简介的主文档由四部份组成:NS-3Doxygen手册模拟器公共API的说明文档NS-3教程(本教程Tutorial)NS-3参考手册(ReferenceManual)NS-3维基百科本指南的目的是向NS-3新用户以结构化的方式介绍NS-3系统。常常,新用户很难通过繁冗的参考手册收集到对当前仿真任务有用的实质信息。在本教程中,我们将通过几个仿真实例向读者介绍和阐释NS-3的主要概念和特点。随着本教程的深入,我们会介绍完整的NS-3文档,并指出源代码的具体位置,以便于对NS-3软件系统运行机制感兴趣的研究者做深入的钻研。开始之前,有几个要点需要读者注意:NS-3并不是NS-2的扩展,而是一个全新的模拟器。虽然二者都由C++编写,但NS-3并不支持NS-2的API。NS-2中的一些模块已经被移植到了NS-3。在NS-3开发的过程中,NS-3项目组会继续维护NS-2,同时也会研究过渡和整合机制。NS-3是开源的。NS-3项目努力为研究者提供一个开放的环境来共享他们自己的软件。1.1致NS-2用户对于熟悉NS-2的读者来说,NS-3和NS-2最明显的区别是脚本语言的选择。NS-2使用OTcl脚本语言,仿真的结果可以通过网络动画器nam(NetworkAnimatornam)来演示。在NS-2中,如果仅使用C++语言而不用OTcl,仿真过程是不可能运行起来的(即,只有main()函数而没有任何OTcl语句)。另外,NS-2的许多模块由C++编写,其他的用OTcl语言编写。而在NS-3中,仿真器全都由C++编写,仅仅带有可选择性的Python语言绑定。因此,仿真脚本可以由C++或者Python语言编写。某些仿真结果可以通过nam演示,但是新的动画演示器也正在开发之中。由于NS-3可以生成pcap包trace文件,也可以利用其他工具通过trace文件来分析仿真过程。在本教程中,我们先重点讲解使用C++编写脚本,并通过trace文件来分析仿真结果。NS-3和NS-2也有一些相似之处(比如二者都是基于C++对象,一些NS-2的模块已移植到了NS-3上)。在本教程中,我们将强调NS-3和NS-2的区别。我们经常听到一个疑问:“我到底是要继续使用NS-2,还是转向NS-3呢?”答案视情况而定。虽然NS-3现在还没有包含所有的NS-2模块,但是另一方面,NS-3也有一些新的功能(比如,能正确地处理节点上的多重接口,使用IP地址,与因特网协议和设计保持一致,以及更加详细的802.11模块等)。NS-2的模块可以被移植到NS-3中(移植帮助文档正在准备之中)。NS-3的多个前端也正在积极开发中。同时,NS-3开发者也相信(部分早期用户也已证明)NS-3已经可以充分使用,也是用户进行新仿真项目时的一个富有吸引力的选择。1.2共享contributingNS-3是由学术研究者开发和使用的用于网络科研和教学的仿真器。它依赖于研究者们持续不懈地努力,开发新模块、调试和维护已有模块、并共享成果。为了鼓励研究者像支持NS-2那样支持NS-3,我们希望NS-3的开发者遵守下面几条规则:基于GNUGPLv2兼容性的开放源码许可维客共享代码(ContributedCode)页(类似于NS-2的共享代码页)Src/contrib.目录(我们会保留您共享的代码)开放的错误追踪器(bugtracker)NS-3开发者会很乐意帮助潜在的代码共享者们,提供NS-3仿真器的入门途径(请联系我们)我们也意识到,如果您正在读本教程,对NS-3项目的共享或许还不在您当前最关心的事,但是我们希望您知道,“共享”是NS-3项目的灵魂。即使是给我们写一个关于您使用NS-3的经验便条(例如:“这个教程的章节条理不够清晰”),通知某些文档已过时等等,我们将会感激之至。1.3教程内容组织本指南假定新用户可能会顺着以下思路了解NS-3:尝试下载和编译NS-3尝试运行几个简单的示例程序查看仿真结果并试图调整仿真因此,我们将大体按照这个顺序来组织本教程。2资源网络资源NS-3用户有必要知道几个重要的网站:主站点位于,提供NS-3系统的基本信息。详细文档位于主站点的您也可以从这个网页上得到系统架构的相关信息。维基百科网页可以作为NS-3主站点的补充。您可以在那里找到用户和开发者的FAQs,以及相关问题的解决途径,第三方的共享代码、论文等等。NS-3的源码可以在找到。读者也可以在名为ns3-dev的源码仓库找到当前的NS-3开发树。还有NS-3的之前发行版本和最新测试版本的代码。2.2源码管理系统Mercurial复杂的软件系统需要一种途径,用于管理和组织对现有代码和文档的修改。有很多种方法可以实现这种管理,读者可能已听说过某些版本控制软件,CVS(ConcurrentVersionSystem)或许是其中最常见的一个。NS-3项目采用Mercurial系统作为它的源码管理系统。尽管读者在阅读本教程时不需要知道太多的Mercurial相关知识,但我们建议读者能够熟悉Mercurial,并用于查看NS-3源码。Mercurial的网址为,读者可以从上面获取到这个软件配置管理系统(SoftwareConfigurationmanagement,SCM)的二进制程序和源码。Mercurial的开发者Selenic提供了一个Mercurial教程,网址为,以及快速入门指南:在NS-3的主页上,读者也可以获取到有关Mercurial和NS-3配合使用的最常用信息。2.3编译系统Waf读者下载NS-3的源码到本地系统之后,需要对源码进行编译来生成可执行程序。正如源码管理方式多种多样,编译源码也有多种工具。最常用的工具是make.Make最出名的一点:它可能是编译大型和高可配置型系统最难的一种方法。因此,有很多替代工具被开发出来。最近,大型高可配置系统的编译工具大多选择用Python语言来开发。NS-3的编译系统采用了Waf。它是用Python开发的新一代编译管理系统。读者不必掌握python,即可编译现有的NS-3项目。如果读者想要扩展现有的NS-3系统,大多数情况只需了解Python知识的很少且非常直观的一个子集。对于想了解Waf细节的读者,可以访问开发环境正如以上所述,NS-3的脚本由C++或者Python编写。从NS-3.2开始,NS3的API提供了python语言接口,但是所有的模块都是由C++编写的。这里,我们假定读者掌握C++知识和了解面向对象的相关概念。我们将在用到一些高级的概念或者读者可能不熟悉的语言特性、习惯用语或设计模式时适当地花些时间复习它们。但是我们也不希望本教程变成C++教程,所以我们希望读者能够掌握基本的C++命令。在网站上和书籍中,你可以找到无数的关于C++知识的信息。如果读者是个C++新手,那么您在继续阅读本指南之前可能需要找一些C++教程或者网站,至少必须熟悉一下C++的基本语言特征。例如,Cplusplus教程。NS-3系统开发过程中使用了许多的GNU工具链(toolchain)组件。所谓软件的工具链是指在给定环境中可用编程工具的集合。如果读者想要快速地了解一下GNU工具链所包含的内容,请浏览使用gcc,GNUbinutils,以及gdb.但是,我们并不使用GNU编译系统工具(buildsystemtools),既不用make,也不用autotools,而是使用Waf来作为编译管理工具。通常,NS-3使用者的工作环境为Linux或者类Linux系统。对于Windows环境,有几种可以不同程度模拟Linux环境的软件,比如Cygwin。NS-3支持在Cygwin环境下的开发。Windows用户可以浏览获取该软件(虽然有许多工程维护者使用MinGW,但是MinGW现在还没有得到官方支持)。Cygwin可以提供许多流行的Linux系统命令。但是,某些情况下它也会出现问题,因为它毕竟

1 / 45
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功