[精品]在NS下进行新协议开发的一般流程.doc:..在NS2下进行新协议开发的一般流程在NS2下进行新协议开发的一般流程如图3-5所示。在NS2下进行新协议开发的一•般流程由于NS2使用分裂对象模型,所以在协议开发的过程屮,总是从C++和Tel两个类入手。流程说明如下:1、定义新的路由协议::publicAgent{}□在NS2中,所有路由协议都是从Agent类继承而来的。其中,recv()mand()函数是从Agent类继承下来的。recv()是Agent在接收分组吋的入口,源节点在发送一个分组吋会调用H标节点的相应Agent的recv()函数。它是路由层收到数据包的处理函数,mandO是命令处理函数。要在Otcl对象屮调用对应的C++对象的方法,mandO函数实现的。对于每个TclObject,NS2为其Otcl屮的解释对象建立一个实例过程,cmd{}。过程cmd{}mand。,并将cmd{}mandO方法。此外,具体协议所用到的其它函数也在AODV类中定义。2、 定义一个TclClass类的子类:定义的新的路由协议需要被NS所接纳并且可以在Tel代码屮使用,文件进行如下定义:lassAODVclass:publicTclClass{}□TclClass是一个纯虚类,从这个基类继承出来的类提供两个功能:构造和编译类结构互为镜像的解释类结构以及提供初始化新的TclObject的方法。每个从TclClass继承出來的类都和编译类结构屮的一个TclObject的子类札I关联,并能初始化所关联的类的新对象。在其构造函数屮调用基类的构造函数AODVclass():TclClass(“Agent/AODV"),其中Agent/AODV指定了C++中的AODV类和Tel部分屮的Agent/AODV绑定在了一起,在编写的Tel代码屮指定路由协议吋就应该用Agent/AODVo3、 修改ns/tcl/lib/ns-:在NS2中运行Tel中指定路由协议时只会用到路由协议的名称,因此,我们需要修改NS的系统Tel代码,使得半设定路由协议为AODV吋会调用我们新增加的Agent/AODV类(也就是C卄下的AODV类)。这需要在ns/tcl/lib/ns--wireless-node成员函数屮增加如下代码:switch-exact$routingAgent_{AODV{setragent[$selfcreate-aodv-agent$node]:}}然后在ns/tcl/lib/ns・-aodv-agent(参照已有的路由协议)。4、 定义包头:为了进行重复包检测,路由协议需要定义口己的包头,将各种序列号、分组标识等存在这个包头屮。首先在AODV-,个结构体structhdr_aodv{},ess都是系统要求的,我们只需要作相应的修改。;packet::access()返冋用于储存包头的缓冲区的第一个字节的地址。然后我们需要在ns/tcl/lib/ns-
[精品]在NS下进行新协议开发的一般流程 来自淘豆网m.daumloan.com转载请标明出处.