15-441 Project 2 -- Checkpoint 2
Checkpoint 2 is worth potentially 5 total points out of 100 towards
Project 1. The work started here, when completed, will be worth 60 total points
out of 100. To receive the points and begin working on Project 2 you must:
Useful Resources:
- UDP Example Code with hints for OSPF : UDP Client Server
- Begin with your repository and state of work from Checkpoint 1
- This is also the final submission of your project. The grading rubric is specified in the project handout.
- Enable multiple routing daemons to communicate with each other using UDP on the routing port.
- Implement OSPF reliable flooding to flood information about the network topology and objects in the network.
- Specifications and requirements of the protocol along with the packet formats can be found in the project document.
- You may also use the UDP example code as a starter.
- Extend the routing daemon's object look up mechanism to include non-local objects
- If an object is available locally, the routing daemon should return the URI based on the relative path information (This was your work for Checkpoint 1). But, now the routing daemons learns about remote objects using the OSPF flooding. Given an object name (using GETRD protocol), if the object is not available locally, the routing daemon should be able to find the nearest node that is hosting the object.
- Using the network topology that it learnt from OSPF flooding, it should find the next hop node in the shortest path to get to the above node and construct and return the next hop URI using the peername, serverport, localport and object name.
- Extra Credits
- There are three options for extra credits as mentioned in the project document (Caching, Longest Prefix Match, Persistent Connection and Pipelined Requests).
- You can choose a maximum of two of the three features above to implement. Not all of them have the same points. So choose wisely!
Files we expect to see in your 'git tag checkpoint-2 xxXXxxXXxx' (fill in the x's with the commit you want to submit, don't forget to push!):