Improving ns-3 Emulation Performance for Fast Prototyping of Network Protocols - Tiago Bluemel Cardoso (2015)
The development of new protocols for communication systems usually starts in a network simulator, such as ns-3, where the variables that influence the network scenario can be easily controlled to create specific and reproducible test conditions. The results of such simulations are then analyzed and used to tweak and improve the protocol. After this phase, the protocol must also be tested in a real environment to obtain more accurate and credible results. To do this, the simulation code must be ported to a real system. This process of porting code from the simulation to the implementation of the protocol leads to an increase in development time and in the chance of introducing errors. Fast prototyping is a protocol development process that attempts to solve this problem by reusing ns-3 simulation code for the implementation. This is possible because ns-3 provides emulation capabilities that allow nodes inside the simulator to communicate with those outside through an emulated network device. The problem with this approach is that emulation introduces overhead to packet processing which degrades the node's performance limiting the amount of network traffic that can be processed. We propose an approach to reduce the performance problem associated with fast prototyping that consists in migrating the data plane operations processing to outside of ns-3. In a network node, there are two planes of operation: control and data. The control plane is responsible for discovering and maintaining network routes and ensuring connectivity. The data plane uses the routing information generated by the control plane to forward network packets. In a well designed network, most of the traffic corresponds to data. By moving the data plane operations outside of ns-3 the overhead associated with this kind of traffic is greatly reduced. To validate our proposed solution, we extended the Wireless Metropolitan Routing Protocol (WMRP) and Optimized Link State Routing (OLSR) protocols to use the developed architecture, tested their performance in real environments and verified the amount of code reuse between the simulator and the real system.