NS3是一种离散事件网络仿真器。从概念上讲,该仿真器会持续追踪一系列事件的发生,通过事件的调度使其在特定的仿真时间被执行。仿真器的工作就是按仿真时间顺序执行离散事件。举个具体例子来说,如果一个事件在仿真时间100s时被执行,而下一个事件发生在仿真时间200s时,仿真器的仿真时间会立刻从100s变为200s去执行下一个事件。这就是所谓的“离散事件“仿真器。
本文主要介绍:事件Event的建立和取消,仿真器的调度和仿真时间的提取。
1. Event
EventId类 可以用来作为一个事件的标识,进而可以对指定的事件进行取消和移除等操作,下面结合Simulator进行说明。
2. Simulator
Simulator类是访问事件调度工具的公共入口点。在开始仿真时,会调度一些事件至事件列表中,通过进入仿真器主循环(即Simulator::Run)按仿真时间顺序执行他们。仿真器执行事件期间,调度器(Scheduler)会插入或移除某些事件至事件列表中。直到事件列表中没有事件需要被执行或强制调用了Simultor::Stop函数,此时仿真结束。
关于调度器的使用,这里给出几个例子
例1:客户端Client按照某一指定的时间间隔m_interval不断发送数据包
class UdpClient : pubic Application
{
public:
...
private:
virtual void StartApplication(void);
virtual void StopApplication(void);
void Send(void);
...