使用NS进行模拟,需要先分析模拟涉及到哪个层次。NS分为两个层次:一个是基于Otcl编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写Otcl脚本;另一个是基于C++和Otcl编程的层次,如果NS中没有所需的网络元素,添加你需要的网络元素,添加新的C++和Otcl类,然后再编写Otcl脚本。整个模拟过程如图2.1所示。
图2.1 利用NS进行网络模拟过程
在本文中,添加一个新的算法,在不同的网络环境下进行仿真的步骤大致如下:
(1)编写C++程序,使其实现算法的功能,将编写的文件放入NS的queue文件夹。在ns-default文件里添加初始值定义,在makefile文件里添加所需编译的队列名。在终端编译,如有错误做相应修改,直到成功编译。
(2)编写Otcl脚本,设置网络环境,模拟参数和仿真过程。设置Trace对象,将模拟过程中发生的特定类型的事件记录在Trace文件中。模拟完成后可对Trace文件进行分析研究。
(3)跟踪仿真结果,对Trace文件进行分析,利用matlab得出有用的数据曲线。
(4)调整配置网络拓扑结构和流量模型,重新进行上述仿真过程。