Last updated at 6:31 pm UTC on 3 March 2005
presence is nice to 'push' data out on the network if the dataset is not too big - every node eventually gets a copy of the whole dataset!
So, for some applications, it's easier to do a rendezvous with a service via presence, and then fetch more information after the rendezvous. This is typical for 'rare services', say a mail gateway or a database or something.
Still, for other applications, it's probably easiest to assume that every node on the network has something to contribute - if lots of nodes participate in file sharing, then looking for a file is best done by asking all nodes for the file. This is called 'flood searching'. The network is 'flooded' by the querying node that broadcasts its query. Any node that has something to contribute to the response sends an answer back directly to the node (again, note that ant routing helps in making at least the answering bit efficient). As you'll likely involve all nodes of the network in your search, as an application designer you should think twice before using it. On the other hand, Gnutella doesn't do anything else and it still runs...
Flood searching in AardWorks Gossip is implemented based on MUTE's utility counters. Utility counters in effect form a distributed algorithm for limiting the spread of queries more efficient than a straightforward hopcount/time-to-live does. I'm not going into details here, nothing new was invented and the MUTE project has an excellent description.
AWGFloodSearch implements flood searching.