1. Homepage
2. Programming
3. COMP SCI 3001/COMP SCI 7039 - Computer Networks and Applications - Programming Assignment 3: Routing Algorithm Assignment

# COMP SCI 3001/COMP SCI 7039 - Computer Networks and Applications - Programming Assignment 3: Routing Algorithm Assignment

AustraliaUniversity of AdelaideCOMP SCI 3001COMP SCI 7039Computer Networks &amp; ApplicationsRouting AlgorithmDistance VectorJavaC++Python

Programming Assignment 3: Routing Algorithm Assignment (Must Use Logbook) (DV) Due 1 Jun by 17:00 Points 200 Available 1 May at 1:00 - 29 Jun at 17:00

Automatic Zero Marks You will get an automatic zero for: a) code that does not compile; b) code that crashes during execution; c) code not submitted and/or leaving code in svn repository only; d) not using correct file names. No exceptions will be made for not following our advice and guidelines. The expectation is that will thoroughly test your implementation prior to submission. Aims Learn about routing protocols and route propagation. Implement a routing protocol. Overview In this assignment, you will be writing code to simulate a network of routers performing route advertisement using a Distance Vector routing protocol. You will need to implement the algorithm in its basic form, and then with Split Horizon to improve the performance of the protocol. Your implementation will need to ensure that the simulated routers in the network correctly and consistently converge their distance and routing tables to the correct state. You will find a more detailed description of the Distance Vector algorithm in the course notes and in section 5.2.2 of Kurose and Ross, Computer Networking, 7th Edition. Your Task Part 1 (DV algorithm) You are to produce a program that:

1. Reads information about a topology/updates to the topology from the standard input.
2. Uses DV algorithm or DV with SH algorithm, as appropriate, to bring the simulated routers to convergence. Output the distance tables in the required format for each router at each step/round. Output the final routing tables in the required format once convergence is reached.

1. The distance table of each router in the following format: X Distance Table at t= 0 Y Z Y 2 INF Z INF 8

where

1. The name of the router , and the current step (starting at 0).
2. The name of the destination router .
3. The name of the next hop router .
4. The current known distance (from the current router , to the destination , via the next hop ) Use INF to represent infinite values and where no link is present
5. Include all routers except the current router in the rows/columns in the table, even if no direct link is present.
6. Rows/columns should be ordered by router name in alphabetical order .
7. Your rows/columns don't have to align , and the amount of white-space you use is your choice , but the easier it is to read the easier your debugging/testing will be.
8. A blank line at the end of the table. When running the algorithm to converge the routing tables and distance tables, this table should be printed for every router (in alphabetical order , by router name), at each step
9. The routing table: X Routing Table: Y,Y,2 Z,Y,5

where

