P2P networks: Methods and open problems

Hermanni Hyytiälä

Agora Center, University of Jyväskylä P.O. Box 35, FIN-40014 Jyväskylä Tel.: +358 14 260 1211

Abstract

In this paper we make a survey of existing P2P approaches. We characterize different P2P systems and classify them into four different categories with regard to the level of topology structure. Also, we give a overview of principal problems for each category and summarize key differences between categories. Finally, we outline possible future research directions in the P2P domain.

Key words: PACS:

1 Introduction

Peer-to-Peer (P2P) systems have recently received considerable attention in both academia [1] and industry [2,3]. The lack of centralization in P2P systems means that the participants can form a distributed system [4] without any investment in centralized hardware by sharing their services and by connecting to each other directly. P2P systems can be characterized as distributed systems in which all communication is symmetrical and all participant entities have similar capabilities and responsibilities [5].

Schollmeier [6] describes a P2P system as a system of distributed entities that share their own services. Each entity, i.e., peer, may contribute services to the overall system. The distributed and ad hoc nature of P2P improves scalability and avoids single points of failure. A P2P system is composed of an application level overlay network, i.e., the network operates at the application level and forms a logical network overlay on top of the physical network. P2P systems are ad hoc, i.e., peers join and leave the system constantly. Thus, the dynamic

Email address: hemppah@cc.jyu.fi (Hermanni Hyytiälä). 1 This work was funded by the Agora Center InBCT project.

Preprint submitted to Elsevier Science 24 October 2003

behaviour poses challenges for efficient construction and maintenance of the overlay network.

In recent years a high number of P2P systems have been proposed and developed. Altough all systems have the characteristics of a P2P system, there are major differences between the systems. However, not all P2P system are suitable for specific tasks. For instance, Gnutella (see [7] for example) may be suitable for sharing material between your colleagues in a company’s network but may not be a good choice for very large scale data sharing. Also, Distributed Hash Tables (DHT) (see [8] for example) could be an ideal for indexing large amounts of data but may a deficient choice when complex queries are required for searching data in a P2P network.

Because of the high number of proposed P2P systems, we believe that there is a need for P2P system classification. Classification helps developers and researchers to understand existing and future P2P systems better. Also, we give a overview of principal research problems for each category and summarize key differences between the categories. In this paper, we consider P2P systems in for different categories how deterministically the application level overlay is constructed and maintained:

• Category 0: The overlay topology of the overlay has no structure at all • Category 1: The overlay topology of the overlay has slight structure

• Category 2: The overlay topology of the overlay is structured

• Category 3: The overlay topology of the overlay is highly structured

By structure, we refer to the topology of the overlay network, i.e., how the connections between participating peers are created and maintained. The structure of the application level overlay differ among the systems and is the determinant factor for a P2P system with regard to its performance, scalability and fault tolerance properties. Specifically, the structure of an application level overlay affects directly to the how data lookups are performed in a P2P system, i.e., a combination of algorithms which are used for locating a specific data item in the overlay. This paper does not provide detailed information about algorithms used overlays. More detailed information can be found within references.

The following discusses related work. In Chapter 3, we define our categorization methology. Then, we classify P2P systems into four different categories in Chapters 4 with general characterization of each category and listing category specific open problems. Chapter 5 summarizes each category’s properties and key differences. In Chapter 6 we discuss briefly problems related to all P2P systems and outline possible future research. We conclude with Chapter 7.

2 Related work

Routing Networks for Distributed Hash Tables, by G S Manku

[9]

[10]

[11]

[8]

[?]

3 Survey methodology

-define application level overlay -four categories, starting from level 0 and ending to level 3 -category 0: ad hoc and unstructured, overlay is a random graph -category 1: there is a slight form of deternism in they overlay -category 2: there is a slight form of deternism in they overlay -category 3: the construction and the maintenance of the overlay is highly deterministic -measure of determinism in the overlay topology -By structure -by

3.1 0-Category (Gnutella)

The placement of services and the topology of overlay is random. The data lookup model in loosely structured systems is not very efficient because of unstructured properties of the overlay.

Gnutella [12] is a well-known example of loosely structured overlay system. Gnutella is is a pure P2P network as no peer is more important than any other peer in the network. The construction and maintenance of Gnutella network is extremely ad hoc, since participating peers can form the overlay network based on local knowledge (i.e., a peer has no knowledge of global state of the system). Figure illustrates the overlay network of Gnutella network. The Gnutella network can be considered as a variation of power-law graph [13]. In power-law graphs only few peers have high number of neighbor connections and the majority of peers have low number of neighbor connections.

