在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → ns-3 中文教程

ns-3 中文教程

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.58M
  • 下载次数:3
  • 浏览次数:126
  • 发布时间:2020-09-02
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
本指南的目的是向NS-3新用户以结构化的方式介绍NS-3系统。常常,新用户很难通过繁冗的参考手册收集到对当前仿真任务有用的实质信息。在本教程中,我们将通过几个仿真实例向读者介绍和阐释NS-3的主要概念和特点。 随着本教程的深入,我们会介绍完整的NS-3文档,并指出源代码的具体位置,以便于对NS-3软件系统运行机制感兴趣的研究者做深入的钻研。
基于 兼容性的开放源码许可 …维客 ●…共享代码 页(关似于的共享代码页) 目录我们会保留您共字的代码 ●…开放的错误追踪器( 开发者会很乐意帮助濬在的代码共享者们,提供仿真器的入门途径请联系我 们 我们也意识到,如果您正在读本教程,对项目的共享或许还不在您当前最关 心的事,但是我们希望您知道,“共享”是项日的灵魂。即使是给我们写一个关 于您使用的经验便条(例如:“这个教程的章节条理不够清晰”),通知某些文档 口过时等等,我们将会感激之至。 13教程内容组织 木指南伐定新用户可能会顺着以下思路了解 ●…尝试下载和编译 ●…尝试运行几个简单的示例程序 ●…查看仿真结果并试图调整仿真 因此,我们将大体按照这个顺序来组织木教程。 2资源 2.1网络资源 用户有必要知道几个重要的网站 主站点位于 ,提供系统的基本信息。 详细文档位于主站点的 您也可以从这个网贞 上得到系统架构的相关信息。 维基百科网页 可以作为主站点的补充。您可以在 那里找到用户和开发者的,以及相关问题的解决途径,第三方的共享代码、论文 的源码可以在 找到。读者也可以在名为 的源码 仓厍找到当前的开发树。还有的之前发行版本和最新测试版本的代码。 2.2源码管理系统 Mercurial 复杂的软件系统需要·种途径,用于管理和组织对现有代码和文档的修改。有很 多种方法可以实现这种管理,读者可能已听说过某些版本控制软件,( )或许是其中最常见的一个。 项目采用 系统作为它的源码管理系统。尽管读者在阅读本教程时 不需要知道太多的 相关知识,但我们建议读者能够熟悉 并用于查 看 源码。 的网址为 ,读者可以从上面获 取到这个软件配置管理系统 的二进制程序和 源码。 的开发者 提供了一个 教程,网址为 ,以及快这入门指南 在的主页上,读者也可以获取到有关 和配合使用的最常用信 23编译系统Waf 读者下载的源码到本地系统之后,需要对源码进行编译来生成可执行程序 正如源码管炟方式多种多样,编译源码也有多种L具。最常用的工具是最 出名的一点:它可能是编译大型和高可配置型系统最难的一种方法。因此,有很多替代 工具被廾发出来。最近,大型高可配置系统的编译工具大多选择用语言来井发 的编译系统采用了。它是用 开发的新一代编译管理系统。读者不 必掌握 ,即可编译现有的项日。如果读者想要扩展现有的系统,大 多数情况只需了解 知识的很少且非常直观的个了集 对于想了解细节的读者,可以访问 24开发环境 正如以上所述, 的脚本由或者 编写。从 开始 提供了 语言接∏,但是所有的模块都是由编写的。这里,我们假定读者掌 握知识和了解面向对象的相关概念。我们将在用到一些高级的概念或者读者可能不 熟悉的语言特性、习惯用语或设计模式时适当地花些时闩复习它们。但是我们也不希望 本教程变成教程,所以我们希望读者能够掌握基本的命令。在网站上和书籍 中,你可以找到无数的关于知识的信息。 如果读者是个新手,那么您在继续闶读本指南之前可能需要找一些教程 或者网站,至少必须熟悉一下的基本语言特征。例如, 教程。 系统开发过程中使用了许多的具链()组件。所谓软件的工 具链是指在给定环境中可用编程工具的集合。如果读者想要快速地了解 具 链所包含的内容,请浏览 使用 ,以及 ,我们并不使用 编译系统工只( 既不用,也不用 而是使用来作为编译管理工具 通常,使用者的工作环境为或者类系统。对于 环境, 有儿种可以不同程度模拟环境的软件,比如 支持在 坯境 下的开发。 用户可以浏览 获取该软件虽然有诈多工程 维护者使用 ,但是 现在还没有得到官方支持。 以提供许多 流行的系统命令。但是,某些情况下它也会出现问题,因为它毕竟只是系 统的模拟 和 中其他稈序的交互也有可能会导致稈序出现问题。 如果读者正在使用 或者 并使用着 的某些软件产品,我 们或诈可以让您少点麻烦:建议您去看一看 搜索 并阅读条目:“为什么当我编译源码时, 经常崩溃,留下 个 文件”。无论您相信与否,当运行 时 进程监视 器潜入了每个正在系统中运行的动态连接库当中。它可能导致您的 或者 的动态连接库奇怪地中止,常常也会阻止调试器的运行。所以当运行 的时侯,一定要小心您的 软件。 替代 的一和选择是安装虚拟机,比如在 上安装虚拟机 2.5套接字编程 我们假定读者对本教程所举例子中的 套接字基本熟悉。如果您不了 解套接字,我们建议您学习一下这些和一些常见的使用例程 这本书可以帮助您很好地理解 套接字 网站 包含了 书中所举 例子的源码。 如果读者理解了该书中的前四章如果读者没有这本书的话,可以看上面网站中的 源代码,您会更妤的理解本教程的內容。这里还有一本关于多播套接字 的书籍( Multicast sockets Makofske and almeroth)。如果您想学习本书中有关多播的例 子,该书里面有些资料您可能需要了解。 3N3快速上 手 http://www.nsnam.org/docs/release/tutorial/tutorial_1l.html#getting-staRted 3.1下载ns-3 从现在起,我们假定读者使用的工作环境为 Linux或者仿 Linux环境 ( Linux, Cygwin等等.)并且已经安装了可用的GNU工具链,而且还安装了 Mercuria1(分布式版本控制系统)和Waf软件。细节已经在ns-3网页中详述过, 参见以下链接: http://www.nsnam.org/gettingstartedhtm1 ns-3源码可以在网站http://code.nsnam.org上的Mercurial源码库下载 到.你也可以从链接http://www.nsnam.org/releases/处下载一个tar格式压缩 包,或者直接使用 Mercurial从源码库下载。除非有特殊需要,我们推荐使用 Mercurial从源码库卜载。τar格式压缩包卜载,请参见本节最后部分。最简单 的方法就是使用 Mercuria1源码库下载一个ns-3-a11 inone压缩包,此压缩包内 含一套脚本集来管理各种子系统下的ns-3下载和安装。我们推荐你使用这个压 缩包米简化你的ns-3装。 3.1.1使用 Mercuria1下载ns-3 作为练习,我们首先在home录下建立一个目录并取名为 repos,用来存放 本地 Mercurial源码库,注意:在本教程随后内谷中,我们假定你已经这样做了 如果使用如下的方法,可以在 Linux的shel1中下载到一份ns-3-a1 linne软件 包(假定你已给安装了 Mercurial) mkdir repos cd repos hgclonehttp://code.nsnam.org/ns-3-allinone 当 Mercurai1的hg命令执行后,可以看到如下结果 destination directory: ns-3-allinone requesting all changes adding changesets adding manifests adding file changes added 3l changesets with 45 changes to 7 files 7 files updated, 0 files merged, 0 files removed, 0 files unresolved 当 clone命令运行结束以后,在前述建立的 repos目录下,会出现一个 ns-3- allinone日录,而且含有如下文件: build. py* constants. py dist. py* download. py* README util. py 注意:你实际上仅仅下载了一些 Python脚本,下一步就是利用这些脚本根 据需要卜载并来安装ns-3软件包。如果你汸问如卜链接: http://code.nsnam,org就会发现若干源码库,其中很多是ns3开发团队专用 的。其中在源码库org/你会发现名为ns-3.1的源码库,这是ns-3的第一个稳 定版本。还有一些分散的源码库名为ns-3.1- retraces,它为ns-3.1保留了参 考记录。保持这些文件的一致性是非常重要的,尤其是当你想对源码库倣一个回 归测试时。至少倣一次测试来验证所有的程序都确编译了。 当前的开发版ns3的快照存放在http://code.nsnam.org/ns-3-dev/中; 相关的参考记录存放在链接http://code.nsnam.org/ns-3-dev-ref-traces 中。ns3丌发人员会尽量保持源码库中的代码处于一致,工作的状态,但是他 们仍在开发中,有一些未发布过的代码。所以如果你不需要最新的特性的话还是 考虑使用发行版。 由于发布版的版本号在变化屮,我在指南屮还是继续使用通常不变的 ns-3-dev,但是你可以根据自己的需要选择其他的版本,并替换这里的” ns-3-dev”,(例如,ns-3.6或ns-3.6-ref- traces),在下文中,你可以通过 访问源码库列表或者访问ns3开始网页找到最新的ns-3发布版软件。 当你从源码库卜载完后,继续切换进入你自己建立的ns-3- allinone目录 屮。我们现在使用 download.py脚本来下载ns-3需要使用的各个部件。继续在 你的she1l中输入以下命令(如果你想使川任意发行版你可以将ns-3-dev替换 为你选择的发行版的名字,例如"ns-3.6″和"ns-3,6- retraces")。 /download. py -n ns-3-dev -r ns-3-dev-ref-traces 注意,ηn选项的默认参数为ns-3-dev,-r选项的默认参数为 ns-3- dey- ref- traces,所以上述命令中这两个选项的参数实际上是多余的。我 们使用这个例子来描述如何指定源码库。你只需简单键入如下命令就可以使用默 认参数来下载ns-3-dev: / download. py hg(Mercurial)命令执行时,你可以看到如卜的信息: Get Ns-3 Cloning ns-3 branch =>hgclonehttp://code.nsnam.org/ns-3-devns-3-dev requesting all changes adding changesets adding manifests adding file changes Chapter 3: Getting Started 8 added 4634 changesets with 16500 changes to 1762 files 870 files updated, o files merged, 0 files removed, 0 files unresolved 这些输岀信息显示下载脚本已经从源码库中下载到了实际的ns-3源码,紧 接着,你就会看到这样的信息: Get the regression traces Synchronizing reference traces using Mercurial >hgclonehttp://code.nsnam.org/ns-3-dev-ref-traces ns-3-dey-ref-traces requesting all changes adding changesets adding manifests adding file changes added 86 changesets with 1178 changes to 25 9 files 208 files updated, o files merged, 0 files removed, 0 files unresolved 这表明下载脚本为你下载了参考记录文件。下载脚本被设计成自适应的,它 能检测在一些系统平台上某些ns-3模块不被支持,在你的系统平台上,你可能 看不到这些系统不支持的源码被下载。然而,在大多数系统平台上这样的过程会 显示如下: Get PyBindGen Required pybindgen version: 0. 10.0. 640 Trying to fetch pybindgen; this will fail if no network connection is available. Hit Ctrl-=> bzr checkout -rrevno: 640 https://launchpad.net/pybindgenpybindgen Fetch was successful 这些信息显示了下载脚本在为你下载 Python绑定生成器的过程,下一步你 就可能看到如下的信息(不同的系统平台表现有所不同), #t Get Nsc Required nsc version: nsc-0 5.0 Retrievingnscfromhttps://secure.wandnetnz/mercurial/nsc =>hgclonehttps://secure.wandnetnz/mercurial/nscnsc requesting all changes adding changesets adding manifests adding file changes added 273 changesets with 17565 changes to 15175 files 10622 files updated, 0 files merged, 0 files removed, 0 files unresolved 这些信总显示了下载脚本在为你下载网络仿真器支架程序(NSC的过程。 当复制命令结束,你在/ repos/ns-3- allinone月录下会有几个新目录 build. py* constants. pyc download. py* ns-3-dev-ref-traces/ pybindgen/ util. py constants. py dist. py* ns-3-dev/ nsc/ README util. pyc 继续进入ns-3-dev目录,你会见到如下的文件 AUTHORS examples/ regression/ scratch/ waf* bindings/ LICENSE regression. py src/waf. bat* CHANGES. html ns3/ RELEASE NOTES utils/ wscript doc/ README samples/VER RSion utils.py 现在可以准备编译ns-3软件了。 3.1.2使用 Tarba11下载ns-3 使用 tarba11下载ns3比使用 Mercurai1下载ns-3要简单一些,因为需要 下载的各个部分都已终预先被打包在一个压缩包中了,你只需要选择一个发行版 版本,下载并且解压就可以。如上所述,在 Mercuria1下载方法中,是在home 目录下创建个 repos目录,保存本地 Mercurial源码库。你也可以建立一个 tarba11目录来下载。(注意:本教程后面会假定你把它下载到了 repoa目录 所以请留意这个选择)。如果你选择了 tarballs方法下载,你可以键入如卜命 令米下载一份ns-3的发行版(当然,可以根据需要选择你想要的版木) d mkdir tarballs cd tarballs wgethttp://www.nsnam.org/releases/ns-allinone-3.6.tar.bz2 tar xjf ns-allinone-3. 6. tar. bz2 如果你切换到ns-a11none-3.6目录,你会看到下述文件: build. py* ns-3. 6/ nSc-0. 5. 1/ README constants. py ns-3. 6-ref-traces/ pybindgen-0. 12. 0.700/util. py 现在就可以编译ns-3软件包了。 3.2编译ns-3 3.2.1使用 build.py编译 如果你是第一次编译ns-3软件包,建议使用 allinone环境,它会为你以最 常用的方式配置工程。 切换到你在上文下载一节中创建的目录下。如果你使用 Mercurial下载,请 进入~/ repos目录下的ns-3- allinone目录,如果你使用 tarba11下载,找到 / tarba1ls目录下类似ns- allinone-3.6的目录,键入如下的命令,并请耐心 等待 /build. py 编译脚本开始编译下载的ns3时,你会看到大量常见的编译器输入信息。最 后你会看到如下编译成功的好消息: Waf: Leaving directory /home/craigdo/repos/ns-3-allinone/ns-3-dev/build' build' finished successfully (2m30. 586s 旦工程编译好,你就可以不再使用ns-3-a11 inone脚本包了。你已经从其 中获取必要的东西,现在是你直接同Waf交互的时候了,它位于ns-3-dev目录 中,并不在ns-3- allinone目录中。切换到ns-3-dev目录下(或者你下载的版 本的相应日录下): 【实例截图】
【核心代码】

标签:

实例下载地址

ns-3 中文教程

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警