Network Emulation


Sponsors

Kalyan Perumalla 320 CoC
kalyan@cc.gatech.edu
and
Richard Fujimoto 319 CoC
fujimoto@cc.gatech.edu

Area Systems

Problem

Run a real-life network application over different emulated network configurations. This will help get you exposed to network emulation, network simulation, parallel/distributed simulation, linker/loader tricks, etc., all together at once!

Background

Network emulation is useful in testing applications and protocols over networks that do not physically exist and/or hard to control/re-create. In network emulation, application data is routed through a software model of a network, instead of through a physical network. Typically, a network simulator (e.g. ns for TCP network models) is used to model the intermediate virtual network. Network characteristics of choice (e.g. packet delays and losses) are achieved by selecting appropriate behavior in the software model. The applications themselves are oblivious to the fact that their data is going through a software model of a virtual network as opposed to going through physical networks.

In some of our recent research work, we are developing next generation network emulation tools to enable emulation of large network configurations, addressing issues such as transparent integration of precompiled applications, and simulating large network configurations in real-time. Specifically, we have developed software to run pre-compiled applications over virtual network configurations of choice. The network is specified and simulated using the ns simulator (actually, pdns). In this project, you will use our emulation software to evaluate the performance of a real-life network application running over different virtual network configurations.

Steps

  1. Get acquainted with our emulation system (veil library, backplane, and pdns), so that you can run applications over emulated networks. See our network emulation project webpage .
  2. Find a sufficiently complex real-life distributed (network-based) application, such as It is not necessary for the application to come with sourcecode (i.e., it is OK if it is only available in binary). However, sourcecode may be useful to track down and fix any problems encountered during emulation. Our emulator currently works only with single-process applications, so the client needs to be a single UNIX process (same constraint for the server). It is best to talk to us before finalizing the selection of the application.
  3. Get the application running over our emulation system. This may or may not require some modifications to the network emulation software, depending on the type of application. Ideally, the application itself will require no modifications -- the same application that runs on physical networks should run unmodified on emulated network. Our emulation software has been tested on Solaris and Linux boxes (Linux is the preferred platform).
  4. Vary the network configuration over which the application runs, and quantitatively (or qualitatively) evaluate the application's performance over a range of network characteristics (e.g. high or low latency links, large or small bandwidth links, etc.). For example, for streaming multimedia client/server, vary the network latency and/or bandwidth, to visually observe their effect on the multimedia quality displayed at the client.

Deliverables

A short writeup (3-6 pages) with the following:
  1. a brief description of the application
  2. the sequence of steps taken to run the application over an emulated network configuration
  3. any problems encountered and corresponding solutions
  4. documentation of application performance on at least three different network configurations representing extremes and average (e.g. "fast", "medium" and "slow" network)
Additionally, a demo of the application running over a sample emulated network configuration would be appropriate, especially for graphical applications.

Evaluation

Based on report submitted to sponsor in time, together with a demo of the application running over emulated network.

Resources