A wireless ad hoc network is a collection of nodes which form a network independently of any fixed base station infrastructure. As opposed to networks which use routers to support networking functions such as packet routing and forwarding, in ad hoc networks these functions are provided by the nodes (hosts) themselves. Initially, wireless ad hoc networks were studied in the realm of military or disaster relief situations; more recently, wireless ad hoc networks have also been envisioned for commercial application such as providing Internet connectivity for nodes that are not in transmission range of a wireless access point. The wireless medium and the infra-structureless nature of wireless ad hoc networks pose a variety of problems that are distinctly different from traditional networks with a fixed infrastructure. For example, routing algorithms for wireless ad hoc networks have to be able to cope with frequent and unpredictable topology changes. Nodes are generally battery powered; thus energy is a precious resource that has to be carefully managed by the nodes in order to avoid an early termination of their activity. Due to interference, ad hoc networks are generally characterized by bandwidth-constrained and variable-capacity links which makes bandwidth allocation difficult. The nature of ad hoc networks also challenges the traditional approach of separating network protocols into distinct layers in order to help handling the enormous complexity of network design. Due to energy constraints and the nature of the wireless channel, the interdependencies between layers in wireless ad hoc networks are so prominent that it is often desirable to jointly design and optimize protocols at different layers. However, even when layers are kept separate the above problems are challenging and currently not fully understood. In addition to the characteristics outlined above, an important feature of wireless ad hoc networks is that nodes have to cooperate in relaying data packets for other nodes. In applications of wireless ad hoc networks for emergency and military situations all of the nodes belong to a single authority and cooperation among nodes can be assumed. However, in commercial applications nodes may not belong to a single authority but are in fact independent entities that can freely decide how they use their resources such as battery energy and transmission bandwidth. Since relaying a packet will incur a cost (of transmission bandwidth and energy) to a node, in this situation nodes may not necessarily volunteer to relay packets for other nodes and an additional mechanism is needed to give nodes an incentive to cooperate. Our research focuses on routing and mechanisms for stimulating cooperation.