汽车遵循两个不同的应用层
Cars following two different application layers
我正在构建一个攻击场景,其中车辆攻击者跟随另一辆车正常。 攻击者开始发送带有错误位置数据的BSM,让正常停在它正在行驶的道路上。
我已经为 attacker 实现了 AttackerCarApplLayer
以使用专门为其定义的函数,并且 NormalCarApplLayer
为 normal .
我在 omnetpp.ini 中定义了 TraCIScenarioManager 设置如下:
##########################################################
# TraCIScenarioManager parameters #
##########################################################
*.manager.updateInterval = 0.1s
*.manager.host = "localhost"
*.manager.port = 9999
*.manager.moduleType = "org.car2x.veins.nodes.AttackerCar"
*.manager.moduleName = "attacker"
*.manager.moduleType = "org.car2x.veins.nodes.Car"
*.manager.moduleName = "car"
*.manager.moduleDisplayString = ""
*.manager.autoShutdown = true
*.manager.margin = 25
#launch config. tells Veins which SUMO configuration to run
*.manager.configFile = "newyork.sumo.cfg"
#launch command. change sumo-gui with sumo depending on what you want to launch
*.manager.commandLine = "sumo-gui --remote-port $port --seed $seed --configuration-file $configFile"
和NormalCarWaveApplLayer
设置为:
##########################################################
# WaveAppLayer #
##########################################################
*.car[*].applType = "NormalCarApplLayer"
*.car[*].appl.debug = false
*.car[*].appl.headerLength = 256 bit
*.car[*].appl.sendBeacons = true
*.car[*].appl.dataOnSch = false
*.car[*].appl.beaconInterval = 1s
*.car[*].appl.beaconPriority = 3
*.car[*].appl.dataPriority = 2
*.car[*].appl.maxOffset = 0.005s
*.car[*].appl.avoidBeaconSynchronization = true
和AttackerCarWaveApplLayer
设置为:
##########################################################
# Attacker WaveAppLayer #
##########################################################
*.attacker[*].applType = "AttackerCarApplLayer"
*.attacker[*].appl.debug = false
*.attacker[*].appl.headerLength = 256 bit
*.attacker[*].appl.sendBeacons = true
*.attacker[*].appl.dataOnSch = false
*.attacker[*].appl.beaconInterval = 1s
*.attacker[*].appl.beaconPriority = 3
*.attacker[*].appl.dataPriority = 2
*.attacker[*].appl.maxOffset = 0.005s
*.attacker[*].appl.avoidBeaconSynchronization = true
当模拟启动时,normal 和 attacker 只实例化 AttackerCarApplLayer
。这是实现我的目标的正确方法吗?如果没有,请提出您的想法。
您当前在模拟的 .ini
文件中两次指定 moduleType
和 moduleName
。 OMNeT++ 的默认行为是使用它为参数找到的第一个值。这不太可能是您想要的。如果您可以为您的攻击者和普通车辆使用不同的 SUMO 车辆类型,那么您可以通过以下方式解决您的问题:
Veins 4.5 允许您根据 SUMO 车辆类型为 moduleType
、moduleName
和 moduleDisplayString
使用不同的值。只需为您的攻击者设置一种 SUMO 车辆类型,例如 ATTACK
,然后参考 https://github.com/sommer/veins/blob/veins-4.5/src/veins/modules/mobility/traci/TraCIScenarioManager.cc#L63 的语法在您的 .ini
文件中设置每个类型的配置。例如,*.manager.moduleName = "ATTACK=attacker *=car"
我正在构建一个攻击场景,其中车辆攻击者跟随另一辆车正常。 攻击者开始发送带有错误位置数据的BSM,让正常停在它正在行驶的道路上。
我已经为 attacker 实现了 AttackerCarApplLayer
以使用专门为其定义的函数,并且 NormalCarApplLayer
为 normal .
我在 omnetpp.ini 中定义了 TraCIScenarioManager 设置如下:
##########################################################
# TraCIScenarioManager parameters #
##########################################################
*.manager.updateInterval = 0.1s
*.manager.host = "localhost"
*.manager.port = 9999
*.manager.moduleType = "org.car2x.veins.nodes.AttackerCar"
*.manager.moduleName = "attacker"
*.manager.moduleType = "org.car2x.veins.nodes.Car"
*.manager.moduleName = "car"
*.manager.moduleDisplayString = ""
*.manager.autoShutdown = true
*.manager.margin = 25
#launch config. tells Veins which SUMO configuration to run
*.manager.configFile = "newyork.sumo.cfg"
#launch command. change sumo-gui with sumo depending on what you want to launch
*.manager.commandLine = "sumo-gui --remote-port $port --seed $seed --configuration-file $configFile"
和NormalCarWaveApplLayer
设置为:
##########################################################
# WaveAppLayer #
##########################################################
*.car[*].applType = "NormalCarApplLayer"
*.car[*].appl.debug = false
*.car[*].appl.headerLength = 256 bit
*.car[*].appl.sendBeacons = true
*.car[*].appl.dataOnSch = false
*.car[*].appl.beaconInterval = 1s
*.car[*].appl.beaconPriority = 3
*.car[*].appl.dataPriority = 2
*.car[*].appl.maxOffset = 0.005s
*.car[*].appl.avoidBeaconSynchronization = true
和AttackerCarWaveApplLayer
设置为:
##########################################################
# Attacker WaveAppLayer #
##########################################################
*.attacker[*].applType = "AttackerCarApplLayer"
*.attacker[*].appl.debug = false
*.attacker[*].appl.headerLength = 256 bit
*.attacker[*].appl.sendBeacons = true
*.attacker[*].appl.dataOnSch = false
*.attacker[*].appl.beaconInterval = 1s
*.attacker[*].appl.beaconPriority = 3
*.attacker[*].appl.dataPriority = 2
*.attacker[*].appl.maxOffset = 0.005s
*.attacker[*].appl.avoidBeaconSynchronization = true
当模拟启动时,normal 和 attacker 只实例化 AttackerCarApplLayer
。这是实现我的目标的正确方法吗?如果没有,请提出您的想法。
您当前在模拟的 .ini
文件中两次指定 moduleType
和 moduleName
。 OMNeT++ 的默认行为是使用它为参数找到的第一个值。这不太可能是您想要的。如果您可以为您的攻击者和普通车辆使用不同的 SUMO 车辆类型,那么您可以通过以下方式解决您的问题:
Veins 4.5 允许您根据 SUMO 车辆类型为 moduleType
、moduleName
和 moduleDisplayString
使用不同的值。只需为您的攻击者设置一种 SUMO 车辆类型,例如 ATTACK
,然后参考 https://github.com/sommer/veins/blob/veins-4.5/src/veins/modules/mobility/traci/TraCIScenarioManager.cc#L63 的语法在您的 .ini
文件中设置每个类型的配置。例如,*.manager.moduleName = "ATTACK=attacker *=car"