Data-centric Routing

Papers referenced:
"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 Shenker


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.

Basic Models
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:
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 resources.

Directed Diffusion

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?"

Basic idea:
  1. A node (the sink) publishes an interest in a particular type of data.
  2. The interest is diffused toward nodes that can provide the data (the sources).
  3. Data is collected and returned on the reverse path of the interest (the gradient).
  4. A path from source to sink is reinforced.
  5. Data may be aggregated as it propagates back toward the sink(s).

Task descriptions are named.  An example might look as follows:
type = four-legged animal //detect animal location
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:
  1. An interest is injected into the network at some sink node.
  2. 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.
  3. Periodically, the sink rebroadcasts the interest to address the potential problem of unreliable data delivery.
  4. Each node receiving an interest stores it in an interest cache.
    1. A node may aggregate several interests into 1 cache entry if they overlap.
    2. Each entry contains gradient fields, one per neighbor from which the interest was received.  Each gradient may have different data rate.
  5. 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.
    1. In some cases, geographic routing may be possible.
Data Propagation
  1. 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 low).
  2. A node receiving data will check a data cache and relay the data based on the gradient.
    1. Nodes cache data sent and will silently drop data that is already in the cache in order to avoid routing loops.
  3. 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.
  1. 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.
  2. To reinforce a path, the sink will resend an interest with a smaller interval.
  3. The receiver of this reinforcement message will reinforce 1 neighbor.
    1. 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.
  4. 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 network.

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.  

Basic Operations

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.


The basic SPIN 1 algorithm is as follows:

if ADV received and data required
    send REQ
    receive DATA

    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.  

Sami Rollins

Date: 2008-01-15