Chinaunix首页 | 论坛 | 博客
  • 博客访问: 210205
  • 博文数量: 46
  • 博客积分: 3010
  • 博客等级: 中校
  • 技术积分: 679
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 13:11
文章分类
文章存档

2009年(19)

2008年(27)

我的朋友

分类: 系统运维

2009-01-22 17:06:01

NS2模拟脚本大致编写流程

1、创建Simulator类的对象,用来定义和控制模拟过程,该类在ns/tcl/lib/ns-lib.tcl中定义和实现。Simulator类的对象会完成一系列初始化工作,包括:
(1)初始化一系列类属性;
(2)调用create-packetformat格式化分组(若要添加或删除用到的分组头,则要在定义Simulator类对象前调用ns/tcl/lib/ns-packet.tcl中定义的add-all-packet-headers等方法实现);
(3)调用use-scheduler定义默认使用的事件调度器Calendar;
(4)创建一个Agent/Null类对象nullAgent_;
(5)调用set-address-format定义节点默认地址格式为def等。

2、设置跟踪文件(跟踪对象在ns/tcl/lib/ns-trace.tcl中设置):
(1)使用OTcl内置命令打开一个文件;
(2)调用Simulator类对象的方法来设定要跟踪的目标和已打开的记录文件。

3、创建拓扑结构。
(1)配置节点属性:
调用Simulator类的node-config方法配置节点属性,属性配置后直到下次配置均保持不变,一般只需在创建无线节点或卫星节点时才要进行配置。
(2)创建拓扑结构:
调用Simulator类的node方法创建节点;
调用Simulator类的simplex-node、duplex-node方法在节点间创建有线链路。

4、设置代理和应用层协议,并进行绑定:
(1)创建代理对象;
(2)使用Simulator类的attach-agent方法将代理对象和节点进行绑定;
(3)使用Simulator类的connect方法建立代理对象的端到端连接;
(4)创建应用层对象(流量发生器或应用模拟器,均在ns/tcl/lib/ns-source.tcl中实现);
(5)使用attach-agent方法将其与代理对象进行连接;

5、使用Simulator类对象的at方法设置节点事件和时间的对照关系。其中,在设置模拟结束时的处理过程时,要调用Simulator类对象的flush-trace方法来刷新模拟过程中所有跟踪对象的缓冲区,并要关闭已打开的跟踪记录文件。

6、使用Simulator类对象的run方法开始模拟过程。

  此外,在每次创建OTcl类对象(见tclcl/tcl-object.tcl)时,NS都会通过分裂对象模型自动创建一个对应的C++对象,进行变量绑定工作,并初始化被绑定的变量(见ns/tcl/lib/ns-default.tcl)。
阅读(1781) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~