View on GitHub

LTE User Plane Simulation Model for INET & OMNeT++

Download this project as a tar.gz file

Simulating more than one cell

Let us introduce another configuration, called MultiCell. The network model (defined in the simulations/networks directory) contains two eNodeBs, each serving two UEs. Again, UEs want to communicate with a server.

[Config MultiCell]
network = lte.simulations.networks.MultiCell
The configuration is very similar to that of the single cell scenario. Remember to associate UEs with the correct eNodeB:
**.ue1*.macCellId = 1
**.ue1*.masterId = 1
**.ue2*.macCellId = 2
**.ue2*.masterId = 2
In addition, we need to tell the IPv4NetworkConfigurator module that UEs served by eNodeB1 and UEs served by eNodeB2 belongs to different networks. We do this by creating a configuration file for the IPv4NetworkConfigurator called multi.xml. The name of the configuration file must be specified in the NED definition of the network, as a parameter of the IPv4NetworkConfigurator submodule.
    <interface hosts="*" address="10.x.x.x" netmask="255.x.x.x"/>
    <wireless hosts="eNodeB1 ue1*"/>
    <wireless hosts="eNodeB2 ue2*"/>
When using two or more eNodeBs, it is likely that we want to take into consideration the presence of inter-cell interference. This feature must be enabled in the channel model configuration. Thus, we modify the multiCell-interference parameter in the config_channel.xml file as follows:
<parameter name="multiCell-interference" type="bool" value="true"/>
Similar to the single cell scenario, we extend the configuration to specify the traffic type.
[Config MultiCell-DL]

#============= Application Setup =============
*.ue*.udpApp[*].typename = "VoIPReceiver"
*.server.udpApp[*].typename = "VoIPSender"
*.server.udpApp[0].destAddress = "ue11" 
*.server.udpApp[1].destAddress = "ue12"
*.server.udpApp[2].destAddress = "ue21"
*.server.udpApp[3].destAddress = "ue22"
*.server.udpApp[*].localPort = 3088+ancestorIndex(0) 
*.server.udpApp[*].startTime = uniform(0s,0.02s)

Here's a screenshot of the graphical runtime environment:

Adding external cells to the network

SimuLTE offers the possibility to add external cells to the network. An external cell is a simplified eNodeB that has no UEs to serve but produces interference to UEs deployed in the network. This is a useful mechanism to simulate downlink inter-cell interference without adding more and more eNodeBs, together with their served UEs. We define a MultiCell-DL-ExtCell configuration as follows:
[Config MultiCell-DL-ExtCells]

*.numExtCells = 2

#============= Configuration ============
*.extCell[*].txPower = 20
*.extCell[*].txDirection = "ANISOTROPIC"
*.extCell[*].bandAllocationType = "RANDOM_ALLOC"
*.extCell[*].bandUtilization = 0.5

#============= Positioning ============
*.extCell[0].position_x = 100m
*.extCell[0].position_y = 600m 
*.extCell[0].txAngle = 315
*.extCell[1].position_x = 600m
*.extCell[1].position_y = 600m
*.extCell[1].txAngle = 225
For each external cell, we define the position, the transmission power and the transmission angle (if anisotropic cells are used). Moreover, bandAllocationType and bandUtilization parameters specify how external cells allocates Resource Blocks over the available bandwidth (e.g., using contiguous RBs or randomly chosen RBs over the whole bandwidth) and the percentage of occupied Resource Blocks, respectively. Again, to enable interference from external cells, we need to set the extCell-interference parameter in the config_channel.xml file as follows:
<parameter name="extCell-interference" type="bool" value="true"/>

Prev: Basic usage Next: Using X2 interface