SimuLTE - Cannot cast NULL Pointer to LteDeployer

236 views
Skip to first unread message

Gustavo Troiano

unread,
Jun 24, 2016, 2:56:09 PM6/24/16
to OMNeT++ Users
Dears,

I am using SimuLTE with INET 2.3, as recommended by the install guide. However, when I try to simulate a network with 3 eNodeBs with 10 UEs each, the system throws an error called "check and cast(): cannot cast NULL pointer to type LteDeployer" , related to one specific UE (more precisely to ue11, which is attached to the eNodeB2).

Can anyone give a hint how to solve this problem?

Follow below my code:

.ini

[General]

network = lte_7.simulations.LTE_7
tkenv-image-path=../../images
output-scalar-file-append = false
sim-time-limit = 300s

**.vector-recording = false

# Parâmetros de Simulação

record-eventlog = true
#eventlog-options = module, displaystring, message

#eventlog-message-detail-pattern = *:(not declaredOn(cMessage) and not declaredOn(cNamedObject) and not declaredOn(cObject))
tkenv-default-config = General
#debug-on-errors=true
#**.coreDebug = true
 
# Parâmetros do Canal

**.channelControl.pMax = 10W
**.channelControl.alpha = 1.0
**.channelControl.carrierFrequency = 2100e+6Hz

# Parâmetros RLC

#**.fragmentSize=30B
#**.timeout=50s

# Parâmetros MAC

**.mac.queueSize = 1MiB
**.mac.maxBytesPerTti = 1KiB
**.mac.macDelay.result-recording-modes = all
**.mac.macThroughput.result-recording-modes = all

# Schedulers

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

# Camada Física

**.nic.phy.usePropagationDelay = true
**.nic.phy.channelModel=xmldoc("config_channel.xml")

# Parâmetros de feedback

**.feedbackComputation = xmldoc("config_channel.xml")

# Mobilidade

**.mobility.constraintAreaMinZ = 0m
**.mobility.constraintAreaMaxZ = 0m
**.mobility.constraintAreaMinX = 0m
**.mobility.constraintAreaMaxX = 2000m
**.mobility.constraintAreaMinY = 0m
**.mobility.constraintAreaMaxY = 2000m
**.mobility.initFromDisplayString = true

# Terminal
**.enableHandover = false

# Unidades móveis registradas na eNodeB
**.fbDelay = 1

# Geral

**.deployer.positionUpdateInterval = 0.001s
**.deployer.broadcastMessageInterval = 1s
**.deployer.numRus = 0
**.deployer.ruRange = 50
**.deployer.ruTxPower = "50,50,50;"
**.deployer.ruStartingAngle = 0deg
**.deployer.antennaCws = "2;" # !!MACRO + RUS (numRus + 1)

# AMC

**.deployer.numRbDl = 10
**.deployer.numRbUl = 10
**.deployer.rbyDl = 12
**.deployer.rbyUl = 12
**.deployer.rbxDl = 7
**.deployer.rbxUl = 7
**.deployer.rbPilotDl = 3
**.deployer.rbPilotUl = 0
**.deployer.signalDl = 1
**.deployer.signalUl = 1
**.deployer.numBands = 10
**.deployer.numPreferredBands = 1

# Parâmetros do módulo AMC

**.rbAllocationType = "localized"
**.mac.amcMode = "AUTO"
**.feedbackType = "ALLBANDS"
**.feedbackGeneratorType = "IDEAL"
**.maxHarqRtx = 3
**.pfAlpha = 0.95
**.pfTmsAwareDL = false

# Potência de Transmissão

**.ue*.nic.phy.eNodeBTxPower = 46
**.microTxPower = 30
**.*TxPower = 40

# Conexão de cada Unidade Móvel com a eNodeB

**.ue1.macCellId = 1
**.ue1.masterId = 1

**.ue2.macCellId = 1
**.ue2.masterId = 1

**.ue3.macCellId = 1
**.ue3.masterId = 1

**.ue4.macCellId = 1
**.ue4.masterId = 1

**.ue5.macCellId = 1
**.ue5.masterId = 1

**.ue6.macCellId = 1
**.ue6.masterId = 1

**.ue7.macCellId = 1
**.ue7.masterId = 1

