网络仿真工具在高校计算机网络教学中的应用探索
2009-11-04刘广
刘 广
【摘要】利用网络仿真工具搭建仿真平台,通过模拟环境下的实验提高学生对计算机网络知识的理解能力,充分培养学生的创新能力,将是高校计算机网络教学的一种发展趋势。文章通过分析网络仿真工具NS2的特点、原理、工作流程,以及NS2在实验教学中的具体实例,阐述了网络仿真工具在教学中的应用及其意义。
【关键词】网络仿真;NS2;计算机网络教学
【中图分类号】G420 【文献标识码】A 【论文编号】1009—8097(2009)10—0111—03
一 引言
在以信息化带动工业化和工业化促进信息化的现代化发展进程中,计算机网络扮演了越来越重要的角色。为了适应信息社会对人才培养的需要,许多高校都开设了计算机网络课程。但在一般的计算机网络教学过程中,仅通过课堂学习或书本知识的学习,学生对网络知识的理解只能停留在比较抽象的认知层面。即使学生利用设备进行实际组网实验,但由于硬件设备本身的具体特性,屏蔽了网络的底层运作原理,这使得学生对网络底层的具体运作依然无法深入的理解。对于这些问题,网络仿真为我们提供了一个很好的解决思路。网络仿真工具利用数学建模和统计分析的方法模拟网络行为,它通过建立网络设备、链路、协议和协议模型,并模拟网络流量传输,从而验证网络协议的正确性或获取网络设计和优化的性能数据。利用网络仿真工具构建仿真平台,我们可以演示计算机网络课程涉及到的原理、协议和算法等,让学生可以深入到网络技术的核心,这不仅可以充分调动学生的积极性,而且可以使学生加深对计算机网络原理的理解程度。此外,通过使用网络仿真平台,我们可以进行大规模网络模拟,从而使学生能够有机会接触和了解大规模网络的运行。同时,通过仿真实验对各种新老协议或算法进行比较学习,可以让学生对网络协议或算法得到更深入的理解。
本文将详细介绍开源的网络仿真工具NS2的原理及其工作流程,并结合实例分析阐述如何在教学中使用NS2,以提高学生的学习积极性并使学生能对网络的基本原理和运作有更深入的认识。
二 NS2简介
自从仿真技术出现以来,各种网络仿真工具被研发并广泛的使用。现有的网络仿真工具中,有专门针对特定网络环境的仿真工具、有专门测试网络协议算法性能的仿真工具,也有囊括了现有常用的网络协议的网络仿真工具,如NS2、OPNET等。目前,使用较多的网络仿真工具主要有NS2(Network Simulator Version 2)和 OPNET。OPNET属于商业化软件,由于其采购成本较高,在中国高校里较少使用。
NS2是一个开放源码的多协议网络模拟软件,来源于1989年的Real Network Simulator项目,经过多年的发展,于1995年得到施乐公司(Xerox)的支持,加入VINT项目。NS2一直以来都在吸收世界各地研究者的成果,包括UCB、CMU等大学和SUN等公司的无线网络方面的代码,因此NS2一直都在不断的被更新和完善。
NS2是一个面向对象的、离散事件驱动的网络环境模拟工具,可以完整地模拟整个网络环境。NS2使用一整套C++类库实现了绝大多数常见的网络协议以及链路层的模型,如:有线网络或无线网络的TCP、UDP、路由、多播等多种协议模型,利用这些类库的实例就可以搭建起整个网络的模型,而且包括详尽的细节实现。
三 NS2的原理及工作流程
NS2使用了两种编程语言,OTcl(具有面向对象特性的Tcl脚本程序设计语言)和C++,NS2采用这两种语言是因为仿真工具有两方面的事情要做:一方面,具体协议的模拟和实现,这需要一种能高效率的处理字节、报头等信息的程序设计语言,即对运行速度非常重要,而运行模拟环境的时间、寻找和修复Bug的时间,以及重新编译和运行的时间不是很重要,在这种情况下,C++语言是非常合适的;另一方面,许多网络中的实验或研究工作主要是围绕着网络组件和环境的具体参数的设置和改变而进行的,需要在短时间内快速的开发或模拟出所需要的网络环境,并且方便的修改和发现,在这种情况下,网络环境设置的时间就显得重要了,而脚本语言在这方面有很大的优势,具有面向对象特性的Tcl脚本语言可以充分的满足此需求。
C++和OTcl两种语言的对象和变量是通过TclCL关联起来的,C++的类和对象为编译类和编译对象,相反地OTcl的类和对象为解释类和解释对象,TclCL是在OTcl基础上的封装。通过下面的NS2架构图来理解几者之间的关系。
对NS2使用者来说,OTcl脚本语言用于实现网络拓扑部分,OTcl是架构在Tcl之上的面向对象后的延伸,事件调度器和网络组件这两部分主要用C++编写。C++在最底层则是表示NS2的核心主要就是C++。TclCL是连接OTcl和C++的桥梁,最后搭配用户接口就构成了NS2。
NS2的工作流程就是使用OTcl语言编写脚本,模拟要解决问题的模型的处理过程,通过OTcl语言解释器解释执行,使用NS2仿真库进行编译和仿真,输出仿真结果,根据仿真的结果记录,可进行相关内容的分析,生成网络拓扑图或者得到数据的可视化图表。对于特殊情况或研发的新协议,可以修改、编写C++代码,提供新的类库以满足试验需要。NS2的工作流程如图2。
四 NS2在实验教学中的应用
1 NS2在实验教学中的应用
本文以TCP拥塞控制的随机及早检测(Random Early Detection,RED)为例,利用仿真工具NS2进行建模,然后运行得出结果,对结果数据进行分析,并以图形方式展示出来,从而让学生能够深入了解RED的运行机制以及其性能。
下面对RED做一个简要的介绍,RED是随机及早检测算法,是一种拥塞避免机制,它在每个路由器上检查自己的队列,当它检测到拥塞即将发生时,就通知源调整拥塞窗口。
实验场景如下:构建如图3网络拓扑,RED队列位于路由器r1和r2之间的链路上,可以容纳25个数据包,通过观察RED队列如何通过测量当前和平均队列的动态长度,从而避免拥塞的出现。
实验结束后,利用图形工具XGraph对仿真产生的数据以图形方式输出,如图4。其中红线是队列的瞬时长度,绿线是队列的加权动态平均长度。通过试验观察,可以让学生直观深入的了解RED是如何工作的,即RED队列瞬时长度随着平均长度上下波动,产生这种效果是由于当队列长度超过某个丢弃级别时,按照一定的丢弃概率将到达的分组丢弃,以避免拥塞出现。
2 利用NS2对改进的或自己新设计的协议进行验证
在计算机网络教学中,我们不仅要让学生充分理解网络的基本知识和运作原理,还应该积极引导学生通过试验对现有协议进行对比学习,了解现有协议的优缺点,尽可能的启发学生去改进现有协议或提出新的协议,充分调动学生的创造性。
这里通过列举一个简单的实例,说明如何通过编码在NS2中创建一个新的协议,并对新建协议进行验证。
实验场景如下:假设有一个通过UDP进行通讯的多媒体应用程序,数据发送者和接受者可以通过自动协商工作在五种不同的编码和传输速率刻度值上,而具体采用的刻度值通过网络拥塞情况决定。五种刻度值设为:0-4,发送者开始以刻度值为0的速率工作,并且根据接收者返回的刻度值调整自己发送的速率。为了监控网络拥塞,设计一个简单的周期发送的监控数据报,在一个周期内,如果监测数据包丢失了,则认为网络出现拥塞,数据传送双方降低自己的刻度值,减慢编码和传输速率,如果没有监控数据包丢失,则增加刻度值,加大编码和传输速率。
在这个实验场景中,UDP代理分发和传送数据报,应用层通讯需要的所有信息要求UDP代理作为一个数据流进行处理,而现有UDP代理分发的数据报里只有一个头栈,因此需要更改现有的UDP代理,给它增加一个发送来自应用层数据报的机制,并在IP报文头没用使用的字段里增设一个标记数据类型的标志。
根据实验场景利用C++语言,编写数据接收和数据发送类,并对现有的UDP代理根据实验场景需求进行更改(由于篇幅问题,具体代码略)。最后设计一个拓扑图,对设计的利用UDP传输的多媒体程序进行测试,拓扑见图5。
五 结束语
通过上面的分析可以看出,利用网络仿真工具不仅可以使学生通过实验对计算机网络知识和运作原理有更深入的理解,而且通过实验的比较分析学习后,可以启发学生,更好的培养学生的创新意识和创新能力,更好的满足社会发展的需求。因此,把网络仿真工具引入到高校计算机网络教学中,充分地发挥网络仿真工具在教学工作中的优势,将是高校计算机网络教学的一种发展趋势。
参考文献
[1] Kevin Fall, Kannan Varadhan. The ns Manual[EB/OL].<http://www.isi.edu/nsnam/ns/ns-documentation.html, 2009-02-24.>
[2] Jae Chung, Mark Claypool.NS2 by Example[EB/OL].<http://nile.wpi.edu/NS/, 2009-03-16.>
[3] 于斌,孙斌,温暖,等.NS2与网络模拟[M].北京:人民邮电出版社,2007:35-43.
[4] 柯志亨.NS2教学手册[EB/OL].<http://140.116.72.80/~smallko/ns2/ns2.htm, 2009-03-16.>
[5] 杨延双,张建标,王全民.TCP/IP协议分析及应用[M].北京:机械工业出版社,2007:23-31.