NS3中文教程详解文档格式.docx

上传人:b****1 文档编号:1026551 上传时间:2023-04-30 格式:DOCX 页数:54 大小:72.52KB
下载 相关 举报
NS3中文教程详解文档格式.docx_第1页
第1页 / 共54页
NS3中文教程详解文档格式.docx_第2页
第2页 / 共54页
NS3中文教程详解文档格式.docx_第3页
第3页 / 共54页
NS3中文教程详解文档格式.docx_第4页
第4页 / 共54页
NS3中文教程详解文档格式.docx_第5页
第5页 / 共54页
NS3中文教程详解文档格式.docx_第6页
第6页 / 共54页
NS3中文教程详解文档格式.docx_第7页
第7页 / 共54页
NS3中文教程详解文档格式.docx_第8页
第8页 / 共54页
NS3中文教程详解文档格式.docx_第9页
第9页 / 共54页
NS3中文教程详解文档格式.docx_第10页
第10页 / 共54页
NS3中文教程详解文档格式.docx_第11页
第11页 / 共54页
NS3中文教程详解文档格式.docx_第12页
第12页 / 共54页
NS3中文教程详解文档格式.docx_第13页
第13页 / 共54页
NS3中文教程详解文档格式.docx_第14页
第14页 / 共54页
NS3中文教程详解文档格式.docx_第15页
第15页 / 共54页
NS3中文教程详解文档格式.docx_第16页
第16页 / 共54页
NS3中文教程详解文档格式.docx_第17页
第17页 / 共54页
NS3中文教程详解文档格式.docx_第18页
第18页 / 共54页
NS3中文教程详解文档格式.docx_第19页
第19页 / 共54页
NS3中文教程详解文档格式.docx_第20页
第20页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

NS3中文教程详解文档格式.docx

《NS3中文教程详解文档格式.docx》由会员分享,可在线阅读,更多相关《NS3中文教程详解文档格式.docx(54页珍藏版)》请在冰点文库上搜索。

NS3中文教程详解文档格式.docx

由于NS-3能生成.pcap文件,因此可以使用类似于WireShark的软件对数据进行分析

tcpdump

另一种包嗅探器。

在Linux下使用CLI进行数据分析

 

2资源 

网络资源

NS-3用户有必要知道几个重要的网站:

主站点位于,提供NS-3系统的基本信息。

详细文档位于主站点的您也可以从这个网页上得到系统架构的相关信息。

维基百科网页可以作为NS-3主站点的补充。

您可以在那里找到用户和开发者的FAQs,以及相关问题的解决途径,第三方的共享代码、论文等等。

NS-3的源码可以在找到。

读者也可以在名为ns3-dev的源码仓库找到当前的NS-3开发树。

还有NS-3的之前发行版本和最新测试版本的代码。

源码管理系统Mercurial

复杂的软件系统需要一种途径,用于管理和组织对现有代码和文档的修改。

有很多种方法可以实现这种管理,读者可能已听说过某些版本控制软件,CVS(ConcurrentVersionSystem)或许是其中最常见的一个。

NS-3项目采用Mercurial系统作为它的源码管理系统。

尽管读者在阅读本教程时不需要知道太多的Mercurial相关知识,但我们建议读者能够熟悉Mercurial,并用于查看NS-3源码。

Mercurial的网址为,读者可以从上面获取到这个软件配置管理系统(SoftwareConfigurationmanagement,SCM)的二进制程序和源码。

Mercurial的开发者Selenic提供了一个Mercurial教程,网址为,以及快速入门指南:

.

在NS-3的主页上,读者也可以获取到有关Mercurial和NS-3配合使用的最常用信息。

编译系统Waf

读者下载NS-3的源码到本地系统之后,需要对源码进行编译来生成可执行程序。

正如源码管理方式多种多样,编译源码也有多种工具。

最常用的工具是make.Make最出名的一点:

它可能是编译大型和高可配置型系统最难的一种方法。

因此,有很多替代工具被开发出来。

最近,大型高可配置系统的编译工具大多选择用Python语言来开发。

NS-3的编译系统采用了Waf。

它是用Python开发的新一代编译管理系统。

读者不必掌握python,即可编译现有的NS-3项目。

如果读者想要扩展现有的NS-3系统,大多数情况只需了解Python知识的很少且非常直观的一个子集。

对于想了解Waf细节的读者,可以访问.

 

开发环境

正如以上所述,NS-3的脚本由C++或者Python编写。

