Hi Med, 

Let me respond to the high level DISCUSS points first. I'll address the other 
comments in a subsequent Email.

> On Mar 26, 2025, at 12:13 PM, Mohamed Boucadair via Datatracker 
> <nore...@ietf.org> wrote:
> 
> Mohamed Boucadair has entered the following ballot position for
> draft-ietf-ospf-sr-yang-34: 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/about/groups/iesg/statements/handling-ballot-positions/ 
> for more information about how to handle DISCUSS and COMMENT positions.
> 
> 
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-ospf-sr-yang/
> 
> 
> 
> ----------------------------------------------------------------------
> DISCUSS:
> ----------------------------------------------------------------------
> 
> Hi Yingzhen, Acee, Jeffrey, and Helen,
> 
> Thank you for the effort put into this specification, especially for your
> perseverance to progress the spec for almost ten years. I hope we could 
> produce
> device YANG modules quicker.
> 
> The augmentations are overall adhering to the base specifications defined in
> RFC8665/RFC8666. There are minor issues (but many, though) that can be easily
> fixed. I found it unfortunate that we are mixing message format vs. what can 
> be
> managed (e.g., data nodes are mirroring TLVs, etc.).
> 
> I will be definitely balloting “Yes” for this specification, but I’d like to
> DISCUSS some few points.
> 
> # Lack of narrative text
> 
> I would expect a minimum of narrative text to explain the set of management
> function supported by the model. For example, I can’t tell whether we can 
> store
> the algo capabilities of adj SR routers, etc.
> 
> Please remember that RFC8407 says the following:
> 
> 3.5.  Narrative Sections
> 
>   The narrative part MUST include an overview section that describes
>   the scope and field of application of the module(s) defined by the
>   specification and that specifies the relationship (if any) of these
>   modules to other standards, particularly to standards containing
>   other YANG modules.  The narrative part SHOULD include one or more
>   sections to briefly describe the structure of the modules defined in
>   the specification.

This has proved to be a good exercise. 


> 
> # Implicit SID types
> 
> CURRENT:
>       container sid-sub-tlv {
>         description
>           "Used to advertise the SID/Label associated with a
>            prefix or adjacency.";
>         leaf length {
>           type uint16;
>           description
>             "Length of the SID value. YANG model specification
>              is necessary since it dictates the semantics of the
>              SID.";
>         }
>         leaf sid {
>           type uint32;
>           description
>             "Segment Identifier (SID) - A 20 bit label or
>              32 bit SID. If the length is set to 3, then the
>              20 rightmost bits represent a label.  If the length
>              is set to 4, then the value represents a 32-bit SID.";
> 
> It is unfortunate to mix the wire encoding vs manageability function. Why a
> type is not used here instead of implicitly inferring it form a length?

For the LSAs, we've mirrored the encodings in most cases. However, I guess we 
could add a type. 

> 
> BTW, should that type (or length in the current version) be mandatory?
> especially that the description says "is necessary"?

These are read-only state data and we normally don't indicate mandatory fields 
in read-only data. I intend to update the model to make it much clearer as to 
which augmentations are read-write and which are read-only. 



> 
> # Ordering control of SID/Label
> 
> How to control the order of SID/Label to follow this part from RFC8665?
> 
>  *  The originating router decides the order in which the set of SID/
>      Label Range TLVs are advertised inside the Router Information
>      Opaque LSA.

This is left to the implementation. This is read-only data as well. 


> 
> # Overlapping prefixes
> 
> RFC8665 states that:
>  The originating router MUST NOT advertise overlapping ranges.
> 
> How the model enforces this check on SID/Label Range?

This is read-only data as well. 

If you wanted, you could file an Errata on RFC 9020 to enforce non-overlapping 
ranges. 
Offhand, I can't think of a way to enforce with YANG constraints other than in 
the text. 


> 
> # SR capabilities
> 
> It seems that this is defined only for OSPFv3 in the module, but
> rfc8665#section-3 says the following:
> 
>   These SR capabilities are advertised in the Router Information Opaque
>   LSA (defined in [RFC7770]).  The TLVs defined below are applicable to
>   both OSPFv2 and OSPFv3; see also [RFC8666].

The augmentations to the OSPFv2 RI LSA Opaque and OSPFv3 RI LSA are in the 
draft. For example:

augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/"
           + "ospf:area/ospf:database/"
           + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
           + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/"
           + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" {
       when "derived-from(/rt:routing/rt:control-plane-protocols/"
          + "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "SR-specific TLVs for OSPFv2 type 10 opaque LSA.";
       uses sr-algorithm-tlv;
       uses sid-range-tlvs;
       uses local-block-tlvs;
       uses srms-preference-tlv;
     }



     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/"
           + "ospf:area/ospf:database/"
           + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
           + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body/ospf:router-information" {
       when "derived-from(/rt:routing/rt:control-plane-protocols/"
          + "rt:control-plane-protocol/rt:type, 'ospf:ospfv3')" {
         description
           "This augmentation is only valid for OSPFv3.";
       }
       description
         "SR-specific TLVs for OSPFv3 Router Information LSA.";
       uses sr-algorithm-tlv;
       uses sid-range-tlvs;
       uses local-block-tlvs;
       uses srms-preference-tlv;
     }

