234 |
other Peer-to-Peer networks, no Peer is more important than any other Peer in the network. |
other Peer-to-Peer networks, no Peer is more important than any other Peer in the network. |
235 |
The construction and maintenance of Gnutella network is extremely ad hoc, since participating |
The construction and maintenance of Gnutella network is extremely ad hoc, since participating |
236 |
peers can form the overlay network based on local knowledge. Figure \ref{fig:gnutella_overlay} |
peers can form the overlay network based on local knowledge. Figure \ref{fig:gnutella_overlay} |
237 |
illustrates how Peers can form an overlay network. Initially, peer 1 creates the overlay, since |
illustrates how peers form an overlay network. Initially, peer 1 creates the overlay, since |
238 |
it's the first participating peer. Then, repeatly new peers join the network and connects to |
it's the first participating peer. Then, repeatly new peers join the network and connects to |
239 |
other nodes in a random manner. Thus, gnutella can be considered as a \emph{random graph}. |
other nodes in a random manner. Thus, gnutella can be considered as a \emph{random graph}. |
240 |
|
|
241 |
|
\begin{figure} |
242 |
|
\centering |
243 |
|
\includegraphics[width=6cm, height=6cm]{gnutella_overlay.eps} |
244 |
|
\caption{Basic loosely structured overlay's ad hoc connectivity graph} |
245 |
|
\label{fig:gnutella_overlay} |
246 |
|
\end{figure} |
247 |
|
|
248 |
|
|
249 |
In Gnutella, each participating peer maintains local index of its own shared content. Also, |
In Gnutella, each participating peer maintains local index of its own shared content. Also, |
250 |
each peer has a few connections to other peer, i.e., peer's \emph{neighbors}. Basic gnutella |
each peer has a few connections to other peer, i.e., peer's \emph{neighbors}. Basic gnutella |
251 |
data lookup works as follows: peer broadcasts a query request to its neighors, which in turn |
data lookup works as follows: peer broadcasts a query request to its neighors, which in turn |
257 |
are TTL hops away from the query originator will forward the query or respond to the query. |
are TTL hops away from the query originator will forward the query or respond to the query. |
258 |
In Gnutella network, search results are fast, because breadt-First traversal sends queries to |
In Gnutella network, search results are fast, because breadt-First traversal sends queries to |
259 |
every possible neighbor. On the other hand, this method wastes resources and doesn't scale well. |
every possible neighbor. On the other hand, this method wastes resources and doesn't scale well. |
260 |
|
Figure \ref{fig:gnutella_query} shows the query lookup process of Gnutella network. |
261 |
|
|
262 |
|
\begin{figure} |
263 |
|
\centering |
264 |
|
\includegraphics[width=8cm, height=6cm]{gnutella_query.eps} |
265 |
|
\caption{Basic Gnutella query} |
266 |
|
\label{fig:gnutella_query} |
267 |
|
\end{figure} |
268 |
|
|
269 |
According to \cite{lv02searchreplication}, Gnutella's way to perform data lookups, \emph{flooding}, has |
According to \cite{lv02searchreplication}, Gnutella's way to perform data lookups, \emph{flooding}, has |
270 |
following limitations. First, choosing the approriate TTL in practice is not easy. If the |
following limitations. First, choosing the approriate TTL in practice is not easy. If the |
272 |
low, the query originator might not find the desired data even it's available somewhere |
low, the query originator might not find the desired data even it's available somewhere |
273 |
in the network. Second, there are many duplicate messages generated by flooding, especially |
in the network. Second, there are many duplicate messages generated by flooding, especially |
274 |
in high connectivity graphs. It is obvious that with these limitations, flooding creates |
in high connectivity graphs. It is obvious that with these limitations, flooding creates |
275 |
significant message processing overhead for each query. Furthermore, as a result, |
significant message processing overhead for each query. Furthermore, flooding may increase |
276 |
flooding may increase the load on participating to the point, where it has to leave the network. |
the load on participating to the point, where it has to leave the network. |
277 |
|
|
278 |
|
|
279 |
|
|
283 |
networks\footnote{In power-law networks only a few peers have high number of neighbor |
networks\footnote{In power-law networks only a few peers have high number of neighbor |
284 |
links and major of peers have low nuber of neighbor links.} and they have found that by |
links and major of peers have low nuber of neighbor links.} and they have found that by |
285 |
instructing peers forwarding queries to select high degree peers the data lookup's |
instructing peers forwarding queries to select high degree peers the data lookup's |
286 |
performance increases signficantly. However, it's not clear whether this algorithm |
performance increases signficantly. As a result, some of the most recent loosely |
287 |
is scalable or not. |
structured Peer-to-Peer system have adopted this method with some modifications |
288 |
. |
\cite{gnutella2url}, \cite{shareazaurl}, \cite{fasttrackurl}, \cite{morpheusurl}, |
289 |
|
\cite{kazaaurl}. Figures \ref{fig:gnutella_overlay_supernodes} and \ref{fig:gnutella_overlay_cluster} |
290 |
|
illustrated two possible variations of power-law overlay networks. However, it's |
291 |
|
not clear whether this algorithm is scalable or not, as majority of the query |
292 |
|
request are sent only to the high degree peers, making them stress the overhead |
293 |
|
of nearly entire system. |
294 |
|
|
295 |
|
|
296 |
\begin{figure} |
\begin{figure} |
297 |
\centering |
\centering |
298 |
\includegraphics[width=6cm, height=6cm]{gnutella_overlay.eps} |
\includegraphics[width=8cm, height=6cm]{gnutella_overlay_supernodes.eps} |
299 |
\caption{Basic loosely structured overlay's ad hoc connectivity graph} |
\caption{Power-law network overlay with super peers.} |
300 |
\label{fig:gnutella_overlay} |
\label{fig:gnutella_overlay_supernodes} |
301 |
\end{figure} |
\end{figure} |
302 |
|
|
303 |
|
\begin{figure} |
304 |
|
\centering |
305 |
|
\includegraphics[width=10cm, height=6cm]{gnutella_overlay_clusters.eps} |
306 |
|
\caption{Power-law network overlay with 2-redundant super node clusters} |
307 |
|
\label{fig:gnutella_overlay_cluster} |
308 |
|
\end{figure} |
309 |
|
|
310 |
|
|
311 |
|
|
312 |
|
|
313 |
|
|
314 |
power-law disribution |
power-law disribution |
388 |
\cite{nips02-Kleinberg} |
\cite{nips02-Kleinberg} |
389 |
\cite{ganesan02yappers} |
\cite{ganesan02yappers} |
390 |
\cite{gnutellaurl} |
\cite{gnutellaurl} |
391 |
\cite{gnutella2url} |
|
|
\cite{shareazaurl} |
|
|
\cite{fasttrackurl} |
|
|
\cite{morpheusurl} |
|
|
\cite{kazaaurl} |
|
392 |
\cite{jxtaurl} |
\cite{jxtaurl} |
393 |
\cite{jxtaoverview} |
\cite{jxtaoverview} |
394 |
\cite{botros01jxtasearch} |
\cite{botros01jxtasearch} |
399 |
|
|
400 |
\subsection{Super peers and Super peer clusters} |
\subsection{Super peers and Super peer clusters} |
401 |
|
|
|
\begin{figure} |
|
|
\centering |
|
|
\includegraphics[width=8cm, height=6cm]{gnutella_overlay_supernodes.eps} |
|
|
\caption{Loosely structured overlay's ad hoc connectivity graph with super nodes} |
|
|
\label{fig:gnutella_overlay_supernodes} |
|
|
\end{figure} |
|
402 |
|
|
|
\begin{figure} |
|
|
\centering |
|
|
\includegraphics[width=10cm, height=6cm]{gnutella_overlay_clusters.eps} |
|
|
\caption{Loosely structured overlay's ad hoc connectivity with 2-redundant super node clusters} |
|
|
\label{fig:gnutella_overlay_cluster} |
|
|
\end{figure} |
|
403 |
|
|
404 |
|
|
405 |
\begin{figure} |
|
|
\centering |
|
|
\includegraphics[width=8cm, height=6cm]{gnutella_query.eps} |
|
|
\caption{Basic Gnutella query} |
|
|
\label{fig:gnutella_query} |
|
|
\end{figure} |
|
406 |
|
|
407 |
|
|
408 |
|
|