Can INET be used in parallel simulation?

146 views
Skip to first unread message

cka...@seas.upenn.edu

unread,
Jan 12, 2018, 3:56:09 PM1/12/18
to OMNeT++ Users
I'm trying to run a TCP simulation that uses INET over the MPI implementation of the parallel simulation library, however I'm running into issues. I'm able to run my simulation in serial, but get an error when trying to run in parallel. I based my simulation off of the tcpclientserver example, and I'm running OMNeT++ version 5.1.1 and INET version 3.6.3. I'm getting the following error:

<!> Error: L3AddressResolver: IInterfaceTable not found as submodule  `interfaceTable' in host/router `Many_To_One.One' -- in module (inet::TCPSessionApp) Many_To_One.Many0.tcpApp[0]

where my network name is Many_To_One, and One is a StandardHost. Can INET simulations be run in parallel? What might the bug be?

Thanks,
Charlie Kazer

Rudolf Hornig

unread,
Jan 15, 2018, 5:16:16 AM1/15/18
to OMNeT++ Users
Parallel simulation require that modules communicate ONLY via message passing. This means that if you want to use parallel simulation you MUST NOT use any modules that communicate with direct method calls or signals across partitions. The above error is happening because the address resolver is available only in a single partition but a module wanted to access it directly from a different partition.

Generally, INET was not designed be easily usable in a parallel simulation. You CAN create certain scenarios that work as long as you take care that singleton modules (configurator, mediums, visualization modules etc.) are available in all partitions, but you have to be carefule how you set up those modules.

e.g.: It would be quite easy to simulate two totally independent (non overlapping) wireless networks by running one of the network in one partition whle the other network in an other partition. Modules responsible for medium access and configuration should be placed in each partition. Once that than, the two network may be connected with a wired connection which occasionally exchanges information between the two network. But this can be used only if the simulated network is suitable for this approach.

As you are running a statistical simulation, you should anyway run your simulation several times with different seeds, so it makes more sense (and it is much easier) to use your several CPU cores to execute different runs of your simulation at the same time. 

A paper on creating parallel simulations on INET: https://arxiv.org/abs/1409.0994

 

Thanks,
Charlie Kazer
Reply all
Reply to author
Forward
0 new messages