Re: [CCAMP] Alia Atlas' Discuss on draft-ietf-ccamp-wson-signal-compatibility-ospf-15: (with DISCUSS and COMMENT)

"Adrian Farrel" <adrian@olddog.co.uk> Sat, 22 August 2015 08:06 UTC

Return-Path: <adrian@olddog.co.uk>
X-Original-To: ccamp@ietfa.amsl.com
Delivered-To: ccamp@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3C0F71A1A28; Sat, 22 Aug 2015 01:06:22 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -102.6
X-Spam-Level:
X-Spam-Status: No, score=-102.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, USER_IN_WHITELIST=-100] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id qlzlKvjIxtDb; Sat, 22 Aug 2015 01:06:19 -0700 (PDT)
Received: from asmtp4.iomartmail.com (asmtp4.iomartmail.com [62.128.201.175]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 5B4311A1A25; Sat, 22 Aug 2015 01:06:18 -0700 (PDT)
Received: from asmtp4.iomartmail.com (localhost.localdomain [127.0.0.1]) by asmtp4.iomartmail.com (8.13.8/8.13.8) with ESMTP id t7M867sJ005277; Sat, 22 Aug 2015 09:06:07 +0100
Received: from 950129200 (host86-158-195-208.range86-158.btcentralplus.com [86.158.195.208]) (authenticated bits=0) by asmtp4.iomartmail.com (8.13.8/8.13.8) with ESMTP id t7M863Zc005245 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Sat, 22 Aug 2015 09:06:04 +0100
From: Adrian Farrel <adrian@olddog.co.uk>
To: 'Alia Atlas' <akatlas@gmail.com>, 'Leeyoung' <leeyoung@huawei.com>
References: <20150805144646.28443.8959.idtracker@ietfa.amsl.com> <7AEB3D6833318045B4AE71C2C87E8E1729CFC2DF@dfweml706-chm> <CAG4d1rfUX1F8K6m4ZpXyPw0M9RsjAMXiZPbBR8=Ra_bWRREP4A@mail.gmail.com>
In-Reply-To: <CAG4d1rfUX1F8K6m4ZpXyPw0M9RsjAMXiZPbBR8=Ra_bWRREP4A@mail.gmail.com>
Date: Sat, 22 Aug 2015 09:05:59 +0100
Message-ID: <04e201d0dcb1$63e79d70$2bb6d850$@olddog.co.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
X-Mailer: Microsoft Outlook 14.0
Thread-Index: AQJGiOoCTbvI+KDzwOuPTLbgiDMrVwI19Ob3AiM8pgudCPAnQA==
Content-Language: en-gb
X-TM-AS-MML: disable
X-TM-AS-Product-Ver: IMSS-7.1.0.1576-8.0.0.1202-21762.006
X-TM-AS-Result: No--14.077-10.0-31-10
X-imss-scan-details: No--14.077-10.0-31-10
X-TMASE-MatchedRID: gTucSmrmRMM4HKI/yaqRm2Oho7buv7d9OL9BEHibhsjI9BHsOEzeNlkx R/OK+HA0EaA7SdILLBvc+GzAXHsIKbsl8Gv1eXkKA9lly13c/gGimsR6hkcJAueU0qFv58B+60I nmCj1qOoSFHd9tJycAIGUaOK2n+sPJgtTbqElyRTi89aONG8iKgd69MZPe4GIhc+Jw4LMtcBp7t +5+RfYobbqRldgtTjm2FVivMJrC+2WHmpvkeKJBw6uUGRBr2oWecvjbu/xDjq638ZUY6gSd5tjP SOeBAIl7Xbhm0sUHMsqj/E8b5Bu1/eCv1PcqE/eJhFEQZiq2ZQdQSyPGb6mCKMP1fF+gQ2OsJC4 m2jcjnzHiGg/yEiWpMEIbc+GB1aoD+ZG9KyphXvtMsi+dai/0SQqzcugG1CVzqRt7c+pPcb+tnM vnQl+U5U46K57hZUBX7VX/Yyk1YMIQwzua5lqh6MVgdN9w+TChEIiqNvBrmN/R/SY61LJmdRb4O hNFOr/bM0JC/QHjhEO9slFsHV56PcMVA6lpwYUliwpJdZauwdbNiJexDPcJFj/amLs8rQSauXyr uKKShHK3U+bH0vdbPBsyImjyVR8+Nxfk0bDLGkyByMiwk6+3n4rryovYbmmCVuEXtlNqcubJxj/ y/77pAfv9ZZfs4epu2VgLGzqKuElO3FWVopgW2ZUc2jtcaSdiXPf/NTPc3KbKItl61J/ybLn+0V m71Lcq7rFUcuGp/EgBwKKRHe+r3WQWgLrjb3jt3zbJxiC0w0SByzcnp1h4hosffNDHhAUhlWRYE +DWsc=
Archived-At: <http://mailarchive.ietf.org/arch/msg/ccamp/TR_755cJbfGcNhbu03Xge1LR_CY>
Cc: draft-ietf-ccamp-wson-signal-compatibility-ospf@ietf.org, ccamp@ietf.org, ccamp-chairs@ietf.org, 'The IESG' <iesg@ietf.org>
Subject: Re: [CCAMP] Alia Atlas' Discuss on draft-ietf-ccamp-wson-signal-compatibility-ospf-15: (with DISCUSS and COMMENT)
X-BeenThere: ccamp@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
Reply-To: adrian@olddog.co.uk
List-Id: Discussion list for the CCAMP working group <ccamp.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/ccamp>, <mailto:ccamp-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/ccamp/>
List-Post: <mailto:ccamp@ietf.org>
List-Help: <mailto:ccamp-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/ccamp>, <mailto:ccamp-request@ietf.org?subject=subscribe>
X-List-Received-Date: Sat, 22 Aug 2015 08:06:22 -0000

Hi Young, Alia,

>>> I'd like to see clearer descriptions on particularly the error-handling
>>> around multiple TLVs and sub-TLVs.
>>> I see a few points of ambiguity - as described below.  I think these
>>> should be straightforward to clarify but interoperability could be 
>>> affected if this isn't done.   Thanks!
>>>
>>> In Sec 2, it says "Only one Optical Node Property TLV shall be advertised
>>> in each LSA." What is the error-handling if multiple of this TLV are
>>> seen?
>>
>> YOUNG>> This is to allow for fine granularity changes in topology per
>> [RFC3630]. It is not an error per se if there are multiple of this TLV are
>> in each LSA.
>>
>>> Is that a SHALL or a "at most one... MUST be advertised"?  I'd expect
>>> normative language.
>>
>> YOUNG>> "SHALL" seems to be right one, again per [RFC3630].
>>
> [Alia] Ok - SHALL is fine.  Perhaps text like 
> "To allow for fine granularity changes in topology, only one Optical Node
> Property TLV SHALL be advertised in each LSA.  An implementation MUST
> support receiving multiple Optical Node Property TLVs in an LSA."

Sorry, but I think this reads as nonsense :-(
"SHALL" and "MUST" are identical in meaning.
So you have written "only one TLV MUST be advertised". That is ambiguous!
It could mean "no more than one" or it could mean "it is only necessary to advertise one must, but others may be included"
The thrust of the conversation appears to be for the latter, so don't try to do this in clever compact code - write it out in full!

That might give (if it is what you intend to say)...

When using the extensions defined in this document, at least one Optical Node Property TLV MUST be advertised in each LSA. To allow for fine granularity changes in topology, more than one Optical Node Property TLV MAY be advertised in a single LSA. Implementations MUST support receiving multiple Optical Node Property TLVs in an LSA.

[snip]

>> May I suggest the following changes:
>>
>> OLD
>>
>>   The format of the SCSI MUST be as depicted in the following figure:
>>
>> NEW
>>
>>    The format of the SCSI SHALL be as depicted in the following figure:
>>
>> END

These sentences are identical! MUST==SHALL

So Alia's text is nicer...

> [Alia] How about "A SCSI may contain multiple Available Label sub-TLVs and 
> multiple Shared Backup Label sub-TLVs.  The following figure shows the 
> format for a SCSI that contains these sub-TLVs.  The order of the sub-TLVs
> in the SCSI is arbitrary."

[snip]
 
>>> End of Sec 4: "In case where the new sub-TLVs or their attendant
>>> encodings are malformed, the proper action would be to log the problem
>>> and ignore..."  First, please be explicit in what behavior MUST be done.

I think this request got lost in the discussions that follow. Alia is correctly asking for...

"When bad stuff happens you MUST do some things, SHOULD do other things, and MAY do additional things."

>> YOUNG>> malformed sub-TLVs or their attendant encodings refer to that which are
>> not parse-able due to corruption, etc. and cannot be stored in the TED.

Hmmm. The most common cause of unparsable TLVs will be encoding errors, bugs, misinterpretation of specs, up-level implementations, etc. Corruption doesn't happen much.
The upshot is the same - you can't process the TLV.

>> How about adding a new sentence to describe the expected action as follows:
>>
>> OLD
>>
>>   In case where the new sub-TLVs or their attendant encodings are
>>   malformed, the proper action would be to log the problem and ignore
>>   just the sub-TLVs in GMPLS path computations rather than ignoring
>>   the entire LSA.
>>
>> NEW
>>
>>   In case where the new sub-TLVs or their attendant encodings are
>>   malformed, the proper action would be to log the problem and ignore
>>   just the sub-TLVs in GMPLS path computations rather than ignoring
>>   the entire LSA. This should not stop the LSA advertisement process.
>
> [Alia] Usually, one doesn't reflood LSAs with malformed TLVs or sub-TLVs. 
> I'm certainly willing to listen to reasoning on why flooding potentially corrupt
> data would be a good idea, but you'll need really clear reasoning.

Why is this any different to any other TLV in any other LSA? Don't we just call on standard OSPF behavior?

>>> Is this just for malformed sub-TLVs?  Is it safe to assume that sub-TLVs
>>> further on in the TLV (or following TLVs) can be properly parsed?
>>
>> YOUNG>> Yes we are just talking about malformed sub-TLVs. It is safe to assume
>> that other sub-TLVs in the TLV or following TLVs can be properly parsed as they
>> are a distinct sets of info elements with proper sub-TLV types, TLV types.
>
> [Alia]  Are you picturing that a sub-TLV is malformed if its length isn't accurate or just
> if one of the fields inside the sub-TLV is using a bad value or setting a reserved value?
>  In the latter cases, perhaps it might be tolerable to assume that there wasn't data-
> corruption that will affect the rest of the parsing - but I'm dubious.   For the first, if
> the length is wrong, then you can't accurately know where the next sub-TLV starts
> so all parsing after isn't trustable, IMHO. 

I think you have to handle both cases. Furthermore, if the TLV is of variable length, anything unexpected needs to be treated with caution.

>>> Second, please add in some words
>>> about the expected load of logs.
>>
>> YOUNG>> How about adding one sentence followed by "In case..."
>>
>> NEW
>>        The expected load of logs is not expected to be a high volume as malformed
>>        TLVs do not occur frequently in GMPLS.
>>
>> END
>
> [Alia] Uh - of course error conditions aren't expected to be common!  How
> about considering how often the advertising router might send the LSA? 
> How about considering the number of neighbors that will be flooding it?
> How about dampening the number of logs?  Making it a MAY log also makes
> it clear that it's up to the implementation.

The normal way of handling this is...
"Errors of this nature SHOULD be logged for the local operator. Implementations MUST provide a rate limit on such logs, and that rate limit SHOULD be configurable."

Adrian