Submit a project proposal by Wednesday, November 25.
Demo on Thursday, December 10 or Friday, December 11.
Assignment Contact: If you work on the default choice 1, you should direct all your questions to the instructor. If you work on the default choices 2/3/4, your contact person is the TA. If you want to design a new assignment outside of the default choices, your contact person is the instructor. Regardless who your assignment contact is, you should always sign up your demo slot with the TA.
This is an open choice assignment. You can choose from four default choices that are given below. But you can also design a brand-new assignment on something that you have particular interests in. If this is what you want, please inform the instructor as soon as possible. If needed, the instructor may help you to define a more specific scope. Any idea can be considered as long as the topic is substantially related to computer networks. Please note the project proposal deadline on Wednesday, November 25.
For this assignment, you can choose to work in a team of two if the scope justifies that. If you are not sure if your project warrants a two-person group, please contact the instructor.
In some projects, you will need to work on a wide-area network testbed. If this applies to you, you should arrange to see the instructor to set up an account on the PlanetLab testbed.
Demo:
You need to set up a 30-minute demo with the TA. In the demo you need to show us
how your project works (or partially works) with your own test cases.
(Prepare the testing cases before the demo!)
We may ask you to run some of our own test cases and ask some questions about your
design & implementation. The demo should occur on December 10th or December 11th.
Turn-in:
By Wednesday, November 25, you need to submit
a project proposal. We will not grade the proposal but we need to see evidence
that you have started working on it by that time. In the proposal, you should
describe a concrete goal of your project, any related materials (papers and web
resources) you have read, and anything else you feel relevant. Please keep the
proposal within two pages. You need to submit a proposal even if you choose one
of the default assignment choices. We only provide rough descriptions for them
here and your proposal should list more concrete project goal.
The project proposal should be in the PDF or Postscript format.
By the time of your demo, you should turn in your source files, a makefile if needed, and a project report. The project report should clearly describe your overall design, any implementation detail that you deem interesting, how your programs should be compiled and run, and what each member of your group has done. When appropriate (for some assignments), your report should also describe the analysis result for the assignment. In addition to electronically turning in the project report, please also prepare a printed copy at the demo time.
The rest of this page describes the default assignment.
Choice 1: Wide-area Network Bandwidth Measurement
Your task is to develop a tool to measure the network bandwidth between
any two nodes in the wide-area network. Your tool should tolerate the unstable nature
of wide-area networks. In other words, although the network itself is not stable (with
packets loss and cross traffic that affects your measurements), the measured bandwidth
between the same two nodes should NOT diverge too much during different runs of your
tool and it should correspond well to the actual available bandwidth between the two nodes.
References:
Choice 2: Query Sniffing and Analysis in Gnutella Network
You first need to get a machine in the department lab connected to the
global Gnutella Network. Then you need to monitor all the queries forwarded to your
machine. Last but not least, after you record a large number of queries, you need to
analyze them (using whatever method) and find out if there is any interesting
information you can extract from them. For example, do the queries follow any patterns?
50% of your grade will be based on the results/findings of your analysis.
Choice 3: Web Data Crawling and Collecting
You are asked to build a Web crawler capable of operating in two modes:
1) run at a rate of N pages/second; 2) run at a rate of N bytes/second. With
a given starting Web page, your crawler should crawl that page, then follow its hyperlinks
to crawl more pages and so on. It should recursively follow the hyperlinks until you
stop it or there is no more linked pages to read. In the demo, we will randomly specify
a starting page. You should be very carefully in controlling the bandwidth your crawler
may use.
To avoid undesirable impact on other Web sites, you should not test on pages outside the
department until you are quite sure that your program can run properly in the two required
modes. After you fetch the pages, you should save them to the local hard drive, e.g., a
sub-directory in the "/tmp" partition. Please delete them after you are done
with your tests.
Warning: there are some web sites that do NOT welcome
crawlers. Before your program tries to crawl on a web site (e.g., www.google.com), it
should check if there is a robots.txt file on that site (e.g., www.google.com/robots.txt).
See the Robot Exclusion
Standard for more information about how robots.txt works.
Choice 4: Web Proxy Server on A Low-power Wireless Router
We have recently acquired
a low-power device to serve as a wireless router.
This device has limited computing capacity (233MHz CPU) and a small amount of memory (128MB).
It'd be interesting to deploy a web proxy server (which normally runs on a
full-power computer) and analyze its behavior. This will be your task in this project.
Note that in addition to deploying the proxy server, the bulk of your effort should
be devoted to understanding its behavior. In particular, you should measure the maximum
throughput of the proxy server and understand the bottleneck that limits its performance
(e.g., CPU, memory space, or network capacity). An additional interesting subject is
to understand the operating system resource allocation between network routing and the
web proxy server. This may suggest potential Denial-of-Service vulnerabilities on the
dual-purpose device.
In this project, you will work very closely with the TA. At the same time, you are expected to solve problems on your own initiative (e.g., installing a needed software tool on the device). If you are not prepared to face and tackle unpredictable challenges, this assignment is not for you. Given our limitation of a single device, we will only allow a single group to work on this project. If you want to know more about this project or intend to work on it, please contact the TA.