Re: [mpls] Benjamin Kaduk's No Objection on draft-ietf-mpls-base-yang-15: (with COMMENT)

Tarek Saad <tsaad.net@gmail.com> Tue, 20 October 2020 14:48 UTC

Return-Path: <tsaad.net@gmail.com>
X-Original-To: mpls@ietfa.amsl.com
Delivered-To: mpls@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 27AD93A0EEE; Tue, 20 Oct 2020 07:48:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com
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 d7gd04oFjeeH; Tue, 20 Oct 2020 07:48:57 -0700 (PDT)
Received: from mail-ot1-x333.google.com (mail-ot1-x333.google.com [IPv6:2607:f8b0:4864:20::333]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 9C29E3A0EE9; Tue, 20 Oct 2020 07:48:56 -0700 (PDT)
Received: by mail-ot1-x333.google.com with SMTP id f10so1945425otb.6; Tue, 20 Oct 2020 07:48:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:thread-topic:thread-index:date:message-id :accept-language:content-language:mime-version; bh=cAbJV2khpP8WoBrPULzxflLMcoNW/HvUEedtC6IRdTA=; b=hloMR14cWoaCwxx2wLSk+Qfq/hzERvIH6NjNp1TWSRTyqXcMD+ksdnICUNECRMubo3 LaNs0vK0502hQcMOCAlxWT1gAfuOniXK78vEccdN6tdfV8BnIp9XmUflXvbn7UrWtMw1 6m+c32aKhGA/NMVDuDI+Xz09yIS6ieLQgIr2k0bybTTVmGPZrEFQpVIssDOMSueDohTS B7E8bLDwyx85BFMaNcIoZF1LjcGT0EY44f9qkr6ZqXcplWgxsTy41KnMS6DyKqgxM8p7 NeHGB/swBDHaRDYNYjT2dACXuVCYHKOPSDxH6HNDmNeRj460rrRQlDb/Rb/H/k5CIi47 KgEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:thread-topic:thread-index :date:message-id:accept-language:content-language:mime-version; bh=cAbJV2khpP8WoBrPULzxflLMcoNW/HvUEedtC6IRdTA=; b=sFoFSU5HrQQWZ7HKMDFPqA83TBBFyYomK2VYPCDeWV2/HQLyVTuBl0746m3n6rrVp3 t4VWAkDVNr+s3whdM4bVdxkT2154RHgJUBzs9KJjk51tx6MM8lQHGHq1dbRAFm7P4vW0 JUcGFfR7csPq3XghLCwWRvGOXHHEglNvLEKUC1LPP5P1RbMdkO/EFb4k6oiQTLEJcRaK mE3R60z/dsIT5qhyqhiYEyR+LwL4To2nVBvFXIsRVn/vDhF2lV3BBMVX3RQQfmk38wV8 PNaldW0T5lj1/aKRfkHDRllCGx3GKlspxBI4ivpxf11aJ+1Rqne7wN158v+E8ZXi3d8S YSeA==
X-Gm-Message-State: AOAM530KPbyYQQjVFyWBK1uaoi7FFs5fY9vwG3CqnG7O701SkCQFFLLM 0I+em8Swm7ty9PzMkWBp8Lo=
X-Google-Smtp-Source: ABdhPJx/T1myJWHtEwHrVUNywM2xKY9Ff/HTOR/CI6UIHSuU68MV0W2rFN7ZCLeZd02+LOgepxiJ6g==
X-Received: by 2002:a9d:7a46:: with SMTP id z6mr2086759otm.170.1603205335534; Tue, 20 Oct 2020 07:48:55 -0700 (PDT)
Received: from DM5PR1901MB2150.namprd19.prod.outlook.com ([2603:1036:4:9e::5]) by smtp.gmail.com with ESMTPSA id y4sm502630oou.38.2020.10.20.07.48.54 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 20 Oct 2020 07:48:54 -0700 (PDT)
From: Tarek Saad <tsaad.net@gmail.com>
To: "kaduk@mit.edu" <kaduk@mit.edu>, "iesg@ietf.org" <iesg@ietf.org>
CC: "draft-ietf-mpls-base-yang@ietf.org" <draft-ietf-mpls-base-yang@ietf.org>, "mpls-chairs@ietf.org" <mpls-chairs@ietf.org>, "mpls@ietf.org" <mpls@ietf.org>, "loa@pi.nu" <loa@pi.nu>
Thread-Topic: Benjamin Kaduk's No Objection on draft-ietf-mpls-base-yang-15: (with COMMENT)
Thread-Index: AQHWpvAhto2BjEC8p0q5/aVn2h2Vjg==
X-MS-Exchange-MessageSentRepresentingType: 1
Date: Tue, 20 Oct 2020 14:48:53 +0000
Message-ID: <DM5PR1901MB2150F36A917D391D5E4B2D84FC1F0@DM5PR1901MB2150.namprd19.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
X-MS-Exchange-Organization-RecordReviewCfmType: 0
Content-Type: multipart/alternative; boundary="_000_DM5PR1901MB2150F36A917D391D5E4B2D84FC1F0DM5PR1901MB2150_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/mpls/FS7G7ngdfl2042ocLG99lfuEN1A>
Subject: Re: [mpls] Benjamin Kaduk's No Objection on draft-ietf-mpls-base-yang-15: (with COMMENT)
X-BeenThere: mpls@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Multi-Protocol Label Switching WG <mpls.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/mpls>, <mailto:mpls-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/mpls/>
List-Post: <mailto:mpls@ietf.org>
List-Help: <mailto:mpls-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/mpls>, <mailto:mpls-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 20 Oct 2020 14:48:59 -0000

Hi Benjamin,
Thanks for your thorough review and comments. We have posted rev -16 (https://tools.ietf.org/html/draft-ietf-mpls-base-yang-16)  of the document and have addressed all your comments.
Please see inline for responses… [TS]

Regards,
Tarek


On 9/8/20, 6:43 PM, "Benjamin Kaduk via Datatracker" <noreply@ietf.org> wrote:

    [External Email. Be cautious of content]


    Benjamin Kaduk has entered the following ballot position for
    draft-ietf-mpls-base-yang-15: No Objection

    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://urldefense.com/v3/__https://www.ietf.org/iesg/statement/discuss-criteria.html__;!!NEt6yMaO-gk!ShQX5naGtiolElLjw1rNiM8siw7Iun8IyU2y_afo_a_mmGiaIiIqjIicHsT7ow$<https://urldefense.com/v3/__https:/www.ietf.org/iesg/statement/discuss-criteria.html__;!!NEt6yMaO-gk!ShQX5naGtiolElLjw1rNiM8siw7Iun8IyU2y_afo_a_mmGiaIiIqjIicHsT7ow$>
    for more information about IESG DISCUSS and COMMENT positions.


    The document, along with other ballot positions, can be found here:
    https://urldefense.com/v3/__https://datatracker.ietf.org/doc/draft-ietf-mpls-base-yang/__;!!NEt6yMaO-gk!ShQX5naGtiolElLjw1rNiM8siw7Iun8IyU2y_afo_a_mmGiaIiIqjIgJouG_tg$<https://urldefense.com/v3/__https:/datatracker.ietf.org/doc/draft-ietf-mpls-base-yang/__;!!NEt6yMaO-gk!ShQX5naGtiolElLjw1rNiM8siw7Iun8IyU2y_afo_a_mmGiaIiIqjIgJouG_tg$>



    ----------------------------------------------------------------------
    COMMENT:
    ----------------------------------------------------------------------

    Before getting into the section-by-section comments, I'll note that
    there are a few things in the YANG module itself that seem awry to my
    untrained eye.

    Section 2.2

       The 'ietf-mpls' module defines the following identities:
       [...]
       label-block-alloc-mode:

    (nit?) We also define two identities based on this one; is the list of
    "defines the following identities" supposed to be comprehensive (vs.
    "high-level")?
[TS]: the style we follow is to keep it high-level and include descriptions of the base identity only.

       nhlfe-multiple-contents:

          A YANG grouping that describes a set of NHLFE(s) and their
          associated parameters as described in the MPLS architecture
          document [RFC3031].

    (editorial) Perhaps we could say a few more words about how these NHLFEs
    are related/why they are being grouped together?  (I do not recall such
    grouping being specifically covered in 3031.)

[TS]: added.

       rib-mpls-properties:

          A YANG grouping for the augmentation of MPLS label forwarding data
          to the generic RIB as defined in [RFC3031].

    nit(?): the "as defined in <reference>" seems more applicable to "MPLS
    label forwarding data" than "generic RIB".
[TS]: rephrased.
NEW:
    ¦ A YANG grouping for the augmentation of the generic RIB with MPLS
    ¦ label forwarding data as defined in [RFC3031].

    Section 2.3

       o  routes that cross-connect an MPLS local label to a Layer-3
          adjacency or interface - such as MPLS Segment-Routing (SR)
          Adjecency Segments (Adj-SIDs), SR MPLS Binding SIDs, etc. as
          defined in [RFC8402].

    nit(?): is there a semantic difference between "MPLS SR" and "SR MPLS"
    for the two types of route mentioned?
[TS]: no, they are same and we adopted SR MPLS for both.

    Section 2.5

      identity label-block-alloc-mode {
        description
          "Base identity label-block allocation mode.";
      }

    nit: missing "for".
[TS]: fixed.

      grouping nhlfe-multiple-contents {
        description
          "MPLS NHLFE contents.";

    nit: this description feels a little terse; is this the "generic" case
    or something similar?
[TS]: updated.
NEW:
description
¦ "A YANG grouping that describes a set of NHLFE(s) and their
¦  associated parameters as described in the MPLS architecture.
¦  This grouping is used when multiple next-hops are associated
¦  with the route.";

        leaf index {
          type string;
          description
            "A user-specified identifier utilised to uniquely
             reference the next-hop entry in the next-hop list.
             The value of this index has no semantic meaning
             other than for referencing the entry.";
        }
        leaf backup-index {
          type string;
          description
            "A user-specified identifier utilised to uniquely
             reference the backup next-hop entry in the NHLFE list.
             The value of this index has no semantic meaning
             other than for referencing the entry.";
        }

    I'm not sure I understand the semantics, here -- does 'index'
    authoritatively name the current entry with 'backup-index' being
    effectively a pointer to a different entry?  I don't see any leafs of
    type string in, e.g., rt-types:mpls-label-stack that this would be
    referring to.  If the backup-index is indeed just a pointer to a
    different entry, why is the string name used instead of a YANG
    reference?
 [TS]: correct. The backup-index serves as a pointer to another forwarding entry that serves as backup path. Every entry has a primary "index"and a "backup-index". The "backup-index" has a value of another entry "index".

    Also, what's a good reference for "backup" MPLS next-hops?  I don't see
    the string "backup" in either RFC 3031 or 3032.
[TS]: I found RFC4090 and RFC5714 as related.

      grouping interfaces-mpls {
          [...]
          leaf name {
            type if:interface-ref;
            description
              "The name of a configured MPLS interface.";
          }

    pedantic nit: is this really a "name"?
[TS]: updated as:
NEW:
description
¦ "A reference to the name of a interface in the system that is
¦  to be enabled for MPLS.";


            leaf start-label {
              type rt-types:mpls-label;
              must '. >= ../end-label' {
                error-message "The start-label must be less than or equal "
                            + "to end-label";
              }

    I think the sense of the YANG comparator is reversed, for both
    start-label (this) and end-label (not quoted).  (Also, IIUC, it's
    redundant to specify both, but harmless.)
[TS]: corrected the check:
NEW:
leaf start-label {
¦ type rt-types:mpls-label;
¦ must '. <= ../end-label' {
¦   error-message "The start-label must be less than or equal "
¦   ¦   ¦   ¦   + "to end-label";
¦ }

            leaf free-labels-count {
              when "derived-from-or-self(../block-allocation-mode, "
                 + "'mpls:label-block-alloc-mode-manager')";
              type yang:counter32;
              config false;
              description
                "Label-block free labels count.";

    I think that counter32 is semantically the wrong type, here (and for
    inuse-labels-count as well) -- IIRC the 'counter' types are for thigns
    like counting a particular type of event, and only ever monotonically
    increase.  Even if the free label count behaves monotonically (which is
    far from clear to me), wouldn't it be decreasing, not increasing?
[TS]: we updated to use gauge32 instead.

    Also, won't it always be true that free-labels-count +
    inuse-labels-count == end-label - start-label + 1?  I'm not sure why
    there's a need to introduce such redundant fields and the corresponding
    risk of internal inconsistency among them.

[TS]: yes, we removed since it was redundant.

        uses rib-mpls-properties {
          /* MPLS AF aaugmentation to native MPLS RIB */

    nit: s/aaugmentation/augmentation/

        uses rib-active-route-mpls-input {
          /* MPLS AF aaugmentation to native MPLS RIB */

    (ditto)
[TS]: thanks for spotting, corrected.

    Section 4

    Why is the rt:simple-next-hop augmentation listed but not the
    rt:next-hop-list augmentation?  IIUC they are functionally identical in
    terms of the sensitivity of information content.

    Also, it seems like the augmented RPC output is similarly sensitive to
    the readable nodes that are already mentioned.
[TS]: added.

    It looks like the main writeable nodes are the global
    configuration/state, and while it's perhaps defensible to say that these
    particular nodes are not sensitive, I did want to check what the
    behavior would be if (e.g.) the label-blocks subtree was overwritten.
    Would things just silently start using the new label block and keep
    working?
[TS]: Updated for RPCs and writable data nodes.

    Perhaps it would be too banal, but should we reference the security
    considerations of 3031/3032 as applying to MPLS usage?
[TS]: added.

    Section 7.1

    It's not clear that we reference RFC 8402 in a normative manner
    anywhere.
[TS]: section 2.3 lists Adj-SID and Binding-SID label(s) defined in RFC8402.

    Section 7.2

    I agree with the document shepherd that RFCs 3031 and 3032 naturally
    would be classified as normative references.  Similarly, RFC 7424 is
    refrenced by the YANG module itself, which usually indicates a normative
    reference.

[TS]: ok, moved to normative.

Regards,
Tarek