ns-2.34下mflood协议的完美移植
2011-08-27 18:57
330 查看
Step1
首先需要下载mflood协议,其中包括两个文件夹:一个是mflood协议(还有文件把mflood.cc,mflood.h,mflood-seqtable.cc,mflood-seqtable.h,mflood-packet.h),一个是用于mflood测试的文件夹,下载后 可以命名为mflood_test。这两个文件夹在《NS与网络模拟》这本书所配 套光盘中的第七章代码中有,另外网上也可以下到。如果下载不到,可以电邮至我:mkxu2008@163.com索取!
Step2
在ns-2.34目录下建立mflood文件夹, 把上述的(mflood.cc,mflood.h,mflood-seqtable.cc,mflood-seqtable.h,mflood-packet.h)文件放在该mflood文件夹下面。
Step3
修改ns2.34\tcl\lib\ns-lib.tcl文件
(1)增添以下代码如下图所示的位置处:
MFlood {
set ragent [$self create-mflood-agent $node]
}
注意点:此处修改MFlood以及set之前的格式对其采用空格即可!
(2)在文档最后的空白处添加以下代码:
Simulator instproc create-mflood-agent {node} {
set ragent [new Agent/MFlood [$node id]]
$node set ragent_ $ragent
return $ragent
}
具体如下 图所示:
特殊注意点:
set前应该是一个tab键而 不是空格。
Step4
修改ns-2.34\tcl\lib\ns-packet.tcl文件:
foreach prot {
...
MFlood
AODV
...
}
相关图示如下:
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";
??
}
具体图示如下:
Step6
修改ns-2.34\Makefile
在OBJ_CC中增加一行:mflood/mflood.o mflood/mflood-seqtable.o \
特殊注意点:mflood/mflood.o mflood/mflood-seqtable.o后面是空格,再加上\结尾。
相关图示如下:
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;
}
如下图所示:
(2)并且修 改:
MFlood::MFlood(nsaddr_t id) : Agent(PT_MFLOOD), port_dmux_(0) {
index_ = id;
logtarget = 0;
myseq_ = 0;
}
图示如下:
Step8
修改ns-2.34\mflood\mflood.h
如下图添加代码:NsObject *port_dmux_;
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的数据类型,具体如下图所示:
完成上述步骤,需要按照之前所述的方法重新make一下,直至没有error为止!
Step11
测试,进入mflood——test文件夹(存放有cbr-50n -30c-1p,scene-50n-0p-40s-400t- 1200-1200,getNodeRecv.awk,getRatio.awk,mflood-3nodes.tcl,mflood- 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 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...
相关文章推荐
- 简单网络协议SNMP之移植net-snmp到开发板
- BlueZ协议的移植
- ns2下leach和leach-c协议不同簇首个数仿真比较
- 如何从 Winform 移植到 Webform [自己搞定HTTP协议]
- 怎样从Cortex-m向STM32移植使用SPI接口协议
- CanOpen协议【CanFestival】移植到STM32
- CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32
- NS-3中的OnOffApplicaion作为协议仿真的CBR源
- 2016-12-22 微信硬件 微信蓝牙外设协议1.0.4 MmBp_Embedded_1.0.4移植记录一
- SylixOS ICAN 协议移植笔记
- NS-2中的定向扩散协议分析
- GPSR协议移植
- NSCopying和NSMutableCopying协议
- NS-2.35添加MFlood协议
- 终于将unrar完美移植到了arm上
- 小马哥------高仿OPPO N1 移植测试完美版miui界面系统卡刷包 卡刷界面与开机界面面面观
- [NET] 如何从 Winform 移植到 Webform [自己搞定HTTP协议]
- Socket通用TCP通信协议设计及实现(防止粘包,可移植,可靠)
- 移植mavlink协议到STM32详细教程
- 小马哥--高仿红米 note t208刷机 移植测试完美版中文触屏rec 界面图面观