The above shows the relationship
between
the message delay and the number of message cycles that were dropped.
What we see is that, without throttling the send, a very high
percentage of message cycles fail. From examination of the raw
data it appears that on the Mica2, most messages are dropped at the
re-Mote end
(commands are not received); but, for the Micaz under good conditions,
the failures seem to be in receiving the replies from the re-Mote. The
throughput is quite a bit higher for the Micaz, as expected, but the
failure rate is significantly lower. In fact with proper throttling
(10-20ms), reception is perfect.
More interestingly, the Micaz's ACK behavior is much better. Not only
are considerably fewer ACKs lost, but the ones that do go missing
actually tend to indicate real lost messages. This is surmised from a
cursory examination of their relationship in the raw data, but it can
also be seen in the results for the "bad reception" test where the ACK
and message failure rates are nearly the same (vis the Mica2 data where
missing ACKS have very little to do with the failed message rate).
Without more devices I can't determine if this will hold in general.
Message Cycle NOT Using ACKs
This set of experiments is identical to the above but ACKs were
disabled at both ends. Note the maximum success rate of almost 70
msg/sec (at 0ms) and the reliable rate of about 1/2 that at 20 ms
delay under 'ideal' conditions for the MicaZ.
MicaZ
Delay
Time
|
msg/sec
Total
|
msg drop
%
|
msg/sec
Success
|
msg miss
%
|
Notes
|
0
|
99.64 |
30.79
|
68.97 |
8.56
|
2m apart
|
10
|
49.89
|
0.1
|
48.84 |
0.03
|
2m apart
|
20
|
33.28
|
0.01
|
33.27 |
0.01
|
2m apart
|
20
|
33.04
|
38.53
|
20.31
|
9.06
|
5m apart, bad reception
|
Mica2
Delay
Time
|
msg/sec
Total
|
msg drop
%
|
msg/sec
Success
|
msg miss
%
|
Notes
|
0
|
19.96 |
26.82
|
14.60 |
22.82
|
2m apart
|
50
|
9.99
|
0.73
|
9.92 |
0.57
|
2m apart
|
50
|
9.99
|
0.87
|
9.90
|
0.73
|
10m apart, good reception
|
Almost Raw Results and Test Code
The spread sheet with the accumulated data used to generate these
graphs is here:
The TOS and Java code used to run the tests is available, along with an
update to some of the Java files to quell a naughty threading bug found
when testing the Micaz's:
Conclusions
With Micaz's, using a message request/reply system where a basestation
requests a
message from each re-Mote, by point-to-point request
and reply I have arrived at
the following conclusions:
Point-to-point request messages should be throttled to about
25 (request/replies) per second or many replies will be dropped. This
amounts to something between 10 and 20ms delay between message request
sends.
With message ACKs enabled in a point-to-point mode, under ideal
conditions where
there is little chance of transmit overlap and CSMA backoff, about 50
successful individual messages per second can be sent with almost no
failures. ACKs are consistently received for successful messages.
Without ACKs, in a point-to-point mode, under ideal conditions where
there is little chance of
transmit overlap and CSMA backoff, successful messages are around 66
per second with almost no failures.
The ACK mechanism works very reliably in the MicaZ. When radio
reception is marginal, ACK failures generally align with message
failures (in contrast to the Mica2 where ACKS are dropped almost 10
times more often than messages. I don't know how this scales in a
multi-re-Mote situation however.
An observation during testing of bad reception: The Micaz's seem to be
quite sensitive to antenna positioning and object interference. The two
communicating devices were in different rooms separated by some major
plumbing, and slight re-postioning of the re-Mote had a large effect on
successful message completion. Also just waving my hands around either
the base-station or re-Mote caused many message failures. The Mica2's
were much less sensitive on both counts in the same environment. YMMV
of course...
xxx