



Internet                                                           Y. Qu
Internet-Draft                                    Futurewei Technologies
Intended status: Standards Track                               A. Lindem
Expires: 7 January 2026                                     Arrcus, Inc.
                                                             6 July 2025


   YANG Data Model for OSPF Application-Specific Link Attributes and
                           Flexible Algorithm
                 draft-ietf-lsr-ospf-flex-algo-yang-00

Abstract

   This document defines a YANG data model to support OSPF Application-
   Specific Link Attributes and Flexible Algorithm.  It also specifies
   the initial version of IANA-maintained YANG modules for IGP Algorithm
   Types and IGP Metric-Type.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 7 January 2026.

Copyright Notice

   Copyright (c) 2025 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.



Qu & Lindem              Expires 7 January 2026                 [Page 1]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


Table of Contents

   1.  Overview  . . . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   2
   2.  IANA IGP Algorithm Types Module . . . . . . . . . . . . . . .   2
   3.  IANA IGP Metric Types Module  . . . . . . . . . . . . . . . .   4
   4.  YANG Module for OSPF Application-Specific Link Attributes . .   7
   5.  YANG Module for OSPF Flexible Algorithm . . . . . . . . . . .  13
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  33
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  34
     7.1.  Registering YANG Modules  . . . . . . . . . . . . . . . .  34
     7.2.  IANA IGP Algorithm Types Module . . . . . . . . . . . . .  35
     7.3.  IANA IGP Metric-Type Module . . . . . . . . . . . . . . .  35
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  36
   9.  Normative References  . . . . . . . . . . . . . . . . . . . .  36
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  38

1.  Overview

   This document defines YANG [RFC7950] data modules augmenting the IETF
   OSPF YANG model [RFC9129], which itself augments [RFC8349], to
   provide support for both OSPF Flexible Algorithm as defined in
   [RFC9350] and OSPF Application-Specific Link Attributes as defined in
   [RFC9492].

   Four YANG modules defined in this document.  The first is the initial
   version of the IANA-maintained YANG module for IGP Algorithm Types.
   The second module is the initial version of the IANA-maintained YANG
   module for IGP Metric-Type.  The third module augments the IETF OSPF
   YANG data model to support OSPF Flexible Algorithm, and the fourth
   module is to support OSPF Application-Specific Link Attributes.

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

2.  IANA IGP Algorithm Types Module

   IANA has created a registry titled "IGP Algorithm Types" under the
   "Interior Gateway Protocol (IGP) Parameters" registry group to
   identify Algorithm Types.  Module iana-igp-algo-types is an IANA-
   maintained module, which defines the identities for the Algorithm
   Types as in the IANA "IGP Algorithm Types" registry.

   This module is maintained by IANA and will be updated if and when
   there is any change to the registry.



