In creating the new CCxx00 radio stack's LPL/Wake-on Radio layer and testing it for CTP, I found lots of issues with low power communications in general that require lots of experimentation with the radio stack and a logic analyzer. Someone needs to do the same analysis on the CC2420 stack, and I unfortunately don't have time to do it now.
Acknowledgments are the biggest problems. Collisions are another problem, but collisions ultimately feed into the acknowledgment problem. If we can avoid collisions and prevent each node from transmitting during an acknowledgment period, network reliability will improve. With the CCxx00 stack, I found it necessary to remove hardware address recognition to improve the performance of acknowledgment success rate. I forced each node to take time to receive every packet, and respect the acknowledgment wait period if the packet was not destined for that particular node. I also added progressive backoffs to the CCxx00 stack, where the CSMA backoff duration gets longer and longer as the channel is found to be busy. This works well for long-preamble transmissions, but probably won't work as well for packetized wake-up transmissions as is implemented for the CC2420. The CCxx00 stack was tested for WoR reliability and efficiency by setting up a small network of 4 nodes, each with a unique address (3, 2, 1, and 0). Each node's LEDs were connected to a logic analyzer, allowing me to see when a node was transmitting, receiving, and sending an acknowledgment. Nodes performed unicast transmissions: #3 transmitted to #2, #2 to #1, #1 to 0, and 0 acted like a base station receiver that didn't transmit. This setup allowed me to experiment with different radio stack parameters and functionality. I could see, using the logic analyzer, that nodes transmitted when they weren't supposed to (like during an acknowledgment wait period) or two nodes would try to transmit simultaneously, causing a collision. In CTP, I found it necessary to modify CtpForwardingEngine.h to set the FORWARD_PACKET_TIME equal to some much larger value, like 512 or 1024, to avoid network congestion. Maybe we should find a way to tie this value to the low power listening interval somehow. CTP works great. But the radio stack underneath has to be reliable under that kind of network congestion. When the CC2420 LPL implementation was created, most of the tests were point-to-point tests, and very few were network congestion tests. Any modifications done to the CC2420 stack to improve this situation should be contributed back to the TinyOS baseline. -David -----Original Message----- From: Philip Levis [mailto:[EMAIL PROTECTED] Sent: Monday, April 28, 2008 10:40 AM To: Bulut ERSAVAS Cc: Omprakash Gnawali; David Moss; Atakan Bodur; tinyos-help (E-mail); TinyOS Development Subject: Re: [Tinyos-help] Collection: Loosing Connection to a Node On Apr 28, 2008, at 9:25 AM, Bulut ERSAVAS wrote: > Hi Phil & Omprakash, > > It appears that the LPL is to blame for the misbehavior of CTP in > our case. As Omprakash suggested, I repeated the tests by turning > off the LPL. Nodes quickly discovered routes and packet losses were > reduced dramatically. > > We later on retried with LPL but reduced our LPL sleep interval from > 1000 ms to 125 ms. Attached you can find the logs. Node 7 is again > TelosB with debug logs. The performance is much better, however, is > not as sharp as it would be with no LPL. I would suspect that the > beacons or the acks are getting lost when the LPL is activated, > hence the poor route discovery process and the large amount of data > loss. > > When LPL is used, are the beacons timed for the LPL sleep interval? > For instance, we use setRxSleepInterval to set the receiving node's > sleep interval for data transmission. Is something similar done for > CTP beacons? > > Also, when CTP is used, ETX values are quite large. Even for a > single hop, it is about 265. You will notice ETX values as large as > 700 with 3-hop routes. However, with no LPL it was usually less than > 300 even for 6-hop routes. Can this be due to beacons/acks getting > lost with LPL? > > In summary, attached logs (4BITLE & LPL w/ 125ms interval) are much > better than the ones I sent last week (LE | 4BITLE & LPL w/ 1000ms > interval). But still, for an acceptable power consumption level, we > need to use 1000ms or larger sleep interval. So, in this case, is it > possible to improve CTP to better work with LPL? How can we assist > you in this process? It might be useful to move this discussion over to -devel. The first step for doing this was to reduce CTP's control traffic so that it can function well with LPL (early versions had high control load). We completed this work a few weeks ago, and Om has just checked the changes into CVS. Now that CTP has a low control load, the next step is starting testing with LPL and figuring out what's going wrong and why. From your traces, it looks like LPL has a low packet delivery success rate. We should start talking with David Moss (the LPL author) to figure out what's going on. The most useful thing you can do is take debug traces of your networks and parse them. Om has a set of tools for plotting results from traces; he can share them with you. They produce HTML pages like this: http://enl.usc.edu/~om_p/net2/ctp4bitle/expt-01172008-1/ Phil _______________________________________________ Tinyos-help mailing list Tinyos-help@millennium.berkeley.edu https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help