Open Network Emulator: A Parallel Direct Code Execution Network Simulator
In this paper, we present the Open Network Emulator (ONE) a network simulator that combines the controllability and scalability of simulation with the direct code execution properties of emulation and experimental test beds. ONE has two novel features. First is a compiler framework that automatically transforms existing network application/protocols written in imperative languages such as C and C+ into composable modules, which can then be combined to create arbitrarily complex network stacks. This compiler framework obviates the need for heavyweight virtualization and enables ONE to execute multiple virtual hosts, each with its own application and network protocol stack, within a single process. The second novel feature of ONE is a new time model called Relativistic Time that combines the controllability of virtual time with the fidelity of real time. To implement ONE, we ported the complete TCP/IP stack from within the Linux kernel (including the sockets interface, TCP, UDP IPv4 and v6, ICMP, IGMP, traffic shaping, net filters, routing and ARP) and well known configuration and packet tracing applications such as ifconfig and tcpdump. Existing network applications can be compiled and instantiated within ONE without requiring any source code change. We validated the fidelity of ONE by comparing the packet arrival times of multiple traffic generators on a real network against the arrival times with ONE emulation. Our preliminary performance evaluation of ONE on an 8 core system shows that ONE is highly efficient and can run over 450 virtual hosts connected over point to point gigabit links, while still retaining linear behavior.
2012 ACM/IEEE/SCS 26th Workshop on Principles of Advanced and Distributed Simulation