Subject: [Roll] DAG repair when Root is unreachable

From: Ilias Rinis <[email-masked]>
Date: Wed, 4 Jan 2012 16:30:11 +0100

Hello all,

while working with RPL (using the Contiki implementation) I came along
an issue which is not clearly defined in the specification, and in my
mind it seems to be important in LLNs when failures and the need to
repair a DAG occur.

When a node becomes unreachable for some reason and the failure is not
transient, RPL will initiate a local repair mechanism in order for a
new route towards the DAG Root to be found quickly. The node that
initiates the local repair will poison its subtree with INF rank DIOs,
causing parent re-selection. Since the local repair mechanism is not
explicitly specified in the specification, the question that I am
facing is, what happens when the parent that becomes unreachable is
the very DAG root itself? Is it possible (and how) for the nodes to
join another DAG within the same instance (if present)?

I was unable to locate a satisfying response to this in the
specification. Quoting section 3.7.2 paragraph 2, "For example,
consider the local repair mechanism that allows a node to detach from
the DODAG, advertise a rank of INFINITE_RANK (in order to poison its
routes / inform its sub-DODAG), and then to re-attach to the DODAG".
This implicitly allows a repairing/poisoning node to join another
present DAG. However, it is not clearly specified how this situation
should be handled.

Is this a matter left to the implementation, or is it under discussion
for the specification? I would be very interested in your input on
this.

Thank you all for your time!
Best regards,
Ilias Rinis

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Wed, 4 Jan 2012 17:52:47 +0100

> When a node becomes unreachable for some reason and the failure is not
transient, RPL will initiate a local repair mechanism in order for a new
route towards the DAG Root to be found quickly. The node that initiates
the local repair will poison its subtree with INF rank DIOs, causing
parent re-selection. Since the local repair mechanism is not explicitly
specified in the specification, the question that I am facing is, what
happens when the parent that becomes unreachable is the very DAG root
itself? Is it possible (and how) for the nodes to join another DAG
within the same instance (if present)?

[Pascal] Yes, the nodes would distribute over alternate DODAGs within
the same instance. The term in the spec for that action is jump. At some
point the text for jumping was merged into section 8.2.2.4 and the
result is visible there in item 4, which is poorly related to the title
of the section. I think that the title should be fixed prior to
publication so that " within a DODAG Version" either becomes "within an
instance" or simply goes away.

If the is no more DODAG to attach to the node either poisons and stays
there by itself, or becomes a floating root of its own DODAG, in which
case communication within that floating DODAG is still possible.

 I hope that helps : )

Pascal

---

From: Philip Levis <[email-masked]>
Date: Wed, 4 Jan 2012 09:33:04 -0800

> Thank you all for your time!

Ilias,

The current specification does not state exactly how this should be done, and it's not under discussion for the current specification. But if, through experience and use we find there are particular recommended strategies or algorithms, then I'd see no reason why those couldn't be specified as guidance to implementers. It seems something better suited to writing down what emerges as common practice than specifying a new idea.

Phil

---

From: Ilias Rinis <[email-masked]>
Date: Thu, 5 Jan 2012 14:20:19 +0100

Hello again,

thank you both for your answers and your interest! @Pascal, I studied
the section that you mention, indeed the title is a bit misleading!
Thanks for guiding me to it! @Phil, what you say makes perfectly good
sense; I feel that it would be interesting at some point to see
something relevant in the spec.

Thank you again, and best regards,
Ilias