NS2 仿真参数自动更改和执行,并保存执行结果

内容说明

通常在NS2仿中,是在TCL脚本中设置网络参数进行网络仿真。如果网络参数变化,需要手动修改TCL脚本中设置的参数,然后在重新运行TCL文件获得仿真结果。如此比较麻烦,如何自动修改网络参数并运行仿真,且自动保存运行结果?此处做法是利用Linux的bash脚本,自动修改TCL脚本并执行它,也就实现了上述功能。

举个例子
假设要实现如下功能:每一次仿真网络中的节点是变化的,针对不同的节点数,按比例随机在它们之间产生连接,以发送数据包,并且每次仿真网络中节点都是随机分布和移动的。

实现思路
1. 利用NS2中自带的setdest工具生成一个场景文件,设置每次仿真中的节点的位置、随机移动、移动速度和范围。
Eg:

        ~/ns/ns-2.35/indep-utils/cmu-scen-gen/setdest/setdest -n 20 -p 0 -M 0.5 -t 200 -x 1800 y 1800 > scene

以上代码表示调用NS2中的setdest工具生成一堆指令,这些指令实现:自动设置网络中节点书为20,移动速度0.5m/s,历时200s,移动范围为1800×1800m. 并将结果保存到 scene 文件中。
2. 利用NS2中自带的 cbrgen.tcl 文件随机在节点中生成连接发送数据流。
Eg:

ns cbrgen.tcl -type cbr -nn $20 -seed 1 -mc 8 -rate 10.0 > cbr

以上代码表示调用NS2中的 cbrgen.tcl 文件生成一堆指令,这些指令实现:自动在含有20个节点的网络中产生8对连接,每对连接买秒发送10个分组。并将这些指令保存到cbr文件中。
3. 编写TCL脚本,在其中调用上面生成的文件:scene、cbr,并运行该TCL脚本。
4. 为了达到自动化修改网络参数的目的,还需编写一个Linux的bash脚本进行全局控制,网络中节点每变化一次,都执行上述3个操作,可以在每一次循环中,将第1、2步中的某些参数用变量代替即可。

以上具体实现代码请见资源下载。其中包含:TCL脚本和bash脚本,可以实现上述功能,并用GAWK分析了吞吐量。可以进行蒙特卡罗仿真。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值