INET 中的无线 NeSTiNg 主机 wlan[0].radio: "Reception started: not attempting"
Wireless NeSTiNg hosts in INET wlan[0].radio: "Reception started: not attempting"
我模拟了运行以下元素:
- 2 个开关(直接连接)
- 2 个接入点(每个交换机连接一个)
- 2 个无线自定义主机(每个接入点一个无线连接)
干扰已被禁用。标量无线电介质。 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 没有通过争用阶段,但这仍然是进步
我模拟了运行以下元素:
- 2 个开关(直接连接)
- 2 个接入点(每个交换机连接一个)
- 2 个无线自定义主机(每个接入点一个无线连接)
干扰已被禁用。标量无线电介质。 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 没有通过争用阶段,但这仍然是进步