Qu & Lindem              Expires 7 January 2026                 [Page 2]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   This document defines the initial version of the IANA-maintained YANG
   module for Algorithm Types that mirrors the IANA "IGP Algorithm
   Types" registry [IANA-IGP-ALGO-Types].

   <CODE BEGINS> file "iana-igp-algo-types@2025-06-13.yang"
   module iana-igp-algo-types {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:iana-igp-algo-types";
     prefix iana-algo-types;

     organization
       "Internet Assigned Numbers Authority (IANA)";

     contact
       "Internet Assigned Numbers Authority

        ICANN
        12025 Waterfront Drive, Suite 300
        Los Angeles, CA 90094-2536
        United States of America

        Tel:    +1 310 301 5800
         <mailto:iana@iana.org>";

     description
       "The YANG module defines the identities for Interior Gateway
        Protocol (IGP) Algorithm Types.

        This YANG module is maintained by IANA and reflects the 'IGP
        Algorithm Types' registry.

        Copyright (c) 2025 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject to
        the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        This initial version of this YANG module is part of RFC XXXX
        (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
        for full legal notices.

        //RFC Ed.: replace XXXX with actual RFC number and remove
          this note




Qu & Lindem              Expires 7 January 2026                 [Page 3]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


        //RFC Ed.: replace IANA_FOO_URL and remove this note.

        The latest version of this YANG module is available at
        <mailto:iana@iana.org>";

     revision 2025-06-13 {
       description
         "Initial Version";
       reference
         "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm";
     }

     identity algo-type {
       description
         "Base identity for IGP Algorithm Type. The algorithm types
          are defined in IANA IGP Algorithm Types registry.";
     }

     identity algo-spf {
       base algo-type;
       description
         "Shortest Path First (SPF) algorithm based on link metric.";
       reference
         "RFC 8665: OSPF Extensions for Segment Routing";
     }

     identity algo-strict-spf {
       base algo-type;
       description
         "Strict Shortest Path First (SPF) algorithm based on link
          metric.";
       reference
         "RFC 8665: OSPF Extensions for Segment Routing";
     }
   }
   <CODE ENDS>

3.  IANA IGP Metric Types Module

   IANA has created a registry titled "IGP Metric-Type" under the
   "Interior Gateway Protocol (IGP) Parameters" registry group to
   identify Metric Types.  Module iana-igp-metric-types is an IANA-
   maintained module, which defines the identities for the Metric Types
   as in the IANA "IGP Metric-Type" registry.

   This module is maintained by IANA and will be updated if and when
   there is any change to the registry.




Qu & Lindem              Expires 7 January 2026                 [Page 4]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   This document defines the initial version of the IANA-maintained YANG
   module for Algorithm Types that mirrors the IANA "IGP Metric-Type"
   registry [IANA-IGP-Metric-Types].

   <CODE BEGINS> file "iana-igp-metric-types@2025-06-13.yang"
   module iana-igp-metric-types {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:iana-igp-metric-types";
     prefix iana-metric-types;

     organization
       "Internet Assigned Numbers Authority (IANA)";

     contact
       "Internet Assigned Numbers Authority

        ICANN
        12025 Waterfront Drive, Suite 300
        Los Angeles, CA 90094-2536
        United States of America

        Tel:    +1 310 301 5800
         <mailto:iana@iana.org>";

     description
       "The YANG module defines the identities for Interior Gateway
        Protocol (IGP) Metric-Types.

        This YANG module is maintained by IANA and reflects the 'IGP
        Metric-Type' registry.

        Copyright (c) 2025 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject to
        the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        This initial version of this YANG module is part of RFC XXXX
        (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself
        for full legal notices.

        //RFC Ed.: replace XXXX with actual RFC number and remove
          this note




Qu & Lindem              Expires 7 January 2026                 [Page 5]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


        //RFC Ed.: replace IANA_FOO_URL and remove this note.

        The latest version of this YANG module is available at
        <IANA_FOO_URL>.";

     revision 2025-06-13 {
       description
         "Initial Version";
       reference
         "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm";
     }

     identity metric-type {
       description
         "Base identity for IGP Metric-Type. The metric types
          are defined in IANA IGP Metric-Type registry.";
     }

     identity igp-metric {
       base metric-type;
       description
         "IGP Metric.";
     }
     identity min-unidirectional-link-delay {
       base metric-type;
       description
         "Min Unidirectional Link Delay as defined in RFC8570 Section 4.2
          and RFC7471 Section 4.2.";
     }

     identity te-default-metric {
       base metric-type;
       description
         "STraffic Engineering Default Metric as defined in RFC5305
          Section 3.7 and Traffic Engineering Metric as defined in
          RFC3630, Section 2.5.5.";
     }

     identity bandwidth-metric {
       base metric-type;
       description
         "Bandwidth metric.";
     }
   }
   <CODE ENDS>






Qu & Lindem              Expires 7 January 2026                 [Page 6]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


4.  YANG Module for OSPF Application-Specific Link Attributes

   This document defined a YANG module for OSPF Application-Specific
   Link Attributes as defined in [RFC9492].

   module: ietf-ospf-link-attr
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf:
       +--rw ospf-link-attr
          +--rw (link-attr-op-mode)
             +--:(legacy)
             |  +--rw legacy?         empty
             +--:(transition)
             |  +--rw transition?     empty
             +--:(app-specific)
                +--rw app-specific?   empty
     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:extended-link-opaque/ospf:extended-link-tlv:
       +--ro app-specific-link-attr-sub-tlvs
          +--ro asla-sub-tlvs* []
             +--ro sabm-length?                    uint8
             +--ro udabm-length?                   uint8
             +--ro sabm
             |  +--ro sabm-bits*   identityref
             +--ro udabm
             +--ro link-attributes-sub-sub-tlvs
                +--ro unknown-tlvs
                   +--ro unknown-tlv* []
                      +--ro type?     uint16
                      +--ro length?   uint16
                      +--ro value?    yang:hex-string
     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/ospfv3-e-lsa:e-router
               /ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv:
       +--ro app-specific-link-attr-sub-tlvs
          +--ro asla-sub-tlvs* []
             +--ro sabm-length?                    uint8
             +--ro udabm-length?                   uint8
             +--ro sabm
             |  +--ro sabm-bits*   identityref
             +--ro udabm



Qu & Lindem              Expires 7 January 2026                 [Page 7]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             +--ro link-attributes-sub-sub-tlvs
                +--ro unknown-tlvs
                   +--ro unknown-tlv* []
                      +--ro type?     uint16
                      +--ro length?   uint16
                      +--ro value?    yang:hex-string

   <CODE BEGINS> file "ietf-ospf-link-attr@2025-07-05.yang"
   module ietf-ospf-link-attr {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr";

     prefix ospf-link-attr;

     import ietf-routing {
       prefix rt;
       reference
         "RFC 8349: A YANG Data Model for Routing
                    Management (NMDA Version)";
     }

     import ietf-ospf {
       prefix ospf;
       reference
         "RFC 9129: YANG Data Model for the OSPF Protocol";
     }

     import ietf-ospfv3-extended-lsa {
       prefix ospfv3-e-lsa;
       reference
         "RFC 9587: YANG Data Model for OSPFv3 Extended Link
                    State Advertisements (LSAs)";
     }

     organization
       "IETF LSR - Link State Routing Working Group";

     contact
        "WG Web:   <https://datatracker.ietf.org/wg/lsr/>
         WG List:  <mailto:lsr@ietf.org>

         Author:   Yingzhen Qu
                   <mailto:yingzhen.ietf@gmail.com>
         Author:   Acee Lindem
                   <mailto:acee.ietf@gmail.com>
         Author:   Stephane Litkowski
                   <mailto:slitkows.ietf@gmail.com>";




Qu & Lindem              Expires 7 January 2026                 [Page 8]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


     description
       "This YANG module defines the configuration and operational
        state for OSPF application specific link attributes feature
        as defined in RFC 9492.

        This YANG model conforms to the Network Management
        Datastore Architecture (NMDA) as described in RFC 8342.

        Copyright (c) 2025 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject to
        the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        This version of this YANG module is part of RFC XXXX;
        see the RFC itself for full legal notices.

        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
        'MAY', and 'OPTIONAL' in this document are to be interpreted as
        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
        they appear in all capitals, as shown here.";

     reference "RFC XXXX";

     revision 2025-07-05 {
       description
         "Initial version";
       reference
         "RFC XXXX: OSPF YANG Model Augmentations for Additional
                    Features - Version 1.";
     }

     identity sabm-bit {
       description
         "Base identity for SABM bits.";
     }

     identity rsvp-te-bit {
       base sabm-bit;
       description
         "R bit, RSVP-TE.";
     }




Qu & Lindem              Expires 7 January 2026                 [Page 9]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


     identity sr-policy-bit {
       base sabm-bit;
       description
         "S bit, Segment Routing Policy.";
     }

     identity lfa-bit {
       base sabm-bit;
       description
         "F bit, Loop Free Alternate (LFA). Includes all LFA types.";
     }

     identity flex-algo-bit {
       base sabm-bit;
       description
         "X bit, flexible algorithm.";
       reference
         "RFC 9350: IGP Flexible Algorithm, Section 12.";
     }

     grouping app-specific-link-attr-sub-tlvs {
       description
         "OSPF Application-Specific Link Attributes (ASLA) sub-TLV.
          The ASLA sub-TLV is a sub-TLV of the OSPFv2 Extended Link
          TLV (RFC7684) and OSPFv3 Router-Link TLV (RFC8362).";

       container app-specific-link-attr-sub-tlvs {
         description "Application-Specific Link Attributes sub-TLV.";
         list asla-sub-tlvs {
           leaf sabm-length {
             type uint8;
             description
               "Standard Application Identifier Bit Mask Length in
                octets.";
           }
           leaf udabm-length {
             type uint8;
             description
             "User Defined Application Identifier Bit Mask Length
             in octets.";
           }
           container sabm {
             leaf-list sabm-bits {
               type identityref {
                 base sabm-bit;
               }
               description
                 "SABM bits list. This list will contain



Qu & Lindem              Expires 7 January 2026                [Page 10]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


                  identities for the bits which are set in the
                  SABA bits.";
             }
             description
               "Standard Application Identifier Bit Mask.";
           }
           container udabm {
             description
               "User Defined Application Identifier Bit Mask.
                This container is to be augmented by user defined
                applications.";
           }
           container link-attributes-sub-sub-tlvs {
             uses ospf:unknown-tlvs;
             description
               "Link Attributes sub-sub-TLVs.";
           }
           description
             "List of application-Specific Link Attributes sub-TLVs.";
         }
       }
     }

     /* Configuration */
     augment "/rt:routing/rt:control-plane-protocols"
           + "/rt:control-plane-protocol/ospf:ospf" {
       when "../rt:type = 'ospf:ospfv2' or "
          + "../rt:type = 'ospf:ospfv3'" {
         description
           "This augments the OSPF routing protocol when used.";
       }
       description
         "This augments OSPF protocol configuration
          with application-specific link attributes.";

       container ospf-link-attr {
         choice link-attr-op-mode {
           mandatory "true";
           leaf legacy {
             type empty;
             description
               "Only send legacy advertisements.";
           }
           leaf transition {
             type empty;
             description
               "Send both application-specific and legacy
                advertisements.";



Qu & Lindem              Expires 7 January 2026                [Page 11]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


           }
           leaf app-specific{
             type empty;
             description
               "Only send application-specific advertisements.";
           }
           description
             "Link attributes mode";
         }
         description
           "Link attributes operation mode.";
       }
     }

     /* Database */
     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:extended-link-opaque/ospf:extended-link-tlv" {
       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
         "OSPF Application-Specific Link Attributes (ASLA) sub-TLV is
          a sub-TLV of OSPFv2 Extended Link TLV (RFC7684).";

       uses app-specific-link-attr-sub-tlvs;
     }

     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/ospfv3-e-lsa:e-router/"
          + "ospfv3-e-lsa:e-router-tlvs/ospfv3-e-lsa:link-tlv" {
       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
               E-Router LSAs";
          }



Qu & Lindem              Expires 7 January 2026                [Page 12]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


       description
         "Augment OSPFv3 Area scope router-link TLV.";

       uses app-specific-link-attr-sub-tlvs;
     }
   }
   <CODE ENDS>

