Re: [Teas] Benjamin Kaduk's Discuss on draft-ietf-teas-yang-te-types-12: (with DISCUSS and COMMENT)

Benjamin Kaduk <kaduk@mit.edu> Wed, 13 November 2019 06:27 UTC

Return-Path: <kaduk@mit.edu>
X-Original-To: teas@ietfa.amsl.com
Delivered-To: teas@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 4D5EE1200E7; Tue, 12 Nov 2019 22:27:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.199
X-Spam-Level:
X-Spam-Status: No, score=-4.199 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 RRg3qnxo6MS2; Tue, 12 Nov 2019 22:27:50 -0800 (PST)
Received: from outgoing.mit.edu (outgoing-auth-1.mit.edu [18.9.28.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E6E14120072; Tue, 12 Nov 2019 22:27:49 -0800 (PST)
Received: from kduck.mit.edu ([24.16.140.251]) (authenticated bits=56) (User authenticated as kaduk@ATHENA.MIT.EDU) by outgoing.mit.edu (8.14.7/8.12.4) with ESMTP id xAD6RhRo019185 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 13 Nov 2019 01:27:46 -0500
Date: Tue, 12 Nov 2019 22:27:43 -0800
From: Benjamin Kaduk <kaduk@mit.edu>
To: Tarek Saad <tsaad.net@gmail.com>
Cc: The IESG <iesg@ietf.org>, "draft-ietf-teas-yang-te-types@ietf.org" <draft-ietf-teas-yang-te-types@ietf.org>, "lberger@labn.net" <lberger@labn.net>, "teas-chairs@ietf.org" <teas-chairs@ietf.org>, "teas@ietf.org" <teas@ietf.org>
Message-ID: <20191113062743.GQ32847@kduck.mit.edu>
References: <157360450753.31787.1635529063369317230.idtracker@ietfa.amsl.com> <DM6PR19MB368971197D840B2E1B8A4CCFFC760@DM6PR19MB3689.namprd19.prod.outlook.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <DM6PR19MB368971197D840B2E1B8A4CCFFC760@DM6PR19MB3689.namprd19.prod.outlook.com>
User-Agent: Mutt/1.12.1 (2019-06-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/teas/3us0_0qOFOBRqdXgPzjdukyXtEI>
Subject: Re: [Teas] Benjamin Kaduk's Discuss on draft-ietf-teas-yang-te-types-12: (with DISCUSS and COMMENT)
X-BeenThere: teas@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Traffic Engineering Architecture and Signaling working group discussion list <teas.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/teas>, <mailto:teas-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/teas/>
List-Post: <mailto:teas@ietf.org>
List-Help: <mailto:teas-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/teas>, <mailto:teas-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 13 Nov 2019 06:27:53 -0000

On Wed, Nov 13, 2019 at 05:18:16AM +0000, Tarek Saad wrote:
> Hi Benjamin,
> 
> Thanks again. We are OK to make the suggested change to remove ambiguity as below. We are OK either uploading rev -13 (once tool reopens) or address it as
> an RFC-Editor note..

Either works for me as well; let's wait to see what Deborah wants to do.

Thanks,

Ben

> OLD:
>       typedef admin-group {
>         type yang:hex-string {
>           /* 01:02:03:04 */
>           length "1..11";
>         }
>         description
>           "Administrative group/Resource class/Color representation in
>            hex-string type.
>            The Most Significant Byte (MSB) is the farthest to the
>            left in the byte sequence.";
> 
> NEW:
>       typedef admin-group {
>         type yang:hex-string {
>           /* 01:02:03:04 */
>           length "1..11";
>         }
>         description
>           "Administrative group/Resource class/Color representation in
>            hex-string type.
>            The Most Significant Byte (MSB) is the farthest to the
>            left in the byte sequence. Leading zero bytes in the configured
>            value may be omitted for brevity. ";
> 
> Regards,
> Tarek (for authors)
> 
> On 11/12/19, 7:22 PM, "Teas on behalf of Benjamin Kaduk via Datatracker" <teas-bounces@ietf.org on behalf of noreply@ietf.org> wrote:
> 
>     Benjamin Kaduk has entered the following ballot position for
>     draft-ietf-teas-yang-te-types-12: Discuss
>     
>     When responding, please keep the subject line intact and reply to all
>     email addresses included in the To and CC lines. (Feel free to cut this
>     introductory paragraph, however.)
>     
>     
>     Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
>     for more information about IESG DISCUSS and COMMENT positions.
>     
>     
>     The document, along with other ballot positions, can be found here:
>     https://datatracker.ietf.org/doc/draft-ietf-teas-yang-te-types/
>     
>     
>     
>     ----------------------------------------------------------------------
>     DISCUSS:
>     ----------------------------------------------------------------------
>     
>     Thank you for the updates in the -12; they're some good improvements!
>     I think I am still looking for a little more clarity on one point, though it
>     can probably be addressed with an RFC-Editor note:
>     
>     (1) the semantics of admin-group hex strings of length smaller than 11
>     
>     In the -12 we now have:
>     
>       typedef admin-group {
>         type yang:hex-string {
>           /* 01:02:03:04 */
>           length "1..11";
>         }
>         description
>           "Administrative group/Resource class/Color representation in
>            hex-string type.
>            The Most Significant Byte (MSB) is the farthest to the
>            left in the byte sequence.";
>     
>         reference "RFC3630 and RFC5305";
>       }
>     
>     This description still feels potentially ambiguous as to how to interpret
>     a byte sequence with fewer than four bytes -- does "MSB" mean "MSB of the
>     input string" or "MSB of the full-width value"?
>     
>     I suggest adding  "Leading zero bytes in the configured value may be omitted for brevity."
>     (but anything with similar clarifying value would be fine).
>     
>     
>     ----------------------------------------------------------------------
>     COMMENT:
>     ----------------------------------------------------------------------
>     
>     [comment section from -10 preserved unchanged, for convenience]
>     
>     In general it's hard to examine many of these types and see whether they
>     are fit for purpose without some sense of how they would be used, but of
>     course following a chain of references for all of the types in question
>     wouldu be tedious to the point of exhaustion.  I'm reluctant to start
>     getting into examples (since such a list would necessarily be
>     incomplete), but if you want one, the 'suppression-interval' leaf has a
>     very terse description, that will presumably be supplemented by some
>     text in some other document about what exactly is getting suppressed and
>     when, but if I were to try to implement from just this document I'd be
>     doing a lot of guessing.
>     
>     Section 3
>     
>        types for TE generic types and ietf-te-packet-types for packet
>        specific types.  Other technology specific TE types are outside the
>     
>     nits: "packet-specific" and "technology-specific" to hyphenate the
>     compound adjectives.
>     
>     Section 3.1
>     
>        te-node-id:
>     
>           A type representing the identifier for a node in a TE topology.
>           The identifier is represented as 32-bit unsigned integer in the
>           dotted-quad notation.  This attribute MAY be mapped to the Router
>     
>     Why is te-node-id IPv4-centric?  E.g., RFC 6119 describes an "IPv6 TE
>     Router ID" TLV as well as the "TE Router ID" TLV that we reference here
>     for the node ID.
>     Furthermore, either it's a 32-bit unsigned integer or it's represented
>     in the dotted-quad notation, but the dotted-quad notation doesn't really
>     count as a 32-bit unsigned integer.
>     
>        te-metric:
>     
>           A type representing the TE link metric as defined in [RFC3785].
>     
>     (editorial) the phrase "link metric" does not appear in RFC 3785.
>     
>     Section 3.2
>     
>        The ietf-te-packet-types module covers the common types and groupings
>        specific packet technology.
>     
>     nit: I think there's a word missing here.
>     
>        performance-metrics-attributes-packet:
>     
>           A YANG grouping for the augmentation of packet specific metrics to
>           the generic performance metrics grouping parameters.
>     
>     nit(?) I can't tell which way the augmentation is supposed to go, just
>     from this text.
>     
>     Section 4
>     
>       typedef admin-group {
>         type yang:hex-string {
>           /* 01:02:03:04 */
>           length "1..11";
>         }
>         description
>           "Administrative group/Resource class/Color representation in
>            hex-string type.";
>         reference "RFC3630 and RFC5305";
>     
>     RFC 5305 says to treat this as essentially a bitmask.  What are the
>     semantics when I only supply a string of (say) length 1 or 2?
>     
>       typedef performance-metrics-normality {
>            [...]
>         reference
>           "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
>            RFC8570: IS-IS Traffic Engineering (TE) Metric Extensions.
>            RFC7823: Performance-Based Path Selection for Explicitly
>            Routed Label Switched Paths (LSPs) Using TE Metric
>            Extensions";
>     
>     None of these three references describes "normal" or "abnormal".
>     
>       typedef te-bandwidth {
>         type string {
>           pattern
>             '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
>           + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
>           + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
>           + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
>           + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
>           + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
>         }
>     
>     Can the document shepherd please report what validation has been done
>     for this pattern?
>     
>            For packet switching type, a float number is used, such as
>            0x1p10.
>     
>     What kind of units are implied for this (and the other types)?
>     
>       typedef te-metric {
>         type uint32;
>         description "TE link metric";
>         reference "RFC3785";
>     
>     [same comment about "link metric" and 3785]
>     
>       typedef te-node-id {
>         type yang:dotted-quad;
>         description
>           "A type representing the identifier for a node in a TE
>            topology.
>            The identifier is represented as 32-bit unsigned integer in
>            the dotted-quad notation.
>     
>     [same comment about uint32 vs. dotted-quad]
>     
>       typedef te-oper-status {
>         [...]
>     
>     Is there some way (a grouping?) to deduplicate the admin and operational
>     status enumerations?  They seem to be nearly identical in terms of the
>     range of possible values.
>     
>       identity se-style-desired {
>         [...]
>     
>     (et seq) The rtgdir's comments about whether 'base' should be present
>     seems relevant for these as well.
>     
>       identity oob-mapping-flag {
>     [....]
>       identity entropy-label-capability {
>     
>     Are all of the flags based on lsp-attributes-flags supposed to be
>     "desired" in the description (these aren't)?
>     
>       identity oam-mep-entity-desired {
>         base lsp-attributes-flags;
>         description "OAM MEP entities desired";
>     
>     We probably should expand Maintenance Entity Group End Point (and MIP,
>     below).
>     
>       identity loopback-desired {
>         base lsp-attributes-flags;
>         description
>           "This flag indicates a particular node on the LSP is
>            required to enter loopback mode.  This can also be
>     
>     Is there a mismatch between "desired" and "required"?
>     
>       identity rtm-set-desired {
>         base lsp-attributes-flags;
>         description
>           "Residence Time Measurement (RTM) attribute flag";
>     
>     Is there a mismatch regarding "desired" in the identity name vs.
>     description?
>     
>       identity link-protection-type {
>         description "Base identity for link protection type.";
>       }
>       identity link-protection-unprotected {
>         base link-protection-type;
>     
>     [I assume the WG had some good discussion about identities vs.
>     enumeration and don't want to second-guess that.]
>     
>       identity association-type-recovery {
>         base association-type;
>         description
>           "Association Type Recovery used to association LSPs of
>            same tunnel for recovery";
>     
>     nit: the grammar seems weird, here; maybe a missing word?
>     
>       identity path-locally-computed {
>         base path-computation-method;
>         description
>           "indicates a constrained-path LSP in which the
>           path is computed by the local LER";
>         reference "RFC3209";
>     
>     In line with the gen-art reviewer's comments, a section ref might be
>     useful here.
>     
>       identity path-externally-queried {
>         base path-computation-method;
>         description
>           [...]
>           to the external source to aid computation); and the path that is
>           returned by the external source is not required to provide a
>           wholly resolved path back to the originating system - that is to
>           say, some local computation may also be required";
>     
>     nit: "provide a wholly resolved path back to the originating system"
>     could potentially be read ambiguously about whether "back to the
>     originating system refers to the path or where the (partial) result is
>     returned to.
>     
>       identity te-tunnel-type {
>         [...]
>     
>     There is no need for a mp2p or mp2mp tunnel type?
>     
>       identity tunnel-state-type {
>         description
>           "Base identity for TE tunnel states";
>     
>     This is just "tunnel state" not "operational state"?
>     
>       identity lsp-state-type {
>         description
>           "Base identity for TE LSP states";
>     
>     Is there a state machine for which transitions between states based on
>     this identity are allowed, or is it basically just a full mesh?
>     
>       identity path-invalidation-action-drop-tear {
>         base path-invalidation-action-type;
>         description
>           "TE path invalidation action tear";
>     
>     Is there a reference for this (or the other
>     path-invalidation-action-type)?  My naive reading wants to complete it
>     to "teardown" but I have low confidence that is correct.
>     
>       identity path-metric-optimize-includes {
>         [...]
>       identity path-metric-optimize-excludes {
>         base path-metric-type;
>         description
>           "A metric that optimizes the number of excluded resources
>            specified in a set";
>     
>     optimizes to minimize or maximize it?
>     
>       grouping performance-metrics-one-way-bandwidth {
>         [....]
>     
>     What are the units on the bandwidth values herein?  bits per second?
>     
>           container threshold-accelerated-advertisement {
>             description
>               "When the difference between the last advertised value and
>                current measured value exceed this threshold, anomalous
>                announcement will be triggered.";
>             uses performance-metrics-thresholds;
>     
>     Are we reusing the performance-metrics-threshold container, which up
>     until now has been used for absolute measurements, to hold the
>     corresponding relative values (differences)?
>     
>       grouping optimization-metric-entry {
>         [...]
>         leaf weight {
>     
>     Where is the sense of the 'weight' leaf defined?  That is, to larger
>     weight values get more traffic or less traffic?
>     
>         container path-srlgs-names {
>             [...]
>             leaf-list names {
>               type string;
>               description "List named SRLGs";
>     
>     nit: missing "of"?
>     
>       grouping generic-path-disjointness {
>         description "Path disjointness grouping";
>         leaf disjointness {
>           type te-path-disjointness;
>           description
>             "The type of resource disjointness.
>              Under primary path, disjointness level applies to
>              all secondary LSPs. Under secondary, disjointness
>              level overrides the one under primary";
>     
>     What does "under" mean?  It seems like it has something to do with the
>     position in the hierarchy where this grouping gets instantiated, which
>     is potentially subtle.
>     
>         container path-properties {
>           config false;
>           [...]
>           container path-route-objects {
>             description
>               "Container for the list of route objects either returned by
>                the computation engine or actually used by an LSP";
>             list path-route-object {
>               key index;
>               ordered-by user;
>     
>     (How do 'config false' and 'ordered-by user' interact?)
>     
>     Section 5
>     
>        grouping performance-metrics-attributes-packet {
>          [...]
>          uses te-types:performance-metrics-attributes {
>            augment performance-metrics-one-way {
>              leaf one-way-min-delay {
>              [...]
>              leaf one-way-max-delay {
>     
>     What kind of sanity or error checking is there for the nodes in this
>     model, e.g., if max delay is configured to be smaller than min delay?
>     
>              leaf one-way-delay-variation {
>                type uint32 {
>                  range 0..16777215;
>                }
>                description "One-way delay variation in micro seconds.";
>     
>     What does "variation" mean?  Deviation from mean?  Variance?  Mean
>     absolute error?
>     
>              leaf one-way-packet-loss {
>                type decimal64 {
>                  fraction-digits 6;
>                  range "0 .. 50.331642";
>     
>     Is there a reason for the oddly specific upper limit?
>     I also can't quite convince myself from the RFC 7950 grammar whether the
>     quotes on the range are valid and/or needed.
>     
>     I also am unsure as to how useful the "normality" is for some of these,
>     like the packet loss and delay-variation values.
>     
>     [same comments about two-way metrics as one-way metrics, I think.
>     Also the -packet variants.]
>     
>     Section 7
>     
>     We probably could say more here if we want, though I'm as-yet decided on
>     whether we should.
>     That is, things like editing  the config could cause traffic to be
>     disallowed, routed on suboptimal paths, routed through locations more
>     easily targeted for other purposes, etc., and reading config/status
>     could reveal information about network topology, which sites might be
>     most sensitive as targets for subsequent attacks, etc..  It's less clear
>     if there's much that would allow for identification of specific
>     users/customers or their traffic, though.  Maybe some of the DSCP stuff,
>     in some cases.
>     
>     Section 10.2
>     
>     A question for the responsible AD: do references that are used in
>     "reference" statements need to be normative references?  (E.g., RFC
>     3471.)
>     
>     
>     _______________________________________________
>     Teas mailing list
>     Teas@ietf.org
>     https://www.ietf.org/mailman/listinfo/teas
>