Subject: Re: [Tsv-art] [manet] Tsvart last call review of draft-ietf-manet-dlep-multi-hop-extension-06

From: Bob Briscoe <[email-masked]>
Date: Fri, 17 May 2019 21:39:44 +0100

Lou,

On 25/04/2019 16:45, Lou Berger wrote:
> Hi Bob,
> 	Sorry for the late reply. See below for specific responses.
And sry for my longer delay replying...

>
> On 4/9/19 7:22 AM, Bob Briscoe via Datatracker wrote:
>> Reviewer: Bob Briscoe
>> Review result: Ready with Issues
>>
>> This document has been reviewed as part of the transport area review team's
>> ongoing effort to review key IETF documents. These comments were written
>> primarily for the transport area directors, but are copied to the document's
>> authors and WG to allow them to address any issues raised and also to the IETF
>> discussion list for information.
>>
>> When done at the time of IETF Last Call, the authors should consider this
>> review as part of the last-call comments they receive. Please always CC
>> [email-masked] if you reply to or forward this review.
>>
>> AFAICT, there's nothing technically wrong, but I believe the authors use of
>> normative text does not convey the meaning they intended, in nearly every case.
>>   It will be seen below that there seems to be a general misunderstanding of the
>> use of, 'SHOULD do X' when there will never be a case when X should not be
>> done. 'SHOULD' and 'MAY' need to be used judiciously, because they make
>> interoperability harder.
>>
>> ==Inappropriate Normative Text==
>>
>> S.2.
>> "The use of the Multi-Hop Forwarding Extension SHOULD be configurable."
>> {I think you mean it SHOULD be possible to enable/disable the extension?
> To me that's what this says.
[BB] It's just ambiguous. "Configurable" usually means "capable of 
having its settings configured". Yes, "the use of" makes it more likely 
that you mean "the ability to use", but it's just not clearly written.
>
>> On a
>> modem. a router or both?
> yes, by any node that supports the extension.
>
>> In what circumstances would it not be configurable (if
>> none, then MUST would be appropriate)?
> We generally don't stop people from building products that meet their
> specific market requirements as long as there's no interop issue, hence
> the SHOULD vs MUST.> What happens if one device uses the
>> extension and another doesn't? This last question also applies for incremental
>> deployment.}
> This is covered in the base DLEP RFC.
>
>> S.3.1.
>> "The Hop Count Data Item SHOULD be carried in the Destination Up, Destination
>> Update, Destination Announce Response, and Link Characteristics Response
>> messages." {I don't think the use of "SHOULD" here achieves what you intend. I
>> think you're trying to say that this data item can only be carried in these 4
>> messages. But what you've said is that all these messages SHOULD contain a Hop
>> Count data item. If any normative text is needed here, I think it would say
>> this data item MUST NOT be carried in messages other than these 4. But maybe
>> just substitute 'SHOULD' with 'can'?}
>>
> I'd be fine with MAY as this is more aligned with RFC8175 statement of
> what DIs to carry in a message.  This siad, I believe the feeling was
> that MAY was too weak for an extension-specific DI.  Unless there is
> strong objection with this, I'm inclined to leave it with how the WG
> approved it.
[BB] I think you've missed my point, which is about ambiguous meaning of 
sentences, not a technical question.

But before we get to that, there was a prerequisite question about this 
sentence in my editorial nits file. The full sentence said:

    The Hop Count Data Item SHOULD be carried in the Destination Up, Destination
    Update, Destination Announce Response, and Link Characteristics Response
    messages when the Hop Count to a destination is greater than one (1).

My nit question about this sentence was:
"{Does this 'when >1' clause apply to all 4 messages, or just Link 
Characteristic Response messages?}"

You've just ignored this and left the sentence as it was. Did you not 
understand my question? if so, you could have asked.

The grammar of the sentence reads as "The Hop Count Data Item SHOULD be 
carried in the first three message types (whatever the hop count), and 
in the fourth message type (when the hop count is >1). I doubt you meant 
that. If not, the sentence ought to be disambiguated as follows:

    When the Hop Count to a destination is greater than one (1), the Hop
    Count Data Item SHOULD be carried in the Destination Up, Destination
    Update, Destination Announce Response, and Link Characteristics Response
    messages.

Next, let's return to the SHOULD. This means that, even when count > 1, 
it doesn't have to be included in these messages. The next para says:

    The absence of the Hop Count Data Item MUST be interpreted by the
    router as a Hop Count value of one (1).

So, when count > 1, you say it doesn't have to be carried in these 
messages,... so the router will assume it is 1, even tho it isn't. Is 
that what you intended to say? If so, surely you need to say under what 
circumstances a hop count >1 would not be carried in these messages.

It all seems very vague to me.

>
>> S.3.2.
>> The Hop Control Data Item MAY be carried in a Session Update Message sent by a
>> router when the control applies to the whole device, or a Link Characteristics
>> Request Message when the control applies to a particular destination. {Again, I
>> think you're trying to say, "If used, the Hop Control Data Item MUST only be
>> carried in" ...one of these two message types.}
[BB] Actually, perhaps you didn't mean to use normative text at all. 
Perhaps you just meant

    The Hop Control Data Item would be carried in...

>>
>> "A modem that receives the Hop Control Data Item in a [XXX] Message SHOULD take
>> whatever actions are needed to make the change indicated by the data item for
>> [YYY]." (two occurrences) {Inappropriate use of SHOULD: a) Surely a modem MUST
>> "take whatever actions are needed." Why would it not? b) Anyway, it's
>> meaningless to normatively require a vaguely defined action}
[BB] You didn't respond to this point.
>>
>> S.3.2.3 Direction Connection
> this should be Direct Connection
>
>> "It indicates that the modem SHOULD attempt to establish a direct connection
>> with the destination identified in the message." {I think you mean 'MUST'. Why
>> would it not even attempt to?}
>>
> local policy, or that it know that a connection is no longer possible.
>
>> "This action SHOULD only be sent for destinations for which the Hop Count is
>> greater than 1 and has the P-Bit set in the previously received Hop Count Data
>> Item." {I think you mean MUST. Why would it be sent otherwise?}
> A must would translate to a dlep error on the receiving side, which
> would translate to a session reset, which is really disruptive.
[BB] I meant "This action MUST only be sent for destinations for which 
... count >1 & P set ...". I don't think that would cause errors, would it?

Again, my point is about use of English, not technical. I'm picking up 
every case where you say "SHOULD" and working out what exceptions your 
English allows. By using "SHOULD only be sent" rather than "MUST only be 
sent", it allows exceptions to 'only' not to 'sent'. So it means 
"although this action will normally solely be sent for destinations with 
count>1 & P set, it could be sent for other destinations..." which, as 
you say yourself, would cause errors.

I don't think you actually need normative text here anyway. I think you 
used 'SHOULD' because you were trying to say something like: "the action 
can only be sent for destinations with count > 1 & P set (but for those 
destinations the action doesn't have to be sent)."

Or perhaps you really do need normative text here for interop in order 
to avoid dlep errors, and you meant to say: "The action MUST NOT be sent 
for destinations that do not have count>1 & P set ..."

This is all becoming rather painful, 'cos you don't seem to be getting 
that I'm just trying to improve the highly ambiguous English around the 
normative text. However, it's hard 'cos I'm not sure what you were 
trying to mean in the first place.

>
>> S.3.2.4. Suppress Forwarding
>> I suggest that you don't gratuitously switch from 'MUST' to 'SHALL' just for
>> this section? Many implementers search the text for 'MUST'.
>>
>> ==Authentication==
>>
>> S.4.
>> RFC8175 says
>>     'For all "networked deployments" ..., the implementation and use of TLS are
>>     STRONGLY RECOMMENDED.'
>>
>> I believe it would be worth identifying which extensions would be unsafe if TLS
>> were not used. Certainly all the Multi-Hop Extensions would be unsafe if not
>> authenticated.
> umm, I think all of DLEP would be unsafe without TLS, or some other
> equivalent, e.g., macsec.
[BB] Again, you're not grocking that I am questioning the use of 
RECOMMENDED, which is equivalent to SHOULD, and therefore weaker than 
MUST, even with STRONGLY added. (BTW, STRONGLY isn't a normative word 
defined in RFC2119).

If you are only saying STRONGLY RECOMMENDED, you are still saying 
implementers don't have to use TLS. If you really don't want to require 
them to, then it is always best to explain why you are not saying MUST 
(e.g. perhaps to allow for deployments in trusted environments).

>
>> ==General Nits==
>> Inappropriate and/or inconsistent capitalization of certain phrases, like 'Data
>> Item' or 'Action' or 'Message'.
>>
>> ==Specific Nits==
>> I've provided suggested corrections in the following xml files:
>> http://bobbriscoe.net/tmp/draft-ietf-manet-dlep-multi-hop-extension-06_BB.xml
>> http://bobbriscoe.net/tmp/draft-ietf-manet-dlep-multi-hop-extension-06_BB.txt
>> http://bobbriscoe.net/tmp/draft-ietf-manet-dlep-multi-hop-extension-06_BB-DIFF-06.html
On a quick look, I found a couple of nits still:

3.2.4. Suppress Forwarding
s/Impact to destination hop counts are provided to the router by the 
modem as described above./
  /The impact on destination hop counts is provided to the router by the 
modem as described above./
If you didn't mean that, you can't leave the sentence like it is.

Security Considerations:
s/Similar attacks are generally possible base DLEP,/
  /Similar attacks are generally possible in base DLEP,/

> Thanks!
> I've pushed changes to https://github.com/louberger/dlep-extensions and
> will coordinate an update with the AD.
> Lou
Cheers

Bob
>>
>> _______________________________________________
>> manet mailing list
>> [email-masked]
>> https://www.ietf.org/mailman/listinfo/manet
>>

-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/