CS 15-441 Fall 2007 Project 3

Project 3 - P2P and Congestion Control

Questions? Check out the FAQ

The final deadline for Project 3 is Tuesday, 12/4 at 11:59pm

Note: Please chmod +x each of the scripts before running them, else you'll get a "permission denied" error.

BitFlood Usage Example

Once your BitFlood implementation is done, you should be able to share a file by following the following steps. Let's say that you are trying to share the file movie.avi:
  1. Start the tracker on one of your servers. To do this, use the bf_runtracker.py script. The tracker script will take in the port number to listen to as a parameter. Keep the tracker running, as no clients can work without it.
    % ./bf_runtracker.py 18801
    	
  2. Secondly, convert the file you are trying to share into a flood file. The script to do this is the bf_makeflood.py script. This script takes as parameters the file you are trying to convert, and the tracker you wish to use to distribute peer information, in hostname:port format.
  3. % ./bf_makeflood.py movie.avi unix38.andrew.cmu.edu:18801
    	
  4. Distribute your .flood file (outputted by the script) to your peers. You can do this by manually copying the file to your peers, or by placing it on a central server for download.
  5. Run your BitFlood implementation on the .flood file. Once the file has finished downloading, your binary should output "GOT <filename>"; to STDOUT.
  6. % ./bitflood movie.avi.flood -n 1
    GOT movie.avi
    	  
  7. Even after the file finishes downloading, your client will continue to share (seed) the file you are downloading. This should continue until the client is explictly killed by the user.

Resources

Extra Credit

Running the network simulator

Checkpoints