NS2网络模拟
- 格式:doc
- 大小:240.50 KB
- 文档页数:5
NS2网络仿真软件应用于教学中的研究0 引言随着网络技术的飞速发展,传统的计算机网络教学受到较大的冲击,在教学中引入网络模拟显出了十分的必要性与重要性。
计算机网络教学一般可分为理论教学和实验教学两个部分,传统的教学模式存在很突出的问题。
首先,计算机网络课程从设计到许多复杂的概念和原理,教学中通常使用幻灯片来教学,无法简单灵活地来展示动态过程。
学生在学习中感到枯燥乏味,难以理解,导致渐渐失去兴趣。
其次,实验器材比较昂贵,实验室内配备的实验器材数量有限,很难达到较高标准的实验环境,并且实验的时间也是有限的,学生无法充分地理解并且掌握通信技术以及网络工程应用能力,久而久之更加感到无趣。
解决这一难题的有效方法是,在教学中引入网络模拟技术,使用NAM 工具,可以清晰地向学生展示网络协议的动态运行过程,提高学生的学习效率,改善教学效果。
1 NS2仿真软件简介NS2是一款开放源代码的网络模拟原件,由美国加州大学伯克利分校(UC Berkeley)的MASH研究组开发。
NS2能够仿真多种网络上的众多协议,这些协议涉及到网络的各个层次[1]。
NS2的本质是一个面向对象的离散事件模拟器[2],所有的仿真都是由离散事件驱动的。
NS2采用C++和OTcl两种开发语言进行开发,底层仿真引擎主要用C++编写,OTcl作为仿真时的命令和配置语言。
C++是强制类型的程序设计语言,程序模块运行速度非常快,易实现精确复杂的算法。
Otcl是无强制类型的脚本程序编写语言,具有简单、容易实现和修改的特性,可以在不必重新编译的情况下修改仿真参数和仿真过程,两种语言的结合使NS2的仿真效率特别高。
NS2为基于Unix平台的开源免费软件,可以在其官方网站下载。
同时也可以在Windows下使用,鉴于多媒体教室以及实验室条件,可以采用Windows+Cygwin+NS2的安装方式。
2 NS2模拟仿真实验管理器为了方便管理编写后的NAM文件,开发了NS2模拟仿真实验管理器(图1)。
- 1 -无线网络中站点隐藏等问题在NS2下的模拟和分析李波,杜德慧,刘飞(江南计算技术研究所,江苏无锡 214083摘要:站点隐藏现象是无线网络中一个主要问题。
采用RTS-CTS 机制可以避免站点隐藏问题,但该机制不总是有效的,在某些情况下它会给无线网络带来诸如站点屏蔽等新问题。
使用网络模拟工具NS2模拟了这些问题,分析了问题产生的原因。
关键词:站点隐藏;无线网络;RTS-CTS;站点屏蔽;NS2中图分类号:TP393.06 文献标识码:②基金项目:网络安全积极防御关键技术(863项目编号:2003AA146010Simulation and Analysis for Problems Such as Hidden Nodesin Wireless Network Using NS2LI Bo, DU De-Hui( Institute of Jiang Nan Computer Technology, Wuxi Jiangsu 214083, ChinaAbstract :The phenomenon of hidden nodes is an important problem in Wireless network and it can be avoided by RTS-CTS mechanism. But the mechanism is not always effective, it brings some new problems such as masked nodes into the Wireless network on some condition. This paper provides the simulation for those problems using NS2 and presents the analysis of the reasons. Keywords: hidden nodes ;Wireless network ;RTS-CTS ;masked nodes ;NS21.引言网络模拟技术(Network Simulation是研究网络性能的一种经济而有效的手段。
网络模拟软件NS2与OPNET的剖析比较①王波周志伟(重庆大学计算机学院建筑智能化与城市数字化研究室重庆 400044)摘要:NS2和OPNET是目前主流的网络模拟软件,为深入地剖析比较它们的特点及差别以供学习和选用时参考,从软件技术、使用方法和引擎性能三个方面进行了详细对比分析。
在软件技术方面分别从体系结构、支持的网络技术、网络设备模型库和软件可扩展性上进行分析比较;在模拟器引擎性能方面,通过在相同模拟条件下,选取内存消耗和CPU运算时间两个指标,针对不同规模的抽象网络,分别对OPNET和NS2的引擎性能进行了对比实验。
结果表明,OPNET具有商业软件的优势,在用户友好性、模拟速度、内存消耗等方面优于NS2,而NS2则在开源和易扩展性方面优于OPNET,适合于模拟中小型网络。
关键词:网络模拟;网络模拟测试;NS2;OPNETComparative Analysis on Network Simulation Software NS2 and OPNETWANG Bo, ZHOU Zhi-Wei (Building Intelligentization and City Digitalization Lab, College of Computer Scienceof Chongqing University, Chongqing 400044, China)Abstract:This paper presents the features and differences of NS2 and OPNET by comparing them in the aspects of software technique, operation method and engineer performance. As to the software technique, itincludes four points for comparison: system architecture, supported network technique, networkequipment model bank and software scalability. To compare the performance of the simulator engine,an abstract network which is not real was established and simulated by these two simulators separatelyunder identical conditions. Meanwhile, two performance indices (memory consumption and computation time) were measured, recorded and analyzed. The comparison result indicates that OPENTas a commercial software is better than NS2 in user-friendliness, simulation speed and memoryconsumption while NS2 is superior to OPNET in the aspect of open-source and scalability and wellsuited for small scale network simulation.Keywords: network simulation; network simulation test; NS2; OPNET1 引言在计算机网络技术日新月异、高速发展的今天,一方面各种网络应用种类不断增加,新的协议、算法层出不穷,验证、测试和分析这些新应用、新协议和新算法的课题亟需解决,另一方面规划、设计新网络或者分析、测试和更新现有网络需要更加便捷、快速、准确的方法,各式各样的网络模拟工具应运而生,目前常见的主要有:NS(Network Simulator)与OPNET (Optimized Network Engineering Tool)以及OMNeT++和SSFNet 等,其中在教育、科研、商业等领域使用最广泛的是NS2与OPNET。
NS-2网络模拟对计算机网络技术的研究通常有三种方式:理论研究、网络模拟、试验网测试。
在上述三种网络研究方式中,最常用的是利用软件进行网络模拟。
其中在大多数的模拟软件中,NS-2(Network Simulator , version 2)网络模拟器是对网络协议进行评估与研究的一个主流模拟软件。
这是一款开放源代码的网络模拟软件,最初由加州大学伯克利分校(UC Berkeley)开发。
全世界范围内众多学术机构以及个人采用NS-2来进行研究,很多大学把NS-2作为网络理论和技术课程的辅助工具,大量的期刊和会议论文都采用NS-2作为功能和性能评估工具。
NS-2采用了分裂对象模型的开发机制,使用了C++ 和OTcl 两种开发语言进行开发,它们之间利用TclCL(OTcl C++ Linkage)机制相互映射。
之所以使用两种编程语言,是因为模拟器需要做两个方面的事情。
一方面,具体协议的模拟和实现,需要一种程序设计语言能够高效的处理字节、报头等信息,以便能够应用合适的算法在大量的数据集合上进行操作。
为了实现这个任务,程序内部模块的运行速度非常重要,而运行模拟环境的时间、寻找和修复bug的时间、重新编译和运行时间相比并不是很重要,这种情况下,使用C++语言非常合适;另一方面,许多网络研究工作都围绕着网络组件和环境的具体参数的设置来开发和模拟所需的网络场景,而且需要方便修改和发现、修复程序中的bug,这种情况下,使用OTcl脚本语言来完成这部分工作是很具有优势的。
现在,NS的版本已经到了NS-3,而且是纯C++编程了。
所以可以根据自己的实际情况来采用不同的版本。
NS学习第一个棘手的问题就是资源(包括书籍、网络资源(百思论坛))较少,所以需要自己慢慢的摸索,其次是NS-2涉及的语言C++和OTCL两种语言。
C++高效编译,OTCL解释执行,分工合作。
1 NS-2的安装在安装之前,我们可以在NS-2的官方主页/nsnam/ns/ 了解NS-2的最新动态,并且可以找到NS-2 软件包以及相关的NS手册的下载地址。
基于NS2的计算机网络实践教学初探1. 前言计算机网络是信息化时代的核心技术之一,越来越多的学生和从业人员选择学习和掌握这项技术。
在计算机网络课程的教学中,实践性教学是至关重要的一环。
为了提高学生的实践能力,本文尝试以NS2(Network Simulator 2)为平台,开展计算机网络实践教学。
2. NS2简介NS2是一个基于事件驱动的离散事件模拟器,用于对计算机网络的性能进行评估。
它支持C++和OTcl两种编程语言,同时也支持多种网络协议的模拟。
NS2通过模拟网络环境中的各种行为,可以帮助学生更好地理解计算机网络的工作原理。
3. 实践教学内容与方法实践教学的内容应该与计算机网络课程的知识点相对应,例如TCP/IP协议、路由算法、网络拓扑等。
NS2可以模拟多种协议和网络环境,因此可以根据教学内容选取合适的模拟方案。
实践教学的方法可以结合课堂教学和实验室实验。
在课堂上,利用PPT或白板等工具介绍相关的知识点,并演示NS2的相关操作。
在实验室中,让学生通过编写NS2脚本,模拟一些网络应用场景,如文件传输、路由算法等,最终通过实验结果来验证各种协议和算法的正确性和性能。
4. 实践教学的意义利用NS2开展计算机网络实践教学,可以有效提高学生的实践能力,培养学生的解决问题和实验设计的能力。
同时也可以帮助学生更好地理解计算机网络的工作原理,加深对课程知识的理解和掌握。
此外,实践教学还可以帮助学生培养团队协作和沟通能力,加强师生之间的交流。
5. 结语本文简要介绍了利用NS2进行计算机网络实践教学的方法和意义。
NS2作为广泛使用的网络模拟器,可以帮助教师更好地进行实践教学,提高学生的实践能力和课程掌握水平。
希望这篇文章对计算机网络实践教学有所启示和帮助。
基于NS2的网络仿真郭树民,裴庆祺,曾兴雯西安电子科技大学通信工程学院,西安(710071)E-mail:gsm1011@摘要:近几年来,网络结构的的复杂化和应用的多样化,为网络系统的分析和设计提出了新的挑战,NS2作为一种通用的网络仿真工具,很好地满足了这种需求。
本文主要介绍了NS2以及其在网络仿真方面的应用,包括NS2的特点、应用领域、用NS2进行仿真的步骤,最后给出了一个用NS2进行仿真的实例。
介绍了如何结合GNU的make工具有效地利用NS2进行网络仿真。
关键词:网络仿真;NS2;Makefile1.网络仿真简介近几年来,随着网络结构和规模的复杂化以及网络的应用的多样化,单纯依靠经验进行网络的规划规划和设计、网络设备的研发以及网络协议的开发已经不能适应网络的发展;网络仿真很好地满足了这种需求。
所谓网络仿真就是将物理世界中的网络通过计算机来模拟实现。
这种模拟是通过数学方法或者动态蒙特卡罗方法来模拟现实中的网络行为,从而可以有效地提高网络规划和设计的可靠性和准确性,降低网络投资的风险,减少不必要的投资。
网络仿真工具是为了进行仿真而开发的专用计算机软件。
从仿真的范围来看我们可以将其分为专用仿真工具(Specialized Network Simulator)和通用仿真工具(Generalized network simulator)。
专用网络仿真工具是为了仿真某个特定的网络环境和网络协议而设计的,例如SensorSim[13],SENSE[14]等都是为了仿真传感器网络而设计的专用网络仿真工具。
通用网络仿真工具是在一个整体设计架构的基础上集成了很多网络模块(module),并且用户可以根据需要来添加新的模块或者修改现有的模块,从而可以实现各种网络协议的仿真。
目前,比较流行的通用仿真工具主要有NS2[3]和OPNET[4]、J-Sim[12]等。
NS2是一种开源的网络仿真工具,它是由美国的VINT工程[16]开发的通用网络仿真平台;其可扩展特性和开源特性赋予了其强大的生命力;世界各地的科研人员都可以向NS2贡献源代码,使得其可以支持现有的除蜂窝网络出外的几乎所有的网络场景和网络协议[3]。
NS2网络仿真软件在计算机网络教学中的应用信息技术在当代发展迅速,在社会发展中扮演着重要的角色,熟悉并掌握计算机技术成为了当代社会对现代人的基本要求,因此,基本上各大高校都开始了相应的教学课程以教授计算机网络知识。
在教学过程中,教师利用这个模型可以向学生们展示所学知识中有关的计算机原理与相关算法,化抽象为具体,生动形象的将网络展现在学生面前,不仅激发学生学习的积极性,也促进了教学的进行。
1 NS2网络仿真软件的介绍及应用优势1.1 相关介绍NS2是众多网络仿真工具中的一种,其面向的是网络协议方面的性能,同类的OPENT由于运行费用比较高,常应用于商业。
NS2网络仿真软件是以开源为基础的多协议网络模拟,其特点是面向具体对象与驱动时间离散,模仿的是网络的运行情况。
经过长期的发展,NS2网络仿真软件得到了不断地改进,正逐步完善。
1.2 应用优势1.2.1 各种各样的组件模块。
在NS2网络仿真软件中有各种各样的组件模块,即大量的节点、各种协议以及链路的延迟接点等,不要求拓展NS2,只用稍微的做一点修改或准备好一个脚本即可,在教学过程中应用会比较的方便简单。
1.2.2 化抽象为具体的动画。
如果只是抽象的讲解计算机知识是很空洞的,但是有动画的辅助,过程会变得简单很多,教学过程也会变得生动有趣。
1.2.3 知识的深度与广度得到了扩展。
运用NS2网络仿真软件辅助教学,学生能自主的安排自己的学习时间,不用担心大课堂的限制,可随时根据自身需要重点学习自己薄弱的地方,随心地选择自己要攻克的实验内容。
2 NS2网络仿真软件的特点2.1 灵活性学生可在NS2提供的平台上选择自己的喜欢的网络环境,设置相应的参数,就不用担心数据丢失方面的问题出现了,因为NS2网络仿真软件提供监控和跟踪的功能,可记录操作过程中重要的步骤,对结果进行分析和再现结果都是很简单,在真实的网络坏境中我们很难享受到这种灵活性。
2.2 开放性由于开发代码的公开性,NS2平台上的源代码具有开放性的特点,通俗一些说就是大众化。
网络协议分析与仿真课程设计报告
网络模拟
一、课程设计目的
掌握网络模拟工具NS2的使用,学习基本的网络模拟方法。
二、课程设计内容
协议模拟
工具:NS2,awk,shell,perl等;
要求:掌握NS2网络模拟的基本流程;
内容:NS2网络模拟基本流程
编写TCL脚本,搭建如下图所示的一个网络,共6个节点,其中2、3节点用做ftp服务器和客户端,4、5节点用做cbr流量的源和目的,而0、1节点用做转发设备。
各节点间的链路属性见图。
cbr
null packet size = 1kbytes,
rate=1Mbps
模拟时间设为13秒钟,在0.1秒开始产生cbr流量,在1.0秒开发发送发ftp流量;
8.0秒ftp流量结束,12.0秒cbr流量结束。
编写脚本(可用shell,awk,或perl等)
分析模拟日志文件,统计每0.5s内0、1节点间链路通过的分组数以及字节数。
三、设计与实现过程
1.仿真脚本代码与详细注解
#Create a simulator object
set ns [new Simulator]
#Define different colors for data flows (for NAM)
$ns color 1 Blue
$ns color 2 Red
#Open the NAM trace file
set nf [open out.nam w]
$ns namtrace-all $nf
#Open the Trace file
set tf [open out.tr w]
$ns trace-all $tf
#Define a 'finish' procedure
proc finish {} {
global ns nf tf
$ns flush-trace
close $nf
close $tf
exec nam out.nam &
exit 0
}
#Create four nodes
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]
#Create links between the nodes
$ns duplex-link $n0 $n2 1.5Mb 10ms DropTail $ns duplex-link $n0 $n4 1.5Mb 10ms DropTail $ns duplex-link $n0 $n1 2Mb 20ms DropTail $ns duplex-link $n1 $n3 1.5Mb 10ms DropTail $ns duplex-link $n1 $n5 1.5Mb 10ms DropTail
#Set Queue Size of link (n2-n3) to 10
$ns queue-limit $n0 $n1 10
#Setup a TCP connection
set tcp [new Agent/TCP]
$ns attach-agent $n2 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
$tcp set fid_ 1
#Setup a UDP connection
set udp [new Agent/UDP]
$ns attach-agent $n4 $udp
set null [new Agent/Null]
$ns attach-agent $n5 $null
$ns connect $udp $null
$udp set fid_ 2
#Setup a FTP over TCP connection
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP
#Setup a CBR over UDP connection
set cbr [new Application/Traffic/CBR]
$cbr attach-agent $udp
$cbr set type_ CBR
$cbr set packet_size_ 1000
$cbr set rate_ 1mb
$cbr set random_ false
#Schedule events for the CBR and FTP agents
$ns at 0.1 "$cbr start"
$ns at 1.0 "$ftp start"
$ns at 8.0 "$ftp stop"
$ns at 12.0 "$cbr stop"
#Call the finish procedure after 5 seconds of simulation time $ns at 13.0 "finish"
#Run the simulation
$ns run
2.仿真过程示意(动画截图1个)
3.日志分析脚本设计(设计思路与代码、注解)
#!/bin/bash
time=0 #记录时间
byte=0 #记录字节数
pack=0 #记录包数
flag=0 #判断是否间隔0.5秒的标志
i=0.5 #以0.5单位递增
#将out.tr 文件中包含“0 1 cbr +”字符的行取出,并且以空格为分解符取出第二第六块数据,逐行读取到line变量中
cat out.tr | grep "0 1 cbr" | grep "+" | cut -d' ' -f 2,6 | while read line do
time=${line% *} #赋予时间
byte=$(($byte+${line#* })) #统计字节和
pack=$(($pack+1)) #统计总的包数
flag=`echo "$time>$i" | bc` #判断是否间隔了0.5秒
if [ $flag -eq "1" ]
then
echo $pack $byte >> log1.txt #将结果写入到日志文件中
pack=0
byte=0
i=`echo "$i + 0.5" | bc`
fi
done
4.分析结果展示(通过自绘图来说明)
四、设计技巧及体会
1、通过本次设计我们掌握了ns2软件的基本使用方法,对课堂上学到的
网络知识有了一个实际的认识,不足之处是我们对shell脚本的编写不够熟练,以后要加强这方面的练习。
2、通过本次设计还发现,shell脚本对运算的处理比较麻烦,语法控制要
求很严格。