1. The name of the router/node.
2. The name of the destination router/node.
3. The next hop ( an immediate neighbour of the source ).
4. The total minimum cost/distance from the router/node to the destination via the next hop.
5. If a destination is unreachable from the source router/node, your output should look like Y,INF,INF
6. The destination need to be printed in alphabetical order .
7. A blank line at the end of the table.
8. This output should be printed for every router , and every destination (in alphabetical order , by router name, then destination name), each time the routers have reached convergence.
9. Where multiple best routes exist, the first one (next hop) is used (in alphabetical order , by router name). Below is an example of what this output should look like for the provided topology and inputs (shortened, full output HERE X Distance Table at t=0 Y Z Y 2 INF Z INF 8 Y Distance Table at t=0 X Z X 2 INF Z INF 3

Z Distance Table at t=0 X Y X 8 INF Y INF 3 ... X Distance Table at t=2 Y Z Y 2 11 Z 5 8 Y Distance Table at t=2 X Z X 2 8 Z 7 3

Z Distance Table at t=2 X Y X 8 5 Y 10 3

X Routing Table: Y,Y,2 Z,Y,5 Y Routing Table: X,X,2 Z,Z,3 Z Routing Table: X,Y,5 Y,Y,3 X Distance Table at t=3 Y Z Y 2 6 Z 5 3

Y Distance Table at t=3 X Z X 2 INF Z 7 INF

Z Distance Table at t=3 X Y X 3 INF Y 5 INF ... X Routing Table: Y,Y,2 Z,Z,3 Y Routing Table: X,X,2 Z,X,5 Z Routing Table: X,X,3 Y,X,5

Recommended Approach

1. Start by ensuring you're familiar with the DV algorithm. Review the course notes, section 5.2.2 of Kurose & Ross (7th Ed.), and the Wikipedia entry (https://en.wikipedia.org/wiki/Distance-vector_routing_protocol) . Be sure to add logbook entries as you go.
2. Manually determine the expected distance and routing tables at each step for the sample topology Feel free to ask questions and check your tables with your peers on Piazza. Be sure to add logbook entries as you go.
3. Plan your implementation Determine what data structures you'll need, choose a programming language, plan how you're going to parse the input and generate output, plan your algorithm's implementation. Be sure to add logbook entries as you go.
4. Implementation Develop your implementation, testing as you go. Write a makefile if required. Remember , you must add logbook entries as you go.
6. Up to 10 marks may be deducted for poor code quality . Below is a code quality checklist to help (notably this is not an exhaustive list but describes our expectations): write comments above the header of each of your methods, describing what the method is doing, what are its inputs and expected outputs describe in the comments any special cases create modular code, following cohesion and coupling principles don't use magic numbers don't misspell your comments don't use incomprehensible variable names don't have long methods (not more than 80 lines) don't have TODO blocks remaining
1. As noted earlier , up to 200 marks (all marks) may be deducted for poor/insuf ficient/missing evidence of development process. The two above will be assessed manually . To obtain all of the marks allocated from tests, you will need to ensure your code is of sufficient quality and document your development process using the logbook entries . Marking Process You should not be using W eb Submission for debugging. As part of your design phase, you should work out what sequence of updates you expect to happen and what you expect the final distance tables will be. As such your submission will be marked in 3 stages :
7. All submissions before the deadline will be run against an acceptance testing script. This script will compile your programs, and run your DistanceV ector code for the sample config. Use this as a sanity check to ensure your code compiles and runs on the W ebSubmission system and works as expected. Be sure to add a logbook entry for each submission you make here.
8. After the deadline your most recent submission prior to the deadline will be run against the full testing script. This script will run the tests from the acceptance testing script as well as a number of additional tests against both your DistanceV ector and SplitHorizon code. It's important that you've thoroughly tested your implementation to ensure it will be able to pass these, as you will only get 1 chance at them.
9. You code will then be reviewed for quality and evidence of your development process by a marker . Marks will be deducted if your code and/or development process are not of a reasonable standard. Note: This is not a review of code functionality , and you will not receive extra testing marks for it
10. You will get an automatic zero for: a) code does not compile; b) code that crashes during execution; c) not submitting code and leaving it in svn only; d) not using correct file names. No exceptions will be made for not following our advice and guidelines. The expectation is that you know how to test code and will thoroughly test your implementation prior to submission.

## Get in Touch with Our Experts

QQ
WeChat
Whatsapp
Australia代写,University of Adelaide代写,COMP SCI 3001代写,COMP SCI 7039代写,Computer Networks &amp; Applications代写,Routing Algorithm代写,Distance Vector代写,Java代写,C++代写,Python代写,Australia代编,University of Adelaide代编,COMP SCI 3001代编,COMP SCI 7039代编,Computer Networks &amp; Applications代编,Routing Algorithm代编,Distance Vector代编,Java代编,C++代编,Python代编,Australia代考,University of Adelaide代考,COMP SCI 3001代考,COMP SCI 7039代考,Computer Networks &amp; Applications代考,Routing Algorithm代考,Distance Vector代考,Java代考,C++代考,Python代考,Australiahelp,University of Adelaidehelp,COMP SCI 3001help,COMP SCI 7039help,Computer Networks &amp; Applicationshelp,Routing Algorithmhelp,Distance Vectorhelp,Javahelp,C++help,Pythonhelp,Australia作业代写,University of Adelaide作业代写,COMP SCI 3001作业代写,COMP SCI 7039作业代写,Computer Networks &amp; Applications作业代写,Routing Algorithm作业代写,Distance Vector作业代写,Java作业代写,C++作业代写,Python作业代写,Australia编程代写,University of Adelaide编程代写,COMP SCI 3001编程代写,COMP SCI 7039编程代写,Computer Networks &amp; Applications编程代写,Routing Algorithm编程代写,Distance Vector编程代写,Java编程代写,C++编程代写,Python编程代写,Australiaprogramming help,University of Adelaideprogramming help,COMP SCI 3001programming help,COMP SCI 7039programming help,Computer Networks &amp; Applicationsprogramming help,Routing Algorithmprogramming help,Distance Vectorprogramming help,Javaprogramming help,C++programming help,Pythonprogramming help,Australiaassignment help,University of Adelaideassignment help,COMP SCI 3001assignment help,COMP SCI 7039assignment help,Computer Networks &amp; Applicationsassignment help,Routing Algorithmassignment help,Distance Vectorassignment help,Javaassignment help,C++assignment help,Pythonassignment help,Australiasolution,University of Adelaidesolution,COMP SCI 3001solution,COMP SCI 7039solution,Computer Networks &amp; Applicationssolution,Routing Algorithmsolution,Distance Vectorsolution,Javasolution,C++solution,Pythonsolution,