CS262B Reading Summary

Makeing Gnutella-like P2P Systems Scalable

Yatin Chawathe et al

Summary by Feng Zhou
3/29/04

Strong points of the paper are:

  1. The first major difference of Gia form Gnutella is that biased random walk is used to replace flooding of search requests.  This is based on the assumption that most searches are for popular requests, which will be found by a few steps of random walk.  Using flooding for popular content will result in waste network bandwidth because a lot of duplicate results will be found. On the other hand, random walk strictly increases the number of hops it takes to find the first match. Therefore for less popular files, random walk will make the waiting time much longer.  Random walk is also less robust, because a single packet drop or malicious node can result in loss of query. This problem is addressed in the paper by keep-alive messages.
  2. "Topology adaptation" is the central algorithm in Gia to organize nodes into a topology appropriate for the different capacities of nodes. More powerful nodes get more neighbors and less powerful nodes try to attach themselves to powerful nodes.  This effectively organizes the nodes into a loose tree-like hierachies, where the most powerful nodes sit on the top, with the less powerful ones below them, and so on.  With one-hop replication in place, the powerful nodes know about all the files on their immediate neighbors.  Therefore queries only need to walk among the powerful nodes, which is what the biased random walk algorithm does.
  3. The token based flow control is useful for stopping single nodes from doing queries too fast. The token are handled out in proportion to the recipients' capacities.  This not only reflects the more powerful neighbors' needs to route more requests, but also rewards nodes that contribute more to the network.  Thus it's a good scheme.
One major flaw.

Just as Gnutella, Gia does not take into account network locality in the construction of the overlay topology. This results in excessive WAN traffic and increases query latency for end users. However, it should be doable to add Pastry-like locality-aware overlay construction to Gia.