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:
- 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.
- "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.
- 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.