You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi im trying to use cars in the multiMecHost simulations from Simu5G. Im trying to make the cars work as an UE, so ive changed some things in the .ini and net to make the cars apeers in the simulation using the "MultiMec" config.
The problem happens when the car try to start the communication with the MEC host, i get the error:
check_and_cast(): Cannot cast (inet::Indication*)ERROR to type 'inet::Packet *' -- in module (UERequestApp)
MultiMecHost_delay.car[0].app[1] (id=668), at t=10.1s, event #74815
This is my .ini with changes:
[General]
image-path=../../../images
output-scalar-file-append = false
**.routingRecorder.enabled = false
network = simu5g.simulations.NR.cars.Highway
cmdenv-express-mode = true
cmdenv-autoflush = true
**.sctp.**.scalar-recording = false
**.sctp.**.vector-recording = false
**.routingRecorder.enabled = false
*.playgroundSizeX = 20000m
*.playgroundSizeY = 20000m
*.playgroundSizeZ = 50m
##########################################################
# VeinsManager parameters #
##########################################################
*.veinsManager.host = "localhost" # if traci-launchd runs on localhost
#*.veinsManager.host = "sumo" # traci-launchd on different host/container
*.veinsManager.moduleType = "simu5g.nodes.cars.NRCar"
*.veinsManager.moduleName = "car"
*.veinsManager.launchConfig = xmldoc("heterogeneous.launchd.xml")
*.veinsManager.updateInterval = 0.1s
##########################################################
# Mobility #
##########################################################
*.car[*].mobility.typename = "VeinsInetMobility"
############### Statistics ##################
output-scalar-file = ${resultdir}/${configname}/${configname}-${iterationvars}-${repetition}.sca
output-vector-file = ${resultdir}/${configname}/${configname}-${iterationvars}-${repetition}.vec
seed-set = ${repetition}
num-rngs = 3
repeat = 31
**.sctp.**.scalar-recording = false # remove annoying statistics from SCTP
**.sctp.**.vector-recording = false # remove annoying statistics from SCTP
**.mecHost*.**.vector-recording = true
**.ue[*].app[1].**.vector-recording = true
**.vector-recording = false
warmup-period = 10s
############### SCTP configuration ##################
**.sctp.nagleEnabled = false # if true, transmission of small packets will be delayed on the X2
**.sctp.enableHeartbeats = false
############### General PHY parameters ##############
**.downlink_interference = true
**.uplink_interference = true
**.ueTxPower = 26
**.eNodeBTxPower = 46
**.targetBler = 0.01
**.blerShift = 5
**.fbPeriod = 40 # reports CQI every 40ms
# Number of Resource Blocks
**.numBands = 25
# Transmission Power
**.ueTxPower = 26
**.eNodeBTxPower = 46
# Enable dynamic association of UEs (based on best SINR)
*.car[*].cellularNic.nrPhy.dynamicCellAssociation = true
*.car[*].masterId = 0 # ignored if dynamic association is disabled
*.car[*].macCellId = 0 # ignored if dynamic association is disabled
*.car[*].nrMasterId = 1 # ignored if dynamic association is disabled
*.car[*].nrMacCellId = 1 # ignored if dynamic association is disabled
# Enable handover
*.car[*].cellularNic.nrPhy.enableHandover = true
*.gNodeB*.cellularNic.phy.enableHandover = true
*.gNodeB*.cellularNic.phy.handoverLatency = 50ms
*.gNodeB*.cellInfo.broadcastMessageInterval = 1s # eNB will sends broadcast triggers every second
############### IPv4 configurator config #################
*.configurator.config = xmldoc("./demo.xml")
#------------------------------------#
# Config MultiMec
#
# General configuration for the for a multicell, multi-MEC system
#
[Config MultiMec]
sim-time-limit=300s
network = simu5g.simulations.NR.mec.requestResponseApp.MultiMecHost_delay
############# Floorplan parameters ################
**.mobility.constraintAreaMaxX = 1000m
**.mobility.constraintAreaMaxY = 750m
**.mobility.constraintAreaMinX = 0m
**.mobility.constraintAreaMinY = 250m
**.mobility.constraintAreaMinZ = 0m
**.mobility.constraintAreaMaxZ = 0m
**.mobility.initFromDisplayString = false
############### CA configuration #################
*.carrierAggregation.numComponentCarriers = 1
*.carrierAggregation.componentCarrier[0].numerologyIndex = 0
*.carrierAggregation.componentCarrier[0].carrierFrequency = 4GHz
*.carrierAggregation.componentCarrier[0].numBands = 50#${numRbs=50}
*.gnb*.cellularNic.numCarriers = 1
*.gnb*.cellularNic.channelModel[0].componentCarrierIndex = 0
*.ue[*].cellularNic.numCarriers = 1
*.ue[*].cellularNic.nrChannelModel[0].componentCarrierIndex = 0
*.car[*].cellularNic.numCarriers = 1
*.car[*].cellularNic.nrChannelModel[0].componentCarrierIndex = 0
############### BS position #################
*.gnb1.mobility.initialX = 250m
*.gnb1.mobility.initialY = 500m
*.gnb2.mobility.initialX = 750m
*.gnb2.mobility.initialY = 500m
# Enable handover
*.car[*].cellularNic.nrPhy.enableHandover = true
*.gNodeB*.cellularNic.phy.enableHandover = true
*.gNodeB*.cellularNic.phy.handoverLatency = 50ms
*.gNodeB*.cellInfo.broadcastMessageInterval = 1s # eNB will sends broadcast triggers every second
############### X2 configuration #################
#*.gnb*.numX2Apps = 1 # one x2App per peering node
#*.gnb*.x2App[*].server.localPort = 5000 + ancestorIndex(1) # Server ports (x2App[0]=5000, x2App[1]=5001, ...)
#*.gnb1.x2App[0].client.connectAddress = "gnb2%x2ppp0"
#*.gnb2.x2App[0].client.connectAddress = "gnb1%x2ppp0"
############## UE configuration ##################
*.numUe = 0
# UEs associates to the best BS at the beginning of the simulation
*.ue[*].macCellId = 0
*.ue[*].masterId = 0
*.ue[*].nrMacCellId = 1
*.ue[*].nrMasterId = 1
**.dynamicCellAssociation = false
**.enableHandover = false
############ UEs position #################
*.ue[0].mobility.initialX = 280m
*.ue[*].mobility.initialY = 500m
*.ue[0].mobility.typename = "LinearMobility"
*.ue[0].mobility.initFromDisplayString = false
*.ue[0].mobility.speed = 50mps
*.ue[0].mobility.initialMovementHeading = 30deg * parent.index # degrees
### Enable D2D for the eNodeB and the UEs involved in direct communications ###
**.amcMode = "D2D"
### Select CQI for D2D transmissions ###
# One-to-Many communications work with fixed CQI values only.
# Set the parameter **.usePreconfiguredTxParams and select the desired CQI using the parameter **.d2dCqi
**.enableD2DCqiReporting = false
**.usePreconfiguredTxParams = true
**.d2dCqi = ${cqi=7}
############ MEC Configuration ############
**.hasRNISupport = true
# tcp settings
**.tcp.typename = "Tcp"
**.tcp.advertisedWindow = 65535 # in bytes, corresponds with the maximal receiver buffer capacity (Note: normally, NIC queues should be at least this size)
**.tcp.tcpAlgorithmClass = "TcpReno" # TcpReno/TcpTahoe/TcpNewReno/TcpNoCongestionControl/DumbTcp
**.tcp.sackSupport = true # Selective Acknowledgment (RFC 2018, 2883, 3517) support (header option) (SACK will be enabled for a connection if both endpoints support it)
**.tcp.nagleEnabled = false
**.tcp.mss = 1452
# MEC Hosts
**.mecHost*.virtualisationInfrastructure.ipv4.forwarding = true
**.mecHost*.vim.scheduling = "fair"
*.mecHost*.maxMECApps = 1000 # max ME Apps to instantiate
*.mecHost*.maxRam = 32GB # max KBytes of Ram
*.mecHost*.maxDisk = 100TB # max KBytes of Disk Space
*.mecHost1.maxCpuSpeed = 330000 # max CPU
*.mecHost2.maxCpuSpeed = 990000 # max CPU
*.mecHost*.eNBList = "gnb1, gnb2"
# MEC Services
# MEC host 1 services configurations
*.mecHost1.mecPlatform.numMecServices = 1
*.mecHost1.mecPlatform.mecService[0].typename = "RNIService"
*.mecHost1.mecPlatform.mecService[0].localAddress = "mecHost1.virtualisationInfrastructure"
*.mecHost1.mecPlatform.mecService[0].localPort = 10020
*.mecHost1.mecPlatform.serviceRegistry.localAddress = "mecHost1.virtualisationInfrastructure"
*.mecHost1.mecPlatform.serviceRegistry.localPort = 10021
# MEC host 2 services configurations
*.mecHost2.mecPlatform.numMecServices = 1
*.mecHost2.mecPlatform.mecService[0].typename = "RNIService"
*.mecHost2.mecPlatform.mecService[0].localAddress = "mecHost2.virtualisationInfrastructure"
*.mecHost2.mecPlatform.mecService[0].localPort = 10020
*.mecHost2.mecPlatform.serviceRegistry.localAddress = "mecHost2.virtualisationInfrastructure"
*.mecHost2.mecPlatform.serviceRegistry.localPort = 10021
# random number generators configuration
*.mecHost*.mecPlatform.serviceRegistry.rng-0 = 0 # request service time
*.mecHost*.mecPlatform.serviceRegistry.rng-1 = 1 # subscription service time
*.mecHost*.mecPlatform.mecService[0].rng-0 = 1 # request service time
*.mecHost*.mecPlatform.mecService[0].rng-1 = 2 # subscription service time
*.mecHost*.mecPlatform.mecService[0].requestServiceTime = 4ms
*.mecHost*.mecPlatform.mecService[0].subscriptionServiceTime = 11us
# MEC Orchestrator configuration
*.mecOrchestrator.mecHostList = "mecHost1, mecHost2" # MEC hosts associated to the MEC system
*.mecOrchestrator.mecApplicationPackageList = "ResponseApp" # List of MEC app descriptors to be onboarded at
*.mecHost*.mecPlatformManager.mecOrchestrator = "mecOrchestrator" # the MECPM needs to know the MEC orchestrator
*.mecOrchestrator.selectionPolicy="AvailableResourcesBased"
############# Client App configuration ################
#------------UEWarningAlertApp---------------
*.ue[*].numApps = 2
*.ue[*].app[0].typename = "DeviceApp"
*.ue[*].app[0].localPort = 4500
*.ue[*].app[0].UALCMPAddress = "ualcmp"
*.ue[*].app[0].UALCMPPort = 1000
*.ue[*].app[0].appPackageSource = "ApplicationDescriptors/ResponseApp.json"
*.ue[*].app[1].typename = "UERequestApp"
*.ue[*].app[1].deviceAppAddress = "ue["+string(ancestorIndex(1))+"]"
*.ue[*].app[1].deviceAppPort = 4500
*.ue[*].app[1].startTime = 5s
*.ue[*].app[1].stopTime = 190s
*.ue[*].app[1].positionX = 600
*.ue[*].app[1].positionY = 600
#------------------------------------#
#------------CarWarningAlertApp---------------
*.car[*].ipv4.configurator.mcastGroups = "224.0.0.10"
*.car[*].numApps = 2
*.car[*].app[0].typename = "DeviceApp"
*.car[*].app[0].localPort = 3088+ancestorIndex(0)
*.car[*].app[0].UALCMPAddress = "ualcmp"
*.car[*].app[0].UALCMPPort = 1000
*.car[*].app[0].appPackageSource = "ApplicationDescriptors/ResponseApp.json"
*.car[*].app[1].typename = "UERequestApp"
*.car[*].app[1].deviceAppAddress = "car["+string(ancestorIndex(1))+"]"
*.car[*].app[1].deviceAppPort = 4500
*.car[*].app[1].startTime = 10s
*.car[*].app[1].stopTime = 190s
*.car[*].app[1].positionX = 600
*.car[*].app[1].positionY = 600
#------------------------------------#
*.routersDelay = 2m# ${delay = 1ms, 5ms, 10ms}
# Do not use the following configurations!
[Config nearRNI]
extends = MultiMec
*.mecHost2.mecPlatform.numMecServices = 0
[Config farRNI]
extends = MultiMec
*.mecHost1.mecPlatform.numMecServices = 0
[Config lightTask]
**.minInstructions = 20000
**.maxInstructions = 40000
[Config heavyTask]
**.minInstructions = 5000000
**.maxInstructions = 6000000
[Config bgUEs_gnb1]
extends = MultiMec
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].mobility.initialX = uniform(100m,500m)
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].mobility.initialY = uniform(250m,750m)
# --- Background UEs in the central cell --- #
*.gnb1.cellularNic.bgTrafficGenerator[0].enablePeriodicCqiUpdate = true
*.gnb1.cellularNic.bgTrafficGenerator[0].useProbabilisticCqi = true#${probCqi=false}
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].trafficGeneratorType = "TrafficGeneratorCbr"
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.startTimeDl = uniform(0s,0.05s)
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.packetSizeDl = 250B
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.startTimeUl = uniform(0s,0.05s)
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.packetSizeUl = 200B
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.periodDl =uniform(100ms,150ms)
*.gnb1.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.periodUl =uniform(100ms,150ms)
[Config bgUEs_gnb2]
extends = MultiMec
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].mobility.initialX = uniform(100m,500m)
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].mobility.initialY = uniform(250m,750m)
# --- Background UEs in the central cell --- #
*.gnb2.cellularNic.bgTrafficGenerator[0].enablePeriodicCqiUpdate = true
*.gnb2.cellularNic.bgTrafficGenerator[0].useProbabilisticCqi = true#${probCqi=false}
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].trafficGeneratorType = "TrafficGeneratorCbr"
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.startTimeDl = uniform(0s,0.05s)
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.packetSizeDl = 50B
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.startTimeUl = uniform(0s,0.05s)
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.packetSizeUl = 10B
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.periodDl =uniform(100ms,200ms)
*.gnb2.cellularNic.bgTrafficGenerator[0].bgUE[*].generator.periodUl =uniform(100ms,200ms)
[Config nearRNI_bgUEs_gnb1]
extends = bgUEs_gnb1 , nearRNI
[Config nearRNI_bgUEs_gnb2]
extends = bgUEs_gnb2 , nearRNI
# -----------------------------------------------------
# Use only the following configurations!
[Config best_case]
extends = nearRNI, bgUEs_gnb1, bgUEs_gnb2
*.mecOrchestrator.selectionPolicy = "AvailableResourcesBased"#MecServiceBased or AvailableResourcesBased
*.gnb1.cellularNic.bgTrafficGenerator[0].numBgUes = ${numBgUEs1= 50, 100..650 step 50}
*.mecHost1.numBGMecApp = ${numBgUEs1}
*.gnb2.cellularNic.bgTrafficGenerator[0].numBgUes = ${numBgUEs2= 50}
*.mecHost2.numBGMecApp = ${numBgUEs2}
[Config best_case_load_gen]
extends = best_case
*.mecHost*.mecPlatform.mecService[0].loadGenerator = true
*.mecHost*.mecPlatform.mecService[0].betaa = 0.34
#*.mecHost.mecPlatform.mecService[0].numBGApps = ${numApp = 10, 100, 200, 400, 600, 800, 1000, 2000}
*.mecHost*.mecPlatform.mecService[0].numBGApps = ${numBgUEs1}
*.mecHost*.mecPlatform.mecService[0].requestServiceTime = 0.5ms
[Config worst_case]
extends = nearRNI, bgUEs_gnb1, bgUEs_gnb2
*.mecOrchestrator.selectionPolicy = "AvailableResourcesBased"
#*.mecOrchestrator.mecHostIndex = 1
*.gnb2.cellularNic.bgTrafficGenerator[0].numBgUes = ${numBgUEs1= 50}#, 100..650 step 100}
*.mecHost1.numBGMecApp = ${numBgUEs1}
*.gnb1.cellularNic.bgTrafficGenerator[0].numBgUes = ${numBgUEs2= 50, 100..650 step 50}
*.mecHost2.numBGMecApp = ${numBgUEs2}
[Config worst_case_load_gen]
extends = worst_case
*.mecHost*.mecPlatform.mecService[0].loadGenerator = true
*.mecHost*.mecPlatform.mecService[0].betaa = 0.34
#*.mecHost.mecPlatform.mecService[0].numBGApps = ${numApp = 10, 100, 200, 400, 600, 800, 1000, 2000}
*.mecHost*.mecPlatform.mecService[0].numBGApps = ${numBgUEs2}
*.mecHost*.mecPlatform.mecService[0].requestServiceTime = 0.5ms
# ------------------------------------------------------------------------
[Config D2DMulticast]
### Enable D2D for the eNodeB and the UEs involved in direct communications ###
**.amcMode = "D2D"
### Select CQI for D2D transmissions ###
# One-to-Many communications work with fixed CQI values only.
# Set the parameter **.usePreconfiguredTxParams and select the desired CQI using the parameter **.d2dCqi
**.enableD2DCqiReporting = false
**.usePreconfiguredTxParams = true
**.d2dCqi = ${cqi=7}
### Traffic configuration ###
*.car[*].numApps = 1
# --- 1st group: 0 < 1 < 2 < 3 -- #
*.car[0..4].ipv4.configurator.mcastGroups = "224.0.0.10"
# transmitter
*.car[0].app[*].typename = "AlertSender"
*.car[0].app[*].localPort = 3088+ancestorIndex(0)
*.car[0].app[*].startTime = uniform(0s,0.02s)
*.car[0].app[*].destAddress = "224.0.0.10" # IP address of the multicast group
*.car[0].app[*].destPort = 1000
# receivers
*.car[1..3].app[*].typename = "AlertReceiver"
*.car[1..3].app[*].localPort = 1000
# --- 2nd group: 4 < 5 < 6 < 7 -- #
*.car[4..7].ipv4.configurator.mcastGroups = "224.0.0.11"
# transmitter
*.car[4].app[*].typename = "AlertSender"
*.car[4].app[*].localPort = 3088+ancestorIndex(0)
*.car[4].app[*].startTime = uniform(0s,0.02s)
*.car[4].app[*].destAddress = "224.0.0.11" # IP address of the multicast group
*.car[4].app[*].destPort = 1000
# receivers (they must belong to the above multicast group)
*.car[5..7].app[*].typename = "AlertReceiver"
*.car[5..7].app[*].localPort = 1000
This is my .Ned
//
// Simu5G
//
// Authors: Giovanni Nardini, Giovanni Stea, Antonio Virdis (University of Pisa)
//
// This file is part of a software released under the license included in file
// "license.pdf". Please read LICENSE and README files before using it.
// The above files and the present reference are part of the software itself,
// and cannot be removed from it.
//
package simu5g.simulations.NR.mec.requestResponseApp;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.ethernet.Eth10G;
import inet.node.inet.Router;
import inet.node.inet.StandardHost;
import simu5g.common.binder.Binder;
import simu5g.common.carrierAggregation.CarrierAggregation;
import simu5g.nodes.Upf;
import simu5g.nodes.mec.MECHost;
import simu5g.nodes.mec.MECOrchestrator.MecOrchestrator;
import simu5g.nodes.mec.UALCMP.UALCMP;
import simu5g.nodes.NR.gNodeB;
import simu5g.nodes.NR.NRUe;
import simu5g.nodes.backgroundCell.BackgroundCell;
import simu5g.world.radio.LteChannelControl;
import simu5g.nodes.cars.NRCar;
import simu5g.veins_inet.VeinsInetManager;
// MultiMecHost
//
// This network includes two gNBs and two MEC hosts
//
network MultiMecHost_delay
{
parameters:
int numUe = default(1);
int numBgCells = default(0);
double routersDelay @unit(m) = default(0m);
// volatile double routersDelay @unit(m) = default(normal(2m, 0.8m));
@display("i=block/network2;bgb=1088.032,678.896;");//bgi=background/pisa");
submodules:
channelControl: LteChannelControl {
@display("p=50,25;is=s");
}
routingRecorder: RoutingTableRecorder {
@display("p=50,75;is=s");
}
configurator: Ipv4NetworkConfigurator {
@display("p=50,125");
}
//# Veins manager module
veinsManager: VeinsInetManager {
@display("p=50,227;is=s");
}
binder: Binder {
@display("p=50,175;is=s");
}
carrierAggregation: CarrierAggregation {
@display("p=50.993748,258.7;is=s");
}
upf: Upf {
@display("p=495,132.405");
}
iUpf1: Upf {
@display("p=400,247.06499");
}
iUpf2: Upf {
@display("p=590,247.06499");
}
gnb1: gNodeB {
@display("p=283.91998,421.785;is=vl");
}
gnb2: gNodeB {
@display("p=749.385,397.215;is=vl");
}
bgCell[numBgCells]: BackgroundCell {
@display("p=79.17,576.02997;is=vl");
}
ue[numUe]: NRUe {
@display("p=353.535,481.845");
}
//# MEC modules
mecHost1: MECHost {
@display("p=248.43,247.06499");
}
mecHost2: MECHost {
@display("p=748.01996,247.06499");
}
mecOrchestrator: MecOrchestrator {
@display("p=749.385,132.405");
}
ualcmp: UALCMP {
@display("p=603.33,131.04");
}
car[0]: NRCar;
connections:
//# 5G Core Network connections
upf.pppg++ <--> Eth10G <--> iUpf1.pppg++;
upf.pppg++ <--> Eth10G <--> iUpf2.pppg++;
iUpf1.pppg++ <--> Eth10G <--> gnb1.ppp;
iUpf2.pppg++ <--> Eth10G <--> gnb2.ppp;
iUpf2.pppg++ <--> Eth10G { length = parent.routersDelay*2e5; } <--> iUpf1.pppg++;
//# MEC-related connections
ualcmp.ppp++ <--> Eth10G <--> upf.filterGate;
ualcmp.toMecOrchestrator --> mecOrchestrator.fromUALCMP;
ualcmp.fromMecOrchestrator <-- mecOrchestrator.toUALCMP;
mecHost1.ppp++ <--> Eth10G <--> iUpf1.pppg++;
mecHost2.ppp++ <--> Eth10G <--> iUpf2.pppg++;
}
Can someone help-me plz with this error? If i use UEs instead of cars the simulation runs normally, when i use cars, the simullation starts to run, the cars start to move, then the error ocoours.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Hi im trying to use cars in the multiMecHost simulations from Simu5G. Im trying to make the cars work as an UE, so ive changed some things in the .ini and net to make the cars apeers in the simulation using the "MultiMec" config.
The problem happens when the car try to start the communication with the MEC host, i get the error:
This is my .ini with changes:
This is my .Ned
Can someone help-me plz with this error? If i use UEs instead of cars the simulation runs normally, when i use cars, the simullation starts to run, the cars start to move, then the error ocoours.
Beta Was this translation helpful? Give feedback.
All reactions