[Tinyos-devel] Testing FTSP
Branislav Kusy
kusy at stanford.edu
Tue Jul 29 20:38:05 PDT 2008
Omprakash Gnawali wrote:
> On Tue, Jul 29, 2008 at 11:11 AM, Branislav Kusy <kusy at stanford.edu> wrote:
>>
>> Omprakash Gnawali wrote:
>>> On Tue, Jul 29, 2008 at 9:58 AM, Branislav Kusy <kusy at stanford.edu> wrote:
>>>>>> these results are really bad, there should be no red crosses after the
>>>>>> initial synchronization period (first 40-50 seconds). is there a way to
>>>>> Agree.
>>>>>
>>>>>> re-run the experiment (first 500s would be enough) while logging the
>>>>>> whole
>>>>>> debug struct(test_ftsp_msg_t)? could i also see the deployment map?
>>>>> Just so I understand this, I am dividing these attributes into useful
>>>>> and not useful (log trigger is a periodic timer in my experiment).
>>>>> Please let me know if you agree:
>>>>>
>>>>> Not useful:
>>>>> report->counter = rcm->counter;
>>>>> report->local_rx_timestamp = rxTimestamp;
>>>>> report->global_rx_timestamp = rxTimestamp;
>>>> looking at the counter vs the local time is very useful in finding out
>>>> problems in timestamping (code that records time deep in the MAC layer,
>>>> after receiving SFD interrupt). so i'd include this data as useful.
>>> Isn't this counter the count value in RadioCountToLeds pkt? If so, I
>>> don't have this information because I don't run RadioCountToLeds. I
>>> trigger logging using a periodic timer.
>>>
>>> ...
>>>
>>>> would be a problem. increasing timesync period could be a solution? but
>>>> first, it would be very useful to see the local time vs counter graph -
>>>> there used to be a bug in radio stack which would cause wrong association
>>>> between incoming radio packets and SFD interrupts (timestamps are
>>>> buffered
>>>> in a FIFO in CC2420ReceiveP.nc). i haven't seen it in rc3 testing (about
>>>> 20
>>>> micaz motes running for an hour, single hop), but i'd just like to make
>>>> sure
>>>> before we start tweaking ftsp.
>>> Maybe we are talking about two different counters?
>> i see - you are right. localtime and counter are not useful in this case.
>> let's just see the useful data you proposed. actually, maybe add the global
>> time (it can happen that is_synced is 0 and global time is crap). global
>> time won't tell us much about accuracy (you trigger it from a timer), but
>> we'll at least see if the error is large (e.g. couple of 10s of seconds).
>>
>
> Here is the structure that I log every 4 s:
> typedef nx_struct compact_test_ftsp_msg
> {
> nx_uint32_t local_time;
> nx_uint32_t global_time;
> nx_uint8_t is_synced;
> nx_uint16_t ftsp_root_addr;
> nx_uint8_t ftsp_seq;
> nx_uint8_t ftsp_table_entries;
> } compact_test_ftsp_msg_t;
>
> Here is the code:
>
> event void Timer.fired() {
>
> compact_test_ftsp_msg_t* report =
> (compact_test_ftsp_msg_t*)call Packet.getPayload(&uartmsg,
> sizeof(compact_test_ftsp_msg_t));
>
> uint32_t rxTimestamp = call GlobalTime.getLocalTime();
>
> report->local_time = rxTimestamp;
> report->is_synced = call GlobalTime.local2Global(&rxTimestamp);
> report->global_time = rxTimestamp;
> report->ftsp_root_addr = call TimeSyncInfo.getRootID();
> report->ftsp_seq = call TimeSyncInfo.getSeqNum();
> report->ftsp_table_entries = call TimeSyncInfo.getNumEntries();
>
> call UARTSend.send(0xffff, &uartmsg,
> sizeof(compact_test_ftsp_msg_t));
> }
>
> Here is the URL to the log from all the nodes:
> http://enl.usc.edu/~om_p/net2/test-ftsp/run3.tar.gz
>
> And here is a graph that shows sync/desync status of the network
> during this experiment:
> http://enl.usc.edu/~om_p/net2/test-ftsp/ftsp_result3.gif
the data looks terrible - the worst i've ever seen, actually :).
i think the timestamping is screwed up - i looked at global time
differences for consecutive lines in your log - global time should
increase by 4096 +- timestamping error for consecutive firings, since
timer goes off every 4 seconds. i looked at direct neighbors of node 1
(nodes 2 and 8). e.g. log8: first 45 values are ok, but after receiving
timesync message from node 1 (seqnum 86), the global time actually
decreases by -30473. after that the timing is messed up until seqnum
235. i don't see any other reason then the rx timestamp of message 86
being wrong - node 8 had a full table of valid entries and it received
the new timesync message in time directly from the root. the pattern
repeats: it works well for a while and then is totally messed up for a
while...
it should be quite easy to come up with a smaller scale experiment where
this shows up. it'd be enough to look at receiver timestamps (local
clock), bypassing ftsp completely. maybe just two nodes, one is sending
messages from a fast timer, the other one logs received timestamps.
perhaps a few other nodes would be needed to generate interfering
traffic. i can look at it sometime next week.
brano
More information about the Tinyos-devel
mailing list