Re: [Roll] trickle question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Roll] trickle question
Philip Levis wrote:
On Nov 14, 2009, at 7:16 AM, Joakim Eriksson wrote:
Hello Phil and Julien,
Is it really necessary to wait until the complete I interval has
passed before doubling I and restarting T (with the new interval)?
It feels that we get basically the same behavior with less complex
code if we skip the wait for the complete interval to pass.
Hm -- I can't recall if I tried this variant. I'm searching around for
the analytical simulator source code, if I find it, I'll let you know.
That would be great!
One thing is that trickle is more efficient when intervals are
synchronized (it sends half as many messages). Let's say you reset the
interval after T. First, the average interval length is 0.75I, leading
to 33% more messages. Second, it will inherently desynchronize
intervals, leading to twice as many messages compared to the best case.
Is it really the same as unsynchronized trickle (according to the spec)?
If we skip waiting for the interval we will reset and restart the
counting of sent messages, and count received DIOs immediately.
In the version in the specification all nodes will ignore any
other nodes DIO messages that happen to come after their own
transmission but before the the interval ends.
This is a total overhead of sending approximately 2.5 times as many
messages if you don't. Of course, the 33% also results in a lower
detection latency.
Given how the interval length changes, if you want to implement it this
way, *all* nodes need to do so, or you break load balancing.
Yes, if a single node would run this it will have a higher likelihood
to send than the other nodes. But the interval I length is still
doubled in each cycle, so it is not as bad as if it would just
double the interval that it feeds to T (e.g. I/2 + rand()*I/2).
But this is just off the top of my head. The behavior of protocols like
these can often be not something you'd expect (e.g., "basically the same
behavior"). I would definitely run some tests to see how it behaves
under very high density. It could be that nodes which pick small T
values end up shouldering more of the load due to a variant of the short
listen problem. My intuition is that this is a shortcut which probably
isn't worth it as it might bite you later, but that intuition could be
wrong.
It should not be the short listening problem, I think, but there
might be other "emergent behaviors" that is more or less impossible
to see without a proper round of simulations.
Usually, it's just easier to keep track of the rand() result, rather
than keep two timers.
Yes, I agree on that!
Best regards,
-- Joakim Eriksson, SICS
Phil
Note: Messages sent to this list are the opinions of the senders and do not imply endorsement by the IETF.