Subject: [RTG-DIR] RtgDir review:draft-ietf-ccamp-assoc-info-03.txt

From: John E Drake <[email-masked]>
Date: Mon, 14 May 2012 07:13:25 -0700

Hello, 

I have been selected as the Routing Directorate reviewer for this draft. The Routing Directorate seeks to review all routing or routing-related drafts as they pass through IETF last call and IESG review, and sometimes on special request. The purpose of the review is to provide assistance to the Routing ADs. For more information about the Routing Directorate, please see http://www.ietf.org/iesg/directorate/routing.html 

Although these comments are primarily for the use of the Routing ADs, it would be helpful if you could consider them along with any other IETF Last Call comments that you receive, and strive to resolve them through discussion or by updating the draft. 

Document: draft-ietf-ccamp-assoc-info-03.txt 
Reviewer: John Drake 
Review Date: 14-May-2012 
Intended Status: Informational 

Summary: 

No issues found. This document is ready for publication.

Comments: 

This document is clearly written and easy to understand, albeit geared towards the lay reader.

Major Issues: 

No major issues found.

Minor Issues: 

No minor issues found.

Sent from my iPhone

---

From: Eric Gray <[email-masked]>
Date: Fri, 25 May 2012 14:17:38 -0400

Hello, 

Document: draft-ietf-mpls-ldp-gtsm-06.txt 
Reviewer: Eric Gray
Review Date: 25-May-2012 
Intended Status: Standard 

Summary: 

No major issues found. This document is essentially ready for publication.

Comments: 

This document is mostly clearly written and easily understood.

Major Issues: 

No major issues found.

Minor Issues: 
============

Because this draft defines only a new bit assignment as an update to RFC 5036, it 
would have been cleaner to have only included the flags field as shown here:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|T|R|G|   Reserved              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

To maintain readability, the draft should still say where this field is (that it
is part of the Common Hello Parameter TLV).  

In addition, since the definitions of T and R are exactly as given in RFC 5036,
the text that currently repeats the definitions for T and R could better have 
been written as:

"T and R
   As specified in [RFC5036]."

This way of representing the changes makes it clearer what the actual changes
are.  However, this is a very minor issue.
_________________________________________________________________________________

I am curious why the text under Figure 1 explicitly includes the possibility that 
an LSR might implement GTSM capability negotiation but not implement GTSM.  But, 
again, this is a very minor issue.
_________________________________________________________________________________

NITs:
====

In the abstract, "packets" should be "packet's."

First sentence, first paragraph under Figure 1 - "meaingful" should be "meaningful."

Second sentence, second paragraph under Figure 1 - "but that it does not" should be
"but that does not."

--
Eric Gray

---

From: Eric Gray <[email-masked]>
Date: Fri, 25 May 2012 16:04:54 -0400

When I said it would be "cleaner", it was because your draft doesn't modify
the rest of the TLV.

As a general rule, it is "cleaner" not to include anything that you are not
modifying (beyond whatever you believe is minimal acceptable context).

If some later draft were to come along and modify - or extend - some
other part of the TLV, the issue would then be - does this later document
update this one, or RFC 5036?

That could lead to a mess.  Which is pretty much what it means not to
be "clean."

However, it doesn't seem terribly likely that someone else is going to alter
another part of this TLV, so this is largely theoretical, and a minor issue.

As a secondary factor, the fact that you repeated the entire TLV meant
that there were just that many other bits I had to make sure you didn't
"typo" in some way, or make other (un)intended changes to.

>From a point of view of readability, it should be relatively clear to anyone
implementing these changes to their LDP implementation, where the flags
field is in the modified TLV.  In fact, I suspect that - if you just showed the
flags field, this would make the meaning clearer and easier to implement
to many readers.

And this too is a minor issue.  For one thing, it is a matter of opinion.  As
I mentioned in my other reply, it's okay with me if you don't want to adopt
any of the changes implied in my comments.

On your paraphrasing the quote about a picture being worth a thousand
words, the jury's still out on just how true that is.  Different people think
and comprehend in different ways.  For me, a picture is worthless unless
the words are there to explain it.

--
Eric

________________________________
From: Carlos Pignataro [mailto:[email-masked]]
Sent: Friday, May 25, 2012 2:46 PM
To: Eric Gray
Cc: [email-masked]; BRUNGARD, DEBORAH A; [email-masked]; [email-masked]
Subject: Re: RtgDir review:draft-ietf-mpls-ldp-gtsm-06.txt
Importance: High

Eric,

Thanks much for your review! Please see inline.

On May 25, 2012, at 2:17 PM, Eric Gray wrote:

Hello,

Summary:

Sounds good.

Comments:

Thanks. Is the "mostly" qualifying clearly written, easily understood, or both? :-) Where is specifically not? It seems the nits you bring up below are not clarifying meaning.

Major Issues:

No major issues found.

Minor Issues:
============

Thank you for this suggestion. I feel however that furthering the packet context in which the bits reside adds much more to the clarity and removes ambiguity than this proposal. That is, the whole TLV in a figure is more clear than just 3 bits and a reserved without insertion point, and the figure exactly as from the RFC it is updating (RFC 5036) module the updated bit is more unambiguous and easier to find.

A figure is worth how many words? :-)

"T and R

Sure we could take the common denominator out, but the current form of the definition has more symmetry and rhyme while not wasting too many extra lines...

    T, Targeted Hello
       As specified in [RFC5036<http://tools.ietf.org/html/rfc5036>].

    R, Request Send Targeted Hellos
       As specified in [RFC5036<http://tools.ietf.org/html/rfc5036>].

    G, GTSM

...

Perhaps clarity is relative. I feel that including the contextual fields graphically is more clear than describing it with words, and keeping a per-field list element seems more clear.

In any case I appreciate you taking the time to comment on this and proposing an alternate representation of those few lines.

Do you mean the text immediately underneath Figure 1, or the last paragraph of Section 2.1? If the latter, this is based on an mpls wg review (Adrian's IIRC), which separates the support for GTSM from the understanding of the G bit. While I agree with you, I think the current text is OK because it is unambiguous and complete.

Thanks also for pointing this out. I do not expect this will be the case but covering the base.

NITs:
====

Agreed. Changed in my working copy.

Wow, great catch! I thought I'd run idspell on this...

Yes. Done in my working copy.

Thanks again for this review!

-- Carlos.

--
Eric Gray

---

From: Eric Gray <[email-masked]>
Date: Fri, 25 May 2012 16:04:50 -0400

It was the second sentence of the second paragraph under Figure 1:

"                               Similarly, an LSR that does recognize
   the G flag but that it does not support GTSM (either because it is
   not implemented, or because it is so configured), would clear the G
   flag (i.e.,g G=0) on send and would effectively ignore the G flag on
   receipt."

One of the cases for "not support" of GTSM - explicitly included - is
the case where an implementation recognizes the G flag (implements at
least this much of the negotiation), but does not implement GTSM.

It struck me as odd, because GTSM does not seem to be hard to do, and
we're talking about control plain activities for both the negotiation
and the subsequent message processing.

It's a very minor issue, because this case could have been implicitly
included without begging this question, if worded differently.  The
thing that triggered this for me was the choice of the words "not
supported" (to me, if you have to configure an LSR to _not_ do some
function, the LSR supports that function, but it is disabled).

I am fine (as is implicit in my saying that the draft is ready to be
published) with not making any changes.  The NITs can be added to the
instructions to the RFC Editor by the IESG.  My other comments are to
deal with or not deal with at the discretion of the IESG and authors.

--
Eric

-----Original Message-----
From: Rajiv Asati (rajiva) [mailto:[email-masked]] 
Sent: Friday, May 25, 2012 2:46 PM
To: Eric Gray; [email-masked]; BRUNGARD, DEBORAH A
Cc: [email-masked]; [email-masked]
Subject: RE: RtgDir review:draft-ietf-mpls-ldp-gtsm-06.txt
Importance: High

Hi Eric,

Thank you so much for your review.

I agree to the nits and

> I am curious why the text under Figure 1 explicitly includes the
possibility
> that an LSR might implement GTSM capability negotiation but not
> implement GTSM.  But, again, this is a very minor issue.

Could you paste the para that you are referring to? I see the following
text under Figure 1:

   The G flag is meaingful only if the T flag is set to 0 (which must be
   the case for Basic Discovery), otherwise, the value of G flag SHOULD
   be ignored on receipt.

But I don't think that this is the text you refer to. Any way, Does the
note below (PS:) help?

> To maintain readability, the draft should still say where this field
is (that it is
> part of the Common Hello Parameter TLV).
> This way of representing the changes makes it clearer what the actual
> changes are.  However, this is a very minor issue.

I am divided on this one. I like having the complete TLV illustrated,
otherwise, I would no longer get the complete picture of the TLV itself.

Cheers,
Rajiv

PS: Perhaps, we could update the 2nd last para of the Section 1
introduction as shown below to clarify the rationale:

   "Since" GTSM [RFC5082] specifies that "it SHOULD NOT be enabled by
default in order to
   remain backward-compatible with the unmodified protocol" (see Section
   3 of [RFC5082]), this document maintains the backward compatibility
by
   including  a dynamic GTSM negotiation for LDP to suggest the use of
GTSM 
   (without relying on LDP Capabilities [RFCxxxx]).  This means that
GTSM
   will be used as specified in this document provided both peers on an
   LDP session can detect each others' support for GTSM procedures and
   agree to use it.  That is, the desire to use GTSM (i.e., its
   negotiation mechanics) is enabled by default.

> -----Original Message-----
> From: Eric Gray [mailto:[email-masked]]
> Sent: Friday, May 25, 2012 2:18 PM
> To: [email-masked]; BRUNGARD, DEBORAH A
> Cc: [email-masked]; [email-masked]
> Subject: RtgDir review:draft-ietf-mpls-ldp-gtsm-06.txt
> 
> 
> Hello,
> 
> I have been selected as the Routing Directorate reviewer for this
draft. The
> Routing Directorate seeks to review all routing or routing-related
drafts as
> they pass through IETF last call and IESG review, and sometimes on
special
> request. The purpose of the review is to provide assistance to the
Routing
> ADs. For more information about the Routing Directorate, please see
> http://www.ietf.org/iesg/directorate/routing.html
> 
> Although these comments are primarily for the use of the Routing ADs,
it
> would be helpful if you could consider them along with any other IETF
Last
> Call comments that you receive, and strive to resolve them through
> discussion or by updating the draft.
> 
> Because this draft defines only a new bit assignment as an update to
RFC
> 5036, it would have been cleaner to have only included the flags field
as
> shown here:
> To maintain readability, the draft should still say where this field
is (that it is
> part of the Common Hello Parameter TLV).
> 
> This way of representing the changes makes it clearer what the actual
> changes are.  However, this is a very minor issue.
> I am curious why the text under Figure 1 explicitly includes the
possibility
> that an LSR might implement GTSM capability negotiation but not
> implement GTSM.  But, again, this is a very minor issue.
> Second sentence, second paragraph under Figure 1 - "but that it does
not"
> should be "but that does not."
> 
> --
> Eric Gray
>

---

From: "Rajiv Asati (rajiva)" <[email-masked]>
Date: Fri, 25 May 2012 13:45:32 -0500

Hi Eric,

I agree to the nits and

possibility

is (that it is

Cheers,
Rajiv

draft. The
drafts as
special
Routing
it
Last
RFC
as
is (that it is
possibility
not"

---

From: Carlos Pignataro <[email-masked]>
Date: Fri, 25 May 2012 14:46:09 -0400

Eric,

Sounds good.

    T, Targeted Hello
       As specified in [RFC5036].

    R, Request Send Targeted Hellos
       As specified in [RFC5036].

    G, GTSM
...

-- Carlos.

---

From: "Carlos Pignataro (cpignata)" <[email-masked]>
Date: Fri, 25 May 2012 16:27:39 -0400

Thanks again for your review. 

Thumb typed by Carlos Pignataro.
Excuze typofraphicak errows

---

From: Carlos Pignataro <[email-masked]>
Date: Mon, 28 May 2012 11:28:53 -0400

Eric,

You are bringing up a real problem that we have not solved. Perhaps mostly theoretical, in theory, but real nonetheless -- though, in practice, I have seen this become an issue in other protocols. Thank you.

I have first-hand appreciation for the problem space you are describing, so I wanted to close the loop and follow-up with this response.

Hopefully this response is helpful and useful -- perhaps we can even take an action or two from it.

There are two dimensions: one generic and one specific to the I-D you are reviewing. And I believe that your proposed solution is wrong, both in the generic and specific cases.

Generic:

Clearly there is a potential race condition on a set of bits marked as "Reserved" / MBZ, that do not have an assignment strategy/rule -- agreed. Like you say (or imply), using RFC metadata like "Updates", etc is not a solution, it is a patch.

However, I strongly believe that narrowcasting and constraining the context of a figure is not the solution either. RFC definitions should be "as simple as possible, but NOT simpler", and removing relevant and useful context is not substitute for lack of bit governance.

I believe that the real solution is to have a central single source of truth for the definitions, appropriate pointers, and explicit and well defined allocation strategies. All of these requirements are already solved with IANA providing that service. To me, the real problem is that these Reserved bits are not managed by IANA.

The issue is not trivial, however, because (as Adrian had pointed out), those consecutive bits are not typedef'ed (i.e., they could be a bit-field, or a 16-bit unsigned integer field and some extra bits, 3 independent fields, or...)

To be honest, the same can happen with any field already assigned and not only Reserved -- which is I believe part of the point you are making. It has happened already (having a "Type" field, and then "borrowing" the most-significant bit to use it as "Mandatory" vs. "Optional" TLV) -- but it is even less likely than a collision on an unassigned set of bits. The "Reserved" is more "problematic" than existing fields.

Because unless we only copy the field itself alone, there will always be context, and it is rather arbitrary to set the context on a 16-bit short -- so the natural context (i.e., the context from the place being updated) is most useful.

I believe (although I could argue either way of this, and I do not think it could be "won" since both sides of the argument can hold) that the right approach is to reserve and manage via IANA -- existing fields, values, bitfields, but also Reserved bits.

In fact, we had started down this road -- doing "community service" with this I-D http://tools.ietf.org/html/draft-ietf-mpls-ldp-iana-01 but there was discussion around whether it was the right thing to manage Reserved fields (as a set of bits) because they could be assigned with a different field type (bitfield, integer of different sizes, etc), and "typecasting" a IANA definition was considered odd.

In retrospect, perhaps it is not off to Reserve the Reserved field in IANA and centralize the definition.

Specific to draft-ietf-mpls-ldp-gtsm:

In the specific case of this bit being assigned from Reserved in this particular TLV, draft-ietf-mpls-ldp-gtsm uses:

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |0|0| Common Hello Parms(0x0400)|      Length                   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |      Hold Time                |T|R|G|   Reserved              |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

And I believe this is the best choice because it is the closest to the Figure from the RFC that it is updating -- it is the natural boundary. Basically this is the same figure used in RFC 5036, so it maximizes the graphical correlation and context. http://tools.ietf.org/html/rfc5036#section-3.5.2

From this, "0|0" is unlikely to change unless there is a major LDP ginormous change, the type 0x0400 won't change because it is the Type, the Length won't change (as the field that it is, and also as the value), then we have "Hold Time" (most unlikely to change again).

Conversely, you propose we use:

And I believe this is wrong on quite a number of reasons. First, because it shifts alignment in the 32-bit word, basically defeating the Principle of Least Astonishment removing the graphical anchor. Second, because the fields that it is not including are the ones that (in practice) will not change!, Third, because an implementor will have much more trouble correlating this to where it is coming from in RFC 5036, especially a visual one :-)

And fourth and last, because it still includes the "Reserved" which is the one that could most likely be assigned (in other RFC in parallel, in the future, etc...

Even when a reviewer needs to "check I did not typo bits" -- thank you for that :-)

My perspective is that we would not gain anything and we would loose at least those 3 points. In fact, that it would be a lot "messier" and much "less clean" to over-trim the figure from what's in RFC 5036.

And the alternative, which is where the logic you present is leading me, is to define the bit as in RFC 3514 :-) http://tools.ietf.org/html/rfc3514#section-2

   The G-bit is laid out as follows:

             0
            +-+
            |G|
            +-+

Moreover, we started this trying to do what we considered was the right thing http://tools.ietf.org/html/draft-ietf-mpls-ldp-iana-01#section-2.3 but abandoned this approach.

Thanks,

-- Carlos.