- 论坛徽章:
- 0
|
illidan.modeler@gmail.com
GloMoSim是由UCLA计算机系的R.
Bagrodia教授等人开发的网络仿真平台项目。它不是开源项目,但许可教育和科研领域的免费使用。在2003年该项目已终止开发,其源代码成为商业产品Qualnet的基础。
GloMoSim主要针对无线网络仿真,对有线网络仅有很有限的支持。它基于UCLA计算机系研发的parsec语言/编译器构建离散事件仿真引擎。用不同操作系统平台上的parsec可以将GloMoSim在不同的平台上编译。
大
多数网络仿真软件都使用编译语言实现仿真内核和网络协议,使用脚本或配置文件配置网络属性和参数。GloMoSim也类似。它用PARSEC语言或C语言
实现网络协议,用脚本进行配置。GloMoSim仿真的主配置文件还可以引用别的配置文件完成业务配置、移动性配置等工作。本文不涉及用C语言实现网络协
议模型,只关注配置和运行仿真。
1.
安装方法
(以Linux平台为例,SLED 10, kernel v2.6.16.21-0.25-default, gcc 4.1.0,
glibc 2.4。
有些操作需要较高的用户权限。)
解包
cd /usr/local
tar zxvf
glomosim-2.03.tar.gz
ln -s glomosim-2.0.3
glomosim
设置pcc的路径
export
PATH=/usr/local/glomosim/parsec/redhat-7.2/bin:$PATH
编译构建
cd
glomosim
make
make完成后,就会生成相应的可执行文件。将目录加入PATH变量。
export
PATH=/usr/local/glomosim/bin:$PATH
2.场景示例
CSMA协议的hidden terminal问题
在任意一个目录创建本场景对应的工作目录
mkdir hidden_termianl
cd
hidden_termianl
创建配置文件config.in
(可以以glomosim/scenarios下的配置文件为样板创建新的配置文件)
主要参数如下:
SIMULATION-TIME 5S
NODE-PLACEMENT
FILE
NODE-PLACEMENT-FILE ./nodes.input
MOBILITY
NONE
MAC-PROTOCOL CSMA
APP-CONFIG-FILE
./app.conf
APPLICATION-STATISTICS
YES
TCP-STATISTICS NO
UDP-STATISTICS
NO
ROUTING-STATISTICS NO
NETWORK-LAYER-STATISTICS
NO
MAC-LAYER-STATISTICS YES
RADIO-LAYER-STATISTICS
NO
CHANNEL-LAYER-STATISTICS NO
MOBILITY-STATISTICS
NO
创建文本文件app.conf,配置如下业务:
#
CBR 2 1 0 512 4MS 0
0
即从结点2向结点1持续地发送CBR通信量,每个CBR报文长512字节,每4ms发送一个报文。仿真时长是5s,因而会发送5s/4ms
= 1250个CBR包。
创建文本文件nodes.input,设置结点位置:
0
(50, 1000)
1 (650, 1000)
2 (1250,
1000)
共三个结点,各相距600m。
node0 ---600m--- node1 ---600m--- node2
运行GloMoSim包中的radio_range程序:
radio_range
config.in
得到如下输出:
radio
range: 627.625m
可知最远通信距离是627.625m,结点0-结点1, 结点1-结点2的距离都在通信范围之内。这样的位置就是隐终端问题典型的位置。
运行仿真:
glomosim
config.in
生成仿真统计结果glomo.stat,
主要内容为:
Node: 1,
Layer: AppCbrServer, (0) Total number of bytes received: 640000
Node:
1, Layer: AppCbrServer, (0) Total number of packets received:
1250
Node: 1, Layer: AppCbrServer, (0) Throughput (bits per second):
1024493
Node: 2, Layer: AppCbrClient, (0) Total number of bytes
sent: 640000
Node: 2, Layer: AppCbrClient, (0) Total number of
packets sent: 1250
Node: 2, Layer: AppCbrClient, (0) Throughput (bits
per second):
1024000
所有包都成功地接收。
修改CBR业务的参数(app.conf),让结点0和结点2都向结点1发包:
CBR 2 1 0 512 4MS 7MS 0
CBR 0
1 0 512 4MS 0
0
重新运行仿真:
glomosim
config.in
得到结果为:
Node: 0,
Layer: AppCbrClient, (0) Total number of packets sent: 1250
Node: 1,
Layer: AppCbrServer, (0) Total number of packets received: 799
Node:
1, Layer: AppCbrServer, (0) Total number of packets received:
801
Node: 2, Layer: AppCbrClient, (0) Total number of packets sent:
1249
结点0和结点2各向结点1发送了1250和1249个包,但结点1只分别收到了799和801个包。由于隐终端问题,结点0和结点2向结点1发送的包中由于碰撞出现了丢包。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22344/showart_293970.html |
|