The infra-structureless nature of ad hoc networks requires the distribution of network functions to all the participating nodes. The underlying requirement for making operational the cooperative paradigm is the supposed good-behavior of all entities composing and, at the same time, using the system. However, the lack of any centralized authority that enforces the overall collaboration motivates a possible tendency of entities toward self-interested behavior.
In this paper, we explore the cooperation issues across layers of the protocol stack for a network node. In particular, we perform a per-protocol analysis of cooperative aspects, and identify the problems potentially affecting each layer. Afterward, we survey current research approaches to cooperation enforcing, highlighting common features among different layers? solutions, as well as open issues.