"Directed Diffusion: A Scalable and Robust Communication Paradigm for
Sensor Networks" by Intanagonwiwat, Govindan, and Estrin
"Adaptive Protocols for Information Dissemination in Wireless Sensor
Networks" by Heinzelman, Kulik, and Balakrishnan
"Trickle: A Self-regulating Algorithm for Code Propagation and
Maintenance in Wireless Sensor Networks" by Levis, Patel, Culler, and
The model for communication in
wireless sensor networks does not always follow the sender/receiver
model of the Internet. There are many applications for which
traditional routing does not fit. For example, imagine an
application wherein a sensor node wishes to request information from a
receiver in a location where an interesting event is occurring (e.g.,
the temperature has exceeded a threshold or a disturbance has been
discovered). The requester does not necessarily wish to
request information from a particular node (e.g., by IP address), but
rather from any
node that can provide the data. Similarly, it is often the
case that data must be delivered to most or all of the nodes in a
network. The sender would like to deliver the data without
addressing it to each node in the network individually. What
is needed is a mechanism whereby nodes can request and advertise data and
disseminate that data to interested parties.
Generally, this describes is the publish/subscribe model of
communication. The publish/subscribe model allows a
node (in this case, a sensor) to publish interesting information it
produces. Other nodes may subscribe to the data by
registering an interest in a particular type of
data. This requires that the publishers and the
subscribers share a common mechanism for referring to data.
The routing abstraction then takes care of delivering to the
subscribers all of the published data they are interested in receiving.
Flooding and gossiping are two naive
approaches to data dissemination.
Each of these approaches
has several disadvantages that render them inappropriate. The
key issues are as follows:
- Flooding - In the flooding model, each node simply
rebroadcasts whatever data it receives.
- Gossiping - In the gossiping model, each node sends data it
receives to some randomly selected subset of neighbors.
In addition, flooding and gossiping attempt to reach the entire
network. In some cases it may be appropriate to reach only a
subset of nodes and flooding the entire network is wasteful of
- Implosion - In the flooding approach, a node may receive
several copies of the same data from multiple neighboring nodes.
- Resource blindness - A node may use unnecessary resources
both receiving and sending data.
- Distribution time - The flooding model does distribute data
quickly, but the gossiping model is very slow to reach the entire
Observation: sensor networks are task specific. The task of
the network is often known prior to deployment.
Goal: enable an information sink to task the sensors in a network by
issuing a query such as "How many pedestrians do you observe in the
geographical region X?"
- A node (the sink)
publishes an interest in
a particular type of data.
- The interest is diffused toward nodes that can provide the
data (the sources).
- Data is collected and returned on the reverse path of the
interest (the gradient).
- A path from source to sink is reinforced.
- Data may be aggregated as it propagates back toward the
Task descriptions are named. An example might
look as follows:
type = four-legged animal //detect animal
interval = 20 ms //send back events every 20 ms
duration = 10 seconds //for the next 10 seconds
rect = [-100, 100, 200, 400] //from sensors within rectangle
The data sent in response to this interest might look as follows:
type = four-legged animal //type of animal seen
instance = elephant //instance of this type
location = [125,220] //node location
intensity = 0.6 //signal amplitude measure
confidence = 0.85 //confidence of the match
timestamp = 01:20:40 //event generation time
Interests and Gradients
Setting up interests and gradients requires a mechanism for
distributing an interest throughout the network. The steps for
achieve this are as follows:
- An interest is injected into the network at some sink node.
- The sink broadcasts the interest to its neighbors with a large
interval. The idea is to explore the network for appropriate
sinks without generating a significant amount of traffic.
- Periodically, the sink rebroadcasts the interest to address the potential problem of unreliable data delivery.
- Each node receiving an interest stores it in an interest cache.
- A node may aggregate several interests into 1 cache entry if they overlap.
- Each entry contains gradient fields, one per neighbor from
which the interest was received. Each gradient may have different
- Upon receipt of an interest, a node checks its cache. If no
matching interest has recently been received, the interest will be
resent to the receivers neighbors.
- In some cases, geographic routing may be possible.
- If a source collects data that matches an entry in its interest
cache, it will send the data at the requested rate (which is initially
- A node receiving data will check a data cache and relay the data based on the gradient.
- Nodes cache data sent and will silently drop data that is already in the cache in order to avoid routing loops.
- Nodes may downconvert the data rate by not forwarding some
packets. This will happen if the data is received faster than the
interval specified at the node.
- Once a source is discovered, a good path between source and sink is reinforced, which means that the data rate along that path will be increased.
- To reinforce a path, the sink will resend an interest with a smaller interval.
- The receiver of this reinforcement message will reinforce 1 neighbor.
- The choice of neighbor can be based on several things including
the neighbor from which it most recently received data or the neighbor
that typically sends data in the most timely manner.
- Negative reinforcement, reducing the data rate, is also possible.
The SPIN approach is slightly different in that it focuses on
disseminating or delivering data throughout the network. It could
be used, for example, to deliver a code update to all nodes in the
The key idea in SPIN is for nodes to advertise metadata before sending data. Nodes use this negotiation to avoid sending overlapping data. Additionally, nodes use resource adaptation to determine when to participate in negotiation process.
The basic SPIN operations are advertising data, requesting data, and sending data.
There are two versions of SPIN (1 and 2). SPIN 2 differs from SPIN 1 in that it is resource aware.
- ADV - when a node has new
data to share, it advertises that data by sending an ADV message to its
neighbors. This message contains metadata about the data it has
- REQ - when a node receives an advertisement for data it needs, it sends a REQ message to request the data.
- DATA - the data message contains the actual data.
The basic SPIN 1 algorithm is as follows:
if ADV received and data required
sent ADV to neighbors to advertise new data
if REQ received
reply with DATA
With SPIN 2, a node will evaluate its battery before advertising data.
If the battery is low, it will not send the ADV message to its
neighbors. Similarly, if it receives an ADV and its battery is
low, it will not send a REQ for the data.