presence information

Polychronis Ypodimatopoulos ypod at MIT.EDU
Sun May 20 12:28:14 EDT 2007

I'm not sure exactly how presence service decides whether an XO is still 
present in the mesh or not, but I'll propose something anyway.

Every node waits for a period T (1sec?) to receive presence frames from
its neighbors. At the end of T, it summarizes presence information from
those frames into one or more frames (one frame fits around 100 entries) 
and appends its own presence (MAC+TTL). At each node TTLs are decreased 
and duplicate information on the same MAC is discarded, keeping the one 
with the largest TTL. Presence frames contain a list of [MAC,TTL].

Each node calculates a rate at which presence information arrives from 
all other nodes and fits the expected time until the next arrival into a
Poisson distribution and infers with some confidence (90% should be
fine) whether some other node is still online or not.

This scheme has the following advantages:
1) no broadcasting to whole mesh (communication only with neighbors), so
it should scale very well.
2) confidence level is independent of network latency (different rates
are calculated for different nodes, so no one-value-fits-all)

1) on average, it takes T * {# of hops}seconds to discover node
arrivals/departures in the mesh (as opposed to just "network latency" 
time when using broadcast).

Sample code can be provided.


More information about the Devel mailing list