OMNET++如何定制一个无线主机,用RandomWP Mobility扩展AODVRouter

OMNET++ How to customize a wireless host that extends AODVRouter with RandomWP Mobility

我目前正在做一个 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。接下来,我创建了一个扩展AODVRouter的名为snode.NED的复合模块,代码如下:

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"
    

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

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

时无需提供移动模块的全名
**.hostBad.mobilityType = "RandomWPMobility"

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