Omnet++ INET wlan[0]中的无线嵌套主机。无线电:“0”;已开始接收:未尝试“;
我使用以下元素运行了一个模拟:Omnet++ INET wlan[0]中的无线嵌套主机。无线电:“0”;已开始接收:未尝试“;,omnet++,inet,Omnet++,Inet,我使用以下元素运行了一个模拟: 2个开关(直接连接) 2个接入点(每个交换机连接一个) 2台无线定制主机(每个接入点无线连接一台) 干扰已被禁用。标量无线电媒介。Ieee80211无线接口。我使用了简单的STA管理,它负责关联等。我已经确认一切都在运行,我的代码中没有任何错误(我已经完成了所有的工作)。数据包通过工作站无线电发送出去。但是由于某些原因,接入点和第二个无线主机上的无线电台没有接收数据包。当我的模拟正在运行时,接收无线设备上显示的控制台中的这条消息是错误的唯一提示: “开始接收:
- 2个开关(直接连接)
- 2个接入点(每个交换机连接一个)
- 2台无线定制主机(每个接入点无线连接一台)
“开始接收:未尝试” 在OMNET++5.4.1上工作,运行INET v4.1.0(加上嵌套框架)。
有人知道如何让我的收音机接收信号吗 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];
}
一位INET开发人员向我指出,我开始研究影响是否尝试接收信号的一些因素。我追查到了电源。起初我认为这是传输能力,但另一组嵌套开发人员的眼睛帮助我指出了这一行代码:
“计算是否可以监听:最大功率=0.01 pW,能量检测=3.16228 pW->监听不可能”
他提到,只有当maxPower>=energyDetection(inet/physicalayer/base/packetlevel/FlatReceiverBase.cc第60行)时,接收才起作用
因此,我开始改变我的无线接收主机中的接收器能量检测(默认值-85dBm),使其小于我的无线媒体的背景噪声功率(默认值-110dBm)。然后我用另一种方法,将我的功率增加到-40dBm,同时使能量检测常数保持在-85dBm。两者都导致了这样的结果:接收主机发生了更改,不再发出关于“接收已开始:未尝试”的警告!后来我确实遇到了一个问题,我的访问点没有经过争用阶段,但这仍然是一个进步
[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