Subject: [Roll] No path DAO treated as new

From: Rahul Jadhav <[email-masked]>
Date: Fri, 3 Feb 2017 13:00:28 +0800

Hello All,

Section 9.2.2. of RFC6550 says that a No-Path DAO message should always be
processed as a "new" message (i.e. igoring the PathSequence value related
to the target) ...
I have problem with a scenario where if a node sends NPDAO (to old path)
and DAO to the new path for the same target ... and if for some reason
NPDAO reaches after the DAO to the common parent then it will clear the
routes because NPDAO is alway processed as "new" message.
Consider an eg network,
    A
    |
    B
   / \
  /   \
 C     D
  :   /
   : /
    E
Node E switches from C to D, E sends an NPDAO to C, and regular DAO to D.
If B receives NPDAO after DAO, then won't it result in incorrect
invalidation of routes. My point is, the NPDAO processing should also have
honored the PathSequence value before processing. But the spec text clearly
and specifically talks about treating NPDAOs as "new".
Any thoughts on why special treatment for NPDAO was considered?

Thanks,
Rahul

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Tue, 7 Feb 2017 09:05:03 +0000

Hello Rahul :

The section is not about ignoring the DAO, it is about scheduling a DAO to parent. If the NP DAO does not cause the removal of the last route, then there is nothing to tell the parent, this node can still forward.

Your assertion that the route in B is removed in your scenario appears incorrect. Let’s look in details:

An (NP) DAO installs and remove adjacencies* between a parent and a child. A NP DAO can only clean the adjacency between that parent and that child. A NP DAO from C cannot clean the adjacency via D.

Let’s look at the adjacencies in each nodes along your scenario, see if I have it right:

At T=0 B has a route to Target below E via C (I expect from your description, you’re not 100% clear), and C has a route to Target via E.

At T=1 E sends a NP DAO to its old parent (that’s C), effectively invalidating the adjacency in C via E. C has no more route to Target. B does not know yet

At T=2 E sends a DAO to D, D now has a route to Target via E.

At T=3 D sends a DAO to B, B now has 2 adjacencies for Target, one via C and one via D. It can select either for his route to Target, or load balance. At this point, B may still use C, and that would be a bad idea since C cannot forward anymore to Target.

At T=4 C sends the NP DAO to B. B cleans the adjacency via C, but retains the one via D. So now it still has a route via B and no alternative to it. At this point, the routing is correct again.

I do not see that we ned to change RPL there…

*  Adjacencies are the possible next hops learnt from various routing protocols with various costs; this is what the routing protocols exchange; the routing table is a local decision by the router that retains the subset of adjacencies that it selects for forwarding.

Pascal

From: Roll [mailto:[email-masked]] On Behalf Of Rahul Jadhav
Sent: vendredi 3 février 2017 06:00
To: [email-masked]
Subject: [Roll] No path DAO treated as new

Hello All,

Section 9.2.2. of RFC6550 says that a No-Path DAO message should always be processed as a "new" message (i.e. igoring the PathSequence value related to the target) ...
I have problem with a scenario where if a node sends NPDAO (to old path) and DAO to the new path for the same target ... and if for some reason NPDAO reaches after the DAO to the common parent then it will clear the routes because NPDAO is alway processed as "new" message.
Consider an eg network,
    A
    |
    B
   / \
  /   \
 C     D
  :   /
   : /
    E
Node E switches from C to D, E sends an NPDAO to C, and regular DAO to D. If B receives NPDAO after DAO, then won't it result in incorrect invalidation of routes. My point is, the NPDAO processing should also have honored the PathSequence value before processing. But the spec text clearly and specifically talks about treating NPDAOs as "new".
Any thoughts on why special treatment for NPDAO was considered?

Thanks,
Rahul

---

From: Rahul Jadhav <[email-masked]>
Date: Tue, 7 Feb 2017 22:57:03 +0530

Thanks Pascal for the detailed articulation.

The timelined messaging that you have mentioned goes exactly as per what i
wanted to convey, thanks.
B will have two adjacencies to target E via C and D and it (node B) can
decides to cleanup the adjacency with respect to C on receiving
NPDAO(tgt=E) from C.

There is one more point to clarify:
Lets say, Node B decides to cleanup the adjacency and schedules an
NPDAO(tgt=E) upstream and when it reaches the upstream node, that node
(node A in my example) won't have multiple adjacencies based on next hop
for target E i.e. Node A will have both the NPDAO(tgt=E) & DAO(tgt=E)
received from the same next hop (node B) and since NPDAO is rcvd last from
the same next hop, it may result in invalidation of that adjacency.

Is it expected that Node B MUST NOT schedule the NPDAO(tgt=E) since the
NPDAO has not cleared the last downward route for tgt E, where last
downward route is identified by PathSeq of DAO (route install) ?

Please find comments inline...

On 7 February 2017 at 14:35, Pascal Thubert (pthubert) <[email-masked]>
wrote:

