Glomosim 2.03安装步骤及仿真过程
准备工作:下载glomosim.zip和parsec.zip;安装VC++6.0;安装java jdk1.2以上版本,我安装的是jdk 1.5.
一:安装parsec
1 在C盘根目录下建立文件夹c:\glomosim\parsec
2 将glomosim.zip解压至c:\glomosim,解压后c:\glomosim下面应有两个文件夹glomosim和parsec
3 将parsec.zip解压,解压后的文件夹windowsnt-4.0-vc6里面的所有内容拷贝到c:\glomosim\parsec
4 设置pcc环境变量
1)我的电脑-属性-高级-环境变量
2)新建系统变量PCC_DIRECTORY,value = "C:\glomosim\parsec\bin"
3)设置path ";C:\glomosim\parsec\bin"
5 设置VC6.0环境变量
1)设置include: ";C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include; C:\Program Files\Microsoft Visual Studio\VC98\Include"
2)设置lib: ";C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib;C:\Program Files\Microsoft Visual Studio\VC98\Lib"
3)设置path: ";C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin"
注释:设置环境变量的值时,如果当前环境变量已经有值,需要在其后面加“;”
二:安装glomosim
1 编译VC++文件: 在命令行状态下进入 C:\Program files\Microsoft Visual Studio\VC98\bin目录,输入:vcvars32
2 编译glomosim源文件: 在命令行状态下进入C:\glomosim\glomosim\main目录,输入: makent。就可以成功编译了。这时可以在./glomosim/bin下看到要执行程序"glomosim.exe"。检查安装是否正确,可以运行"./glomosim config.in"。这时产生一个"glomo.stat"文件。将它与相同目录下的"glomo.stat.sample"文件进行比较来确保输出文件的有效。这时GloMoSim就成功安装了。
三:安装可视化工具
1 在“系统变量”中将classpath项的后面加上分号,添加 "C:\Program Files\Java\jdk1.5.0_04\bin"
2 将path项的值后加上分号,添加上"C:\Program Files\Java\jdk1.5.0_04\bin"
3 在“系统变量”中将jdk_home的值设为"C:\Program Files\Java\jdk1.5.0_04\bin"
注释:步骤1中的路径以jdk安装的路径为根目录。
四: GloMoSim的运行
在完成以上编译和安装之后,如果不需要可视化工具,可以在命令行状态下进入C:\glomosim\glomosim\bin目录,输入:glomosim config.in,则会产生仿真结果文件glomo.stat.如果安装了可视化工具,那么在命令行状态下进入C:\glomosim\glomosim\java_gui目录,输入:java GlomoMain。就可以进入可视化界面。在可视化工具中,从“仿真”菜单选择“实时”模式,将弹出一个对话框请求输入要执行的程序的名称。默认文件是:.. \glomo..\bin\config.in。点击“确定“按钮继续。
一旦点击了“确定“按钮,可视化工具将运行glomosim,从glomosim中捕获标准输出(stdout)并且在屏幕上显示图形化结果。
值得注意的是:一个普遍的错误是当通过实时或者写追踪选项执行可视化工具一旦开始执行时,屏幕上并没有显示任何东西,这样给你的印象好像是程序并没有执行。对此问题的通常解决方法是拷贝配置文件(nodes.input, mobility.in, app.conf and config.in)到/java_gui目录下。这时,可视化工具中仿真配置文件config.in是.. \glomo..\bin\目录下的config.in文件,另外三个配置文件在C:\glomosim\glomosim\java_gui目录下,产生的结果文件glomo.stat也在C:\glomosim\glomosim\java_gui目录下,当然可以通过前面执行模式的默认路径将config.in修改到C:\glomosim\glomosim\java_gui目录下。这时运行可视化工具时,配置文件都在C:\glomosim\glomosim\java_gui目录下,但是这样的修改只能是一次性的,每次运行时都必须进行这样的修改。
另一种更优越的办法是打开配置文件config.in,将其中的:
NODE-PLACEMENT-FILE ./nodes.input 改为 :
NODE-PLACEMENT-FILE C:\glomosim\glomosim\bin\ nodes.input
MOBILITY-TRACE-FILE ./mobility.in 改为 :
MOBILITY-TRACE-FILE C:\glomosim\glomosim\bin\ mobility.in
BER-TABLE-FILE ./ber_bpsk.in 改为 :
BER-TABLE-FILE C:\glomosim\glomosim\bin\ ber_bpsk.in APP-CONFIG-FILE ./app.conf 改为 :
APP-CONFIG-FILE C:\glomosim\glomosim\bin\app.conf
这样就不需要C:\glomosim\glomosim\java_gui目录下的nodes.input, mobility.in, app.conf and config.in配置文件,可以完全解除C:\glomosim\glomosim\java_gui目录和C:\glomosim\glomosim\bin目录下双重配置文件带来的不少麻烦。不过这时产生的glomo.stat就还是在C:\glomosim\glomosim\bin目录下。
五:仿真示例
移动Ad hoc网络的路由算法主要分为两类:表驱动路由(table-driven)和按需路由(on-demand)。 目前,在移动自组网中,针对路由协议的设计这个热点和难点问题,提出了许多有效的路由协议, 如AODV、DSR、DSDV、ZRP、WRP等。这里,我们从完整的应用角度,来将两个具有代表意义的移动自组网路由协议AODV (自组网按需路由协议) 和DSR (动态源路由协议)的平均延时来进行比较,了解随着结点数的变化,在平均延时上AODV与DSR性能的差异。
在C:\glomosim\glomosim\bin目录下的app.conf文件中,使用12条从开始就一直存在的CBR流,每个流中每秒发送5个64字节的数据包。此处不使用TCP流,因为TCP流中提供的拥塞控制、重传特性在我们的模拟中并不需要,而且会导致各流发送的数据包数目不一。
在C:\glomosim\glomosim\bin目录下的Config.in文件的配置如下:
SIMULATION-TIME 500 # 仿真时间(s)
TERRAIN-DIMENSIONS (500, 500) # 区域范围
NODE-PLACEMENT RANDOM # 结点放置策略
MOBILITY NONE # 结点是否可以移动
PROPAGATION-PATHLOSS FREE-SPACE # 传播路径丢失模式
NOISE-FIGURE 10.0 # 噪音数值
TEMPARATURE 290.0 # 环境温度(K)
RADIO-TYPE RADIO-ACCNOISE # 无线广播类型
RADIO-FREQUENCY 2.4e9 # 频率
RADIO-BANDWIDTH 2000000 # 带宽
RADIO-RX-TYPE SNR-BOUNDED # 接收类型
MAC-PROTOCOL 802.11 # MAC层使用的协议
APPLICATION-STATISTICS YES # 是否跟踪应用层
根据前面仿真环境的性能参数配置,在结点数分别为30、50、100、150、200、250、300时得到路由协议为AODV和DSR两种情况下平均延时的统计结果如表1所示。
Average Delay |
AODV |
DSR |
30nodes |
0.011592359 |
0.011882228 |
50nodes |
0.011595843 |
0.011911026 |
100nodes |
0.011605044 |
0.011891148 |
150nodes |
0.011638710 |
0.011899828 |
200nodes |
0.011614832 |
0.011930346 |
250nodes |
0.011657757 |
0.011930346 |
300nodes |
0.011642720 |
0.011921894 |
表1.平均延时对照表
从表1统计结果可以得到:由于AODV协议是在DSDV协议的基础上结合类似DSR中按需驱动的思想而提出的。它与DSR协议的不同之处在于报头并不携带路由信息,中继节点隐式地将路由请求和路由应答分组中的路由信息保存于自身的路由表中。而DSR协议基于源路由概念,数据分组头部必须包含完整的路由信息,DSR有比AODV更多的路由信息;DSR不区分路由信息的新旧造成网络负担不同 ;DSR只能把出错链路通知给源端。 这些缺点造成DSR比AODV路由开销大,带宽利用率低,平均延迟的时间更长。
需要重点说明的是:在前面例子中产生的数据量很少,允许对glomo.stat文件进行直接分析,然而由于网络规模和仿真时间的进一步增大,大部分情况是不可能的。那么可以利用其它工具来分析glomo.stat文件,还可以产生图形化结果。本文使用awk语言和gnuplot画图工具。awk 是一种用于读取和处理结构化数据的极佳工具,而gnuplot能够从文本文件中直接读取数据并绘制图形。
在每一次仿真结束时,glomo.stat文件的结果必须单独地保存(如下面的aodv50.stat等)。然后用一个脚本文件(如下面的aodv.bat文件)将所有的结果文件导出生成一个只包含平均延时的文件result.txt。 那么就可以用自编的awk 程序(如下面的delay.awk)对结果文件进行统计分析,得到另一个结果文件result2.txt。再进行整理形成如表1所示的result3.txt文件。
# delay.awk 分别统计不同路由下相同结点数时的平均延时
BEGIN{
count=0;
sum=0;
}
{
sum +=$10;
count++;
if ( count%12==0)
{
printf("Average Delay = %f\n",sum/12);
sum = 0;
}
}
END{
}
# aodv.bat 将所有结果文件整理成单个只包含平均延时的文件
awk "/delay/{print$0}" /aodv30.stat /aodv50.stat /aodv100.stat /aodv150.stat /aodv200.stat /aodv250.stat /aodv300.stat /dsr30.stat /dsr50.stat /dsr100.stat /dsr150.stat /dsr200.stat /dsr250.stat /dsr300.stat > result.txt
cd\
awk -f delay.awk result.txt > result2.txt
然后编辑一个图形脚本文件(如下面的aodv.plt),用图形工具GnuPlot来直接运行这个文件,就可以得到如图1所示的Delay.gif图形文件。
# aodv.plt 用gnuplot直接从文本文件result3.txt中读取数据并绘制图形
set terminal gif
set size 1/2.,1/2.
set output "Delay.gif"
set xlabel "number-of-nodes"
set ylabel "Average Delay(s)"
set key left top box
set title "The figure of Average Delay"
plot [0:300][0.0100:0.0124] "result3.txt" using 1:2 title 'AODV' with linespoints, \
"result3.txt" using 1:3 title 'DSR' with linespoints
图 1 平均延迟性能比较图
至于其它参数例如报文投递率、路由负荷、数据包丢失率和源结点发送数据包数量的比较,只要对源程序进行简单的修改,就可以直接仿真了。还可以通过配置文件改变数据包的大小、数据包的发送速率、结点的移动速度和区域形状,来研究Ad Hoc 在不同情况下表现出的性能
可视化工具的作用:This tool allows to debug and verify models and scenarios; stop, resume and step execution; show packet transmissions, show mobility groups in di®erent colors and show statistics.
系统环境变量和用户环境变量
环境变量分为系统环境变量和用户环境变量。系统环境变量,对所有用户起作用 ,而用户环境变量只对当前用户起作用。
初次安装Glomosim,安装步骤是自己根据网上资料慢慢摸索的,希望能对大家有所帮助!