使用NS2网络仿真软件对信息传输进行仿真课件.docx
《使用NS2网络仿真软件对信息传输进行仿真课件.docx》由会员分享,可在线阅读,更多相关《使用NS2网络仿真软件对信息传输进行仿真课件.docx(27页珍藏版)》请在冰豆网上搜索。
使用NS2网络仿真软件对信息传输进行仿真课件
实验总成绩:
——————————————————————————装订线—————————————————————————————————
报告份数:
西安邮电学院
通信与信息工程学院
科研训练报告
专业班级:
通工0904班
学生姓名:
xxxx
学号(班内序号):
XXXXXXXX(XX号)
2012年11月6日
使用NS2网络仿真软件对信息传输进行仿真
摘要:
在人们决定构建一个新的网络系统或者建立一个新的协议时,人们总希望在投入很多成本实验之前能有一种方便修改、结果直观的系统对该网络或协议模型进行测试,开源的网络仿真软件NS因此诞生,为网络拓扑设计与协议开发提供了一个有力的仿真测试平台。
为了对NS2系统进行学习,我建立了两个典型的网络拓扑结构,分别对有线/无线混合网络及路由选择过程进行通信仿真与分析,通过这两个仿真实验达到初步掌握与了解NS2的目的。
关键字:
NS2网络仿真混合网络结构路由选择
ABSTRACT
NetworkEngineersAndResearchersalwaysneedaconvenientandeasy-amendsimulationsystemtotesttheirdesignofnewnetworktopoandprotocolbeforealotofcostdiveintoexperimentandtest,TheNetworkSimulation(NS2)isapowerful,opensourcesimulationplatwhichcanappeasethem.
ProcessedfromstudyNS2system,Ibuildtwoemblematicalnetworktopo(wired/wirelessmixednetworkandroutechooseprocess),viabuildandsimulatethistwosystemstolearnhowtouseNS2andNS2’sanalysetools.
Keywords:
NS2;NetworkSimulation; Mixednetwork;Routehooseprocess
O、引言
在人们决定构建一个新的网络系统或者建立一个新的协议时,人们总希望在投入很多成本实验之前能有一种方便修改,结果直观的系统对该网络或协议模型进行测试,开源的网络仿真软件NS因此诞生,为网络拓扑设计与协议开发提供了一个有力的仿真测试平台。
NS2的全称是NetworkSimulationversion2,是一种采用了c++与tcl混合编程的网络仿真语言,具有修改方便、结果直观且易于处理、语言执行效率高等优点,以广泛的应用于网络仿真与协议设计中。
本次科研训练的内容―― 无线/有线混合网络及路由选择过程仿真正是采用了NS2平台进行仿真,并使用NS2的附加组件NAM,及Linux下的集成组件:
Gawk及Gnuplot进行仿真与结果分析
一、电子文献检索和科技论文写作
如果想对某个项目精确、客观的进行研究,参考以前的文献是不可缺少的过程,而现代化的网络为我们检索资料提供了极大的方便,因此,在研究过程中,必须学会利用网络查找到自己所需的献资料,并将其做为研究的重要参考。
目前我校购买了三个文献数据库的查阅权限以供师生使用,分别是CNKI文献数据库(主要提供论文文献)、超星数字图书馆数据库(主要提供专著)、IEL全文数据(可以查到电气和电子工程领域的大量国际文献),这三个数据库几乎囊括了我们所需要查阅的所有资料。
CNKI数据库包含了国内大量论文,资料详实,提供的查询方法多样,在登录数据库网站并输入用户名和密码后(学校的IP段已绑定,无需输入),即可以使用CNKI数据库查看下载大量的国内文献了。
CNKI提供的检索方法很全面,可以满足不同的检索范围,也可以根据查找目的逐层找到自己所需要的资料,可使用CAJViewer、超星数字图书馆、AdobeReader等工具打开使用其下载的文献超星数字图书馆是将大量的书籍、专著等通过扫描成PDG格式,并提供专用的客户端进行文献的检索与浏览,西安邮电学院电子检索室的IP已被授权,可以无需账户登录检索。
超星数字图书馆提供的专著超过30万册,且在不断的更新增加,使用其检索文献即可以按照类别进行逐层查找、也可使用各种关键字筛选出所需要的专著。
IEL是由美国电气电子工程学会(IEEE)和国际工程和技术学会联合提供,其包含了大量当今科技领域最重要的文献资料,采用IEEExplore浏览界面,提供文献浏览、检索等多种资料检索方式,使用IEEE进行资料检索可以找到很多处于科技发展前沿的文献,能为我们提供极大的帮助这三种数据库均数据详实、检索方便易学、且我们学校的电子阅览室的IP均与其进行了绑定,因此是文献查找不可或缺的资料此外,使用google搜索引擎也是搜索所需资料的极佳方法,且提供的资料基本全部为免费资料,此外,利用google,还可以查到别人对这个问题的看法、也可以在专门的论坛上提出问题并与他人进行讨论,极大的方便了我们的研究学习
二、实验原理
网络仿真是进行网络技术研究的一种基本手段。
在新技术的研究过程中,由于各种原因,实际网络系统的实现往往是代价较高或是不现实的。
在这种情况下,仿真就成了最佳可供选择的测试、评估和验证手段之一。
本文对当前若干主流网络仿真软件进行了简要介绍和评价,并对两款主流的网络仿真软件Opnet和NS2进行了用例对比分析,最后对各种网络仿真软件进行了总结。
网络仿真也被称为网络模拟,因为对各种网络仿真过程来说,其中也有“模拟”的含义,即,网络仿真既可以取代真实的应用环境得出可靠的运行结果和数据,也可以模仿一个系统过程中的某些行为和特征。
顾名思义,网络模拟,就是用计算机程序对通信网络进行模型化,通过程序的运行模仿通信网络的运行过程。
NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。
所以,NS成了目前学术界广泛使用的一种网络模拟软件。
此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。
因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。
三、综合实验
3.1仿真前准备
由于目前的NS2软件只能在Linux环境下运行,而我们使用的都是windows系统,所以要在windows系统中搭建一个Linux环境,先装cygwin软件,在cygwin命令窗口中输入命令安装并使用NS2。
3.2实验过程及结果
3.2.1有限
setns[newSimulator]
$nscolor1green
$nscolor2Red
$nscolor3blue
setnf[openoutmuyan.namw]
$nsnamtrace-all$nf
procfinish{}{
globalnsnf
$nsflush-trace
close$nf
execnamoutmuyan.nam&
exit0
}
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
$nsduplex-link$n0$n31Mb10msDropTail
$nsduplex-link$n1$n31Mb10msDropTail
$nsduplex-link$n2$n31Mb10msDropTail
$nsduplex-link$n3$n42Mb10msDropTail
$nsqueue-limit$n3$n410
$nsduplex-link-op$n0$n3orientright-down
$nsduplex-link-op$n1$n3orientright-middle
$nsduplex-link-op$n2$n3orientright-up
$nsduplex-link-op$n3$n4orientright
$nsduplex-link-op$n3$n4queuePos0.5
settcp[newAgent/TCP]
$nsattach-agent$n0$tcp
setsink[newAgent/TCPSink]
$nsattach-agent$n4$sink
$nsconnect$tcp$sink
$tcpsetfid_1
setudp0[newAgent/UDP]
$nsattach-agent$n1$udp0
setnull[newAgent/Null]
$nsattach-agent$n4$null
$nsconnect$udp0$null
$udp0setfid_2
setcbr0[newApplication/Traffic/CBR]
$cbr0setpacket_size_1000
$cbr0setrate_1mb
$cbr0setrandom_false
$cbr0attach-agent$udp0
$cbr0settype_CBR
setudp1[newAgent/UDP]
$nsattach-agent$n2$udp1
setnull[newAgent/Null]
$nsattach-agent$n4$null
$nsconnect$udp1$null
$udp1setfid_3
setcbr1[newApplication/Traffic/CBR]
$cbr1setpacket_size_800
$cbr1setrate_1mb
$cbr1setrandom_false
$cbr1attach-agent$udp1
$cbr1settype_CBR
setftp[newApplication/FTP]
$ftpattach-agent$tcp
$ftpsettype_FTP
$nsat0.5"$cbr0start"
$nsat0.2"$ftpstart"
$nsat3.0"$ftpstop"
$nsat3.5"$cbr0stop"
$nsat1.0"$cbr1start"
$nsat4.0"$cbr1stop"
$nsat5.0"finish"
$nsrun
3.2.2无限
#ThisscriptiscreatedbyNSG2beta1
#<
#===================================
#Simulationparameterssetup
#===================================
setval(chan)Channel/WirelessChannel;#channeltype
setval(prop)Propagation/TwoRayGround;#radio-propagationmodel
setval(netif)Phy/WirelessPhy;#networkinterfacetype
setval(mac)Mac/802_11;#MACtype
setval(ifq)Queue/DropTail/PriQueue;#interfacequeuetype
setval(ll)LL;#linklayertype
setval(ant)Antenna/OmniAntenna;#antennamodel
setval(ifqlen)50;#maxpacketinifq
setval(nn)2;#numberofmobilenodes
setval(rp)DSDV;#routingprotocol
setval(x)716;#Xdimensionoftopography
setval(y)362;#Ydimensionoftopography
setval(stop)5.0;#timeofsimulationend
#===================================
#Initialization
#===================================
#Createanssimulator
setns[newSimulator]
#Setuptopographyobject
settopo[newTopography]
$topoload_flatgrid$val(x)$val(y)
create-god$val(nn)
#OpentheNStracefile
settracefile[openout.trw]
$nstrace-all$tracefile
#OpentheNAMtracefile
setnamfile[openout.namw]
$nsnamtrace-all$namfile
$nsnamtrace-all-wireless$namfile$val(x)$val(y)
setchan[new$val(chan)];#Createwirelesschannel
#===================================
#Mobilenodeparametersetup
#===================================
$nsnode-config-adhocRouting$val(rp)\
-llType$val(ll)\
-macType$val(mac)\
-ifqType$val(ifq)\
-ifqLen$val(ifqlen)\
-antType$val(ant)\
-propType$val(prop)\
-phyType$val(netif)\
-channel$chan\
-topoInstance$topo\
-agentTraceON\
-routerTraceON\
-macTraceON\
-movementTraceON
#===================================
#NodesDefinition
#===================================
#Create2nodes
setn0[$nsnode]
$n0setX_402
$n0setY_262
$n0setZ_0.0
$nsinitial_node_pos$n020
setn1[$nsnode]
$n1setX_616
$n1setY_251
$n1setZ_0.0
$nsinitial_node_pos$n120
#===================================
#AgentsDefinition
#===================================
#SetupaUDPconnection
setudp0[newAgent/UDP]
$nsattach-agent$n0$udp0
setnull1[newAgent/Null]
$nsattach-agent$n1$null1
$nsconnect$udp0$null1
$udp0setpacketSize_1500
#===================================
#ApplicationsDefinition
#===================================
#SetupaCBRApplicationoverUDPconnection
setcbr1[newApplication/Traffic/CBR]
$cbr1attach-agent$udp0
$cbr1setpacketSize_1000
$cbr1setrate_1.0Mb
$cbr1setrandom_null
$nsat0.5"$cbr1start"
$nsat4.0"$cbr1stop"
#===================================
#Termination
#===================================
#Definea'finish'procedure
procfinish{}{
globalnstracefilenamfile
$nsflush-trace
close$tracefile
close$namfile
execnamout.nam&
exit0
}
for{seti0}{$i<$val(nn)}{incri}{
$nsat$val(stop)"\$n$ireset"
}
$nsat$val(stop)"$nsnam-end-wireless$val(stop)"
$nsat$val(stop)"finish"
$nsat$val(stop)"puts\"done\";$nshalt"
$nsrun
丢包
BEGIN{packet=0}
{
if($1=="d"&&$3=="3"&&$4=="4"&&$5=="udp")
{
packet=packet+1
event[packet]=$1
}
}
END{
print("sum=",packet)
}
四、学习总结
本科研训练完成的是一个基于NS2的有线/无线网络结构仿真与路由选择协议工作过程的验证。
在本次科研训练的过程中,详细了解与学习了NS2仿真软件的仿真思想、仿真系统构成、tcl语言的编写、gawk与gnuplot的使用方法,并使用这些工具对了两个典型的网络模型进行仿真验证与数据分析。
通过这两周的科研训练,主要掌握了NS2的基本设计思路及采用NAM、GAWK、Gnuplot对其进行结果分析的方法,更重要的是掌握了NS2仿真软件的原理,对我以后对于其他基于软件的系统,如我中意的片上系统开发方向,这些核心的原理及思想将会给我极大的启发。
除此之外,我还初步掌握了perl脚本语言、进一步提高了自己的编程能力,也进一步练习了自己查阅资料,搜集并分析信息的能力,并练习了标准论文文档的书写
——————————————————————————装订线—————————————————————————————————
指导教师评语:
实验成绩:
指导(辅导)教师: