Subject: [Roll] MPL leaf node behaviour

From: James Ko <[email-masked]>
Date: Tue, 29 Aug 2017 18:51:52 +0000

During testing of my implementation of MPL I found that the leaf nodes in a mesh network (or the last MPL Forwarder to receive a multi-cast packet) would continue to retransmit at every trickle time 't', until expiration 'e' is reached, since it does not receive the same number of 'consistent' transmissions from a neighbour and count 'c' never reaches the consistency constant 'k'.

Example with k = 2, seq [1], nodes <n>

Node <1>
        Node <2>
        Node <3>

TX[1], c = 0
        RX[1] from <1>, c = 0

RX[1] from <2>, c=1
        TX[1], c = 0
        RX[1] from <2>, c = 0

TX[1],  c = 1
        RX[1], from <1>, c = 1
        TX[1], c = 0

RX[1] from <2>, c = 2
        TX[1], c = 1
        RX[1] from <2>, c = 1

RX[1] from <3>, c = 2
        TX[1], c = 1

        RX[1] from <3>,  c = 3
        TX[1], c = 1

RX[1] from <3>,  c = 4
        TX[1], c = 1

Node <3> would continue to retransmit [1] until 'e' expirations.  Even if reactive forwarding is enabled (CONTROL_MSG_EXPIRATIONS != 0) and a 'consistent' control message is received it does not increment 'c' for the data messages.  The data message trickle is reset only for 'inconsistent' messages identified by the control message.

If the expirations 'e' is large, what, if any, strategies could be used to prevent the leaf node from continuing to transmit since it never receive k number of consistent transmissions?

One possible strategy is if reactive forwarding is also enabled then a data message should only be transmitted if 'c' < 'k' for both the data message and the control message.

Of course, this leaf node consistency problem also exists for the control messages following the trickle algorithm.

James

---

From: peter van der Stok <[email-masked]>
Date: Wed, 30 Aug 2017 09:11:44 +0200

Hi James,

Does TX[1] mean the sending of message 1?
When is the new interval started? c should be reset to 0; I don't see 
that happening.
And yes, MPL continues sending till the maximum number of events is 
reached or the message is too old.
Is node 1 the seed; does it resend as well?

Setting the max number of events to for example 2 will help, but is 
reliability assured then?

At the edges of the network you may expect atypical behavior compared to 
the behavior of the other nodes related to the evolution of c value.

Peter

James Ko schreef op 2017-08-29 20:51:
> During testing of my implementation of MPL I found that the leaf nodes
> in a mesh network (or the last MPL Forwarder to receive a multi-cast
> packet) would continue to retransmit at every trickle time 't', until
> expiration 'e' is reached, since it does not receive the same number
> of 'consistent' transmissions from a neighbour and count 'c' never
> reaches the consistency constant 'k'.
> 
> RX[1] from <3>, c = 2 TX[1], c = 1
> 
>  RX[1] from <3>,  c = 3
>  TX[1], c = 1
> 
> RX[1] from <3>,  c = 4 TX[1], c = 1
> 
> Node <3> would continue to retransmit [1] until 'e' expirations.  Even
> if reactive forwarding is enabled (CONTROL_MSG_EXPIRATIONS != 0) and a
> 'consistent' control message is received it does not increment 'c' for
> the data messages.  The data message trickle is reset only for
> 'inconsistent' messages identified by the control message.
> 
> If the expirations 'e' is large, what, if any, strategies could be
> used to prevent the leaf node from continuing to transmit since it
> never receive k number of consistent transmissions?
> 
> One possible strategy is if reactive forwarding is also enabled then a
> data message should only be transmitted if 'c' < 'k' for both the data
> message and the control message.
> 
> Of course, this leaf node consistency problem also exists for the
> control messages following the trickle algorithm.
> 
> James
> _______________________________________________
> Roll mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/roll

---

From: James Ko <[email-masked]>
Date: Wed, 30 Aug 2017 07:49:47 +0000

Hi Peter,

Yes.  TX[1] is data message with sequence number 1.
The new interval is started with node 1 sending message 1.  Node 2 receiving msg 1 and retransmitting it.  c is set to 0 on first TX/RX and reset if an inconsistent transmission is received.  There are no inconsistent transmissions shown in my example.  For each consistent message received the count c increases but the edge node doesn't receive the same number of consistent transmissions as the other nodes.

For low powered nodes at the edges of the network this atypical behavior would unnecessarily consume power and bandwidth.  Are there recommended it best practice strategies for edge nodes to achieve c>=k.

James

From: peter van der Stok
Sent: Wednesday, August 30, 00:11
Subject: Re: [Roll] MPL leaf node behaviour
To: Routing Over Low power and Lossy networks

Hi James, Does TX[1] mean the sending of message 1? When is the new interval started? c should be reset to 0; I don't see that happening. And yes, MPL continues sending till the maximum number of events is reached or the message is too old. Is node 1 the seed; does it resend as well? Setting the max number of events to for example 2 will help, but is reliability assured then? At the edges of the network you may expect atypical behavior compared to the behavior of the other nodes related to the evolution of c value. Peter James Ko schreef op 2017-08-29 20:51: > During testing of my implementation of MPL I found that the leaf nodes > in a mesh network (or the last MPL Forwarder to receive a multi-cast > packet) would continue to retransmit at every trickle time 't', until > expiration 'e' is reached, since it does not receive the same number > of 'consistent' transmissions from a neighbour and count 'c' never > reaches the consistency constant 'k'. > > Example with k = 2, seq [1], nodes > > Node > Node > Node > > TX[1], c = 0 > RX[1] from , c = 0 > > RX[1] from , c=1 > TX[1], c = 0 > RX[1] from , c = 0 > > TX[1], c = 1 > RX[1], from , c = 1 > TX[1], c = 0 > > RX[1] from , c = 2 > TX[1], c = 1 > RX[1] from , c = 1 > > RX[1] from , c = 2 TX[1], c = 1 > > RX[1] from , c = 3 > TX[1], c = 1 > > RX[1] from , c = 4 TX[1], c = 1 > > Node would continue to retransmit [1] until 'e' expirations. Even > if reactive forwarding is enabled (CONTROL_MSG_EXPIRATIONS != 0) and a > 'consistent' control message is received it does not increment 'c' for > the data messages. The data message trickle is reset only for > 'inconsistent' messages identified by the control message. > > If the expirations 'e' is large, what, if any, strategies could be > used to prevent the leaf node from continuing to transmit since it > never receive k number of consistent transmissions? > > One possible strategy is if reactive forwarding is also enabled then a > data message should only be transmitted if 'c' < 'k' for both the data > message and the control message. > > Of course, this leaf node consistency problem also exists for the > control messages following the trickle algorithm. > > James > _______________________________________________ > Roll mailing list > [email-masked] > https://www.ietf.org/mailman/listinfo/roll _______________________________________________ Roll mailing list [email-masked] https://www.ietf.org/mailman/listinfo/roll