Assignment 2: Network simulation

Background

The goal of this assignment is to experience the contrast between performing the performance analysis of a computer network through emulation (as done in assignment 1) and simulation. It is typical to assess new algorithms with simulation, and validate the simulation through a real-world or emulation study.

Motivation

Simulation is usually used for evaluating new mechanisms before they become available for emulation; also if an algorithm is theoretically intractable and if a mechanism needs large-scale validation. The latter is quite typical in industry, where an ISPs may use a high-end commercial simulator to assess the impact of a network upgrade on the overall network performance. This is probably the only drag-and-drop usage scenario for network simulators; most other uses concern testing and comparison of algorithms and involve programming.

In this assignment, you experiment with the use simulation and emulation together to validate the one with the other. This validation is usually achieved by performed repeated tests and verifying that the measurement results of both approaches lie in each others' confidence intervals.
 
You should demonstrate how you can use logging and tracing to verify that simulation and emulation actually do implement the same mechanisms, or rather, that the simulation provides a sufficiently good approximation of the emulation, and where that approximation fails.
 

Task

Compare the downloading performance of 2 of Linux's TCP variants using the simulator ns2

You can use your own complete installation of ns2, or you can compile and run it on one of the computers that we provide for this task.

  1. Adapt one of ns2's test setups (found in ns-2.34/tcl/test of your NS2 installation) to simulate the 3-machine setting used in Assignment 1. Test scripts that are meant for comparing TCP New Reno and TCP Cubic exist. Keep in mind that a download operation is characterized by an application that tries to move data as quickly as possible.
  2. Configure the simulation. Use a bandwidth of 10 Mbps, a latency of 100ms and no random packet loss or jitter. Note that every simulated link has latency; the total latency should be 100ms.
  3. Parameter 1: Select identical TCP variants on the end hosts for each test run. You must test the variants New Reno and CUBIC.
  4. Parameter 2: For various tests, change the queue length on both outgoing interfaces.
  5. Parameter 3: Measure the download performance between server and client with a varying number of concurrent TCP connection, which are used for separate concurrent downloads. Note that research indicates that you should expect interesting differences only if the number of concurrent connections is very small.
  6. Perform tests to answer the following 2 questions:
    • How do the simulated performance results compare to the emulated performance results that you achieved in Assignment 1?
    • How does the temporal detail change that answer?
  7. Write a report. ?Choose appropriate means of presenting the answers to these questions graphically. The report must be no longer than 6 pages.

Assignment

Solve the task in a group of two (or alone). Present your experiences and results orally in the course INF507x on September 30, 8:15. It is mandatory to write a report that in the specified format and deliver it by September 29, 8:15, using Devilry. Keep in mind that (a) it is possible to update the report until November, and (b) you will be asked to choose 4 out of 6 reports for evaluation.

It is mandatory to present your group's results on September 23 (your group must present 5 out of 6 times). You should not prepare a formal presentation (like a Powerpoint foilset); however, you must show the measurement results that are included in your report and that you discuss in class. The discussions in class are supposed to help you improve your report for final delivery. It is recommended that you have a web page or a PDF document that is web-accessible from an arbitrary computer.

Machines

To approach this assignment, you need 1 machine. ns2 runs as a process in user space and requires no virtual machines. However, its compilation depends on a variety of other tools; downloading the ns2-allinone package provides you with most of them. ns2 runs on all Unix variants; the current ns2-allinone package seems to prefer gcc-4.4 (and not the latest compiler, gcc-4.5).

When you use the machines that we provide, you must log into oslo.ndlab.net, and from there, continue via ssh to one of the simulation machines, inf5071-10 / -11 / -12 / -13 / -14 / -15. Download ns2-allinone, extract everything, but configure and compile only the ns2 subdirectory. You don't need the rest (unless you want to test graphical output with nam for your enjoyment). NOTE: When you configure ns2 on the machines that we provide, you must call

      CC=gcc-4.4 CXX=g++-4.4 ./configure

The latest gcc doesn't work and we removed it from the computer.

The machines that we provide are now available. You can reserve access to them through our booking system at http://booking.ndlab.net after receiving a user ID and password. Time-sharing on these machines is possible. This will obviously not change the simulation results.

Report

The written report has up to 6 pages in ACM format (see right column). It is expect that such a report includes: a description of the assignment, a description of the testbed, an explanation of the metrics that were chosen to present the measurement results visually, graphs showing the results, an interpretation of the graphs.

The results must be based on the own tests.

The report is evaluated by writing quality, by the trustworthiness and correctness of the results. The evaluation does not consider whether related work (citations of other papers) is included. It is not necessary to cite existing work in this report.

Published Sep. 13, 2011 5:42 PM - Last modified Sep. 20, 2011 3:32 PM

Just a warning. I have now wasted one workday trying to build ns2 on Ubuntu 11.04. I'm probably doing something stupid, but i reccomend against doing the same mistake.

kjetra@uio.no - Sep. 20, 2011 11:32 AM

Think this did it for me(If I remember correctly):

http://sourceforge.net/projects/nsnam/files/allinone/ns-allinone-2.34/

sudo apt-get install gcc-4.4 g++-4.4

extract the ns-allinone-2.34 where you want it and cd into it

CC=gcc-4.4 CXX=g++-4.4 ./install

adrianhj@uio.no - Sep. 20, 2011 3:33 PM

Log in to comment