An embeded RDB that runs too slow? I would do a little profiling on the
app to see if there's anything to fix before starting to throttle messages.
If the messages are bursty perhaps adding a insert queue to the DB i'face
would even things out. Depending on the DB you might be able to do multiple
inserts in one statement, that could speed things up too.

Otherwise running the ACK mechanism through the basestation to the host
and doing some kind of request-retry thing should work. You want to avoid
the "flooding with retries" scenario that kills e'nets though.

An occasional bad crc is to be expected, I'm not sure that it's a symptom
of message overflow. But missing sequence numbers certainly is...

MS

Steve McKown wrote:
Hi,

I have a current wireless star network: ARM gateway connected to a Xbow mote running BaseStation and several wireless motes that send unicast packets to the gateway/BaseStation. The wireless motes request acks and will initiate a resend of any message whose ack is not seen in sendDone(). The gateway uses the c-sdk to retrieve messages from the BaseStation, processes them and stores the results in a local embedded database. The gateway allows query of the RDBMS and presentation of its contents via a simple HTTP-base app it also runs.

This setup works great until the receive rate of wireless messages exceeds the rate at which the gateway can insert them into the database. I tested this scenario by using only 1 wireless node and having it send messages to the gateway as fast as it can (still with ack/resend logic). In this test, the gateway will frequently show a bad_crc message from the c-sdk. At the same time, the gateway loses visibility to dozens of messages, based on message sequence #s.

Here's what I think I need to do to extend BaseStation to get better message delivery reliability. Any comments or pointers to related information would be helpful.

1. BaseStation should elect to send acks for received messages based upon the filled state of the appropriate message queue (readioQueue, uartQueue) in addition to the crc check.

2. BaseStation should use a back-off/resend strategy for any message sent over uart or radio for which an ack is not received in a timely fashion.

Am I on the right track?  Is BaseStation a good place to start?

Sorry for the long post, and thanks for your consideration.
Steve
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
_______________________________________________
Tinyos-help mailing list
[email protected]
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to