INET 中的无线 NeSTiNg 主机 wlan[0].radio: "Reception started: not attempting"

Wireless NeSTiNg hosts in INET wlan[0].radio: "Reception started: not attempting"

我模拟了运行以下元素:

干扰已被禁用。标量无线电介质。 IEEE80211无线接口。我使用了简单的 STA 管理来处理关联等。我已经确认一切都是 运行 并且我的代码中没有任何错误(我已经完成了所有这些错误)。数据包从工作站无线电传输出去。但由于某种原因,接入点和第二个无线主机上的无线电收不到数据包。唯一提示有问题的是接收无线设备上显示的控制台中的这条消息,因为我的模拟是 运行:
“接收开始:未尝试”

正在使用 OMNET++ 5.4.1,运行 INET v4.1.0(加上 NeSTiNg 框架)。
有谁知道如何接收我的收音机?

NED 文件:

package nesting.simulations.examples;

import ned.DatarateChannel;
import nesting.node.ethernet.VlanEtherHostQ;
import nesting.node.ethernet.VlanEtherHostSched;
import nesting.node.ethernet.VlanEtherSwitchPreemptable;
import inet.visualizer.contract.IIntegratedVisualizer;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.node.wireless.AccessPoint;
import inet.physicallayer.contract.packetlevel.IRadioMedium;

network Case1Scenario
{
    parameters:
        @display("bgb=650,500;bgg=100,1,grey95");
        @figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue);
        
        @figure[rcvdPkText](type=indicatorText; pos=380,20; anchor=w; font=,18; textFormat="packets received: %g"; initialValue=0);
        @statistic[packetReceived](source=backupServer.trafGenApp[0].packetReceived; record=figure(count); targetFigure=rcvdPkText);
        
    types:
        channel C extends DatarateChannel
        {
            delay = 0.1us;
            datarate = 1Gbps;
        }
    submodules:
        visualizer: <default("IntegratedCanvasVisualizer")> like IIntegratedVisualizer if hasVisualizer() {
            parameters:
                @display("p=100,300;is=s");
        }
        configurator: Ipv4NetworkConfigurator {
            parameters:
                @display("p=100,100;is=s");
                config = xml("<config><interface hosts='*' address='145.236.x.x' netmask='255.255.0.0'/></config>");
        }
        switchA: VlanEtherSwitchPreemptable {
            parameters:
                @display("p=188,127");
            gates:
                ethg[4];
        }
        switchB: VlanEtherSwitchPreemptable {
            parameters:
                @display("p=327,127");
            gates:
                ethg[3];
        }
        accessPoint1: AccessPoint {
            parameters:
                @display("p=115,127");
        }
        accessPoint2: AccessPoint {
            parameters:
                @display("p=400,127");
        }
        radioMedium: <default("Ieee80211ScalarRadioMedium")> like IRadioMedium {
            @display("p=446,100");
        }
        workstation1: VlanEtherHostQ {
            @display("p=79,62");
        }
        backupServer: VlanEtherHostQ {
            @display("p=446,54");
        }
        
    connections allowunconnected:
        switchA.ethg[3] <--> C <--> switchB.ethg[2];
        accessPoint1.ethg++ <--> C <--> switchA.ethg[1];
        accessPoint2.ethg++ <--> C <--> switchB.ethg[1];
}

INI 文件:

[General]
network = Case1Scenario

record-eventlog = false 
debug-on-errors = true
result-dir = results_case1
sim-time-limit = 1s

# debug
**.displayAddresses = true
**.verbose = true

# MAC Addresses
**.workstation1.wlan[*].address = "00-00-00-00-00-02"
**.backupServer.wlan[*].address = "00-00-00-00-00-05"

# access point configuration
**.accessPoint1.wlan[0].address = "00-00-00-00-00-06"
**.accessPoint2.wlan[0].address = "00-00-00-00-00-07"

# workstation 1 is associated with AP1
**.workstation*.wlan[0].mgmt.accessPointAddress = "00-00-00-00-00-06"

# robotic arm and backup server are associated with AP2
**.backupServer.wlan[0].mgmt.accessPointAddress = "00-00-00-00-00-07"