**.ue8.macCellId = 1
**.ue8.masterId = 1

**.ue9.macCellId = 1
**.ue9.masterId = 1

**.ue10.macCellId = 1
**.ue10.masterId = 1

**.ue11.macCellId = 2
**.ue11.masterId = 2

**.ue12.macCellId = 2
**.ue12.masterId = 2

**.ue13.macCellId = 2
**.ue13.masterId = 2

**.ue14.macCellId = 2
**.ue14.masterId = 2

**.ue15.macCellId = 2
**.ue15.masterId = 2

**.ue16.macCellId = 2
**.ue16.masterId = 2

**.ue17.macCellId = 2
**.ue17.masterId = 2

**.ue18.macCellId = 2
**.ue18.masterId = 2

**.ue19.macCellId = 2
**.ue19.masterId = 2

**.ue20.macCellId = 3
**.ue20.masterId = 3

**.ue21.macCellId = 3
**.ue21.masterId = 3

**.ue22.macCellId = 3
**.ue22.masterId = 3

**.ue23.macCellId = 3
**.ue23.masterId = 3

**.ue24.macCellId = 3
**.ue24.masterId = 3

**.ue25.macCellId = 3
**.ue25.masterId = 3

**.ue26.macCellId = 3
**.ue26.masterId = 3

**.ue27.macCellId = 3
**.ue27.masterId = 3

**.ue28.macCellId = 3
**.ue28.masterId = 3

**.ue29.macCellId = 3
**.ue29.masterId = 3

**.ue30.macCellId = 3
**.ue30.masterId = 3

# positioning and mobility

*.ue*.mobilityType = "StationaryMobility"

#============= Application Setup =============
**.ue1.numTcpApps = 1
**.ue2.numTcpApps = 1
**.ue3.numTcpApps = 1
**.ue4.numTcpApps = 1
**.ue5.numTcpApps = 1

**.ue11.numTcpApps = 1
**.ue12.numTcpApps = 1
**.ue13.numTcpApps = 1
**.ue14.numTcpApps = 1
**.ue15.numTcpApps = 1

**.ue21.numTcpApps = 1
**.ue22.numTcpApps = 1
**.ue23.numTcpApps = 1
**.ue24.numTcpApps = 1
**.ue25.numTcpApps = 1


**.ue1.tcpApp[0].typename = "TCPBasicClientApp"
**.ue1.tcpApp[0].connectAddress = "server"
**.ue1.tcpApp[0].connectPort = 80
**.ue1.tcpApp[0].startTime = 1s
**.ue1.tcpApp[0].numRequestsPerSession = 1
**.ue1.tcpApp[0].requestLength = 150B
**.ue1.tcpApp[0].replyLength = 50B
**.ue1.tcpApp[0].thinkTime = 2s
**.ue1.tcpApp[0].idleInterval = 5s
**.ue1.tcpApp[0].reconnectInterval = 2s

**.ue2.tcpApp[0].typename = "TCPBasicClientApp"
**.ue2.tcpApp[0].connectAddress = "server"
**.ue2.tcpApp[0].connectPort = 80
**.ue2.tcpApp[0].startTime = 2s
**.ue2.tcpApp[0].numRequestsPerSession = 1
**.ue2.tcpApp[0].requestLength = 80B
**.ue2.tcpApp[0].replyLength = 20B
**.ue2.tcpApp[0].thinkTime = 2s
**.ue2.tcpApp[0].idleInterval = 5s
**.ue2.tcpApp[0].reconnectInterval = 2s

**.ue3.tcpApp[0].typename = "TCPBasicClientApp"
**.ue3.tcpApp[0].connectAddress = "server"
**.ue3.tcpApp[0].connectPort = 80
**.ue3.tcpApp[0].startTime = 3s
**.ue3.tcpApp[0].numRequestsPerSession = 1
**.ue3.tcpApp[0].requestLength = 80B
**.ue3.tcpApp[0].replyLength = 20B
**.ue3.tcpApp[0].thinkTime = 2s
**.ue3.tcpApp[0].idleInterval = 5s
**.ue3.tcpApp[0].reconnectInterval = 2s