从开始,NS3的API提供了python语言接口,但是所有的模块都是由C++编写的。

这里,我们假定读者掌握C++知识和了解面向对象的相关概念。

我们将在用到一些高级的概念或者读者可能不熟悉的语言特性、习惯用语或设计模式时适当地花些时间复习它们。

但是我们也不希望本教程变成C++教程,所以我们希望读者能够掌握基本的C++命令。

在网站上和书籍中,你可以找到无数的关于C++知识的信息。

如果读者是个C++新手,那么您在继续阅读本指南之前可能需要找一些C++教程或者网站,至少必须熟悉一下C++的基本语言特征。

例如,Cplusplus教程。

NS-3系统开发过程中使用了许多的GNU工具链(toolchain)组件。

所谓软件的工具链是指在给定环境中可用编程工具的集合。

如果读者想要快速地了解一下GNU工具链所包含的内容,请浏览. 

NS-3使用gcc,GNUbinutils,以及gdb.但是,我们并不使用GNU编译系统工具(buildsystemtools),既不用make,也不用autotools,而是使用Waf来作为编译管理工具。

通常,NS-3使用者的工作环境为Linux或者类Linux系统。

对于Windows环境,有几种可以不同程度模拟Linux环境的软件,比如Cygwin。

NS-3支持在Cygwin环境下的开发。

Windows用户可以浏览获取该软件(虽然有许多工程维护者使用MinGW,但是MinGW现在还没有得到官方支持)。

Cygwin可以提供许多流行的Linux系统命令。

但是,某些情况下它也会出现问题,因为它毕竟只是Linux系统的模拟。

Cygwin和Windows中其他程序的交互也有可能会导致程序出现问题。

如果读者正在使用Cygwin或者MinGW;

并使用着Logitech的某些软件产品,我们或许可以让您少点麻烦:

建议您去看一看MinGWFAQ。

搜索Logitech并阅读FAQ条目:

“为什么当我编译源码时,make经常崩溃,留下一个文件”。

无论您相信与否,当运行Logitech时,Logitech进程监视器潜入了每个正在系统中运行的动态连接库(DLL)当中。

它可能导致您的Cygwin或者MinGw的动态连接库奇怪地中止,常常也会阻止调试器的运行。

所以当运行Cygwin的时候,一定要小心您的Logitech软件。

替代Cygwin的一种选择是安装虚拟机,比如在VMware上安装Linux虚拟机。

套接字编程

我们假定读者对本教程所举例子中的Berkeley套接字API基本熟悉。

如果您不了解套接字,我们建议您学习一下这些API和一些常见的使用例程。

TCP/IPSocketsinC这本书可以帮助您很好地理解TCP/IP套接字。

网站包含了SocketinC书中所举例子的源码。

如果读者理解了该书中的前四章(如果读者没有这本书的话,可以看上面网站中的源代码),您会更好的理解本教程的内容。

这里还有一本关于多播套接字(MulticastSockets)的书籍(MulticastSockets,MakofskeandAlmeroth)。

如果您想学习本书中有关多播的例子,该书里面有些资料您可能需要了解。

NS3的两个例子

1./*-*-Mode:

C++;

c-file-style:

"

gnu"

;

indent-tabs-mode:

nil;

-*-*/);

2.("

PacketSize"

UintegerValue(1024));

3.

4.ApplicationContainerclientApps=(0));

See 

the 

5. 

GNU 

General 

Public 

License 

for 

more 

details. 

6. 

7. 

You 

should 

have 

received 

copy 

of 

8. 

along 

with 

this 

program;

if 

not, 

write 

to 

Free 

Software 

9. 

Foundation, 

Inc., 

59 

Temple 

Place, 

Suite 

330, 

Boston, 

MA 

02111-1307 

USA 

10. 

*/ 

11.#include 

ns3/"

12.#include 

13.#include 

14.#include 

15.#include 

16.#include 

17.);

18. 

("

 

UintegerValue 

(1024));

19. 

ApplicationContainer 

clientApps 

20. 

(nWifi 

1));

21. 

(Seconds 

);

22. 

23. 

Ipv4GlobalRoutingHelper:

:

PopulateRoutingTables 

();

24. 

Simulator:

Stop 

25. 

third"

26. 

(0));

27. 

(0), 

true);

28. 

Run 

29. 

Destroy 

30. 

return 

0;

31.} 

NS3中文教程:

3下载及编译软件

