Submission Guidelines
Programming Assignment #3
Implementation Requirements
1- You should submit a tar file that contains the source code for your implementation.
2- Like the previous programs, you should submit a tar file. The tar file should include:
The CSC cluster, i.e. on Alpha stations
Questions
1- What should I display?
There are two cases in which you are going to display information.
Case 1: Change of topology as a result of receiving a HELLO packet or LSP (Link State Packet)
Your code should display the information received in the following format:
Link (source, destination) is ON/OFF
Node <node-number is ALIVE/DEAD
Please refer to the scenario given later in this page.
Case 2: Change In Routing Table
Your code should display the routing table in the following format (this should be done each ROUTE_UPDATE_INTERVAL) :
Destination |
GoTo |
|
|
|
|
|
|
2- How are you going to run my program?
1. First, I'll untar the submitted file. Please don't create any directories.
2- Then, copy network.parameters, and network.config to the current directory. The first file will contain my parameters as defined in the assignment handout. The second file will contain the network topology I am going to use to test your code. I am going to use different topologies to test different cases.
You have to make sure that your code reads these files from the current directory.
3- Type "make". The name of the executable file should be node.
There is no partial credit if your code does not compile successfully with no errors.
4- Run your program by typing "node node-number" where node number represents the number of the current running node. For example:
node fe90::0001
3- How do I submit my project?
You make a tar archive and then call a certain program from my directory called submit. The exact path is
~jh41701/BIN/submit
Finally to submit your program, type
submit 3 filename
There is only one filename which is the tar file.
4- How am I going to test your code?
Assume that your program has compiled with no errors and an executable file, node, has been successfully generated. Also assume that I am using the topology defined in network.config . Following is a simple scenario that I can use to test your code:
1- Open 4 windows each correspond to a certain node in the config file. All windows are running on tracy, of course. |
||
2- Start node fe90::0002 by typing: node fe90::0002 |
||
node fe90::0002 |
|
|
No information is displayed on the screen so far. |
||
3- Start node fe90::0003, in another window, by typing: node fe90::0003 |
||
node fe90::0003 |
|
|
node fe90::0002 |
|
|
The following information is displayed in the window running node fe90::0002: |
Receiving HELLO Packet from node fe90::0003
Link (fe90::0002, fe90::0003) is ON
Node fe90::0003 is ALIVE
Destination |
GoTo |
fe90::0001 |
- |
fe90::0003 |
fe90::0003 |
fe90::0004 |
- |
node fe90::0003 |
|
The following information is displayed in the window running node fe90::0003: |
Receiving HELLO_ACK Packet from node fe90::0002
Link (fe90::0003, fe90::0002) is ON
Node fe90::0002 is ALIVE
Destination |
GoTo |
fe90::0001 |
- |
fe90::0002 |
fe90::0002 |
fe90::0004 |
- |
4- Start node fe90::0004, in another window, by typing: node fe90::0004 |
||
node fe90::0004 |
|
|
node fe90::0002 |
|
|
The following information is displayed in the window running node fe90::0002: |
Receiving HELLO Packet from node fe90::0004
Link (fe90::0002, fe90::0004) is ON
Node fe90::0004 is ALIVE
Destination |
GoTo |
fe90::0001 |
- |
fe90::0003 |
fe90::0003 |
fe90::0004 |
fe90::0004 |
node fe90::0003 |
|
The following information is displayed in the window running node fe90::0003: |
Receiving HELLO_ACK Packet from node fe90::0004
Link (fe90::0003, fe90::0004) is ON
Node fe90::0004 is ALIVE
Destination |
GoTo |
fe90::0001 |
- |
fe90::0002 |
fe90::0002 |
fe90::0004 |
fe90::0004 |
node fe90::0004 |
|
The following information is displayed in the window running node fe90::0004 |
Receiving HELLO_ACK Packet from node fe90::0002
Link (fe90::0004, fe90::0002) is ON
Node fe90::0002 is ALIVE
Receiving HELLO_ACK Packet from node fe90::0003
Link (fe90::0004, fe90::0003) is ON
Node fe90::0003 is ALIVE
Destination |
GoTo |
fe90::0001 |
- |
fe90::0002 |
fe90::0002 |
fe90::0003 |
fe90::0003 |
node fe90::0002 |
|
The following information is displayed in the window running node fe90::0002 |
Receiving LSP from node fe90::0003
Link (fe90::0003, fe90::0004) is ON
(Note: routing table is not displayed since it does not change)
node fe90::0002 |
|
The following information is displayed in the window running node fe90::0002 |
Receiving LSP from node fe90::0004
Link (fe90::0004, fe90::0003) is ON
(Note: routing table is not displayed since it does not change)
The order of displaying the above information is not important.
node fe90::0004 |
|
The following information is displayed in the window running node fe90::0004 |
Receiving LSP from node fe90::0002
Link (fe90::0002, fe90::0003) is ON
Receiving LSP from node fe90::0003
Link (fe90::0003, fe90::0002) is ON
5- During the above operations, HELLO packets, and LSP (Link State Packets), are traveling inside the network between active nodes. However, no information is displayed at any node unless it represents something new. |
|
6- Start node fe90::0001, in another window, by typing: node fe90::0001 |
|
node fe90::0001 |
|
node fe90::0002 |
|
The following information is displayed in the window running node fe90::0002 |
Receiving HELLO Packet from node fe90::0001
Node fe90::0001 is ALIVE
(Note: routing table is not displayed since it does not change)
node fe90::0001 |
|
The following information is displayed in the window running node fe90::0001 |
Receiving HELLO_ACK Packet from node fe90::0002
Link (fe90::0001, fe90::0002) is ON
Node fe90::0002 is ALIVE
Destination |
GoTo |
fe90::0002 |
fe90::0002 |
fe90::0003 |
- |
fe90::0004 |
- |
node fe90::0002 |
|
node fe90::0001 |
|
The following information is displayed in the window running node fe90::0001 |
Receiving LSP from node fe90::0003
Link (fe90::0002, fe90::0003) is ON
Link (fe90::0002, fe90::0004) is ON
Node fe90::0003 is ALIVE
Node fe90::0004 is ALIVE
Destination |
GoTo |
fe90::0002 |
fe90::0002 |
fe90::0003 |
fe90::0002 |
fe90::0004 |
fe90::0002 |
node fe90::0003 |
|
The following information is displayed in the window running node fe90::0003 |
Receiving LSP from node fe90::0002
Node fe90::0001 is ALIVE
(Note: routing table is not displayed since it does not change)
node fe90::0004 |
|
The following information is displayed in the window running node fe90::0004 |
Receiving LSP from node fe90::0002
Node fe90::0001 is ALIVE
(Note: routing table is not displayed since it does not change)
node fe90::0003/4 |
|
The following information is displayed in the window running node fe90::0001 |
Receiving LSP from node fe90::0003
Link (fe90::0003, fe90::0002) is ON
Receiving LSP from node fe90::0004
Link (fe90::0004, fe90::0002) is ON
(Note: routing table is not displayed since it does not change)
The order of the above communications is not important.
Grading Guidelines:
These are only guidelines to give you a hint about what I am going to test in your code. The points may be redistributed later during grading the assignment.
Proper submission: submitted a tar file containing the files specified above specially Makefile. |
10 |
Timer Thread (timeouts are correct) |
20 |
Displaying exact format and information as specified above and in the cases defined in the scenario. |
10 |
Correct Dijkstra's Algorithm |
10 |
HELLO & HELLO_ACK (new alive nodes) |
15 |
LSP implementation |
15 |
Receiving & Sending data |
10 |
Handling Node Failure |
10 |
Total points: |
100 |