Project Description
Introduction
Network emulation, in which real systems interact with a network simulation, is a common evaluation method in computer networking research. Until now, the simulation in charge of representing the network has been required to be real-time capable, as otherwise a time drift between the simulation and the real network devices may occur and corrupt the result.
Synchronized Network Emulation: The Concept behind SliceTime
For this purpose we have developed the concept of Synchronized Network Emulation , which comprises three types of components:
- One or more network simulations model an arbitrary computer network, for instance a WAN scenario or a mobile network which also may involve node mobility. We do not put any restrictions on the network simulation and its run-time performance; it hence enables non-realtime network simulations.
- Virtual Machines host a legacy operating system and the communication software to be investigated in the simulated network
- The central synchronization component aligns the execution of all VMs and the network simulation. The synchronization is based on the provision of logical discrete time slices to all synchronized VMs and simulations. After one time slice, typically in the magnitude of a couple hundreds of microseconds, the components block their execution. The overall execution resumes when all clients have finished the time slice and after a new time slice has been assigned
Our paper SliceTime: A platform for scalable and accurate network emulation (NSDI 2011) provides an elaborate discussion of the used synchronization algorithm.
Implementation
- A ns-3 network simulation with SliceTime-specific extensions
- A modified Xen hypervisor and a set of Xen VMs (also called domains)
- The synchonization component. It is a C++ server application that provides the time slices to the network simulation and the Xen VMs
The overall architecture of SliceTime is depicted above. An in-depth discussion of all component implementations and their interplay can be found in our 2011 NSDI paper.
Downloads
Source Code
Current release (v0.4 / July 22nd 2011):
synchronizer.tgz Synchronizer for Slicetime
kernelsync.tgz the kernel synchronization module
linux-2.6.18.-xen-slicetime.tgz Linux kernel for Dom0
xen3.2-slicetime.tgz Modified Xen Hypervisor
tap-tunnel.tgz udp-based tunnel to interconnect ns-3 with Xen domains
ns-3.7-slicetime.tgz ns-3.7 with support for synchronization and WiFi emulation
wifi-emu-kern.tgz Linux WiFi driver for emulation