YANG Data Model for OSPF Application-Specific Link Attributes and Flexible Algorithm
draft-ietf-lsr-ospf-flex-algo-yang-08
| Document | Type | Active Internet-Draft (lsr WG) | |
|---|---|---|---|
| Authors | Yingzhen Qu , Acee Lindem | ||
| Last updated | 2026-05-03 | ||
| RFC stream | Internet Engineering Task Force (IETF) | ||
| Intended RFC status | Proposed Standard | ||
| Formats | |||
| Yang Validation | 0 errors, 0 warnings | ||
| Reviews |
YANGDOCTORS Early review
(of
-00)
by Dhruv Dhody
Almost ready
SECDIR IETF Last Call Review due 2026-03-30
Incomplete
|
||
| Additional resources | Mailing list discussion | ||
| Stream | WG state | Submitted to IESG for Publication | |
| Document shepherd | Christian Hopps | ||
| Shepherd write-up | Show Last changed 2026-02-03 | ||
| IESG | IESG state | Waiting for AD Go-Ahead | |
| Action Holders | |||
| Consensus boilerplate | Yes | ||
| Telechat date | (None) | ||
| Responsible AD | Gunter Van de Velde | ||
| Send notices to | chopps@chopps.org | ||
| IANA | IANA review state | Version Changed - Review Needed | |
| IANA expert review state | Expert Reviews OK |
draft-ietf-lsr-ospf-flex-algo-yang-08
Internet Y. Qu
Internet-Draft Futurewei Technologies
Intended status: Standards Track A. Lindem
Expires: 4 November 2026 Arrcus, Inc.
3 May 2026
YANG Data Model for OSPF Application-Specific Link Attributes and
Flexible Algorithm
draft-ietf-lsr-ospf-flex-algo-yang-08
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, IGP Metric-Types, and IGP Link Attribute Applications.
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 4 November 2026.
Copyright Notice
Copyright (c) 2026 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 4 November 2026 [Page 1]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
Table of Contents
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2
2. IANA IGP Algorithm Types Module . . . . . . . . . . . . . . . 3
3. IANA IGP Metric Types Module . . . . . . . . . . . . . . . . 5
4. IANA IGP Link Attribute Applications Module . . . . . . . . . 7
5. YANG Module for OSPF Application-Specific Link Attributes . . 10
6. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 17
7. Security Considerations . . . . . . . . . . . . . . . . . . . 37
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38
8.1. Registering YANG Modules . . . . . . . . . . . . . . . . 38
8.2. IANA IGP Algorithm Types Module . . . . . . . . . . . . . 40
8.3. IANA IGP Metric-Type Module . . . . . . . . . . . . . . . 41
8.4. IANA IGP Link Attribute Applications Module . . . . . . . 42
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 43
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 43
10.1. Normative References . . . . . . . . . . . . . . . . . . 43
10.2. Informative References . . . . . . . . . . . . . . . . . 45
Appendix A. Example OSPF Flex-Algo Configuration (XML) . . . . . 46
Appendix B. Example OSPF Flex-Algo Configuration (JSON) . . . . 48
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49
1. Overview
This document defines YANG [RFC7950] data modules augmenting the IETF
OSPF YANG model [RFC9129], which itself augments the IETF Routing
model [RFC8349], to provide support for both OSPF Flexible Algorithm
as defined in [RFC9350] and OSPF Application-Specific Link Attributes
as defined in [RFC9492].
Five YANG modules are 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 is the
initial version of the IANA-maintained YANG module for IGP Link
Attribute Application types. The fourth module is to support OSPF
Application-Specific Link Attributes, and the fifth module augments
the IETF OSPF YANG data model to support OSPF Flex Algorithm.
1.1. Requirements Language
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 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here.
Qu & Lindem Expires 4 November 2026 [Page 2]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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.
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].
This YANG module references [RFC8665].
<CODE BEGINS> file "iana-igp-algo-types@2026-03-30.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) 2026 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
Qu & Lindem Expires 4 November 2026 [Page 3]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry group
(https://www.iana.org/assignments/yang-parameters).
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
The latest version of this YANG module is available at
https://www.iana.org/assignments/yang-parameters.";
revision 2026-03-30 {
description
"Initial Version";
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and 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";
}
Qu & Lindem Expires 4 November 2026 [Page 4]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
}
<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.
This document defines the initial version of the IANA-maintained YANG
module for IGP metric types that mirrors the IANA "IGP Metric-Type"
registry [IANA-IGP-Metric-Types].
This YANG module references [RFC3630], [RFC5305], [RFC7471],
[RFC8570], [RFC9350], and [RFC9843].
<CODE BEGINS> file "iana-igp-metric-types@2026-03-30.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) 2026 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Qu & Lindem Expires 4 November 2026 [Page 5]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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).
All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry group
(https://www.iana.org/assignments/yang-parameters).
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
The latest version of this YANG module is available at
https://www.iana.org/assignments/yang-parameters.";
revision 2026-03-30 {
description
"Initial Version";
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and 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.";
reference
"RFC9350: IGP Flexible Algorithm";
}
identity min-unidirectional-link-delay {
base metric-type;
description
"Min Unidirectional Link Delay as defined in RFC 8570
and Section 4.2 and RFC 7471 Section 4.2.";
Qu & Lindem Expires 4 November 2026 [Page 6]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
reference
"RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions
RFC 9350: IGP Flexible Algorithm";
}
identity te-default-metric {
base metric-type;
description
"Traffic Engineering Default Metric as defined in RFC 5305
Section 3.7 and Traffic Engineering Metric as defined in
RFC3630, Section 2.5.5.";
reference
"RFC 3630: OSPF Traffic Engineering
RFC 5305: IS-IS Traffic Engineering
RFC 9350: IGP Flexible Algorithm";
}
identity bandwidth-metric {
base metric-type;
description
"Bandwidth metric.";
reference
"RFC 9843: IGP Flexible Algorithms: Bandwidth, Delay,
Metrics, and Constraints, Sections 4 and 5";
}
}
<CODE ENDS>
4. IANA IGP Link Attribute Applications Module
IANA has created a registry titled "Link Attribute Application
Identifiers" under the "Interior Gateway Protocol (IGP) Parameters"
registry group to identify IGP application types with application-
specific link attributes. Module iana-igp-link-attr-apps is an IANA-
maintained module, which defines the identities for the link
attribute application IDs as in the IANA "Link Attribute Application
Identifiers" registry.
This module is maintained by IANA and will be updated if and when
there is any change to the registry.
This document defines the initial version of the IANA-maintained YANG
module for IGP application types that mirrors the IANA "Link
Attribute Application Identifiers" registry [IANA-Link-Attr-Apps].
This YANG module references [RFC9492].
Qu & Lindem Expires 4 November 2026 [Page 7]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
<CODE BEGINS> file "iana-igp-link-attr-apps@2026-04-14.yang"
module iana-igp-link-attr-apps {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:iana-igp-link-attr-apps";
prefix iana-link-attr-app;
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) Application IDs used for Link Attributes.
This YANG module is maintained by IANA and reflects the 'Link
Attribute Application Identifiers' registry.
Copyright (c) 2026 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).
All revisions of IETF and IANA published modules can be found
at the YANG Parameters registry group
(https://www.iana.org/assignments/yang-parameters).
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
The latest version of this YANG module is available at
https://www.iana.org/assignments/yang-parameters.";
Qu & Lindem Expires 4 November 2026 [Page 8]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
revision 2026-04-14 {
description
"Initial Version";
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
identity igp-link-attr-app {
description
"Base identity for Standard Applications";
reference
"RFC 9492: OSPF Application-Specific Link Attributes";
}
identity rsvp-te-app {
base igp-link-attr-app;
description
"RSVP Traffic Engineering (TE) Application - This
corresponds to Bit 0 (R-BIT) in the Standard Application
Bit Mask (SABM).";
reference
"RFC 3630: Traffic Engineering (TE) for OSPFv2
RFC 5329: Traffic Engineering Extensions to OSPFv3";
}
identity sr-policy-app {
base igp-link-attr-app;
description
"Segment Routing (SR) Policy Application - This
corresponds to Bit 1 (S-BIT) in the Standard Application
Bit Mask (SABM).";
reference
"RFC 8665: OSPF Extensions for Segment Routing
RFC 8666: OSPFv3 Extensions for Segment Routing";
}
identity lfa-app {
base igp-link-attr-app;
description
"Loop-Free Alternative (LFA) Application - This
corresponds to Bit 2 (F-BIT) in the Standard Application
Bit Mask (SABM).";
reference
"RFC 8102: Remote-LFA Node Protection and Manageability
RFC 9855: Topology Independent Fast Reroute Using
Segment Routing";
}
Qu & Lindem Expires 4 November 2026 [Page 9]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
identity flex-algo-app {
base igp-link-attr-app;
description
"Flexible Algorithm Application - This
corresponds to Bit 3 (X-BIT) in the Standard Application
Bit Mask (SABM).";
reference
"RFC 9350: IGP Flexible Algorithm, Section 12.";
}
}
<CODE ENDS>
5. YANG Module for OSPF Application-Specific Link Attributes
This document defined a YANG module for OSPF Application-Specific
Link Attributes (ASLA) as defined in [RFC9492].
The module augments OSPF router configuration with support for the
ASLA operation mode, enabling interoperability during the transition
from legacy advertisements to ASLA. In addition, both OSPFv2 and
OSPFv3 LSAs are augmented to include the TLVs defined in[RFC9492].
As far as whether or not an application-specific link atttribute is
included, only legacy attributes that are defined in [RFC9129] are
included. Additional atttributes will be included in these TLVs when
the augmentations for the corresponding legacy attributes are added.
This YANG module references [RFC8349], [RFC9129], [RFC9350],
[RFC9492], and [RFC9587] .
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:interfaces/ospf:interface:
+--rw ospf-asla
+--rw interface-asla* [link-attr-app]
+--rw link-attr-app identityref
Qu & Lindem Expires 4 November 2026 [Page 10]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+--rw te-metric? uint32
+--rw admin-group? 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-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 te-metric? uint32
+--ro admin-group? 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: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
+--ro link-attributes-sub-sub-tlvs
+--ro te-metric? uint32
+--ro admin-group? uint32
+--ro unknown-tlvs
+--ro unknown-tlv* []
+--ro type? uint16
+--ro length? uint16
+--ro value? yang:hex-string
Qu & Lindem Expires 4 November 2026 [Page 11]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
<CODE BEGINS> file "ietf-ospf-link-attr@2026-04-29.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)";
}
import iana-igp-link-attr-apps {
prefix iana-link-attr-apps;
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
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>
";
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.
Qu & Lindem Expires 4 November 2026 [Page 12]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
Copyright (c) 2026 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.";
revision 2026-04-29 {
description
"Initial version";
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
grouping ospf-te-link-attrs {
description
"OSPF Application-Specific Link Attributes (ASLA)
inherited from the base OSPF TE attributes";
leaf te-metric {
type uint32;
description
"TE metric.";
reference
"RFC 3630 - Traffic Engineering (TE) Extensions
to OSPFv2";
}
leaf admin-group {
type uint32;
description
"Administrative Group / Resource Class/Color.";
reference
"RFC 3630 - Traffic Engineering (TE) Extensions
to OSPFv2";
}
reference
"RFC 3630 - Traffic Engineering (TE) Extensions
to OSPFv2";
}
grouping app-specific-link-attr-sub-tlvs {
description
Qu & Lindem Expires 4 November 2026 [Page 13]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"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 iana-link-attr-apps:igp-link-attr-app;
}
description
"SABM bits list. This list will contain identities
for the applications 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-te-link-attrs;
uses ospf:unknown-tlvs;
description
"Link Attributes sub-sub-TLVs.";
}
description
"List of application-Specific Link Attributes sub-TLVs.";
}
}
reference
Qu & Lindem Expires 4 November 2026 [Page 14]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"RFC 9492: OSPF Application-Specific Link Attributes";
}
/* 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 {
default 'legacy';
leaf legacy {
type empty;
description
"Only send legacy advertisements.";
}
leaf transition {
type empty;
description
"Send both application-specific and legacy
advertisements.";
}
leaf app-specific {
type empty;
description
"Only send application-specific advertisements.";
}
description
"Link attributes mode. Default to legacy mode for
backward compatibility.";
}
description
"Link attributes operation mode.";
}
}
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/ospf:ospf/"
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" {
when "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2') or "
Qu & Lindem Expires 4 November 2026 [Page 15]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+ "derived-from(/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:type, 'ospf:ospfv2')" {
description
"This augments the OSPF interfaces.";
}
description
"This augments OSPF interface configuration
with Application Specific Link Attributes (ASLA).";
container ospf-asla {
list interface-asla {
key "link-attr-app";
leaf link-attr-app {
type identityref {
base iana-link-attr-apps:igp-link-attr-app;
}
description
"Application-specific attributes. Note that
when encoded, applications with identical
attributes may be included in the same sub-TLV.";
}
uses ospf-te-link-attrs;
description
"ASLA interface configuration.";
}
description
"Application specific link attributes configuration.";
}
}
/* 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;
Qu & Lindem Expires 4 November 2026 [Page 16]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
}
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";
}
description
"Augment OSPFv3 Area scope router-link TLV.";
uses app-specific-link-attr-sub-tlvs;
}
}
<CODE ENDS>
6. 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.
The module augments OSPF router configuration with support flexible
algorithms. In addition, both the OSPFv2 and OSPFv3 link-state
databases are augmented to include the TLVs defined in[RFC9350].
This YANG module references [RFC8349], [RFC9129], [RFC9350],
[RFC9587], and [I-D.ietf-yang-te].
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
Qu & Lindem Expires 4 November 2026 [Page 17]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+--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 algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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 algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
Qu & Lindem Expires 4 November 2026 [Page 18]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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 algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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
Qu & Lindem Expires 4 November 2026 [Page 19]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+--ro fad-tlv* []
+--ro algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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:ospfv3/ospf:ospfv3/ospf:body
/ospf:router-information:
+--ro fad-tlvs
+--ro fad-tlv* []
+--ro algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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
Qu & Lindem Expires 4 November 2026 [Page 20]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
/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 algo-number? uint8
+--ro metric-type? identityref
+--ro calc-type? identityref
+--ro priority? uint8
+--ro fa-ex-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-any-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--ro fa-in-all-ag-sub-tlv
| +--ro extended-admin-groups* uint32
+--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:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque
/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv:
+--ro fapm-sub-tlvs
+--ro fapm-sub-tlv* []
+--ro algo-number? 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 algo-number? uint8
+--ro fapm-flags* identityref
+--ro metric? uint32
Qu & Lindem Expires 4 November 2026 [Page 21]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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 algo-number? 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 algo-number? 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: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 algo-number? 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 algo-number? uint8
| | +--ro metric? uint32
Qu & Lindem Expires 4 November 2026 [Page 22]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
| +--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 algo-number? uint8
+--ro metric? uint32
notifications:
+---n flex-algo-not-supported
+--ro routing-protocol-name? leafref
+--ro algo-number? uint8
<CODE BEGINS> file "ietf-ospf-flex-algo@2026-04-29.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;
Qu & Lindem Expires 4 November 2026 [Page 23]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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;
reference
"RFC XXXX: A YANG Data Model for Traffic Engineering
Tunnels, Label Switched Paths, and Interfaces";
}
import iana-igp-algo-types {
prefix iana-algo-types;
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
import iana-igp-metric-types {
prefix iana-metric-type;
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
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>
";
description
"The YANG module defines the configuration and operational
Qu & Lindem Expires 4 November 2026 [Page 24]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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) 2026 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.";
revision 2026-04-29 {
description
"Initial Version";
reference
"RFC XXXX: YANG Data Model for OSPF Application-Specific
Link Attributes and Flexible Algorithm";
}
/* Identities */
identity fad-flags {
description
"Base identity for OSPF FAD flags.";
reference
"RFC 9350: IGP Flexible Algorithm";
}
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.";
reference
Qu & Lindem Expires 4 November 2026 [Page 25]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"RFC 9350: IGP Flexible Algorithm";
}
identity fapm-flags {
description
"Base identity for OSPF flex-algo prefix metric flags.";
reference
"RFC 9350: IGP Flexible Algorithm";
}
identity e-bit {
base fapm-flags;
description
"External metric, if set, the metric specified is a
type 2 external metric.";
reference
"RFC 9350: IGP Flexible Algorithm";
}
/* Groupings */
grouping fad-tlvs {
container fad-tlvs {
list fad-tlv {
leaf algo-number {
type uint8;
description
"Flex-algo number - A value not in the inclusive range
of 128-255 is an invalid FAD TLV specification.";
}
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;
Qu & Lindem Expires 4 November 2026 [Page 26]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
description
"Priority of the advertisement.";
}
container fa-ex-ag-sub-tlv {
leaf-list extended-admin-groups {
type uint32;
description
"Extended administrative group as defined in
RFC 7308.";
}
description
"The flex-algo exclude admin group sub-tlv.";
}
container fa-in-any-ag-sub-tlv {
leaf-list extended-admin-groups {
type uint32;
description
"Extended administrative group as defined in
RFC 7308.";
}
description
"The flex-algo include-any admin group sub-tlv.";
}
container fa-in-all-ag-sub-tlv {
leaf-list extended-admin-groups {
type uint32;
description
"Extended administrative group as defined in
RFC 7308.";
}
description
"The flex-algo include-all admin group 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.";
}
container fa-ex-srlg-sub-tlv {
leaf-list srlgs {
type uint32;
description
Qu & Lindem Expires 4 November 2026 [Page 27]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"SRLG value as defined in RFC 4203.";
}
description
"The flex-algo exclude SRLG sub-tlv.";
}
uses ospf:unknown-tlvs;
description
"List of flex-algo definition TLVs.";
}
description
"OSPF Flexible Algorithm Definition TLV.";
}
description
"OSPF Flexible Algorithm Definition (FAD) TLV.";
reference
"RFC 9350: IGP Flexible Algorithm";
}
grouping fapm-sub-tlvs {
container fapm-sub-tlvs {
list fapm-sub-tlv {
leaf algo-number {
type uint8;
description
"Flex-algo number - A value not in the inclusive range
of 128-255 is an invalid FAD TLV specification.";
}
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.";
reference
Qu & Lindem Expires 4 November 2026 [Page 28]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"RFC 9350: IGP Flexible Algorithm";
}
grouping faam-sub-tlvs {
container faam-sub-tlvs {
list faam-sub-tlv {
leaf algo-number {
type uint8;
description
"Flex-algo number - A value not in the inclusive range
of 128-255 is an invalid FAAM Sub-TLV specification.";
}
leaf metric {
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.";
reference
"RFC 9350: IGP Flexible Algorithm";
}
/* 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";
}
Qu & Lindem Expires 4 November 2026 [Page 29]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
description
"An identifier associated with the Flexible Algorithm
Definition.";
}
leaf advertise-definition {
type boolean;
default "true";
description
"Enable to advertise the flex-algo definition.";
}
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";
Qu & Lindem Expires 4 November 2026 [Page 30]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
}
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;
}
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;
}
default "iana-metric-type:igp-metric";
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/"
Qu & Lindem Expires 4 November 2026 [Page 31]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+ "ospf:link-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 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/"
+ "ospf:ospf/ospf:areas/ospf:area/"
Qu & Lindem Expires 4 November 2026 [Page 32]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+ "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.";
}
description
"Flex-algo definition TLVs for OSPFv3 Router Information LSA.";
uses fad-tlvs;
}
Qu & Lindem Expires 4 November 2026 [Page 33]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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/"
+ "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'" {
Qu & Lindem Expires 4 November 2026 [Page 34]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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 "../../../../../../../../../../"
+ "rt:type = 'ospf:ospfv3'" {
description
"This augmentation is only valid for OSPFv3.";
}
uses fapm-sub-tlvs;
description
Qu & Lindem Expires 4 November 2026 [Page 35]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
"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/"
+ "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/"
Qu & Lindem Expires 4 November 2026 [Page 36]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
+ "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.";
}
/* notification */
notification flex-algo-not-supported {
leaf routing-protocol-name {
type leafref {
path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name";
}
description
"Name of the OSPF instance.";
}
leaf algo-number {
type uint8;
description
"Flex-algo identifier which is not supported by the OSPF
instance. A value not in the inclusive range of 128-255
is indicative of an invalid FAD algorithm specification.";
}
description
"This notification is sent when an OSPF instance does not
support this flex-algo.";
}
}
<CODE ENDS>
7. Security Considerations
The YANG modules defined in this document are designed to be accessed
via YANG-based management protocols, such as NETCONF [RFC6241] and
RESTCONF [RFC8040]. These protocols have to use a secure transport
layer (e.g., SSH [RFC4252], TLS [RFC8446], and QUIC [RFC9000]) and
have to use mutual authentication.
Qu & Lindem Expires 4 November 2026 [Page 37]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
The Network Configuration Access Control Model (NACM) [RFC8341]
provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content.
There are a number of data nodes defined in this YANG module that are
writable/creatable/deletable (i.e., "config true", which is the
default). All writable data nodes are likely to be reasonably
sensitive or vulnerable in some network environments. Write
operations (e.g., edit-config) and delete operations to these data
nodes without proper protection or authentication can have a negative
effect on network operations. The following subtrees and data nodes
have particular sensitivities/vulnerabilities:
/ospf:ospf/ospf-link-attr/link-attr-op-mode - Modification to the
protocol operation mode may result in traffic disruption.
/ospf:ospf/flex-algo - Modification to flex-algo configuration
could be used to mount a DoS attack. For example, changing of
calc-type may result in routing loops.
Some of the readable data nodes in this YANG module 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. Specifically, the following
subtrees and data nodes have particular sensitivities/
vulnerabilities:
Both module ietf-ospf-flex-algo and module ietf-ospf-link-attr
augments base OSPF module Link State Database (LSDB) with various
TLVs. Knowledge of these data nodes can be used to attack other
routers in the OSPF domain. These attacks are documented in
[RFC9129].
8. IANA Considerations
8.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.
Qu & Lindem Expires 4 November 2026 [Page 38]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
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:iana-igp-link-attr-apps
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
name: iana-igp-link-attr-app
Maintained by IANA? Y
namespace: urn:ietf:params:xml:ns:yang:iana-igp-link-attr-apps
prefix: iana-link-attr-app
reference: RFC XXXX
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
Qu & Lindem Expires 4 November 2026 [Page 39]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
8.2. IANA IGP Algorithm Types Module
This document defines the initial version of the IANA-maintained
"iana-igp-algo-types" YANG module (Section 2). The most recent
version of the YANG module is available from the "YANG Parameters"
registry [IANA-YANG-Parameters].
IANA is requested to add this note to the registry:
| New values must not be directly added to the "iana-algo-types"
| YANG module. They must instead be added to the "IGP Algorithm
| Types" registry in the "Interior Gateway Protocol (IGP)
| Parameters" registry group.
When a value is added to the "IGP Algorithm Types" registry, a new
"identity" statement needs to be added to the "iana-igp-algo-types"
YANG module. The name of the "identity" MUST be the name as provided
in the registry. The "identity" statement should have the following
sub-statements defined:
"base": contains "algo-type".
"description": Replicates the description from the registry.
"reference": Replicates the reference(s) from the registry with
the title of the document(s) added.
When the "iana-igp-algo-types" YANG module is updated, a new
"revision" statement with a unique revision date must be added in
front of the existing revision statements. The "revision" statement
MUST contain both "description" and "reference" substatements as
follows.
The "description" substatement captures what changed in the revised
version. Typically, the description enumerates the changes such as
updpates to existing entries (e.g., update a description or a
reference) or notes which identities were added or had their status
changed (e.g., deprecated, discouraged, or obsoleted).
The "reference" substatement points specifically to the published
module (i.e., IANA_FOO_URL_With_REV). It may also point to an
authoritative event triggering the update to the YANG module. In all
cases, this event is cited from the underlying IANA registry. If the
update is triggered by an RFC, that RFC must also be included in the
"reference" substatement.
IANA is requested to add this note to [IANA-IGP-ALGO-Types]:
| When this registry is modified, the YANG module "iana-igp-algo-
| types" Section 2 must be updated as defined in RFC XXXX.
Qu & Lindem Expires 4 November 2026 [Page 40]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
8.3. IANA IGP Metric-Type Module
This document defines the initial version of the IANA-maintained
"iana-igp-metric-types" YANG module (Section 3). The most recent
version of the YANG module is available from the "YANG Parameters"
registry [IANA-YANG-Parameters].
IANA is requested to add this note to the registry:
| New values must not be directly added to the "iana-igp-metric-
| types" YANG module. They must instead be added to the "IGP
| Metric-Type" registry in the "Interior Gateway Protocol (IGP)
| Parameters" registry group.
When a value is added to the "IGP Metric-Type" registry, a new
"identity" statement needs to be added to the "iana-igp-metric-types"
YANG module. The name of the "identity" MUST be the name as provided
in the registry. The "identity" statement should have the following
sub-statements defined:
"base": contains "metric-type".
"description": Replicates the description from the registry.
"reference": Replicates the reference(s) from the registry with
the title of the document(s) added.
When the "iana-igp-metric-types" YANG module is updated, a new
"revision" statement with a unique revision date must be added in
front of the existing revision statements. The "revision" statement
MUST contain both "description" and "reference" substatements as
follows.
The "description" substatement captures what changed in the revised
version. Typically, the description enumerates the changes such as
updpates to existing entries (e.g., update a description or a
reference) or notes which identities were added or had their status
changed (e.g., deprecated, discouraged, or obsoleted).
The "reference" substatement points specifically to the published
module (i.e., IANA_FOO_URL_With_REV). It may also point to an
authoritative event triggering the update to the YANG module. In all
cases, this event is cited from the underlying IANA registry. If the
update is triggered by an RFC, that RFC must also be included in the
"reference" substatement.
IANA is requested to add this note to [IANA-IGP-Metric-Types]:
| When this registry is modified, the YANG module "iana-metric-
| types" Section 3 must be updated as defined in RFC XXXX.
Qu & Lindem Expires 4 November 2026 [Page 41]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
8.4. IANA IGP Link Attribute Applications Module
This document defines the initial version of the IANA-maintained
"iana-igp-link-attr-apps" YANG module (Section 4). The most recent
version of the YANG module is available from the "YANG Parameters"
registry [IANA-YANG-Parameters].
IANA is requested to add this note to the registry:
| New values must not be directly added to the "iana-igp-link-attr-
| apps" YANG module. They must instead be added to the "Link
| Attribute Application IDs" registry in the "Interior Gateway
| Protocol (IGP) Parameters" registry group.
When a value is added to the "Link Attribute Application IDs"
registry, a new "identity" statement needs to be added to the "iana-
igp-link-attr-apps" YANG module. The name of the "identity" MUST be
the name as provided in the registry. The "identity" statement
should have the following sub-statements defined:
"base": contains "igp-link-attr-app".
"description": Replicates the description from the registry.
"reference": Replicates the reference(s) from the registry with
the title of the document(s) added.
When the "iana-igp-link-attr-apps" YANG module is updated, a new
"revision" statement with a unique revision date must be added in
front of the existing revision statements. The "revision" statement
MUST contain both "description" and "reference" substatements as
follows.
The "description" substatement captures what changed in the revised
version. Typically, the description enumerates the changes such as
updpates to existing entries (e.g., update a description or a
reference) or notes which identities were added or had their status
changed (e.g., deprecated, discouraged, or obsoleted).
The "reference" substatement points specifically to the published
module (i.e., IANA_FOO_URL_With_REV). It may also point to an
authoritative event triggering the update to the YANG module. In all
cases, this event is cited from the underlying IANA registry. If the
update is triggered by an RFC, that RFC must also be included in the
"reference" substatement.
IANA is requested to add this note to [IANA-Link-Attr-Apps]:
| When this registry is modified, the YANG module "iana-igp-link-
| attr-apps" must be updated as defined in RFC XXXX Section 4 .
Qu & Lindem Expires 4 November 2026 [Page 42]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
9. Acknowledgements
Thanks to Dhruv Dhody for his detailed YANG doctors review.
Thanks to Adrian Farrel for his OPS directorate review.
Thanks to Renato Westphal for his review and comments.
10. References
10.1. Normative References
[I-D.ietf-yang-te]
IETF, "YANG Data Model for Traffic Engineering", Work in
Progress, Internet-Draft, draft-ietf-yang-te,
<https://datatracker.ietf.org/doc/html/draft-ietf-yang-
te>.
[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-Link-Attr-Apps]
IANA, "Link Attribute Application Identifiers",
<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>.
[RFC3630] Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering
(TE) Extensions to OSPF Version 2", RFC 3630,
DOI 10.17487/RFC3630, September 2003,
<https://www.rfc-editor.org/info/rfc3630>.
[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 4 November 2026 [Page 43]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH)
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252,
January 2006, <https://www.rfc-editor.org/info/rfc4252>.
[RFC5305] Li, T. and H. Smit, "IS-IS Extensions for Traffic
Engineering", RFC 5305, DOI 10.17487/RFC5305, October
2008, <https://www.rfc-editor.org/info/rfc5305>.
[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>.
[RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S.
Previdi, "OSPF Traffic Engineering (TE) Metric
Extensions", RFC 7471, DOI 10.17487/RFC7471, March 2015,
<https://www.rfc-editor.org/info/rfc7471>.
[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>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>.
[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>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
Qu & Lindem Expires 4 November 2026 [Page 44]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward,
D., Drake, J., and Q. Wu, "IS-IS Traffic Engineering (TE)
Metric Extensions", RFC 8570, DOI 10.17487/RFC8570, March
2019, <https://www.rfc-editor.org/info/rfc8570>.
[RFC8665] Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler,
H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
Extensions for Segment Routing", RFC 8665,
DOI 10.17487/RFC8665, December 2019,
<https://www.rfc-editor.org/info/rfc8665>.
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
Multiplexed and Secure Transport", RFC 9000,
DOI 10.17487/RFC9000, May 2021,
<https://www.rfc-editor.org/info/rfc9000>.
[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>.
[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>.
[RFC9587] Lindem, A., Palani, S., and Y. Qu, "YANG Data Model for
OSPFv3 Extended Link State Advertisements (LSAs)",
RFC 9587, DOI 10.17487/RFC9587, June 2024,
<https://www.rfc-editor.org/info/rfc9587>.
[RFC9843] Hegde, S., Britto, W., Shetty, R., Decraene, B., Psenak,
P., and T. Li, "IGP Flexible Algorithms: Bandwidth, Delay,
Metrics, and Constraints", RFC 9843, DOI 10.17487/RFC9843,
September 2025, <https://www.rfc-editor.org/info/rfc9843>.
10.2. Informative References
[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu,
"Handling Long Lines in Content of Internet-Drafts and
RFCs", RFC 8792, DOI 10.17487/RFC8792, June 2020,
<https://www.rfc-editor.org/info/rfc8792>.
Qu & Lindem Expires 4 November 2026 [Page 45]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
Appendix A. Example OSPF Flex-Algo Configuration (XML)
The following is an example configuration for OSPF Flexible Algorithm
using the YANG model defined in this document.
Note: '\' line wrapping per [RFC8792].
Qu & Lindem Expires 4 November 2026 [Page 46]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
<?xml version='1.0' encoding='UTF-8'?>
<te xmlns="urn:ietf:params:xml:ns:yang:ietf-te">
<enable>true</enable>
<globals>
<named-admin-groups>
<named-admin-group>
<name>blue</name>
</named-admin-group>
</named-admin-groups>
</globals>
</te>
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
<router-id>1.1.1.1</router-id>
<control-plane-protocols>
<control-plane-protocol>
<type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\
ospf:ospfv2</type>
<name>OSPFv2</name>
<ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf">
<areas>
<area>
<area-id>0.0.0.0</area-id>
</area>
</areas>
<ospf-flex-algo xmlns="urn:ietf:params:xml:ns:yang:\
ietf-ospf-flex-algo">
<flex-algo>
<algo-number>200</algo-number>
<admin-groups>
<exclude-admin-groups>blue</exclude-admin-groups>
</admin-groups>
<metric-type xmlns:iana-metric-types=\
"urn:ietf:params:xml:ns:yang:iana-igp-metric-types">\
iana-metric-types:igp-metric</metric-type>
<calc-type xmlns:iana-algo-types=\
"urn:ietf:params:xml:ns:yang:iana-igp-algo-types">\
iana-algo-types:algo-spf</calc-type>
<prefix-metric/>
<priority>100</priority>
</flex-algo>
</ospf-flex-algo>
</ospf>
</control-plane-protocol>
</control-plane-protocols>
</routing>
Qu & Lindem Expires 4 November 2026 [Page 47]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
Appendix B. Example OSPF Flex-Algo Configuration (JSON)
The following is the same example configuration for OSPF Flexible
Algorithm as in the previous section in JSON format using the YANG
model defined in this document.
{
"te": {
"enable": "true",
"globals": {
"named-admin-groups": {
"named-admin-group": {
"name": "blue"
}
}
},
"_xmlns": "urn:ietf:params:xml:ns:yang:ietf-te"
}
}
{
"routing": {
"router-id": "1.1.1.1",
"control-plane-protocols": {
"control-plane-protocol": {
"type": {
"_xmlns:ospf": "urn:ietf:params:xml:ns:yang:ietf-ospf",
"__text": "ospf:ospfv2"
},
"name": "OSPFv2",
"ospf": {
"areas": {
"area": {
"area-id": "0.0.0.0"
}
},
"ospf-flex-algo": {
"flex-algo": {
"algo-number": "200",
"admin-groups": {
"exclude-admin-groups": "blue"
},
"metric-type": {
"_xmlns:iana-metric-types": "urn:ietf:params:xml:ns:\
yang:iana-igp-metric-types",
"__text": "iana-metric-types:igp-metric"
},
"calc-type": {
"_xmlns:iana-algo-types": "urn:ietf:params:xml:ns:\
Qu & Lindem Expires 4 November 2026 [Page 48]
Internet-Draft OSPF ASLA and Flex-Algo YANG May 2026
yang:iana-igp-algo-types",
"__text": "iana-algo-types:algo-spf"
},
"prefix-metric": "",
"priority": "100"
},
"_xmlns": "urn:ietf:params:xml:ns:yang:\
ietf-ospf-flex-algo"
},
"_xmlns": "urn:ietf:params:xml:ns:yang:ietf-ospf"
}
}
},
"_xmlns": "urn:ietf:params:xml:ns:yang:ietf-routing"
}
}
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 4 November 2026 [Page 49]