5.  YANG Module for OSPF Flexible Algorithm

   This document defines a YANG module for OSPF Flexible Algorithm as
   defined in [RFC9350].  It is an augmentation of the OSPF base model.

   module: ietf-ospf-flex-algo

     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf:
       +--rw ospf-flex-algo
          +--rw flex-algo* [algo-number]
             +--rw algo-number             uint8
             +--rw advertise-definition?   boolean
             +--rw admin-groups
             |       {te-types:extended-admin-groups,
             |        te-types:named-extended-admin-groups}?
             |  +--rw exclude-admin-groups*       leafref
             |  +--rw include-any-admin-groups*   leafref
             |  +--rw include-all-admin-groups*   leafref
             +--rw exclude-srlgs*
             |       -> /te:te/globals/named-srlgs/named-srlg/name
             |       {te-types:named-srlg-groups}?
             +--rw calc-type?              identityref
             +--rw metric-type?            identityref
             +--rw prefix-metric!
             +--rw priority?               uint8
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:interfaces/ospf:interface/ospf:database
               /ospf:link-scope-lsa-type/ospf:link-scope-lsas
               /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
               /ospf:body/ospf:opaque/ospf:ri-opaque:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8
             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64



Qu & Lindem              Expires 7 January 2026                [Page 13]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16
                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     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:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8
             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16
                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:database
               /ospf:as-scope-lsa-type/ospf:as-scope-lsas
               /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
               /ospf:body/ospf:opaque/ospf:ri-opaque:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8



Qu & Lindem              Expires 7 January 2026                [Page 14]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16
                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:interfaces/ospf:interface/ospf:database
               /ospf:link-scope-lsa-type/ospf:link-scope-lsas
               /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3
               /ospf:body/ospf:router-information:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8
             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16
                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:database/ospf:area-scope-lsa-type



