Several modules and parameters play a crucial role in simulating 5G networks. Some of the ideas and topics that we have guided scholars are mentioned below, we maintain all your work confidential so rest assured we will be the guiding lamp for your research path. For simulating 5G networks in OMNeT++, the following are the major modules and their parameter explanations:
Major Modules for OMNeT++ 5G Simulation
- Simu5G
- Capability: Specifically, for OMNeT++, Simu5G is determined as an open-source library that has the ability to design the LTE and 5G NR (New Radio) protocols. In addition to the essential network abilities, it encompasses an extensive deployment of the 5G NR physical and MAC layers.
- Major Characteristics:
- Simu5G assists for 5G NR and LTE-A.
- It provides PHY and MAC layer systems.
- For dynamic TDD, Simu5G is assistive.
- Network slicing.
- Contains abilities of beamforming and MIMO.
- For network layer protocols, it supports combination with the INET model.
- Repository: Simu5G on GitHub
- INET Framework
- Capability: Encompassing frameworks for different network protocols, devices, and mechanisms, the INET model is an extensive framework suite for OMNeT++. Frequently, to simulate entire network settings, it is employed in combination with Simu5G.
- Major Characteristics:
- Specifically, for the broad scope of wired and wireless network protocols, the INET framework is very helpful.
- It offers extensive systems for routing, transport, and application layers.
- It facilitates combination with mobility frameworks and different wireless mechanisms.
- Repository: INET Framework
Installing and Configuring the Modules
- Install OMNeT++: To download and install OMNeT++, adhere to the guidelines on the OMNeT++ website.
- Clone the Simu5G Repository: You should clone the Simu5G repository through directing to your OMNeT++ work space.
git clone https://github.com/Unipisa/Simu5G.git
- Install INET Framework: From the INET website, download and install the INET framework.
Arranging the Simulation Environment
- Create a New OMNeT++ Project: In the OMNeT++ IDE, develop a novel project and it is better to encompass INET and Simu5G as project functionalities.
- Set Up Network Topology: Through the utilization of NED (Network Description) files, specify the network topology. It is appreciable to indicate the nodes, their kinds such as UE, gNB, and their correlations.
- Configure Simulation Parameters: In the omnetpp.ini file, arrange the simulation metrics. In this step, relevant to the physical layer, MAC layer, and network layer, you can indicate different metrics.
Instance Simulation Scenario
The following is an instance of a basic 5G network simulation setting employing Sim5G and INET:
NED File: Simple5GNetwork.ned
package simple5gnetwork;
import inet.node.inet.Router;
import inet.node.inet.StandardHost;
import inet.mobility.static.StaticMobility;
import simu5g.node.basenode.gnb.Gnb;
import simu5g.node.ue.NrUe;
import simu5g.scenario.MobilityConfiguration;
network Simple5GNetwork
{
types:
channelChannelType extends ned.DatarateChannel
{
datarate = 1Gbps;
delay = 1us;
}
submodules:
gnb: Gnb {
@display(“p=100,100”);
}
ue[5]: NrUe {
@display(“p=200,100+$index*50”);
}
connections:
ue[0].gnbPhy <–> channelChannelType <–> gnb.gnbPhy;
ue[1].gnbPhy <–> channelChannelType <–> gnb.gnbPhy;
ue[2].gnbPhy <–> channelChannelType <–> gnb.gnbPhy;
ue[3].gnbPhy <–> channelChannelType <–> gnb.gnbPhy;
ue[4].gnbPhy <–> channelChannelType <–> gnb.gnbPhy;
}
INI File: omnetpp.ini
[General]
network = simple5gnetwork.Simple5GNetwork
# Simulation time
sim-time-limit = 10s
# Configure the gNB
*.gnb.gnbMac.maxTxPower = 40mW
*.gnb.gnbMac.carrierFrequency = 28GHz
*.gnb.gnbMac.bandwidth = 100MHz
*.gnb.mobility.typename = “StaticMobility”
*.gnb.mobility.initialX = 100m
*.gnb.mobility.initialY = 100m
# Configure the UEs
*.ue[*].ueMac.maxTxPower = 20mW
*.ue[*].ueMac.carrierFrequency = 28GHz
*.ue[*].ueMac.bandwidth = 100MHz
*.ue[*].mobility.typename = “StaticMobility”
*.ue[*].mobility.initialX = 200m
*.ue[*].mobility.initialY = 100m+$index*50m
# Enable logging for MAC and PHY layers
*.gnb.gnbMac.logging = true
*.ue[*].ueMac.logging = true
Executing the Simulation
- Build the Project: To assure that every functionality is properly connected, focus on compiling the project in OMNeT++ IDE.
- Run the Simulation: By executing the Simple5GNetwork setting, run the simulation. Generally, the outcomes will be recorded. To visualize and investigate the outcomes, you can employ the OMNeT++ IDE.
Major Parameters for 5G Simulation
- Carrier Frequency:
- Explanation: It denotes the frequency at which the UE and gNB interact.
- Instance: *.gnb.gnbMac.carrierFrequency = 28GHz
- Bandwidth:
- Explanation: This parameter indicates the bandwidth that is accessible for interaction.
- Instance: *.gnb.gnbMac.bandwidth = 100MHz
- Transmission Power:
- Explanation: It specifies the maximum transmission power of the UE and gNB.
- Instance: *.gnb.gnbMac.maxTxPower = 40mW
- Mobility Model:
- Explanation: To specify the movement of nodes, the mobility model is employed.
- Instance: *.ue[*].mobility.typename = “StaticMobility”
- Simulation Time:
- Explanation: This parameter denotes the time for which the simulation runs.
- Instance: sim-time-limit = 10s
- Logging:
- Explanation: To seize extensive simulation data, this parameter activates or deactivates logging for different layers.
- Instance: *.gnb.gnbMac.logging = true
Examining the Results
- Use the OMNeT++ IDE:
- For visualizing the network topology, packet transmissions, and node movements, the IDE offers suitable tools.
- Inspect Logs:
- To examine the performance parameters like latency, signal strength, throughput, and packet loss, investigate the records produced at the time of simulation.
- Plot Results:
- In order to visualize the outcomes, employ the in-built plotting tools. For more exploration in external tools such as Python or MATLAB, you can also export the data.
How to simulate 5G network projects using OMNeT++?
The process of simulating 5G network projects with OMNeT++ is determined as challenging as well as fascinating. We offer an extensive instruction that assist you to begin with simulating 5G networks utilizing OMNeT++ and the Simu5G module:
Step 1: Install OMNeT++
- Download OMNeT++: Appropriate for your operating system, visit the OMNeT++ official website and download the advanced version.
- Install OMNeT++: To configure OMNeT++, adhere to the installation guidelines certain to your operating system.
Step 2: Install INET and Simu5G Modules
- Clone the INET Framework: Typically, significant network elements and protocols are offered by the INET framework. You should clone the INET repository through directing to your OMNeT++ work space.
cd /path/to/omnetpp-5.x
git clone https://github.com/inet-framework/inet.git
- Clone the Simu5G Module: For simulations, Simu5G expands INET. Aim to clone the Simu5G repository.
git clone https://github.com/Unipisa/Simu5G.git
- Build INET and Simu5G: You must open the OMNeT++ IDE, and import INET as well as Simu5G projects, and develop them in an efficient manner. At the time of build procedure, make sure that there are no mistakes.
Step 3: Develop a New Simulation Project
- Create a New OMNeT++ Project: Develop a novel project in the OMNeT++ IDE. In the Project Explorer, right-click and choose “New” -> “OMNeT++ Project”. To configure your project, adhere to the expert.
- Add Dependencies: To utilize INET and Simu5G modules, arrange your project. You should right-click on your project, choose “Properties”, go to “Project References”, and examine the boxes for INET and Simu5G.
Step 4: Define the Network Topology
- Create a NED File: To specify the 5G network topology, develop a novel Network Description (NED) file in your project.
package my5gproject;
import inet.node.inet.Router;
import inet.node.inet.StandardHost;
import inet.mobility.static.StaticMobility;
import simu5g.node.basenode.gnb.Gnb;
import simu5g.node.ue.NrUe;
import simu5g.scenario.MobilityConfiguration;
network Simple5GNetwork
{
types:
channel ChannelType extends ned.DatarateChannel
{
datarate = 1Gbps;
delay = 1us;
}
submodules:
gnb: Gnb {
@display(“p=100,100”);
}
ue[5]: NrUe {
@display(“p=200,100+$index*50”);
}
connections:
ue[0].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[1].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[2].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[3].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[4].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
}
Step 5: Configure Simulation Parameters
- Create an INI File: In order to describe the simulation parameters, construct an omnetpp.ini file.
[General]
network = my5gproject.Simple5GNetwork
# Simulation time
sim-time-limit = 10s
# Configure the gNB
*.gnb.gnbMac.maxTxPower = 40mW
*.gnb.gnbMac.carrierFrequency = 28GHz
*.gnb.gnbMac.bandwidth = 100MHz
*.gnb.mobility.typename = “StaticMobility”
*.gnb.mobility.initialX = 100m
*.gnb.mobility.initialY = 100m
# Configure the UEs
*.ue[*].ueMac.maxTxPower = 20mW
*.ue[*].ueMac.carrierFrequency = 28GHz
*.ue[*].ueMac.bandwidth = 100MHz
*.ue[*].mobility.typename = “StaticMobility”
*.ue[*].mobility.initialX = 200m
*.ue[*].mobility.initialY = 100m+$index*50m
# Enable logging for MAC and PHY layers
*.gnb.gnbMac.logging = true
*.ue[*].ueMac.logging = true
Step 6: Implement Applications and Traffic
- Add Traffic Generation: Focus on specifying traffic trends among the gNB and the UEs. For instance, to produce congestion, you can utilize UDP applications.
*.ue[*].numApps = 1
*.ue[*].app[0].typename = “UdpBasicApp”
*.ue[*].app[0].destAddresses = “gnb”
*.ue[*].app[0].startTime = uniform(1s, 2s)
*.ue[*].app[0].stopTime = 10s
*.ue[*].app[0].messageLength = 1024B
*.ue[*].app[0].sendInterval = uniform(0.1s, 0.2s)
*.gnb.numApps = 1
*.gnb.app[0].typename = “UdpSink”
Step 7: Execute the Simulation
- Build the Project: To make sure that every arrangement and functionality are configured properly, compile the project in the OMNeT++ IDE.
- Run the Simulation: By choosing the Simple5GNetwork setting in the OMNeT++ IDE, run the simulation. Aim to track the simulation advancement and gather outcomes.
Step 8: Examine Results
- Inspect Logs: To examine performance parameters like latency, signal strength, throughput, and packet loss, investigate the logs produced at the time of simulation.
- Plot Results: For more exploration in external tools such as Python or MATLAB, employ OMNeT++’s in-built plotting tools or export the data.
Instance: Advanced Configuration
To encompass interference management, network slicing, mobility models, handover settings, and more, you can adapt the NED and INI files for more progressive simulations.
Advanced NED File Instance
package my5gproject;
import inet.node.inet.Router;
import inet.node.inet.StandardHost;
import inet.mobility.static.StaticMobility;
import simu5g.node.basenode.gnb.Gnb;
import simu5g.node.ue.NrUe;
import simu5g.scenario.MobilityConfiguration;
network Advanced5GNetwork
{
types:
channel ChannelType extends ned.DatarateChannel
{
datarate = 1Gbps;
delay = 1us;
}
submodules:
gnb: Gnb {
@display(“p=100,100”);
}
ue[5]: NrUe {
@display(“p=200,100+$index*50”);
}
core: StandardHost {
@display(“p=50,100”);
}
connections:
gnb.ethg++ <–> ChannelType <–> core.ethg++;
ue[0].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[1].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[2].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[3].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
ue[4].gnbPhy <–> ChannelType <–> gnb.gnbPhy;
}
Advanced INI File Instance
[General]
network = my5gproject.Advanced5GNetwork
# Simulation time
sim-time-limit = 20s
# Configure the core network
*.core.numApps = 1
*.core.app[0].typename = “UdpSink”
*.core.ipv4.arp.typename = “Arp”
# Configure the gNB
*.gnb.gnbMac.maxTxPower = 40mW
*.gnb.gnbMac.carrierFrequency = 28GHz
*.gnb.gnbMac.bandwidth = 100MHz
*.gnb.mobility.typename = “StaticMobility”
*.gnb.mobility.initialX = 100m
*.gnb.mobility.initialY = 100m
# Configure the UEs
*.ue[*].ueMac.maxTxPower = 20mW
*.ue[*].ueMac.carrierFrequency = 28GHz
*.ue[*].ueMac.bandwidth = 100MHz
*.ue[*].mobility.typename = “LinearMobility”
*.ue[*].mobility.speed = 10mps
*.ue[*].mobility.startTime = uniform(0s, 1s)
*.ue[*].mobility.stopTime = 20s
*.ue[*].mobilit