An efficient resource discovery framework for pure unstructured peer-to-peer systems Seyedeh Leili Mirtaheri , Mohsen Sharifi 1 School of Computer Engineering, Iran University of Science and Technology, University Road, Hengam Street, Resalat Square, Narmak, Tehran, Iran article info Article history: Received 9 January 2013 Received in revised form 28 August 2013 Accepted 28 October 2013 Available online 11 November 2013 Keywords: Resource discovery Pure unstructured peer-to-peer systems Learning State-based search abstract In this paper, we propose an efficient resource discovery framework allowing pure unstruc- tured peer-to-peer systems to respond to requests at run time with a high success rate while preserving the local autonomy of member machines. There are five units in the pro- posed framework that respectively gather information about the status of resources, make decisions, detect the states of member machines, discover resources to respond to requests in normal and dynamic conditions, and balance the load of local machines. Efficient resource discovery is achieved by the deployment of a newly introduced mechanism that is placed on every machine allowing it to figure out its states before and after accepting other machines’ requests for its resources using a state model and deciding whether to accept or reject those requests. This state model accurately estimates the machine’s state based on the resources and processes of the machine before and after accepting the request. We have experimentally compared the proposed mechanism with random, learn- ing-based, and state-based search mechanisms with regard to the number of missed requests, network bandwidth due to transferred messages, number of associated machines in a discovery operation, time required to process information in discovery operation, processing time in machines, and the number of faults per request. The results show sig- nificant improvement of some of these parameters, specially network bandwidth and the number of missed requests in a dynamic condition, under our framework. Ó 2013 Elsevier B.V. All rights reserved. 1. Introduction Peer-to-peer (P2P) systems have tried to overcome the challenges of client/server systems, including scalability, points of failure, cost, and complexity challenges. Different systems perform different functions, including P2P com- puting like SETI@home [1], Avaki [2], and Entropia [3]; P2P file-sharing like Gnutella [4], Freenet [5], Napster [6], Emule [7], and BitTorrent [8]; P2P collaborative systems like Magi [9]; and P2P platforms like JXTA [10] and .NET My Services [11]. P2P systems are classified in two main categories: unstructured and structured [12]. Unstructured P2P systems mainly use flooding strategies to discover re- sources [13,14]. Member machines select other machines arbitrarily and send them a request with no limitations. Resource discovery mechanisms are relatively inefficient in these systems, though they can be improved [15–17]. By contrast, structured P2P systems use more efficient resource discovery mechanisms by imposing limits on re- source location and arrangement and machine topology [18]. A key is assigned to each resource and this key is stored in each machine responsible for the resource. With these limitations, the resource discovery mechanism becomes more accurate and efficient, better matching request requirements to resource potentials [19]. However, unstructured P2P systems perform more efficiently in 1389-1286/$ - see front matter Ó 2013 Elsevier B.V. All rights reserved. http://dx.doi.org/10.1016/j.bjp.2013.10.012 Corresponding author. Tel.: +98 912 320 4970. E-mail addresses: mirtaheri@iust.ac.ir (S.L. Mirtaheri), msharifii@ iust.ac.ir (M. Sharifi). 1 Tel.: +98 912 314 8020. Computer Networks 59 (2014) 213–226 Contents lists available at ScienceDirect Computer Networks journal homepage: www.elsevier.com/locate/comnet