Qu & Lindem              Expires 7 January 2026                [Page 15]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


               /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
               /ospf:ospfv3/ospf:ospfv3/ospf:body
               /ospf:router-information:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8
             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16
                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:database
               /ospf:as-scope-lsa-type/ospf:as-scope-lsas
               /ospf:as-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3
               /ospf:body/ospf:router-information:
       +--ro fad-tlvs
          +--ro fad-tlv* []
             +--ro flex-algo?              uint8
             +--ro metric-type?            identityref
             +--ro calc-type?              identityref
             +--ro priority?               uint8
             +--ro fa-ex-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-any-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fa-in-all-ag-sub-tlv
             |  +--ro extended-admin-groups*   uint64
             +--ro fad-flags-sub-tlv
             |  +--ro fad-flags*   identityref
             +--ro fa-ex-srlg-sub-tlv
             |  +--ro srlgs*   uint32
             +--ro unknown-tlvs
                +--ro unknown-tlv* []
                   +--ro type?     uint16



Qu & Lindem              Expires 7 January 2026                [Page 16]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


                   +--ro length?   uint16
                   +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:interfaces/ospf:interface/ospf:database
               /ospf:link-scope-lsa-type/ospf:link-scope-lsas
               /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
               /ospf:body/ospf:opaque/ospf:extended-prefix-opaque
               /ospf:extended-prefix-tlv:
       +--ro fapm-sub-tlvs
          +--ro fapm-sub-tlv* []
             +--ro flex-algo?    uint8
             +--ro fapm-flags*   identityref
             +--ro metric?       uint32
     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:extended-prefix-opaque/ospf:extended-prefix-tlv:
       +--ro fapm-sub-tlvs
          +--ro fapm-sub-tlv* []
             +--ro flex-algo?    uint8
             +--ro fapm-flags*   identityref
             +--ro metric?       uint32
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:database
               /ospf:as-scope-lsa-type/ospf:as-scope-lsas
               /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2
               /ospf:body/ospf:opaque/ospf:extended-prefix-opaque
               /ospf:extended-prefix-tlv:
       +--ro fapm-sub-tlvs
          +--ro fapm-sub-tlv* []
             +--ro flex-algo?    uint8
             +--ro fapm-flags*   identityref
             +--ro metric?       uint32
     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
               /ospfv3-e-lsa:e-inter-area-prefix
               /ospfv3-e-lsa:e-inter-prefix-tlvs
               /ospfv3-e-lsa:inter-prefix-tlv:
       +--ro fapm-sub-tlvs
          +--ro fapm-sub-tlv* []
             +--ro flex-algo?    uint8
             +--ro fapm-flags*   identityref



Qu & Lindem              Expires 7 January 2026                [Page 17]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             +--ro metric?       uint32
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:database
               /ospf:as-scope-lsa-type/ospf:as-scope-lsas
               /ospf:as-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3
               /ospf:body/ospfv3-e-lsa:e-as-external
               /ospfv3-e-lsa:e-external-tlvs
               /ospfv3-e-lsa:external-prefix-tlv:
       +--ro fapm-sub-tlvs
          +--ro fapm-sub-tlv* []
             +--ro flex-algo?    uint8
             +--ro fapm-flags*   identityref
             +--ro metric?       uint32
     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:
       +--ro eia-asbr-opaque
          +--ro eia-asbr-tlv
          |  +--ro asbr-rtr-id?     rt-types:router-id
          |  +--ro faam-sub-tlvs
          |  |  +--ro faam-sub-tlv* []
          |  |     +--ro flex-algo?   uint8
          |  |     +--ro metric?      uint32
          |  +--ro unknown-tlvs
          |     +--ro unknown-tlv* []
          |        +--ro type?     uint16
          |        +--ro length?   uint16
          |        +--ro value?    yang:hex-string
          +--ro unknown-tlvs
             +--ro unknown-tlv* []
                +--ro type?     uint16
                +--ro length?   uint16
                +--ro value?    yang:hex-string
     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
               /ospfv3-e-lsa:e-inter-area-router
               /ospfv3-e-lsa:e-inter-router-tlvs
               /ospfv3-e-lsa:inter-router-tlv:
       +--ro faam-sub-tlvs
          +--ro faam-sub-tlv* []
             +--ro flex-algo?   uint8
             +--ro metric?      uint32




