RPL Local Repair Animation

Repair a broken RPL parent link without rebuilding the whole DODAG

animation
rpl
routing
protocols
6lowpan
local-repair
intermediate
A guided RPL local repair workbench for independent learners exploring parent loss, route poisoning, loop avoidance, and downward-route updates.
RPL repair DIO + DAO Rank and loop guard 6LoWPAN LLN

Repair a broken RPL parent link without rebuilding the whole DODAG.

Local repair is the small, nearby recovery path in RPL. Step through a parent failure, watch the affected node detach or advertise a poisoned route, test candidate parents, then see when DIO and DAO updates are enough and when the root may need a broader global repair.

Stable DODAGRepair phase
E via BPreferred parent
Rank 768Focus rank
Forwarding OKTraffic state

What this is

RPL nodes build upward routes toward a DODAG root. Local repair tries to restore one broken area without changing the whole DODAG version.

What moves

The red link fails, the focus node changes rank and parent, and control messages tell nearby nodes which route is usable.

Try first

Use Step once per stage. Watch whether the chosen candidate has a lower safe path to the root and whether DAO is needed for downlink traffic.

What to notice

Local repair is fast when a safe alternate parent exists. If only descendants or isolated neighbors remain, local repair must stop.

Local repair map

RPL local repair DODAG map Interactive map showing an RPL DODAG, a failed parent link, repair messages, candidate parents, and the selected repaired route.

The DODAG is stable. Packets from the focus node flow upward through its preferred parent toward the root.

Repair inspector

Ready to test a local repair.

Candidate parent evidence

Formula trace

Rank(new) = ParentRank + RankIncrease Before a failure, E uses B: 512 + 256 = rank 768. During poisoning/detach, E advertises an unusable route until a loop-safe parent is selected.
Loop guard ready DAO checked if down routes exist

Event trace

Quick reference for independent learners

Local repair vocabulary

  • Preferred parent: the neighbor currently used for upward traffic toward the root.
  • Rank: a scalar position relative to the root. It must increase as paths move away from the root.
  • Poison/detach: a way to advertise that the current route is no longer usable, commonly shown with INFINITE_RANK.

DIO and DAO roles

  • DIO: carries DODAG information, rank, version, and configuration for upward route maintenance.
  • DIS: can solicit DIO information when a node needs discovery help.
  • DAO: advertises destination reachability for downward routes when the RPL mode maintains them.

Local or global?

  • Use local repair when the damaged area has a safe alternate parent.
  • Stop local repair when every candidate is unreachable, a descendant, or would create a loop.
  • Use global repair when the root intentionally starts a new DODAG version for broader reconstruction.
Technical accuracy notes and source links

What is simplified

  • The rank numbers are teaching values based on 256-unit increments. Real calculation depends on the objective function, metrics, constraints, and implementation policy.
  • The ETX lens is a teaching model for comparing path quality. It is not a complete MRHOF implementation.
  • Repair timing is not guaranteed by RPL alone. It depends on link-layer detection, Trickle settings, timers, loss, and implementation behavior.

Loop and route caveats

  • A candidate that depends on the repairing node or its sub-DODAG is unsafe because it can create a loop.
  • Local repair normally keeps the same DODAG version. A global repair is root-driven and changes the DODAG version number.
  • DAO behavior differs between storing and non-storing modes; this page shows the reason for refreshing downward route information, not every packet format field.
Guided practice

1. Find the damaged scope

Which nodes are actually affected by the failed link? A good local repair should avoid disturbing unrelated branches.

2. Reject unsafe parents

At candidate scan, identify one neighbor that looks available but should be rejected because it is a descendant or has no valid path to the root.

3. Explain the route update

At the final stage, explain why upward traffic can recover before every downward route cache is refreshed.