1. Suppose that the following changes were made to the base code provided in order to implement neighbor discovery: def start @newNeighbours = Hash.new @pktSeq = 0 addTimer(10, proc { discoverNeighbors }) end def onReceive(from, str) pkt = Fishnet::Packet.unpack(str) @newNeighbors[pkt.src] = 1 end def discoverNeighbors if @neighbors @neighbors.each{ |nghbr| puts "Neighbor #{ngbhr} lost!" if !@newNeighbors.has_key?(nghbr) } end @neighbors = @newNeighbors @newNeighbors = Hash.new @neighbors.each{ |nghbr| ping = Fishnet::Packet.new(Fishnet::BroadcastAddr, @addr, Fishnet::PingPkt, Fishnet::MaxTTL, @pktSeq, "Neighbor Discovery") send(nghbr, ping) } @pktSeq = @pktSeq + 1 addTimer(10, proc { discoverNeighbors}) end Assuming all other nodes in the network implement flooding correctly as specified in fishnet1, describe the problems with the above solution: 2. In fishnet2, we used Link State Routing to determine routes to each node in the network. The LSP sent out by a node lets every other node in the network who its neighbors are, and this sharing of information enables every node to determine the shortest path to any other node. Instead, consider a situation where every node is responsible for discovering the routes on its own and it can then include the route within the packet for nodes along the path to forward accordingly. How would you discover the routes to all other nodes in the network in this new scenario? Outline the strategy you would employ in terms of the packets you would send out and how the algorithm would proceed. 3. We know that a node may receive many duplicate packets (packets from the same original sender with the same original network layer sequence number and payload) if we use flood routing. If we use link state routing, can a Fishnet node ever receive duplicate packets? If so, give an example situation. If not, why not? Assume all nodes are bug-free. 4. a) What are two advantages of having Fishnet nodes send link-state packets frequently? Does the fact that we want Fishnet to run over wireless links between iPAQs affect your answer? Why or why not? b) What are two advantages of having Fishnet nodes send link-state packets less frequently? Does the fact that we want Fishnet to run over wireless links between iPAQs affect your answer? Why or why not? 5. How do the semantics of IP datagrams differ from those of UDP datagrams? Under what circumstances would these different semantics be important? 6. For the four classes of applications described in class (bulk data, telnet-style, rpc, piplined requests), describe the problem that occurs, if any in these four TCP strategies: TCP+Nagle+Clark TCP+Nagle TCP+Clark TCP 7. Why should a TCP sequence number not always start at 0? Questions from the book: Chapter 5: #7 #10 #16 #19 #20 #26 #51 (ensure that your answer describes the experimental setup)