Omnet++ OMNET++;如何定制一个扩展AODVRouter的无线主机,使其具有随机化的移动性

Omnet++ OMNET++;如何定制一个扩展AODVRouter的无线主机,使其具有随机化的移动性,omnet++,inet,Omnet++,Inet,我目前正在进行一个MANET项目,希望创建一个定制的无线主机来模拟一个自私的节点,该节点会立即丢弃它在MANET中接收到的消息。 我创建了一个名为SelfishNode.NED的简单模块,代码如下: simple SelfishNode { parameters: @display("i=block/buffer"); gates: input radioIn[numRadios] @directIn; inout pppg[] @labels(PPPFrame-conn);

我目前正在进行一个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);
}
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");
        }
    }
*.numBadNodes = ${HOST=5}
*.hostBad.mobilityType = "inet.mobility.single.RandomWPMobility"
二,。然后,我用下面的代码创建了它的C++文件:

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

void SelfishNode::initialize()
{

}

void SelfishNode::handleMessage(cMessage *msg)
{
delete msg;
}
  • 接下来,我创建了一个名为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");
        }
    }
    
  • 最后,我在omnetpp.ini中配置了移动性类型和坏节点数,如下所示:

    simple SelfishNode {
    parameters:
    @display("i=block/buffer");
    
    gates:
        input radioIn[numRadios] @directIn;
        inout pppg[] @labels(PPPFrame-conn);
        inout ethg[] @labels(EtherFrame-conn);
    }
    
    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");
            }
        }
    
    *.numBadNodes = ${HOST=5}
    *.hostBad.mobilityType = "inet.mobility.single.RandomWPMobility"
    
  • 这是正确的吗?
    而且当我运行模拟时,节点根本没有移动。我学习了一整天,但还是没能解决它。

    几乎正确。。。如果您在INET命名空间中操作,则在设置
    mobilityType

    **.hostBad.mobilityType = "RandomWPMobility"
    

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

    谢谢MichaelKirsche。现在我想继承AODVRouting.cc中的所有函数,但是在C++文件中覆盖了AdvVRe::sDaAdOvVPoCuTeTh()函数。我该怎么做?通过C++代码中的以下代码,我得到了“HoalMeMeSeaGE”的定义:空AODVRADION::SoDaODvPATH(AODVCONDROPATABOR**包,CONST L3Advest-DADADR,未签名的int TimeLeION,双延迟){EV更好地发布新的问题,并在另一个问题下比评论正确地格式化…