Skip to content

Commit

Permalink
refactored lte->simu5g paths
Browse files Browse the repository at this point in the history
  • Loading branch information
linofex committed Aug 24, 2021
1 parent ec00bee commit 080c930
Show file tree
Hide file tree
Showing 12 changed files with 90 additions and 87 deletions.
10 changes: 5 additions & 5 deletions .cproject
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<folderInfo id="org.omnetpp.cdt.gnu.config.debug.240535479." name="/" resourcePath="">
<toolChain id="org.omnetpp.cdt.gnu.toolchain.debug.830314518" name="GCC for OMNeT++" superClass="org.omnetpp.cdt.gnu.toolchain.debug">
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.MachO64;org.eclipse.cdt.core.PE" id="org.omnetpp.cdt.targetPlatform.1175350791" isAbstract="false" name="Windows, Linux, Mac" osList="win32,linux,macosx" superClass="org.omnetpp.cdt.targetPlatform"/>
<builder arguments="MODE=debug" autoBuildTarget="all" buildPath="${ProjDirPath}" cleanBuildTarget="clean" command="make" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="org.omnetpp.cdt.gnu.builder.debug.1123895100" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="OMNeT++ Make Builder (opp_makemake)" parallelBuildOn="true" parallelizationNumber="optimal" superClass="org.omnetpp.cdt.gnu.builder.debug"/>
<builder autoBuildTarget="all" buildPath="${ProjDirPath}" cleanBuildTarget="clean" command="make" enableAutoBuild="false" enableCleanBuild="true" enabledIncrementalBuild="true" id="org.omnetpp.cdt.gnu.builder.debug.1123895100" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="OMNeT++ Make Builder (opp_makemake)" parallelBuildOn="true" parallelizationNumber="optimal" superClass="org.omnetpp.cdt.gnu.builder.debug"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1761731509" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1207984331" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option id="gnu.cpp.compiler.option.preprocessor.def.239238640" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false"/>
Expand All @@ -43,7 +43,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="apps/mec/MecApps/MECAppGet|apps/mec/EchoApp|nodes/mec/MECOrchestrator_tcpApp|apps/mec/RNIDelay|corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
<entry excluding="corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
Expand All @@ -68,7 +68,7 @@
<folderInfo id="org.omnetpp.cdt.gnu.config.release.708846711." name="/" resourcePath="">
<toolChain id="org.omnetpp.cdt.gnu.toolchain.release.797979391" name="GCC for OMNeT++" superClass="org.omnetpp.cdt.gnu.toolchain.release">
<targetPlatform binaryParser="org.eclipse.cdt.core.ELF;org.eclipse.cdt.core.MachO64;org.eclipse.cdt.core.PE" id="org.omnetpp.cdt.targetPlatform.666673557" isAbstract="false" name="Windows, Linux, Mac" osList="win32,linux,macosx" superClass="org.omnetpp.cdt.targetPlatform"/>
<builder id="org.omnetpp.cdt.gnu.builder.release.106409899" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="OMNeT++ Make Builder (opp_makemake)" superClass="org.omnetpp.cdt.gnu.builder.release"/>
<builder id="org.omnetpp.cdt.gnu.builder.release.106409899" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="OMNeT++ Make Builder (opp_makemake)" parallelBuildOn="false" stopOnErr="true" superClass="org.omnetpp.cdt.gnu.builder.release"/>
<tool id="cdt.managedbuild.tool.gnu.archiver.base.701270765" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.170720259" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
<option id="gnu.cpp.compiler.option.preprocessor.def.1577128336" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false"/>
Expand All @@ -91,7 +91,7 @@
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="apps/mec/warningAlert|apps/mec/MecApps/MECAppGet|apps/mec/EchoApp|nodes/mec/MECOrchestrator_tcpApp|apps/mec/RNIDelay|corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
<entry excluding="corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
Expand Down Expand Up @@ -128,7 +128,7 @@
<toolChain id="org.omnetpp.cdt.msvc.toolchain.debug.1768837818" name="Microsoft Visual C++ for OMNeT++" unusedChildren=""/>
</folderInfo>
<sourceEntries>
<entry excluding="apps/mec/MecApps/MECAppGet|nodes/mec/MECOrchestrator_tcpApp|corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
<entry excluding="corenetwork/nodes/cars" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
</sourceEntries>
</configuration>
</storageModule>
Expand Down
2 changes: 1 addition & 1 deletion .project
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<name>simu5G</name>
<comment></comment>
<projects>
<project>inet4.3</project>
<project>inet</project>
</projects>
<buildSpec>
<buildCommand>
Expand Down
22 changes: 11 additions & 11 deletions emulation/mec/extUeAppMecApp/MecExtApps.ned
Original file line number Diff line number Diff line change
Expand Up @@ -7,25 +7,25 @@
// and cannot be removed from it.
//

