# SLoPCloud: An Efficient Solution for Locality Problem in Peer-to-Peer Cloud Systems
## 2 Related Work
### P2P Networks and Locality Problem  
The first generation of P2P systems uses central directory servers to locate files. When a new node wants to join the network, it sends a message to the central server for overlay address allocation. In this generation, every node knows its neighbors in the overlay network and exchanges file with them through the server. The first generation of P2P systems provides file-sharing and storage services. Napster [16] is an example of this generation. It is worth mentioning that there is a main difference between the first generation of P2P networks and the typical client-server systems, in the tasks of the central server. The central server of the first generation of P2P networks is responsible just for network management operations, while the shared files are located in peers. The second generation of P2P systems such as Gnutella [17], MojoNation [18], and Freenet [19], is working based on message broadcasting. Such systems are designed to provide a similar, but distributed, service using scoped broadcast queries. However, they suffer from the limitations in scalability, due to the frequentative broadcast operations. The third and the last generation of P2P systems is structured overlay networks, including Chord [9], Pastry [10], Tapestry [11], and CAN [20]. One of the key features of these systems is to provide scalable routing performance. This feature is obtained by maintaining a scalable amount of routing state at each node which means that the expected number of forwarding hops between any two communication nodes is small, with respect to the total number of nodes in the system. The second key feature of these systems is that they are able to route the destination addresses which is not equal to the address of any existing node. This task is done by a special high-level interface called distributed hash table (DHT). Using this interface, each message is routed to the node whose address is the closest address to that specified in the destination field of the message. The overlay topology in this generation implements a basic key-based routing (KBR) interface which supports deterministic routing of messages to a live node that has responsibility for the destination key. They can also support decentralized object location and routing (DOLR) [21]. These systems guarantee that queries find existing objects under non-failure conditions. In this generation, Pastry [10] and Tapestry [11] share similarities to the work of [PERSON] [22] for a static network. Others [23; 24] explore distributed object location schemes with provably low search overhead, but they require precomputation. Therefore, they are not suitable for dynamic networks. The third generation of the P2P networks contains some systems that highly attracted researchers' attention. For example, Kademlia [25] uses XOR for overlay routing, Viceroy [26] provides logarithmic hops through nodes with constant degree routing tables and SkipNet [27] uses a multidimensional skip-list data structure to support overlay routing by maintaining both a DNS-based namespace for operational locality and a randomized namespace for network locality. However, there are three main solutions for the locality problem, in general. The first one uses address prefixes to locate those nodes that are being geographically closer to each other, based on the regulations of BGP protocol [28]. The disadvantage of this solution is that sometimes similar prefixes are located at different geographic zones [12]. Furthermore, IP addresses are usually hashed before being stored in the distributed hash table, while the prefixes could not be extracted from the hashed IP addresses. In the second solution [20], there are a set of distributed reliable servers, referred to as landmarks. Every node measures its distance to each of these landmarks. Those nodes that are closer to a specific landmark are placed close to each other in overlay network.