M.I.T. DEPARTMENT OF EECS
6.033 - Computer System Engineering | Last Modified: March 21 7:34am, 2001 |
Q: The assignment says we can assume the CyberBeanie units are arranged in a square grid at just under 5 foot intervals. Is it OK if my protocol doesn't work in other situations?
A: Your protocol should be as robust as possible: it should not collapse into chaos if, for example, a unit has more than 4 neighbors, or if the units are not arranged in a perfect grid. The place to use the assumptions is in your analysis, for simplicity, and as a specific example to help direct your design.
Q: Does the CyberBeanie have some kind of clock I can use to time events and control periodic functions?
A: Yes, you can assume a function that returns the approximate number of seconds since the CyberBeanie booted. In addition, if you supply a function called net_timer(), the CyberBeanie O/S will call it once per second.
Q: Can I assume that each CyberBeanie knows in advance how many other units there are in the classroom?
A: No.
Q: Will students move around during the hour-long class time?
A: For your analysis, you can assume the units don't move after the students sit down at the beginning of class. Your protocol should adapt if units do move, however.
Q: Should my analysis include the time it takes the CyberBeanie CPU to run my code?
A: No, you can assume the CPU is infinitely fast.
Q: Should my software re-transmit temperature samples if they are lost or corrupted in the network?
A: No. The layers above you re-send samples periodically, so you need not implement reliable delivery of the temperature samples.
Q: What is the function call interface between the end-to-end layer and my software?
A: It should look like this: you provide a function net_send(int temp) which the end-to-end software calls to send a temperature sample to the unit's friend. When the sample arrives at the friend, you should call a function e2e_deliver(int temp) (provided by the end-to-end layer) to deliver the temperature sample.
Q: How can the end-to-end layer handle lost, duplicated, and out of order temperature samples when its packet format consists only of the 16-bit sample?
A: The designer of the end-to-end layer has decided that he can achieve sufficient robustness by simply sending the current temperature periodically.
Q: How likely is it that a CyberBeanie's friend will be in the same classroom?
A: It is likely that a CyberBeanie's friend will be in the same classroom, but it won't always be true.
Q: Do I have to worry about thread coordination? I'm worried, for example, that net_deliver() might interrupt net_send().
A: The CyberBeanie O/S will make sure that there is at most one call into any of net_send(), net_deliver(), or net_timer() at a time. Thus, unless you create your own threads, you should not have to worry about coordination.
Q: How much effort should I put into squeezing bits out of my packet and table formats to save bandwidth and space?
A: You should focus your optimization effort on the scaling behavior of your design: if you double the number of nodes, by what factor do your bandwidth and memory requirements grow? Optimization is worthwhile to the extent that it decreases these scaling factors.
Q: How many bits of header will the link layer add to my packets?
A: You can assume that the network layer can use the full 1000 bits/second; the link layer's header and trailer do not use up any of that data rate.
Q: Can a radio send at 1000 bits/second and receive at 1000 bits/second simultaneously?
A: Yes; a radio can send at 1000 bits/second even if it is receiving at the same time. In addition, a radio can receive packets from multiple neighbors at the same time, each at 1000 bits/second.
Go to 6.033 Home Page | Questions or Comments: 6.033-tas@mit.edu
|