Qu & Lindem              Expires 7 January 2026                [Page 18]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   <CODE BEGINS> file "ietf-ospf-flex-algo@2025-07-05.yang"
   module ietf-ospf-flex-algo {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo";
     prefix ospf-flex-algo;

     import ietf-routing {
       prefix rt;
       reference "RFC 8349: A YANG Data Model for Routing
                  Management (NMDA Version)";
     }

     import ietf-routing-types {
       prefix "rt-types";
       reference "RFC 8294: Common YANG Data Types for the
                  Routing Area";
     }

     import ietf-te-types {
       prefix te-types;
       reference
         "RFC8776: Common YANG Data Types for Traffic Engineering.";
     }

     import ietf-ospf {
       prefix "ospf";
       reference "RFC 9129: YANG Data Model for the OSPF
                  Protocol";
     }

     import ietf-ospfv3-extended-lsa {
       prefix "ospfv3-e-lsa";
       reference "RFC 9587: YANG Data Model for OSPFv3 Extended Link
                  State Advertisements (LSAs)";
     }

     import ietf-te {
       prefix te;
     }

     import iana-igp-algo-types {
        prefix iana-algo-types;
     }

     import iana-igp-metric-types {
       prefix iana-metric-type;
     }




Qu & Lindem              Expires 7 January 2026                [Page 19]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


     organization
       "IETF LSR - Link State Routing Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/lsr/>
        WG List:  <mailto:lsr@ietf.org>


        Author:    Yingzhen Qu
                  <mailto:yingzhen.ietf@gmail.com>
        Author:    Acee Lindem
                  <mailto:acee.ietf@gmail.com>
        Author:    Stephane Litkowski
                  <mailto:slitkows.ietf@gmail.com>
       ";

     description
       "The YANG module defines the configuration and operational
        state for OSPF Flexible Algorithm as defined in RFC 9350.

        This YANG model conforms to the Network Management
        Datastore Architecture (NMDA) as described in RFC 8342.

        Copyright (c) 2025 IETF Trust and the persons identified as
        authors of the code.  All rights reserved.

        Redistribution and use in source and binary forms, with or
        without modification, is permitted pursuant to, and subject
        to the license terms contained in, the Revised BSD License set
        forth in Section 4.c of the IETF Trust's Legal Provisions
        Relating to IETF Documents
        (https://trustee.ietf.org/license-info).

        This version of this YANG module is part of RFC XXXX;
        see the RFC itself for full legal notices.

        The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
        NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
        'MAY', and 'OPTIONAL' in this document are to be interpreted as
        described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
        they appear in all capitals, as shown here.";


     reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm.";

     revision 2025-07-05 {
       description
         "Initial Version";
       reference



Qu & Lindem              Expires 7 January 2026                [Page 20]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         "RFC XXXX: OSPF YANG Model Augmentations for Additional
                    Features - Version 1.";
     }

     /* Identities */

     identity fad-flags {
       description
         "Base identity for OSPF FAD flags.";
     }

     identity m-bit {
       base fad-flags;
       description
         "M bit, when set, the flex-algo specific prefix and ASBR
          metric MUST be used for inter-area and external prefix
          calculation.";
     }

     identity fapm-flags {
       description
         "Base identity for OSPF flex-algo prefix metric flags.";
     }

     identity e-bit {
       base fapm-flags;
       description
         "External metric, if set, the metric specified is a
          type 2 external metric.";
     }

     /* Groupings */
     grouping fa-ex-ag-sub-tlv {
       container fa-ex-ag-sub-tlv {
         leaf-list extended-admin-groups {
           type uint64;
           description
             "Extended administrative group as defined in RFC 7308.";
         }
         description
           "The flex-algo exclude admin group sub-tlv.";
       }
       description
         "The flex-algo exclude admin group sub-tlv.";
     }

     grouping fa-in-any-ag-sub-tlv {
       container fa-in-any-ag-sub-tlv {



Qu & Lindem              Expires 7 January 2026                [Page 21]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         leaf-list extended-admin-groups {
           type uint64;
           description
             "Extended administrative group as defined in RFC 7308.";
         }
         description
           "The flex-algo include-any admin group sub-tlv.";
       }
       description
         "The flex-algo include-any admin group sub-tlv.";
     }

     grouping fa-in-all-ag-sub-tlv {
       container fa-in-all-ag-sub-tlv {
         leaf-list extended-admin-groups {
           type uint64;
           description
             "Extended administrative group as defined in RFC 7308.";
         }
         description
           "The flex-algo include-all admin group sub-tlv.";
       }
       description
         "The flex-algo include-all admin group sub-tlv.";
     }

     grouping fad-flags-sub-tlv {
       container fad-flags-sub-tlv {
         leaf-list fad-flags {
           type identityref {
             base fad-flags;
           }
           description
             "Flex-algo definition flags list.";
         }
         description
           "OSPF flex-algo definition flags.";
       }
       description
         "The flex-algo definition flags sub-tlv.";
     }

     grouping fa-ex-srlg-sub-tlv {
       container fa-ex-srlg-sub-tlv {
         leaf-list srlgs {
           type uint32;
           description
             "SRLG value as defined in RFC 4203.";



Qu & Lindem              Expires 7 January 2026                [Page 22]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         }
         description
           "The flex-algo exclude SRLG sub-tlv.";
       }
       description
         "The flex-algo exclude SRLG sub-tlv.";
     }

     grouping fad-tlvs {
       container fad-tlvs {
         list fad-tlv {
           leaf flex-algo {
             type uint8;
             description
               "Flex-algo number, value between 128 and 255 inclusive.";
           }
           leaf metric-type {
             type identityref {
               base iana-metric-type:metric-type;
             }
             description
               "Type of metric to be used during the calculation.";
           }
           leaf calc-type {
             type identityref {
               base iana-algo-types:algo-type;
             }
             description
               "IGP algorithm types, value from 0 to 127 as
               defined under 'Interior Gateway Protocol (IGP)
               Parameter' by IANA.";
           }
           leaf priority {
             type uint8;
               description
                 "Priority of the advertisement.";
           }

           uses fa-ex-ag-sub-tlv;
           uses fa-in-any-ag-sub-tlv;
           uses fa-in-all-ag-sub-tlv;
           uses fad-flags-sub-tlv;
           uses fa-ex-srlg-sub-tlv;
           uses ospf:unknown-tlvs;

           description
             "List of flex-algo definition TLVs.";
         }



Qu & Lindem              Expires 7 January 2026                [Page 23]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         description
           "OSPF Flexible Algorithm Definition TLV.";
       }
       description
         "OSPF Flexible Algorithm Definition (FAD) TLV.";
     }

     grouping fapm-sub-tlvs {
       container fapm-sub-tlvs {
         list fapm-sub-tlv {
           leaf flex-algo {
             type uint8;
             description
               "Flex-algo number, value between 128 and 255
                inclusive.";
           }
           leaf-list fapm-flags {
             type identityref {
               base fapm-flags;
             }
             description
               "Flex-algo prefix metric flags list.";
           }
           leaf metric {
             type uint32;
             description
               "Prefix metric.";
           }
           description
             "List of flex-algo prefix sub-tlvs.";
         }
         description
           "Flex-algo prefix metric sub-tlvs.";
       }
       description
         "Flexible Algorithm Prefix Metric (FAPM) sub-TLVs.";
     }

     grouping faam-sub-tlvs {
       container faam-sub-tlvs {
         list faam-sub-tlv {
           leaf flex-algo {
             type uint8;
             description
               "Flex-algo number, value between 128 and 255
                inclusive.";
           }
           leaf metric {



Qu & Lindem              Expires 7 January 2026                [Page 24]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             type uint32;
             description
               "Prefix metric.";
           }
           description
             "List of faam sub-tlvs.";
         }
         description
            "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs.";
       }
       description
         "Flexible Algorithm ASBR Metric (FAAM) Sub-TLVs.";
     }

     /* Configurations */

     augment "/rt:routing/rt:control-plane-protocols"
        + "/rt:control-plane-protocol/ospf:ospf" {
       when "../rt:type = 'ospf:ospfv2' or "
          + "../rt:type = 'ospf:ospfv3'" {
         description
           "This augments the OSPF routing protocol when used.";
       }
       description
         "This augments OSPF protocol with Flexible
          Algorithm.";


       container ospf-flex-algo {
         list flex-algo {
           key "algo-number";

           leaf algo-number {
             type uint8 {
               range "128..255";
             }
             description
               "An identifier in the range 128-255 that's associated
               with the Flexible Algorithm Definition.";
           }

           leaf advertise-definition {
             type boolean;
             default true;
             description
               "Enable to advertise the flex-algo definition.";
           }




Qu & Lindem              Expires 7 January 2026                [Page 25]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


           container admin-groups {
             if-feature "te-types:extended-admin-groups";
             if-feature "te-types:named-extended-admin-groups";
             leaf-list exclude-admin-groups {
               type leafref {
                 path "/te:te/te:globals/te:named-admin-groups/"
                    + "te:named-admin-group/te:name";
               }
               description
                 "Exclude rule used during the flex-algo
                 path computation.";
             }
             leaf-list include-any-admin-groups {
               type leafref {
                 path "/te:te/te:globals/te:named-admin-groups/"
                    + "te:named-admin-group/te:name";
               }
               description
                 "Include-any rule used during the flex-algo
                 path computation.";
             }
             leaf-list include-all-admin-groups {
               type leafref {
                 path "/te:te/te:globals/te:named-admin-groups/"
                    + "te:named-admin-group/te:name";
               }
               description
                 "Include-all rule used during the flex-algo
                 path computation.";
             }
             description
               "Specify links for the flex-algo path computation.";
           }

           leaf-list exclude-srlgs {
             if-feature "te-types:named-srlg-groups";
             type leafref {
               path "/te:te/te:globals/te:named-srlgs/te:named-srlg/"
                  + "te:name";
             }
             description
               "Shared Risk Link Groups (SRLGs) to be excluded during
               the flex-algo path computation.";
           }

           leaf calc-type {
             type identityref {
               base iana-algo-types:algo-type;



Qu & Lindem              Expires 7 January 2026                [Page 26]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


             }
             default iana-algo-types:algo-spf;
             description
               "Calcuation-type. Value from 0-127 inclusive from the IANA
                'IGP Algorithm Types' registry defined under the 'Interior
                Gateway Protocol (IGP) Parameters' registry.";
           }

           leaf metric-type {
             type identityref {
               base iana-metric-type:metric-type;
             }
             description
               "Type of metric to be used during the calculation.";
           }

           container prefix-metric {
             presence
               "Use flex-algo specific prefix metric.";
             description
               "Use flex-algo prefix metric.";
           }

           leaf priority {
             type uint8;
             description
               "Priority of the advertisement.";
           }

           description
             "List of flex-algo configurations.";
         }
         description
           "Flexible Algorithm configuration.";
       }
     }

     /* Database */

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/ospf:area/"
           + "ospf:interfaces/ospf:interface/ospf:database/"
           + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
           + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
           + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" {
       when "../../../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {



Qu & Lindem              Expires 7 January 2026                [Page 27]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         description
           "This augmentation is only valid for OSPFv2.";
       }

       description
         "Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA.";

       uses fad-tlvs;
     }

     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 "../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }

       description
         "Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA.";

       uses fad-tlvs;
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:database/"
           + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
           + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
           + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" {
       when "../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA.";

       uses fad-tlvs;
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"