Thanks,
Acee




> 
> Maybe I’m missing something.
> 
> 
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
> 
> # Abstract: “configure” is covered by “manage” (remember the FCAPS functions)
> 
> OLD:
>   This document defines a YANG data module that can be used to
>   configure and manage OSPF Extensions for Segment Routing for the MPLS
>   data plane.
> 
> NEW :
>   This document defines a YANG data module that can be used to
>   manage OSPF Extensions for Segment Routing (SR) for the MPLS
>   data plane.
> 
> # Introduction: Simplify + remove “configure” as this is covered by “manage”
> 
> OLD:
>   This document defines a YANG data model [RFC7950] that can be used to
>   configure and manage OSPFv2 extensions for Segment Routing [RFC8665]
>   and OSPFv3 extensions for Segment Routing [RFC8666] for the MPLS data
>   plane.  It is an augmentation to the OSPF YANG data model [RFC9129].
> 
> NEW:
>   This document defines a YANG data model [RFC7950] that can be used to
>   manage Segment Routing (SR) for OSPFv2 [RFC8665]
>   and OSPFv3 [RFC8666] for the MPLS data
>   plane.  It is an augmentation to the OSPF YANG data model [RFC9129].
> 
> # Section 2
> 
> ## (redundant) I would delete the following as this was stated few lines 
> above.
> 
> CURRENT:
>   It is an augmentation of the OSPF base model.
> 
> ## The module is not only for configuration, but for state retrieval. The
> document says that it adheres to the NMDA ;-)
> 
> Please update the following accordingly:
> 
> CURRENT:
>   The OSPF SR YANG module requires support for the base segment routing
>   module [RFC9020], which defines the global segment routing
>   configuration independent of any specific routing protocol
>   configuration, and support of OSPF base model [RFC9129] which defines
>   basic OSPF configuration and state.
> 
> ## Long tree diagram
> 
> Please move the full tree to an appendix but consider snippets to help readers
> go through the model.
> 
> Refer to Section 3.4 of 8407bis for more guidance.
> 
> # Section 2.1: Check references
> 
> CURRENT:
>   [RFC2328], [RFC4750], [RFC4915], [RFC5340], [RFC5643], [RFC5838],
>   [RFC6991], [RFC8102], [RFC8294], [RFC8343], [RFC8476], [RFC8349],
>   [RFC9587], and [I-D.ietf-rtgwg-segment-routing-ti-lfa] are referenced
>   in the YANG data model.
> 
> For example, I failed to find where these ones are cited [RFC4750],  
> [RFC5643],
> [RFC5838], [RFC8343 ], [RFC8476].
> 
> # Section 2.2
> 
> ## Please use the template at
> https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-22#name-template-for-ietf-modules
> 
> ## Description issues
> 
> CURRENT:
>        This YANG module defines the generic configuration
>        and operational state for OSPF Segment Routing (SR), which
>        is common across all of the vendor implementations. It is
>        intended that the module will be extended by vendors to
>        define vendor-specific OSPF Segment Routing configuration
>        and operational parameters for the MPLS data plane.
> 
> * How you checked this part “is common across all of the vendor
> implementations”?
> 
> * I would remove the last sentence. It is weird to make assumption about what
> proprietary extensions in a STD spec!
> 
> ## Consistent referencing style: The module include a mix of styles for the
> reference statements. Please update accordingly. For example,
> 
> OLD: "RFC 6991 - Common YANG Data Types";
> NEW: "RFC 6991: Common YANG Data Types";
> 
> ## Lack of references:
> 
> For example, consider adding the following for all prefix-sid-flag
> 
> NEW:
>    reference
>       "RFC 8665: OSPF Extensions for Segment Routing, Section 5
>        RFC 8666: OSPFv3 Extensions for Segment Routing, Section 6";
> 
> ## Some description are copied from the base spec, while the statement does 
> not
> make sense for a given type.
> 
> For example, the following is included for an identity, but 'if set, ..' does
> not make sense for an identity. This is not a flag bit. An example is provided
> below (but other similar constructs are included in the module)
> 
> OLD:
>      "Inter-Area flag. If set, advertisement is of
>        inter-area type.";
> NEW:
>       "Inter-Area flag.";
> 
> ## Lack of mapping between some identities and the flag names as defined in 
> the
> base spec. For example, the description for vi-flag should indicate that this
> corresponds to the V-Flag as there is no VI-Flag in 8665/8666:
> 
> OLD:
>       "Value/Index flag.";
> 
> NEW:
>       "Value/Index flag. Corresponds to the Adj-SID V-Flag.";
>     reference
>       "RFC 8665: OSPF Extensions for Segment Routing, Section 6.1
>        RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7.1";
> 
> Idem, please indicate that lo-flag corresponds to the L-Flag defined in
> 8665/8666 as there is no LO-Flag in 8665/8666.
> 
> OLD:
>      "Local/Global flag.";
> 
> NEW:
>       "Local/Global flag. Corresponds to the Adj-SID L-Flag.";
>     reference
>       "RFC 8665: OSPF Extensions for Segment Routing, Section 6.1
>        RFC 8666: OSPFv3 Extensions for Segment Routing, Section 7.1";
> 
> ## No need to repeat the parent node prefix. There are many occurrences of 
> this
> in the module.
> 
> OLD: list prefix-sid-sub-tlv {
> NEW: list prefix-sid {
> 
> OLD: list extended-prefix-range-tlv {
> NEW: list extended-prefix-range {
> 
> OLD: container extended-prefix-range-flags {
> NEW: container flags {
> 
> Etc.
> 
> ## Use Singular for list/leaf-list per rfc8407bis, for example:
> 
> OLD: leaf-list flags {
> NEW: leaf-list flag {
> 
> There are many occurrences in the text.
> 
> ## Defaults: Please provide an authoritative reference where the default is
> defined + indicate the meaning of this default.
> 
> For example, it is not clear for the definition the meaning of this value:
> 
> CURRENT:
>          leaf priority {
>             type uint8;
>             default "128";
> 
> ## Restrict using range: restrict the range rather than having this in the
> description.
> 
> CURRENT:
>        leaf mt-id {
>           type uint8;
>           description
>             "Multi-topology ID. Topologies range from 0-127 and
>              return of any other value would indicate an error.";
> 
> # Section 3: Security template
> 
> Please follow the template defined in
> https://datatracker.ietf.org/doc/html/draft-ietf-netmod-rfc8407bis-22#name-security-considerations-sect
> 
> # Section 5: Indicate whether this is maintained by IANA or not
> 
> OLD:
>         name: ietf-ospf-sr-mpls
>         namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls
>         prefix: ospf-sr-mpls
>         reference: RFC XXXX
> 
> NEW:
>         name: ietf-ospf-sr-mpls
>         namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-sr-mpls
>         prefix: ospf-sr-mpls
>         maintained by IANA? N
>         reference: RFC XXXX
> 
> # Section 6: Issues with classifying references
> 
> RFC6241, RFC6242, RFC8040, RFC8343, RFC8446, and RFC8476 are cited as
> normative, while they shouldn’t. Please move those to be listed as 
> Informative.
> 
> # Appendix
> 
> ## Redundant examples
> 
> Do we really need to have the xml example given that the JSON encoding for the
> same example is provided?
> 
> ## Broken JSON example
> 
> Please validate the example using yanglint, etc.
> 
> OLD:
>   {
>     "routing": {
>       "router-id": "1.1.1.1",
>       "control-plane-protocols": {
>         "control-plane-protocol": {
>           "type": "ospf:ospfv2",
>           "name": "OSPFv2",
>           "ospf": {
>             "areas": {
>               "area": {
>                 "area-id": "0.0.0.0",
>                 "interfaces": {
>                   "interface": {
>                     "name": "eth0",
>                     "segment-routing": {
>                       "adjacency-sid": {
>                         "adj-sids": {
>                           "value": 3888
>                         }
>                       }
>                     }
>                   }
>                 }
>               }
>             },
>             "segment-routing": {
>               "enabled": true
>             },
>             "protocol-srgb": {
>               "srgb": {
>                 "lower-bound": 4000,
>                 "upper-bound": 5000
>               }
>             }
>           }
>         }
>       }
>     }
>   }
> 
> NEW:
>   {
>     "ietf-routing:routing": {
>       "router-id": "1.1.1.1",
>       "control-plane-protocols": {
>         "control-plane-protocol": {
>           "type": "ietf-ospf:ospfv2",
>           "name": "OSPFv2",
>           "ietf-ospf:ospf": {
>             "areas": {
>               "area": {
>                 "area-id": "0.0.0.0",
>                 "interfaces": {
>                   "interface": {
>                     "name": "eth0",
>                     "ietf-ospf-sr-mpls:segment-routing": {
>                       "adjacency-sid": {
>                         "adj-sids": {
>                           "value": 3888
>                         }
>                       }
>                     }
>                   }
>                 }
>               }
>             },
>             "ietf-ospf-sr-mpls:segment-routing": {
>               "enabled": true
>             },
>             "ietf-ospf-sr-mpls:protocol-srgb": {
>               "srgb": {
>                 "lower-bound": 4000,
>                 "upper-bound": 5000
>               }
>             }
>           }
>         }
>       }
>     }
>   }
> 
> Cheers,
> Med
> 
> 
> 

_______________________________________________
Lsr mailing list -- lsr@ietf.org
To unsubscribe send an email to lsr-le...@ietf.org

Reply via email to