In Gnutella, each participating peer maintains a local index of its own shared content. Also, each peer has some connections to other peers, i.e., the peer’s neighbors. Basic Gnutella data lookup works as follows: a peer broadcasts a query request to its neighbors, which in turn forward the query to their neighbors. The number of messages in the network can grow with O(n^{2}) where n is the number of participating peers in the Gnutella network. Figure illustrates why Gnutella’s data lookup model has O(n^{2}) properties.

To limit the amount of network traffic, Gnutella uses Time-To-Live limited (TTL) flooding to distribute queries. Therefore, Gnutella’s data lookup algorithm is a Breadth-First-Search (BFS) with depth limit T (e.g., 7), where T is the system-wide maximum TTL of a message in hops. Thus, only peers that are TTL hops away from the query originator will forward the query or respond to the query. In the Gnutella network, search results are fast, because BFS sends queries to every possible neighbor.

According to Lv et al. [14], Gnutella’s way to perform data lookups, known as flooding, has the following limitations. First, choosing the appropriate TTL is not easy. If the TL is too high, the query originator may unnecessarily strain the network. If the TTL is too low, the query originator might not find the desired data even if it is available somewhere in the network. Second, there are many duplicate messages generated by flooding, especially in high connectivity graphs. It is obvious that, with these limitations, flooding creates significant message processing overhead for each data lookup. Even worse, flooding may increase the load on a participating peer to the point where it has to leave the network.

3.2 1-category (superpeers)

Napster^{2} [15] was designed to allow people to share music. It was a hybrid P2P file-sharing system, i.e., the search index was centralized and the distribution of storage and serving of files was distributed. Peers in the Napster network made requests to the central directory server to find other peers hosting desirable content. Since service requests were totally based on a centralized index, Napster didn’t scale because of constantly updated central directory, and had a single point of failure.

Adamic et al. [16–18] have studied different data lookup methods in power-law networks and have found that by instructing peers that forward data lookups to select high degree peers, the performance of data lookup increases significantly. Figure presents an example topology of power-law network with three high degree peers. Some of the most recent loosely structured P2P protocols have adopted this method: Shareaza [19] uses the Gnutella2-based flooding

2 We decided to include Napster in this section only because it has historical value (see previous section).

protocol [20], Morpheus [21] and KaZaa [22] use the FastTrack-based flooding protocol [23]. However, it is not clear whether the power-law method is scalable or not, as the majority of the query requests are sent only to the high degree peers while making these peers bear the load of the entire system.

3.3 2-category (clusters / smallworld)

-”social networks” a.k.a. small world networks -overlay construction short/long range links -common interest, physical locations, document content -Symphony -SETS -SWAP

3.4 3-category (DHTs)

With tightly structured systems, it is feasible to efficiently perform global data lookups in the overlay. By global lookup, we mean that the system is able to find a information from the overlay, if the information exists. While there are significant differences among proposed tightly structured systems, they all share common property: peer identifiers are assigned to participating peers from a large identifier space by the overlay. Globally unique identifiers, known as keys, are also assigned to application-specific data items that are selected from the same identifier space. For instance, globally unique keys can be created using a cryptographic content hash function (see SHA-1 [24]) over the contents of a data item. The form of identifier space differs between proposed systems. A geometrical circular form of identifier space (and variants) is most widely used. For instance, Chord [25], Koorde [26], Pastry [27], SWAN [28], Tapestry [29] and Viceroy [30] use a circular form of identifier space of n-bit integers modulo 2^{n}. The value of n varies among systems. On the other hand, CAN [31] uses a d-dimensional geometrical torus model to implement the form of identifier space.

To store data in a tightly structured overlay, each application-specific unique key (see SHA-1 [24]) is mapped uniformly (e.g., using consistent hashing [32]) to an existing peer in the overlay. Thus, a tightly structured overlay assigns a subset of all possible keys to every participating peer. We say that a peer is responsible for the keys that are assigned by the overlay. Figure illustrates this process. Also, each peer in the tightly structured overlay maintains a routing table, which consists of identifiers and IP addresses of other peers in the overlay. Entries of the routing table represent peer’s neighbors in the overlay network.

