- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NS2网络模拟简介以及MTE、LEACH、LEACH-C协议仿真PPT
无线传感器网络仿真平台NS2
计算机应用技术 张道远
内容
NS2介绍
OTcl语言简介
NS2的实现机制和体系结构
利用NS2模拟流程和注意事项
NS2—协议仿真
NS2介绍
NS2是面向对象的,离散事件驱动的网络环境模拟器,开发于UC Berkeley,它可以模拟各种IP网络环境。
NS2实现了对许多网络协议的模拟,如TCP,UDP,和数据源发生器(traffic source)如FTP,WWW,Telnet,Web,CBR和VBR等。
NS2模拟了路由队列的管理机制,如Drop Tail,RED和VBR,实现了Dijkstra和其他的路由算法。
NS2也实现了Multicasting和一些应用于局域网模拟的在MAC层的协议。
NS2采用分裂对象模型的开发机制,由C++和Otcl(加上面向对象特性的TCL脚本程序设计语言,开发于MIT)两种程序设计语言实现。
OTcl语言简介
Tk是Tcl在X Window环境下的扩展,它包含了Tcl的全部的C库函数,以及支持X Window的窗口、控件等C库函数,为用户开发图形用户界面提供了方便。
Tcl是解释执行的脚本语言。它的实现依赖于Tcl内部的C函数库。添加新的C函数就可以扩充Tcl的命令和功能,是扩展性非常强的脚本程序设计语言。
Tcl解释器把用户输入的命令和程序语句进行初步分析,然后调用C函数库里的相应函数来执行,输出结果。
Tcl是无强制类型的脚本语言,一切变量,不论整型,浮点型等,都以字符串的形式存储。
NS2的实现机制和体系结构
NS是一种面向对象Tcl(OTcl)语言脚本解释器,它有一个事件调度器、一个网络组件库。换句话说,使用NS时需要使用OTcl语言编写脚本文件。
事件调度器:事件在NS中是一个具有唯一ID号的数据包、数据包被处理的时间及处理它的主对象的总称。事件调度器跟踪仿真的时间并且根据预定时间安排队列中的事件,激活当前时间对应的处理该事件的网络对象。事件调度器维护一个排序的数据结构(缺省情况下ns使用链表),对事件有序地执行、释放,并激活事件处理对象。
NS仿真试图
NS由C++和OTcl写成:其中C++语言实现各种网络组件,这是为了提高效率;OTcl语言编写脚本文件来建立网络和运行仿真,这样是为了简单而快速地进行网络环境的建立。
编译过的C++对象只要通过链接,创建一个与之匹配的OTcl对象就可在OTcl解释器中使用。
OTcl与C++的类对应示意图
NS2的总体系结构
NS2的目录结构
ns-2.34:存放C++代码的地方;
ns-2.34\tcl:存放OTcl代码的地方;
Ns-2.34\tcl\lib:存放与组件(agent, node, link, packet, address, routing )实现有关的OTcl代码;在此目录下,有以下几个文件:ns-lib.tcl: Simulator类定义与成员函数实现,如 run,simplexlink,flush-trace等;ns-default.tcl:各种网络组件配置的缺省值。
ns-2.34\tcl\ex, ns-2.34\tcl\test: 存放一些例子脚本文件和验证结果。
NS2的部分类结构
分类器——classifier是Ns-2基本网络组件的一个大类。它的基本派生类有地址分类器(AddrClassifier)和多播分类器(McastClassifier)等。基于分类器的基本网络组件具有1个或多个可能的数据输出路径,属于交换(Switch)设备(对应来说,连接器Connector只有一个数据的输出路径)。
拓扑结点(Node)是由一个结点入口对象和若干个分类器(Classifier)组成的一个符合对象。
连接器——Connector是NS2基本网络组件中的另一个大类。它的基本派生类对象包括缓冲队列(Queue)、延迟(Delay)、各种产生和处理数据包的代理(Agent)和对象的跟踪器(Trace)。基于连接器的基本网络组件只有一个可能数据输出的路径,和分类器有1个或多个可能的数据输出路径(Switch)是不同的。
拓扑结点连接类(Link)是NS2中另一个主要的复合组件对象。一个结点和另一个结点之间的简单连接(simplex-link)是单向的。一个最基本的简单连接由一个连接入口、包缓冲队列、延迟处理对象、废弃处理对象和时间处理对象(TTL)组成。
两个节点间数据包通信的实例
如何从OTcl来操纵NS2的C++对象, 这包括:
动态创建一个新的C++对象,
访问这个C++对象的属性,
调用该C++对象的方法.
利用NS2模拟流程和注意事项
1. 流程
整个模拟流程主要有三部分工作量:一是修改源代码,二是
编写Tc
文档评论(0)