**.ue4.tcpApp[0].typename = "TCPBasicClientApp"
**.ue4.tcpApp[0].connectAddress = "server"
**.ue4.tcpApp[0].connectPort = 80
**.ue4.tcpApp[0].startTime = 4s
**.ue4.tcpApp[0].numRequestsPerSession = 1
**.ue4.tcpApp[0].requestLength = 80B
**.ue4.tcpApp[0].replyLength = 20B
**.ue4.tcpApp[0].thinkTime = 2s
**.ue4.tcpApp[0].idleInterval = 5s
**.ue4.tcpApp[0].reconnectInterval = 2s

**.ue5.tcpApp[0].typename = "TCPBasicClientApp"
**.ue5.tcpApp[0].connectAddress = "server"
**.ue5.tcpApp[0].connectPort = 80
**.ue5.tcpApp[0].startTime = 5s
**.ue5.tcpApp[0].numRequestsPerSession = 1
**.ue5.tcpApp[0].requestLength = 80B
**.ue5.tcpApp[0].replyLength = 20B
**.ue5.tcpApp[0].thinkTime = 2s
**.ue5.tcpApp[0].idleInterval = 5s
**.ue5.tcpApp[0].reconnectInterval = 2s

#**.ue11.tcpApp[0].typename = "TCPBasicClientApp"
#**.ue11.tcpApp[0].connectAddress = "server"
#**.ue11.tcpApp[0].connectPort = 80
#**.ue11.tcpApp[0].startTime = 1s
#**.ue11.tcpApp[0].numRequestsPerSession = 1
#**.ue11.tcpApp[0].requestLength = 150B
#**.ue11.tcpApp[0].replyLength = 50B
#**.ue11.tcpApp[0].thinkTime = 2s
#**.ue11.tcpApp[0].idleInterval = 5s
#**.ue11.tcpApp[0].reconnectInterval = 2s

**.ue12.tcpApp[0].typename = "TCPBasicClientApp"
**.ue12.tcpApp[0].connectAddress = "server"
**.ue12.tcpApp[0].connectPort = 80
**.ue12.tcpApp[0].startTime = 2s
**.ue12.tcpApp[0].numRequestsPerSession = 1
**.ue12.tcpApp[0].requestLength = 80B
**.ue12.tcpApp[0].replyLength = 20B
**.ue12.tcpApp[0].thinkTime = 2s
**.ue12.tcpApp[0].idleInterval = 5s
**.ue12.tcpApp[0].reconnectInterval = 2s

**.ue13.tcpApp[0].typename = "TCPBasicClientApp"
**.ue13.tcpApp[0].connectAddress = "server"
**.ue13.tcpApp[0].connectPort = 80
**.ue13.tcpApp[0].startTime = 3s
**.ue13.tcpApp[0].numRequestsPerSession = 1
**.ue13.tcpApp[0].requestLength = 80B
**.ue13.tcpApp[0].replyLength = 20B
**.ue13.tcpApp[0].thinkTime = 2s
**.ue13.tcpApp[0].idleInterval = 5s
**.ue13.tcpApp[0].reconnectInterval = 2s

**.ue14.tcpApp[0].typename = "TCPBasicClientApp"
**.ue14.tcpApp[0].connectAddress = "server"
**.ue14.tcpApp[0].connectPort = 80
**.ue14.tcpApp[0].startTime = 4s
**.ue14.tcpApp[0].numRequestsPerSession = 1
**.ue14.tcpApp[0].requestLength = 80B
**.ue14.tcpApp[0].replyLength = 20B
**.ue14.tcpApp[0].thinkTime = 2s
**.ue14.tcpApp[0].idleInterval = 5s
**.ue14.tcpApp[0].reconnectInterval = 2s

**.ue15.tcpApp[0].typename = "TCPBasicClientApp"
**.ue15.tcpApp[0].connectAddress = "server"
**.ue15.tcpApp[0].connectPort = 80
**.ue15.tcpApp[0].startTime = 5s
**.ue15.tcpApp[0].numRequestsPerSession = 1
**.ue15.tcpApp[0].requestLength = 80B
**.ue15.tcpApp[0].replyLength = 20B
**.ue15.tcpApp[0].thinkTime = 2s
**.ue15.tcpApp[0].idleInterval = 5s
**.ue15.tcpApp[0].reconnectInterval = 2s