首先感谢此稿的翻译工作人员,正是因为他们的劳动才让我们这些初学者有捷径可取。

下载ns-3

从现在起,我们假定读者使用的工作环境为Linux或者仿Linux环境(Linux,Cygwin等等.)并且已经安装了可用的GNU工具链,而且还安装了Mercurial(分布式版本控制系统)和Waf软件。

细节已经在ns-3网页中详述过,参见以下链接:

源码可以在网站上的Mercurial源码库下载到.你也可以从链接处下载一个tar格式压缩包,或者直接使用Mercurial从源码库下载。

除非有特殊需要,我们推荐使用Mercurial从源码库下载。

tar格式压缩包下载,请参见本节最后部分。

最简单的方法就是使用Mercurial源码库下载一个ns-3-allinone压缩包,此压缩包内含一套脚本集来管理各种子系统下的ns-3下载和安装。

我们推荐你使用这个压缩包来简化你的ns-3安装。

使用Mercurial下载ns-3

作为练习,我们首先在home目录下建立一个目录并取名为repos,用来存放本地Mercurial源码库,注意:

在本教程随后内容中,我们假定你已经这样做了。

如果使用如下的方法,可以在Linux的shell中下载到一份ns-3-allinone软件包(假定你已经安装了Mercurial):

cd

mkdirrepos

cdrepos

hgclone 

当Mercurail的hg命令执行后,可以看到如下结果:

destinationdirectory:

ns-3-allinone

requestingallchanges

addingchangesets

addingmanifests

addingfilechanges

added31changesetswith45changesto7files

7filesupdated,0filesmerged,0filesremoved,0filesunresolved

当clone命令运行结束以后,在前述建立的repos目录下,会出现一个ns-3-allinone目录,而且含有如下文件:

README 

注意:

你实际上仅仅下载了一些Python脚本,下一步就是利用这些脚本根据需要下载并来安装ns-3软件包。

如果你访问如下链接:

就会发现若干源码库,其中很多是ns3开发团队专用的。

其中在源码库org/你会发现名为的源码库,这是ns-3的第一个稳定版本。

还有一些分散的源码库名为,它为保留了参考记录。

保持这些文件的一致性是非常重要的,尤其是当你想对源码库做一个回归测试时。

至少做一次测试来验证所有的程序都正确编译了。

当前的开发版ns-3的快照存放在中;

相关的参考记录存放在链接中。

ns3开发人员会尽量保持源码库中的代码处于一致,工作的状态,但是他们仍在开发中,有一些未发布过的代码。

所以如果你不需要最新的特性的话还是考虑使用发行版。