Currently, all tightly structured overlays provide at least polylogarithmical data lookup operations. However, there are some key differences between the data structures representing the identifier space. For example, Chord [25], Skip graphs [33] and SkipNet [34] maintain a distributed data structure that resembles skip lists [35]. In figure , we present an overview of Chord’s data lookup process. On the right side of Chord’s lookup process, the same data lookup process is shown as a binary-tree abstraction. It can be seen that, in each step, the distance decreases with a logarithmic efficiency.

Kademlia [36], Pastry [27] and Tapestry [29] use balanced k-trees to implement the data structure of the identifier space. Figure shows the process of Kademlia’s data lookup. Viceroy [30] maintains a butterfly data structure (see [37]), which requires only a constant number of neighbor peers while providing O(log n) data lookup efficiency where n is the number of peers in the system. Koorde [26], a recent modification of Chord, uses de Bruijn graphs [38] to maintain local routing tables. It requires each peer to have only about two links to other peers to provide O(log n) performance.

Currently, only three higher level abstractions are provided by the tightly structured overlays [39]. Each of these abstractions represent a storage layer in the overlay, but have semantical differences in the usage of the overlay.

First, Distributed Hash Table (DHT) (see e.g., [40], [41]) implements the same functionality as a regular hash table by storing the mapping between a key and a value:

• lookup(key): perform a data lookup with a given key.

• insert(key): insert a data item with a given key.

• remove(key): remove a data item with a given key.

DHT’s interface is generic; values can be any size and type (e.g., content hash over a file). In the DHT abstraction the overlay itself stores the data items. Figure shows the DHT abstraction of the tightly structured overlay.

Second, Decentralized Object Location (DOLR) (see e.g., [42], [43]) is a distributed directory service. DOLR stores pointers to data items throughout the overlay. DOLR’s main operations are:

• publish(key): announce availability of a data item.

• removePublished(key): remove a data item.

• sendToObject(key): deliver a data item to a nearby peer hosting the replica of data item.

The key difference between the DHT and the DOLR abstraction is that, in the DOLR abstraction, the overlay maintains only pointers to the data. Also, the DOLR abstraction routes overlay messages to the nearest available peer hosting a specific data item. This form of locality is not supported by DHT. DOLR’s interface is similar to the DHT’s interface, i.e., values can be any size and type.

Third, tightly structured overlays can be used for scalable group multicast or anycast operations (CAST) (see e.g., [44]). The basic operations include:

• join(groupIdentifier): join group with a given group identifer.

• leave(groupIdentifier): leave group with a given group identifier.

• multicast(message, groupIdentifier): multicast a message to a group

with a given group identifier.

• anycast(message, groupIdentifier): anycast a message to a group with

a given group identifier.

The DOLR and CAST abstractions both use network proximity techniques to optimize their operations in the overlay. Figure presents the DOLR abstraction.

In tightly structured systems, messages are routed across the overlay toward peers, whose peer identifier is gradually ”closer” to the key’s identifier in the identifier space. The distance can be measured by numerical difference between identifiers (see Chord [25]), number of same prefix bits between identifiers (see Pastry [27] and Tapestry [29]) or Bit-Wise Exclusive Or (XOR) (see Kademlia [36]). Chord’s [25] distance function does have the property of unidirection (for a given point p_{i} in the identifier space and distance d ¿ 0, there is exactly one point p_{j} in a way that the distance between p_{i} and p_{j} is d), but does not have symmetry (the distance from p_{i} to p_{j} is same as the distance from p_{j} to p_{i}). Pastry’s [27] distance function supports symmetry, but does not support unidirection. According to Balakrishnan et al. [45], Kademlia’s distance function is both unidirectional and symmetric because of the XOR-metric. Moreover, Kademlia’s [36] XOR-based metric does not need stabilization (like in Chord [25]) and backup links (like in Pastry [27]). However, in all of the above schemes, each hop in the overlay shortens the distance between current peer working with the data lookup and the key that was looked up in the identifier space.

Skip Graphs [33] and SWAN [28] employ a identifier space in which queries are routed to keys. In these systems a peer occupies several positions in the identifier space, one for each application-specific key. The opposite action of placing close keys in the custody of a provider peer is removed at the cost of each peer maintaining one ”resource peer” in the overlay network for each data item it publishes. The provider peer is a peer that has initially published services into the overlay.

PeerNet [46] differs from other tightly structured overlays in that it operates at the network layer instead of application layer (see the ISO-OSI reference model [47]). This property would provide a common interface to all P2P systems using PeerNet. PeerNet makes an explicit distinction between peer identity and address, which is not supported by standard TCP/IP-protocols. PeerNet has the same performance properties as other tightly structured overlays, i.e., O(log n) space required for maintaining information about other peers in the system and O(log n) data lookup efficiency.

