NS报告.docx
- 文档编号:28993143
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:11
- 大小:155.59KB
NS报告.docx
《NS报告.docx》由会员分享,可在线阅读,更多相关《NS报告.docx(11页珍藏版)》请在冰豆网上搜索。
NS报告
实验总成绩:
——————————————————————————装订线—————————————————————————————————
报告份数:
西安邮电大学
通信与信息工程学院
科研训练报告
专业班级:
信工1203班
学生姓名:
马超
学号(班内序号):
03124080(14)
2015年9月25日
基于NS2的IP网络仿真
一、摘要
以移动通信网络和互联网为代表的信息通信网络,已经成为人们日常生活和工作不可缺少的部分。
信息网络技术仍然在不断地完善和发展,大量的工程师和各类研究人员在这一领域工作。
在进行网络的规划设计、网络协议的开发、网络路由交换与终端设备的研制等与网络技术研究有关的过程中,需要做大量的实验,由于存在各种条件的限制,不是所有的实验都能够通过物理实现的方法进行,于是基于计算机的网络模拟和协议仿真成为信息网络技术研究的重要手段。
目前已经有多种网络模拟的软件,其中NS以其源代码公开、软件模拟平台免费而获得广泛的应用。
它是一种面向对象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。
其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。
目前,NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:
网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、Web和VBR;路由队列管理机制,如Droptail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块。
也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。
关键字:
互联网、通信网络、拓扑结构、网络协议、网络模拟
二、英文摘要
RepresentedbymobilecommunicationnetworkandtheInternetinformationcommunicationnetwork,hasbecomeanecessarypartofPeople'sDailylifeandwork.Informationnetworktechnologyisstillinconstantperfectionanddevelopment,alargenumberofengineersandresearchersworkinginthisfield.Innetworkplanninganddesign,thedevelopmentofthenetworkprotocol,networkroutingexchangeandthedevelopmentoftheterminalequipmentsuchasrelatedtonetworktechnologyresearchintheprocess,needtodoalotofexperiments,duetovariousconstraints,notallexperimentscanbeimplementedbyphysicalmethod,andbasedoncomputernetworksimulationandprotocolsimulationbecomeanimportantmeansofinformationnetworktechnologyresearch.Thereareavarietyofnetworksimulationsoftware,theNSwithitsopensourcecode,softwaresimulationplatformforfreeandgetextensiveapplication.Itisanobject-orientednetworksimulator,itisessentiallyadiscreteeventsimulator,itsitselfisananalogclock,alldrivenbydiscreteeventsimulation.Itadoptedthesplitobjectmodeldevelopmentmechanism,usingc++andOTcllanguagedevelopment.Atpresent,NS2canbeusedtosimulateavarietyofcommunicationnetwork,itissopowerfulthatmoduleisrich,haveachievedthemainmodules:
networktransmissionprotocol,suchasTCPandUDP.Sourceofbusinessflowgenerator,suchasFTP,Telnet,CBR,WebandVBR;Routingqueuemanagementmechanism,suchasDroptail,REDandCBQ;Routingalgorithm.WLAN,andwirelessnetwork,mobileIPandsatellitecommunicationsnetworkmodule,etc.AlsoforLANsimulationimplementationmulticastprotocolandsomeoftheMACsub-layerprotocol.
Keywords:
Internet,communicationnetwork,topologystructure,networkprotocol,thenetworksimulation
三、引言
NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等,下面对各个模块进行简单的介绍:
(1)事件调度器:
目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器
(2)节点(node):
是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。
(3)链路(link):
由多个组件复合而成,用来连接网络节点。
所有的链路都是以队列的形式来管理封包的到达、离开和丢弃。
(4)代理(agent):
负责网络层封包的产生和接收,也可以用在各个层次的协议实现中。
每个agent连接到一个网络节点上,由该节点给它分配一个端口号。
(5)封包(packet):
由头部和数据两部封包成。
一般情况下,packet只有头部、没有数据部分。
(6)应用层(Application):
流量产生器(Traffic generators)创建了各种不同的概率模型来模拟产生实际网络中的业务流,它建立在UDP代理之上;应用模拟器(Simulated application)产生建立在TCP代理之上的业务流。
(7)数据记录:
Trace,功能是能够详细记录模拟过程,同时,用户也可以根据自己的需要记录模拟过程中的任何一个细节,模拟结束后会产生out.tr文件;Monitor,NS2中有两种监测,队列监测(Queue Monitoring)和流量监测(Per-Flow Monitoring)。
(8)动画演示Nam,是基于Tcl/Tk的动画演示工具,用来把模拟的过程用可视化的方式呈现出来,模拟结束后会产生out.man文件。
(9)数据分析:
gawk。
awk是一种程序语言。
它具有一般程序语言常见的功能。
由于awk语言具有使用直译器(Interpreter)不需先行编译;变量无型别之分(Typeless),可使用文字当数组的注标(Associative Array)等特色,所以使用awk撰写程序比起使用其它语言更简洁便利且节省时间。
awk还具有一些内建功能,使得awk擅于处理具资料列(Record),字段(Field)型态的资料。
此外,awk内建有pipe的功能,可将处理中的资料传送给外部的Shell命令加以处理,再将Shell命令处理后的资料传回awk程序,这个特点也使得awk程序很容易使用系统资源。
而gawk是GNU所开发的awk,最初在1986年完成,之后不断改进和更新,gawk包含awk的所有功能。
四、软件设计
仿真流程:
(1)开始编写OTcl脚本。
首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。
(2)建立协议代理,包括端设备的协议邦定和通信业务量模型的建立。
(3)配置业务量模型的参数,从而确定网络上的业务量分布。
(4)设置Trace对象。
NS通过Trace文件来保存整个模拟过程。
仿真完后,用户可以对Trace文件进行分析研究。
(5)编写其他的辅助过程,设定模拟结束时间,至此OTcl脚本编写完成。
(6)用NS解释执行刚才编写的OTcl脚本。
(7)对Trace文件进行分析,得出有用的数据。
(8)调整配置拓扑结构和业务量模型,重新进行上述模拟过程。
程序
#Createasimulatorobject
setns[newSimulator]
#Definedifferentcolorsfordataflows
$nscolor1Blue
$nscolor2Red
#Openthenamtracefile
setnf[openout.namw]
$nsnamtrace-all$nf
#Definea'finish'procedure
procfinish{}{
globalnsnf
$nsflush-trace
#Closethetracefile
close$nf
#Executenamonthetracefile
execnamout.nam&
exit0
}
#Createfournodes
setn0[$nsnode]
setn1[$nsnode]
setn2[$nsnode]
setn3[$nsnode]
setn4[$nsnode]
setn5[$nsnode]
setn6[$nsnode]
#Createlinksbetweenthenodes
$nsduplex-link$n0$n21Mb10msDropTail
$nsduplex-link$n1$n21Mb10msDropTail
$nsduplex-link$n4$n21Mb10msDropTail
$nsduplex-link$n5$n21Mb10msDropTail
$nsduplex-link$n6$n21Mb10msDropTail
$nsduplex-link$n3$n21Mb10msSFQ
$nsduplex-link-op$n0$n2orientright-down
$nsduplex-link-op$n1$n2orientright-up
$nsduplex-link-op$n4$n2orientright
$nsduplex-link-op$n2$n3orientright
$nsduplex-link-op$n5$n2orientup
$nsduplex-link-op$n6$n2orientdown
#Monitorthequeueforthelinkbetweennode2andnode3
$nsduplex-link-op$n2$n3queuePos0.5
#CreateaUDPagentandattachittonoden0
setudp0[newAgent/UDP]
$udp0setclass_1
$nsattach-agent$n0$udp0
#CreateaCBRtrafficsourceandattachittoudp0
setcbr0[newApplication/Traffic/CBR]
$cbr0setpacketSize_500
$cbr0setinterval_0.005
$cbr0attach-agent$udp0
#CreateaUDPagentandattachittonoden1
setudp1[newAgent/UDP]
$udp1setclass_2
$nsattach-agent$n1$udp1
#CreateaCBRtrafficsourceandattachittoudp1
setcbr1[newApplication/Traffic/CBR]
$cbr1setpacketSize_500
$cbr1setinterval_0.005
$cbr1attach-agent$udp1
#CreateaUDPagentandattachittonoden4
setudp2[newAgent/UDP]
$udp2setclass_3
$nsattach-agent$n4$udp2
#CreateaCBRtrafficsourceandattachittoudp2
setcbr2[newApplication/Traffic/CBR]
$cbr2setpacketSize_500
$cbr2setinterval_0.005
$cbr2attach-agent$udp2
#CreateaUDPagentandattachittonoden5
setudp3[newAgent/UDP]
$udp3setclass_4
$nsattach-agent$n5$udp3
#CreateaCBRtrafficsourceandattachittoudp3
setcbr3[newApplication/Traffic/CBR]
$cbr3setpacketSize_500
$cbr3setinterval_0.005
$cbr3attach-agent$udp3
#CreateaUDPagentandattachittonoden6
setudp4[newAgent/UDP]
$udp4setclass_5
$nsattach-agent$n6$udp4
#CreateaCBRtrafficsourceandattachittoudp4
setcbr4[newApplication/Traffic/CBR]
$cbr4setpacketSize_500
$cbr4setinterval_0.005
$cbr4attach-agent$udp4
#CreateaNullagent(atrafficsink)andattachittonoden3
setnull0[newAgent/Null]
$nsattach-agent$n3$null0
#Connectthetrafficsourceswiththetrafficsink
$nsconnect$udp0$null0
$nsconnect$udp1$null0
$nsconnect$udp2$null0
$nsconnect$udp3$null0
$nsconnect$udp4$null0
#ScheduleeventsfortheCBRagents
$nsat0.5"$cbr0start"
$nsat1.0"$cbr1start"
$nsat4.0"$cbr1stop"
$nsat4.5"$cbr0stop"
$nsat1.5"$cbr2start"
$nsat3.8"$cbr2stop"
$nsat1.6"$cbr3start"
$nsat4.2"$cbr3stop"
$nsat1.7"$cbr4start"
$nsat3.9"$cbr4stop"
#Callthefinishprocedureafter5secondsofsimulationtime
$nsat5.0"finish"
#Runthesimulation
$nsrun
五、测试结果
拓扑图:
拓扑运行图:
时延图:
六、心得体会
经过第一次安装NS2的实验,已经对NS2有了一定的了解。
在此基础上,我认真研究了NS2的原理与基本应用。
对它的使用有了一定的了解,同时也能理解一些简单的tcl脚本的配置。
之后,我通过一些资料,成功地完成了这次实验。
七、主要参考文献
[1]柯志亨邓德隽《NS2仿真实验》电子工业出版社
[2]于斌《NS2与网络模拟》人民邮电出版社
[3]王辉《NS2网络模拟器的原理和应用》西北工业大学出版社
[4]柯志亨《NS2仿真实验——多媒体和无线网络通信》电子工业出版社
[5]黄华吉《NS网络模拟和协议仿真》人民邮电出版社
——————————————————————————装订线—————————————————————————————————
指导教师评语:
实验成绩:
指导(辅导)教师:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NS 报告