NS2网络协议虚拟仿真实验平台研究
2014-03-25周德荣田关伟
周德荣,夏 龄,舒 涛, 田关伟
(四川民族学院 网络信息中心,四川 康定 626001)
计算机网络课程作为高校计算机类专业和电气信息类专业的核心课程之一,涉及大量的概念、原理以及各种协议和算法,这些内容大多抽象、晦涩,单纯通过理论教学难以让学生理解和掌握。实践教学是使学生学好计算机网络基本原理和技术的有效方法[1-2]。
目前,网络实验室主要有2类:一类是由传统的计算机机房改建而成,实验设备主要由终端计算机和软件构成,侧重网络基础应用技术训练,主要开设Web、DNS、FTP,DHCP等常规网络服务及应用的实验;另一类是专门的网络实验室[3],实验设备有交换机、路由器、服务器、终端机等,主要完成交换机配置、路由器配置、NAT转换,网络互联等实验,偏重组网技术实验。2类实验室均存在以下不足:
(1) 投入经费大、维护困难;
(2) 对网络协议及算法的学习辅助力度不够;
(3) 实验室设施、设备不能及时更新,不能适应最新网络知识的学习和实践能力培养的要求;
(4) 实验室位置固定,不利于学生课后做实验。
针对以上问题,本文提出采用虚拟机软件和NS2仿真软件构建网络协议仿真实验平台,并将其运用于计算机网络的实践教学。
1 仿真实验平台相关技术
1.1 虚拟机软件及虚拟机
利用虚拟机软件,可以在一台物理计算机上虚拟出若干台独立的逻辑计算机(即虚拟机)[4]。虚拟机是一种严密隔离的软件容器,它可以运行操作系统和应用程序,完全类似物理计算机。VMware虚拟机具有以下特点:
(1) 兼容性好:虚拟机与所有标准的X86操作系统、应用程序、设备驱动程序完全兼容,支持多种操作系统,如Windows、Linux、FreeBSD、NetWare等;
(2) 隔离性好:虚拟机共享一台物理计算机资源,但彼此完全隔离,如果一台虚拟机崩溃,其他虚拟机完全不受影响,在安全性方面有一定优势;
(3) 可移动性好:虚拟机实质上是一个软件容器,它将虚拟硬件资源、操作系统及所有应用程序封装在一个软件包内,由物理硬盘上的配置文件(*.vmx)、磁盘文件(*.vmdk)、CMOS配置信息(*.nvram)、日志文件(*.log)和*.vmx.lck(启动时生成)等5个文件组成,具备很强的可移动性和易管理性;
(4) 系统安装简便、克隆快捷:VMware虚拟机虚拟出来的硬件具有固定型号,与物理计算机无关,安装速度快,且不易产生设备兼容问题;通过已建立的虚拟机可快速产生新的虚拟机。
1.2 NS2基本原理
NS2是加州大学伯克利分校开发的离散事件驱动的网络模拟器[6]。NS2免费使用、开放源码、支持众多协议,并且提供丰富的测试脚本,具有良好的扩展性和广泛网络用户支持等特点,已成为最流行的网络仿真软件。NS2包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,激活事件队列中的当前事件,执行一些相关的事件;网络组件通过传递分组来相互通信,所有需要花费仿真时间来处理分组的网络组件都要使用事件调度器。
NS2中常用的网络构件有节点、链路、代理、应用、队列、跟踪对象等。节点主要用于模拟实际网络上的主机、交换机、路由器等网络设备,节点可配置节点类型、节点地址类型、路由算法等属性;链路是将节点连接起来的一条通路,通过链路中的队列和延时实现实际网络中的包缓冲和传输延时;代理可以用来模拟传输层的TCP、UDP协议,也可用来模拟网络业务流量,如CBR、VBR等;应用对象用来模拟各种应用层对象,如FTP、HTTP等;跟踪对象用于记录并存储NS2中的模拟结果,可配置需要跟踪的一些参数,将其写入跟踪日志文件。
NS2由OTCL和C++两种编程语言实现[7],所有的构件已编写成相应的C++类和OTCL对象。C++类对象是算法和协议的具体实现;OTCL对象是用户接口对象,用于编写模拟脚本,主要是建立OTCL对象、设置属性,通过事件调度器调度网络模拟事件的发生。针对实际要求,采用构件对象配置研究项目的网络系统模型进行仿真模拟。
采用NS2进行网络模拟的基本过程如图1所示。网络仿真实验涉及2个层次:基于OTCL编程的层次、C++和OTCL编程的层次。前者利用NS2现有网络组件编写OTCL脚本实现仿真,不需要扩展网络组件;后者是对第一个层次的扩展,向NS2中添加所需的新的C++和OTCL类,编写新的OTCL脚本来实现仿真模拟操作。
图1 NS2模拟仿真的基本过程
2 NS2网络协议仿真实验平台构建
网络协议仿真实验平台是通过一系列的软件实现的(见图2)。平台基于X86硬件平台构建,采用主流的Windows操作系统,虚拟机软件采用VMware Workstation 9.0,仿真软件采用NS2-allinone-2.34。由于NS2必须运行于UNIX/Linux平台,因而虚拟机中网络仿真平台操作系统采用Ubuntu10.04。
图2 网络协议仿真平台的层次结构
网络协议仿真实验平台构建过程如下:
(1) 在Windows平台上安装虚拟机软件VMware Workstation 9.0,进行简单配置,确保虚拟机和物理机间能正常通信;
(2) 在VMware Workstation 9.0中建立虚拟机,安装Ubuntu10.04操作系统,配置网络,系统环境中安装gcc,make 和Nam相关库文件,如libxmu-dev;
(3) 进入Ubuntu10.04操作系统,下载仿真软件NS2-allinone-2.34.tar.gz,解压执行NS2-allinone-2.34/ns-2.34/./install进行安装,配置系统环境变量;
(4) 测试安装成功与否,若成功,则对虚拟机进行备份,方便实验环境迁移,或在进行实验前对虚拟机建立快照,防止进行网络协议仿真时破坏实验环境。
3 无线网络暴露节点问题测试实验
3.1 暴露节点问题概述
暴露节点问题是指当一个节点要发送数据给另一个节点时,因侦听到邻近节点正在发送数据而推迟自身发送数据,因而产生不必要的延时,影响节点的数据传送[8]。如图3所示,有4个节点S0、S1、R0、R1,其中R0、R1都不在对方的传送范围内,而S0、S1均在彼此的传送范围内。当S0正传送数据给R0时,S1却不能将数据传送给R1,因为S1会检测到S0正在发送数据,如果其他也发送数据的话,就会影响S0的数据发送。但事实上,S1是可以正确无误地将数据发给R1的,因为R1并不在S0的传送范围内。
图3 暴露节点问题示意图
为了解决暴露节点问题,802.11 DCF协议采用RTS/CTS机制[9]。当一个节点侦听到邻近节点发出的RTS,但没有侦听到相对应CTS时,判定自身是一个暴露节点,所以允许传送数据到其他邻近节点。这个节点可以成功送出RTS,但相应的CTS不一定能被成功收到。当S1收到S0发出的RTS,但未能收到对应CTS时,S1可推测自己是暴露节点,则可同时发送数据。此时,虽然S1发出的数据不会冲突,但其他节点发给S1的数据(CTS/ACK)却可能与S0发出的数据冲突,影响传输质量。
3.2 构建仿真模型
本实验的任务是观察RTS/CTS机制对暴露节点问题的影响。无线网络暴露节点问题与传输距离有关,NS2提供TwoRayGround、FreeSpace和Shadowing 3种无线传输模型预测接收端所收到的信号强度,以此判断传输数据能否成功被接收。本实验采用TwoRayGround模型,它主要考虑发送端到接收端直线距离的路径损耗和地面反射因素,模型[10]为:
其中:P为接收端的接收信号强度,Pt为传送功率,Gt为传送端天线增益,Gr为接收端天线增益,ht为传送天线高度,hr为接收天线高度,d为传送端到接收端的直线距离。
仿真拓扑如图3所示。建立500 m×500 m的正方形区域仿真环境,S0、S1、R0、R1各节点之间的距离为100 m,节点之间的侦听范围为150 m,分组有效传送距离为120 m,节点S0和R0之间建立一条udp连接,节点S0在1.5~15.0 s之间采用1 Mbit/s的速率向R0发送分组大小为1 000 Byte的CBR流,节点S1在10.0~30 s之间采用1 Mbit/s的速率向R1发送分组大小为1 000 Byte的CBR流。采用TwoRayGround模型,分组传送距离为120 m,使用NS2提供的threshold工具[11],计算得到传送功率为0.281838,发送频率为9.14e+8,发送端天线高度为1.5,接收端天线高度为1.5,发送端天线增益为1,接收端增益为1,要设定RxThresh_为6.88081e-9。
3.3 仿真结果分析
默认情况下,NS2所有的无线传输都使用了RTS/CTS机制[12],通过在模拟脚本文件中设置RTSThreshold_的值来决定是否使用RTS/CTS机制。当设置Mac/802_11 set RTSThreshold_为3 000时,不使用RTS/CTS机制;当Mac/802_11 set RTSThreshold_为0时,使用RTS/CTS机制。通过修改此值,分别执行模拟并保存发送记录和接收记录文件,从各结点的发送记录文件和接收记录文件得知,当未使用RTS/CTS时,结点S0送出1 688个封包,结点S1送出1 626个封包,但结点R0只收到891个从S0送出的封包,结点R1只收到819个从S1送出的封包。当使用RTS/CTS时,结点S0送出1 688个封包,结点S1送出1 626个封包,但结点R0收到756个从S0送出的封包,结点R1收到758个从S1送出的封包。
同时,针对仿真结果trace文件,编写awk数据分析脚本,测得2种情况下S0→R0和S1→R1之间的吞吐量如图4、图5所示。可以发现,在1.5~10 s时,由于只有S0向R0发送CBR流,所以S0→R0之间的流量比较稳定。10 s之后,由于S1向R1发送CBR流,发生暴露节点问题,网络流量下降,而17 s之后,S0停止发送CBR流,暴露节点问题消失,S1→R1之间的吞吐量逐渐稳定。可以看出,图5与图4比较没有明显改善,这说明使用RTS/CTS并不能有效地解决暴露节点问题。
图4 未采用RTS/CTS机制的暴露节点现象
图5 采用RTS/CTS机制的暴露节点现象
4 结束语
利用NS2网络协议虚拟仿真平台,能完成网络课程教学过程中的算法模拟,或通过对C++代码的修改,自由实现协议或者算法仿真,通过观察实验结果能直接验证方案的可行性和优劣。本文构建的基于虚拟机技术的NS2网络协议仿真平台,简化了实验环境的建立过程,平台具有可移动性、易用性和较强的实用性,对计算机网络教学及协议研究有一定促进作用。
[1] 林元乖.创新型计算机网络实验教学研究[J].实验技术与管理,2010,27(12):173-176.
[2] 晏弼成,何曼娜,蔡文辉.网络实验教学模式改革的研究与实践[J].实验室研究与探索,2007,26(9):93-95.
[3] 欧阳星明,姚小龙,谢欣荣.网络虚拟实验室的设计与实现[J].计算机工程,2004(2):185-186.
[4] 沈敏虎,查德平,刘百祥,等.虚拟机网络部署与管理研究[J].实验技术与管理,2011,28(5):311-313.
[5] 方路平,刘世华,陈盼.NS-2网络模拟基础与应用[M].北京:国防工业出版社,2008.
[6] 徐雷鸣,庞博,赵耀.NS与网络模拟[M].北京:人民邮电出版社,2003.
[7] 刘乃安.无线局域网原理、技术与应用[M].西安:西安电了科技大学出版社,2004.
[8] 谢希仁.计算机网络[M].4版.北京:电子工业出版社,2004.
[9] 柯志亨,程荣祥,邓德隽.NS2仿真实验:多媒体和无线网络通信[M].北京:电子工业出版社,2009.
[10] 蔡群英,黄镇建.基于NS2的无线网络隐藏节点问题仿真实验[J].实验室研究与探索,2009,28(11):74-76.
[11] 李波,杜德慧,李飞.无线网络站点隐藏问题在NS2下的模拟和分析[J].微计算机信息,2006,7(3):122-125.