网络仿真器NS2剖析NetworkSimulatorV2课件

上传人:仙*** 文档编号:241740867 上传时间:2024-07-20 格式:PPT 页数:36 大小:363KB
返回 下载 相关 举报
网络仿真器NS2剖析NetworkSimulatorV2课件_第1页
第1页 / 共36页
网络仿真器NS2剖析NetworkSimulatorV2课件_第2页
第2页 / 共36页
网络仿真器NS2剖析NetworkSimulatorV2课件_第3页
第3页 / 共36页
点击查看更多>>
资源描述
v一、背景v二、NS各模块及功能v三、运行环境v四、NS使用v五、NS主代码简析基类v六、NS主代码简析功能模块v七、扩展方法一、背景v局域网仿真是局域网设计的重要环节,也是网络性能分析的关键v需要一个与操作系统无关的平台,它可以屏蔽掉对操作系统的实际的访问,且能近乎真实地模拟网络环境,让我们可以在各个层次上模拟网络的运行vUCBerkeley改进过的NS2二、运行环境v平台:Windows、Linux、Unix、machitosh,还要求系统装有C+编译器v两种语言:C+、OTcl,三、NS2主要模块及功能NS2包含的几个小工具vNamvXgraphv拓扑图生成器:Gt-itmv节点移动生成器:Setdestv传输事件生成器:cbrgen.tcltcpgen.tclNam与Xgraphv图形显示工具vNam:动态显示网络仿真过程。如:包的传输等等vXgraph:显示仿真过程的数值特征。如:流量/时间图等四、NS2的使用v命令行方式:敲入一个命令,返回一个结果输入命令:/ns-version返回版本号:ns/2.0a12v脚本方式:指定一个脚本文件(*.tcl文件),让NS执行输入命令:/ns脚本的写法五、主代码简析基类vTcl类:C+代码与Tcl代码之间的接口vTclObject类:所有仿真对象的基类vTclClass类:定义了解释类的类层次,并允许用户实例化TclObject,与TclObject一一对应vTclCommand类:封装了C+代码和Tcl代码相互调用命令的方法vEmbeddedTcl类:封装了装载更高级别的内置命令的方法vInstVar类:访问C+成员变量,如Otcl变量方法Tcl类v获得访问获得访问Tcl实例的入口实例的入口v通过解释器调用通过解释器调用Otcl过程过程v与解释器交换结果与解释器交换结果v报告出错状况,并以统一方式退出报告出错状况,并以统一方式退出v存储、查找存储、查找TclObject类对象类对象v取解释器的句柄取解释器的句柄TclObject类 TclObject类封装了网络实体类封装了网络实体v生成和释放生成和释放“对象对对象对”v变量的绑定(变量的绑定(bindding)v变量的跟踪(变量的跟踪(Trace)v命令方法的定义和调用命令方法的定义和调用v流程图流程图TclClass类v定义了解释类的类层次,并允许用户实例化TclObject,与TclObject一一对应。v类TclClass是一个纯虚类,从它派生的子类需实现两个成员函数:其一是构造函数,构造解释类层次来镜像编译类层次;其二是生成函数,生成与之相对应的TclObjects对象。v流程图TclCommand类v类TclCommond的作用就在为解释器提供全局命令v由TclCommand的定义知道,它是一个虚基类,必须派生子类,才能工作。v例子,派生类MyCommand,它的命令名为say。EmbededTcl类v用户对通过对文件tclcl/tcl-object.tcl进行修改,或是修改、增加tcl/lib的文件来对ns进行扩展。v对于新文件的装载是由类EmbeddedTcl的对象来完成的。vTcl脚本其实就是由char类型数据组成的文本文件,所以类Embedded的构造函数可以用char*型指针指向脚本代码,并将此指针值赋与成员变量code_。InstVar类v类InstVar定义了实现绑定机制的方法:隐式,当创建新解释对象时,构造函数创建与其对应的编译对象,编译对象的构造函数将它的成员变量与解释对象的实例变量绑定;显式,定义一个实现绑定变量的命令,然后通过方法cmd调用。v基类InstVar派生五个子类:InstVarReal,InstVarTime,InstVarBandwidth,InstVarInt,InstVarBool。分别用来绑定real型,time型,bandwidth型,integer型,和boolean型变量。六、主代码简析功能模块vNS对网络实体的仿真和各种功能模块都封装在派生类中。v重要的派生类有simulator、node、link、LAN等等。Classsimulatorv仿真器类是一个解释类,没有相应的编译类。但仿真器类是由许多更小的类构成的,这些类有相应的编译类。v它封装了节点、链路、代理、数据包格式等。v从ns外部看来,整个仿真过程可以看成对仿真器类对象的操作。因此,我们的工作从创建一个仿真器的实例对象开始,之后,通过这个仿真器调用各种方法生成节点,进而构造拓扑图,对仿真的各个方面进行配置,定义事件,然后,根据定义的事件,模拟整个网络活动的过程。ClassnodeClassclassifiervBaseclassifier是一虚基类vaddressclassifier:支持独播,通过位移和掩码将包的目的地址转化成槽的号码。vmulticastclassifier:保持一个哈希链表,匹配地址对,取到槽的号码。如为未知地址对,则加入表中。vmultipathclassifier:支持等价多路转发。vhashclassifier:使用哈希表,将包分发给“流”。vreplicator:拷贝数据包,转发给表中的所有对象,支持广播Classlinkv由Connecter、Quere、Delayv一个简单的链路对象是由一些连接器(connector)组成的。v由Connecter、Quere、DelayClassQuerevdrop-tail:FIFO队列vFQ:公平队列vSFQ:实现随机公平队列vDRR(deficitroundrobin):不同流之间调度vCBQ:实现了基于类的队列vCBQ/WRR:是CBQ的子类,实现了同一优先级上不同的类间的带权的循环调度。AgentvAgent可以在不同层上实现各种协议。对某些协议(如UDP),包的大小、发送时间取决于应用程序,而对另一些较低层的协议,以上参数取决于agent本身。vAgent可用Otcl语句创建,其内部状态可以用Tcl的set命令修改。v注:某些agent的状态变量只存在于Otcl,用C+代码不可访问。数据包v类Packet是仿真对象间交换数据的基础单元,它提供了足够的信息,可以将一个包联入一个列表,可以查询数据包头缓冲,可以查询包数据缓冲。不同的协议采用不同的数据包格式,因此报头会不一样。要引入新的数据报头,需要根据数据包的格式定义一个C+结构,定义一个静态类来提供与Otcl的连接,然后修改仿真器的初始化代码。区别服务v区别服务(DifferentiatedServices),简称DiffServ,通过标注包的类型,并对不同的包采取不同的处理,实现了IPQoS。vDiffserv模块分三个主要子模块:policy,edgerouter,corerouter。局域网v局域网(LAN)与那些由多条点点链简单构成网络大不一样,有共享、竞争等特性。为了模仿真正的LAN,ns又定义了新的节点LanNode。其他vNS还实现了其他的模型,如、卫星网络模型、无线传播模型、能量模型七、简单的扩展v扩展ns最简单的方法是在tclcl/tcl-object.tcl中加入Otcl代码,或在目录ns/tcl/lib下加入新Tcl脚本。v若是在ns/tcl/lib下加入新脚本,则必须在ns/tcl/lib/ns-lib.tcl中加入对脚本的引用,语句为:sourcetcl/v在启动ns时,ns/tcl/lib/ns-lib.tcl自动引用这个新脚本,类似于C程序中的“include“filename”进一步扩展v首先,将脚本转为类EmbeddedTcl对象:tclshbin/tcl-expand.tcltcl/lib/ns-lib.tcl|./Tcl/tcl2c+et_ns_libgen/ns_tclsh.ccvns/ns_tclsh.cc中的Tcl_AppInit函数通过Tcl:Init()调用ns/tcl/lib/ns-lib.tcl,实现装载的语句是:et_ns_lib.load();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!