`
fovecifer
  • 浏览: 8319 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

在ns2.31下实现MFlood泛洪协议 (2.28同样适用)

阅读更多

这是《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文 件。

其他的数据分析应该没什么问题了。

分享到:
评论

相关推荐

    NS2.34上安装MFlood协议

    MFlood协议是在网络模拟器NS2中的一个广泛应用的多播路由协议。NS2是一个开源的网络模拟工具,常用于研究和分析各种网络协议的性能。本文将详细介绍如何在NS2.34版本上安装MFlood协议,以及如何利用提供的源代码和...

    NS2 MFlood洪泛路由协议移植源码

    这种协议简单易实现,但在大规模网络中可能导致大量重复数据传输和较高的网络开销,因此通常只适用于小规模或对实时性有高要求的网络。 源码移植工作通常涉及以下步骤: 1. **代码适配**:由于NS2的版本更新可能会...

    ns2.31_fhmip.patch.gz_FHMIP_ns2.31

    FHMIP patch for ns2.31

    mflood洪泛协议在ns下的仿真源代码

    在本场景中,我们讨论的是在ns-2(Network Simulator 2)环境下对mflood协议的仿真。 ns-2是一个广泛使用的开源网络模拟器,用于研究和分析各种网络协议和拓扑。它提供了丰富的内置协议和模块,用户可以通过自定义...

    mflood协议的源码以及ns2测试代码

    首先,MFlood协议的核心在于它的泛洪策略。在传统的单路径Flooding中,数据包会被沿着单一路径传递,可能导致重复发送和网络拥塞。而MFlood通过使用多路径,将数据包分散到不同的路径上,提高了数据包的生存率和网络...

    ns2.34上leach协议的完美移植笔记(包括leach、mflood源代码)

    本篇将深入探讨如何在NS2.34模拟器上完美移植LEACH协议,并介绍MFLOOD泛洪广播协议的源代码。 首先,LEACH协议的核心理念在于创建一种动态的簇结构,每个簇由一个簇头节点和若干个普通节点组成。簇头负责收集数据并...

    ns-allinone-2.31

    总的来说,【ns-allinone-2.31】为网络研究人员和学习者提供了一个方便的环境,用于在Windows系统下开发、测试和分析网络协议,是网络仿真领域的重要工具。通过VS2003的集成开发支持,用户可以更高效地调试代码和...

    multihop-string-cbr.rar_CBR _ns2.31

    标题中的“multihop-string-cbr.rar_CBR _ns2.31”表明这是一个关于多跳网络(multihop)中连续比特率(CBR)数据传输的研究或模拟项目,使用了NS-2.31版本的网络仿真器。NS-2是一个广泛用于计算机网络、无线网络...

    NS2.28网络模拟器

    NS2.28网络模拟器是一款广泛应用于计算机网络教学与研究的重要工具,它以其强大的功能和灵活性,使得网络研究人员能够模拟各种复杂的网络环境和协议。NS全称为Network Simulator,是网络仿真领域的基石之一,尤其在...

    安装的步骤ns-2.28

    在本文中,我们将详细探讨如何在Windows 9x/2000/XP环境下安装ns-2.28模拟软件。ns-2是一款广泛用于网络模拟的开源工具,主要用于研究和教学网络协议和系统。首先,我们需要安装一个名为Cygwin的软件,它是一个提供...

    NS-3支持的路由协议及相关接口

    在这篇文章中,我们将对 NS-3 支持的几个路由协议进行总结,介绍每种协议的使用环境及特点,并总结相关的 API。 一、AODV 路由协议 AODV(Ad hoc On-Demand Distance Vector)是一种适用于无线自组网的路由协议。...

    cygwin本地安装包,选择了ns2.31需要的所有组件,win7和xp测试成功。

    cygwin本地安装包,选择了ns2.31需要的所有组件,win7和xp测试成功。

    cygwin本地安装包PART2,选择了ns2.31需要的所有组件,win7和xp测试成功。

    cygwin本地安装包PART2,选择了ns2.31需要的所有组件,win7和xp测试成功。

    cygwin本地安装包PART1,选择了ns2.31需要的所有组件,win7和xp测试成功。

    cygwin本地安装包PART1,选择了ns2.31需要的所有组件,win7和xp测试成功。

    如何在ns中添加协议

    首先,在你的NS-2.35安装目录下创建一个名为mflood的新目录,并将mflood的相关源文件(mflood.h, mflood.cc, mflood_packet.h, mflood-seqtable.h, mflood-seqtable.cc)放入此目录。 2. 修改packet.h: 打开ns-...

    Architecture and flow charts of 802.11 MAC in Ns-2.31

    《802.11 MAC架构与流程图在Ns-2.31中的解析》 802.11 MAC(Medium Access Control)层是无线局域网(WLAN)标准的一部分,它负责管理网络设备如何共享无线信道。Ns-2.31是一个广泛使用的网络模拟器,用于研究和...

    ns2下洪泛式协议源码

    【ns2下洪泛式协议源码】是一个关于网络模拟器ns2中实现洪泛式路由协议MFLOOD的专题。洪泛式路由是一种基础的分布式路由算法,它在网络中的每个节点都广播信息,直到信息到达所有目标节点或者达到某个限制条件为止。...

Global site tag (gtag.js) - Google Analytics