# use simplified ieee802.11 management (no association, authentication etc.)
**.workstation*.wlan[*].mgmt.typename = "Ieee80211MgmtStaSimplified"
**.backupServer.wlan[*].mgmt.typename = "Ieee80211MgmtStaSimplified"
**.accessPoint*.wlan[*].mgmt.typename = "Ieee80211MgmtApSimplified"

# Switches
**.switch*.processingDelay.delay = 5us
**.filteringDatabase.database = xmldoc("xml/TestScenarioRouting.xml", "/filteringDatabases/")

**.switchA.eth[3].queue.gateController.initialSchedule = xmldoc("xml/TestScenarioSchedule_AllOpen.xml", "/schedules/switch[@name='switchA']/port[@id='3']/schedule")
**.switchB.eth[1].queue.gateController.initialSchedule = xmldoc("xml/TestScenarioSchedule_AllOpen.xml", "/schedules/switch[@name='switchB']/port[@id='1']/schedule")
**.switch*.eth[*].queue.gateController.enableHoldAndRelease = false
**.switch*.eth[*].queue.numberOfQueues = 8
**.switch*.eth[*].queue.tsAlgorithms[0].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[1].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[2].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[3].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[4].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[5].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[6].typename = "StrictPriority"
**.switch*.eth[*].queue.tsAlgorithms[7].typename = "StrictPriority"
**.switch*.eth[*].queue.queues[0].expressQueue = true
**.switch*.eth[*].queue.queues[1].expressQueue = true
**.switch*.eth[*].queue.queues[2].expressQueue = true
**.switch*.eth[*].queue.queues[3].expressQueue = true
**.switch*.eth[*].queue.queues[4].expressQueue = true
**.switch*.eth[*].queue.queues[5].expressQueue = true
**.switch*.eth[*].queue.queues[6].expressQueue = true
**.switch*.eth[*].queue.queues[7].expressQueue = true

**.queues[*].bufferCapacity = 363360b

**.switchA.eth[3].mac.enablePreemptingFrames = false

# Workstations
**.workstation*.trafGenApp.destAddress = "00-00-00-00-00-05"
**.workstation*.trafGenApp.packetLength = 1500Byte-4Byte # MTU-Size - VLAN-Tag-Size
**.workstation*.trafGenApp.sendInterval = 12us
**.workstation*.trafGenApp.vlanTagEnabled = true
**.workstation1.trafGenApp.pcp = 6

# Backup Server
**.backupServer.trafGenApp.numPacketsPerBurst = 0
**.backupServer.trafGenApp.sendInterval = 1ms
**.backupServer.trafGenApp.packetLength = 100B

**.bandName = "5 GHz (40 MHz)"
**.opMode = "ac"
**.wlan[*].radio.antenna.numAntennas = 8 #maximum number of streams for 802.11ac is 8
**.bitrate = 1Gbps

# Modelling interference and communication
**.radioMedium.analogModel.ignorePartialInterference = true

**.visualizer.mediumVisualizer.packetFilter = "" # to handle an "implicit chunk serialization" error

一位 INET 开发人员向我指出,我开始研究影响是否尝试接收信号的一些因素。我将其追溯到权力。起初我以为是传输功率,但另一位 NeSTiNg 开发人员的眼睛帮助指出了这行代码,这对我有帮助:

"Computing whether listening is possible: maximum power = 0.01 pW, energy detection = 3.16228 pW -> listening is impossible"

他提到接收似乎只有在 maxPower >= energyDetection 时才有效(inet/physicallayer/base/packetlevel/FlatReceiverBase.cc 60 行)

因此,我首先将无线接收主机中的接收器能量检测(默认 -85dBm)更改为小于 radioMedium 的背景噪声功率(默认 -110dBm)。然后我以相反的方式进行,通过将我的功率增加到例如 -40dBm 的值,同时将 energyDetection 保持在 -85dBm 不变。两者都导致了这样的结果:接收主机发生了变化,不再发出关于“接收开始:未尝试”的警告!后来我 运行 遇到了一个问题,我的 accessPoint 没有通过争用阶段,但这仍然是进步