4.1 前期准备工作
4.1.1 NS运行平台及安装步骤
NS可以安装在Windows NT、Solaris及Linux操作系统下,它对于不同的平台有不同的版本。已选择平台为Linux,因为Linux是一种免费系统,可安装于微机上,网上有很多软件包都支持此平台。Linux被称为Unix的PC版,是迄今唯一能够在PC机硬件平台上为广大用户免费提供多任务、多进程功能的操作系统。
由于系统已经是调试成功的,因此我只简略叙述其安装步骤:(所用的NS版本为NS-2.31,安装平台为Linux)
(1)将下载的软件包ns – allinone - 2.31.tar.gz拷贝到/dm目录下。
(2)使用命令cd /dm,进入NS软件包所在目录。使用命令tar –zxvf ns – allinone - 2.31.tar.gz将其解压,自动在当前目录下生成ns – allinone - 2.31子目录。
(3)使用命令cd ns-allinone-2.31进入此子目录,运行./configure命令生成Makefile文件。键入./make,编译并生成库文件和可执行文件。
(4)make完毕后,进入ns – allinone - 2.31下的ns - 2.31子目录,运行validate,以验证NS软件中各协议安装的正确性。
4.1.2 NS的运行
在Linux中对应用户名的.profile启动文件中的PATH变量中添加NS软件包中bin子目录的绝对路径,这样以相应的用户名进入系统后就不必等到进入该子目录就可以运行NS软件。用命令:ns < ns脚本 >来运行NS仿真程序。也可以只键入ns而不带任何参数,此时进入NS解释程序环境,屏幕上出现解释环境的提示符-%。这时可以用命令行的方式source < ns脚本 > 来运行NS仿真程序,这与带参数的ns命令是等价的。当然也可以在此环境下运行简单的命令。
4.2 仿真程序介绍
以下以4.1中只有ftp数据流情况下RED网关的仿真程序为例进行介绍:
#产生一个NS2模拟对象的实例,并且分配一个变量给NS2
set ns [new Simulator]
#设置一些变量
#源节点链路带宽
set bw_ether_ 0.25Mb
#瓶颈链路带宽
set bw_serial_ 1.7Mb
#源节点链路延时
set delay_ether_ 10ms
#瓶颈链路延时
set delay_serial_ 20ms
#瓶颈链路队列长度限制
set qlimit_ 100
#设置源节点总数
set node_num_ 8
#源节点链路队列长度限制
set qlimit1_ 10
#现在我们要打开两个trace文件,一个用以记录仿真过程中的数据,而另一个用于记录nam(动画显示工具)运行所需要的数据。nf为out.nam的句柄,f为test1.8tcp.tr的句柄。
set f [open test1.8tcp.tr w]
#将仿真中的数据都写到文件out.tr中
$ns trace-all $f
set nf [open out.nam w]
#将仿真数据中与nam有关的数据都写到文件out.nam中
$ns namtrace-all $nf
#定义一个“finish”程序
proc finish {} {
global ns nf f
$ns flush-trace
close $nf
close $f
exec nam out.nam &
exit 0
}
#使用成员函数node来创建节点
for {set i 1} {$i<=$node_num_} {incr i} {
set n($i) [$ns node]
}
#创建瓶颈链路的节点
set s1 [$ns node]
set s2 [$ns node]
#创建两个已经定义的节点之间的双向链路,并对每个链路定义其带宽和延时还有丢列类型。源节点链路均采用丢尾队列
for {set i 1} {$i<=$node_num_} {incr i} {
$ns duplex-link $n($i) $s1 $bw_ether_ $delay_ether_ DropTail
$ns queue-limit $n($i) $s1 $qlimit1_
}
#创建瓶颈链路,采用RED队列
$ns duplex-link $s1 $s2 $bw_serial_ $delay_serial_ RED
#将瓶颈链路的队列限制设置为 qlimit_
$ns queue-limit $s1 $s2 $qlimit_
#监控瓶颈链路的的队列(为 NAM)
$ns duplex-link-op $s1 $s2 queuePos 0.5 网络拥塞控制经典算法RED仿真(7):http://www.751com.cn/tongxin/lunwen_8262.html