City University of Hong Kong Department of Computer Science Dissertation Study of Collaboration Service on Peer-to-peer Network Student Name Student ID Supervisor : Lo Siu Hang, Terence : 97471626 : Dr. CHUN, Andy H W -= Table of Contents =Abstract............................................................................................................. 1 Acknowledgment.............................................................................................. 2 List of Figures................................................................................................... 3 1. Introduction .............................................................................................. 4 2. Objectives ................................................................................................. 6 3. Background and history .......................................................................... 7 3.1 Demand on increasing interactions between entities ................................ 8 3.2 Widespread of wireless networks and mobile devices .............................. 9 3.3 History of Peer-to-peer model................................................................. 10 3.4 SETI@Home (Peer-to-peer computing).................................................. 11 3.5 Napster (Peer-to-peer file sharing) ......................................................... 13 3.6 BitTorrent (Peer-to-peer file sharing) ...................................................... 15 4. Peer-to-peer protocol............................................................................. 17 4.2 What is Project JXTA ? ........................................................................... 17 4.3 Why choose Project JXTA ? ................................................................... 18 4.4 Project JXTA architecture ....................................................................... 20 4.5 Protocols in Project JXTA ....................................................................... 21 5. Design and Implementation – Workspace model ................................ 23 5.1 System Design........................................................................................ 24 5.2 Development Environment...................................................................... 32 5.3 The Application – Group Communication System .................................. 33 5.4 Core Java Class Description................................................................... 37 5.5 Application Specific Java Class Description ........................................... 47 5.6 Installation and running the application................................................... 50 5.7 Screen Capture of the Application .......................................................... 54 5.8 JXTA Configuration................................................................................. 59 5.9 Difficulties experienced in design and deployment ................................. 65 6. Conclusion.............................................................................................. 68 6.1 Contributions........................................................................................... 68 6.2 Evaluation and future development ........................................................ 70 7. Reference ................................................................................................ 71 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Abstract Traditional peer-to-peer (P2P) networks have widespread on the Internet because of its fault-tolerable, decentralized, scalable and high availability architecture. However, P2P networks face some serious challenges and a demand on more collaboration between peers. This project addresses two major problems facing in P2P networks, efficient resource location and peer group formation mechanism. A workspace model is proposed for P2P networks. The model is a hierarchical model and peers on the network organized themselves into a hierarchical tree structure. All peers on the network connect to a super peer. These super peers provide messaging relaying and membership services for the workspaces. The project also proposes a resource location mechanism to improve the searching ability of the system. Page 1 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Acknowledgment I would like to take this opportunity to thank all people who given me support during the project. Firstly, I would like to express my gratitude to my project supervisor, Dr. Andy Chun, for his valuable advices and providing me an open ground to have my own research direction throughout the project. My gratefulness is acknowledged to all technicians who participated in system setting, for their assistance in configuring out networking problems. At last, I would like to thank my wife and parents for their support. Page 2 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) List of Figures Fig. 1 Screen capture of SETI@Home ..............................................................11 Fig. 2 Screen capture of user interface of Kazaa ............................................. 13 Fig. 3 Screen capture of a client of BitTorrent................................................... 15 Fig. 4 Architecture of JXTA Virtual Network ...................................................... 18 Fig. 5 Project JXTA Architecture ....................................................................... 20 Fig. 6 P2P Model .............................................................................................. 24 Fig. 7 Hybrid Model .......................................................................................... 25 Fig. 8 Hierarchical Tree Structure ..................................................................... 26 Fig. 9 Rendezvous peers in action ................................................................... 30 Fig. 10 Relay peers in action ............................................................................ 31 Fig. 11 Interaction of “peers” in an enterprise ................................................... 34 Fig. 12 Peers on different workspaces ............................................................. 36 Fig. 13 Operation scope of Discovery Service.................................................. 39 Fig. 14 Operation scope of Event Service ........................................................ 41 Fig. 15 Search mechanism – with super peer present ..................................... 45 Fig. 16 Search mechanism – peer multicasting................................................ 46 Fig. 17 Hierarchical structure in group communication service (Workspace perspective)............................................................................................... 49 Fig. 18 Loading screen when initializing JXTA and core engine ....................... 54 Fig. 19a User Interface of the application ......................................................... 55 Fig. 19b User Interface of the application ......................................................... 56 Fig. 20 Dialogue box for creating new workspace ............................................ 57 Fig. 21 Workspace information ......................................................................... 57 Fig. 22 Dialogue box for joining a workspace ................................................... 58 Fig. 23 Error prompt when user attempts to leave the global workspace ......... 58 Fig. 24 Screen capture of “Basic” tab ............................................................... 60 Fig. 25 Screen capture of “Advanced” tab ........................................................ 61 Fig. 26 Screen capture of “Rendezvous/Relays” tab ........................................ 62 Fig. 27 Screen capture of “Security” tab ........................................................... 64 Fig. 28 Screen capture of JXTA Secure Login.................................................. 64 Fig. 29 Physical network diagram with different sub-network setting................ 67 Page 3 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 1. Introduction On the Internet, there are varieties of information distributed in an unorganized way. The Semantic Web [1] provides a common framework for data sharing based on Resource Description Framework, which makes location of specific type resources easier. Another kind of resource locating method is forming peer groups with similar interests and shares their resources. Peer-to-peer (P2P) architecture are commonly used on the internet, applications like ICQ, Napster, Yahoo Messenger enables user friendly and convenient way for communication and information sharing between different peers over the world. In real world, peers are not only communicating themselves in one-to-one basis, the current P2P system lacks the ability in supporting group services, such as group messaging, conferencing. Usually, such kind of collaboration requires efficient resource location and searching since every request or response from a peer in a group will trigger actions in one or more peers in the same group. Some P2P networks like Gnutella, it uses message flooding mechanism in Page 4 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) broadcasting messages, such group activities will introduce heavy loading to the network Page 5 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 2. Objectives The goal of this project is to design a model for P2P network to provide efficient resource location and group formation ability. The workspace model proposed is a hierarchical model, edge peers arranged in a tree structure. The problem to be addressed in the project is to organize peer groups and form a virtual workspace over a P2P network and provides efficient search mechanism for peers to find and join a particular workspace. Page 6 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3. Background and history The internet connects millions of devices and the number is still growing rapidly. To locate a device on the internet, internet address is used. In peerto-peer network, an identifier would be assigned to a device, unlike internet address, which may change upon reconnect after disconnection. As peerto-peer model is still under development, different vendors and solution provide implements their own “standard”, there are many implementation and proprietary protocols and topology. This phenomenon indicates the need of peer-to-peer system is high. Page 7 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.1 Demand on increasing interactions between entities In late 1980’s, computerization was the main trend that large enterprises used to improve their staffs’ efficiency and reduce operation costs. More and more corporations got computerized and setup local area networks for data sharing. In late 1990’s, by making use of internet technologies, intranet and extranet became popular for information sharing, portals and applications were built on web servers and staffs only had to click on the internet browser to search and get what they want. In order to further enhance interactions between staffs, some applications like videoconferencing, instant messaging services were developed. Workstations in different departments usually located in different sub-networks, level of collaboration of staffs depended on the interoperability between different networks. Peer-to-peer collaboration services, which could run regardless of the underlying network infrastructure, became a new upcoming trend in the new century; peer groups can communicate each other without knowing others’ the network infrastructure. It increases efficiency on information sharing on front-end workers, especially for those staffs working outside office. Page 8 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.2 Widespread of wireless networks and mobile devices Wireless networks increased mobility of the devices such as PDAs, mobile phones, and notebooks, unlike traditional hard-wired local area networks. Users can move almost without restriction and access local area networks from nearly anywhere. Most mobile applications are client server based which all mobile clients connect to a centralized server and there was not any direct connection between clients themselves. Peer-to-peer network enables platform, no matter where they were located, to allow them communicate and work with each other. It is essential to business that involves human-to-human activities and rapid data interchange, like salespersons, on-site technical support staff, insurance agent, etc. Page 9 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.3 History of Peer-to-peer model The first well known peer-to-peer system, USENET [13], introduced in 1979, is the distributed application that provides most of the world with its newsgroups. At the time, nothing like the "on-demand" Internet like what today existed. Files were exchanged in batch over phone lines, often at night when long distance rates were lowest. Consequently, there was no effective way to centralize the function of the USENET. The natural result was an extremely decentralized, distributed application. Some applications are listed below, which widespread in the internet age, they had different strengths and weaknesses that worth studying. Page 10 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.4 SETI@Home (Peer-to-peer computing) Fig. 1 Screen capture of SETI@Home SETI@Home (Search for Extraterrestrial Intelligence at Home) [2] hosted by the University of California, Berkeley was one of the applications make use of collaboration of personal computer to analyze signals recorded from telescope. The application itself made use of idle computational power of personal computer to search for special radio signal. More than 4 million participants contributed 1.8 million CPU hours in last 5 years. There is no interaction between clients, but they worked collaboratively to achieve the same goal. Traffic consumed by the application is very low, as clients only Page 11 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) need to download a work unit for searching and send back the result afterwards. The main limitation of this service was reliability and scalability problem; the address of the central server was hard-coded in the application. It suffered from single point of failure if the central server downed. On the over hand, when more and more clients participated, the need of bandwidth on server-side would increase, then central server would become a bottleneck if clients had to queue to get or transfer work unit from the server. There are many other of applications that perform P2P computing, • United Devices [7] (Cancer gene data analysis) • Argonne National Laboratory [8] (Physics research) • J.P. Morgan [9] (Risk management) Page 12 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.5 Napster (Peer-to-peer file sharing) Fig. 2 Screen capture of user interface of Kazaa In 1999, another revolutionary peer-to-peer application, Napster [3], was released. It is a program that search for only MP3 files on the Internet. The client program had only three functions, search engine, file sharing, Internet Relay Chat (IRC). Each client only needed to install the application and logged into the Napster server. The server indexed all Napster clients’ shared MP3 files. User could simply perform search on the Napster server by using the built-in search engine. The server would response with a list of MP3s found in the index. User can simply click on the search result and the application would connect to target peer’s PC to get the file. Page 13 Unlike Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) SETI@Home which had no interaction between peers. Napster clients shared files between peers and the centralized server only serve as a search engine for these files. The resources (MP3 files) are distributed on peer PCs. The limitation of this architecture was that the availability of the resources and file sharing speed. If the target peer disconnected from the Internet, it was impossible to relocate the resource, except it reconnected to Napster server again. The transfer rate in file sharing depends on the resources’ upload bandwidth, mirroring is common in the community that the peer shares its downloaded MP3 once it completed downloading. Other file sharing applications using similar technology, • WinMX [10] • eDonkey2000 -Overnet [11] • Gnutella [12] Page 14 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 3.6 BitTorrent (Peer-to-peer file sharing) Fig. 3 Screen capture of a client of BitTorrent Another P2P file sharing protocol was released in 2001 [4]. In traditional client server file sharing model, if more clients connected to the server, the more bandwidth was needed on server-side when more clients were downloading files from it. The concept of BitTorrent was using the unutilized upload bandwidth of clients to distribute the file. It significantly reduced the load of the server and fully utilized the network bandwidth available. When more and more clients are interconnected, the overall bandwidth shared would become higher. As a result, the speed of file sharing increased. Page 15 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) A group of web servers known as trackers kept track which clients were downloading a particular file; the peers had to install a BitTorrent application, and they simply open a torrent file, which contained the address of tracker and file information. The application would connect to the tracker to extract a list of peers, which are sharing the file at the moment and try to connect to these peers directly. Soon after it downloaded some file segments from different peers; it had to share the file segment to the peer group as well. There was a flow control on the protocol so that more upload a peer had done, the faster download was allowed. This policy further increase the total bandwidth shared among peers and its sharing ability was much more efficient than using traditional client-server downloading utilities. However, this protocol was limited to computers that had an Internet address, for peers who are connected through firewall or in NAT, they would not be able to use this protocol as Internet addresses and ports were the unique identifier in a peer network. Page 16 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 4. Peer-to-peer protocol Since there is no standard protocol for peer-to-peer network, there are many protocols are available or under development, like Chord [14], Koorde [15], Kelips [16], Tapestry [17], and Kademlia [18], Freenet [19], Can [20]. Their functionalities are more or less the same, such as peer discovery, searching, file and data transfer. After study of different types of peer-to-peer protocol, Project JXTA has been chosen as the underlying infrastructure. 4.2 What is Project JXTA ? Project JXTA, a.k.a Project Juxtapose, [5,6] is an open-source research project incubated at Sun Microsystems. Its goal is to develop basic blocks and services that would enable innovative applications for peer using peerto-peer topology. Page 17 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 4.3 Why choose Project JXTA ? JXTA technology is a set of simple, open peer-to-peer protocol that enables any device on the network to communicate, collaborate and share resources. JXTA peers create a virtual ad-hoc network on top of existing networks, hiding their underlying complexity (Fig. 4). Fig. 4 Architecture of JXTA Virtual Network It can run on any devices, including mobile phones, pagers, PDAs, electronic sensors, desktop computers, and servers. It is not dependent on any network platform or system platform and it can work with any Page 18 Study of Collaboration Service on Peer-to-Peer Network combination of these. Lo Siu Hang, Terence (97471626) Interoperability is most emphasized in JXTA technology. It is designed to enable interconnected peers to easily locate and communicate each other, participated in community-based activities, and offer services to each other seamlessly across different platform and networks. JXTA technology is independent of programming language; developers can use different programming language to setup their own JXTA virtual network. All applications compliance JXTA protocol would be able to communicate each other. Currently, there are JXTA bindings with Java, C++, SmartTalk, Perl, etc. Page 19 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 4.4 Project JXTA architecture The figure (Fig. 5) below illustrates the layered structure of Project JXTA, Fig. 5 Project JXTA Architecture The bottom layer is JXTA core layer its function is provide services for peer establishment, communication management such as routing, and other lowlevel operations. In the middle is a service layer that provides higher-level services, such as indexing, searching, and file sharing. These services, which make heavy use of low level services provided by the layer below, are useful by themselves but also are commonly included as components in an overall P2P system. The top layer is application layer, which can treat it as a platform for developing different modules. In this project, the application would be implemented over the JXTA services layer as well. Page 20 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 4.5 Protocols in Project JXTA There are six basic protocol defined in JXTA [5], they are integrated in the framework. The functions of these protocols are describe below, Peer Discovery Protocol - enables a peer to find advertisements on other peers, or used to find any of the peers, peer groups, or advertisements. Peer Resolver Protocol - enables a peer to send and receive generic queries to find or search for peers, peer groups, pipes, and other information. Peer Information Protocol - allows a peer to learn about other peers’ capabilities and status. For example, one can send a ping message to see if a peer is alive. One can also query a peer’s properties where each property has a name and a value string. Rendezvous Protocol - allows a peer to propagate a message within the scope of a peer group. Pipe Binding Protocol - allows a peer to bind a pipe advertisement to a pipe endpoint, thus indicating where messages actually go over the pipe. A pipe can be viewed as an abstract, named message queue that supports a Page 21 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) number of abstract operations such as create, open, close, delete, send, and receive. Binding occurs during the open operation, whereas unbind occurs during the close operation. Endpoint Routing Protocol. This protocol allows a peer to ask a peer router for available routes for sending a message to a destination peer. Often, two communicating peers may not be directly connected to each other. Example of this might include two peers that are not using the same network transport protocol, or peers separated by firewalls or NAT. Peer routers respond to queries with available route information, which is a list of gateways along the route. Any peer can decide to become a peer router by implementing the Endpoint Routing Protocol. Page 22 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5. Design and Implementation – Workspace model A workspace model is designed and implemented in the project. In order to achieve the objectives stated in Section 2, a hierarchical P2P workspace model with Group Communication service is introduced. By arranging edge peers and super peers in tree structure, the number of messages needed in locating a certain resources on the network should be reduced. Super peers are special kind of peers and provide services that are necessary in the Workspace model. For the details of the functions of the super peers is introduced in Section 5.4. The system consists of two major parts; the core engine of the Workspace model, and the group communication service over the workspace model. Page 23 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.1 System Design The common structure of P2P networks are interconnecting all peers and form a meshed network (Fig. 6). The characteristics of this model are all nodes all equals in the structure and there is no dedicated server, this makes the structure fault-tolerable, but this model had some shortcomings such as resource locating and search ability. For example, In Gnutella [12], peers will multicast messages to all other connected peers on the network, and thus there is a flooding of messages will occur. For a small group of peer, message broadcast with flooding may be efficient. However, in large scale peer-to-peer network, the number of messages grows exponentially and it soon overloads the network. Fig. 6 P2P Model Page 24 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In this project, a hybrid model (Fig.7) is used instead of P2P model. It contains the advantages of client-server and P2P approach. The super peer in the center act as a server, which caches all resources shared on the network. Queries and discovery message can response quickly. Unlike client server model, it will not have single point of failure as super peer itself can be replicated on the network. Even, super peer downed, peers on the network can communicate each other using P2P model, until new super peer is elected. Fig. 7 Hybrid Model Page 25 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) A workspace may contain one or more super peers when its size grows large, in order to maintain the scalability of the system, a new level of super peers is introduced to indexes all super peers allocated to specific workspace. It reduces the number of traffic needed when super peers perform searching among themselves to locate which of them are allocated to the same workspace. A hierarchical tree is formed when huge number of peers is connected to the network (Fig. 8). If more than one super peers at the top level, they will interconnect themselves to form a meshed network to reduce the latency and increase the efficiency of resource lookup. S2 S2 S1 S1 S1 S1 P P P P P P P P P P Fig. 8 Hierarchical Tree Structure Page 26 P Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) The hierarchical tree architecture minimize the network traffic used to broadcast a message or perform searching, especially when the bandwidth of a edge peer is narrow; super peers on the higher level with more bandwidth responsible for dispatching the message from edge peers. The roots of the trees are connected in mesh and the number of root peer is remained minimal so that multicasting message within a meshed network will not saturate the traffic on the network. And these root peers usually located at the backbone on the physical network or elected by using some special indexing services, based on average up-time, allocated bandwidth, processing power etc. The structure of the tree can be modeled in managed or self-organizing manner depending on the service requirement. Page 27 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Comparison between different P2P models Model Computing Topology / Group name model formation Workspace Partially Hierarchical tree structure model centralized Self organized peer groups Napster [3] Centralized Scalability Reliability Latency Searching / Latency Highly Scalable High: messages may be Comparatively low because of Searching using lost if multiple peers fail at the use of super peers for indexing (Keyword / the same time. searching and advertisement Object ID). Query indexing forward to upper level. Keyword search Client-Server Scaled up to 6 High: messages may be High: depends on workload of No grouping allowed million of users lost if multiple peers fail at the central server the same time. Gnutella Decentralized [12] Chord [14] Graph Thousands No grouping allowed Decentralized Messages may be lost if Comparatively Low Keyword search multiple node fails Graph Designed to scale High: messages may be High because of routing of Searching using No grouping allowed billions of users lost if multiple peers fail at message from one node to other indexing (key, data) the same time. Freenet [19] Decentralized Graph Designed to scale High: messages may be High because of routing of Searching with file No grouping allowed billions of users lost if multiple peers fail at message from one node to other identifiers the same time. Can [20] Decentralized d-dimensional Cartesian Designed to scale High: messages may be Improved CAN design reduce Searching using Coordinate space billions of users lost if multiple peers fail at latency indexing (key, value) No grouping allowed the same time. Page 28 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In particular, Project JXTA contains two special peers, relay peers and rendezvous peers, which manage all traffic in transport layer. The rendezvous peers will act as super peers in the workspace model as well. Rendezvous peers indexes peers advertisements and perform routing of search query. For example, in fig 9, a peer sends a request to search for another peer on the network, so it makes a request to its connected rendezvous peer 1. If rendezvous peer 1 indexed the advertisement from the target peer, it will forward to request to the target peer. Otherwise, it passes the request to other rendezvous peers in the peer view. When the target peer got the request, it will also know the originator of the request and contact it directly. Page 29 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 9 Rendezvous peers in action Page 30 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Relay peers responsible for storing and forwarding messages across firewall and network address translation domains. They provide message spooling for temporarily unavailable or unreachable peers. If the target peer is locating behind several firewall or NAT (Fig. 10), multiple relay peers may be needed to route the message to the destination. Peer-to-peer Network Relay Peers Relay peer 1 Peer 1 Peer 2 Relay peer 2 NAT Firewall Physical Network 1 Physical Network 2 Fig. 10 Relay peers in action Page 31 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.2 Development Environment 1. Programming Language – Java 2 Platform, Standard Edition 1.4.2 2. Protocol – JXTA 3. Platform – Unix, Linux, and Microsoft Windows 4. Development Tools – Websphere Studio Application Developer 5.1.2 Page 32 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.3 The Application – Group Communication System Most peer-to-peer applications developed emphasize interaction between peers. In real life, people (peers) always work in groups in a collaborative manner. For example, in an enterprise, it consists of different departments; such as accounting, human resources, marketing, etc. These peers are more likely work together with the peers in the same department. following diagram illustrates the real situation. (Fig. 11) Page 33 The Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 11 Interaction of “peers” in an enterprise In peer to peer network, we can consider each activity as a service. These services are provided among peers. The peers of similar interest form a peer group or a common workspace. It is self-organized; peers can create, join or leave any workspace at any time without affecting the operation of peer group. workspace For example, in Fig. 11, peers in “HR Internal Meeting” are consuming a text-based chatting service. And in “Management Meeting” workspace, peers are communicating each other using video conferencing service. The workspace model on peer-to-peer network provides more fine grained access control. Page 34 It can be an open Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) workspace, which allows any peer on the network to join. Or it is a secured workspace, which peers needed to enter a key to authenticate itself when it attempts to join. There is an assumption that all activities provided by peers are group communication service. Once a peer connected to the network, it is joined a global workspace (Fig. 12). To join a workspace, it first needs to locate the workspace on the network by searching. Then it registers itself to the workspace and notifies super peers that the structure of the workspace changed. The group communication service is implemented and details are mentioned in section 5.5. Page 35 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 12 Peers on different workspaces Page 36 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.4 Core Java Class Description The workspace model is run over the Project JXTA peer-to-peer network; it provided some basic application programming interfaces for dealing with network layer and transport layer problem. However, the application interface provided mainly focus on peer-to-peer connectivity. It lacks functionality to support workspace model. The implementation part focuses mainly on the application layer and all classes implemented are packaged in java package msc.cs.groupcom.core. There are four core services for implementing workspace model on a peerto-peer network. They are, z Discovery Service z Event Service z Workspace Service z Search Service Page 37 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Discovery Service (msc.cs.groupcom.core.Discover) The class Discover provides functions for the peer to discover the advertisements published by other peers. Advertisement is a XML document, which contains service attributes, workspace structure or other message that the peer would like other peers on the network knows. It is created when peer registers itself on the network, performing event or create new objects, e.g. new workspace created, new services provided, etc. In the system, each workspace that peers joined will have their own listener to listen specific advertisements from other members in the workspace. Each listener had its own logic to process the data it received. Page 38 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 13 Operation scope of Discovery Service Page 39 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Event Service (msc.cs.groupcom.core.Event) The class Event provides functions for the peer to handling notification events from advertisements published by other peers. This service works closely with discovery service as it is triggered when the incoming channel received notifications. It is the base class that provides minimal functionality; it provides flexibility to developer implements his own event when new services needed to be implemented. In the application, there are two major types of notification message. The first type is notification message for new workspace formation. Another type is the structure change of workspace, such as new peer joined the workspace or peer left the workspace. Each peer will have a list of advertisements cached; these caches are used to keep track the status of other peers and workspaces. Page 40 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Cached Advertisements Adv 1 Adv 2 Adv 3 Adv 4 Adv 5 Update Peer Delete New Event 1 Event 2 Event handler triggers when notification advertisements are received and process them respectively. Incoming Channel Notification Advertisements Fig. 14 Operation scope of Event Service Page 41 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Workspace Service (msc.cs.groupcom.core.Workspace) The class Workspace is one of the major implementation of the workspace model. It provides all functions and objects that related to workspace. The following is the summary of functions provided in the class. Create workspace – it allows peers to create a workspace for other peers to join. The workspace can be either open or close. Open workspace allows all peers to join without any authentication, while close workspace contains hashed password together with the workspace advertisement. Peers that know the matched password can gain access to the workspace. Join workspace – it provides functionality for peers to join a workspace according to the advertisements discovered. The verification of the password for closed workspaces are handled in user interface part, so in this class only registration of the workspace, maintenance of list of joined workspaces and publication of advertisement on workspace structure change is handled here. Page 42 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Leave workspace – peers can leave any workspace (except global workspace) at any time after it connects to the peer-to-peer network. This method destroys all advertisements and related objects when a peer decided to leave a workspace. The default handling method after leaving a workspace is switch user. Other functions – the functions mentioned above related to workspace management of the peer itself. There are other functions provided in the class for handling processes, which are initiated by other peers. For example, event service received notification on workspace structure update message. There is a function to process this notification by updating the member list of a particular peer group. Other services implement over this workspace framework can overload this function to provide more flexibility to manage workspace related issues. Page 43 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Search Service (msc.cs.groupcom.core.Search) The class Search provides functions to perform searching based on criteria specified by a peer. In the workspace model, the main role of the class is to perform lookup on workspaces available. The search mechanism is performed in hybrid mode, depends on the availability of super peers on the network. If super peers can be discovered, search service will connect to any of these peers and submit search request (Fig. 15). Super peer will check its own cache for any matched search result. If there is no result matched, it passes this request to upper level in hierarchical tree or to other super peers of the same level in the meshed network. Another search method is creating a multicast request is sent to all neighborhood peers (Fig. 16). A counter is passed together with the search request and it increments when it is forwarded. This counter is to prevent flooding of messages when the number of forwarded requests grows exponentially after several levels of iteration. For each search request, a listener thread is spawned to receive any response from peers. Since the response time of a query is unpredictable, a timeout interval had been set for the listener thread. The Page 44 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) thread is killed after the request submitted when the waiting time reached timeout threshold. Super Peer 4. Fo rwa rd r eq Peer st to que d re eer r a orw le p 4. F possib Peer ue pe st to er s oth er s up er 4. Fo rw d ar q re u Peer o tt es po le ib ss pe 5. Response er Outgoing Channel Advertisements Index Advertisement Mapping Adv index 3 Adv index 4 Adv index 5 Outgoing Channel Super Peer 3. Search advertisement index 2. S Rendezvous peer indexed advertisements published by peers on the network. ea r r ch es equ t Adv 3 1. Request Incoming Channel Search Service Other lookup messages from other peers Peer 6. Process response Search listener captures all search results and pass to search service for further processing Search Listener Incoming Channel Fig. 15 Search mechanism – with super peer present Page 45 5. Response Adv index 1 Adv index 2 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Peer Peer Peer Peer 3. Peer Peers forward the search request to other peers. The peer count of the request is limited to prevent message flooding occurs Peer Peer 2. Mu ltic a st s ea r ch Re sp on se 3. Response req u es t 3. Response Outgoing Channel Peer Advertisement Index Adv index 1 Adv index 2 Adv index 3 Adv index 4 Adv index 5 1. Request Peer Search Service 4. Process response Search listener captures all search results and pass to search service for further processing Search Listener Incoming Channel Fig. 16 Search mechanism – peer multicasting Page 46 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.5 Application Specific Java Class Description The group communication system will built on top of the core workspace classes to provide a messaging service all peers in the same workspace. The user interfaces are built with AWT and Java Swing, which is standard Java classes, bundled with Java Development Kit. User interface package – msc.cs.groupcom.ui.* The package contains all user interface objects. These objects extend AWT classes, like textbox, button, panel and tab etc. The package contains style and templates; provide arrangement of these user controls in the application. Application function package – msc.cs.groupcom.functions.* The package contains all actions triggered by the user interface objects and also the implementation of the group communication service. These actions include create, join, leave workspace. Also perform send and receive messages to other peers. Group Messaging Service (msc.cs.groupcom.functions.GroupMsg) Page 47 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) The class GroupMsg provides functions and objects for providing group communication service in a workspace. When a peer joined a workspace, the service will spawn listener for receiving structure change messages and messages from other peers in the workspace. For the messaging mechanism, it relies on super peers on the network. When a peer registered on the network and it establish a virtual channel with super peer for broadcasting message (Fig. 17). The peers are arranged in hierarchical structure with super peers as the root of the tree. This implementation can reduce the chance of message lost during message transmission as the permanent connection among peers. The network traffic would be reduced when more and more peers connected to the network. With the presence of super peers, edge peers do not need to perform advertisement lookup for other peers in the workspace. For example, in workspace 1 of Fig. 17, edge peer can simply send the message to the super peer it connected. The super peer lookups its advertisement cache and forward the message to peers in the same workspace. On the other hand, it multicasts the message to other super peers on the network to distribute the message further. Page 48 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Workspace 1 Workspace 2 Workspace 3 Edge Peer Message Edge Peer Virtual channel Edge Peer Edge Peer Edge Peer Edge Peer Edge Peer Super Peer Edge Peer M ss Me age es sa ge Edge Peer age Super Peer Me ss Me ssa Edge Peer Super Peer g sa Me ss ag e es M Edge Peer ge e Super Peer Edge Peer Edge Peer Edge Peer Edge Peer Edge Peer Fig. 17 Hierarchical structure in group communication service (Workspace perspective) Each message is encapsulated in metadata format, attributes includes message content, sender name, workspace ID and a message ID. The message ID is generated by the ID factory provided by Project JXTA base class. Page 49 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.6 Installation and running the application Installation of Java 2 Platform, Standard Edition 1.4.2 The binary of the development kit can be downloaded from Sun Microsystems website. For Microsoft Windows environment, the downloaded binary can be installed by running "j2sdk-1_4_2_05-windowsi586-p.exe”, follow the instruction of the wizard for install location. For other environments, like Linux, it is necessary to execute the following commands, change the permission of the file to executable “chmod +x j2sdk-1_4_2_05linux-i586.bin”; then extract the binary by running it “./j2sdk-1_4_2_05linux-i586.bin”. Installation of Project JXTA The java libraries of Project JXTA available in their website, these libraries are free download. These files are copied to the directory that contains the classes of the group communication service application. Page 50 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Installation of Group Communication Service application The classes are compressed in Zip (*.zip) format. Extract all files in the archive into a directory called GroupCom, e.g. “d:\GroupCom” in Microsoft Windows environment, or “/GroupCom” in Linux. Copy all downloaded Project JXTA files into “d:\GroupCom\lib” or “/GroupCom/lib”. Running the application The precompiled classes can be started by running JVM. The application can be started by running classpath the command, “java - .;./lib/beepcore.jar;./lib/bcprov- jdk14.jar;./lib/cryptix32.jar;./lib/cryptixasn1.jar;./lib/javax.servlet.jar;./libl/jaxen-core.jar;./lib/jaxenjdom.jar;./lib/jdom.jar;./lib/jxta.jar;./lib/jxtacms.jar;./lib/jxtaext.jar;./lib/jxt aptls.jar;./lib/jxtasecurity.jar;./lib/jxtaSwing.jar;./lib/jxtashell.jar;./lib/log4 j.jar;./lib/minimalBC.jar;./lib/org.mortbay.jetty.jar;./lib/saxpath.jar cityu.msc.cs.groupcom.ui.GroupCom”. A number of system messages are output on screen. JXTA configurator will be started when the application Page 51 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) run at first time. For the details of in configuring JXTA, please refer Section 5.8 below. Page 52 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) The following dump is information written on screen when the application starts. <INFO 2004-11-26 23:50:26,640 NullConfigurator::<init>:115> JXTA_HOME = D:\wsadworkspace\GroupCom\.jxta <INFO 2004-11-26 23:50:26,650 NullConfigurator::resetFromResource:216> d:\wsadworkspace\GroupCom\.jxta\PlatformConfig already exists <INFO 2004-11-26 23:50:26,650 NullConfigurator::resetFromResource:216> d:\wsadworkspace\GroupCom\.jxta\jxta.properties already exists <INFO 2004-11-26 23:50:26,690 NullConfigurator::adjustLog4JPriority:354> Log4J [user default] requested, not adjusting logging priority <INFO 2004-11-26 23:50:27,220 NullConfigurator::adjustLog4JPriority:354> Log4J [user default] requested, not adjusting logging priority 1101484228122: EVENT ,Starting Jetty/4.2.19,[main]org.mortbay.http.HttpServer.start(HttpServer.jav a:639) 1101484228132: EVENT ,Started HttpContext[/],[main]org.mortbay.http.HttpContext.start(HttpContext .java:1901) 1101484228152: EVENT ,Started SocketListener on 0.0.0.0:9700,[main]org.mortbay.http.SocketListener.start(SocketList ener.java:155) 1101484228152: EVENT ,Started org.mortbay.http.HttpServer@1ad98ef,[main]org.mortbay.http.HttpServ er.start(HttpServer.java:675) Page 53 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.7 Screen Capture of the Application Fig. 18 shows the first screen appears when the application starts. The libraries of Project JXTA will be loaded. JXTA configurator will be prompted for setting up peer id and password (detailed configuration will mention in Section 5.8). After starting JXTA, it continues to load the core engine of the workspace model. Fig. 18 Loading screen when initializing JXTA and core engine Page 54 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 19a/b are the user interface of the group communication system. The services available are showed in different tabs. In Group Messaging tab, there are two panels for showing peers in the selected workspace and messages received from peers. The lower part of the interface is a workspace search service, where user can perform searching base on the name of the workspace. The lowest list box shows the search result if there is any workspace discovered by the query. Message Panel Peer List Workspace List Fig. 19a User Interface of the application Page 55 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 19b User Interface of the application Page 56 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 20 shows the interface for creating a new workspace. User can choose whether the workspace is secured. The password is stored in the advertisement (Fig. 21). When other peers attempt to join the secure group, he had to enter correct password in order to join the group (Fig. 22). Fig. 20 Dialogue box for creating new workspace Fig. 21 Workspace information Page 57 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 22 Dialogue box for joining a workspace All peers on network are assigned to the universal peer group. It is not allowed to leave this peer group / workspace. Error will be prompted when the peer chooses to leave the Global Workspace. Fig. 23 Error prompt when user attempts to leave the global workspace Page 58 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.8 JXTA Configuration JXTA Configurator is bundled with JXTA java binding. It allows users to configure the parameters used in JXTA by a simple user interface. It is necessary to setup these application specific parameters before running the application run over JXTA. Reconfiguration of JXTA needed to quit application and run this configurator. There are four tabs in configurator, namely Basic, Advanced, Rendezvous / Relays and Security. Page 59 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In Basic tab (Fig. 24), a peer name is required as the ID generated of the peer is associated with this name on the peer-to-peer network. messaging system, this name is used as the nickname of the peer. Fig. 24 Screen capture of “Basic” tab Page 60 In the Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In Advanced tab (Fig. 25), there are some network specific parameters needed to be setup. Since JXTA uses TCP/IP and HTTP as its transport protocol, it is necessary to configure these parameters. If the peer is running behind a firewall and access the Internet through a proxy server, it is necessary to check “User Proxy” option and enter required information accordingly. Fig. 25 Screen capture of “Advanced” tab Page 61 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In Rendezvous / Relays tab (Fig. 26), these setting related to the super peers in JXTA. As mentioned before, there are two types of special peers and user can configure its own peer work as one of these special peers or even both. For the button at the bottom, it will download a list of public JXTA rendezvous and relay peer list from JXTA website. To simplify the network configuration, the messaging system targets to be used in intranet only. Fig. 26 Screen capture of “Rendezvous/Relays” tab Page 62 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) In Security tab (Fig. 27), it is only necessary input the user name and password for this peer. User is required to enter the password again when the messaging service starts in order to identify oneself (Fig. 28). After setting up all parameters in the configurator, press “OK” button at the bottom of the page and these values will be saved in users’ system. Page 63 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Fig. 27 Screen capture of “Security” tab Fig. 28 Screen capture of JXTA Secure Login Page 64 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 5.9 Difficulties experienced in design and deployment Frequent update of Project JXTA From prototype design phrase to actual implementation, the distribution package of Project JXTA updated for three times, which include one major version upgrade. During the system design stage, it was designed based on the stable release build that that moment, some objects are depreciated after major build upgrade. Even though some new feature introduced are useful for workspace model implementation, the base classes implemented in prototype stage needed to be updated accordingly as well. Multithreading of Java Application All objects developed for the workspace model and group communication services are running in different threads. For example, the listeners for workspace structure changing, workspace discovery, message reception, etc. If the workstation is powerful, such as those workstations in CS Lab, it can handle more threads at the same time. However, when the application is tested in less powerful PC and run multiple instance of application on the same machine. The resources consumed by threads caused instability. To Page 65 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) cater this problem, a dispatcher thread and a number of worker threads are introduced to the source code. The listeners are running in a round-robin manner. They will start in turn to check the incoming message buffer and process the requests, then sleep for a period of milliseconds for other processes to run. Physical network connection issue The application is deployed to a network of a medium sized company. The workstations are running in different sub-network with presence of routers. The discovery service of the workspace model can run with multicast message, when this request arrived at the transport layer of JXTA network, it transformed these request to internet address. However, some routers on the network blocks most of the ports and only allows some common ports to pass through, like HTTP / SMTP / POP3, etc. It is undesirable that system administrator to alter the router setting because this involves approval of department heads for security reason. So, special configuration of JXTA is needed for rendezvous peers in every sub-network. For example, in department A, port 80 is allowed at the edge router for peer to communicate Page 66 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) between departments. While department B only allows port 25 at their edge router. In this case, a rendezvous peer list had to be distributed at both department A and B if messages needed to be pass between them. Department B Edge Router Allow Port 25 97 0 97 JX TA : Rendezvous Peer List Department A : aa.bb.cc.dd:80 Department C : bb.cc.dd.ee:8080 Department D : cc.dd.ee.ff:9700 /9 70 1 Edge Peer 01 0 97 97 0/ : TA JX /9 :9 70 0 JX TA 70 :9 TA JX 1 70 Rendezvous Peer 70 1 :9 70 0 9 0/ JX TA Rendezvous Peer Edge Peer 00 / A JX T Rendezvous Peer List Department B : dd.ee.cc.dd:25 Department C : bb.cc.dd.ee:8080 Department D : cc.dd.ee.ff:9700 : TA JX :8 0 25 Intranet 1 Department A Edge Router Allow Port 80 Edge Peer Edge Peer Edge Peer Fig. 29 Physical network diagram with different sub-network setting Page 67 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 6. Conclusion Most peer-to-peer (P2P) applications available on the internet emphasize anonymity, to prevent peers to be recognized its physical address on the network; while peer to peer applications targeted to run on intranet or within local area networks will have more concern on collaborative activities and privacy. However, the current P2P networks have limitations. Most P2P networks lack ability to form peer groups. For example, in large enterprise, there is a demand on forming peer groups or workspaces are created for some particular purpose, such as meeting and conferencing. problem is on resource location, for example in Gnutella. Another Peers on the network are unable to know about all other peers on the network, as there might be millions of peers connected over the Internet. So, the formation of groups in such P2P networks is not feasible. 6.1 Contributions This project studied different P2P systems and proposed a workspace model to overcome two issues mentioned. Peers on the network organized in a hierarchical tree structure; the edge peer connects themselves to a Page 68 Study of Collaboration Service on Peer-to-Peer Network super peer. Lo Siu Hang, Terence (97471626) These super peers indexes and caches advertisements broadcasted, routing and relaying messages to members in workspaces. The roots of partitioned trees are interconnected together to form a meshed network to speed up the searching process. This model reduces the number of messages on the network when locating the resources as well. Another role of the super peers are being a membership server for the workspaces, it stores all information of peers inside a particular workspaces. The super peers provides efficient peer discovery when a message needed to be sent to all members in a particular workspace or obtaining information for a particular peer. The workspace model is implemented using Java for its platform independency. The degree of hierarchy is two and it is expected to have performance improvement if higher degree of hierarchy is implemented when number of peer increases. In the implementation, all functions of super peers enabled only it is a rendezvous peer in JXTA network. A sample application is developed over this model and illustrates the real life usage of this model in by means of a textual group communication service. Peers in the same workspace can communicate each other using this service. Page 69 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) Developers can design and expose more complicated collaboration services on the framework by extending the base classes in the workspace model. The application with group communication service is tested in different scale of networks and the difficulties experienced in development and deployment are addressed. 6.2 Evaluation and future development Although the workspace model improves the performance of resource locating and allow formation of workspaces, there are a lot of rooms for improvement. Intelligent super peers can load balances themselves dynamically by using data collected from the underlying JXTA network, such as number of connection, average message size and bandwidth consumed. Restructuring of the super peers are necessary when the degree of hierarchy increases. It is not feasible to have multicasting of messages when there are too many super peers at the root of the tree, the level of the tree should be able to increase / decrease dynamically when the number of peers varies. Page 70 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) 7. Reference [1] T. Berner-Lee, J. Hendler and O. Lassila, The Semantic Web, http://www.w3.org/2001/sw/ [2] SETI@Home - http://setiathome.ssl.berkeley.edu/ [3] Napster - http://www.napster.com/ [4] BitTorrent - http://bitconjurer.org/BitTorrent/ [5] Project JXTA, http://www.jxta.org/ [6] B. Traversat and al., Project JXTA-C: Enabling a Web of Things, in proceeding of the HICSS-36 Conference, Jan 2003. [7] United Devices, Inc, http://www.ud.com/home.htm [8] Argonne National Laboratory, Mathematics and Computer Science Division, http://www-fp.mcs.anl.gov/division/welcome/default.asp [9] Clustered Grids Make Their Way Into the Enterprise, ENT News, http://www.entmag.com/news/article.asp?EditorialsID=1903 [10] WinMX, http://www.winmx.com/ [11] eDonkey 2000 – Overnet, http://www.edonkey2000.com/ [12] Guntella, http://www.gnutella.com/ [13] Usenet Software: History and Sources, ftp://rtfm.mit.edu/pub/usenet-bygroup/news.admin.misc/Usenet_Software:_History_and_Sources [14] Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, and Hari Balakrishnan, Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications, ACM SIGCOMM 2001, San Deigo, CA, August 2001 [15] M. F. Kaashoek and D. R. Karger. Koorde: A simple degree-optimal distributed hash table. In Proc. 2nd IPTPS, Berkeley, CA, Feb. 2003. Page 71 Study of Collaboration Service on Peer-to-Peer Network Lo Siu Hang, Terence (97471626) [16] I. Gupta, K. Birman, P. Linga, A. Demers, and R. van Renesse. Kelips: Building an Efficient and Stable P2P DHT Through Increased Memory and Background Overhead. In Proceedings of the 2nd International Workshop on Peer-to-Peer Systems (IPTPS '03), 2003 [17] Ben Y. Zhao, Ling Huang, Jeremy Stribling, Sean C. Rhea, Anthony D. Joseph, and John Kubiatowicz, Tapestry: A Resilient Global-scale Overlay for Service Deployment , IEEE Journal on Selected Areas in Communications, January 2004, Vol. 22, No. 1. [18] P. Maymounkov and D. Mazieres. Kademlia: A peer- to -peer information system based on the xor metric. In Proceedings of IPTPS02, Cambridge, USA, March 2002 [19] Clarke, Ian , Oskar Sandberg, Brandon Wiley, and Theodor W. Hong. 2001. Freenet: A distributed anonymous information storage and retrieval system. In Proceedings of the Workshop on Design Issues in Anonymity and Unobservability, July 2000, pp. 46-66. [20] Ratnasamy, Sylvia, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker. 2001. A scalable content-addressable network. In proceedings of the 2001 Conference on Applications, Technologies, Architectures, and Protocols for Computer Communications August 2001. Page 72