网络仿真器NS析NetworkSimulatorV.ppt
文本预览下载声明
网络仿真器NS2剖析Network Simulator V2 ——功能、使用及源代码 一、背景 二、NS各模块及功能 三、运行环境 四、NS使用 五、NS主代码简析——基类 六、NS主代码简析——功能模块 七、扩展方法 一、背景 局域网仿真是局域网设计的重要环节,也是网络性能分析的关键 需要一个与操作系统无关的平台,它可以屏蔽掉对操作系统的实际的访问,且能近乎真实地模拟网络环境,让我们可以在各个层次上模拟网络的运行 UC Berkeley改进过的NS2 二、运行环境 平台:Windows、Linux、Unix、machitosh,还要求系统装有C++编译器 两种语言:C++、OTcl, 三、NS2主要模块及功能 NS2包含的几个小工具 Nam Xgraph 拓扑图生成器:Gt-itm 节点移动生成器:Setdest 传输事件生成器:cbrgen.tcl tcpgen.tcl Nam与Xgraph 图形显示工具 Nam filename.out:动态显示网络仿真过程。如:包的传输等等 Xgraph filename.tr:显示仿真过程的数值特征。如:流量/时间图等 四、NS2的使用 命令行方式:敲入一个命令,返回一个结果 输入命令: %/ns-version 返回版本号: ns /2.0a12 脚本方式:指定一个脚本文件(*.tcl文件),让NS执行 输入命令: %/ns example.tcl 脚本的写法 五、主代码简析——基类 Tcl类:C++代码与Tcl代码之间的接口 TclObject类:所有仿真对象的基类 TclClass类:定义了解释类的类层次,并允许用户实例化TclObject,与TclObject一一对应 TclCommand类:封装了C++代码和Tcl代码相互调用命令的方法 EmbeddedTcl类:封装了装载更高级别的内置命令的方法 InstVar类:访问C++成员变量,如Otcl变量方法 Tcl类 获得访问Tcl实例的入口 通过解释器调用Otcl过程 与解释器交换结果 报告出错状况,并以统一方式退出 存储、查找TclObject类对象 取解释器的句柄 TclObject类 TclObject类封装了网络实体 生成和释放“ 对象对” 变量的绑定(bindding) 变量的跟踪(Trace) 命令方法的定义和调用 流程图 TclClass类 定义了解释类的类层次,并允许用户实例化TclObject,与TclObject一一对应。 类TclClass是一个纯虚类,从它派生的子类需实现两个成员函数:其一是构造函数,构造解释类层次来镜像编译类层次;其二是生成函数,生成与之相对应的TclObjects对象 。 流程图 TclCommand类 类TclCommond的作用就在为解释器提供全局命令 由TclCommand的定义知道,它是一个虚基类,必须派生子类,才能工作。 例子,派生类MyCommand,它的命令名为say。 EmbededTcl类 用户对通过对文件~tclcl/tcl-object.tcl进行修改,或是修改、增加tcl/lib的文件来对ns进行扩展。 对于新文件的装载是由类EmbeddedTcl的对象来完成的。 Tcl脚本其实就是由char类型数据组成的文本文件,所以类Embedded的构造函数可以用char*型指针指向脚本代码,并将此指针值赋与成员变量 code_。 InstVar类 类InstVar定义了实现绑定机制的方法: 隐式,当创建新解释对象时,构造函数创建与其对应的编译对象,编译对象的构造函数将它的成员变量与解释对象的实例变量绑定; 显式,定义一个实现绑定变量的命令,然后通过方法cmd调用。 基类InstVar派生五个子类:InstVarReal,InstVarTime,InstVarBandwidth,InstVarInt, InstVarBool。分别用来绑定real型,time型,bandwidth型,integer型,和boolean型变量。 六、主代码简析——功能模块 NS对网络实体的仿真和各种功能模块都封装在派生类中。 重要的派生类有simulator、node、link、 LAN等等。 Class simulator 仿真器类是一个解释类,没有相应的编译类。但仿真器类是由许多更小的类构成的,这些类有相应的编译类。 它封装了节点、链路、代理、数据包格式等。 从ns外部看来,整个仿真过程可以看成对仿真器类对象的操作。因此,我们的工作从创建一个仿真器的实例对象开始,之后,通过这个仿真器调
显示全部