【问题标题】:OMNET++ How to customize a wireless host that extends AODVRouter with RandomWP MobilityOMNET++ 如何定制一个无线主机,用 RandomWP Mobility 扩展 AODVRouter
【发布时间】:2017-07-12 16:05:21
【问题描述】:

我目前正在从事一个 MANET 项目,并希望创建一个定制的无线主机来模仿一个自私的节点,该节点会立即丢弃它在 MANET 中接收到的消息。 我创建了一个名为 SelfishNode.NED 的简单模块,代码如下:

simple SelfishNode {
parameters:
@display("i=block/buffer");

gates:
    input radioIn[numRadios] @directIn;
    inout pppg[] @labels(PPPFrame-conn);
    inout ethg[] @labels(EtherFrame-conn);
}

2。然后,我用下面的代码创建了它的 C++ 文件:

#include "SelfishNode.h"
#include <string.h>
#include <omnetpp.h>

void SelfishNode::initialize()
{

}

void SelfishNode::handleMessage(cMessage *msg)
{
delete msg;
}

3。接下来,我创建了一个名为 snode.NED 的复合模块,它扩展了 AODVRouter,代码如下:

import inet.node.aodv.AODVRouter;

    module snode extends AODVRouter
    {
    parameters:
    @networkNode;
    @display("i=device/wifilaptop");
    @labels(wireless-node);

    submodules:
        bad: SelfishNode {
        @display("p=273,350");
        }
    }
  1. 接下来,我创建了一个名为 ManetA.NED 的网络模块:

    import inet.common.figures.DelegateSignalConfigurator;
    import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator;
    import inet.physicallayer.ieee80211.packetlevel.Ieee80211ScalarRadioMedium;
    import inet.visualizer.integrated.IntegratedCanvasVisualizer;
    import inet.environment.common.PhysicalEnvironment;
    
    network ManetA
    {
    parameters:
    int numHosts;
    int numBadNodes;
    
    submodules:
    visualizer: IntegratedCanvasVisualizer {
        @display("p=59,103");
    }
    configurator: IPv4NetworkConfigurator {
        @display("p=59,164");
    }
    radioMedium: Ieee80211ScalarRadioMedium {
        @display("p=60,50,i=misc/sun");
    }
    figureHelper: DelegateSignalConfigurator {
        @display("p=61,236");
    }
    
    hostBad[numBadNodes]: snode {
        @display("i=device/palm");
    }
    
    physicalEnvironment: PhysicalEnvironment {
        @display("p=59,306");
        }
    }
    
  2. 最后,我在 omnetpp.ini 中配置了移动类型和坏节点的数量如下:

    *.numBadNodes = ${HOST=5}
    *.hostBad.mobilityType = "inet.mobility.single.RandomWPMobility"
    

这是正确的吗? 而且当我运行模拟时,节点根本没有移动。我研究了一整天,但无法解决。

【问题讨论】:

    标签: omnet++ inet


    【解决方案1】:

    几乎正确...如果您在INET命名空间中操作,则在设置mobilityType时无需提供移动模块的全名

    **.hostBad.mobilityType = "RandomWPMobility"
    

    查看/inet/examples/mobility/omnetpp.ini 中的示例配置以获取更多详细信息。

    【讨论】:

    • 感谢 MichaelKirsche。现在我想继承 AODVRouting.cc 中的所有函数,但在 C++ 文件中用我自己的代码覆盖 AODVRouting::sendAODVPacket() 函数。我怎样才能做到这一点?我在我的 c++ 文件中使用以下代码收到“重新定义 handleMessage”错误:void AODVRouting::sendAODVPacket(AODVControlPacket *packet, const L3Address& destAddr, unsigned int timeToLive, double delay) { EV getName()
    • 最好发布一个新问题并正确格式化它而不是在另一个问题下发表评论......
    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 2016-07-06
    • 2021-11-23
    • 1970-01-01
    相关资源
    最近更新 更多