CS640 Project Design Issues 0. Read "Proposal Grading Info" online. Make sure you include an overall picture on your design modules, i.e., threads and the communication / synchronization among themselves. Please follow the other guidelines listed in this file. 1. Make sure the first bit of your MNP packet is for control bit. 0: data, 1: control 2. Control packets reliability at MNP layer. For different types of control packets, you may want to have different reliability ensurance policies. (e.g. Signalling messages can be stop-and-wait; Periodically flooding messages doesn't have to be acked) 3. Virtual Circuit Issues: Requirements: a) As long as there is a path from the source to the destination, a virtual circuit should be set up along the shortest path. b) In case of node/link failure, existing VCs should be rerouted if effected; in addition, invalid VC entries should be removed from all the nodes along its path within 10s. c) When a node is down and back up again, no rerouting is REQUIRED on the existing VCs. But later connection should be able to use the new configuration to achieve shortest path from the source to the destination. Issues: 1) How to deal with node/link down in the middle of virtual circuit setup or tearing down? 2) How to get rid of useless VC? A simple TTL on VC entries would not work. The VC should not be tear down unless either side of the connection calls the disconnect or some node on the VC fails. 3) Maintenance of Virtual Circuit. A virtual circuit should survive in case of temporary failure of a node. For example, one node goes down and is back up again without anyone in the network noticing this change. In this case, everyone else considers the node the same as before while the node itself loses all its routing table and virtual circuit table!!! No data can be sent through this node while others don't know what's wrong. How would you deal with this? 4. Disconnect can be called by either side of the connection disregarding who positively does the rtp_connect(..) 5. When a connect request arrives at the other side of the connection, if the listen_accept function is not called at that node, this request should be rejected. On the other hand, a disconnect request should be buffered until the upper layer receives all the packets it should have received through that connection and calls the listen_accept. // Midpoint Demo: Nov. 17th No garbler, no link/node down.