Term Project
CSSE 432 – Computer Networks

Final Project Specifications

Objectives

In this project, you will:

Project teams

You will work in teams of four (with one exception, one team has three members). A repository has been created for your team. Clicking on the link for your team repository will reveal the URL for that repository. Each member of your team is advised to checkout your team repository at the start of the project. Before you edit code, documents, or other aspects of the project, you should update your local workspace, edit, update, then commit your work back to your repository. Using that cycle will minimize conflicts. Remember to provide appropriate commit messages and to do svn add if you want to add new files to your repository. Of course, don't forget to commit after you add new files.

Before you begin

Go to http://vns-2.stanford.edu/login/ and login with the username and password that was emailed to you. Look up the Topology section to find information about your network topology. Copy the routing table to a file called rtable and save the file in the same directory as the project files.

Part 1: Implementing the ping functionality

In this part of the project, you must implement the ping functionality. When any of the interfaces of your router is pinged, your router must respond to the message with an ICMP echo response packet. In order to implement this behavior, your router must:
  1. handle incoming ARP request packets
  2. handle incoming ICMP echo request packets
  3. respond with ICMP echo response packets

Turning in your solution

When ready to turn in this implementation, you must tag your files PING. Here's how to do this (teamxx should be replaced with your team information i.e., team01, team02 and so on.).

After committing all the files to the Project folder in your repository, follow these steps.

Step 1: In the csse432-201230-teamxx folder in your repository, create the directory "tags":
>>svn mkdir tags
>>svn mkdir -m "Creating the tags folder" http://svn.csse.rosehulman.edu/repos/csse432-201230-teamxx/tags

Step 2: Copy the files to the tags folder
>>svn copy http://svn.csse.rose-hulman.edu/repos/csse432-201230-teamxx/Project http://svn.csse.rose-hulman.edu/repos/csse432-201230-teamxx/tags/PING -m "Implementation of ping"

Part 2: Implementing the forwarding function of the router

In this part of the project, you will add functionality to the router such that it can forward packets to two application servers. In order to implement this behavior, your router must:
  1. correctly send ARP requests.
  2. correctly handle ARP replies.
  3. correctly forward packets to and from the application servers.
  4. maintain an ARP cache.
  5. also, send an ICMP host unreachable message after 5 ARP requests are unanswered.

Turning in your solution

When ready to turn in this implementation, you must tag your files FORWARDING. Here's how to do this (teamxx should be replaced with your team information i.e. team01, team02 and so on).

After committing all the files to the Project folder in your repository, follow these steps.

Step 1: In the csse432-201230-teamxx folder, you have already created a tags folder.

Step 2: Copy the files to the tags folder
>>svn copy http://svn.csse.rose-hulman.edu/repos/csse432-201230-teamxx/Project http://svn.csse.rose-hulman.edu/repos/csse432-201230-teamxx/tags/FORWARDING -m "Implementation of forwarding"

Resources

  1. The following Powerpoint slides: Building an Internet Router.
  2. FAQ at http://yuba.stanford.edu/vns/assignments/simple-router/
  3. Various RFCs for the protocols.

Deadlines

Note that these deadlines are firm. No late days are available for the term project.