Subject: [manet] [Technical Errata Reported] RFC6621 (3499)

From: RFC Errata System <[email-masked]>
Date: Tue, 26 Feb 2013 05:23:09 -0800 (PST)

The following errata report has been submitted for RFC6621,
"Simplified Multicast Forwarding".

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata_search.php?rfc=6621&eid=3499

--------------------------------------
Type: Technical
Reported by: Errol Lloyd <[email-masked]>

Section: B.4.

Original Text
-------------
  1.  Initialize the set "MPR" to empty.

   2.  Initialize the set "N1" to include all 1-hop neighbors of "n0".

   3.  Initialize the set "N2" to include all 2-hop neighbors, excluding
       "n0" and any routers in "N1".  Nodes that are only reachable via
       "N1" routers with router priority values of NEVER are also
       excluded.

   4.  For each interface "y" in "N1", initialize a set "N2(y)" to
       include any interfaces in "N2" that are 1-hop neighbors of "y".

   5.  For each interface "x" in "N1" with a router priority value of
       "ALWAYS" (or using the CF relay algorithm), select "x" as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

   6.  For each interface "z" in "N2", initialize the set "N1(z)" to
       include any interfaces in "N1" that are 1-hop neighbors of "z".

   7.  For each interface "x" in "N2" where "N1(x)" has only one member,
       select "x" as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2" and
           delete "N1(z)".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

   8.  While "N2" is not empty, select the interface "x" in "N1" with
       the largest router priority that has the number of members in
       "N_2(x)" as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

Corrected Text
--------------
  1.  Initialize the set "MPR" to empty.

   2.  Initialize the set "N1" to include all 1-hop neighbors of "n0".

   3.  Initialize the set "N2" to include all 2-hop neighbors, excluding
       "n0" and any routers in "N1".  Nodes that are only reachable via
       "N1" routers with router priority values of NEVER are also
       excluded.

   4.  For each interface "y" in "N1", initialize a set "N2(y)" to
       include any interfaces in "N2" that are 1-hop neighbors of "y".

   5.  For each interface "x" in "N1" with a router priority value of
       "ALWAYS" (or using the CF relay algorithm), select "x" as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

   6.  For each interface "z" in "N2", initialize the set "N1(z)" to
       include any interfaces in "N1" that are 1-hop neighbors of "z".

   7.  For each interface "w" in "N2" where "N1(w)" has only one member, "x",
       select "x" as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

   8.  While "N2" is not empty, select the interface "x" in "N1" with
       the highest router priority [break ties in favor of the node with the 
       largest number of members in "N_2(x)"] as an MPR:

       A.  Add "x" to the set "MPR" and remove "x" from "N1".

       B.  For each interface "z" in "N2(x)", remove "z" from "N2".

       C.  For each interface "y" in "N1", remove any interfaces in
           "N2(x)" from "N2(y)".

Notes
-----
There are three changes:

On line 7, the first and second occurrences of x are replaced by w, and then x is given as the name of the sole member of N1(w).

On line 7B, the phrase 'delete "N1(z)" is dropped to be consistent with the rest of the algorithm.

On line 8 some rewording is done for clarification.

This errata prepared in consultation with Justin Dean and Gus Macker.

Instructions:
-------------
This errata is currently posted as "Reported". If necessary, please
use "Reply All" to discuss whether it should be verified or
rejected. When a decision is reached, the verifying party (IESG)
can log in to change the status and edit the report, if necessary. 

--------------------------------------
RFC6621 (draft-ietf-manet-smf-14)
--------------------------------------
Title               : Simplified Multicast Forwarding
Publication Date    : May 2012
Author(s)           : J. Macker, Ed.
Category            : EXPERIMENTAL
Source              : Mobile Ad-hoc Networks
Area                : Routing
Stream              : IETF
Verifying Party     : IESG

---

From: Abdussalam Baryun <[email-masked]>
Date: Tue, 26 Feb 2013 14:15:24 +0000

Hi Editors of RFC6621 or Errata reporter,

Could you inform us why is this errata now posted, I need to discuss with
you to understand,

AB

On Tue, Feb 26, 2013 at 1:23 PM, RFC Errata System <
[email-masked]> wrote:

> On line 7, the first and second occurrences of x are replaced by w, and
> then x is given as the name of the sole member of N1(w).
>
> _______________________________________________
> manet mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/manet
>

---

From: Joe Macker <[email-masked]>
Date: Tue, 26 Feb 2013 09:28:06 -0500

Because it corrects an error in the MPR pseudocode appendix B.
We like and encourage errata.

I have approved this and Justin Dean helped provide replacement text.
I wish to thank Errol and his team for providing this. 

Our prototype code tends to use Appendix A so this does not affect any working prototype that I know of.

-joe

On Feb 26, 2013, at 9:15 AM, Abdussalam Baryun <[email-masked]> wrote:

> Could you inform us why is this errata now posted, I need to discuss with you to understand,
>  
> AB
> 
> On Tue, Feb 26, 2013 at 1:23 PM, RFC Errata System <[email-masked]> wrote:
>

---

From: Abdussalam Baryun <[email-masked]>
Date: Tue, 26 Feb 2013 15:05:06 +0000

Hi Joe,

do you mean approaved as that there is no need to review and discuss this
errata. Just wnat to be sure if chair approaved I will not go into checking
further,

Regards

AB

---

From: Justin Dean <[email-masked]>
Date: Tue, 26 Feb 2013 10:21:09 -0500

Thank you for finding and posting the errata.  The errata fixes an error
and I approve of the change.  I would like to encourage others to look over
the psuedo code and verify the correctness of the fix and correctness in
general. Lets measure twice and cut once.

