这是《NS与网络模拟》第七章的一个例子,展示了安装路由协议的一般流程,不过书上的步骤是针对ns2.26的,在ns2.31下安装需要有些修
改。下面根据网上搜索到的信息和实际操作总结如下:
首先确认已经获得下列文件(随书光盘里有,或者在网上搜索):
mflood源
码:mflood.cc,mflood.h,mflood-seqtable.cc,mflood-seqtable.h,mflood-
packet.h。
mflood测试代码:cbr-50n-30c-1p,scene-50n-0p-40s-400t-
1200-1200,getNodeRecv.awk,getRatio.awk,mflood-3nodes.tcl,mflood-
scene.tcl。
1、在ns-2.31目录下建立mflood文件夹,把上述文件统统放进去。
2、修改
ns-lib.tcl(在ns2.31\tcl\lib\):(红色表示添加部分
)
OMNIMCAST {
eval
$node addr $args
set ragent [$self
create-omnimcast-agent $node]
}
MFlood {
set ragent [$self
create-mflood-agent $node]
}
DumbAgent {
set ragent [$self create-dumb-agent $node]
}
另外在空白处加入:
Simulator instproc create-tora-agent {
node } {
set ragent [new
Agent/TORA [$node id]]
$node
set ragent_ $ragent
return $ragent
}
Simulator instproc
create-mflood-agent {node} {
set
ragent [new Agent/MFlood [$node id]]
$node set ragent_ $ragent
return
$ragent
}
3、
修改ns-packet.tcl(在
ns2.31\tcl\lib\
):
foreach
prot {
...
MFlood
AODV
...
}
4、修改
packet.h(在ns2.31\common\):
enum
packet_t {
⋯⋯
PT_AODV,
PT_MFLOOD,
⋯⋯
}
p_info() {
⋯⋯
name_[PT_AODV]=
"AODV";
name_[PT_MFLOOD]="MFlood";
⋯⋯
}
5、修改
Makefile(在ns2.31\)
在
OBJ_CC
中增加一行:
mflood/mflood.o
mflood/mflood-seqtable.o \
6、在mflood.cc(在
刚建立的文件加ns2.31\mflood\)中加入
:
...
uptarget_ =
(NsObject*)TclObject::lookup(argv[2]);
if
(uptarget_ == 0) {
tcl.resultf("no
such object %s", argv[2]);
return
(TCL_ERROR);
}
return
(TCL_OK);
}
else
if (strcasecmp (argv[1], "port-dmux") == 0) {
TclObject *obj;
port_dmux_ = (NsObject *) obj;
return TCL_OK;
}
}
return
Agent::command(argc, argv);
}
并且修改:
MFlood::MFlood(nsaddr_t id)
: Agent(PT_MFLOOD)
, port_dmux_(0)
{
index_ = id;
logtarget = 0;
myseq_ = 0;
}
7、
修改
mflood.h(在
ns2.31\mflood\):
NsObject *uptarget_;
NsObject *port_dmux_;
8、在
ns2.31\下make,可能会有一些warning,不用去管它。
9、测试:(进入mflood\)
a)
测试mflood-3nodes.tcl
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 ...
b)测试mflood-
sceen.tcl
首先修改mflood-sceen.tcl文件:(将文件名改成同目录下的scene-50n-0p-40s-400t-
1200-1200)
#set val(sc)
"../scene-50n-0p-2s-400t-1200-1200"
set
val(sc) "scene-50n-0p-40s-400t-1200-1200"
#set
val(sc) "../scene/jscene-50n-0p-2s-400t-1200-1200-1"
然后输入:
ns mflood-sceen.tcl
输出类似上面的,会生成57兆左右的trace文
件。
其他的数据分析应该没什么问题了。
分享到:
相关推荐
MFlood协议是在网络模拟器NS2中的一个广泛应用的多播路由协议。NS2是一个开源的网络模拟工具,常用于研究和分析各种网络协议的性能。本文将详细介绍如何在NS2.34版本上安装MFlood协议,以及如何利用提供的源代码和...
这种协议简单易实现,但在大规模网络中可能导致大量重复数据传输和较高的网络开销,因此通常只适用于小规模或对实时性有高要求的网络。 源码移植工作通常涉及以下步骤: 1. **代码适配**:由于NS2的版本更新可能会...
FHMIP patch for ns2.31
在本场景中,我们讨论的是在ns-2(Network Simulator 2)环境下对mflood协议的仿真。 ns-2是一个广泛使用的开源网络模拟器,用于研究和分析各种网络协议和拓扑。它提供了丰富的内置协议和模块,用户可以通过自定义...
首先,MFlood协议的核心在于它的泛洪策略。在传统的单路径Flooding中,数据包会被沿着单一路径传递,可能导致重复发送和网络拥塞。而MFlood通过使用多路径,将数据包分散到不同的路径上,提高了数据包的生存率和网络...
本篇将深入探讨如何在NS2.34模拟器上完美移植LEACH协议,并介绍MFLOOD泛洪广播协议的源代码。 首先,LEACH协议的核心理念在于创建一种动态的簇结构,每个簇由一个簇头节点和若干个普通节点组成。簇头负责收集数据并...
总的来说,【ns-allinone-2.31】为网络研究人员和学习者提供了一个方便的环境,用于在Windows系统下开发、测试和分析网络协议,是网络仿真领域的重要工具。通过VS2003的集成开发支持,用户可以更高效地调试代码和...
标题中的“multihop-string-cbr.rar_CBR _ns2.31”表明这是一个关于多跳网络(multihop)中连续比特率(CBR)数据传输的研究或模拟项目,使用了NS-2.31版本的网络仿真器。NS-2是一个广泛用于计算机网络、无线网络...
NS2.28网络模拟器是一款广泛应用于计算机网络教学与研究的重要工具,它以其强大的功能和灵活性,使得网络研究人员能够模拟各种复杂的网络环境和协议。NS全称为Network Simulator,是网络仿真领域的基石之一,尤其在...
在本文中,我们将详细探讨如何在Windows 9x/2000/XP环境下安装ns-2.28模拟软件。ns-2是一款广泛用于网络模拟的开源工具,主要用于研究和教学网络协议和系统。首先,我们需要安装一个名为Cygwin的软件,它是一个提供...
在这篇文章中,我们将对 NS-3 支持的几个路由协议进行总结,介绍每种协议的使用环境及特点,并总结相关的 API。 一、AODV 路由协议 AODV(Ad hoc On-Demand Distance Vector)是一种适用于无线自组网的路由协议。...
cygwin本地安装包,选择了ns2.31需要的所有组件,win7和xp测试成功。
cygwin本地安装包PART2,选择了ns2.31需要的所有组件,win7和xp测试成功。
cygwin本地安装包PART1,选择了ns2.31需要的所有组件,win7和xp测试成功。
首先,在你的NS-2.35安装目录下创建一个名为mflood的新目录,并将mflood的相关源文件(mflood.h, mflood.cc, mflood_packet.h, mflood-seqtable.h, mflood-seqtable.cc)放入此目录。 2. 修改packet.h: 打开ns-...
《802.11 MAC架构与流程图在Ns-2.31中的解析》 802.11 MAC(Medium Access Control)层是无线局域网(WLAN)标准的一部分,它负责管理网络设备如何共享无线信道。Ns-2.31是一个广泛使用的网络模拟器,用于研究和...
【ns2下洪泛式协议源码】是一个关于网络模拟器ns2中实现洪泛式路由协议MFLOOD的专题。洪泛式路由是一种基础的分布式路由算法,它在网络中的每个节点都广播信息,直到信息到达所有目标节点或者达到某个限制条件为止。...