NS2仿真实例汇总
- 格式:doc
- 大小:44.00 KB
- 文档页数:6
Ns2简单有线网络仿真实验报告一、实验概述1、在windows系统下安装Centos虚拟机2、在Centos系统下安装NS2仿真工具包3、Nam方式示例二、实验内容1)NS2仿真工具包安装说明1.在Centos系统下设置root账户2.解压NS2文件3.安装ns-allinone-2.35设置环境变量4.验证NS2工具包安装情况2)Nam方式Otcl脚本# 产生一个仿真的对象set ns [new Simulator]#针对不同的资料流定义不同的颜色,这是要给NAM用的$ns color 1 Green$ns color 2 Red#开启一个NAM trace fileset nf [open out.nam w]$ns namtrace-all $nf#开启一个trace file,用来记录封包传送的过程set nd [open out.tr w]$ns trace-all $nd#定义一个结束的程序proc finish {} {global ns nf nd$ns flush-traceclose $nfclose $nd#以背景执行的方式去执行NAMexec nam out.nam &exit 0}#产生6个网络节点set n0 [$ns node]set n1 [$ns node]set n2 [$ns node]set n3 [$ns node]set n4 [$ns node]set n5 [$ns node]#把节点连接起来$ns duplex-link $n0 $n2 2Mb 10ms DropTail$ns duplex-link $n1 $n2 2Mb 10ms DropTail$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail$ns duplex-link $n3 $n4 1.7Mb 30ms DropTail$ns duplex-link $n3 $n5 1.5Mb 30ms DropTail#设定ns2到n3之间的Queue Size为10个封包大小$ns queue-limit $n2 $n3 10$ns queue-limit $n3 $n4 5#$ns queue-limit $n3 $n5 10#设定节点的位置,这是要给NAM用的$ns duplex-link-op $n0 $n2 orient right-down$ns duplex-link-op $n1 $n2 orient right-up$ns duplex-link-op $n2 $n3 orient right$ns duplex-link-op $n3 $n4 orient right-up$ns duplex-link-op $n3 $n5 orient right-down#观测n2到n3之间queue的变化,这是要给NAM用的$ns duplex-link-op $n2 $n3 queuePos 0.5#建立一条n0-n5TCP的联机set tcp [new Agent/TCP]$ns attach-agent $n0 $tcpset sink [new Agent/TCPSink]$ns attach-agent $n5 $sink$ns connect $tcp $sink#在NAM中,TCP的联机会以Green表示$tcp set fid_ 1#在TCP联机之上建立FTP应用程序set ftp [new Application/FTP]$ftp attach-agent $tcp$ftp set type_ FTP#建立一条UDP的联机set udp [new Agent/UDP]$ns attach-agent $n1 $udpset null [new Agent/Null]$ns attach-agent $n3 $null$ns connect $udp $null#在NAM中,UDP的联机会以红色表示$udp set fid_ 2#在UDP联机之上建立CBR应用程序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#设定FTP和CBR资料传送开始和结束时间$ns at 0.1 "$cbr start"$ns at 1.0 "$ftp start"$ns at 4.0 "$ftp stop"$ns at 4.5 "$cbr stop"#结束TCP的联机(不一定需要写下面的程序代码来实际结束联机)$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"#在仿真环境中,5秒后去呼叫finish来结束仿真(这样要注意仿真环境中#的5秒并不一定等于实际仿真的时间$ns at 5.0 "finish"#执行仿真$ns run3)仿真结果仿真结束后,会产生out.nam和out.tr两个档案用来把仿真的过程用可视化的方式呈现出来4)数据分析1.End-to-End Delay把测量CBR封包端点到端点间延迟时间的awk程序,写在档案measure-delay.awk档案中BEGIN {#程序初始化,设定一变量以记录目前最高处理封包的ID。
基于NS2的TCP建模与仿真摘要:TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。
本文利用NS2网络仿真器对TCP/IP中的拥塞控制与拥塞窗口,快速重传与快速恢复算法进行了仿真,使对协议中的几种机制和算法有了形象的理解。
关键字:TCP/IP协议,NS2仿真,拥塞控制,快速重传,快速恢复一、引言TCP/IP协议是计算机之间常用的组网形式,是互联网事实上的工业标准,由IETF负责制定,其具体内容通过RFC文档公开发布。
例如,TCP协议在RFC793中正式定义;RFC1122对如何检测错误和不一致性以及解决方法进行了说明;RFC1323给出了对TCP的一些扩展功能;RFC2518中重点阐述了TCP的拥塞控制机制描述了更新后避免过度拥塞的算法;RFC3168描述了对显示拥塞的报告等。
据统计,当前在所有因特网的数据包中,大约有95%包的传送使用了TCP 协议,因此针对TCP协议相关机制的研究很有实际意义。
在TCP协议的研究中,仿真是一种有效又经济的研究方法,而且可以给人以更加形象的认识。
目前的网络仿真工具主要包括两类:一是基于大型网络开发的网络仿真工具,如OPNET、GloMoSim等;二是基于小型网络开发的网络仿真工具,如NS2、COMNET III等。
大多数网络仿真工具的价格昂贵,而本文采用的NS2是一种应用广泛、影响力较大和源代码公开的免费网络模拟软件。
二、网络仿真器NS2NS是Network Simulator的英文缩写,又称网络仿真器。
它是一款开放源代码的网络模拟软件,最初由加州大学伯克利分校(UC Berkeley)开发。
NS-2支持Windows、Linux、Unix、Mac以及其他支持POSIX标准的操作系统,它主要支持的操作系统是Linux系统,目前几乎支持所有主流的Linux发行版本,本文使用的是Windows+Cygwin平台。
基于NS2的UDP协议仿真1. UDP协议的特点UDP 是OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP 协议基本上是IP协议与上层协议的接口。
UDP协议适用端口分别运行在同一台设备上的多个应用程序。
UDP协议并不提供数据传送的保证机制。
如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。
UDP协议称为不可靠的传输协议。
UDP报头由4个域组成,其中每个域各占用2个字节,具体如表1所示:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1819 20 21 22 23 24 25 26 27 28 29 30 31表1 UDP报头结构UDP协议使用端口号为不同的应用保留其各自的数据传输通道。
数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去,而数据接收一方则通过目标端口接收数据。
UDP协议使用报头中的校验值来保证数据的安全。
校验值首先在数据发送方通过特殊的算法计算得出,在传递到接收方之后,还需要再重新计算。
如果某个数据报在传输过程中被第三方篡改或者由于线路噪音等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。
2. NS2软件的安装与配置2.1 ubuntu实验环境Ubuntu是Linux的一个版本,是一款免费的操作系统,Ubuntu 项目完全遵从开源软件开发的原则;用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。
这是其他的操作系统所做不到的。
NS2在linux环境下运行比在windows下更稳定,出现更少的错误,还可以更改linux内核,使得仿真效果更好。
2.2 软件安装NS2可以再Linux平台下运行,因此一般需要安装Linux操作系统。
也可以采用Windows+虚拟机(VMware,Virtual PC)+NS组合的方式。
D/D/1、M/D/1、M/M/1排队性能分析排队系统按主要特征进行分类。
一般是以相继顾客到达系统的间隔时间分布、服务时间的分布和服务台数目为分类标志。
现代常用的分类方法是英国数学家D.G .肯德尔提出的分类方法,即用肯德尔记号 X/Y/Z 进行分类。
X 处填写相继到达间隔时间的分布;Y 处填写服务时间分布; Z 处填写并列的服务台数目。
例如,D/D/1表示顾客按照确定的时间间隔到达、服务时间为确定的时间间隔和单个服务台的模型;M/D/1表示顾客相继到达的间隔时间为负指数分布、确定的服务时间间隔和单个服务台的模型;M/M/1表示顾客相继到达的时间间隔为负指数分布、服务时间间隔为负指数分布和单个服务台的模型。
M/M/1系统系统空间无限、顾客源无限、FCFSλ:顾客平均到达率。
μ:服务台平均服务率对于泊松流,在时间t 内,系统内有n 个顾客的概率服务泊松分布()()2,1,0,0!=>=-n t en t t P tn nλλ若顾客流为泊松流时,顾客到达的时间间隔服从负指数分布 ()⎩⎨⎧<≥=-00t t e t a t λλ 二、负指数分布的均值和方差顾客到达的时间间隔服从负指数分布,可求得到达的时间间隔均值为()λ1=T E ;到达时间间隔方差为()21λ=T D三、服务过程分析 1、服务时间的分布当服务机构只有一个服务台时,对一个顾客的服务时间,即忙期内两顾客离开系统的时间间隔,服从参数为μ的负指数分布,μ为平均服务率,即单位时间内离开系统的顾客平均数。
服务时间的均值和方差为:()()211μμ==T D T E四、服务系统的基本指标1、 系统中无顾客的概率 μλ-=10P2、 平均排队的顾客数()λμμλ-=2q L3、系统中的平均顾客数μλ+=q s L L4、顾客花在排队上的平均等待时间λqq L W =5、 顾客在系统中的平均逗留时间μ1+=q s W W6、 顾客得不到及时服务必须排队等待的概率μλ=w P7、系统中恰好有n 个顾客的概率 ()0P P n n μλ=此外,还有,平均队长:系统状态的数学期望(顾客数的期望值)λμλ-=s L ;平均排队长:排队顾客数的期望值()λμμλ-=2q L ;逗留时间分布为()()te t T P λμ--=≥;所以平均逗留时间λμ-=1s W ;平均排队时间:()λμμλλμρ-==-q W ;关于ρ:服务强度,反映了服务员忙期所占的比例,同时实际上也是平均服务台数。
NS2仿真实验分析报告一引言1 NS2简介NS2是一款开放源代码的网络模拟软件,最初由UC Berkeley开发。
它是一种向象的网络模拟器,它本质上是一个离散事件模拟器,其本身有一个模拟时钟,所有的模拟都由离散事件驱动。
其采用了分裂对象模型的开发机制,采用C++和OTcl两种语言进行开发。
它们之间采用Tclcl 进行自动连接和映射。
考虑效率和操作便利等因素,NS2将数据通道和控制通道的实现相分离。
为了减少分组和事件的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C++编写,这些对象通过Tclcl映射对OTcl解释器可见。
目前NS2可以用于模拟各种不同的通信网络,它功能强大,模块丰富,已经实现的主要模块有:网络传输协议,如TCP和UDP;业务源流量产生器,如FTP、Telnet、CBR、We b和VBR;路由队列管理机制,如DropTail、RED和CBQ;路由算法;以及无线网络WLAN、移动IP和卫星通信网络等模块,也为进行局域网的模拟实现了多播协议以及一些MAC子层协议。
2 基本概念(1)RED:随机早期探测(Random Early Detect,RED)。
RED属于主动队列管(Active Queue Management, AQW),是目前常见的TCP上防止拥塞的手段。
它通过以一定概率丢失或标记报文来通知端系统网络的拥塞情况。
RED使用平均队列长度度量网络的拥塞程度,然后以线性方式将拥塞信息反馈给端系统。
RED使用最小阈值,最大阈值和最大概率等几个参数。
RED的基本思想是通过监控路由器输出端口队列的平均长度来探测拥塞,一旦发现拥塞逼近,就随机地选择连接来通知拥塞,使它们在队列溢出导致丢包之前减少拥塞窗口,降低发送数据速度,缓解网络拥塞。
RED配置在路由器监视网络流量以便避免拥塞,当拥塞即将发生时,它随机丢弃进来的分组,而不是等到队列缓冲区满是才开始丢弃所有进来的分组,这样可以最少化全局同步的发生。
摘要无线网络中多媒体信息传输的NS2仿真在无线多媒体通信系统中,视频信源在发送端按照一定的编码方式进行编码,形成视频帧,然后在网络层和传输层封装成IP数据包,再经过无线信道传输到达接收端,在接收端进行解包和恢复,得到视频帧,再形成重建后的视频流。
在此过程中,无线信道的传输特性会影响到视频的传输质量。
本文在利用Evalvid 工具的基础上,综合NS2仿真工具,建立研究多媒体信息在无线网络中传输的平台。
在视频流仿真方面,本文采用了将视频流的Trace 文件引入NS仿真环境的方法,来模拟实际网络传送的视频流,并在tcl程序代码中设定G-E模型的参数变量,这样就可以得到经模拟网络传输后数据包的收发情况,并对无线信道对多媒体信息传输质量的影响进行评估。
实验中采用的网络拓扑结构为无线局域网拓扑结构。
仿真结果表明,由于无线信道特性的不理想,在接收端恢复视频信息与视频信源相比较,会出现一定的失真。
本文还综合利用多种工具对视频信息的质量变化进行评估,如数据封包的时延、视频的PSNR值、可解画面比例与原始图像和重建后的图像的差异等。
关键词:无线网络;多媒体信息;网络仿真;AbstractThe Simulation Of Multimedia Information Transmission in Wireless Network Video information are encoded by a certain means in the sending end among the system of wireless-multimedia communication,informing the video frames,and then they was encapsulated in the network layer and the transmission layer.Before they reach the sink,they transmit across the wireless channel,and now they are download and renew,getting the new frames,which inform the rebuided video stream.Among this course,the characteristic of wireless channel could affect the quality of video transmission.Based the useage of Evalvid tool and integrated ns2 simulation tool,we construct the platform for researching the transmission of multimedia in wireless network.In the simulation of video stream, in order to simulate the actual transmission of video stream in the network,we apply the method that importing the traffic trace file of video stream into the ntework simulation circumstance,and then we enactment the parameter of the G-E model in the tcl script,in this way,we can get the condition of datagramme,meanwile,we evaluate the effect of wireless channel for the transmission of multimedia.In this experiment,we adopt the WAN topologyframework as the network framework.The result revealed that as the ideallessness characteristic of wireless channel,there is a certain distortion between the original video source and the rebuilded video information.Meanwhile,we utilize kinds of tools,such as the delaytime of datagrame、the value of PSNR for video、decodable frame rate 、the difference between the source video file and the rebuilded video file and so on,evaluating the quality of video information.Key words:wireless network;multimedia information; network simulation目录第一章绪论31.1引言31.2 选题意义41.3 论文章节安排5第二章无线网络的信道模型与视频帧52.1无线局域网的传输标准52.2无线信道的G-E模型82.3视频流的封装原理92.3.1 MPEG标准92.3.2MPEG中有关GOP的概念102.3.3封包和帧的关系102.4画图工具的介绍11第三章无线局域网视频仿真环境的构建143.1 基于myevalvid工具的多媒体传输系统143.2 NS2模拟无线网络的传输163.2.1 NS2与其基本原理163.2.2 网络拓扑结构的组成183.2.3无线传输差错模型的实现193.3仿真网络的结构213.4 视频仿真的细节22第四章视频信息传输研究244.1实验探究步骤244.2视频传输研究294.2.1视频帧的比较294.2.2 数据包的延时31第五章总结与展望32致33参考文献33第一章绪论1.1引言随着无线网络和多媒体技术的迅猛发展,无线网络已逐步从单一的数据传送网向数据、语音、图像等多媒体信息的综合传输网演化。
NS-2仿真模拟实例汇总(以方路平的书为主)1.例4.5a:DropTail队列管理的NS_2模拟实例(P161) set ns [new Simulator]set nf [open out.nam w]$ns namtrace-all $nfset tf [open out.tr w]set windowVsTime [open win w]set param [open parameters w]$ns trace-all $tfproc finish {} {global ns nf tf$ns flush-traceclose $nfclose $tfexec nam out.nam &exit 0}set n2 [$ns node]set n3 [$ns node]$ns duplex-link $n2 $n3 0.7Mb 20ms DropTailset NumbSrc 3set Duration 50for {set j 1} {$j <=$NumbSrc} {incr j} {set S($j) [$ns node]}set rng [new RNG]$rng seed 2set RVstart [new RandomVariable/Uniform]$RVstart set min_ 0$RVstart set max_ 7$RVstart use-rng $rngfor {set i 1} {$i <=$NumbSrc} {incr i} {set startT($i) [expr [$RVstart value]]set dly($i) 1puts $param "startT($i) $startT($i) sec"}for {set j 1} {$j <=$NumbSrc} {incr j} {$ns duplex-link $S($j) $n2 10Mb $dly($j)ms DropTail$ns queue-limit $S($j) $n2 20}$ns queue-limit $n2 $n3 100for {set j 1} {$j <=$NumbSrc} {incr j} {set tcp_src($j) [new Agent/TCP/Reno]$tcp_src($j) set window_ 8000}for {set j 1} {$j<=$NumbSrc} {incr j} {set tcp_snk($j) [new Agent/TCPSink]}for {set j 1} {$j <=$NumbSrc} {incr j} {$ns attach-agent $S($j) $tcp_src($j)$ns attach-agent $n3 $tcp_snk($j)$ns connect $tcp_src($j) $tcp_snk($j)}for {set j 1} {$j <=$NumbSrc} {incr j} {set ftp($j) [$tcp_src($j) attach-source FTP]}for {set j 1} {$j <=$NumbSrc} {incr j} {$tcp_src($j) set packetSize_ 552}for {set i 1} {$i <=$NumbSrc} {incr i} {$ns at $startT($i) "$ftp($i) start"$ns at $Duration "$ftp($i) stop"}proc plotWindow {tcpSource file k} {global ns NumbSrcset time 0.03set cwnd [$tcpSource set cwnd_]if {$k==1} {puts -nonewline $file "$now \t $cwnd \t"} else {if {$k< $NumbSrc} {puts -nonewline $file "$cwnd \t"}}if {$k== $NumbSrc } {puts -nonewline $file "$cwnd \n"}$ns at [expr $now+$time] "plotWindow $tcpSource $file $k"} for {set j 1} {$j <= $NumbSrc} {incr j} {$ns at 0.1 "plotWindow $tcp_src($j) $windowVsTime $j"}$ns monitor-queue $n2 $n3 [open queue.tr w] 0.05[$ns link $n2 $n3] queue-sample-timeout$ns at [expr $Duration] "finish"$ns run2.例4.5b:RED队列管理的NS-2模拟实例(P164) set ns [new Simulator]set nf [open out.nam w]$ns namtrace-all $nfset tf [open out.tr w]set windowVsTime [open win w]set param [open parameters w]$ns trace-all $tfproc finish {} {global ns nf tf$ns flush-traceclose $nfclose $tfexec nam out.nam &exit 0}set n2 [$ns node]$ns duplex-link $n2 $n3 0.7Mb 20ms REDset NumbSrc 3set Duration 50for {set j 1} {$j <=$NumbSrc} {incr j} {set S($j) [$ns node]}set rng [new RNG]$rng seed 2set RVstart [new RandomVariable/Uniform]$RVstart set min_ 0$RVstart set max_ 7$RVstart use-rng $rngfor {set i 1} {$i <=$NumbSrc} {incr i} {set startT($i) [expr [$RVstart value]]set dly($i) 1puts $param "startT($i) $startT($i) sec"}for {set j 1} {$j <=$NumbSrc} {incr j} {$ns duplex-link $S($j) $n2 10Mb $dly($j)ms DropTail$ns queue-limit $S($j) $n2 20}$ns queue-limit $n2 $n3 100for {set j 1} {$j <=$NumbSrc} {incr j} {set tcp_src($j) [new Agent/TCP/Reno]$tcp_src($j) set window_ 8000}for {set j 1} {$j<=$NumbSrc} {incr j} {set tcp_snk($j) [new Agent/TCPSink]}for {set j 1} {$j <=$NumbSrc} {incr j} {$ns attach-agent $S($j) $tcp_src($j)$ns attach-agent $n3 $tcp_snk($j)$ns connect $tcp_src($j) $tcp_snk($j)for {set j 1} {$j <=$NumbSrc} {incr j} {set ftp($j) [$tcp_src($j) attach-source FTP]}for {set j 1} {$j <=$NumbSrc} {incr j} {$tcp_src($j) set packetSize_ 552}for {set i 1} {$i <=$NumbSrc} {incr i} {$ns at $startT($i) "$ftp($i) start"$ns at $Duration "$ftp($i) stop"}proc plotWindow {tcpSource file k} {global ns NumbSrcset time 0.03set now [$ns now]set cwnd [$tcpSource set cwnd_]if {$k==1} {puts -nonewline $file "$now \t $cwnd \t"} else {if {$k< $NumbSrc} {puts -nonewline $file "$cwnd \t"}}if {$k== $NumbSrc } {puts -nonewline $file "$cwnd \n"}$ns at [expr $now+$time] "plotWindow $tcpSource $file $k"} for {set j 1} {$j <= $NumbSrc} {incr j} {$ns at 0.1 "plotWindow $tcp_src($j) $windowVsTime $j"}set redq [[$ns link $n2 $n3] queue]set traceq [open red-queue.tr w]$redq trace curq_$redq trace ave_$redq attach $traceq$ns at [expr $Duration] "finish"$ns run$grep "a" red-queue.tr > ave.tr$grep "Q" red-queue.tr > cur.trgnplot > set title "current and average queue size" gnplot > set xlabel "time"gnplot > set ylabel "queue size"gnplot > plot ""。