I. Introduction
A Peer-to-Peer (P2P) network is a distributed solution which uses the resources of its own users. In these networks, each node uses the resources of other users and also has the capability to provide resources for other nodes [1] , [2] . These networks have many applications, including file sharing, distributed processing and messages passing to other nodes which can cause many security problems [3] , [4] . P2P networks are highly dependent on resources of their own users [5] . Therefore, the infrastructure of a P2P network should encourage users for contributions as well as using the resources of other members. The behavior of using resources of others without giving anything in return is called free-riding [6] . As a consequence, free-riders cause slower download times for contributing peers. Thus, it is an essential need for a P2P network to guarantee fair bandwidth allocation, where a peer receives bandwidth equal to what it contributes. Accordingly, the system will be able to guarantee a certain level of performance for contributing peers.