NetProg Spring 2004 HW6

Homework 6: Network Service Design (write an RFC)
Due Date: May 1st
Remote Due Date: May 8th

Submit to WebCT drop box.

Late Penalty: 100% No late submissions!


Project Description

Your assignment is to design a non-trival network service, including the service architecture (peer-to-peer vs. client/server vs. hybrid), choice of transport protocol(s), application level protocol design, and possibly an application level API.

You may include a proof-of-concept implementation with your design (although it is not required). If you do submit code, make sure it is in a language we can use to test your implementation on the CS Suns.

Your submission must include an RFC type document. You are not restricted to the creation of something that "looks like" an RFC, you can use any format you want (feel free to include diagrams that are drawn with something other than ASCII art!). Your document must be either text, HTML or pdf. If you submit HTML you should make your document(s) available via a web server (submit a URL that will be available until we grade it!).

The network service you are to design is a instant messaging system (like AIM, ICQ, MSN instant messanger, etc.). Your design can include the following kind of information:

  • define the actual service and the benefits of your design. For example, if you decide scalability is important, state this and provide a description of how well your design will scale (how many users can you support?). Other issues you might decide are important include security, reliability, expandablility/flexibility, compatibility, smellibility and taste.

  • decide what constitutes an "instant message".

  • service architecture.

  • system requirements (will it work on PDAs? Phones? Microwave ovens?).

  • what transport protocols are used.

  • how users use the system (we are not interested in GUI details, just enough to understand how users interact with the system).

  • application level protocol.

  • system administration.

  • security issues.

  • anything else you think is important.

IMPORTANT: Make sure that your application level protocol is described in a manner that would make it possible for a competent network programmer to build programs that interact with your system. Look at how other RFCs describe application-level protocols for ideas.

Deliverables

Submit your writeup (or URL to your writeup) to the HW6 webct dropbox. If you include a proof-of-conept implementation make sure you include instructions on how to build and run it!.


Grading

Your grade will be based on how significant your defined service is (don't pick the easiest model of service!), how complete your design is, and how well we think your design will meet whatever requirements you state are important to your system.

If you provide an implemenation, this code can make up for some weaknesses in your writeup (a writeup is required, but we will also consider a working implementation as part of the documentation of your system). We won't grade any submissions that include only an implementation!


Notes

For this project you have some options available:

  • You may work with a partner, although we will expect twice as good a submission! This may be a good approach if you want to do a significant implementation, but probably will not work well (as far as grading goes) if you only submit a design desription.

  • You don't have to do instant messaging, you can do your own chat system, song stealing file sharing system, basically anything that could involve lots of users. Make sure what you work on is non-trival, but otherwise anything goes... (no need to get approval, but feel free to ask if you have questions about specific systems you are considering designing)

Study existing systems (and reference them in your design!). The idea is to provide a design that is better than anything out there, not to design something without even looking at existing systems. If you work on an instant-messaging system, dig around and find out how others work (and try to improve on what exists)!