版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络仿真利器NS-2无师自通七天速成系列网络仿真利器NS-2无师自通七天速成系列: NS-2简介与实验环境的安装 近年来,网络通信技术日新月异,网络技术的研究炙手可热,促进人们不断的提高研究水平,更新研究技术,增加研究手段。目前网络通信的研究一般分为以下三种方式:(1)理论研究,(2)网络模拟,(3)试验测试。而网络模拟是目前网络通信研究中一种重要的方法。而NS-2是进行网络仿真最流行的软件之一,已广泛被科研院所和各大高校用于进行网络分析、研究和教学。1.简介NS-2(Network Simulator Version 2)最早来源于1989年哥伦比亚大学开发的Real Network Sim
2、ulator项目,是一款开源免费的网络模拟软件。目前NS-2 可用于仿真各种不同的通信网络。已经实现的仿真模块有:网络传输协议,如TCP 和UDP;业务源流量产生器,如FTP、Telnet、Web CBR 和VBR;路由队列管理机制,如Droptai、RED 和CBQ;路由算法,如Dijkstra,以及无线网络的WLAN,Ad hoc 路由,移动IP 和卫星通信网络等。NS-2 也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。2. NS-2试验环境的安装与配置NS-2需要在linux操作系统下运行,然而大多数人对linux操作系统不太熟悉,更习惯于windows操作系统,所以就需要把
3、NS-2安装在windows平台下。本实验环境的配置工具如下:Winxp+ VMware Workstation6+RedHat linux+ ns-allinone- Winxp下安装VMware Workstation62.2启动VMware Workstation6,新建虚拟机,在新建的虚拟机中选择Red linux 5,安装linux系统.插入系统盘,进行启动,系统自动的会找到未分区的预留空间进行安装,按照提示进行安装.在分区的过程中,建议划出一个2倍于内存的交换类型空间(swap类型),一个100M的ex3类型的"/home"空间,
4、剩下的全部分给ex3类型的"/"根空间。分区采用自动分区,分区如下: 在安装的过程中,要选择开发的组件,默认是不安装的,刚开始不太熟悉,可以选择全部安装。然后按照提示一步步的安装即可。注意:在安装linux过程中要注意以下两点:第一,在虚拟机下安装,一定要选择自定义模式,然后选择硬盘类型为IDE类型,否则无法安装成功,第二,一定要在linux系统的安装过程中,要选择自定义方式,安装需要的软件,包括编辑软件。第三,配置linux环境有三种选择,直接安装linux系统,windows+模拟环境cygwin和windows+虚拟机+linux下安装。如果出于学习考
5、虑,建议采用第三种方法,如果真正的去做实验建议采用第一种方法。当然,我们也可以选择不安装,而使用模拟环境cygwin来模拟linux系统,如果你要真正的学习网络模拟的话,不建议采用这中方法。2.3在linux环境下安装NS-2假设你已经安装好linux系统,下面开始NS-2模拟环境的安装与配置。NS-2软件建议选择allinone (即all in one).此处和以后的试验环境我们使用的是ns-allinone-2.30。将ns-allinone-2.30.tar.gz 文件放在当前用户的home目录下,如果你是从网络上下载,一般默认是在这个目录下,你可以检查下;如果你通过其他方式,本实验是
6、通过U盘的方式,把文件复制到该目录中。2.3.1安装ns-2如果是root用户的显示为主机名#,非root用户显示为主机名$".果是root用户,你的home目录为/root,非root用户的home目录为/home/用户名。 命令说明:$cd (转到home目录下),$tar zxf ns-allione-2.30.tar.gz(解压软件包)$cd ns-allinone-2.30 (进入ns-allinone-2.30目录下) $./install (运行安装命令) 2.3.2设置全局路径变量上一步的安装成功后,最后输出部分会提示你必须设置三个全局变量path,ld_li
7、brary_path和tcl_library.在自己的根目录下编辑终端配置文件 .bashrc,注意要带"."开头, .bashrc是bash终端的配置文件,在Linux中它是隐藏文件,一般用ls命令看不出来,但可以采用vi命令编辑该文件: $cd$vi .bashrc (用linux系统提供的vi编辑器来编辑 .bashrc文件)将光标移动到最后一行,按下insert键进行插入export NS_HOME=/ns-allinone-2.30export PATH=$NS_HOME/tcl8.4.13/unix:$NS_HOME/tk8.4.13/unix:
8、$NS_HOME/bin:$PATHexportLD_LIBRARY_PATH=$NS_HOME/tcl8.4.13/unix:$NS_HOME/tk8.4.13/unix:$NS_HOME/otcl-1.12:$NS_HOME/vlib:$LD_LIBRARY_PATHexport TCL_LIBRARY=$NS_HOME/tcl8.4.13/library在设置的过程中一定要细心。export后有一个空格,其他地方是以:来分割的。/home目录,你也可以不用设置这个变量都是可以的,对于具体的版本中包含软件版本不同,可参看上面的图和下边的脚本进行相应放入更改。编辑结束,按键盘上的退出键esc
9、:退出插入模式,再输入:wq存盘退出.2.3.3 简单测试打开一个新终端 输入ns回车,在%号后输入空格+puts+空格+"hello world",如果显示 hello world 则配置成功。否者查找原因重新配置。 如有问题请发邮件询问与技术支持:duankesong126 网络仿真利器NS-2无师自通七天速成系列: NS-2实例编写安装NS-2后,就可以运行该软件了。NS-2有两种运行方式,第一种是脚本方式,假设这里有个已编好的文件example.tcl文件,通过在linux控制端输入 ns example.tcl就可以运行该脚本了。第二种方法就是命令
10、行方式,通过在linux系统下输入ns进入NS-2模拟环境。然后输入各种指令交互的运行。 1.编写一个tcl脚本一般分为以下几个步骤:1) 创建模拟器对象,用来定义和控制模拟过程。在这个过程中,首先创建一个simulator 对象。2) 设置跟踪文件3) 创建网络拓扑结构。4) 配置节点属性。5) 创建拓扑结构6) 设置代理和应用层协议,并进行绑定。7) 使用模拟器对象的at过程设置节点事件和时间的对应关系。 8) 使用模拟器对象的run过程开始模拟。9) 结果分析。模拟结束后,将得到保存模拟过程的trace文件,接下来的主要工作就是对于这个结果文件根据需求进行数据分析,同时可以用gnuplo
11、t等画图工具直观的显示数据分析结果。2,下边是一个实例。新建一个文件,保存为example.tcl3,实验结果与数据分析如下: 仿真结束后,会产生两个档案,一个是out.nam,这是给NAM用的,用来把仿真的过程用可视化的方式呈现出来,这可以让使用者用看的方式去了解封包传送是如何从来源端送到接收端。另一个档案是out.tr,这个档案记录了仿真过程中封包传送中所有的事件,例如第一笔记录是一个CBR的封包,长度为1000bytes,在时间0.1秒的时候,从n1传送到n2。这个档案对我们做效能分析很重要,所以要先对这个档案的格式做仔细的介绍。每一笔记录的开始都是封包事件发生的原因,若是r则表示封包被
12、某个节点所接收,若是+则表示进入了队列,若是-则表示离开队列,若是d则表示封包被队列所丢弃。接着的第二个字段表示的是事件发生的时间;字段三和字段四表示事件发生的地点(从from node到to node);字段五表示封包的型态;字段六是封包的大小,字段七是封包的旗标标注;字段八表示封包是属于那一个资料流;字段九和字段十是表示封包的来源端和目的端,这两个字段的格式是a.b,a代表节点编号,b表示埠号(port number);字段十一表示封包的序号;最后字段十二表示封包的id。以前面trace file的第一笔为例,意思就是说有一个封包pakcet id为0,资料流id为2,序号为0,长度为10
13、00 bytes,型态为CBR,它是从来源端1.0要到目的地3.1,在时间0.1秒的时候,从节点1进入了节点2的队列中。网络仿真利器NS-2无师自通七天速成系列:Tcl和Otcl语言Ns-2的实现是由表示层和实现层。实现层:采用C+对象,方便协议和算法的实现,提高执行效率;表示层:采用OTcl对象,方便拓扑和节点属性的修改,提高仿真便利性。语法说明:Tcl只支持字符串一种数据结构,一种分割符就是空格1、基本命令格式:Command arg arg1 arg2 arg3一个Tcl命令是由空格符分割的关键字所组成。其中,command是命令名称或者是一个Tcl过程名,其余都是该命令的参数。 一个H
14、ello world!的例子:% puts stdout Hello World!在这个例子,命令puts后面跟着两个参数,stdout 用来定义标准输入流。大括号把多个单词组成一个简单的参数。2、变量:用set命令进行定义。注意参数之间是一个空格进行分割。Set 参数一, 参数二 参数一为变量名,参数二为变量的赋值。用$命令来获取变量的值,具体格式为:$变量名,中间没有空格用unset命令来删除变量,使用方式为unset 变量名1,变量名二,。用info命令来查看变量是否存在,3. 变量的组合和替代变量的替代分为命令替代,又称欠套替代和反斜杠替代,与转移字符类似。命令替代用中括号来实现。反斜
15、杠替代与转义字符的含义类似。双引号组合把组合 数学运算 支持数学运算和位运算和逻辑运算。用expr命令把表达式传递给解释器,如:expr 4*55. Tcl中用proc来定义过程,命令格式为:Proc 过程名 参数 过程体过程名可以为任何字符,过程名和变量名没有任何冲突,为了习惯,过程名第一个字母大写。参数多余一个用大括号组合,过程体多余一行也用大括号组合过程体中的return可以省略。6流程控制命令6.1,if 表达式 then 命令体1 else 命令体26.2,switch flags 表达式 条件一 命令体1 条件二 命令体2。default 命令体n一般情况下的格式为组合格式:swi
16、tch flags 表达式 条件一 命令体1 条件二 命令体2。default 命令体n其中flags为表达式的匹配方式,有三种,-exact为默认的,为精确匹配-glob为通配模式,*为任意字符,?为单个字符。-regexp为正则表达式匹配,表达式为正则表达式。6.3,for循环命令For 初始化 测试 表达式 循环体ForeachWhile6.4,catch命令用来扑获错误6.5 用break,continue,return6,注释 # 来注释。最前注释一行,后边注释加分号和#如 ;#7,数组8,面向对象的tcl在tcl中增加了对象的支持,如类的定义,继承与封装,构造和析构函数网络仿真利器
17、NS-2无师自通七天速成系列:NS-2网络控件及其使用方法1,Simulator类在NS-2中,每个模拟过程需要一个类对整个过程进行控制和管理。这个类就是simulator类。这个类封装了节点(note),链路(link),代理(agent),数据分组格式等。整个模拟过程通过创建一个模拟类对象开始,通过调用这个对象的各个过程实现创建节点,构建拓扑结构图,对模拟的各个方面进行配置,定义事件,根据定义的事件模拟整个网络的运行等。创建一个模拟器类对象的格式为:Set ns new simulator2,NS-2是一个事件驱动的模拟器,通常包括两部分:事件的触发时间和用来处理时间的功能函数的句柄。NS
18、-2中模拟内部at过程的主要功能是在特定的时间调度事件处理函数处理事件。Set ns new simulator$ns at 5.0 handle_fun$ns runProc handle_dunputsthis is the event handle function目前事件调度程序有四种事件调度器,分别为:链式,堆式,时间队列式,和实时,其中时间队列式为默认的。本节相关概念为:Set ns new simulatorSet now$ns now$ns halt$ns run$ns at <time> <event>3,节点note在
19、网络中将分布在不同地理位置的主机,交换机,路由器等网络设备在NS-2中统统抽象为一个节点,本节将介绍NS-2中节点的创建和配置方法。根据网络节点之间通信方式的不同,分组的传输方式有两类,单播和多播。单播节点的配置:Set ns new simulatorSet n0 $ns node一个单播节点是由地址分类器和端口分类器两个tcl对象组成的。地址分类器主要判断分组的地址和转发分组到下一个接收器。节点的地址模拟网络中的ip地址,有两种类型,默认为flat类型的,分类器中有一张shot表模拟网络中的路由表,一个shot码和一个节点地址相对应。端口分类器的主要功能是按照分组的目的端口进行匹配,将分组
20、传递给相应的agent对象。多播节点的配置:多播节点的配置,首先要把 Multicast属性值设置为: on,然后调用node过程创建多播节点。创建一个多播节点的方法:Set ns new Simulator -Multicast onSet n1 $ns node注意多播结构是一对多的通信,一个多播分组在转发时,分组需要被转发给多个目标对象,这就要求多播节点能够生成该分组的多个拷贝,多播节点包含复制器(Replicator)对象,并使用其生成分组的拷贝。多播节点主要是由多播分类器和复制器组成。多播分类器根据源地址,和目的地址,将分组分类,富欧泊分类器内部保存了一张链式hash表,表的每一项包
21、含源地址,多播目的地址,和slot码。3.1节点的配置。无线网了中的节点是移动节点,拥有不同于有限节点的各种特性。所谓节点的配置就是在节点创建之前设定节点的各项属性,可是使用模拟器对象ns的内部过程node-config来配置节点的属性。包括,所有节点的属性,无线节点的属性和卫星节点的配置。与节点有关的命令$ns node<hier_addr> 配置节点的类型 ,默认为没有分层的flat类型。$node id 此命令是返回节点的id号。$node node -addr 此命令是返回节点的地址。$node reset 此命令重新设置绑定于节点的代理。$node det
22、ach <agent> <null_agent> 将代理从这个节点上删除,然后在这个端口上绑定一个空代理。$node attach <agent><optional:port_num> 节点自动为其分配一个端口号,并将该代理绑定到节点上。3.2链路 (link)链路层负责对物理层上传输的数据进行检错和纠错。NS-2中的数据链路层同时实现了物理层,数据链路层和部分网络层的功能。本节主要讲述如何将不同的节点连接起来。完成整个网络拓扑的结构的构建。因此,一个完整的网络拓扑包括节点的创建和节
23、点的连接(用链路)两个部分,即节点和链路是组成网络哟拓扑的两个要素。网络设备见的通信方式可以分为单工,半双工和拳双工三种方式。单工是数据只能沿一个方向传输。任何时候都不能改变数据传输的方向,在NS-2中我们采用创建简单的单向链路simplex-link来进行模拟这种通信方式。半双工通信方式中,数据可以单向传输,但必须交替进行。不常用。全双工通信放式中,数据可以同时双向传输。在NS-2中我们通过创建双向链路duplex-link来进行模拟。创建单向链路Set ns new simulstor$ns simples-link <node1> <node2&
24、amp;gt;<bandwidth><delay><queue_type>上述代码创建了一条node1到node2的单向链路,并且定义了链路的一下各项特性。<bandwidth> 创建链路的带宽。<delay> 延时<queue_type>队列类型创建双向链路Set ns new simulstor$ns duplex-link <node1> <node2><
25、;bandwidth><delay><queue_type>等价于Set ns new simulstor$ns simples-link <node1> <node2><bandwidth><delay><queue_type>$ns simples-link <node2> <node1><bandwidth&am
26、p;gt;<delay><queue_type>本节相关命令:$ns simples-link <node1> <node2><bandwidth><delay><queue_type>$ns duplex-link <node1> <node2><bandwidth><delay>&
27、;lt;queue_type>$ns simples-link <node1> <node2><option><args>$ns duplex-link <node1> <node2><option><args>以上两个命令主要设置链路的属性,主要包括:方向,颜色,标签和队列的位置。设置这些主要用于nam的动画显示。 4.代理 agentNS-2中通过创建节点
28、和链路来构建网络拓扑结构,然后就可以在各个节点间和链路上产生业务流。而NS-2中采用定义路由,代理和网络应用层来模拟实际的业务流。代理可以构建和销毁网络层的分组,是网络层的起点和终点,同时,代理还可以实现各种不同层的网络协议。NS-2中采用/作为类名的分割符的。Agent类是有c+和otcl共同实现的。Udp和tcp是tcl/tp协议族在传输层主要的两个协议。Udp协议 无连接,但传输速度快。Tcp基于三次握手协议但传输速度没有udp速度快。Udp代理 agent/udp类agent类的一个子类,模拟了udp协议的主要功能。NS-2中创建和设置udp代理可以分为以下几个步骤。 步骤一:创建一个
29、agent/udp对象并将其绑定到相应的节点上作为分组的发送器。步骤二:设置agent/udp的部分内部变量。步骤三:创建一个agent/null对象并将其绑定到相应的节点上作为分组的接受器。步骤四:在两个发送和接受代理之间创建connection连接。以下tcl代码具体显示了如何创建。Udp代理,激射节点n0和n1,以及模拟器对象已建立。Set udp0new Agent/UDP$ns attach-agent $n0 $udp0$udp0 set packetsize_536Set null0new Agent/NULL$attch agent $n1 $ null0$ns connect
30、 $udp0 $null0TCP代理 TCP代理分为单向代理和双向代理,这里主要是单向代理。 agent/TCPSink类为例。NS-2中创建和设置TCP代理可以分为以下几个步骤。步骤一:创建一个agent/TCP对象,作为分组的发送器。步骤二:设置Agent/TCP对象的部分内部变量。步骤三:创建一个agent/TCPSink对象,作为分组的接受器。步骤四:在两个发送和接受代理之间创建connection连接。以下tcl代码具体显示了如何创建TCP代理,激射节点n0和n1,以及模拟器对象已建立。Set tcpnew Agent/TCP$ns attach-agent $n0 $tcp$tcp
31、 set fid_1$tcp set window_20Set sinknew Agent/TCPSink$attch agent $n1 $ sink$ns connect $tcp $sink与Agent相关的一些命令Set agent new Agent/agent type$ns attach-agent<node><agent>$agent port$agent dst port$agent attach app <s_type>$ns connection<src>&am
32、p;lt;dst>$ns create-connect<srctype><src><dsttype><dst><pktclass>$agent attach-trace<file>5应用层在NS-2中,应用层建立在传输层之上。分为两大类。流量产生器(traffic generator)和应用模拟器(simolated application)流量产生器一般用在udp代理之上。应用模拟器代理一般在tcp代理之上。流量产生器:一般有四种udp代理:指数分布流量代理器,pareto分布流量产生器。固定比率流量产生器。Trace文件流量产生器。下面是一个例子说明流量产生器的使用,本节配
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度青海省公共营养师之二级营养师能力检测试卷A卷附答案
- 2024年度青海省公共营养师之三级营养师强化训练试卷B卷附答案
- 二零二五年度橱柜行业安全标准制定与实施合同4篇
- 2025年度高端厨房设备定制设计与安装合同4篇
- 2025年度民办学校与政府合作项目合同范本二零二五4篇
- 2025年度绿色环保钢结构自行车车棚建造及维护一体化服务合同3篇
- 二零二五年度汽车典当借款合同范本4篇
- 2025年度市政道路绿化除草与交通安全合同3篇
- 提升学校体育教育质量引领创新思维发展
- 文化创意产业用户画像与精准推广策略
- 安徽省定远重点中学2024-2025学年第一学期高二物理期末考试(含答案)
- 教育教学质量经验交流会上校长讲话:聚焦课堂关注个体全面提升教育教学质量
- 2024人教新目标(Go for it)八年级英语上册【第1-10单元】全册 知识点总结
- 剧本杀店长合同范例
- 华中师范大学第一附中2025届高考仿真模拟数学试卷含解析
- 农村自建房施工合同模板
- GB/T 44731-2024科技成果评估规范
- 影视动画设计与制作合同
- 2023学年广东省深圳实验学校初中部九年级(下)开学语文试卷
- 企业新员工培训师带徒方案
- 2025届河南省郑州一中高三物理第一学期期末学业水平测试试题含解析
评论
0/150
提交评论