**.ue21.tcpApp[0].typename = "TCPBasicClientApp"
**.ue21.tcpApp[0].connectAddress = "server"
**.ue21.tcpApp[0].connectPort = 80
**.ue21.tcpApp[0].startTime = 1s
**.ue21.tcpApp[0].numRequestsPerSession = 1
**.ue21.tcpApp[0].requestLength = 150B
**.ue21.tcpApp[0].replyLength = 50B
**.ue21.tcpApp[0].thinkTime = 2s
**.ue21.tcpApp[0].idleInterval = 5s
**.ue21.tcpApp[0].reconnectInterval = 2s

**.ue22.tcpApp[0].typename = "TCPBasicClientApp"
**.ue22.tcpApp[0].connectAddress = "server"
**.ue22.tcpApp[0].connectPort = 80
**.ue22.tcpApp[0].startTime = 2s
**.ue22.tcpApp[0].numRequestsPerSession = 1
**.ue22.tcpApp[0].requestLength = 80B
**.ue22.tcpApp[0].replyLength = 20B
**.ue22.tcpApp[0].thinkTime = 2s
**.ue22.tcpApp[0].idleInterval = 5s
**.ue22.tcpApp[0].reconnectInterval = 2s

**.ue23.tcpApp[0].typename = "TCPBasicClientApp"
**.ue23.tcpApp[0].connectAddress = "server"
**.ue23.tcpApp[0].connectPort = 80
**.ue23.tcpApp[0].startTime = 3s
**.ue23.tcpApp[0].numRequestsPerSession = 1
**.ue23.tcpApp[0].requestLength = 80B
**.ue23.tcpApp[0].replyLength = 20B
**.ue23.tcpApp[0].thinkTime = 2s
**.ue23.tcpApp[0].idleInterval = 5s
**.ue23.tcpApp[0].reconnectInterval = 2s

**.ue24.tcpApp[0].typename = "TCPBasicClientApp"
**.ue24.tcpApp[0].connectAddress = "server"
**.ue24.tcpApp[0].connectPort = 80
**.ue24.tcpApp[0].startTime = 4s
**.ue24.tcpApp[0].numRequestsPerSession = 1
**.ue24.tcpApp[0].requestLength = 80B
**.ue24.tcpApp[0].replyLength = 20B
**.ue24.tcpApp[0].thinkTime = 2s
**.ue24.tcpApp[0].idleInterval = 5s
**.ue24.tcpApp[0].reconnectInterval = 2s

**.ue25.tcpApp[0].typename = "TCPBasicClientApp"
**.ue25.tcpApp[0].connectAddress = "server"
**.ue25.tcpApp[0].connectPort = 80
**.ue25.tcpApp[0].startTime = 5s
**.ue25.tcpApp[0].numRequestsPerSession = 1
**.ue25.tcpApp[0].requestLength = 80B
**.ue25.tcpApp[0].replyLength = 20B
**.ue25.tcpApp[0].thinkTime = 2s
**.ue25.tcpApp[0].idleInterval = 5s
**.ue25.tcpApp[0].reconnectInterval = 2s

**.server.numTcpApps= 15
**.server.tcpApp[*].typename = "TCPGenericSrvApp"
**.server.tcpApp[*].localAddress = ""
**.server.tcpApp[*].localPort = 80
**.server.tcpApp[*].replyDelay = 0s

**.tcpApp[*].dataTransferMode = "object"

.ned

package lte_7.simulations;

@license(LGPL);

import inet.networklayer.autorouting.ipv4.IPv4NetworkConfigurator;
import inet.networklayer.ipv4.RoutingTableRecorder;
import inet.networklayer.xMIPv6Support_None;
import inet.nodes.ethernet.Eth10G;
import inet.nodes.ethernet.Eth10M;
import inet.nodes.inet.Router;
import inet.nodes.inet.StandardHost;
import inet.world.radio.ChannelControl;
import lte.corenetwork.binder.LteBinder;
import lte.corenetwork.nodes.Ue;
import lte.corenetwork.nodes.eNodeB;


