网络仿真器NS2剖析.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络仿真器NS2剖析

背景 1.1 局域网仿真 局域网仿真是局域网设计的重要环节,也是网络性能分析的关键。 计算机局域网设计、模拟和性能分析系统的研究是一个非常有意义的课题。它使设计者在设计阶段就能对所设计的网络的性能作出准确的预测,合理修改其设计,选择符合要求的性价比较优的方案。进行计算机仿真,利用仿真中间参数分析系统性能是分析某一计算机网络系统的性能的常用方法。采用系统仿真的方法,能对各组件的行为进行较精确的模拟,获得足够数据来对系统的性能进行较准确的预测。 在构造一个局域网之前,需要设计此网络的拓扑图,各层协议等等。要达到最优的效果,需要对图的结构等等进行不断的修改。如果用手工计算、调整,则不仅耗功耗时,还可能留下不可预计的漏洞。而要直接进行操作系统上的编程工作,则不断的修改、调试让人无法忍受,更重要的是由于实际机器的影响,很多工作都无法进行。 类似的情况发生在我们研究网络算法时,如果直接在各种操作系统上编程、测试,便无可避免与操作系统内核打交道。这需要特别熟悉操作系统的内核,操作系统内核的复杂性大大增加了编程的难度,这使我们将更多的精力投入对操作系统的编程而不是对算法的研究。 1.2 仿真器 基于以上种种考虑,我们需要一个与操作系统无关的平台,它可以屏蔽掉对操作系统的实际的访问,且能近乎真实地模拟网络环境,让我们可以在各个层次上模拟网络的运行。 事实上,已有许多研究机构对此作出努力,并开发出自己的网络仿真器。比如,Columbia University的NEST,作者为Alex Dupuy。University of California的S.Keshav在NEST的基础上,进行修改,就形成后来的REAL网络仿真器。之后,Lawrece Berkeley National Laboratory 实验室的Network Research Group 工作组对REAL进行进一步的修改,终于得到LNBL Network Simulator,即ns的第一版。UC Berkeley的MASH研究组对LNBL继续改进,将它的版本提高到2.1b7a,这是一个很优秀的软件。用一句话概括这个软件的功能就是:它可以在一台计算机上动态仿真一个网络的运行。 本文的任务就是尽可能介绍UC Berkeley改进过的NS2,介绍其功能、使用方法,与其一起工作的工具,分析其源代码,并介绍对它进行简单扩展的方法。 运行环境及语言支持 2.1 运行环境 NS工具包有许多模块组成,不同的组合可以在不同的操作系统上运行。如:Windows系列,Linux、Unix、Macintosh等等。为了运行ns,还要求系统装有C++编译器。 整合的Ns-allinone2.1b7a包含了比较完整的工具包,但是只能在Linux下运行。 2.2 语言支持 值得注意的是NS的主代码由两种语言写成:C++和OTcl。 因为仿真器有两方面的需要: 1)一方面,对协议细节的仿真需要一种比较系统的编程语言,它能高效地对字节、数据报头进行操作,能高效实现运行在大量数据集上的算法。对于这些任务,运行时间(run time)是我们最关心的,要尽可能少,而转换时间(turn-around time,含运行,调试)可以长一些。 2)另一方面,对网络研究会涉及到对网络实体的参数或配置的修改,或是对网络事件的修改。在这些情况下,反复时间(iteration time,即变换模型,重运行)更重要。由于配置仅运行一次(在仿真刚开始时),因此这一部分任务的运行时间可不用考虑。 C++与Otcl解决了这两种需要。C++程序的运行时间很短,但转换时间很长,正适合用于实现具体的协议。Otcl运行得很慢,但可以很快的转换(或是交互),用来进行仿真的配置最适合不过。然后,通过tclcl模块将出现在两种语言里的变量、对象胶合起来。 当然以上的分法并不是绝对的,例如:许多路由是由Otcl实现的,但其核心——Dijkstra算法是用C++来实现)。通常,如果需要在一秒钟内调用许多次的模块,最好还是用C++代码实现。 NS各模块及功能 这章着重介绍: NS内各大模块及功能, 结合模块介绍整个工具包的工作机制 NS内含的几个单独的小工具包 3.1 模块概述 Ns-allinone2.1b7a中含有12个模块: 模块 版本号 必选/可选 1 Tcl Tcl release 8.3.2 必选 2 Tk Tk release 8.3.2 必选 3 Otcl otcl release 1.0a6 必选 4 TclCL tclcl release 1.0b10 必选 5 Ns ns release 2.1b7 必选 6 TclDebug tcl-debug relase 1.9 可选 7 Nam Nam release 1

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档