Network Emulation
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
-
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 .
-
Find a sufficiently complex real-life distributed
(network-based) application, such as
- a popular multi-user computer game
- scientific application, such as fluid dynamics simulation,
or
- streaming multimedia client/server.
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.
-
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).
-
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:
- a brief description of the application
- the sequence of steps taken to run the application
over an emulated network configuration
- any problems encountered and corresponding solutions
- 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