package lte.emulation.mec.extUeAppMecApp;
package simu5g.emulation.mec.extUeAppMecApp;

import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.ethernet.Eth10G;
import lte.world.radio.LteChannelControl;
import lte.nodes.binder.LteBinder;
import lte.common.carrierAggregation.CarrierAggregation;
import lte.nodes.Upf;
import lte.nodes.NR.gNodeB;
import lte.nodes.NR.NRUe;
import lte.nodes.mec.MECHost;
import simu5g.world.radio.LteChannelControl;
import simu5g.common.binder.Binder;
import simu5g.common.carrierAggregation.CarrierAggregation;
import simu5g.nodes.Upf;
import simu5g.nodes.NR.gNodeB;
import simu5g.nodes.NR.NRUe;
import simu5g.nodes.mec.MECHost;

import inet.node.inet.Router;

import inet.visualizer.canvas.integrated.IntegratedCanvasVisualizer;

import lte.nodes.mec.MECOrchestrator.MecOrchestrator;
import lte.nodes.mec.LCMProxy.LCMProxy;
import simu5g.nodes.mec.MECOrchestrator.MecOrchestrator;
import simu5g.nodes.mec.LCMProxy.LCMProxy;



Expand Down Expand Up @@ -53,7 +53,7 @@ network MecExtApps
channelControl: LteChannelControl {
@display("p=690,24.84;is=s");
}
binder: LteBinder {
binder: Binder {
@display("p=474.27625,34.3825;is=s");
}
carrierAggregation: CarrierAggregation {
Expand Down
41 changes: 25 additions & 16 deletions simulations/NR/mec/README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
To integrate a MEC architecture into a LTE/5G network the following modules needs to be used:
- UALCM proxy
- MEC orchestrator (one per MEC system)
- a configurable number of MEC hosts
To integrate a MEC system into an LTE/5G network the following modules needs to be used:
- the UALCM proxy
- the MEC orchestrator
- a desired number of MEC hosts

The UALCM proxy must be connected to the MEC orchestrator via the "toMecOrchestrator/fromMecOrchestrator" gates.
MEC host associated to the MEC system are selected through the "mecHostList" parameter of the MEC orchestrator. Also the MEC platform manager of each MEC host needs to know its MEC orchestrator, so the "mecOrchestrator" parameter must be configured with name of the relative MEC orchestrator module. Finally, eNB/gNBs associated via the MEC hosts are selected with the "eNBList" MEC host's paramater, or if the MEC host are directly connected to the base station, they consider the active gates connected to the them.


Once the MEC entities are configured, the last thing to set is relative to the MEC services running on the MEC platform module of a MEC host, if are needed.
The "numMecServices" parameter selects the number of MEC services running on the MEC platform module and then set the port where the service listens for MEC apps requests.

The network, and the relative MEC-related configuration, summerises what has just been described.

// METTERE RETE

// METTERE LA CONFIGURAZIONE

MEC host associated to the MEC system are selected through the "mecHostList" parameter of the MEC orchestrator (since more MEC system can be deployed). Also the MEC platform manager of each MEC host needs to know its MEC orchestrator, so the "mecOrchestrator" parameter must be configured with name of the relative MEC orchestrator module. Finally, eNB/gNBs associated via the MEC hosts are selected with the "eNBList" MEC host's paramater, or if the MEC hosts are directly connected to the base station, they consider the active gates connected to the them, without setting the "eNBList" parameter.
Each MEC host is configured with a maximum amount of resources that are used by the MEC orchestrator to select which MEC host should run the required MEC app:

```
*.mecHost.maxMECApps = 100 # max ME Apps to instantiate
*.mecHost.maxRam = 32GB # max KBytes of Ram
*.mecHost.maxDisk = 100TB # max KBytes of Disk Space
*.mecHost.maxCpuSpeed = 400000 # max CPU
```

Once the MEC entities are configured, the last thing to set up is relative to the MEC services running on the MEC platform module of a MEC host, if they are needed.
The "numMecServices" parameter selects the number of MEC services running on the MEC platform module and then, each MEC service is configured as follows:

```
*.mecHost.mecPlatform.numMecServices = 1
*.mecHost.mecPlatform.mecService[0].typename = "RNIService"
*.mecHost.mecPlatform.mecService[0].localAddress = "mecHost.mecPlatform"
*.mecHost.mecPlatform.mecService[0].localPort = 10020
```

The demo scenarios in the singleMecHost and MultiMecHost folders describes the configuration to set up 5G network with a MEC system

The UALCM proxy interfaces with the UE trough the Device App, tipically running in the UE itself, in addition to the UE application communicating with the MEC app.

Expand Down
20 changes: 10 additions & 10 deletions simulations/NR/mec/RNIDelay/MultiCell.ned
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@
// The above files and the present reference are part of the software itself,
// and cannot be removed from it.
//
package lte.simulations.NR.mec.RNIDelay;
package simu5g.simulations.NR.mec.RNIDelay;

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 lte.nodes.binder.LteBinder;
import lte.common.carrierAggregation.CarrierAggregation;
import lte.nodes.NR.NRUe;
import lte.nodes.NR.gNodeB;
import lte.nodes.ExtCell;
import lte.nodes.Upf;
import lte.world.radio.LteChannelControl;
import lte.nodes.mec.MECHost;
import simu5g.common.binder.Binder;
import simu5g.common.carrierAggregation.CarrierAggregation;
import simu5g.nodes.NR.NRUe;
import simu5g.nodes.NR.gNodeB;
import simu5g.nodes.ExtCell;
import simu5g.nodes.Upf;
import simu5g.world.radio.LteChannelControl;
import simu5g.nodes.mec.MECHost;

network MultiCell
{
Expand All @@ -42,7 +42,7 @@ network MultiCell
configurator: Ipv4NetworkConfigurator {
@display("p=50,125");
}
binder: LteBinder {
binder: Binder {
@display("p=50,175;is=s");
}
carrierAggregation: CarrierAggregation {
Expand Down
15 changes: 6 additions & 9 deletions simulations/NR/mec/RNIDelay/omnetpp.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@ image-path=../../images
output-scalar-file-append = false
sim-time-limit=20s
num-rngs = 3
network = lte.simulations.NR.mec.RNIDelay.MultiCell
network = simu5g.simulations.NR.mec.RNIDelay.MultiCell
**.routingRecorder.enabled = false

## Schedulers
**.mac.schedulingDisciplineDl = "MAXCI"
**.mac.schedulingDisciplineUl = "MAXCI"


**.lteNic.channelModel[0].shadowing = false
**.lteNic.channelModel[0].fading = false
**.cellularNic.channelModel[0].shadowing = false
**.cellularNic.channelModel[0].fading = false

**.mecHost.**.vector-recording = true
**.vector-recording = true
Expand Down Expand Up @@ -87,8 +87,8 @@ network = lte.simulations.NR.mec.RNIDelay.MultiCell
**.ue2*.nrMasterId = 2

# enable handover
*.gNodeB*.lteNic.phy.enableHandover = true
*.ue*.lteNic.nrPhy.enableHandover = true
*.gNodeB*.cellularNic.phy.enableHandover = true
*.ue*.cellularNic.nrPhy.enableHandover = true


# X2 configuration
Expand All @@ -102,9 +102,6 @@ network = lte.simulations.NR.mec.RNIDelay.MultiCell
*.gNodeB3.x2App[0].client.connectAddress = "gNodeB2%x2ppp1"





# positioning and mobility
**.mobility.initFromDisplayString = false

Expand Down Expand Up @@ -151,7 +148,7 @@ extends=Handover-General
sim-time-limit=28s


*.numCars = ${numCars=1,5, 15,30 ,50,100}
*.numCars = ${numCars=0, 1,5, 15,30 ,50,100}
**.vector-recording = true

**.ue[0].nrMacCellId = 1
Expand Down
22 changes: 11 additions & 11 deletions simulations/NR/mec/multiMecHost/MecTwoMecHosts.ned
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,24 @@
// and cannot be removed from it.
//

package lte.simulations.NR.mec.multiMecHost;
package simu5g.simulations.NR.mec.multiMecHost;

import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.ethernet.Eth10G;
import lte.world.radio.LteChannelControl;
import lte.nodes.binder.LteBinder;
import lte.common.carrierAggregation.CarrierAggregation;
import lte.nodes.Upf;
import lte.nodes.NR.gNodeB;
import lte.nodes.NR.NRUe;
import lte.nodes.mec.MECHost;
import simu5g.world.radio.LteChannelControl;
import simu5g.common.binder.Binder;
import simu5g.common.carrierAggregation.CarrierAggregation;
import simu5g.nodes.Upf;
import simu5g.nodes.NR.gNodeB;
import simu5g.nodes.NR.NRUe;
import simu5g.nodes.mec.MECHost;

import inet.node.inet.Router;


import lte.nodes.mec.MECOrchestrator.MecOrchestrator;
import lte.nodes.mec.LCMProxy.LCMProxy;
import simu5g.nodes.mec.MECOrchestrator.MecOrchestrator;
import simu5g.nodes.mec.LCMProxy.LCMProxy;



Expand All @@ -50,7 +50,7 @@ network MecTwoMecHosts
channelControl: LteChannelControl {
@display("p=690,24.84;is=s");
}
binder: LteBinder {
binder: Binder {
@display("p=690,264.96;is=s");
}
carrierAggregation: CarrierAggregation {
Expand Down
4 changes: 0 additions & 4 deletions simulations/NR/mec/multiMecHost/omnetpp.ini
Original file line number Diff line number Diff line change
Expand Up @@ -193,10 +193,6 @@ sim-time-limit = 40s
*.mecHost2.mecPlatform.mecService[0].requestServiceTime = 20us
*.mecHost2.mecPlatform.mecService[0].subscriptionServiceTime = 11us

# ME Host connected
#**.gNodeB*.meHost = "meHost"
# ----------------------------------------------------------------------------- #

# ----------------------------------------------------------------------------- #
# Config "Test"
#
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"appDid" : "WAMECAPP",
"appName" : "MECWarningAlertApp",
"appProvider" : "lte.apps.mec.WarningAlert.MECWarningAlertApp",
"appProvider" : "simu5g.apps.mec.WarningAlert.MECWarningAlertApp",
"appInfoName" : "appInfoName_",
"appDescription" : "appDescription_",
"virtualComputeDescriptor" :{
Expand Down
14 changes: 7 additions & 7 deletions simulations/NR/mec/singleMecHost/omnetpp.ini
Original file line number Diff line number Diff line change
Expand Up @@ -61,11 +61,11 @@ warmup-period = 10s
*.carrierAggregation.numComponentCarriers = 1
*.carrierAggregation.componentCarrier[0].numBands = 25 #${numBands=25}

*.*.lteNic.LteChannelModelType = "NRChannelModel"
*.gNodeB1.lteNic.numCarriers = 1
*.gNodeB1.lteNic.channelModel[0].componentCarrierIndex = 0
*.car[*].lteNic.numCarriers = 1
*.car[*].lteNic.nrChannelModel[0].componentCarrierIndex = 0
*.*.cellularNic.LteChannelModelType = "NRChannelModel"
*.gNodeB1.cellularNic.numCarriers = 1
*.gNodeB1.cellularNic.channelModel[0].componentCarrierIndex = 0
*.car[*].cellularNic.numCarriers = 1
*.car[*].cellularNic.nrChannelModel[0].componentCarrierIndex = 0


##########################################################
Expand Down Expand Up @@ -109,7 +109,7 @@ warmup-period = 10s
**.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)

**.hasRNISupport = false
**.hasRNISupport = true
##########################################################
# App Layer #
##########################################################
Expand Down Expand Up @@ -178,7 +178,7 @@ warmup-period = 10s
# Config "Test"
#
[Config Test]
network = lte.simulations.NR.mec.singleMecHost.singleMecHost
network = simu5g.simulations.NR.mec.singleMecHost.singleMecHost
*.mecHost.mecPlatformManager.mecOrchestrator = "mecOrchestrator"
**.mecOrchestrator.mecHostList = "mecHost"
#**.mecOrchestrator.mecApplicationPackageList = "WarningAlertApp"
Expand Down
22 changes: 11 additions & 11 deletions simulations/NR/mec/singleMecHost/singleMecHost.ned
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,21 @@
// and cannot be removed from it.
//

package lte.simulations.NR.mec.singleMecHost;
package simu5g.simulations.NR.mec.singleMecHost;

import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.node.ethernet.Eth10G;
import lte.world.radio.LteChannelControl;
import lte.nodes.binder.LteBinder;
import lte.common.carrierAggregation.CarrierAggregation;
import lte.nodes.Upf;
import lte.nodes.NR.gNodeB;
import lte.nodes.NR.NRUe;
import lte.nodes.mec.MECHost;
import simu5g.world.radio.LteChannelControl;
import simu5g.common.binder.Binder;
import simu5g.common.carrierAggregation.CarrierAggregation;
import simu5g.nodes.Upf;
import simu5g.nodes.NR.gNodeB;
import simu5g.nodes.NR.NRUe;
import simu5g.nodes.mec.MECHost;

import lte.nodes.mec.MECOrchestrator.MecOrchestrator;
import lte.nodes.mec.LCMProxy.LCMProxy;
import simu5g.nodes.mec.MECOrchestrator.MecOrchestrator;
import simu5g.nodes.mec.LCMProxy.LCMProxy;



Expand All @@ -47,7 +47,7 @@ network singleMecHost
channelControl: LteChannelControl {
@display("p=690,24.84;is=s");
}
binder: LteBinder {
binder: Binder {
@display("p=690,264.96;is=s");
}
carrierAggregation: CarrierAggregation {
Expand Down
3 changes: 2 additions & 1 deletion simulations/test_handover/omnetpp.ini
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ network = simu5g.simulations.networks.MultiCell
# eNodeB2, triggering the handover procedure #
#############################################################

**.hasRNISupport = true
**.hasRNISupport = false

[Config Handover-General]
# connect each UE to the eNB
**.ue1*.macCellId = 1
Expand Down

0 comments on commit 080c930

Please sign in to comment.