NS 原理概述
1. 离散事件模拟器
NS 是一个离散事件模拟器。离散事件模拟,是几种常用的系统模拟
模型之一。简单的说,事件规定了系统状态的改变,状态的修改仅在事
件发生时进行。在一个网络模拟器中,典型的事件包括分组到达、时钟
超时等等。模拟时钟的推进由事件发生的时间量确定。模拟处理过程的
速率不直接对应着实际时间。一个事件的处理可能又会产生后续事件。
模拟器所做的就是不停的处理一个个事件,直到所有的时间都被处理完
或者某一固定的事件发生为止。
NS 的核心部分是一个离散事件模拟引擎。NS 中有一个“调度器”
(Scheduler)类,负责记录当前时间,调度网络时间队列中的事件,并
提供函数产生新事件,指定事件发生的时间,调度网络事件队列中的事
件,并提供函数产生新事件,指定时间发生的时间。
2. 构件库
有了这个离散事件模拟引擎,原则上用户可以对任何系统进行模拟,
而不限于通信网络系统。用户可以自己完成对所要研究的系统的模拟。
然而,这样做不能发挥 NS 的优势。针对网络模拟,NS 已经做了大量的
模型化工作。NS 对网络系统中一些通用的实体已经进行了建模,例如
链路、队列、分组、节点等,并用对象来实现了这些实体的特性和功能,
这就是 NS 的构件库。相对于一般的离散事件模拟器来说,NS 的优势就
在于它有非常丰富的构件库,而且这些对象易于组合,扩展。
NS的构件库所支持的网络类型包括广域网、局域网、移动通信网、
卫星通信网等等,所支持的路由方式包括层次路由,动态路由,多播路
由等。NS 还提供了跟踪和监测的对象,可以把网络系统中的状态和事
件记录下来以便分析。另外,NS 的构件库中还提供了大量的数学方面
的支持,包括随机数的产生、随机变量、积分等。
3. 分裂对象模型
NS的构件库是用两种面向对象的语言编写的:C++和 Otcl。NS 中
的构件通常都作为一个 C++类来实现,同时有一个 Otcl 类与之对应。
用户通过编写 Otcl 较本来对这些对象进行配置、组合,描述模拟过程,
最后调用 NS 完成模拟。
NS的构件一般都是由相互关联的两个类来实现的,一个在 C++中,
一个在 Otcl 中。这种方式被称为分裂对象模型。构件的主要功能通常
评论0