System performance of a peer-to-peer (P2P) network critically hinges on the aggregate data uploading capacity of peers because peers rely heavily on other peers for getting data packets in a timely manner. Specifically, judicious selection of peers is particularly performance critical. Unfortunately, this crucial system component is largely based on simple heuristics in practical P2P applications, and, most importantly, is also relatively unexplored in the P2P research community.
Broadly speaking, there are two general approaches in peer selection: capacity based and proximity based. Simply put, the former favors peers with high bandwidth capacity, while the latter favors peers situated within a short distance, measured in terms of round-trip time (RTT). In this paper, we make three levels of contributions. First and foremost, we tackle the peer selection problem at the fundamental level by investigating the impact of peer selfishness. Our game theoretic analysis establishes that peer rationality predominantly leads to clustering of peers, which has detrimental implications on efficient data dissemination. Secondly, we present a new three-tier framework to facilitate a unified analysis of a wide spectrum of peer selection schemes based on different degrees of capacity and proximity preferences, attained by a hybrid neighbor selection strategy that can judiciously balance the efficacy of capacity and proximity awareness. Thirdly, we propose a novel decentralized network aware protocol to promote network awareness without the assistance of any centralized entity. Our performance evaluation results provide valuable insights for both theoretical study on selfish topologies and practical system design.