本毕业设计课题是针对我国目前计算机网络教学中,在理论教学和实验操作方面存在的不足,要求能够在较低的经济成本的前提下,搭建起一个网络实验平台。通过这个实验平台,使用者可以方便的进行网络环境的配置,“透明”的使用各种网络组件,最终能够清晰地观察到网络的各种运作过程,方便地分析网络的各种性能。
本课题研究的主要内容是:(1)完成系统开发平台的搭建;(2)在Linux环境下,利用目前主流的网络仿真软件NS-2,通过编写OTcl脚本,调用NS-2中的相关组件,最后使用nam动画演示工具设计出一套演示系统,直观地演示各种网络运作过程;(3)利用C++和OTcl编程的相关知识,实现NS-2的扩展。
NS-2(Network Simulator,version2)是一个由UC Berkeley开发的用于仿真各种IP网络的优秀仿真软件。它是一种面向对象的网络仿真器,本质上是一个离散事件模拟器,本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。NS-2在进行网络仿真方面,具有以下几个特点[4]:
1、仿真采用两种语言
NS-2仿真的一个显著特点是采用两种语言即C++和OTcl,以满足仿真的特殊需要。C++是一种相对运行速度较快但是改变比较慢的语言,程序的运行时间很短,但转换时间很长,比较适合具体协议描述。OTcl运行速度较慢,但可以快速转变的脚本语言,正好和C++互补,用来进行仿真参数的配置是最适合不过的。另外TclCL模块能够将两种语言中的变量和对象连接起来。
2、支持各种业务模型和多种通信协议
NS-2内置了各种常用的业务模型,包括FTP业务模型、CBR业务模型、On\Off业务模型等。同时它还支持TCP和UDP两种传输协议以及多种路由协议,包括分级路由、广播路由、多播路由、静态路由、动态路由等,这极大方便了用户的使用。另外支持通过C++二次开发用户自己需要的协议。
3、采用面向对象技术
NS-2采用面向对象技术,这就保证了软件的可扩充性和重用性,提高了程序开发的效率。对象的属性能够很容易地配置,每个对象属于相应的行为和功能的类。类也可以继承其他类,也可以通过C++来定义新的类来满足用户自己特定的需求。
4、很强的结果处理能力
为了分析仿真结果,仿真结果的数据必须能够完整收集。NS-2提供了两种基本数据追踪能力:跟踪和监控。跟踪能够将每个数据包在任何时刻的状态记录到指定文件中,例如包在队列或链路中丢弃、到达、离开的行为都可以记录下来。而监控则可以有选择记录自己需要的数据,例如统计发送包、接收包、丢弃包的总数量。同时监控也可用来对所有包或者指定的单一数据流进行监测。同时NS-2还提供了动态显示仿真过程的nam观察器和xgraph图形显示工具。用户从nam观察器中可以直观了解数据包的传递过程,而xgraph工具可以很方便地将仿真结果转换成图表形式。
总体来说,NS-2设计的出发点是基于网络仿真,它集成了多种网络协议,业务类型,路由排队管理机制,路由算法。此外,NS-2还集成了组播业务和应用于局域网仿真有关的部分、MAC层协议。其仿真主要针对路由层,传输层,数据链路层展开,因此NS-2可以进行对固定,无线,卫星以及混合等多种网络的仿真,但它最适用于TCP层以上的模拟。NS-2的特点是源代码公开、可扩展性强、速度和效率优势明显。在本课题的设计中,我们正是采用了NS-2仿真平台的下的nam动画演示工具来进行网络运行过程的演示,并实现了NS-2的二次开发。