Qu & Lindem              Expires 7 January 2026                [Page 28]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


           + "ospf:ospf/ospf:areas/ospf:area/"
           + "ospf:interfaces/ospf:interface/ospf:database/"
           + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
           + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body/ospf:router-information" {
       when "../../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "This augmentation is only valid for OSPFv3.";
       }

       description
         "Flex-algo definition TLVs for OSPFv3 Router
          Information (RI) LSA.";

       uses fad-tlvs;
     }

     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 "../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "This augmentation is only valid for OSPFv3.";
       }

       description
         "Flex-algo definition TLVs for OSPFv3 Router
          Information (RI) LSA.";

       uses fad-tlvs;
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:database/"
           + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
           + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body/ospf:router-information" {
       when "../../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "This augmentation is only valid for OSPFv3.";



Qu & Lindem              Expires 7 January 2026                [Page 29]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


       }
       description
         "Flex-algo definition TLVs for OSPFv3 Router Information LSA.";

       uses fad-tlvs;
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/ospf:area/"
           + "ospf:interfaces/ospf:interface/ospf:database/"
           + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
           + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/"
           + "ospf:ospfv2/ospf:body/ospf:opaque/"
           + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" {
       when "../../../../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "Flex-algo prefix metric sub-TLVs for OSPFv2 extended
          prefix TLV in type 9 opaque LSA.";
       uses fapm-sub-tlvs;
     }

     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:extended-prefix-opaque/ospf:extended-prefix-tlv" {
       when "../../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "Flex-algo prefix metric sub-TLVs for OSPFv2 extended
          prefix TLV in type 10 opaque LSA.";
       uses fapm-sub-tlvs;
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:database/"



