If you assume a gilbert-elliot model for the bit error rate and plot the packet size vs. throughput, the optimum occurs at around ~35 bytes per packet. Basically, a gilbert-elliot model is a 2 state markov chain model, where one state is a good state (where bit errors do not occur) and the other state is a bad state (where bit errors occur with high probability, ~0.4) and you have transitions between these 2 states. Wireless channel error characteristics have been modeled using this particular model. Also, we conducted experiments to verify this theoretical result and as David pointed out, the packet size of ~30 bytes optimizes the throughput achieved. The throughput achieved is ~40% of the channel rate (for micaz it is 250Kbps), which is pretty bad, but with other packet sizes the throughput achieved is even lower. So, in fact there is a rationale behind the use of 29 bytes.
Raghu ********************************************************************* Message: 1 Date: Mon, 24 Apr 2006 10:07:13 -0700 From: "David Gay" <[EMAIL PROTECTED]> Subject: Re: [Tinyos-help] Rationale for 29 bytes payload To: "Vinai Sundaram" <[EMAIL PROTECTED]> Cc: [email protected] Message-ID: <[EMAIL PROTECTED]> Content-Type: text/plain; charset=ISO-8859-1 On 4/21/06, Vinai Sundaram <[EMAIL PROTECTED]> wrote: > I need to send more than 29 bytes for the application I am working on. > However, I do not want to increase the payload size so much that it will > reduce the throughput of the network. Is "29 bytes" found to give close > to optimal throughput? Are there any empirical/analytical studies that > suggest a payload size range that would give near-optimal throughput? I > didn't come across the reason for 29 bytes in any of the documents. It's historical. The original TinyOS motes had a radio that was controlled by software at the bit level, and somebody (Jason?) found that 36 bytes/packet was a good place to be (maximise throughput, minimise chance of packets getting lost because of software timing glitches). That was 30 bytes of payload, 4 bytes of header, and 2 bytes of CRC. Packets were always 36 bytes. Then someone added variable-length packets, adding 1 byte (the length...) to the header. Hence 29 bytes of payload. Still later, someone added the option for a different payload length, but the default is 29. At this point it's still 29 bytes because: - nobody has bothered to change the default - it avoids the message buffers taking too much RAM David Gay _______________________________________________ Tinyos-help mailing list [email protected] https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
