ns-2.34下mflood协议的完美移植

Step1

    首先需要下载mflood协议,其中包括两个文件夹:一个是mflood协议(还有文件mflood.ccmflood.hmflood-seqtable.ccmflood-seqtable.hmflood-packet.h),一个是用于mflood测试的文件夹,下载后 可以命名为mflood_test。这两个文件夹在《NS与网络模拟》这本书所配 套光盘中的第七章代码中有,另外网上也可以下到。

    如果下载不到,可以电邮至我:mkxu2008@163.com索取!

Step2

    在ns-2.34目录下建立mflood文件夹, 把上述的(mflood.ccmflood.hmflood-seqtable.ccmflood-seqtable.hmflood-packet.h文件放在mflood文件下面。

Step3

    修改ns2.34\tcl\lib\ns-lib.tcl文件

(1)增添以下代码如下图所示的位置处:

MFlood {

set ragent [$self create-mflood-agent $node]

}

ns-2.34下mflood协议的完美移植(已修正bug)

注意点:此处修改MFlood以及set之前的格式对其采用空格即可!

(2)文档最后的空白处添加以下代码

Simulator instproc create-mflood-agent {node} {

set ragent [new Agent/MFlood [$node id]]

$node set ragent_ $ragent

return $ragent

}

具体如下 图所示:

ns-2.34下mflood协议的完美移植(已修正bug)

特殊注意点:

set前应该是一个tab键而 不是空格
Step4

    修改ns-2.34\tcl\lib\ns-packet.tcl文件:

foreach prot {

...

MFlood

AODV

...

}

相关图示如下:

ns-2.34下mflood协议的完美移植(已修正bug)

Step5

    修改ns-2.34\common\packet.h

(1)packet.h文件的 申明部分做如下修改:

static const packet_t PT_AOMDV = 61;

static const packet_t PT_MFLOOD =62;

static const packet_t PT_NTYPE =63;

 

(2)做如下修改:

p_info() {

??

name_[PT_AODV]= "AODV";

name_[PT_MFLOOD]="MFlood";

??

}

    具体图示如下:

 ns-2.34下mflood协议的完美移植(已修正bug)
Step6

    修改ns-2.34\Makefile

OBJ_CC中增加一行:mflood/mflood.o mflood/mflood-seqtable.o \

特殊注意点:mflood/mflood.o mflood/mflood-seqtable.o后面是空格,再加上\结尾。
    相关图示如下:

 

ns-2.34下mflood协议的完美移植(已修正bug)

Step7

    在ns-2.34\mflood\mflood.cc

(1)s首先添加如下代码

else if (strcasecmp (argv[1], "port-dmux") == 0) {

TclObject *obj;

port_dmux_ = (NsObject *) obj;

return TCL_OK;

}

    如下图所示:

ns-2.34下mflood协议的完美移植(已修正bug)
(2)并且修 改:

MFlood::MFlood(nsaddr_t id) : Agent(PT_MFLOOD), port_dmux_(0) {

index_ = id;

logtarget = 0;

myseq_ = 0;

}

图示如下:

ns-2.34下mflood协议的完美移植(已修正bug)
Step8

    修改ns-2.34\mflood\mflood.h
如下图添加代码:NsObject *port_dmux_;

ns-2.34下mflood协议的完美移植(已修正bug)

Step9

    打开终端,输入下列命令:

cd ns-allinone-2.34/ns-2.34

/ns-allinone-2.34/ns-2.34$ make make

    在ns-2.34\make可能会 有一些warning此外在我调试的过程中出现了下述错误:

common/ptypes2tcl.cc:22: error: assignment of read-only variable ‘PT_NTYPE’

make: *** [common/ptypes2tcl.o] 错误 1

Step10

    针对上述错误需要进行如下修改:

    进入目录:/ns- allinone-2.34/ns-2.34/common/ptypes2tcl.cc,在该文件的第22行,重新定义PT_NTYPE的数据类型,具体如下图所示:

ns-2.34下mflood协议的完美移植(已修正bug)

    完成上述步骤,需要按照之前所述的方法重新make一下,直至没有error为止!

Step11

    测试进入mflood——test文件夹(存放cbr-50n -30c-1pscene-50n-0p-40s-400t- 1200-1200getNodeRecv.awkgetRatio.awkmflood-3nodes.tclmflood- scene.tcl0)
(1)测试mflood-3nodes.tcl
    首先进入以下路径:ns-allinone-2.34/ns-2.34/mflood_test,然后输入ns mflood-3nodes.tcl,如果协议移植成功则会出现以下结果:

输出:
num_nodes is set 3
INITIALIZE THE LIST xListHead
Starting Simulation ...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING ...
(2)测试mflood-sceen.tcl
    首先mflood-sceen.tcl文件进行如下修改

ns-2.34下mflood协议的完美移植(已修正bug)

    修改完毕在终端中输入ns mflood-sceen.tcl,若修改正确,会出现如下仿真结果:

num_nodes is set 50

INITIALIZE THE LIST xListHead

Loading connection pattern...

Loading scenario file...

Starting Simulation...

channel.cc:sendUp - Calc highestAntennaZ_ and distCST_

highestAntennaZ_ = 1.5,  distCST_ = 550.0

SORTING LISTS ...DONE!

NS EXITING...

 

转载于:https://www.cnblogs.com/zhangleiccst/archive/2011/08/27/2155713.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值