目录
本文简要介绍QualNet仿真器的实现机制。
一、协议栈
QualNet使用与TCP/IP网络协议栈类似的分层体系结构。在该体系结构中,数据在相邻层之间移动。QualNet的协议栈自上而下为应用层、传输层、网络层、链路(MAC)层和物理层。物理层之下还有传输信道和节点移动性(不能算一层,但都可以配置属性并仿真)。协议栈中的相邻层通过定义好的API进行通信,通常层通信只发生相邻层之间。例如,传输层协议可以从应用和网络层协议获得并传递数据,但不能使用链路(MAC)层协议或者物理层协议来执行。当然,用户也可以自定义函数实现通信功能,不过在函数内部还是会调用系统提供的更底层函数,通常情况下没有必要自定义新的函数。
![](https://i-blog.csdnimg.cn/blog_migrate/ad38f70aa4644fbbad25f5d93fb76765.png)
TCP/IP网络协议栈是网络领域的最基础知识,此处不再赘述。
二、离散事件仿真
QualNet是一个离散事件仿真器。在离散事件仿真中,随着时间的推移,系统通过一种表示来建模,在这种表示中,当事件发生时,系统状态会立即发生变化。其中将事件定义为导致系统更改其状态或执行特定操作的瞬时事件。事件的例子有:一个包的到达,一个周期性的提示信息,通知路由协议向邻居发送路由更新等。发生事件时采取的操作包括:向相邻层发送数据包,更新状态变量,启动或重新启动定时器等。
在离散事件仿真中,仿真器维护事件队列。与每个事件相关联的是其事件时间,即事件被设置为发生的时间,事件队列中的事件按活动时间安排。仿真器还维护一个仿真时钟,用于仿真时间。仿真时钟是按离散步骤提出的,如下所述。
仿真器通过在仿真结束前不断重复以下一系列步骤来操作:
1.仿真器从事件队列中删除第一个事件,即计划用于最早时间的事件。
2.仿真器将仿真时钟设置为事件的发生时间,即跳过中间没有发生事件的时段,提前到达事件发生时刻。
3.仿真器处理该事件,即执行与事件有关的行动。这可能导致更改系统状态、调度其他事件,或两者兼而有之。如果安排了其他事件,它们可能会在当前时刻或将来时刻发生。
三、QualNet协议模型
QualNet中的每个节点都运行协议栈,每个层使用其下方层的服务并向其上层提供服务。协议在协议栈的某一层上运行。QualNet中的协议本质上是一个有限状态机。事件的发生对应于有限状态机的转变。各层之间的接口也是基于事件的。每个协议都可以创建使其更改自己状态的事件(或执行某些事件处理),也可以创建由其他协议处理的事件。如:向相邻层传递数据或请求服务,协议将为该相邻层创建一个事件。