Running Simu5G as a network emulator
Running Simu5G as a network emulator means that the simulation must run in real time and must be able to communicate with the real world, i.e. capturing/injecting packets from/to real networks. This is especially useful for integrating Simu5G with external real-world applications and frameworks. For example, it allows one to make Simu5G interoperable with the Intel OpenNESS framework.
OpenNESS is an open source framework that allows to run application on a real Mobile Edge Computing environment. More information on the OpenNESS website.
Check out our PIMRC 2020 paper on this topic:
- G. Nardini, G. Stea, A. Virdis, D. Sabella, P. Thakkar, "Using Simu5G as a Realtime Network Emulator to Test MEC Apps in an End-To-End 5G Testbed", PiMRC 2020, London, UK, 1-3 September 2020
An emulation demo
With reference to the video below, the "sender" PC on the left sends 2.5kB packets to the "receiver" laptop on the right every 100ms, and the PC in the middle runs Simu5G as an emulator, transporting packets between the two endpoints. On receipt of a packet, the receiver sends back an ACK. TCP is used as a transport protocol. The scenario emulated in Simu5G is displayed on the middle screen, and it contains one UE (the red dot) that moves away from its serving gNB (the triangle in the central hexagon) and back again. Neighboring gNBs interfere on the downlink spectrum. The deployment bandwdith is kept artificially low, to saturate the radio frame. Within Simu5G, the sender is connected to a remote server (not shown in the picture) and the receiver is connected to the moving UE. The sender screen displays a moving-window average of the round-trip time (RTT) of the communication, measured at the application layer. The RTT climbs up as the UE moves away from the gNB, because its CQI goes down, hence more radio resources are used for the same transmission, and then it climbs down again as the UE moves back towards the gNB. Local delay spikes can be observed, corresponding to H-ARQ retransmissions.
Running an emulation example with Simu5G
Emulation support will be included in the next stable release of Simu5G. In the meantime, you can run a network emulation with Simu5G by downloading the code directly from the GitHub repository. Please note that such version requires OMNeT++ 6.0.pre10 and INET 4.3.2. As per INET instructions, emulation is only available on Linux OS.
The Simu5G repository comes with two (single-machine) emulation examples, which you can use as a basis to develop your own emulation testbed:
- The "emulation/extserver" folder includes one emulated network composed of two UEs connected to one gNB, one UPF, one router and one external (real) server. The external server sends 10MB to ue1 using TCP (in the downlink), whereas ue2 sends 10MB to the external server using TCP (in the uplink);
- The "emulation/extserver" folder includes one emulated network composed of one UE connected to one gNB, one UPF, one NAT router, one router, one external (real) server and one external (real) client. The external client application (i.e. associated to the UE in the emulation) sends 10MB using TCP to the external server application, traversing the emulated 5G network.
Detailed instructions can be found in the README files included in the above folders.
Back to Guides