10 RPL Control Messages: DIO, DIS, DAO
More
Depth: Practitioner
Progress saves as you read. Mark sections complete as you go; your progress appears in the sidebar.
10.1 Start With One Control Packet
This section: Start With One Control Packet — Picture a new node that hears a route message and must decide where to join.
Picture a new node that hears a route message and must decide where to join. One packet can start that choice, but it cannot prove the whole path.
First, name the message, who sent it, and what state changed. Keep discovery, parent choice, and route reach apart in the record.
A route may look healthy while an old message or a lost reply hides a break. More control traffic can aid repair, but it also costs airtime and power.
That is the simple story, but it does not cover each mode or repair case. The message records later in the chapter show those exact bounds.
Use the Practitioner section to build and review a flow record. Use Under the Hood to trace route modes, replies, repairs, and failure cases in more depth.
A protocol is a set of rules for a message path. Routing Protocol for Low-Power and Lossy Networks (RPL) is a way for small nodes to form routes. Telemetry is the measured data those nodes send.
Plain check
- Name the control message. Name the sender. Save the old state. Save the new state.
- Check the chosen parent. Check the route mode. Watch for stale news. Mark a lost reply.
- Use Practitioner to trace. Use deeper mode checks. Test a repair. Keep reach proof separate.
RPL control messages are easier to learn when one packet has a job. A DIO advertises graph information, a DIS asks for it, a DAO records downward reachability, and a DAO-ACK can confirm that the route state was accepted.
Trace the control packet with the traffic claim in mind. Upward telemetry, root-to-node commands, and peer paths need different evidence, so the message flow should show which route state exists and which direction it actually supports.
10.2 Overview: RPL Message Flow Separates Discovery From Reachability
Use Figure 10.1 to separate upward-parent discovery from downward-route registration across the root, router, and new-node lifelines.
Read Figure 10.1 from the root DIO and node DIS to the router DIO that lets the new node choose an upward parent. That discovery can support telemetry toward the root, but it does not establish a return path. The later DAO advertises target N through the router, and the forwarded DAO carries that reachability to the root; DAO-ACK confirms the requested transaction. Keep those evidence scopes separate, then add an application packet test in the required direction so control-message success is not mistaken for delivery.
-
The root advertises the graph and its place in it.
-
A new node may ask nearby routers to speak.
-
The node chooses one upward parent.
-
The node sends its downward route record upward.
-
The root confirms that route record.
-
Only then test a command in the downward direction.
RPL builds a DODAG through control messages that answer different questions. DIO messages advertise DODAG information, DIS messages solicit nearby DIO information, DAO messages advertise downward reachability, and DAO-ACK messages confirm a DAO when acknowledgment is requested.
The practical review point is scope. A node can join a DODAG and send telemetry upward before every downward path is proven. Message-flow evidence should therefore separate parent selection from route registration and packet delivery.
That scope should be written before reading the trace. If the claim is "node joined the graph," DIO, Rank, and selected-parent evidence may be enough. If the claim is "the root can command the node," the trace must include mode-specific DAO or route-state evidence plus a packet test in the downward direction.
The same trace can support one claim while leaving another open. A DIS followed by a compatible DIO supports discovery; a DAO with current lifetime supports a downward route-state claim; an application packet and response support delivery under that condition.
A review note should say which of those claims is accepted and which needs another record.
If you only need the intuition, remember this sequence: DIO and DIS help a node discover and join the graph; DAO and DAO-ACK prove whether the network has the return-path evidence needed for commands, replies, or other downward traffic.
The evidence boundary for Overview: RPL Message Flow Separates Discovery From Reachability is visible in Figure 10.2. Study how dIO, DIS, DAO, and DAO-ACK support different parts of the RPL control-plane record before carrying the claim into the next design or validation step.
The arrows in Figure 10.2 distinguish outward DIO advertisements, neighbor DIS requests, and upward DAO registration. Use a packet trace to pair each control-message direction with the node that sent it and the state it changed.
In Figure 10.2, the visual shows rPL control-message directions: DIO advertises outward, DIS solicits information, DAO advertises reachability upward, and DAO-ACK confirms DAO reception when requested. The DAO-ACK confirms a requested registration exchange; it does not by itself prove application delivery.
10.2.1 DIO
Advertises DODAG identity, configuration, version, and sender Rank so neighbors can evaluate candidate parents.
10.2.2 DIS
Solicits DODAG information from nearby RPL routers when waiting for ordinary DIO timing is not enough.
10.2.3 DAO
Advertises reachability for downward traffic, with meaning that depends on Storing or Non-Storing mode.
10.2.4 DAO-ACK
Confirms DAO reception and processing only when acknowledgment is requested by the exchange.
10.2.5 Overview Knowledge Check
10.3 Practitioner: Build a Reviewable Message-Flow Record
This section: Practitioner: Build a Reviewable Message-Flow Record — A useful trace does not just list packets.
A useful trace does not just list packets. It tells the story in the order a reviewer can verify: which DODAG is in scope, which DIOs were compatible, how Rank was calculated, which parent was selected, and whether DAO behavior matches the traffic direction being tested.
Keep timestamps and repair events with the trace so a pre-repair DAO is not reused as proof after a parent switch.
The join sequence in Figure 10.3 puts DIO discovery and Rank calculation before parent selection and DAO registration. After the DAO, verify an actual downward packet reaches the joining node; the earlier DIO only established a possible upward parent.
In Figure 10.3, the visual shows rPL join exchange from DIO discovery and optional DIS solicitation through Rank calculation, parent selection, DAO registration, optional DAO-ACK, and Trickle maintenance. A review record should retain the selected parent, advertised Rank, registration response, and packet result for this join.
10.3.1 Worked Record: Equal Candidate Rank
A joining node hears two compatible DIOs. Parent A advertises Rank 256 and the local link adds 384. Parent B advertises Rank 512 and the local link adds 128. Both candidates produce Rank 640, so the arithmetic alone does not prove the correct parent.
The practitioner record should preserve the tie-break rule, hysteresis state, current preferred parent, and stability evidence. If the node switches repeatedly while the path does not improve, the trace may show an operational problem even when every single candidate calculation is valid.
10.3.2 Practitioner Knowledge Check
10.4 Under the Hood: DAO Meaning Depends on Routing Mode
This section: Under the Hood: DAO Meaning Depends on Routing Mode — DAO is the message family most often misread in RPL reviews because its operational meaning depends on routing mode.
DAO is the message family most often misread in RPL reviews because its operational meaning depends on routing mode. In Storing mode, intermediate routers can store descendant route entries. In Non-Storing mode, route knowledge for downward traffic is concentrated at the root, which manages the source-routing behavior needed to reach nodes.
This difference changes the evidence checklist. A Storing-mode review should inspect route state at relevant ancestors. A Non-Storing-mode review should inspect root-side route knowledge and the packet evidence that follows from it. The same packet capture phrase, "DAO observed," is incomplete without naming the mode and the expected state location.
It also changes retesting. Parent churn, route lifetime expiry, root failover, and firmware changes can make the old DAO interpretation stale even when the packet capture remains accurate.
To distinguish the responsibilities inside Under the Hood: DAO Meaning Depends on Routing Mode, turn to Figure 10.4. Its labels show how dAO evidence must be interpreted against the selected RPL mode and the expected location of downward route state, making it possible to test the claimed relationship in order.
The two DAO paths in Figure 10.4 show why downward route state sits at different places in Storing and Non-Storing modes. In Storing mode, inspect the intermediate tables; in Non-Storing mode, inspect the root source route before testing the same downward destination.
In Figure 10.4, the visual shows dAO route-registration behavior compared for RPL Storing mode and Non-Storing mode. For Storing mode inspect intermediate route entries; for Non-Storing mode inspect the root path and source-route packet.
10.4.1 Storing Mode
Ancestors can keep route entries for descendants, so intermediate route tables and memory limits become review evidence.
10.4.2 Non-Storing Mode
The root keeps the route knowledge needed for downward forwarding, so root-side source-route evidence matters.
10.4.3 DAO-ACK Boundary
A missing DAO-ACK is only a fault when acknowledgment was expected for that exchange and no acceptable response appears.
10.4.4 Repair Boundary
After parent repair or DODAG version change, stale DAO evidence should be refreshed before accepting commands or replies.
10.4.5 Failure Boundaries
Read failures in message order. A DIO trace can establish discovery context, while repeated DIS messages can expose missing DIO reception or incompatible configuration; neither proves a current downward route. A DAO sighting must still be checked after parent changes or lifetime expiry, and a DAO-ACK must match the expected DAO sequence and sender. Only then should a root-to-node packet test be considered, because successful upward telemetry cannot establish the downward command path.
10.4.6 Under-the-Hood Knowledge Check
10.5 Trickle: Timing RPL Messages
This section: Trickle: Timing RPL Messages
10.5.1 Start With the Quiet Network
Cause One Real Change and Watch the Mesh Settle
Picture a quiet sensor mesh that keeps sending control messages at full rate. That wastes energy. A mesh that stays quiet after a route change has the opposite fault because new information does not spread.
A directed acyclic graph means a set of one-way paths with no loop. A destination oriented directed acyclic graph, or DODAG, is the route shape used here. RPL means Routing Protocol for Low Power and Lossy Networks. Its Trickle timer changes how often route information is sent.
Record one stable interval, then change the graph version or add a node. Track each node’s interval, heard count, send or suppress result, reset reason, energy cost, and time to settle. Repeat from a known state.
This runway does not prove parent choice or application delivery. The deeper sections explain timer state, local counts, suppression, resets, worked timelines, and the evidence needed to judge control traffic.
Trickle is easiest to understand when the network is quiet and nothing needs to be shouted. Stable information should not flood every node forever, because constrained devices pay for every transmission with energy, airtime, and collision risk.
Then introduce inconsistency. A changed DODAG version, conflicting information, or a new node should make the timer react, spread needed updates, and settle again. The proof is whether control traffic rises for the right reason and then becomes quiet again.
10.5.2 Overview: Trickle Paces RPL DIO Messages
Trickle is the adaptive timer RPL uses to pace DIO messages. It is not a parent-selection algorithm, a DAO registration mechanism, or proof that application packets are being delivered. Its job is narrower: repeat DODAG information quickly when the local view is inconsistent, and reduce redundant control messages when nearby routers already agree.
The core review question is mechanical. During the current interval, what consistent DIO information did the node hear, what did it count, what transmit time was selected, and did the node transmit, suppress, or reset for a reason tied to DODAG evidence?
That timer behavior matters because constrained radios pay for every control frame. A quiet interval can be healthy when neighbors already agree, while a sudden burst can be the correct response to inconsistent DODAG information. The reviewer should not treat either pattern as good or bad until it is tied to the counter, threshold, interval, and observed reason.
Because the timer is local, two nearby nodes may show different behavior during the same window. One may suppress after hearing enough consistent DIOs, while another transmits because it heard too few. The review should compare each node against its own evidence before blaming the whole DODAG.
If the network is stable, Trickle can grow quieter. If a real inconsistency appears, Trickle resets so updated DIO information can move sooner.
Before applying Overview: Trickle Paces RPL DIO Messages, examine Figure 10.5 for the concrete parts of the claim. By showing how a Trickle interval starts by setting the timer and counter, listens for consistent DIOs, then either transmits, suppresses, grows, or resets, the visual exposes what must be recorded rather than merely asserted.
The useful contrast in Figure 10.5 is between “Trickle cycle showing interval setup” and “listening and counting consistent DIOs.” Follow it through “transmit or suppress decision” to see how a Trickle interval starts by setting the timer and counter, listens for consistent DIOs, then either transmits, suppresses, grows, or resets. That relationship is the review point carried into Overview: Trickle Paces RPL DIO Messages.
The cycle above describes the rule; the diagram Figure 10.6 shows why the rule is local to each listener. Use the worked timeline to test whether a node transmits or suppresses at its own timer event when the redundancy constant is k = 1.
In the timeline diagram Figure 10.6, Node 1 and Node 3 cannot hear each other, so each reaches its transmit time without counting the other’s consistent DIO. Node 2 hears both; its counter has already reached k = 1, so it suppresses its later transmission. The second interval is twice as long but preserves the same comparison. This example carries the overview into observable timer evidence: record who heard which DIO before t, rather than calling the whole neighborhood quiet or noisy from one capture.
10.5.2.1 I
The current interval. It grows after consistent behavior and resets when inconsistency is detected.
10.5.2.2 c
The count of consistent DIO information heard during the current interval.
10.5.2.3 k
The redundancy threshold. A node suppresses when enough consistent DIOs have already been heard.
10.5.2.4 t
The randomized transmit time inside the interval, used so neighboring routers do not all speak at once.
10.5.2.5 Overview Check
10.5.3 Practitioner: Classify Stable, Sparse, and Inconsistent Evidence
The same Trickle rules produce different behavior depending on local evidence. In a stable dense area, the node hears enough consistent DIOs before its transmit time and suppresses its own DIO. In a sparse area, it may hear fewer than the redundancy threshold and transmit. In an inconsistent state, received DODAG information conflicts with local state and the interval resets.
Do not call every reset a failure. A reset can be the correct response to a changed DODAG Version, incompatible configuration, rank evidence that violates loop-avoidance expectations, or parent/path state that no longer matches observed DIO evidence. The defect is an unexplained, missing, constant, or evidence-free reset.
Record the surrounding route claim with the timer classification. If the question is parent stability, keep the preferred parent and Rank before and after the reset. If the question is downward command delivery, keep DAO or route-state evidence separately because the Trickle decision only explains DIO timing.
A practical worksheet should also keep the configured minimum interval, maximum interval, redundancy threshold, and observation window. Otherwise the same capture can be misread as excessive chatter, missing control traffic, or healthy suppression depending on the reviewer expectation.
That worksheet should identify the node whose timer is being reviewed, because a neighbor's suppression decision is not proof of this node's local counter.
To make Practitioner: Classify Stable, Sparse, and Inconsistent Evidence reviewable, pause at Figure 10.7. It lays out how stable, sparse, and inconsistent areas need different evidence labels even when all three are produced by the same timer rules, so the next decision can be tied to an observable state or transition. This diagram tests Practitioner: Classify Stable, Sparse, and Inconsistent Evidence.
Figure 10.7 first names “Three Trickle outcomes”; set that evidence against “stable suppression,” then check what “insufficient redundancy transmission” adds. This sequence demonstrates how stable, sparse, and inconsistent areas need different evidence labels even when all three are produced by the same timer rules and supplies the concrete basis for Practitioner: Classify Stable, Sparse, and Inconsistent Evidence. The diagram completes the evidence for Practitioner: Classify Stable, Sparse, and Inconsistent Evidence.
tc >= kk consistent DIOsc < k10.5.3.1 Practitioner Check
10.5.4 Under the Hood: Keep Timer Evidence Separate from Route Proof
A Trickle trace can show DIO timing, consistency counts, suppression decisions, and reset reasons. It cannot, by itself, prove that DAO state is correct, downward routing mode is configured as intended, or application packets are reaching the destination. Accept the timer only when it is paired with route-state and packet evidence for the path being claimed.
Parameter review is also evidence-based. Smaller minimum intervals can react quickly after changes but increase control activity after resets. Larger maximum intervals reduce stable control traffic but make quiet periods harder to observe. A low redundancy threshold suppresses aggressively in dense areas, while a higher threshold asks for more copies. The right setting depends on measured DIO behavior, route stability, link conditions, and retest triggers.
In practice, the under-the-hood record should preserve the parameter values, the current interval, the counter, the chosen transmit time, and the reason for any reset. Without those fields, a packet capture may show more or fewer DIOs while leaving the reviewer unable to decide whether the behavior follows the configured Trickle rules.
Then connect the timer record to a route record only after the scope is clear. A reset that repairs DIO consistency may still require fresh parent, DAO, and packet evidence before a release note can claim that telemetry or command delivery recovered.
Under the Hood: Keep Timer Evidence Separate from Route Proof turns on evidence that is easy to blur in prose. Figure 10.8 isolates how review Trickle as one evidence layer, then verify route state and packet behavior separately, giving the reader a specific result to check before continuing.
Use Figure 10.8 to record the earlier k = 1 timeline. At Node 2’s transmit time, its count has reached the threshold, so it suppresses; Nodes 1 and 3 cannot hear each other and each transmits. Those observations explain the timer decisions. Keep a separate route-state record and packet test before claiming that telemetry or commands work.
10.5.4.1 Timer trace
Interval start, selected transmit time, consistent DIO count, transmit or suppress result, and reset reason.
10.5.4.2 DODAG evidence
DODAG Version, Rank direction, parent state, Objective Function assumptions, and configuration compatibility.
10.5.4.3 Route state
Storing or Non-Storing mode, DAO behavior, parent/child state, and root-side route knowledge.
10.5.4.4 Packet proof
Traffic test, path observation, loss behavior, retry notes, and retest conditions after topology changes.
10.5.4.5 Under-the-Hood Check
RPL Trickle narrated tour
Narrated audio tour. The full transcript is below.
Play the tour to open the simulator. Pause, replay a beat, or read the full transcript below.
Some beats explain situations this teaching model cannot show; those beats keep the existing frame and provide captions only.
Full transcript — RPL Trickle (8 beats)
B1 — Quiet mesh
You are the engineer responsible for a quiet sensor mesh. Repeating unchanged route information wastes radio energy, but staying quiet after a route change leaves needed information unshared. Your problem is deciding when silence means healthy agreement and when the network needs to speak again.
Model caption: A sensor mesh needs less repetition during agreement and quick updates after route changes.
B2 — Trickle timer
The Routing Protocol for Low Power and Lossy Networks, or RPL, uses a timer called Trickle to pace route advertisements. When nearby routers agree, repeated control messages become less useful. When their route information conflicts, the timer resets so fresh information can spread sooner.
Model caption: RPL means Routing Protocol for Low Power and Lossy Networks. Trickle paces route advertisements.
B3 — Count then suppress
Each node counts consistent advertisements during its own interval. At its chosen transmit time, it compares that count with a redundancy threshold. Enough copies mean suppress its own advertisement. Too few mean transmit. The transmit time is randomized within the interval so neighboring routers do not all speak together.
Model caption: Each node counts consistent advertisements. At its chosen time: enough copies suppress; too few transmit.
B4 — Interval growth
The timer model begins with a listen-only half interval rather than an immediate reply. Listening gives other advertisements time to count. Stable intervals can grow longer, reducing repeat opportunities. The chapter’s example doubles an interval from eight seconds to sixteen seconds: fewer opportunities to repeat unchanged route information.
Model caption: The model listens during the first half. Stable interval growth from 8 to 16 seconds reduces advertisement opportunities.
B5 — Three-node example
For a concrete neighborhood, take a redundancy threshold of one. Node one and node three cannot hear each other. Each reaches its transmit time without counting the other’s advertisement, so each transmits. Node two hears both before its own later transmit time and suppresses its advertisement.
Model caption: Worked example: threshold 1. Nodes 1 and 3 cannot hear each other and both transmit. Node 2 hears both and suppresses.
B6 — Local decisions
The result is two transmitting nodes and one suppressing node, all following the same local rule. The next interval is twice as long, and each node applies the same comparison. Your mesh’s total traffic only makes sense alongside who could hear whom before each node’s decision time.
Model caption: Two transmitters, one suppressor. The next interval doubles and each node applies the same comparison. Decisions are local.
B7 — Low count versus conflict
A common mistake is calling every low count an inconsistency. Too few consistent copies mean the node should contribute an advertisement; they do not by themselves mean conflicting route information. A real conflict resets the interval. Smaller minimum intervals react quickly after changes, at the cost of more control activity after resets.
Model caption: Low consistent count means transmit; conflicting information means reset. Shorter minimum intervals improve reaction speed but increase reset traffic.
B8 — Healthy silence
For your mesh, healthy silence means enough matching route information arrived before a node’s decision time.
Model caption: Healthy silence means enough matching route information arrived before a node’s decision time.
10.5.5 Summary
Trickle lets RPL reduce redundant DIO transmissions when DODAG information is consistent while still reacting quickly to inconsistent evidence. The review task is to classify the local evidence, count consistent DIOs, compare c with k, check whether the node transmitted or suppressed, and tie any reset to observable DODAG evidence. Then verify route state and packet behavior separately from timer behavior.
10.5.6 Key Takeaway
Trickle is accepted when DIO timing, suppression, reset evidence, route-state evidence, and packet tests are all scoped correctly instead of being blended into one broad routing claim.
10.5.7 See Also
10.5.7.1 RPL Core Concepts
Review DODAG, Rank, DIO, DIS, DAO, and routing-mode vocabulary before reading timer traces.
10.5.7.2 RPL DODAG Message Flow
See where Trickle-paced DIO messages sit beside DIS, DAO, and DAO-ACK exchanges.
10.5.7.3 RPL DODAG Construction
Connect DIO timing to graph formation, parent choice, rank evidence, and repair behavior.
10.5.7.4 RPL Routing Modes
Keep Trickle evidence separate from Storing and Non-Storing route-state evidence.
10.6 Summary
This section: Summary
- RPL message-flow review separates DODAG discovery, solicitation, parent selection, downward reachability, and packet proof.
- DIO advertises graph context and Rank; DIS solicits nearby DIO information.
- DAO advertises downward reachability, and DAO-ACK confirms DAO processing only when acknowledgment is requested.
- Parent selection should preserve compatibility, Objective Function context, candidate Rank, selected parent, and stability evidence.
- Storing and Non-Storing mode change where downward route state should be reviewed.
- A strong trace closes the loop with packet evidence that matches the stated traffic direction.
10.7 Key Takeaway
This section: Key Takeaway
Treat RPL message flow as an evidence chain: DIO and DIS explain how the node joined, while DAO, optional DAO-ACK, mode-specific route state, and packet proof explain whether downward traffic can actually return to the node.
10.8 See Also
This section: See Also
10.8.1 RPL Core Concepts
Review DODAG, Rank, parent selection, and route evidence before reading detailed message traces.
10.8.2 RPL DODAG Construction Process
Connect the message exchange to the larger formation and repair sequence.
10.8.3 RPL DODAG Trickle Timer
Use this when DIO timing and consistency behavior need deeper review.
10.8.4 RPL Routing Modes
Compare Storing and Non-Storing mode before accepting downward-route claims.
Find help
3 reviewed answers.
Where should I start in a module?
Open the module page from the sidebar to see its chapters in order. Use the module map to return to a topic you need.
Modules and pathsReviewed
What can I try when a project does not work?
Check the symptom, then work through the diagnostic steps. Keep the error message and the smallest example that reproduces it.
When you are stuckReviewed
How do interactive examples work?
Use the interactive guide to check how examples and simulations work before changing your project.
Interactive examples guideReviewed

