[Tinyos-devel] CTP and LPL

Andreas Köpke koepke at tkn.tu-berlin.de
Tue Jan 6 06:19:25 PST 2009


Hi guys, there seems to be some confusion about what we try to do and why we 
have problems. So here is some background information:

We want to use CTP as the net protocol for some real world experiment that 
consists of up to 30 nodes. The nodes that are powered from two AA batteries 
should be able to run for more than three months, ideally for more than 6 
months. 

When we started the evaluation with CTP and LPL using 5% DC we noticed that 
the averge current draw of  a node is way to high. The measurement circuit 
used is a variant of the circuit proposed in 
http://www.tkn.tu-berlin.de/publications/papers/ltccircuit.pdf

For the evaluation, we used our TWIST testbed as described in earlier mails, 
using 34 nodes in each experiment slice, each node sends every 5min on average 
randomly distributed over the interval [2.5min:7.5min], sink always on, etc.

Since stating that the energy consumption is way above the expected values is 
not sufficient in our case (we do not want to show that CTP is bad and propose a 
different net protocol, but use CTP) we went through the trouble to find out why 
the energy consumption is too high. 

We encountered the following problems:

a) the conversion of DC to local sleep time is wrong due to an integer overflow 
in the computation. Therefore, the DC of 5% was in reality a DC of about 12%. 
The fix for this bug has been checked into the CVS.

b) the ETX and the THL values were too high -- and hence way too many messages 
are transmitted in the network. 

The high ETX values indicate that the nodes have a problem communicating with 
their parents. So we used only two nodes to test the LPL Mac problems. 
It turns out that the nodes have two problems:
1) they can not detect the busy channel during the Listen period
2) the real sleep time is longer than the computed sleep time
We fixed 1) by changing RSSI threshold such that the CC2420 also reacts on RSSI 
and not on LQI only. This fix is not committed. 
We fixed 2) by adding 20ms to the setRxSleepTime call in the SendNotifier. 

ETX values were still a bit high, so we implemented the "do not mix packet 
trains" fix proposed by Tony O'Donovan. In our implementation, the channel is 
sensed for 11ms prior to the first packet transmission and the remaining 
packets are transmitted without carrier sense. 

It kind of works now (the THL values are in general < 4) and the real average 
current draw for an "innocent bystander" node that just overhears the traffic 
but does neither send nor forward packets in the vicinity of the sink node is 
roughly equal to the average current draw using a DC of 10%. To get there, we 
also reduced the DELAY_AFTER_RECEIVE from 100ms to 20ms. 

There are still some issues with CTP related to the speed of conversion of the 
ETX due to the low traffic (slow reaction on broken links, transient and 
permanent loops, suboptimal link choice etc), so we adjusted MultihopLQI  
and can use it as a fall back. 

Best, Andreas


More information about the Tinyos-devel mailing list