The process of establishing paths
from a source to a sink (e.g., a gateway device) across one or more relays is called routing
and is a key responsibility of the network layer of the communication protocol stack. When
the nodes of a WSN are deployed in a deterministic manner (i.e., they are placed at certain
predetermined locations), communication between them and the gateway can occur using
predetermined routes. However, when the nodes are deployed in a randomized fashion (i.e.,
they are scattered into an environment randomly), the resulting topologies are nonuniform
and unpredictable. In this case, it is essential for these nodes to self-organize, that is, they
must cooperate to determine their positions, identify their neighbors, and discover paths to
the gateway device. This chapter introduces the main categories of routing protocols and
data dissemination strategies and discusses state-of-the-art solutions for each category