Qu & Lindem              Expires 7 January 2026                [Page 30]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


           + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
           + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/"
           + "ospf:ospfv2/ospf:body/ospf:opaque/"
           + "ospf:extended-prefix-opaque/"
           + "ospf:extended-prefix-tlv" {
       when "../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "Flex-algo prefix metric sub-TLVs for OSPFv2 extended
          prefix TLV in type 11 opaque LSA.";
       uses fapm-sub-tlvs;
     }

     /* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area
        Prefix 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/ospfv3-e-lsa:e-inter-area-prefix/"
       + "ospfv3-e-lsa:e-inter-prefix-tlvs/"
       + "ospfv3-e-lsa:inter-prefix-tlv" {
       when "../../../../../../../../../../../../"
         + "rt:type = 'ospf:ospfv3'" {
         description
           "This augmentation is only valid for OSPFv3
            E-Router LSAs";
       }
       uses fapm-sub-tlvs;
       description
         "OSPFv3 Area-Scoped Inter-Area Prefix TLV.";
     }

     /* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */
     augment "/rt:routing/"
       + "rt:control-plane-protocols/rt:control-plane-protocol/"
       + "ospf:ospf/ospf:database/"
       + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
       + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
       + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/"
       + "ospfv3-e-lsa:e-external-tlvs/"
       + "ospfv3-e-lsa:external-prefix-tlv" {
       when "'ospf:../../../../../../../../../"
         + "rt:type' = 'ospf:ospfv3'" {



Qu & Lindem              Expires 7 January 2026                [Page 31]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


         description
           "This augmentation is only valid for OSPFv3.";
       }
       uses fapm-sub-tlvs;
       description
         "OSPFv3 AS-Scoped External Prefix TLV.";
     }

     /* OSPFv2 Extended Inter-Area ASBR LSA */
     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" {
       when "../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv2'" {
         description
           "This augmentation is only valid for OSPFv2.";
       }
       description
         "OSPFv2 Extended Inter-Area ASBR LSA in type 10
         opaque LSA.";

       container eia-asbr-opaque {
         container eia-asbr-tlv {
           leaf asbr-rtr-id {
             type rt-types:router-id;
             description
               "The OSPF Router ID of the ASBR.";
           }
           uses faam-sub-tlvs;
           uses ospf:unknown-tlvs;
           description
             "EIA-ASBR TLV, used to advertise additional attributes
              associated with the reachability of an ASBR.";
         }
         uses ospf:unknown-tlvs;

         description
           "OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA.";
       }
     }

     /* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */
     augment "/rt:routing/"
       + "rt:control-plane-protocols/rt:control-plane-protocol/"



Qu & Lindem              Expires 7 January 2026                [Page 32]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


       + "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/ospfv3-e-lsa:e-inter-area-router/"
       + "ospfv3-e-lsa:e-inter-router-tlvs/"
       + "ospfv3-e-lsa:inter-router-tlv" {
       when "../../../../../../../../../../../../"
         + "rt:type = 'ospf:ospfv3'" {
         description
           "This augmentation is only valid for OSPFv3
            Inter-Area-Router TLV.";
       }
       uses faam-sub-tlvs;
       description
         "OSPFv3 Area-Scoped Inter-Area-Router TLV.";
     }
   }
   <CODE ENDS>

6.  Security Considerations

   The YANG modules specified in this document define a schema for data
   that is designed to be accessed via network management protocols such
   as NETCONF [RFC6241] or RESTCONF [RFC8040].  The lowest NETCONF layer
   is the secure transport layer, and the mandatory-to-implement secure
   transport is Secure Shell (SSH) [RFC6242].  The lowest RESTCONF layer
   is HTTPS, and the mandatory-to-implement secure transport is TLS
   [RFC5246].

   The NETCONF access control model [RFC6536] provides the means to
   restrict access for particular NETCONF or RESTCONF users to a pre-
   configured subset of all available NETCONF or RESTCONF protocol
   operations and content.

   There are a number of data nodes defined in the modules that are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., edit-config)
   to these data nodes without proper protection can have a negative
   effect on network operations.











Qu & Lindem              Expires 7 January 2026                [Page 33]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   Some of the readable data nodes in the modules may be considered
   sensitive or vulnerable in some network environments.  It is thus
   important to control read access (e.g., via get, get-config, or
   notification) to these data nodes.  The exposure of the Link State
   Database (LSDB) will expose the detailed topology of the network.
   This may be undesirable since both due to the fact that exposure may
   facilitate other attacks.  Additionally, network operators may
   consider their topologies to be sensitive confidential data.

7.  IANA Considerations

7.1.  Registering YANG Modules

   This document registers URIs in the IETF XML registry [RFC3688].
   Following the format in [RFC3688], the following registrations are
   requested to be made:

      URI: urn:ietf:params:xml:ns:yang:iana-igp-algo-types
      Registrant Contact: The IESG.
      XML: N/A, the requested URI is an XML namespace.

      URI: urn:ietf:params:xml:ns:yang:iana-igp-metric-types
      Registrant Contact: The IESG.
      XML: N/A, the requested URI is an XML namespace.

      URI: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr
      Registrant Contact: The IESG.
      XML: N/A, the requested URI is an XML namespace.

      URI: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo
      Registrant Contact: The IESG.
      XML: N/A, the requested URI is an XML namespace.

   This document registers the YANG modules in the YANG Module Names
   registry [RFC6020].

      name: iana-igp-algo-types
      Maintained by IANA?  Y
      namespace: urn:ietf:params:xml:ns:yang:iana-igp-algo-types
      prefix: iana-algo-types
      reference: RFC XXXX

      name: iana-igp-metric-types
      Maintained by IANA?  Y
      namespace: urn:ietf:params:xml:ns:yang:iana-igp-metric-types
      prefix: iana-metric-types
      reference: RFC XXXX