> Hello Rahul :
>
>
>
> The section is not about ignoring the DAO, it is about scheduling a DAO to
> parent. If the NP DAO does not cause the removal of the last route, then
> there is nothing to tell the parent, this node can still forward.
>
>
>
> An (NP) DAO installs and remove adjacencies* between a parent and a child.
> A NP DAO can only clean the adjacency between that parent and that child. A
> NP DAO from C cannot clean the adjacency via D.
>
>
>
> At T=0 B has a route to Target below E via C (I expect from your
> description, you’re not 100% clear), and C has a route to Target via E.
>
>
>
> At T=1 E sends a NP DAO to its old parent (that’s C), effectively
> invalidating the adjacency in C via E. C has no more route to Target. B
> does not know yet
>
>
>
> At T=3 D sends a DAO to B, B now has 2 adjacencies for Target, one via C
> and one via D. It can select either for his route to Target, or load
> balance. At this point, B may still use C, and that would be a bad idea
> since C cannot forward anymore to Target.
>
>
>
> At T=4 C sends the NP DAO to B. B cleans the adjacency via C, but retains
> the one via D. So now it still has a route via B and no alternative to it.
> At this point, the routing is correct again.
>

At this point i assume that node B may schedule NPDAO(tgt=E) to its
upstream parent node A.

Thus at T=5, Node A will receive a NPDAO(tgt=E, nhop=B) and it will already
have only one routing adjacency (tgt=E, nhop=B) ... What stops Node A from
invalidating this routing adjacency ?

> *  Adjacencies are the possible next hops learnt from various routing
> protocols with various costs; this is what the routing protocols exchange;
> the routing table is a local decision by the router that retains the subset
> of adjacencies that it selects for forwarding.
>
>
>
>
>
> Pascal
>
>
>
> *From:* Roll [mailto:[email-masked]] *On Behalf Of *Rahul Jadhav
> *Sent:* vendredi 3 février 2017 06:00
> *To:* [email-masked]
> *Subject:* [Roll] No path DAO treated as new
>
>
>
> Hello All,
>
>
>
> _______________________________________________
> Roll mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/roll
>
>

---

From: "Pascal Thubert (pthubert)" <[email-masked]>
Date: Tue, 7 Feb 2017 17:37:07 +0000

Hello Rahul :

The rule is this

   3.  it is a No-Path DAO message that removes the last Downward route
       to a prefix.

The flow is

>> At T=4 C sends the NP DAO to B. B cleans the adjacency via C, but retains the one via D. So now it still has a route via B and no alternative to it. At this point, the routing is correct again.

Ø  At this point i assume that node B may schedule NPDAO(tgt=E) to its upstream parent node A.

Is the last downward route removed? No, since B still has a route as said at T = 4. B is still capable to send. So no, the NP DAO is not new per the rule above. So B does not schedule a NP DAO to A.

Cheers,

Pascal

From: Roll [mailto:[email-masked]] On Behalf Of Rahul Jadhav
Sent: mardi 7 février 2017 18:27
To: Routing Over Low power and Lossy networks <[email-masked]>
Subject: Re: [Roll] No path DAO treated as new

The timelined messaging that you have mentioned goes exactly as per what i wanted to convey, thanks.
B will have two adjacencies to target E via C and D and it (node B) can decides to cleanup the adjacency with respect to C on receiving NPDAO(tgt=E) from C.

There is one more point to clarify:
Lets say, Node B decides to cleanup the adjacency and schedules an NPDAO(tgt=E) upstream and when it reaches the upstream node, that node (node A in my example) won't have multiple adjacencies based on next hop for target E i.e. Node A will have both the NPDAO(tgt=E) & DAO(tgt=E) received from the same next hop (node B) and since NPDAO is rcvd last from the same next hop, it may result in invalidation of that adjacency.

Is it expected that Node B MUST NOT schedule the NPDAO(tgt=E) since the NPDAO has not cleared the last downward route for tgt E, where last downward route is identified by PathSeq of DAO (route install) ?

On 7 February 2017 at 14:35, Pascal Thubert (pthubert) <[email-masked]<mailto:[email-masked]>> wrote:
Hello Rahul :

At this point i assume that node B may schedule NPDAO(tgt=E) to its upstream parent node A.

Thus at T=5, Node A will receive a NPDAO(tgt=E, nhop=B) and it will already have only one routing adjacency (tgt=E, nhop=B) ... What stops Node A from invalidating this routing adjacency ?

Pascal

From: Roll [mailto:[email-masked]<mailto:[email-masked]>] On Behalf Of Rahul Jadhav
Sent: vendredi 3 février 2017 06:00
To: [email-masked]<mailto:[email-masked]>
Subject: [Roll] No path DAO treated as new

Hello All,

Thanks,
Rahul

_______________________________________________
Roll mailing list
[email-masked]<mailto:[email-masked]>
https://www.ietf.org/mailman/listinfo/roll