Subject: [Roll] DIO loop

From: Mathieu Pouillot <[email-masked]>
Date: Thu, 25 Nov 2010 09:04:49 +0100

Hi all,

I have a problem with a DIO loop in a specific topology.: A---B---C , A 
is the root of the DAG and the parent of B, B the parent of C.

B resets for any reason (watchdog, power failure,...), then it receives 
first the DIO from C . Therefore there is a loop because B is the child 
and the parent of C. On each sending of DIO from B and C, the rank will 
be incremented by the other one and so on…

Two possibilities to avoid this loop, saved all the configuration of B 
in memory and so after a reset load the information saved (can ask a lot 
of memory). Second solution is to send a DIS (not mandatory by the 
specification) and wait to receive all DIO before joining the DAG.

Is there another solution?

best regards,

Mathieu

-- 
Mathieu Pouillot
R&D Engineer
[email-masked]

Tel : +33(0)4 98 01 60 05 (Poste 43)
Fax : +33(0)4 94 14 10 80
1766 Chemin de la Planquette
83130 LA GARDE - France
www.watteco.com<http://www.watteco.com/>

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Thu, 25 Nov 2010 16:27:06 +0100

Hi Mathieu

We understand that the data path loop is detected. So, what we are
discussing here is the question of whether a child can immediately
follow the last parent as that parent moves deeper in the same DODAG.

Historically, the spec has disallowed such a behavior. A node could not
increase its Rank immediately. Instead, the node would poison, wait, and
then reattach. So in your case:

- B resets
- B attaches to C
- C sees B moves deeper than self
- C detaches < a) advertises INFINITE_RANK  OR  b) forms its own
grounded DAG > and waits for the poisoning to take effect (time for the
bad news has spread a few hops) before it reattaches without constraint.
-    If a) B has to detach from C and stay there till it finds another
parent. 
-    If b), B stays attached to C has long as C is the best thing that
it sees.
- If B misses the news from C then, after the delay, B discovers that C
is now deeper. There is a statistical chance that this happens. If that
chance is 20% then the chance that it happens twice is 4%, 3 time it
becomes .8 % etc... We see that things would settle rapidly.
 
Since the spec has allowed a limited elasticity to the poisoning rule,
so the child could follow the parent down as long as (8.2.2.4. item 3.)
it does not go deeper down than DAGMaxRankIncrease from its original
position.

If you set DAGMaxRankIncrease to 0, you are back to the historic
behavior. Alternatively, you may set DAGMaxRankIncrease to a few
MinHopRankIncrease. In your case, that will cause a few iteration of the
loop you describe. In a dense environment, there is a chance that the
node that loses its last parent can reparent to someone lower that is
not in its subdag, in which case the new rule has allowed the DAG to
recover faster. 

I'm afraid that you have to make your own mind on whether a non-zero
DAGMaxRankIncrease is a good thing for your application...

: )

Pascal
http://www.xtranormal.com/watch/7011357/

> -----Original Message-----
> From: [email-masked] [mailto:[email-masked]] On Behalf
Of
> Mathieu Pouillot
> Sent: Thursday, November 25, 2010 9:05 AM
> To: [email-masked]
> Subject: [Roll] DIO loop
> 
> Hi all,
> 
> I have a problem with a DIO loop in a specific topology.: A---B---C ,
A is the
> root of the DAG and the parent of B, B the parent of C.
> 
> B resets for any reason (watchdog, power failure,...), then it
receives first the
> DIO from C . Therefore there is a loop because B is the child and the
parent of
> C. On each sending of DIO from B and C, the rank will be incremented
by the
> other one and so on...
in memory
> and so after a reset load the information saved (can ask a lot of
memory).
> Second solution is to send a DIS (not mandatory by the
> _______________________________________________
> Roll mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/roll

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Fri, 26 Nov 2010 08:25:38 +0100

Hello again Mathieu. 

Typo:
C detaches < a) advertises INFINITE_RANK  OR  b) forms its own grounded
DAG >
->
C detaches < a) advertises INFINITE_RANK  OR  b) forms its own floating
(G bit reset)  DAG >

Cheers,

Pascal

Of
> Pascal Thubert (pthubert)
> Sent: Thursday, November 25, 2010 4:27 PM
> To: [email-masked]; [email-masked]
> Subject: Re: [Roll] DIO loop
> 
> Hi Mathieu
> 
follow the
> last parent as that parent moves deeper in the same DODAG.
> 
grounded
> DAG > and waits for the poisoning to take effect (time for the bad
news has
> spread a few hops) before it reattaches without constraint.
> - If B misses the news from C then, after the delay, B discovers that
C is now
> deeper. There is a statistical chance that this happens. If that
chance is 20%
> then the chance that it happens twice is 4%, 3 time it becomes .8 %
etc... We
> see that things would settle rapidly.
> 
so the
> child could follow the parent down as long as (8.2.2.4. item 3.) it
does not go
> deeper down than DAGMaxRankIncrease from its original position.
> 
behavior.
> Alternatively, you may set DAGMaxRankIncrease to a few
> MinHopRankIncrease. In your case, that will cause a few iteration of
the loop
> you describe. In a dense environment, there is a chance that the node
that
> loses its last parent can reparent to someone lower that is not in its
subdag,
> in which case the new rule has allowed the DAG to recover faster.
>

---

From: Mathieu Pouillot <[email-masked]>
Date: Fri, 26 Nov 2010 08:47:57 +0100

Hi Pascal,

Thank you for this terrific explication. Now, it is more clear for me 
and I need to choose the best solution for my application and plc medium.

best regards,

Mathieu

Le 26/11/2010 08:25, Pascal Thubert (pthubert) a écrit :
> Hello again Mathieu.
>
> Typo:
> C detaches<  a) advertises INFINITE_RANK  OR  b) forms its own grounded
> DAG>
> ->
> C detaches<  a) advertises INFINITE_RANK  OR  b) forms its own floating
> (G bit reset)  DAG>
>
> Cheers,
>
> Pascal
>> - C detaches<  a) advertises INFINITE_RANK  OR  b) forms its own
> grounded
>> DAG>  and waits for the poisoning to take effect (time for the bad
> news has

-- 
Mathieu Pouillot
R&D Engineer
[email-masked]