Проблемы с TCP в VACaMobil

У меня проблемы с TCP в VACaMobil. Я использую два модуля TCP, созданные в Inet: TCPBasicClientApp и TCPEchoApp. Первый работает как клиент, а первый работает как сервер.

Количество автомобилей (название модуля «coche») в симуляции равно 100, и есть пять одновременных передач:

CLIENT    SERVER
Car 0 --> Car 99
Car 1 --> Car 98
Car 2 --> Car 97
Car 3 --> Car 96
Car 4 --> Car 95

Я также использую три протокола маршрутизации: AODV, DYMO и OLSR. Однако, независимо от конфигурации, которую я запускаю, при моделировании возникают такие ошибки:

Error in module (TCPBasicClientApp) Highway.coche[*].tcpApp[0] (id = 35) at event #49519, t = 166: IPvXAddressResolver: module 'coche[98]' not found.

В этом случае, используя AODV, автомобиль 1 не может связаться с автомобилем 98. Я узнал, что VACaMobil через некоторое время удаляет некоторые автомобили, в то время как создает другие за пределами 100, такие как «coche[110]», «coche[115]. ]", и т.д.

Я не понимаю, почему он продолжает удалять и создавать узлы; Я думал, что VACaMobil действительно генерирует постоянное количество транспортных средств.

Как я могу это исправить? Любая помощь приветствуется.

Вот omnetpp.ini:

[General]

network = Highway

debug-on-errors = false

cmdenv-express-mode = true
cmdenv-autoflush = true
cmdenv-status-frequency = 10000000s
#repeat = 10
tkenv-plugin-path = ../../../etc/plugins
tkenv-image-path = bitmaps

check-signals = true

**.manager.**.scalar-recording = true
**.manager.**.vector-recording = true
**.manetrouting.**.scalar-recording = true
**.movStats.**.scalar-recording = true
**.movStats.**.vector-recording = true
**.mac.**.scalar-recording = true
**.mac.**.vector-recording = true
**.scalar-recording = true
**.vector-recording = true

#ChannelControl
*.channelControl.carrierFrequency = 2.4GHz
*.channelControl.pMax = 2mW
*.channelControl.sat = -110dBm
*.channelControl.alpha = 2
*.channelControl.numChannels = 1

# TraCIScenarioManagerLaunchd
*.manager.updateInterval = 1s
*.manager.host = "localhost"
*.manager.port = 9999
*.manager.moduleType = "rcdp9.TAdhocHost"
*.manager.moduleName = "coche"
*.manager.moduleDisplayString = ""
*.manager.autoShutdown = true
*.manager.margin = 25
*.manager.warmUpSeconds = 0
*.manager.launchConfig = xmldoc("VACaMobil/Milan/downtown.launch.xml")
*.manager.getStatistics = true
*.manager.statFiles = "${resultdir}/${configname}-${runnumber}-"

# nic settings
**.wlan[*].bitrate = 24Mbps
**.wlan[*].opMode = "g"
**.wlan[*].mgmt.frameCapacity = 10
**.wlan[*].mgmtType = "Ieee80211MgmtAdhoc"
**.wlan[*].mac.basicBitrate = 24Mbps
**.wlan[*].mac.controlBitrate = 24Mbps
**.wlan[*].mac.address = "auto"
**.wlan[*].mac.maxQueueSize = 14
**.wlan[*].mac.rtsThresholdBytes = 3000B
**.wlan[*].mac.retryLimit = 7
**.wlan[*].mac.cwMinData = 7
**.wlan[*].radio.transmitterPower = 2mW
**.wlan[*].radio.thermalNoise = -110dBm
**.wlan[*].radio.sensitivity = -85dBm
**.wlan[*].radio.pathLossAlpha = 2
**.wlan[*].radio.snirThreshold = 4dB

**.channelNumber = 0

**.coche.networkLayer.configurator.networkConfiguratorModule = "configurator"

# manet routing
**.routingProtocol = ${"AODVUU", "DYMO", "OLSR"}

**.tcpAlgorithmClass = "TCPNewReno"

**.coche[0..4].numTcpApps = 1
**.coche[0..4].tcpApp[*].typename = "TCPBasicClientApp"
**.coche[0..4].tcpApp[*].localPort = -1
**.coche[0..4].tcpApp[*].connectPort = 1000
**.coche[0..4].tcpApp[*].dataTransferMode = "bytecount"
**.coche[0..4].tcpApp[*].startTime = 10s
**.coche[0..4].tcpApp[*].thinkTime = 1s
**.coche[0..4].tcpApp[*].idleInterval = 3s
**.coche[0..4].tcpApp[*].requestLength = 5000000B

**.coche[5..94].numTcpApps = 0

**.coche[95..99].numTcpApps = 1
**.coche[95..99].tcpApp[*].typename = "TCPEchoApp"
**.coche[95..99].tcpApp[*].localPort = 1000
**.coche[95..99].tcpApp[*].dataTransferMode = "bytecount"

**.coche[0].tcpApp[*].connectAddress = "coche[99]"
**.coche[1].tcpApp[*].connectAddress = "coche[98]"
**.coche[2].tcpApp[*].connectAddress = "coche[97]"
**.coche[3].tcpApp[*].connectAddress = "coche[96]"
**.coche[4].tcpApp[*].connectAddress = "coche[95]"

**.meanNumberOfCars = 100
**.autoShutdown = false

Вот TAdhocHost.ned:

package rcdp9;

import inet.networklayer.IManetRouting;
import inet.networklayer.autorouting.ipv4.HostAutoConfigurator2;
import inet.nodes.inet.AdhocHost;

module TAdhocHost extends AdhocHost
{
    parameters:
        @display("i=device/cellphone");
        mobilityType = default("TraCIMobility");
        IPForward = true;
    submodules:
        ac_wlan: HostAutoConfigurator2 {
          @display("p=127,240");
        }
    connections:
}

Вот Highway.ned:

package rcdp9;

import inet.world.VACaMobil.VACaMobil;
import inet.networklayer.autorouting.ipv4.IPv4NetworkConfigurator;
import inet.networklayer.autorouting.ipv4.HostAutoConfigurator;
import inet.nodes.inet.AdhocHost;
import inet.world.radio.ChannelControl;
import inet.world.traci.TraCIScenarioManagerLaunchd;

network Highway
{
    submodules:
        configurator: IPv4NetworkConfigurator {
            @display("p=396,221");
        }
        channelControl: ChannelControl {
            @display("p=396,310");
        }
        manager: VACaMobil {
            @display("p=322,405");
        }
    connections allowunconnected:
}

person J. C. M. H.    schedule 22.12.2015    source источник


Ответы (1)


Насколько я понимаю, VACaMobil построен на Veins.

Veins создает новый сетевой узел для каждого транспортного средства, которое начинает движение. Когда соответствующее транспортное средство прекращает движение (прибыв к месту назначения), Вен удаляет сетевой узел. Он никогда не использует повторно один и тот же индекс узла.

Таким образом, в вашем примере первое транспортное средство, которое начнет движение, будет coche[0]. Следующим транспортным средством, которое начнет движение, будет coche[1] — независимо от того, прибыл ли уже coche[0] или все еще находится в движении.

person Christoph Sommer    schedule 12.01.2016