Balakrishnan et al. [45] have listed four requirements for tightly structured overlays^{3} that have to be addressed in order to perform efficient data lookups in tightly structured overlays. First, the mapping of keys to peers must be done in a load-balanced way. Second, the overlay must be able to forward a data lookup for a specific key to an appropriate peer. Third, the overlay must support efficient distance function. Finally, the routing tables for each peer must be constructed and maintained adaptively.

Additionally, Balakrishnan et al. argue [48] that tightly structured systems are suitable for next generation Reference Resolutions Services (RRS)^{4} . They present two requirements about the nature of reference resolution. First, there should be a general-purpose and application-indepedent substratum for reference resolution. Second, the references themselves should be unstructured and semantic-free. In this paper, we define a unstructured reference as one that does not expose the target in any way and a semantic-free reference as a reference that has no directives in the reference itself that would expose how the reference should be processed.

-ID Selection for Distributed Hash Tables, by G S Manku,

4 Summary

-list key differences and properties in table

Even though the loosely structured and the tightly structured approaches are both P2P schemes, they have very little in common. Indeed, the only similarity they share is the fact that no one peer is more important than another within the P2P network. Fault tolerance may be an other area in which these approaches have similar properties (e.g., no single point of failure) [10]. The fault tolerance properties of both approaches are currently only initial calculations, or experimented in simulation environments. In practical applications, however, measuring fault tolerance is a much more challenging task and requires additional research to obtain reliable answers.

The most important differences between the approaches are in the perfor-

3 The authors use the term ’DHT’ in their text, but in this paper it is not meant to be specific as the authors list general properties of tightly structured overlays. 4 Domain Name System (DNS) [49] is a widely used RRS system on the Internet.

mance and scalability properties. Generally, tightly structured systems can perform all internal operations in polylogarithmic time, while the performance of loosely structured systems is not always even linear [45]. Moreover, loosely structured systems scale to millions of peers, whereas tightly structured systems are able to cope with billions of concurrent peers [50], [42]. However, it is unknown whether or not all proposed algorithms can preserve logarithmic efficiency and scalability properties in real-life applications; several tightly structured systems assume that participating peers are homogeneous, and the rate of join or leave operation is low [51–53].

For the end user, the biggest difference between these systems is how data lookups are performed. Loosely structured systems provide a more rich and user friendly way of searching for data than do tightly structured systems, as the former have a support for keyword searches [54,14]. Tightly structured systems support only exact key lookups since each data item is identified by globally unique keys [45,8,55].

Table lists the primary differences between the loosely structured approach and the tightly structured approach.

5 Discussion

-future directions: work by Manku, i.e., interconnection networks (ICNs). - outline research challanges -security and trust (concerns all categories) DHT Design: A Modular Approach ID Selection for Distributed Hash Tables Common API Abstractions (DHT/DOLR)

6 Conclusions

In this paper, we have reviewed existing P2P approaches, algorithms and their properties. Our perception is that despite the great number of P2P systems, we are able to classify all systems either to loosely or tightly structured systems.

References

[1] Iris: Infrastructure for resilient internet systems, http://project-iris.net/.

[2] Peer-to-peer working group, www.p2pwg.org.

[3] Project JXTA, http://www.jxta.org.

[4] G. Coulouris, J. Dollimore, T. Kindberg, Distributed Systems: Concepts and Design, Addison-Wesley, 1994.

[5] A. Oram, Harnessing the Power of Disuptive Technologies, O’Reilly, Sebastopol, CA, 2001.

[6] R. Schollmeier, A definition of peer-to-peer networking for the classification of peer-to-peer architectures and applications, in: Proceedings of the First International Conference on Peer-to-Peer Computing (P2P’01), 2001.

[7] M. Ripeanu, I. Foster, A. Iamnitchi, Mapping the gnutella network: Properties of large-scale peer-to-peer systems and implications for system design, IEEE Internet Computing Journal 6 (1).

[8] M. Harren, J. Hellerstein, R. Huebsch, B. Loo, S. Shenker, I. Stoica, Complex queries in DHT-based peer-to-peer networks, in: Proceedings of the 1st International Workshop on Peer-to-Peer Systems (IPTPS02), 2002.

[9] C. Gavoille, Routing in distributed networks: Overview and open problems, ACM SIGACT News - Special Interest Group on Automata and Computability Theory) 32 (2001) 36–52.

