CS199-6 Assignment 1Due: January 28, 2002 OverviewIn this assignment, students will form teams of 2-3 and implement a simple PlanetLab service that provides a parallel traceroute capability. The primary goals of this exercise are mainly to give you a feel for what it's like to built a wide-area application, what it's like to deploy it, and to learn something about the structure of the Internet at the same time. Given an arbitrary target machine T and a set of servers S1, S2, ..., Sn running on a set of PlanetLab nodes, your service will produce the set of routes from each server Si to the target T using traceroute. You will produce both the servers that run on the nodes and a client that anyone can use to access your service. The output from your client should have the following format: <S1>: <IP 1> <IP 2> ... <T> <S2>: <IP 1> <IP 2> ... <T> .... <Sn>: <IP 1> <IP 2> ... <T>For extra credit (and fun), teams may also wish to implement various enhancements to their service. For example, one possibility is to take the set of routes produced by your traceroute client program and produce the routing tree with root T and leaves S1, S2, ..., Sn that shows the paths traversed in getting to T either textually or graphically. Another possibility is to enhance your service's performance to increase its throughput (e.g., by multithreading each server so multiple requests can be handled in parallel). Yet another possibility is to add mechanisms in your service to make it robust to failures. For example, what happens if one of your traceroute server processes crash? Implementing your serviceTo implement and deploy your service, each team will be a given a slice consisting of eight PlanetLab nodes. Access to nodes in a slice is done using SSH with RSA authentication. Each team should submit one or more SSH public keys that will be used to access your slice and send them to bnc@intel-research.net. Once your slice has been created and your SSH public keys distributed, you will then have SSH access to the following machines (text file with hostnames):
% ssh-keygen -t rsa -f planetlab Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in planetlab. Your public key has been saved in planetlab.pub. The key fingerprint is: 6d:03:c8:39:06:5a:1d:51:fb:9d:c9:35:8b:64:45:df bnc@berkeley-desk21 % ls -l planetlab planetlab.pub -rw------- 1 bnc dusers 951 Jan 22 16:29 planetlab -rw-r--r-- 1 bnc dusers 229 Jan 22 16:29 planetlab.pub
Once you've created your key pair, send us your public
key (i.e., planetlab.pub) via email. Once your
key has been distributed to your slice, you will then be
able to get a shell in a sandboxed environment on any of
the nodes in your slice using SSH, as shown below (e.g.,
suppose your team's slice name is alpha). % ssh planetlab-1.cs.princeton.edu -l alpha -i planetlab For traceroute, you should use the traceroute binary found in the following Linux RPM package (download plkmodutil-1.0.2-planetlab.i386.rpm) when implementing your service: The reason a special version of traceroute is needed is due to the way the PlanetLab kernel handles raw socket access. To install the RPM above on a node, simply become root and do the following:% su % rpm -ivh plkmodutil-1.0.2-planetlab.i386.rpm What to turn inEach team should email us a URL to a web page that includes the following:
To test the base functionality of your service, we will start by running your traceroutesvr program on a set of PlanetLab nodes. We will then run your tracerouteclnt program against a set of target IP addresses, examine the output, and verify your service's correctness. (We will run this on a standard Linux machine running Redhat 7.3.) Assuming that goes well, other aspects of your service that we will look at include its performance (e.g., its throughput) and how robust your service is to failures (e.g., suppose some set of your traceroute servers have crashed). The results here will be especially interesting if your service implements any extra credit performance and/or robustness optimizations. Last Updated: Wed Jan 22 20:07:25 PST 2003 |