network LTE_7
{
    parameters:
        @display("i=block/network2;bgb=2000,2000;bgi=background/budapest");
    submodules:
        channelControl: ChannelControl {
            @display("p=50,25;is=s");
        }
        routingRecorder: RoutingTableRecorder {
            @display("p=50,75;is=s");
        }
        configurator: IPv4NetworkConfigurator {
            @display("p=50,125");
            config = xmldoc("demo.xml");
            dumpTopology = true;
        }
        binder: LteBinder {
            @display("p=50,175;is=s");
        }
        server: StandardHost {
            @display("p=201,45;is=n;i=device/server");
        }
        router1: Router {
            @display("p=360,50;i=device/smallrouter");
        }
        eNodeB1: eNodeB {
            @display("p=391,312;is=vl");
        }
        ue1: Ue {
            @display("p=542,243");
        }
        ue2: Ue {
            @display("p=267,195");
        }
        ue3: Ue {
            @display("p=245,371");
        }
        ue4: Ue {
            @display("p=406,478");
        }
        ue5: Ue {
            @display("p=511,439");
        }
        ue6: Ue {
            @display("p=468,167");
        }
        ue7: Ue {
            @display("p=360,144");
        }
        ue8: Ue {
            @display("p=222,269");
        }
        ue9: Ue {
            @display("p=293,447");
        }
        ue10: Ue {
            @display("p=557,342");
        }
        ue11: Ue {
            @display("p=924,312");
        }
        ue12: Ue {
            @display("p=1137,206");
        }
        ue13: Ue {
            @display("p=979,35");
        }
        ue14: Ue {
            @display("p=856,256");
        }
        ue15: Ue {
            @display("p=1106,288");
        }
        ue16: Ue {
            @display("p=1137,114");
        }
        ue17: Ue {
            @display("p=841,167");
        }
        ue18: Ue {
            @display("p=1076,64");
        }
        ue19: Ue {
            @display("p=878,75");
        }
        ue20: Ue {
            @display("p=1016,320");
        }
        ue21: Ue {
            @display("p=904,751");
        }
        ue22: Ue {
            @display("p=1003,768");
        }
        ue23: Ue {
            @display("p=1119,647");
        }
        ue24: Ue {
            @display("p=794,599");
        }
        ue25: Ue {
            @display("p=841,502");
        }
        ue26: Ue {
            @display("p=1100,560");
        }
        ue27: Ue {
            @display("p=949,463");
        }
        ue28: Ue {
            @display("p=1092,729");
        }
        ue29: Ue {
            @display("p=819,705");
        }
        ue30: Ue {
            @display("p=1055,493");
        }

        eNodeB2: eNodeB {
            @display("p=988,144;is=vl");
        }
        eNodeB3: eNodeB {
            @display("p=964,599;is=vl");
        }
        router2: Router {
            @display("p=651,81;i=device/smallrouter");
        }
        router3: Router {
            @display("p=651,311;i=device/smallrouter");
        }
    connections:
        eNodeB1.ppp <--> Eth10M <--> router1.pppg++;
        router1.pppg++ <--> Eth10M <--> server.pppg++;
        eNodeB2.ppp <--> Eth10M <--> router2.pppg++;
        router2.pppg++ <--> Eth10M <--> router1.pppg++;
        router3.pppg++ <--> Eth10M <--> eNodeB3.ppp;
        router3.pppg++ <--> Eth10M <--> router1.pppg++;
}

Many Thanks for that.
Gustavo

Giovanni Nardini

unread,
Jun 27, 2016, 9:37:53 AM6/27/16
to OMNeT++ Users
Dear Gustavo,

in your NED file, please try to declare all the three eNodeBs first, then declare the UEs (i.e. eNodeB2 and eNodeB3 must appear before all UEs).

Best regards.
Giovanni

Gustavo Troiano

unread,
Jun 29, 2016, 4:34:52 PM6/29/16
to omn...@googlegroups.com
Dear Giovanni,

Many thanks for your reply. I've done what you said and the problem has been solved.

I'd like to ask you one more thing:

I am trying to send a TCP message to the server from all the Ues, which are attached to 3 eNodeBs, connected through X2 interface (star topology). However, only the Ues attached to eNodeB1 are being successful in sending the message.
It is possible to see that the others Ues (attached to eNodeBs 2 and 3) try to send something, but the messages don't get through. Can you give me a hint how to overcome this problem? Is there any flag to set up or network resources to configure?