Qu & Lindem              Expires 7 January 2026                [Page 34]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


      name: ietf-ospf-link-attr
      Maintained by IANA?  N
      namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-link-attr
      prefix: ospf-link-attr
      reference: RFC XXXX

      name: ietf-ospf-flex-algo
      Maintained by IANA?  N
      namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo
      prefix: ospf-flex-algo
      reference: RFC XXXX

7.2.  IANA IGP Algorithm Types Module

   This document defines the initial version of the IANA-maintained
   "iana-algo-types" YANG module (Section 2).  The latest version of the
   YANG module is available from the "YANG Parameters" registry
   [IANA-YANG-Parameters].

   IANA needs to add this note to the "YANG Module Names" registry:

   |  New values must not be directly added to the "iana-algo-types"
   |  YANG modules.  They must instead be added to the "IGP Algorithm
   |  Types" registry in the "Interior Gateway Protocol (IGP)
   |  Parameters" registry group.

   The name of the "identity" is "algo-" plus the lowercase of the
   abbreviation of the "Description".  The "identity" statement should
   have the following substatements defined:

     "base": contains the value of "algo-type".
     "description": contains the first sentence in the "Description".
     "reference": the corresponding RFC information.

   When the iana-algo-types YANG module is updated, a new "revision"
   statement must be added in from of the existing revision statements.

7.3.  IANA IGP Metric-Type Module

   This document defines the initial version of the IANA-maintained
   "iana-metric-types" YANG module (Section 3).  The latest version of
   the YANG module is available from the "YANG Parameters" registry
   [IANA-YANG-Parameters].

   IANA needs to add this note to the "YANG Module Names" registry:






Qu & Lindem              Expires 7 January 2026                [Page 35]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   |  New values must not be directly added to the "iana-metric-types"
   |  YANG modules.  They must instead be added to the "IGP Metric-Type"
   |  registry in the "Interior Gateway Protocol (IGP) Parameters"
   |  registry group.

   The name of the "identity" is the metric name in the "Description"
   separated by "-".  The "identity" statement should have the following
   substatements defined:

     "base": contains the value of "metric-type".
     "description": copy from the "Description".
     "reference": the corresponding RFC information.

   When the iana-metric-types YANG module is updated, a new "revision"
   statement must be added in from of the existing revision statements.

8.  Acknowledgements

   This document was produced using Marshall Rose's xml2rfc tool.

   The YANG model was developed using the suite of YANG tools written
   and maintained by numerous authors.

9.  Normative References

   [IANA-IGP-ALGO-Types]
              IANA, "IGP Algorithm Types",
              <https://www.iana.org/assignments/igp-parameters>.

   [IANA-IGP-Metric-Types]
              IANA, "IGP Metric-Type",
              <https://www.iana.org/assignments/igp-parameters>.

   [IANA-YANG-Parameters]
              IANA, "YANG Module Names",
              <https://www.iana.org/assignments/yang-parameters>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              DOI 10.17487/RFC3688, January 2004,
              <https://www.rfc-editor.org/info/rfc3688>.






Qu & Lindem              Expires 7 January 2026                [Page 36]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   [RFC5246]  Dierks, T. and E. Rescorla, "The Transport Layer Security
              (TLS) Protocol Version 1.2", RFC 5246,
              DOI 10.17487/RFC5246, August 2008,
              <https://www.rfc-editor.org/info/rfc5246>.

   [RFC6020]  Bjorklund, M., Ed., "YANG - A Data Modeling Language for
              the Network Configuration Protocol (NETCONF)", RFC 6020,
              DOI 10.17487/RFC6020, October 2010,
              <https://www.rfc-editor.org/info/rfc6020>.

   [RFC6241]  Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
              and A. Bierman, Ed., "Network Configuration Protocol
              (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
              <https://www.rfc-editor.org/info/rfc6241>.

   [RFC6242]  Wasserman, M., "Using the NETCONF Protocol over Secure
              Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
              <https://www.rfc-editor.org/info/rfc6242>.

   [RFC6536]  Bierman, A. and M. Bjorklund, "Network Configuration
              Protocol (NETCONF) Access Control Model", RFC 6536,
              DOI 10.17487/RFC6536, March 2012,
              <https://www.rfc-editor.org/info/rfc6536>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

   [RFC8040]  Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
              Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
              <https://www.rfc-editor.org/info/rfc8040>.

   [RFC8349]  Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
              Routing Management (NMDA Version)", RFC 8349,
              DOI 10.17487/RFC8349, March 2018,
              <https://www.rfc-editor.org/info/rfc8349>.

   [RFC9129]  Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
              "YANG Data Model for the OSPF Protocol", RFC 9129,
              DOI 10.17487/RFC9129, October 2022,
              <https://www.rfc-editor.org/info/rfc9129>.

   [RFC9350]  Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K.,
              and A. Gulko, "IGP Flexible Algorithm", RFC 9350,
              DOI 10.17487/RFC9350, February 2023,
              <https://www.rfc-editor.org/info/rfc9350>.





Qu & Lindem              Expires 7 January 2026                [Page 37]

Internet-Draft        OSPF ASLA and Flex-Algo YANG             July 2025


   [RFC9492]  Psenak, P., Ed., Ginsberg, L., Henderickx, W., Tantsura,
              J., and J. Drake, "OSPF Application-Specific Link
              Attributes", RFC 9492, DOI 10.17487/RFC9492, October 2023,
              <https://www.rfc-editor.org/info/rfc9492>.

Authors' Addresses

   Yingzhen Qu
   Futurewei Technologies
   United States of America
   Email: yingzhen.ietf@gmail.com


   Acee Lindem
   Arrcus, Inc.
   United States of America
   Email: acee.ietf@gmail.com


































Qu & Lindem              Expires 7 January 2026                [Page 38]
