Workshop on ns-3

Research Article

Improving ns-3 Emulation Performance for Fast Prototyping of Network Protocols

  • @INPROCEEDINGS{10.1145/2915371.2915374,
        author={Helder Fontes and Tiago Cardoso and Manuel Ricardo},
        title={Improving ns-3 Emulation Performance for Fast Prototyping of Network Protocols},
        proceedings={Workshop on ns-3},
        keywords={ns-3; Network Simulation; Network Emulation; Fast Prototyping},
  • Helder Fontes
    Tiago Cardoso
    Manuel Ricardo
    Year: 2016
    Improving ns-3 Emulation Performance for Fast Prototyping of Network Protocols
    DOI: 10.1145/2915371.2915374
Helder Fontes1, Tiago Cardoso1, Manuel Ricardo1
  • 1: INESC TEC and Faculdade de Engenharia, Universidade do Porto, Portugal


A common problem in networking research and development is the duplicate effort of writing simulation and implementation code of network protocols. This duplication can be avoided through the use of fast prototyping development processes, which enable reusing simulation code in real prototyping and in production environments. Although this functionality is already available by using ns-3 emulation, there are still limitations regarding the additional packet processing that emulation introduces, which degrades the node's performance and limits the amount of network traffic that can be processed. In this paper we propose an approach to reduce the performance problem associated with fast prototyping that consists in migrating data plane operations processing to outside of ns-3. In a well-designed network, most of the traffic should be data. By moving the data plane operations outside of ns-3 the overhead associated with this kind of traffic is greatly reduced, while control plane protocols may still be reused. In order 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.