It seems very strange, because when I try using the VoiP applications (like in the SimuLTE examples), everything works fine.

p.s: In my .ini file above, the TCP application is wrong, but I have already fixed it. I have a separate port for each TCP application now.

I am not an LTE expert and I would appreciate your help again.

Congratulations for your work in simuLTE.

Regards,
Gustavo. 

--
You received this message because you are subscribed to a topic in the Google Groups "OMNeT++ Users" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/omnetpp/a-wbeh1D16s/unsubscribe.
To unsubscribe from this group and all its topics, send an email to omnetpp+u...@googlegroups.com.
Visit this group at https://groups.google.com/group/omnetpp.
For more options, visit https://groups.google.com/d/optout.

Giovanni Nardini

unread,
Jun 30, 2016, 4:27:01 AM6/30/16
to OMNeT++ Users
Can you please show me the demo.xml file you are using?

Gustavo Troiano

unread,
Jun 30, 2016, 8:35:56 AM6/30/16
to omn...@googlegroups.com
Follow attached my multi.xml file and my .ini and .ned file, in case you need to take a further look.

Gustavo.
omnetpp.ini
package.ned
multi.xml

Giovanni Nardini

unread,
Jun 30, 2016, 9:05:52 AM6/30/16
to OMNeT++ Users
I think you have simply exchanged the positions of eNodeB2 and eNodeB3, i.e. users attached to eNodeB2 are close to eNodeB3 and vice versa! 
In that case, users get very low CQI and cannot transmit.

Best regards.
Giovanni

Gustavo Troiano

unread,
Jul 3, 2016, 12:54:16 PM7/3/16
to omn...@googlegroups.com
Thanks again Giovanni. The scenario implemented is working now!

I've had a problem with std::bad_alloc function that is called after some simulation time. I think this problem is related to the amount of memory used by OMNeT++ when running SimuLTE. Can you give me a hint about how to fix this problem?

Another issue is about throughput measurement in the simulation. I'd like to know how would you proceed to make this measurement.

I'm sorry to bother you with all those questions. Although my background is telecommunications, I've been working with power systems for a while and I am starting to study LTE now. My idea is to use SimuLTE to test a SmartGrid system applied in a power distribution network. It is part of my Master's degree dissertation and we plan to write a paper in the future.

Again, the SimuLTE website and the framework is excellent. I've been reading your papers and they are helping me a lot in learning LTE.

Thanks again man. I've already helped me very much.
Gustavo. 

Gustavo Troiano

unread,
Sep 12, 2016, 9:05:31 AM9/12/16
to OMNeT++ Users
Hi guys.

Sorry to bother you again, but I am just about to finish the implementation of a simulation scenario and I think if I solve this problem, my tests regarding LTE will be done.

I am implementing two scenarios with one Server sending TCP packets to 154 Hosts.

1st Scenario:

-- The Server is a StandardHost node sending TCP packets (through a wired connection) to all the Ues at a 15s interval during 3600s. The Ues are all spread in an area covered by 12 eNodeBs, all of them being tserved by eNodeB1 through interface x2.
-- The simulation seems to be running fine. I have simulated for 600s and the packets are flowing through the network as expected. However, if I try to simulate for 3600s, more precisely on 1284.085s one of the Ues throws an error of std::bad_alloc related to the module LTERlcUm. I have already tried to increase the total-stack parameter but the error persists (not at the same time, but close). The print related to this error is attached.

2nd Scenario:

-- The scenario is basically the same as the above, but instead of the Server being a StandardHost, it is a Ue sending TCP packets to the others. Again, the simulation works fine if the time is set for 200s, for example. However, in 247.124s (for a 3600s total time) the simulation simply freezes and no error is thrown by the system.

Anyway, I am just about to finish my implementation (of course, there may be minor issues to fix), but I am really stuck on it. Is there any specific parameter to increase or something that could fix this?

Thanks.

Gustavo
To unsubscribe from this group and all its topics, send an email to omnetpp+unsubscribe@googlegroups.com.
Erro_Bad_Alloc.png
Reply all
Reply to author
Forward
0 new messages