[10] D. S. Milojicic, V. Kalogeraki, R. Lukose, K. Nagaraja1, J. Pruyne, B. Richard, S. Rollins, Z. Xu, Peer-to-peer computing, Tech. Rep. HPL-2002-57, Hewlett-Packard (2002).

[11] N. Daswani, H. Garcia-Molina, B. Yang, Open problems in data-sharing peerto-peer systems, in: Proceedings of ICDT 2003, 2003.

[12] Gnutella, http://www.gnutella.com.

[13] R. Albert, A. Barabasi, Statistical mechanics of complex networks, Reviews of Modern Physics 74 (47).

[14] Q. Lv, P. Cao, E. Cohen, K. Li, S. Shenker, Search and replication in unstructured peer-to-peer networks, in: Proceedings of the 16th international conference on Supercomputing, ACM Press, 2002, pp. 84–95.

[15] Napster, http://www.napster.com.

[16] L. A. Adamic, The small world web, in: S. Abiteboul, A.-M. Vercoustre (Eds.), Proceedings of the 3rd European Conference on Research and Advanced Technology for Digital Libraries (ECDL), no. 1696, Springer-Verlag, 1999, pp. 443–452.

[17] L. A. Adamic, R. M. Lukose, B. A. Huberman, Local search in unstructured networks, in: Review chapter to appear in: ’Handbook of Graphs and Networks: From the Genome to the Internet, Wiley-VCH, 2002.

[18] L. A. Adamic, R. M. Lukose, A. R. Puniyani, B. A. Huberman, Search in powerlaw networks, Physical Review E 64 (046135).

[19] Shareaza, http://www.shareaza.com.

[20] Gnutella 2, http://www.gnutella2.com.

[21] Morpheus, http://www.musiccity.com.

[22] Kazaa, http://www.kazaa.com.

[23] FastTrack, http://www.fasttrack.nu.

[24] NIST, FIPS PUB 180-1: Secure Hash Standard (1995).

[25] I. Stoica, R. Morris, D. Karger, M. F. Kaashoek, H. Balakrishnan, Chord: A scalable peer-to-peer lookup service for internet applications, in: Proceedings of the 2001 conference on applications, technologies, architectures, and protocols for computer communications, ACM Press, 2001, pp. 149–160.

[26] F. Kaashoek, D. R. Karger, Koorde: A simple degree-optimal hash table, in: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS03), 2003.

[27] A. Rowstron, P. Druschel, Pastry: Scalable, distributed object location and routing for large-scale peer-to-peer systems, in: IFIP/ACM International Conference on Distributed Systems Platforms (Middleware), 2001, pp. 329–350.

[28] E. Bonsma, Fully decentralized, scalable look-up in a network of peers using small world networks, in: Proceedings of Systemics, Cybernetics and Informatics (SCI), 2002.

[29] B. Y. Zhao, J. D. Kubiatowicz, A. D. Joseph, Tapestry: An infrastructure for fault-tolerant wide-area location and routing, Tech. Rep. UCB/CSD-01-1141, Computer Science Division, U. C. Berkeley (2001).

[30] D. Malkhi, M. Naor, D. Ratajczak, Viceroy: a scalable and dynamic emulation of the butterfly, in: Proceedings of the twenty-first annual symposium on Principles of distributed computing, ACM Press, 2002, pp. 183–192.

[31] S. Ratnasamy, P. Francis, M. Handley, R. Karp, S. Schenker, A scalable contentaddressable network, in: Proceedings of the 2001 conference on applications, technologies, architectures, and protocols for computer communications, ACM Press, 2001, pp. 161–172.

[32] D. Karger, E. Lehman, T. Leighton, R. Panigrahy, M. Levine, D. Lewin, Consistent hashing and random trees: distributed caching protocols for relieving hot spots on the world wide web, in: Proceedings of the twenty-ninth annual ACM symposium on Theory of computing, ACM Press, 1997, pp. 654–663.

[33] J. Aspnes, G. Shah, Skip graphs, in: Proceedings of the Fourteenth Annual ACM-SIAM Symposium on Discrete Algorithms, Baltimore, MD, USA, 2003.

[34] N. J. Harvey, M. B. Jones, S. Saroiu, M. Theimer, A. Wolman, SkipNet: A scalable overlay network with practical locality properties, in: Proceedings of the 4th USENIX Symposium on Internet Technologies and Systems (USITS ’03), 2003.

