刘艳艳,李玉龙
(1.兰州交通大学 电子与信息工程学院,兰州 730070;2.兰州交通大学 数理与软件工程学院,兰州 730070)
在现代科技的发展进程中,物物相连的互连网(物联网)已成为新一代信息技术的重要组成部分,计算机网络知识的普及和应用也成为全民教育的一个重点,几乎所有的高校都以不同的形式开设了计算机网络课程,而这门课程具有较强的理论性和应用性,只靠传统的课堂讲授是远远不够的[1]。为了使学生能够更加深刻、形象地理解和应用所学到的网络技术,需要开设相应的实验课程,然而,由于实验设备的不足,不可能让学生进行充分的实物建模实验,很难做到学以致用。
本文结合自己的一些教学和实践经验,探讨了如何在计算机网络课程的教学中引入模拟仿真软件的问题,构建虚拟实验环境,并列举具体的应用实例,从而加深学生对网络体系结构和网络协议的理解,培养学生的动手实践能力。
NS-2是Network Simulator-Version 2的缩写,是美国VINT Project的一部分[2],由USI/ISI、Xeror、LNBL和UC Berkeley四个机构共同合作开发研制[3]。它是一个开源的免费软件,其目的是构造一个完整的网络仿真平台,实现网络协议的设计与开发。
NS-2是一个由C++和OTcl语言编写的、面向对象的、事件驱动的网络模拟器。实现了诸如TCP、UDP、NAC层协议、路由算法等网络协议,用户还可以根据需要进行扩展。从一个用户的角度来看,NS-2是面向对象的Tcl脚本解释器,其整个仿真流程如图1所示。使用NS-2进行网络模拟,与在真实网络上进行实验观察的过程非常相似。二者大致都可以分成三个阶段进行:建立网络模型、建立通信量模型和追踪分析[4]。
图1 NS-2仿真流程
(1)实验环境:WinXp+Cygwin+ns2.28[5]。
(2)了解TCP协议的原理,学习在NS-2中建立TCP与UDP联机。
(3)学习如何将模拟结果以直观图形的方式显示出来(如图1)。
建立网络模型就是准备网络部件(节点和链路),决定网络的拓扑结构。这些是需要用命令来实现的,一般使用OTcl脚本方式。本应用实例采用如图2所示的网络模型。在我们建立的仿真场景下,假设有两个传输节点s1和s2,路由器r和数据接收终端d。
图2 实验用例的网络结构图
(1)创建节点脚本
(2)创建链路脚本
s1到r之间和s2到r之间的带宽为2Mbps,传输延迟为10ms。r到d之间的带宽为1.5Mbps,传输延迟为20ms。所有的链路队列管理机制都选用DropTail。
创建通信量模型就是指在网络中建立连接、创建流量,让网络模拟动起来。
s1到r之间有一条FTP联机,采用TCP连接来传送数据。s2到r之间有一条CBR联机,采用UDP连接来传送数据。CBR从0.1s开始传送,在4.5s结束;FTP从1.0s开始传送,4.0s结束。
首先,根据具体要求编写TCL脚本,保存为example.tcl;然后打开Cygwin,进入图形化接口,输入命令:$ns example2.tcl,开始执行此TCL脚本;最后,通过动态显示工具NAM,可以形象地看到数据流的传输过程。执行结果如图3所示。
图3 网络的仿真过程
模拟结束后,NS-2会产生一个或多个记录文件,例如:out.tr文件,此跟踪记录文件的每一行都记录着数据包的传输过程,但从表面上很难观察和分析包的传输情况,通常可以使用awk语言工具进行数值分析,来提取所需要的数据(如:端到端的延迟、抖动率、封包遗失率、吞吐量等)。最后将数值分析的结果通过图形化显示工具(XGraph、gnuplot)显示出来,形成一份完整的实验报告。
NS-2作为一种实用的网络仿真工具,将其应用在计算机网络教学中,有其独特的优势:不仅弥补了实验室设备的不足,而且让学生形象地看到协议的实现过程。这种新的辅助教学方法能够提高学生的积极性,培养学生的动手能力,取得良好的教学效果。
[1]高茜.计算机网络课程教学中网络仿真辅助教学方法的探讨[J].计算机教育,2010(23):70-73.
[2]赵志豪,钱强.网络业务的NS-2仿真实现[J].计算机仿真,2004(11):121-122.
[3]王秀利,王永吉.一种开源代码的网络仿真器的原理与实现[J].计算机工程与应用,2004(15):139-140.
[4]张基温.计算机网络实验与实践教程[M].北京:清华大学出版社,2005.
[5]柯志恒.NS2仿真实验——多媒体和无线网络通信[M].北京:电子工业出版社,2009.