酷文首页  
站内搜索:
网站地图 | RSS订阅 | 收藏本站
经济论文
证券金融
工商管理
会计审计
法学论文
医药论文
社会论文
教育论文
计算机论文
艺术论文
哲学论文
财政税收
财务管理
公共管理
理学论文
政治论文
文学论文
工学论文
文化论文
实用文档
应用文
自考成考
演讲稿
法律文书
子栏目导行↓
网站赞助商↓
本类热点↓
本类更新↓
热门标签↓
网摘收藏↓

NS2仿真模拟研究与分析

作者:李慧
来源:本站原创
点击:
载入中...
加入时间:2008-06-29
字体大小:[  ]

2.2  概念
NS2是一个多协议网络模拟工具,目的在于建立一个网络模拟平台,为网络研究者提供网络模拟环境。因为NS2集成了多种网络协议(如 TCP、UDP),业务类型(如FTP、Telnet、Web等),路由队列调度算法(如Drop Tail、RED、FQ等),路由算法(如Dijkstra等)。它的仿真描述语言是扩展的Tcl(Tool Command language)。NS2是用C++编写的面向对象的仿真器,仿真器内核定义了有层次结构的多种类,见(图2. 1),称为编译类结构。OTCL中有相似的类结构,称为解释类结构。
 

图2.1  NS2类层次结构图
仿真过程就是编写Tcl语言源程序,其中有NS命令定义的网络结构、配置业务源、业务接收点、收集统计信息,然后启动NS仿真器,运行仿真程序。也是一个由UC Berkeley开发的用于仿真各种IP网络的为主的优秀的仿真软件。同时,NS是一个面向对象的、一个可扩展的、容易配置的、可编程的事件驱动仿真引擎(simulation engine),由LBNL(Law•fence Berkeley National Laboratory)的网络研究组研制开发,是DARPA支持的VINT项目的核心部分,其源代码全部公开,提供开放的用户接口,可用于各类IP网络模拟。
Tk是Tcl在X Window环境下的扩展,它包含了Tcl的全部c库函数,以及支持X Window的窗口,控件等c库函数,为用户开发图形用户界面提供了方便。NS的设计实现了使用两种程序设计语言,C++和Otcl。这两种程序设计语言都是面向对象的。C++程序模块的运行速度非常快,是强制类型的程序设计语言,容易实现精确的,复杂的算法,但是修改和发现,修正bug所花费的时间较长,因为它比较复杂。Otcl是脚本程序编写语言,是无强制类型的,虽然它的运行速度和C++的模块相比要慢很多,但是它比较简单,且容易实现和修改。
    NS还集成了组播业务和应用于局域网仿真有关的部分、MAC层协议。其仿真主要针对路由层,传输层,数据链路层展开,因此NS可以进行对固定,无线,卫星以及混合等多种网络的仿真,但它最适用于TCP层以上的模拟。


2.3  网络模拟需求
近年来,数据通信网络不管是从物理的规模还是其应用范围来讲,都获得了巨大的发展,Internet上不断地有新的需求出现,人们开发新的协议和算法来满足这些变法的需求。这种需求的例子包括服务质量支持、组播传输、安全性、移动网络和策略管理。对这些领域的协议和算法的开发和评价要求人们回答很多设计上的问题。NS模拟器在设计思路上可以满足网络研究界在网络模拟方面的以下多种需求。
(1)抽象:模拟器要能提供不同程度的抽象,允许通过单一的模拟器既能模拟出实际所需要的详细的细节,又能够进行在一定程度上的能够忽略细节的高级别的模拟。
(2)仿真:大多数模拟实验室是限制在一个单一的模拟世界里的,仅仅包括模拟器中有的那些协议和算法。而仿真允许一个运行的模拟器和真实的网络节点交互,在协议设计上是一个强有力的工具。NS提供了将真实网络中的分组引入到模拟器的手段。
(3)场景生成:在一组适当的网络条件下测试协议,对于得到可用的和有用的结果来说是很关键的。自动的创建复杂的业务模式、拓扑结构和动态事件(如链路失败)可以帮助生成适当场景。NS中附带了相关的场景自动生成工具,用户也可以通过自己编写脚本来设置场景。
(4)可视化:让人们能更容易地理解网络模拟中的复杂行为的工具是非常有用的。假定行为很复杂,网络涉及的规模很大,仅仅提供概括性能的数据表格不能充分的描述网络的行为。而NS2的可视化的网络行为增加了动态的展示,同时也让人们能更直观的理解协议,并能够辅助协议调试,Nam是NS提供的为模拟结果提供可视化展示的一种动画工具。