Justin

Notes

---

From: "Adrian Farrel" <[email-masked]>
Date: Thu, 28 Feb 2013 17:44:09 -0000

Hi working group,
 
I am trying to understand the status of Appendix B in 6621.
I interpret it as a normative definition of an algorithm that is a suggested
algorithm that could be used.
 
I agree that all of these changes are of the nature of errata fixes of a
technical nature. That is, they are editorial errors that make the technical
content debatable or unclear.
 
It sounds to me that there is general agreement that the changes are good.
 
Thanks,
Adrian

From: Justin Dean [mailto:[email-masked]] 
Sent: 26 February 2013 15:21
To: RFC Errata System
Cc: [email-masked]; [email-masked]; [email-masked];
[email-masked]; [email-masked]; [email-masked]
Subject: Re: [manet] [Technical Errata Reported] RFC6621 (3499)
 
Thank you for finding and posting the errata.  The errata fixes an error and I
approve of the change.  I would like to encourage others to look over the psuedo
code and verify the correctness of the fix and correctness in general. Lets
measure twice and cut once.

Justin
Notes
-----
There are three changes:

On line 7, the first and second occurrences of x are replaced by w, and then x
is given as the name of the sole member of N1(w).

On line 7B, the phrase 'delete "N1(z)" is dropped to be consistent with the rest
of the algorithm.

Instructions:
-------------

---

From: Thomas Heide Clausen <[email-masked]>
Date: Thu, 28 Feb 2013 19:12:41 +0100

Having looked at the errata in some detail, and on my implementation of that bit of 6621, I note (with smug self-satisfaction?) that I'd implemented what the errata recommends, even though my code was based on the original specification.

I therefore agree with Justin that it's an error that should be fixed - and with Adrian that it's more of an editorial error, and certainly not a change of an algorithm.

Thomas

On Feb 28, 2013, at 18:44 , "Adrian Farrel" <[email-masked]> wrote:

> I interpret it as a normative definition of an algorithm that is a suggested algorithm that could be used.
>  
> I agree that all of these changes are of the nature of errata fixes of a technical nature. That is, they are editorial errors that make the technical content debatable or unclear.
>  
> Cc: [email-masked]; [email-masked]; [email-masked]; [email-masked]; [email-masked];[email-masked]
> Thank you for finding and posting the errata.  The errata fixes an error and I approve of the change.  I would like to encourage others to look over the psuedo code and verify the correctness of the fix and correctness in general. Lets measure twice and cut once.
> 
> Justin
> 
> Notes
> -----
> There are three changes:
>

---

From: Abdussalam Baryun <[email-masked]>
Date: Thu, 28 Feb 2013 22:47:16 +0100

Hi Adrian

I agree with you, but want to know your suggestion to fix an error,
because I may not be with agreement with that it is good, because as
you said debatable/confused,

AB

---

From: Abdussalam Baryun <[email-masked]>
Date: Thu, 28 Feb 2013 22:49:10 +0100

On 2/28/13, Thomas Heide Clausen <[email-masked]> wrote:
> Having looked at the errata in some detail, and on my implementation of that
> bit of 6621, I note (with smug self-satisfaction?) that I'd implemented what
> the errata recommends, even though my code was based on the original
> specification.
>
> I therefore agree with Justin that it's an error that should be fixed - and
> with Adrian that it's more of an editorial error, and certainly not a change
> of an algorithm.

There are many ways to fix errors is errata the only way of fixing
errors in IETF,

AB

>> technical nature. That is, they are editorial errors that make the
>> technical content debatable or unclear.
>>
>> [email-masked]; [email-masked];[email-masked]
>> and I approve of the change.  I would like to encourage others to look
>> over the psuedo code and verify the correctness of the fix and correctness
>> in general. Lets measure twice and cut once.
>>
>> Justin
>>
>> Notes
>> -----
>> There are three changes:
>>

---

From: Joe Macker <[email-masked]>
Date: Thu, 28 Feb 2013 19:41:10 -0500

Thomas:

Thanks its good to have an OLSR-MPR community double-check of Appendix B as our running prototype uses App A more typically.  The intention to have the suggested algorithm pseudocode in the Appendices and in this case it was an editorial error . 

-Joe

---

From: Abdussalam Baryun <[email-masked]>
Date: Fri, 1 Mar 2013 04:18:33 +0100

The *x* in the line 7 is different to others, it was interface, then
became memebr of an interface,

AB>edit> replace *x* in 7 to *n*

(still not complete the review check of RFC6621, this thread does not
include a last date for review)
AB

On 2/26/13, RFC Errata System <[email-masked]> wrote:
> On line 7, the first and second occurrences of x are replaced by w, and then
> x is given as the name of the sole member of N1(w).
>

---

From: Abdussalam Baryun <[email-masked]>
Date: Fri, 1 Mar 2013 05:42:41 +0100

>        C.  For each interface "y" in "N1", remove any interfaces in

AB>edit>
  7.  For each interface "w" in "N2" where "N1(w)" has only one member,
       "n",  select "n" as an MPR:

        A.  Add "n" to the set "MPR" and remove "n" from "N1".

        B.  For each interface "z" in "N2(w)", remove "z" from "N2".

        C.  For each interface "y" in "N1", remove all interfaces in
            "N2(w)" from "N2(y)".

In your errata proposal for the point 7-C please advise do you mean
*any* or *ALL*, because any may mean one only but all is a must for
all that are in N2(w) to be removed. I think you mean all,

Please discuss, or advise,

AB