Skip to content

RPL modes

Benoît Thébaudeau edited this page Sep 23, 2019 · 5 revisions

RPL has two ways to send data, either up the tree or down the tree. To send data up the tree, nodes need to keep track of one parent each. To send data down the tree, all nodes need to keep track of all nodes below them. Parent routes are built with DIO messages. Child routes are built with DAO messages. Upward routing has great scaling properties since the number of upward routes is constant with network size. Downward routing does not scale as well because the number of routes each node needs to have room for increases linearly with network size. Contiki supports both upward and downward routing.

By default, Contiki nodes are always downward-routable because they send DAO messages to announce their routes. And by default, Contiki nodes are always potential parents for upward routing because they send DIO messages to announce their routing availability. There is a way to, at compile time, turn on leaf mode, which makes nodes unavailable as parents in the mesh.

RPL modes was introduced with this pull request: https://github.com/contiki-os/contiki/pull/454

The patch adds a mechanism for setting RPL mode at run-time and adds a new mode in addition to the mesh and leaf modes: feather mode. A node in feather mode routes packets on behalf of other nodes but does not advertise their own route via DAO messages. Feather nodes can send data to other nodes inside or outside of the network and they can receive multicast messages and unicast messages from immediate neighbors, but they cannot be reached through the mesh.

Feather nodes are very lightweight as they require no routing table space in the network. A network can contain any number of feather nodes without using precious routing table space.

The name feather was chosen because of their light weight. Think of a network of feather nodes as a gathering of bird feathers, freely flying around in the breeze.

Clone this wiki locally