[35] W. Pugh, Skip lists: a probabilistic alternative to balanced trees, Communications of the ACM 33 (6) (1990) 668–676.

[36] P. Maymounkov, D. Maziéres, Kademlia: A Peer-to-peer Information System Based on the XOR metric, in: Proceedings of the 1st International Workshop on Peer-to-Peer Systems (IPTPS02), 2002.

[37] S. N. Bhatt, F. R. K. Chung, J.-W. Hong, F. T. Leighton, B. Obrenic, A. L. Rosenberg, E. J. Schwabe, Optimal emulations by butterfly-like networks, Journal of the ACM (JACM) 43 (2) (1996) 293–330.

[38] N. de Bruijn, A combinatorial problem, in: Proceedings of the Koninklije Nederlandse Academie van Wetenshapen, 1946, pp. 758–764.

[39] F. Dabek, B. Zhao, P. Druschel, I. Stoica, Towards a Common API for structured peer to peer overlays, in: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS03), 2003.

[40] F. Dabek, M. F. Kaashoek, D. Karger, R. Morris, I. Stoica, Wide-area cooperative storage with CFS, in: Proceedings of the eighteenth ACM symposium on Operating systems principles, ACM Press, 2001, pp. 202–215.

[41] A. I. T. Rowstron, P. Druschel, Storage management and caching in PAST, a large-scale, persistent peer-to-peer storage utility, in: Symposium on Operating Systems Principles, 2001, pp. 188–201.

[42] J. Kubiatowicz, D. Bindel, Y. Chen, S. Czerwinski, P. Eaton, D. Geels, R. Gummadi, S. Rhea, H. Weatherspoon, C. Wells, B. Zhao, Oceanstore: an architecture for global-scale persistent storage, in: Proceedings of the ninth international conference on Architectural support for programming languages and operating systems, ACM Press, 2000, pp. 190–201.

[43] S. Iyer, A. Rowstron, P. Druschel, Squirrel: a decentralized peer-to-peer web cache, in: Proceedings of the twenty-first annual symposium on Principles of distributed computing, ACM Press, 2002, pp. 213–222.

[44] S. Zhuang, B. Zhao, A. Joseph, R. Katz, J. Kubiatowicz, Bayeux: An architecture for scalable and fault-tolerant widearea data disemination, in: In Proc. of the Eleventh International Workshop on Network and Operating System Support for Digital Audio and Video (NOSSDAV 2001), 2001.

[45] H. Balakrishnan, M. F. Kaashoek, D. Karger, R. Morris, I. Stoica, Looking up data in p2p systems, Communications of the ACM 46 (2) (2003) 43–48.

[46] J. Eriksson, M. Faloutsos, S. Krishnamurthy, PeerNet: Pushing peer-to-peer down the stack, in: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS03), 2003.

[47] R. Popescu-Zeletin, Implementing the iso-osi reference model, in: Proceedings of the eigth Data Communications Symposium, 1983, pp. 56–66.

[48] H. Balakrishnan, S. Shenker, M. Walfish, Semantic-free referencing in linked distributed systems, in: Proceedings of the 2nd International Workshop on Peerto-Peer Systems (IPTPS03), 2003.

[49] P. Mockapetris, DNS encoding of network names and other types, RFC 1101, IETF Network Working Group (1989).

[50] S. Osokine, Search optimization in the distributed networks, http://www.grouter.net/gnutella/search.htm (October 2002).

[51] G. S. Manku, M. Bawa, P. Raghavan, Symphony: Distributed hashing in a small world, in: Proceedings of the 4th USENIX Symposium on Internet Technologies and System (USITS ’03), 2003.

[52] D. Liben-Nowell, H. Balakrishnan, D. Karger, Observations on the dynamic evolution of peer-to-peer networks, in: Proceedings of the 1st International Workshop on Peer-to-Peer Systems (IPTPS02), 2002.

[53] R. Mahajan, M. Castro, A. Rowston, Controlling the cost of reliability in peerto-peer overlays, in: Proceedings of the 2nd International Workshop on Peerto-Peer Systems (IPTPS03), 2003.

[54] B. Yang, H. Garcia-Molina, Efficient search in peer-to-peer networks., in: Proceedings of the 22nd IEEE International Conference on Distributed Computing Systems (ICDCS), 2002.

[55] S. El-Ansary, L. O. Alima, P. Brand, S. Haridi, Efficient broadcast in structured P2P networks, in: Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS03), 2003.