由于发布版的版本号在变化中,我在指南中还是继续使用通常不变的ns-3-dev,但是你可以根据自己的需要选择其他的版本,并替换这里的”ns-3-dev”,(例如,或,在下文中,你可以通过访问源码库列表或者访问ns3开始网页找到最新的ns-3发布版软件。

当你从源码库下载完后,继续切换进入你自己建立的ns-3-allinone目录中。

我们现在使用脚本来下载ns-3需要使用的各个部件。

继续在你的shell中输入以下命令(如果你想使用任意发行版你可以将ns-3-dev替换为你选择的发行版的名字,例如"

和"

)。

./-nns-3-dev-rns-3-dev-ref-traces

注意,-n选项的默认参数为ns-3-dev,-r选项的默认参数为ns-3-dev-ref-traces,所以上述命令中这两个选项的参数实际上是多余的。

我们使用这个例子来描述如何指定源码库。

你只需简单键入如下命令就可以使用默认参数来下载ns-3-dev:

./

当hg(Mercurial)命令执行时,你可以看到如下的信息:

#

#GetNS-3

Cloningns-3branch

=>

hgclonens-3-dev

Chapter3:

GettingStarted8

added4634changesetswith16500changesto1762files

870filesupdated,0filesmerged,0filesremoved,0filesunresolved

这些输出信息显示下载脚本已经从源码库中下载到了实际的ns-3源码,紧接着,你就会看到这样的信息:

#Gettheregressiontraces

SynchronizingreferencetracesusingMercurial.

hgclonens-3-dev-ref-traces

added86changesetswith1178changesto259files

208filesupdated,0filesmerged,0filesremoved,0filesunresolved

这表明下载脚本为你下载了参考记录文件。

下载脚本被设计成自适应的,它能检测在一些系统平台上某些ns-3模块不被支持,在你的系统平台上,你可能看不到这些系统不支持的源码被下载。

然而,在大多数系统平台上这样的过程会显示如下:

#GetPyBindGen

Requiredpybindgenversion:

Tryingtofetch 

pybindgen;

thiswillfailifnonetworkconnectionisavailable.HitCtrl-=>

bzrcheckout-rrevno:

640pybindgenpybindgen

Fetchwassuccessful.

这些信息显示了下载脚本在为你下载Python绑定生成器的过程,下一步你就可能看到如下的信息(不同的系统平台表现有所不同),

#GetNSC

RequiredNSCversion:

nscfromclonensc

added273changesetswith17565changesto15175files

10622filesupdated,0filesmerged,0filesremoved,0filesunresolved

这些信息显示了下载脚本在为你下载网络仿真器支架程序(NSC)的过程。

当复制命令结束,你在~/repos/ns-3-allinone目录下会有几个新目录:

**ns-3-dev-ref-traces/pybindgen/

*ns-3-dev/nsc/README

继续进入ns-3-dev目录,你会见到如下的文件:

AUTHORSexamples/regression/scratch/waf*

bindings/LICENSEsrc/*

ns3/RELEASE_NOTESutils/wscript

doc/READMEsamples/VERSION

现在可以准备编译ns-3软件了。

使用Tarball下载ns-3

使用tarball下载ns-3比使用Mercurail下载ns-3要简单一些,因为需要下载的各个部分都已经预先被打包在一个压缩包中了,你只需要选择一个发行版版本,下载并且解压就可以。

如上所述,在Mercurial下载方法中,是在home目录下创建一个repos目录,保存本地Mercurial源码库。

你也可以建立一个tarball目录来下载。

(注意:

本教程后面会假定你把它下载到了repoa目录,所以请留意这个选择)。

如果你选择了tarballs方法下载,你可以键入如下命令来下载一份ns-3的发行版(当然,可以根据需要选择你想要的版本):

mkdirtarballs

cdtarballs

wgetxjf如果你切换到目录,你会看到下述文件:

*README

pybindgen-/

现在就可以编译ns-3软件包了。

编译ns-3

使用编译

如果你是第一次编译ns-3软件包,建议使用allinone环境,它会为你以最常用的方式配置工程。

切换到你在上文下载一节中创建的目录下。

如果你使用Mercurial下载,请进入~/repos目录下的ns-3-allinone目录,如果你使用tarball下载,找到~/tarballs目录下类似的目录,键入如下的命令,并请耐心等待:

编译脚本开始编译下载的ns3时,你会看到大量常见的编译器输入信息。

最后你会看到如下编译成功的好消息:

Waf:

Leavingdirectory‘/home/craigdo/repos/ns-3-allinone/ns-3-dev/build’

’build’finishedsuccessfully

一旦工程编译好,你就可以不再使用ns-3-allinone脚本包了。

你已经从其中获取必要的东西,现在是你直接同Waf交互的时候了,它位于ns-3-dev目录中,并不在ns-3-allinone目录中。

切换到ns-3-dev目录下(或者你下载的版本的相应目录下):

cdns-3-dev

使用Waf编译

我们使用waf来配置和编译ns-3工程软件包,这一点不是严格必须的,但是做一个简单的介绍是很有必要的,起码可以了解如何修改工程的配置。

也许你能做出的最有用的配置修改就是编译工程的优化版本了,默认你会将你的工程编译为调试版本,让我们来使工程做出优化的编译。

为了通知waf进行优化编译,你需要执行如下的命令:

./waf-doptimizedconfigure

这会Waf可能会切换到其他目录收集信息.当编译系统检查各种依存关系时,你可以看到类似如下的输出结果:

Checkingforprogramg++:

ok/usr/bin/g++

Checkingforprogramcpp:

ok/usr/bin/cpp

Checkingforprogramar:

ok/usr/bin/ar

Checkingforprogramranlib:

ok/usr/bin/ranlib

Checkingforg++:

ok

(鉴于长度限制,省略)

Checkingforprogramvalgrind:

ok/usr/bin/valgrind

----SummaryofoptionalNS-3features:

ThreadingPrimitives:

enabled

RealTimeSimulator:

EmulatedNetDevice:

GNUScientificLibrary(GSL):

TapBridge:

GtkConfigStore:

XmlIo:

SQlitestatsdataoutput:

NetworkSimulationCradle:

PythonBindings:

Pytho

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2