135 |
|
|
136 |
The most popular form of modern Peer-to-Peer computing is file-sharing. In this scenario, |
The most popular form of modern Peer-to-Peer computing is file-sharing. In this scenario, |
137 |
participants of Peer-to-Peer networking share their file resources. |
participants of Peer-to-Peer networking share their file resources. |
138 |
This is form of a distributed file system (e.g., \cite{levy90distributedfilesystems}). |
This is form of a distributed file system (see \cite{levy90distributedfilesystems}). |
139 |
A modern Peer-to-Peer system is composed of an \emph{application} level overlay network, i.e., |
A modern Peer-to-Peer system is composed of an \emph{application} level overlay network, i.e., |
140 |
the network operates at the application level and forms a logical network overlay on top of the physical |
the network operates at the application level and forms a logical network overlay on top of the physical |
141 |
network with regard to the ISO-OSI reference model (e.g., \cite{800902}). Figure \ref{fig:application_level} |
network with regard to the ISO-OSI reference model (see \cite{800902}). Figure \ref{fig:application_level} |
142 |
illustrates the Peer-to-Peer application level overlay network. |
illustrates the Peer-to-Peer application level overlay network. |
143 |
Compared to ARPANET's Peer-to-Peer functionality, modern Peer-to-Peer systems |
Compared to ARPANET's Peer-to-Peer functionality, modern Peer-to-Peer systems |
144 |
are ad hoc, i.e., peers join and leave the system constantly. Thus, this property |
are ad hoc, i.e., peers join and leave the system constantly. Thus, this property |
324 |
a large identifier space by the overlay. Globally unique identifiers, known as \emph{keys}, |
a large identifier space by the overlay. Globally unique identifiers, known as \emph{keys}, |
325 |
are also assigned to application-specific data items |
are also assigned to application-specific data items |
326 |
that are selected from the same identifier space. For instance, globally unique keys can be created |
that are selected from the same identifier space. For instance, globally unique keys can be created |
327 |
using a cryptographic content hash function (e.g., SHA-1 \cite{fips-sha-1}) over the contents of a data item. |
using a cryptographic content hash function (see SHA-1 \cite{fips-sha-1}) over the contents of a data item. |
328 |
The form of identifier space differs between proposed systems. A geometrical circular form of identifier space (and variants) |
The form of identifier space differs between proposed systems. A geometrical circular form of identifier space (and variants) |
329 |
is most widely used. For instance, Chord \cite{stoica01chord}, Koorde \cite{kaashoek03koorde}, |
is most widely used. For instance, Chord \cite{stoica01chord}, Koorde \cite{kaashoek03koorde}, |
330 |
Pastry \cite{rowston01pastry}, SWAN \cite{bonsma02swan}, Tapestry \cite{zhao01tapestry} |
Pastry \cite{rowston01pastry}, SWAN \cite{bonsma02swan}, Tapestry \cite{zhao01tapestry} |
333 |
model to implement the form of identifier space. |
model to implement the form of identifier space. |
334 |
|
|
335 |
To store data in a tightly structured overlay, each application-specific |
To store data in a tightly structured overlay, each application-specific |
336 |
unique key (e.g., SHA-1 \cite{fips-sha-1}) is mapped uniformly (e.g., using consistent |
unique key (see SHA-1 \cite{fips-sha-1}) is mapped uniformly (e.g., using consistent |
337 |
hashing \cite{258660}) to an existing peer in the overlay. Thus, a tightly |
hashing \cite{258660}) to an existing peer in the overlay. Thus, a tightly |
338 |
structured overlay assigns a subset of all possible keys to every participating peer. |
structured overlay assigns a subset of all possible keys to every participating peer. |
339 |
We say that a peer is responsible for the keys that are assigned by the overlay. |
We say that a peer is responsible for the keys that are assigned by the overlay. |
369 |
Kademlia \cite{maymounkov02kademlia}, Pastry \cite{rowston01pastry} and Tapestry |
Kademlia \cite{maymounkov02kademlia}, Pastry \cite{rowston01pastry} and Tapestry |
370 |
\cite{zhao01tapestry} use balanced k-trees to implement the data structure of the identifier space. Figure |
\cite{zhao01tapestry} use balanced k-trees to implement the data structure of the identifier space. Figure |
371 |
\ref{fig:kademlia_lookup} shows the process of Kademlia's |
\ref{fig:kademlia_lookup} shows the process of Kademlia's |
372 |
data lookup. Viceroy \cite{malkhi02viceroy} maintains a butterfly data structure (e.g., \cite{226658}), |
data lookup. Viceroy \cite{malkhi02viceroy} maintains a butterfly data structure (see \cite{226658}), |
373 |
which requires only a constant number of neighbor peers while providing $O(\log{n})$ data lookup |
which requires only a constant number of neighbor peers while providing $O(\log{n})$ data lookup |
374 |
efficiency where $n$ is the number of peers in the system. Koorde \cite{kaashoek03koorde}, a recent modification of Chord, uses de Bruijn graphs |
efficiency where $n$ is the number of peers in the system. Koorde \cite{kaashoek03koorde}, a recent modification of Chord, uses de Bruijn graphs |
375 |
\cite{debruijn46graph} to maintain local routing tables. It requires |
\cite{debruijn46graph} to maintain local routing tables. It requires |
449 |
In tightly structured systems, messages are routed across the overlay toward peers, whose |
In tightly structured systems, messages are routed across the overlay toward peers, whose |
450 |
peer identifier is gradually ''closer'' to the key's identifier |
peer identifier is gradually ''closer'' to the key's identifier |
451 |
in the identifier space. The distance can be measured by numerical |
in the identifier space. The distance can be measured by numerical |
452 |
difference between identifiers (e.g., Chord \cite{stoica01chord}), number of |
difference between identifiers (see Chord \cite{stoica01chord}), number of |
453 |
same prefix bits between identifiers (e.g., Pastry \cite{rowston01pastry} and Tapestry |
same prefix bits between identifiers (see Pastry \cite{rowston01pastry} and Tapestry |
454 |
\cite{zhao01tapestry}) or Bit-Wise Exclusive Or (XOR) (e.g., Kademlia \cite{maymounkov02kademlia}). |
\cite{zhao01tapestry}) or Bit-Wise Exclusive Or (XOR) (see Kademlia \cite{maymounkov02kademlia}). |
455 |
Chord's \cite{stoica01chord} distance function does have the property of unidirection |
Chord's \cite{stoica01chord} distance function does have the property of unidirection |
456 |
(for a given point $p_i$ in the identifier space and distance $d$ > 0, there |
(for a given point $p_i$ in the identifier space and distance $d$ > 0, there |
457 |
is exactly one point $p_j$ in a way that the distance between $p_i$ and $p_j$ |
is exactly one point $p_j$ in a way that the distance between $p_i$ and $p_j$ |
836 |
For instance, since the introduction of Gnutella \cite{gnutellaurl}, the primary concern has been the scalability problem of loosely structured |
For instance, since the introduction of Gnutella \cite{gnutellaurl}, the primary concern has been the scalability problem of loosely structured |
837 |
systems. However, the scalability of this loosely structured approach is often misunderstood: |
systems. However, the scalability of this loosely structured approach is often misunderstood: |
838 |
the network overlay of loosely structured systems is scalable, but the data lookup model is not, because |
the network overlay of loosely structured systems is scalable, but the data lookup model is not, because |
839 |
the data lookup process creates too much extra network traffic (e.g., \cite{yang02improvingsearch}). |
the data lookup process creates too much extra network traffic (see \cite{yang02improvingsearch}). |
840 |
|
|
841 |
In tightly structured systems, the leading objective is to make overlay's data lookup process |
In tightly structured systems, the leading objective is to make overlay's data lookup process |
842 |
more fault tolerant against hostile attacks (e.g., \cite{castro02securerouting}). Other key problems in tightly structured |
more fault tolerant against hostile attacks (see \cite{castro02securerouting}). Other key problems in tightly structured |
843 |
systems are the lack of keyword searches \cite{harren02complex, ansaryefficientbroadcast03}, support for heterogeneous peers |
systems are the lack of keyword searches \cite{harren02complex, ansaryefficientbroadcast03}, support for heterogeneous peers |
844 |
\cite{rowston03controlloingreliability}, and load balancing \cite{balakrishanarticle03lookupp2p, byers03dhtbalancing}. |
\cite{rowston03controlloingreliability}, and load balancing \cite{balakrishanarticle03lookupp2p, byers03dhtbalancing}. |
845 |
|
|
946 |
Anonymity is widely used in a Peer-to-Peer system in which data publication and non-censorship are important. Forwarding |
Anonymity is widely used in a Peer-to-Peer system in which data publication and non-censorship are important. Forwarding |
947 |
proxies are used in Freenet \cite{clarke00freenet}, Crowds \cite{reiter98crowds} and Free Haven \cite{dingledine00free} |
proxies are used in Freenet \cite{clarke00freenet}, Crowds \cite{reiter98crowds} and Free Haven \cite{dingledine00free} |
948 |
in order to provide various types of anonymity. Tangler \cite{502002} and Publius \cite{pub00} use cryptographic sharing methods |
in order to provide various types of anonymity. Tangler \cite{502002} and Publius \cite{pub00} use cryptographic sharing methods |
949 |
to split data into fragments \cite{Shamir1979a}. Mix mailer networks (e.g., \cite{mixminionurl}) are commonly used in |
to split data into fragments \cite{Shamir1979a}. Mix mailer networks (see \cite{mixminionurl}) are commonly used in |
950 |
distributed systems and are able to provide some level of anonymity (e.g., \cite{mneturl}). |
distributed systems and are able to provide some level of anonymity (see \cite{mneturl}). |
951 |
|
|
952 |
Even if many existing Peer-to-Peer systems are able to provide some types of anonymity, no |
Even if many existing Peer-to-Peer systems are able to provide some types of anonymity, no |
953 |
current system is able to provide complete anonymity at all levels. Specifically, the conflicts |
current system is able to provide complete anonymity at all levels. Specifically, the conflicts |
1250 |
distributions\footnote{Zipf-distribution is a variant of power-law function. |
distributions\footnote{Zipf-distribution is a variant of power-law function. |
1251 |
Zipf-distribution can be used in observing the frequency of occurrence event $E$, as a function of the rank |
Zipf-distribution can be used in observing the frequency of occurrence event $E$, as a function of the rank |
1252 |
$i$ when the rank is determined by the frequency of occurrence, is a power-law function $E_i \sim \frac{1}{i^{a}}$, |
$i$ when the rank is determined by the frequency of occurrence, is a power-law function $E_i \sim \frac{1}{i^{a}}$, |
1253 |
where the exponent $a$ is close to unity.} (e.g., \cite{breslau98implications}). |
where the exponent $a$ is close to unity.} (see \cite{breslau98implications}). |
1254 |
Therefore, according to Li et al., caching and pre-computation can be done for optimizing search indices. |
Therefore, according to Li et al., caching and pre-computation can be done for optimizing search indices. |
1255 |
Li et al. use gap compression \cite{wittengigabytes}, adaptive set intersections \cite{338634} |
Li et al. use gap compression \cite{wittengigabytes}, adaptive set intersections \cite{338634} |
1256 |
and clustering with their search optimizations. Regular compression algorithms, Bloom filters \cite{362692}, vector |
and clustering with their search optimizations. Regular compression algorithms, Bloom filters \cite{362692}, vector |
1801 |
tolerance in presence of system flux, non-optimal distance functions in identifier space, |
tolerance in presence of system flux, non-optimal distance functions in identifier space, |
1802 |
proximity routing, hostile entities and flexible search \cite{balakrishanarticle03lookupp2p}. |
proximity routing, hostile entities and flexible search \cite{balakrishanarticle03lookupp2p}. |
1803 |
Additionally, there are few real world experiments with tightly structured systems |
Additionally, there are few real world experiments with tightly structured systems |
1804 |
(e.g., \cite{overneturl, edonkey2kurl}). Therefore, we cannot say explicitly, how well these |
(see \cite{overneturl, edonkey2kurl}). Therefore, we cannot say explicitly, how well these |
1805 |
systems would perform in a real Peer-to-Peer environment. However, we believe that these issues will be |
systems would perform in a real Peer-to-Peer environment. However, we believe that these issues will be |
1806 |
solved in the near future, since much current research is concentraing on tightly structured |
solved in the near future, since much current research is concentraing on tightly structured |
1807 |
overlays \cite{projectirisurl}. |
overlays \cite{projectirisurl}. |
1825 |
reasons for this. First, Kademlia's XOR-based distance function is superior |
reasons for this. First, Kademlia's XOR-based distance function is superior |
1826 |
to the distance functions of other systems (see section 2.3.2). Secondly, Kademlia |
to the distance functions of other systems (see section 2.3.2). Secondly, Kademlia |
1827 |
is one of the few tightly structured systems that has been deployed in practical applications |
is one of the few tightly structured systems that has been deployed in practical applications |
1828 |
(e.g., \cite{overneturl, edonkey2kurl, kashmirurl,kato02gisp}), which means that |
(see \cite{overneturl, edonkey2kurl, kashmirurl,kato02gisp}), which means that |
1829 |
Kademlia's algorithm is simple and easy to implement. |
Kademlia's algorithm is simple and easy to implement. |
1830 |
|
|
1831 |
In addition to Kademlia, we propose the use of sloppy hashing \cite{sloppy:iptps03} which |
In addition to Kademlia, we propose the use of sloppy hashing \cite{sloppy:iptps03} which |