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. As a result, some of the most recent loosely |
performance increases signficantly. As a result, some of the most recent loosely |
287 |
structured Peer-to-Peer system have adopted this method with some modifications |
structured Peer-to-Peer systems have adopted this method with some modifications |
288 |
\cite{gnutella2url}, \cite{shareazaurl}, \cite{fasttrackurl}, \cite{morpheusurl}, |
\cite{gnutella2url}, \cite{shareazaurl}, \cite{fasttrackurl}, \cite{morpheusurl}, |
289 |
\cite{kazaaurl}. Figures \ref{fig:gnutella_overlay_supernodes} and \ref{fig:gnutella_overlay_cluster} |
\cite{kazaaurl}, \cite{jxtaurl}, \cite{jxtaoverview}, \cite{botros01jxtasearch}, |
290 |
illustrated two possible variations of power-law overlay networks. However, it's |
\cite{ganesan02yappers}. |
291 |
not clear whether this algorithm is scalable or not, as majority of the query |
Figures \ref{fig:gnutella_overlay_supernodes} and \ref{fig:gnutella_overlay_cluster} |
292 |
request are sent only to the high degree peers, making them stress the overhead |
illustrated two possible variations of power-law overlay networks. All the systems |
293 |
of nearly entire system. |
share the property of that high degree peers maintain index of all other peers |
294 |
|
they know about. However, it's not clear whether this algorithm is scalable or not, |
295 |
|
as majority of the query request are sent only to the high degree peers, making |
296 |
|
them stress the overhead of nearly entire system. |
297 |
|
|
298 |
\begin{figure} |
\begin{figure} |
299 |
\centering |
\centering |
309 |
\label{fig:gnutella_overlay_cluster} |
\label{fig:gnutella_overlay_cluster} |
310 |
\end{figure} |
\end{figure} |
311 |
|
|
312 |
|
Additionally, there has been other improvements also. In iterative deepening |
313 |
|
\cite{yang02improvingsearch}, multiple breadt-first searches are initiated |
314 |
|
with successively larger TTL depth limits, until either the query is satisfied, |
315 |
|
or the maximumum depth $D$ has been reached. To perform a data lookup, query |
316 |
|
originator starts a flood with small TTL value. If the search is not succesful, |
317 |
|
the query originator increases the TTL value and performs another flood. This |
318 |
|
process is repeated until the desired data is found or maximumum depth $D$ |
319 |
|
has been reached. Expanding ring, proposed by Shenker et al., \cite{lv02searchreplication}, |
320 |
|
is similar to iterative deepening techique. With these techniques, search |
321 |
|
may not be fast when desired data item requires many consecutive flooding rounds. |
322 |
|
|
323 |
|
Directed breadt-first search \cite{yang02improvingsearch} optimizes the original |
324 |
|
breadt-first searche in way that peer selects neighbors with many quality results |
325 |
|
may be reached, thereby maintaining the the quality of costs and decreasing the amount |
326 |
|
of messages sent to network. Alpine Peer-to-Peer system \cite{alpineurl} uses |
327 |
|
somewhat similar method when performing data lookups. |
328 |
|
|
329 |
|
Local indices \cite{yang02improvingsearch} in one variation of active caching. |
330 |
|
In this scheme, each peer maintains an index over the data of all nodes within |
331 |
|
$h$ hops of itself, where $h$ is a system-wide variable, called radius of the |
332 |
|
index\footnote{In normal BFS case, the value of $h$ is 0, as peer only has index |
333 |
|
over its local content.}. Mutual index caching architecture, as proposed in |
334 |
|
\cite{osokine02distnetworks}, is one variation of local indices techique. |
335 |
|
|
336 |
|
In random walk approach \cite{lv02searchreplication}, peer forwards a query to |
337 |
|
randomly selected neighbor. The basic random walk approach decreases the |
338 |
|
overhead generated by messages. On the other hand, basic random walk approach |
339 |
|
has poor response time. As suggested in \cite{lv02searchreplication}, |
340 |
|
random walk approach can be done more effective by introducing |
341 |
|
multiple ''walkers''. Freenet \cite{clarke00freenet} Peer-to-Peer system uses |
342 |
|
random walk searches in query lookups. Indeed, Freenet's query resembles |
343 |
|
depth-first traversal and peers' routing tables are dynamically built |
344 |
|
using caching. This is an outcome of Freenet's main design priciples, |
345 |
|
i.e., anonymity. |
346 |
|
|
347 |
|
Previously presented improvements are only partial solutions. Obviously, more |
348 |
|
research is required to make loosely structured approach's data lookup more |
349 |
|
scalable and effective. |
350 |
|
|
351 |
|
principles |
352 |
|
|
353 |
|
|
354 |
power-law disribution |
power-law disribution |
377 |
before forwarding the query to another neighbor (if query not ok), or forwarding results back |
before forwarding the query to another neighbor (if query not ok), or forwarding results back |
378 |
to the query source (if query ok) |
to the query source (if query ok) |
379 |
|
|
|
BFS |
|
|
-Search results are fast, because BFS sends queries to every possible nodes |
|
|
-Wastes resources, because BFS sends queries to every possible nodes |
|
|
|
|
|
|
|
|
DFS |
|
|
-Poor response time, beecause each node processes the query sequentially... |
|
|
-...and thereby minimazing cost |
|
|
|
|
|
|
|
|
|
|
380 |
|
|
381 |
|
|
|
\cite{yang02comparinghybrid} |
|
|
|
|
382 |
\subsection{Formal definition} |
\subsection{Formal definition} |
383 |
|
|
384 |
-let S be the aggregate of all services s in system (data, service, computing power) |
-let S be the aggregate of all services s in system (data, service, computing power) |
405 |
-with every lookup query, a node determines how proficient a given node is to another node's objectives |
-with every lookup query, a node determines how proficient a given node is to another node's objectives |
406 |
|
|
407 |
|
|
408 |
Freenet \cite{clarke00freenet} |
|
409 |
Improve Freenet performance with small worlds \cite{zhang02using} |
Improve Freenet performance with small worlds \cite{zhang02using} |
410 |
Milgram's small world experiment \cite{milgram67smallworld} |
|
|
Small worlds \cite{adamic99small} |
|
411 |
\cite{ramanathan02goodpeers} |
\cite{ramanathan02goodpeers} |
412 |
\cite{kleinberg99small} |
\cite{kleinberg99small} |
413 |
\cite{watts00dynamics} |
\cite{watts00dynamics} |
414 |
\cite{nips02-Kleinberg} |
\cite{nips02-Kleinberg} |
|
\cite{ganesan02yappers} |
|
|
\cite{gnutellaurl} |
|
415 |
|
|
416 |
\cite{jxtaurl} |
|
417 |
\cite{jxtaoverview} |
|
418 |
\cite{botros01jxtasearch} |
|
419 |
\cite{kato02gisp} |
\cite{kato02gisp} |
420 |
\cite{alpineurl} |
|
421 |
\cite{joseph02neurogrid} |
\cite{joseph02neurogrid} |
422 |
|
|
423 |
|
|