(5)可扩充性:模拟器必须容易扩展以增加新的功能,然后再开发大量的场景,以及研究一种新协议。NS就是这样一种通过利用其分裂的编程模型,使脚本容易编写并且新协议可以高效的运行。由于这些独特的编程模型,NS中的模块可以很方便地扩展和组合。
NS2是由OTCL脚本驱动的仿真器,由C++构造网络部件,如网络协议、定时器、网络框架等。OTCL是面向对象的脚本语言,是对TCL的扩展,在仿真脚本中定义的每个对象是C++类的实例。它是网络离散模拟工具,是美国DARPA支持的项目VINT(the Virtual Internet Tested)中的核心部分,它主要面向网络协议研究者。NS2提供的支持包括:
(1) 模拟的网络类型广域网、局域网、移动通信网、卫星通信网;
(2) 数学方面的支持随机数产生、随机变量、积分;
(3) 跟踪监测包类型、队列监测、流监测;
(4) 路由点到点传播路由、组播路由、网络动态路由、层次路由。
2.4  原理
NS是一个离散事件模拟器。离散事件模拟,是几种常用的系统模拟模型之一。在一个网络模拟器中,典型的事件包括分组到达、时钟超时等。模拟时钟的推进由事件发生的时间量确定,模拟处理过程的速率不直接对应着实际时间,一个事件的处理可能又会产生后续的事件。NS模拟器所做的就是能够不停地处理一个个事件,直到所有的事件都被处理完或者某一特定的事件发生为止。NS的核心部分是一个离散事件模拟引擎。NS中有一个“调度器”(Scheduler)类,负责记录当前时间,调度网络事件队列中的事件,并提供函数产生新事件,指定事件发生的时间。
NS对网络系统中一些通用的实体进行了建模,例如链路、队列、分组、节点等,并可用这些对象来实现实体的特性和功能,这就是 NS 的构件库,而且这些对象易于组合,易于扩展。用户可以充分利用这些已有的对象,进行少量的扩展,组合出所要研究的网络系统的模型,然后进行模拟。这样就大大减轻了网络模拟研究的工作量,提高了效率。
NS的构件一般都是由相互关联的两个类来是实现的,一个在C++中,一个在Otcl中,这种方式被称为分裂对象模型。构件的主要功能通常在C++中实现,Otcl的类则主要提供C++对象面向用户的接口。用户可以通过Otcl来访问对应的C++对象的成员变量和函数,C++对象和Otcl对象之间是通过叫做TclCL的机制关联起来的。NS使用这种分裂对象模型,可以兼顾模拟性能和灵活性两方面:一方面, C++是高效的编译执行语言,使用C++实现功能的模拟,可使模拟过程的执行获得较好的性能;另一方面, Otcl是解释执行的,用Otcl进行模拟配置,可以在不必重新编译的情况下随意修改模拟参数和模拟过程,提高了模拟的效率。同时,这种分裂对象模型增强了构件库的扩展性和组合性,用户通常只需要编写Otcl脚本就可以把一些构件组合起来,成为一个 “宏对象”。转贴于 酷文网-论文下载中心 http://www.coolwen.net


共9页: 上一页 [1] [2] 3 [4] [5] [6] [7] [8] [9] 下一页

网摘收藏:
 -> 在百度中搜索:NS2仿真模拟研究与分析
 -> 在Google中搜索:NS2仿真模拟研究与分析
免责声明 | 关于我们 | 广告联系 | 友情链接 | 网站地图 | 共同合作
免费论文 毕业论文 毕业论文范文 酷文网(www.coolwen.net) 版权所有 coolwen.net 2007,All Rights Reserved
E-mail:hui_love#tom.com(为防止垃圾邮件请把#换成@) 点击这里给我发消息 点击这里给我发消息
湘ICP备07003917号