第二讲NS2简介与系统安装邱静怡020-39328177erupt@mail.gdufs.edu.cn简介由于发展通讯协议与网络算法,需要许多的设备来进行实作,但实作或撰写出来的程序,不一定是成功且不易BUG,如此将花费相当可观的成本。将自己所提出的网络协议方法或算法以仿真的方式先前进行模拟与测试,且当测试结果都完整后,再将方法实作出来,将会节省很多不必要的成本与时间。NS2简介-背景NS2,是NetworkSimulator-Version2的简写。在1989年首先由REALNetworkSimulator改版而来。1995年,当时由VINTProject这个团体所维护,现在由SAMAN和CONSER负责。NS2简介-背景(Cont.)支持网络协议的教育研究•通讯协议的设计、数据流的研究等•不同通讯协议间的比较优点•免费与作业平台无关,有支持大量通讯协议、代码以及模型可供使用,不同的协议之间容易进行比較。NS2简介-功能有线网络•网络层:DV,LS,PIM-SM。•传输层:TCP、SCTPandUDP。•应用层:FTP,SIP,CBR,stochastic。•排队模型:Drop-tail,RED,FQ,SFQ。•QoS:MPLS、IntServandDiffserv。无线网络•网络类型:MANET,SensorNetworks•路由方式:AODV,DSR,DSDV,MobileIP等等。•链接层:802.11,802.16,802.15.4,Smac等NS2简介-架构NS2是一个是件驱动的仿真软件。•事件驱动指两节点间通讯协议传输过程的事件,例如:在1.0秒的时候开始进行FTP数据的传输,2.0秒时结束传输。•注:仿真器中的秒不等于现实中的秒。把世界上的一切都看成事件•维护一个基于发生时间排序的事件(events)排列•维护一个系统的时间[virtualtime]CPU执行的快慢不影响结果。NS2简介-架构(Cont.)使用C++与OTCL撰写而来。C++:•处理封包传送•更改一些底层协议或新增Protocols之类的C++Class•不常更动,执行速度快。OTCL•负责设定档部分•运作已编译过的C++Objects•常会更动,执行时需花一点直译时间NS2简介-架构(Cont.)NS2简介-组件ns:网络模拟器•执行tcl脚本,进行模拟,并将所有的模拟结果以trace档案的格式输出。nam:网络AniMator•将ns的结果可视化。TCL脚本NS2模拟器Trace文件Nam文件namGawkgnuplotNS2简介-操作流程问题分析网络环境状态模拟使用NS2模拟与运行分析結果结束模拟修改网络状态YesNoNS2简介-与OPNET的比较12NS2OPNET操作系统Unix/WindowsUnix/WindowsOPENSource是否使用界面图形/文字界面图形界面使用群体研究与学术界商业性质较高費用成本无有NS2简介-与OPNET的比较(Cont.)OPNET的使用界面ReferenceREALNetworkSimulator:VINTProject:SAMAN:CONSERTheNetworkSimulator-ns-2NS2supportedprotocolNS2ManualNS2byExampleOTCL(Cont.)NetworkSimulator学习网站NS2教学手册(NS2LearningGuide)~smallko/ns2/ns2.htmTracegraph华玄明因特网实验室创新智能信息系统实验室=66阿贵的Gnuplot~ckhung/b/ma/gnuplot.phpNS2简介-TCP&OSI对应NS2和TCP/IP、OSI7-Layer的对应关系NS2简介-支持的通讯协议17ApplicationlayerHTTP、FTP、Constant-Bit-Rate(CBR)…TransportlayerTCP、UDP、SCTP、mSCTP、RTP、SRM、Sack、TCPReno…等等。IPlayerIPprotocolRoutingalgorithmicrouting、routingdynamics、session-level、mixed-modesession-levelssimulation、DVrouting…RouterMechanismsCBQ、RED、FQ、SFQ、DRR、FIFO…DataLink-layerCSMA/CDprotocols,snoopNS2安装InstallCygwinDownloadthesoftwarefromhere.Decompresstherarfile.Youwillseeasetup.exe.Clickthisfile.Itwillbelikethefollowingfigure.BecausethelanguageofoperatingsystemisTraditionalChinese.ThetextofbuttonisshowninChinese.Butyoudon’tneedtoworryaboutthis.IthinkitisshowninEnglishinyourcomputer.Justclick“Next“.Thenchoose“InstallfromLocalDirectory”Click“Next”.Click“Next”.Click“Browse”tochoosewherethesoftwareis.(Pleasechoose“ftp%3a%2f%2fftp.nctu.edu.tw%2fWindows%2fcygwin”)Click“OK”.Click“Next”andyouwillseethefigureshownasfollows.Inthiswindow,thecygwinsetupprogramletyouchoosewhatsoftwareyouwanttoinstall.Click“View”firsttomaketheword“Category“changeto“Full”.XFree86-base,XFree86-bin,XFree86-prog,XFree86-lib,XFree86-etc,make,patch,perl,gcc,gcc-g++,gawk,gnuplot,tarandgzipmustbechosen.Forexample,ifIwanttoinstallXFree-86base(upperfigure),clickthe“Skip”of“New”column.The“Skip”willbechangedto“4.3.0-1”(lowerfigure).Click“Next”.Whensetupisdone,itwillbeshownasfollowingfigure.Click“Finish”.Clicktheicononthedesktop.Forthefirsttimeexecution,itwillgeneratesomeenvironmentparametersettingfiles.Inthisexample,smallkoismyloginnametowindowssystem.Therefore,thecygwinwillcreateafoldernamed“smallko”underhomedirectory.(Theactualpathforsmallkofolderis:c:\cygwin\home\smallko)Itshouldbenoticedthattheloginnamecannothaveanyspaceinyourname.Forexample,“AB”maycauseerrorswhenyouinstallNS2.(smallko-hpdsismycomputername)InstallNS2Pleasecopyns-allinone-2.29.rarintoyourdirector.Thendecompressthecompressedfile.typing“cdns-allinone-2.29”.Thentype“./install”.Pleasetype“y”tocontinue.NS2isinstalledinyourwindows.ButbeforeyoustartrunningNS2simulation,youshouldsetthepathfirst.Ihavepreparedonefileforit.Justcopythe“.bashrc”toreplacetheoneunderyourhomedirectory.(Inthisexample,Icopy.bashrctoc:\cygwin\home\smallko)TestingToinitialgraphicalmode.(type“startxwin.bat”)Runtheexampletclscript.(Changeto~/ns-allinone-2.29/ns-2.29/ns-tutorial/examples.Thenrunthecommand“nsexample2.tcl)Ifyoucanseethefollowingfigures,congratulations.Youhavesuccessfullyinstallcygwin+ns-2.29underwindowsplatform.TCL语言介绍TCL語言簡介TCL(ToolCommandLanguage)安装文字编辑器PSPad变量和变量替換1.setfoo“john”puts“mynameis$foo”2setfooputshieval$foo表示式及指令替換1.setvalue[expr0==1]puts$value2.setvalue[expr2+3]puts$value3.putsIam[expr10*2]yearsold,andmyI.Q.is[expr100-25]流程控制setnum_legs4switch$num_legs{2{putsItcouldbeahuman.}4{putsItcouldbeacow.}6{putsItcouldbeanant.}8{putsItcouldbeaspider.}default{putsItcouldbeanything.}}流程控制cont.seti0while{$i5}{putsInthewhileloop,andi==$ii