INET wlan [0] .radio中的无线NeSTiNg主机:“接收开始:未尝试”

问题描述

我有一个包含以下元素的模拟:

  • 2个开关(直接连接)
  • 2个接入点(每个交换机连接一个
  • 2个无线自定义主机(每个接入点无线连接一个

干扰已被禁用。标量无线电媒介。 eeee80211无线接口。我使用了简单的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的backgroundNoise功率(默认为-110dBm)。然后我反过来做,通过将功率增加到-40dBm,同时使energyDetection保持恒定为-85dBm。两者均导致此结果:接收主机发生更改,并且不再发出了有关“接收已开始:未尝试”的警告!后来我确实遇到了一个问题,其中我的accessPoint不能继续经过争用阶段,但这仍然是进步?