开始投入紧张的项目工作中,主要方向是改进的蜂窝网的仿真,差不多是3GPP LTE和802.16j的结合。虽然项目里使用的是OPNET,但出于对自由软件天生的好感,空闲下来我还是不由自主地要碰碰NS2。就先随便写一点吧,希望最后能做到OPNET和NS2并驾齐驱。
NS2的入门必修就是它的OTcl & C++分裂对象模型,具体的概念就不多说了,直接进入主题,也就是C++对象和OTcl对象的映射关系,这是NS2工作原理的核心。分为四个问题,为方便叙述,我们把用C++语言实现协议称为设计过程;用OTcl语言架设网络进行仿真称为仿真过程。
1, C++类到OTcl类的映射
C++类到OTcl类的映射是指在用Tcl语言进行仿真时,使用诸如"new Agent/MyAgentOtcl"命令生成OTcl对象,NS2将要生成的对应的C++对象。这个"new Agent/MyAgentOtcl"对应的是解释类(interpreted classes),而它对应的C++类称为编译类(compiled classes)。
这种类的映射是通过在C++程序中继承纯虚类TclClass实现的。设我们用C++设计一个MyAgent类,那么为了在仿真时用OTcl语言得到一个它的对象,我们需要的就是:
用MyAgentClass继承一下TclClass,并在其中的create()函数中返回一个MyAgent()的对象。这样我们在OTcl语言中写下"new Agent/MyAgentOtcl"时,NS2就会找到C++类MyAgentClass,执行其中的create()函数,而这个函数返回一个MyAgent类的对象,于是就在OTcl语言中生成了一个C++类的影子对象(shadow object),完成了映射。
2,C++类与OTcl类的变量绑定
在仿真过程中经常需要设定对象的参数,如node的配置、agent的速率等,这些对OTcl对象的参数设定需要被映射到C++对象才算是真正起到了作用。这种绑定是通过在类的构造函数中使用bind()函数实现的:
第一个形参就是OTcl对象中将要使用的变量名,第二个形参是C++类中的变量名。这就完成了my_var和my_var_otcl之间的绑定。
3,C++类的操作到OTcl对象的操作的映射
OTcl对象进行的操作是通过对应的C++类中实现的command()函数定义的,比如:
这样在OTcl中写出
set myagent [new Agent/MyAgentOtcl]
$myagent call-my-priv-func
第一条命令是通过1中讲过的类的映射实现的,生成了一个MyAgent对象myagent;第二条命令调用了MyAgent类的command()函数中对应"call-my-priv-func"字段部分的操作。这就实现了C++类中的操作到OTcl对象的映射。
4,OTcl类的操作到C++类的操作的映射
在C++设计中也会用到OTcl类给出的一些操作,如:
就是在MyAgent类中生成了一个Tcl对象tcl,并调用了tcl的几个函数打印一些信息。通过将MyAgent类映射到OTcl类,在仿真中我们就可以看到NS2打印出的提示信息。
分享到:
相关推荐
Juniper Netscreen ScreenOS NS-204 NS-208 ns200.5.4.0r26.0
NS3下平台TDMA模块,在ns3的src下添加模块。
对ns2中分裂模型的一点认识,总结自己学习ns2的经验。
ns2-allinone-2.30在fedora 13下安装问题加解决办法
程序全集--柯志亨--NS2仿真实验-多媒体和无线网络通信
ns2.33-hls-patch for network simulatior 2
网络安全 CH12—防火墙 1 网络安全---NS-CH12-防火墙全文共70页,当前为第1页。 2 目录(CONTENTS) 防火墙的基本原理 001 防火墙技术 010 防火墙的配置方案 011 WAF 100 网络安全---NS-CH12-防火墙全文共70页,当前...
欧姆龙设备监控软件 NS-Runtime NS-NSRCL□pdf,欧姆龙设备监控软件 NS-Runtime NS-NSRCL□:设备、生产线的监视、数据收集通过办公室的计算机进行,是在计算机上运行使用NS系列用绘图工具 CX-Designer绘制的图像数据...
Ns2仿真实验-多媒体与无线网络,柯志恒老师的书,对于学习NS2还是很好的
WV-NS950 G WV-NS954E WV-NW960 G WV-NW964E 网络摄像机设置手册 Cámara de red Panasonic
我们为扩展的字符串字段构造一类二次规范规矩不变操作,扩展的字符串字段定义在带有或不带有一个Ramond(R)扇区的多个打开字符串Neveu-Schwarz(NS)扇区的打开超字符串状态空间的张量积上。 基本思想与作者提出的...
NS3-model-library
学习NS源码,摘自ns-allinone-2.27,为NS-2初学者提供很大的方便,不必再在文件夹下查找。
NS2介绍--PPT 适合初学者 浙江工业大学软件学院 安装 架构 简单使用 带实例
ns-allinone-3.19.tar.bz2,ns3最新安装包
ns2的安装文件,是一款强大的仿真软件~~
《NS2仿真实验--多媒体和无线网络通信》全部26个实验的实验代码
ns-3-dce-fattree 备忘录。 用 quagga 克隆 net-next-sim。 要使用 dce-quagga 进行克隆,arch/sim/Makefile 的补丁位于此存储库中。 编译 net-next-sim cd ...
ns-2.26的补丁程序,安装ns2.26时可能需要。此程序不太容易从网上找到。
ns-3-tutorial是初学者学习ns3必须看的官方手册!包括了安装,模块介绍,示例程序等等上手的帮助介绍,不可多得的学习资料