(一)NS方法学
NS的优势在于它的内容非常丰富,但同时,这也是它的劣势。它是一个庞大的系统,有一个相对陡峭的起始学习曲线。也就是说初学者在入门时面临的困难最大。所以掌握正确的方法,具备正确的观念,对于学习NS来说尤为重要。
(1)掌握原理。
NS使用者应该做到对NS的离散事件模拟机制以及分裂对象模型非常清楚。这是进一步深入学习和使用NS的基础。
(2)牢记节点结构。
节点是NS中最重要的一个构件。一个节点是由分类器、复用器、代理、链路等更基本的构件组合而成的。有线网络节点和无线网络节点的结构时不同的。不同节点用链路连接起来,就构成了网络,因此使用者应该对节点结构非常熟悉。这样,用户对整个网络模拟运行过程就会比较清楚,也会知道需要添加的功能该在哪部分实现。
(3)学会查手册但不依赖于手册。
NS手册有一些不足之处,但是它仍然是目前关于NS的最全面的资料。当用户具备了一定的基础之后,再去查看NS手册,就会发现从中还是可以学到很多东西的。用户可以看到从开发者的角度对用户所感兴趣的构件的内部原理是怎样理解的。至于具体的编程接口,不应该依赖于手册上的说明,在很多情况下应该去直接查看源代码。这样就会对各个对象之间相互的接口关系非常 清楚了。
(4)用户应该对主要的网络构件的功能都有所了解。
当需要实现用户自己的网络模拟模型时,就会知道哪部分可以利用现成的,而哪部分是需要自己做的,以及放在哪里实现最合适。这样才不会走弯路,才能设计出工作量最少的、最合理的模拟方案。
(5)常看源代码。
NS是开放源代码的软件。用户应该经常地深入到NS的源代码中去,包括其他研究者贡献的源代码和脚本。这是深入学习NS的必由之路。特别是当用户扩展NS,实现新的协议模块时,用户可以从NS本身的源代码以及其他研究者的贡献中借鉴很多经验。
(二)运行NS和nam以及第一个Tcl脚本
[1] 运行NS
运行NS有两种方式:
(1)输入命令“ns <tclscript>”,其中<tclscript>是一个Tcl脚本文件的名字,在这个文件中定义了整个模拟的过程,包括网络的拓扑结构以 及数据的收发过程等内容。
(2)输入命令“ns”,进入NS的命令行环境,然后直接输入各种指令来交互式的运行NS。
[2] 运行nam
nam是一个动画演示程序,它可以演示整个模拟的过程。nam的动画是按照nam-trace文件的内容进行的,nam-trace文件中记录了整个模拟过程的各个细节,由NS在执行模拟的同时产生,在NS的模拟过程结束后,nam就可以调用nam-trace文件来演示模拟的过程。
[3] 第一个Tcl脚本
新建一个名为example.tcl的文件,可以用任何一个文本编辑器对它进行编辑。下面是example.tcl的内容: