M.I.T. DEPARTMENT OF EECS

6.033 - Computer System Engineering Last Modified: March 21 7:34am, 2001

Design Project 1: Frequently Asked Questions (FAQ)


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