draft-ietf-lsr-ospf-yang-augmentation-v1-06.txt | draft-ietf-lsr-ospf-yang-augmentation-v1-07.txt | |||
---|---|---|---|---|
Internet A. Lindem | Internet A. Lindem | |||
Internet-Draft Cisco Systems | Internet-Draft Cisco Systems | |||
Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
Expires: January 12, 2022 Futurewei | Expires: 13 July 2022 Futurewei | |||
July 11, 2021 | 9 January 2022 | |||
OSPF YANG Model Augmentations for Additional Features - Version 1 | OSPF YANG Model Augmentations for Additional Features - Version 1 | |||
draft-ietf-lsr-ospf-yang-augmentation-v1-06 | draft-ietf-lsr-ospf-yang-augmentation-v1-07 | |||
Abstract | Abstract | |||
This document defines YANG data modules augmenting the IETF OSPF YANG | This document defines YANG data modules augmenting the IETF OSPF YANG | |||
model to provide support for Traffic Engineering Extensions to OSPF | model to provide support for Traffic Engineering Extensions to OSPF | |||
Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in | Version 3 as defined in RF 5329, OSPF Two-Part Metric as defined in | |||
RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379, OSPF | RFC 8042, OSPF Graceful Link Shutdown as defined in RFC 8379, OSPF | |||
Link-Local Signaling (LLS) Extensions for Local Interface ID | Link-Local Signaling (LLS) Extensions for Local Interface ID | |||
Advertisement as defined in RFC 8510, OSPF Application-Specific Link | Advertisement as defined in RFC 8510, OSPF Application-Specific Link | |||
Attributes as defined in RFC 8920, and OSPF Flexible Algorithm. | Attributes as defined in RFC 8920, and OSPF Flexible Algorithm. | |||
skipping to change at page 1, line 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 12, 2022. | This Internet-Draft will expire on 13 July 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
(https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
to this document. Code Components extracted from this document must | extracted from this document must include Revised BSD License text as | |||
include Simplified BSD License text as described in Section 4.e of | described in Section 4.e of the Trust Legal Provisions and are | |||
the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Revised BSD License. | |||
described in the Simplified BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 | |||
2. YANG Module for Traffic Engineering Extesions to OSPF Version | 2. YANG Module for Traffic Engineering Extesions to OSPF Version | |||
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 9 | 3. YANG Module for OSPF Two-Part Metric . . . . . . . . . . . . 9 | |||
4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 | 4. YANG Module for OSPF Graceful Link Shutdown . . . . . . . . . 13 | |||
5. YANG Module for OSPF LLS Extenstion for Local Interface ID | 5. YANG Module for OSPF LLS Extenstion for Local Interface ID | |||
Advertisement . . . . . . . . . . . . . . . . . . . . . . . . 18 | Advertisement . . . . . . . . . . . . . . . . . . . . . . 18 | |||
6. YANG Module for OSPF Application-Specific Link Attributes . . 20 | 6. YANG Module for OSPF Application-Specific Link Attributes . . 20 | |||
7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 | 7. YANG Module for OSPF Flexible Algorithm . . . . . . . . . . . 26 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 | |||
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 48 | |||
11. Normative References . . . . . . . . . . . . . . . . . . . . 48 | 11. Normative References . . . . . . . . . . . . . . . . . . . . 48 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
1. Overview | 1. Overview | |||
skipping to change at page 8, line 49 ¶ | skipping to change at page 8, line 49 ¶ | |||
+ "rt:type = 'ospf:ospfv3'" { | + "rt:type = 'ospf:ospfv3'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"OSPFv3 Intra-Area-TE-LSA."; | "OSPFv3 Intra-Area-TE-LSA."; | |||
uses ospfv3-intra-area-te; | uses ospfv3-intra-area-te; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
3. YANG Module for OSPF Two-Part Metric | 3. YANG Module for OSPF Two-Part Metric | |||
This document defines a YANG module for OSPF Two-Part Metric feature | This document defines a YANG module for OSPF Two-Part Metric feature | |||
as defined in [RFC8042]. It is an augmentation of the OSPF base | as defined in [RFC8042]. It is an augmentation of the OSPF base | |||
model. | model. | |||
module: ietf-ospf-two-part-metric | module: ietf-ospf-two-part-metric | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
skipping to change at page 26, line 8 ¶ | skipping to change at page 26, line 8 ¶ | |||
description | description | |||
"This augmentation is only valid for OSPFv3 | "This augmentation is only valid for OSPFv3 | |||
E-Router LSAs"; | E-Router LSAs"; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 Area scope router-link TLV."; | "Augment OSPFv3 Area scope router-link TLV."; | |||
uses application-specific-link-attributes-sub-tlvs; | uses application-specific-link-attributes-sub-tlvs; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
7. YANG Module for OSPF Flexible Algorithm | 7. YANG Module for OSPF Flexible Algorithm | |||
This document defines a YANG module for OSPF Flexible Algorithm as | This document defines a YANG module for OSPF Flexible Algorithm as | |||
defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the | defined in [I-D.ietf-lsr-flex-algo]. It is an augmentation of the | |||
OSPF base model. | OSPF base model. | |||
module: ietf-ospf-flex-algo | module: ietf-ospf-flex-algo | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf: | /rt:control-plane-protocol/ospf:ospf: | |||
skipping to change at page 31, line 50 ¶ | skipping to change at page 32, line 5 ¶ | |||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | |||
/ospf:body/ospfv3-e-lsa:e-inter-area-router | /ospf:body/ospfv3-e-lsa:e-inter-area-router | |||
/ospfv3-e-lsa:e-inter-router-tlvs | /ospfv3-e-lsa:e-inter-router-tlvs | |||
/ospfv3-e-lsa:inter-router-tlv: | /ospfv3-e-lsa:inter-router-tlv: | |||
+--ro faam-sub-tlvs | +--ro faam-sub-tlvs | |||
+--ro faam-sub-tlv* [] | +--ro faam-sub-tlv* [] | |||
+--ro flex-algo? uint8 | +--ro flex-algo? uint8 | |||
+--ro metric? uint32 | +--ro metric? uint32 | |||
<CODE BEGINS> file "ietf-ospf-flex-algo@2021-06-18.yang" | <CODE BEGINS> file "ietf-ospf-flex-algo@2021-06-18.yang" | |||
module ietf-ospf-flex-algo { | module ietf-ospf-flex-algo { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-flex-algo"; | |||
prefix 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 { | import ietf-routing { | |||
prefix "rt-types"; | prefix rt; | |||
reference "RFC 8294: Common YANG Data Types for the | reference "RFC 8349: A YANG Data Model for Routing | |||
Routing Area"; | Management (NMDA Version)"; | |||
} | } | |||
import ietf-te-types { | import ietf-routing-types { | |||
prefix te-types; | prefix "rt-types"; | |||
reference | reference "RFC 8294: Common YANG Data Types for the | |||
"RFC8776: Common YANG Data Types for Traffic Engineering."; | Routing Area"; | |||
} | } | |||
import ietf-ospf { | import ietf-te-types { | |||
prefix "ospf"; | prefix te-types; | |||
} | reference | |||
"RFC8776: Common YANG Data Types for Traffic Engineering."; | ||||
} | ||||
import ietf-ospfv3-extended-lsa { | import ietf-ospf { | |||
prefix "ospfv3-e-lsa"; | prefix "ospf"; | |||
} | } | |||
import ietf-te { | import ietf-ospfv3-extended-lsa { | |||
prefix "te"; | prefix "ospfv3-e-lsa"; | |||
} | } | |||
organization | import ietf-te { | |||
"IETF LSR - Link State Routing Working Group"; | prefix "te"; | |||
contact | } | |||
"WG Web: <https://tools.ietf.org/wg/spring/> | ||||
WG List: <mailto:spring@ietf.org> | ||||
Author: Yingzhen Qu | organization | |||
<mailto:yingzhen.qu@futurewei.com> | "IETF LSR - Link State Routing Working Group"; | |||
Author: Acee Lindem | contact | |||
<mailto:acee@cisco.com> | "WG Web: <https://tools.ietf.org/wg/spring/> | |||
Author: Stephane Litkowski | WG List: <mailto:spring@ietf.org> | |||
<mailto:slitkows.ietf@gmail.com> | ||||
"; | ||||
description | Author: Yingzhen Qu | |||
"The YANG module defines the configuration and operational | <mailto:yingzhen.qu@futurewei.com> | |||
state for OSPF Flexible Algorithm as defined in RFC xxxx. | Author: Acee Lindem | |||
<mailto:acee@cisco.com> | ||||
Author: Stephane Litkowski | ||||
<mailto:slitkows.ietf@gmail.com> | ||||
"; | ||||
This YANG model conforms to the Network Management | description | |||
Datastore Architecture (NMDA) as described in RFC 8342. | "The YANG module defines the configuration and operational | |||
state for OSPF Flexible Algorithm as defined in RFC xxxx. | ||||
Copyright (c) 2021 IETF Trust and the persons identified as | This YANG model conforms to the Network Management | |||
authors of the code. All rights reserved. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
Redistribution and use in source and binary forms, with or | Copyright (c) 2021 IETF Trust and the persons identified as | |||
without modification, is permitted pursuant to, and subject | authors of the code. All rights reserved. | |||
to the license terms contained in, the Simplified 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; | Redistribution and use in source and binary forms, with or | |||
see the RFC itself for full legal notices. | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified 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). | ||||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | This version of this YANG module is part of RFC XXXX; | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | see the RFC itself for full legal notices. | |||
'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."; | 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 2021-06-18 { | reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; | |||
description | ||||
"Initial Version"; | ||||
reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; | ||||
} | ||||
/* Identities */ | revision 2021-06-18 { | |||
description | ||||
"Initial Version"; | ||||
reference "RFC XXXX: YANG Data Model for OSPF Flexible Algorithm."; | ||||
} | ||||
identity metric-type { | /* Identities */ | |||
description | ||||
"Base identity for route metric types."; | ||||
} | ||||
identity igp-metric { | identity metric-type { | |||
base metric-type; | description | |||
description | "Base identity for route metric types."; | |||
"Identity for the IGP metric type."; | } | |||
} | ||||
identity min-uni-delay { | ||||
base metric-type; | ||||
description | ||||
"Min unidirectional link delay metric type."; | ||||
reference | ||||
"RFC 7471 - OSPF Traffic Engineering (TE) Metric Extensions"; | ||||
} | ||||
identity te-metric { | identity igp-metric { | |||
base metric-type; | base metric-type; | |||
description | description | |||
"Traffic engineering metric type."; | "Identity for the IGP metric type."; | |||
reference | } | |||
"RFC 3630 - Traffic Engineering (TE) Extensions to OSPF | ||||
Version 2"; | ||||
} | ||||
identity fad-flags { | identity min-uni-delay { | |||
description | base metric-type; | |||
"Base identity for OSPF FAD flags."; | description | |||
} | "Min unidirectional link delay metric type."; | |||
reference | ||||
"RFC 7471 - OSPF Traffic Engineering (TE) Metric Extensions"; | ||||
} | ||||
identity m-bit { | identity te-metric { | |||
base fad-flags; | base metric-type; | |||
description | description | |||
"M bit, when set, the fex-algo specific prefix and ASBR | "Traffic engineering metric type."; | |||
metric MUST be used for inter-area and external prefix | reference | |||
calculation."; | "RFC 3630 - Traffic Engineering (TE) Extensions to OSPF | |||
} | Version 2"; | |||
} | ||||
identity fapm-flags { | identity fad-flags { | |||
description | description | |||
"Base identity for OSPF flex-algo prefix metric flags."; | "Base identity for OSPF FAD flags."; | |||
} | } | |||
identity e-bit { | identity m-bit { | |||
base fapm-flags; | base fad-flags; | |||
description | description | |||
"External metric, if set, the metric specified is a | "M bit, when set, the fex-algo specific prefix and ASBR | |||
type 2 external metric."; | metric MUST be used for inter-area and external prefix | |||
} | calculation."; | |||
} | ||||
/* Groupings */ | identity fapm-flags { | |||
grouping fa-ex-ag-sub-tlv { | description | |||
container fa-ex-ag-sub-tlv { | "Base identity for OSPF flex-algo prefix metric flags."; | |||
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 { | identity e-bit { | |||
container fa-in-any-ag-sub-tlv { | base fapm-flags; | |||
leaf-list extended-admin-groups { | description | |||
type uint64; | "External metric, if set, the metric specified is a | |||
description | type 2 external metric."; | |||
"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 { | /* Groupings */ | |||
container fa-in-all-ag-sub-tlv { | grouping fa-ex-ag-sub-tlv { | |||
leaf-list extended-admin-groups { | container fa-ex-ag-sub-tlv { | |||
type uint64; | leaf-list extended-admin-groups { | |||
description | type uint64; | |||
"Extended administrative group as defined in RFC 7308."; | description | |||
} | "Extended administrative group as defined in RFC 7308."; | |||
description | } | |||
"The flex-algo include-all admin group sub-tlv."; | description | |||
} | "The flex-algo exclude admin group sub-tlv."; | |||
description | } | |||
"The flex-algo include-all admin group sub-tlv."; | description | |||
} | "The flex-algo exclude admin group sub-tlv."; | |||
} | ||||
grouping fad-flags-sub-tlv { | grouping fa-in-any-ag-sub-tlv { | |||
container fad-flags-sub-tlv { | container fa-in-any-ag-sub-tlv { | |||
leaf-list fad-flags { | leaf-list extended-admin-groups { | |||
type identityref { | type uint64; | |||
base fad-flags; | description | |||
} | "Extended administrative group as defined in RFC 7308."; | |||
description | } | |||
"Flex-algo definition flags list."; | description | |||
} | "The flex-algo include-any admin group sub-tlv."; | |||
description | } | |||
"OSPF flex-algo definition flags."; | description | |||
"The flex-algo include-any admin group sub-tlv."; | ||||
} | ||||
} | grouping fa-in-all-ag-sub-tlv { | |||
description | container fa-in-all-ag-sub-tlv { | |||
"The flex-algo definition flags 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 fa-ex-srlg-sub-tlv { | grouping fad-flags-sub-tlv { | |||
container fa-ex-srlg-sub-tlv { | container fad-flags-sub-tlv { | |||
leaf-list srlgs { | leaf-list fad-flags { | |||
type uint32; | type identityref { | |||
description | base fad-flags; | |||
"SRLG value as defined in RFC 4203."; | } | |||
} | description | |||
description | "Flex-algo definition flags list."; | |||
"The flex-algo exclude SRLG sub-tlv."; | ||||
} | ||||
description | ||||
"The flex-algo exclude SRLG sub-tlv."; | ||||
} | ||||
grouping fad-tlvs { | } | |||
container fad-tlvs { | description | |||
list fad-tlv { | "OSPF flex-algo definition flags."; | |||
leaf flex-algo { | } | |||
type uint8; | description | |||
description | "The flex-algo definition flags sub-tlv."; | |||
"Flex-algo number, value between 128 and 255 inclusive."; | } | |||
} | ||||
leaf metric-type { | ||||
type identityref { | ||||
base metric-type; | ||||
} | ||||
description | ||||
"Type of metric to be used during the calculation."; | ||||
} | ||||
leaf calc-type { | ||||
type uint8 { | ||||
range "0..127"; | ||||
} | ||||
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 | grouping fa-ex-srlg-sub-tlv { | |||
"List of flex-algo definition TLVs."; | container fa-ex-srlg-sub-tlv { | |||
} | leaf-list srlgs { | |||
description | type uint32; | |||
"OSPF Flexible Algorithm Definition TLV."; | description | |||
} | "SRLG value as defined in RFC 4203."; | |||
description | } | |||
"OSPF Flexible Algorithm Definition (FAD) TLV."; | description | |||
} | "The flex-algo exclude SRLG sub-tlv."; | |||
} | ||||
description | ||||
"The flex-algo exclude SRLG sub-tlv."; | ||||
} | ||||
grouping fapm-sub-tlvs { | grouping fad-tlvs { | |||
container fapm-sub-tlvs { | container fad-tlvs { | |||
list fapm-sub-tlv { | list fad-tlv { | |||
leaf flex-algo { | leaf flex-algo { | |||
type uint8; | type uint8; | |||
description | description | |||
"Flex-algo number, value between 128 and 255 | "Flex-algo number, value between 128 and 255 inclusive."; | |||
inclusive."; | } | |||
} | leaf metric-type { | |||
leaf-list fapm-flags { | type identityref { | |||
type identityref { | base metric-type; | |||
base fapm-flags; | } | |||
} | description | |||
description | "Type of metric to be used during the calculation."; | |||
"Flex-algo prefix metric flags list."; | } | |||
} | leaf calc-type { | |||
leaf metric { | type uint8 { | |||
type uint32; | range "0..127"; | |||
description | } | |||
"Prefix metric."; | description | |||
} | "IGP algorithm types, value from 0 to 127 as | |||
description | defined under 'Interior Gateway Protocol (IGP) | |||
"List of flex-algo prefix sub-tlvs."; | Parameter' by IANA."; | |||
} | } | |||
description | leaf priority { | |||
"Flex-algo prefix metric sub-tlvs."; | type uint8; | |||
} | description | |||
description | "Priority of the advertisement."; | |||
"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 { | ||||
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 */ | 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; | ||||
augment "/rt:routing/rt:control-plane-protocols" | description | |||
+ "/rt:control-plane-protocol/ospf:ospf" { | "List of flex-algo definition TLVs."; | |||
when "../rt:type = 'ospf:ospfv2' or " | } | |||
+ "../rt:type = 'ospf:ospfv3'" { | description | |||
description | "OSPF Flexible Algorithm Definition TLV."; | |||
"This augments the OSPF routing protocol when used."; | } | |||
} | description | |||
description | "OSPF Flexible Algorithm Definition (FAD) TLV."; | |||
"This augments OSPF protocol with Flexible | } | |||
Algorithm."; | ||||
container ospf-flex-algo { | grouping fapm-sub-tlvs { | |||
list flex-algo { | container fapm-sub-tlvs { | |||
key "algo-number"; | 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."; | ||||
} | ||||
leaf algo-number { | grouping faam-sub-tlvs { | |||
type uint8 { | container faam-sub-tlvs { | |||
range "128..255"; | list faam-sub-tlv { | |||
} | leaf flex-algo { | |||
description | type uint8; | |||
"An identifier in the range 128-255 that's associated | description | |||
with the Flexible Algorithm Definition."; | "Flex-algo number, value between 128 and 255 | |||
} | inclusive."; | |||
} | ||||
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."; | ||||
} | ||||
leaf advertise-definition { | /* Configurations */ | |||
type boolean; | ||||
default true; | ||||
description | ||||
"Enable to advertise the flex-algo definition."; | ||||
} | ||||
container admin-groups { | augment "/rt:routing/rt:control-plane-protocols" | |||
if-feature "te-types:extended-admin-groups"; | + "/rt:control-plane-protocol/ospf:ospf" { | |||
if-feature "te-types:named-extended-admin-groups"; | when "../rt:type = 'ospf:ospfv2' or " | |||
leaf-list exclude-admin-groups { | + "../rt:type = 'ospf:ospfv3'" { | |||
type leafref { | description | |||
path "/te:te/te:globals/te:named-admin-groups/" | "This augments the OSPF routing protocol when used."; | |||
+ "te:named-admin-group/te:name"; | } | |||
} | description | |||
description | "This augments OSPF protocol with Flexible | |||
"Exclude rule used during the flex-algo | Algorithm."; | |||
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 { | container ospf-flex-algo { | |||
if-feature "te-types:named-srlg-groups"; | list flex-algo { | |||
type leafref { | key "algo-number"; | |||
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 fast-reroute { | leaf algo-number { | |||
type boolean; | type uint8 { | |||
default true; | range "128..255"; | |||
description | } | |||
"Enable fast reroute."; | description | |||
} | "An identifier in the range 128-255 that's associated | |||
with the Flexible Algorithm Definition."; | ||||
} | ||||
leaf metric-type { | leaf advertise-definition { | |||
type identityref { | type boolean; | |||
base metric-type; | default true; | |||
} | description | |||
description | "Enable to advertise the flex-algo definition."; | |||
"Type of metric to be used during the calculation."; | } | |||
} | ||||
leaf microloop-avoidance { | container admin-groups { | |||
type boolean; | if-feature "te-types:extended-admin-groups"; | |||
default true; | if-feature "te-types:named-extended-admin-groups"; | |||
description | leaf-list exclude-admin-groups { | |||
"Enable microloop avoidance."; | 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."; | ||||
} | ||||
container prefix-metric { | leaf fast-reroute { | |||
presence | type boolean; | |||
"Use flex-algo specific prefix metric."; | default true; | |||
description | description | |||
"Use flex-algo prefix metric."; | "Enable fast reroute."; | |||
} | } | |||
leaf priority { | leaf metric-type { | |||
type uint8; | type identityref { | |||
description | base metric-type; | |||
"Priority of the advertisement."; | } | |||
} | description | |||
"Type of metric to be used during the calculation."; | ||||
} | ||||
description | leaf microloop-avoidance { | |||
"List of flex-algo configurations."; | type boolean; | |||
} | default true; | |||
description | description | |||
"Flexible Algorithm configuration."; | "Enable microloop avoidance."; | |||
} | } | |||
} | container prefix-metric { | |||
presence | ||||
"Use flex-algo specific prefix metric."; | ||||
description | ||||
"Use flex-algo prefix metric."; | ||||
} | ||||
/* Database */ | leaf priority { | |||
type uint8; | ||||
description | ||||
"Priority of the advertisement."; | ||||
} | ||||
augment "/rt:routing/" | description | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | "List of flex-algo configurations."; | |||
+ "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'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | } | |||
"Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; | description | |||
"Flexible Algorithm configuration."; | ||||
} | ||||
} | ||||
uses fad-tlvs; | /* Database */ | |||
} | ||||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
+ "ospf:area/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
when "../../../../../../../../../../../" | when "../../../../../../../../../../../../../" | |||
+ "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
description | description | |||
"Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; | "Flex-algo definition TLVs for OSPFv2 type 9 opaque RI LSA."; | |||
uses fad-tlvs; | uses fad-tlvs; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:areas/" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:area/ospf:database/" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | + "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."; | ||||
} | ||||
when "../../../../../../../../../" | description | |||
+ "rt:type = 'ospf:ospfv2'" { | "Flex-algo definition TLVs for OSPFv2 type 10 opaque RI LSA."; | |||
description | ||||
"This augmentation is only valid for OSPFv2."; | ||||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA."; | ||||
uses fad-tlvs; | uses fad-tlvs; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:areas/ospf:area/" | + "ospf:ospf/ospf:database/" | |||
+ "ospf:interfaces/ospf:interface/ospf:database/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | when "../../../../../../../../../" | |||
when "../../../../../../../../../../../../" | + "rt:type = 'ospf:ospfv2'" { | |||
+ "rt:type = 'ospf:ospfv3'" { | description | |||
description | "This augmentation is only valid for OSPFv2."; | |||
"This augmentation is only valid for OSPFv3."; | } | |||
} | description | |||
"Flex-algo definition TLVs for OSPFv2 type 11 opaque RI LSA."; | ||||
description | uses fad-tlvs; | |||
"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:ospfv3/" | ||||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | ||||
when "../../../../../../../../../../../../" | ||||
+ "rt:type = 'ospf:ospfv3'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
augment "/rt:routing/" | description | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | |||
+ "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 | uses fad-tlvs; | |||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | } | |||
uses fad-tlvs; | augment "/rt:routing/" | |||
} | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
augment "/rt:routing/" | + "ospf:ospf/ospf:areas/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "ospf:area/ospf:database/" | |||
+ "ospf:ospf/ospf:database/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:ospfv3/ospf:body/ospf:router-information" { | |||
+ "ospf:ospfv3/ospf:body/ospf:router-information" { | when "../../../../../../../../../../" | |||
when "../../../../../../../../" | + "rt:type = 'ospf:ospfv3'" { | |||
+ "rt:type = 'ospf:ospfv3'" { | description | |||
description | "This augmentation is only valid for OSPFv3."; | |||
"This augmentation is only valid for OSPFv3."; | } | |||
} | ||||
description | ||||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | ||||
uses fad-tlvs; | description | |||
} | "Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | |||
augment "/rt:routing/" | uses fad-tlvs; | |||
+ "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/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:database/" | |||
+ "ospf:area/ospf:database/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:ospfv3/ospf:body/ospf:router-information" { | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | when "../../../../../../../../" | |||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "rt:type = 'ospf:ospfv3'" { | |||
when "../../../../../../../../../../../../" | description | |||
+ "rt:type = 'ospf:ospfv2'" { | "This augmentation is only valid for OSPFv3."; | |||
description | } | |||
"This augmentation is only valid for OSPFv2."; | description | |||
"Flex-algo definition TLVs for OSPFv3 Router Information LSA."; | ||||
} | uses fad-tlvs; | |||
description | } | |||
"Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | ||||
in type 10 opaque LSA."; | ||||
uses fapm-sub-tlvs; | ||||
} | ||||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | |||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
when "../../../../../../../../../../" | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
+ "rt:type = 'ospf:ospfv2'" { | when "../../../../../../../../../../../../../../" | |||
description | + "rt:type = 'ospf:ospfv2'" { | |||
"This augmentation is only valid for OSPFv2."; | description | |||
} | "This augmentation is only valid for OSPFv2."; | |||
description | } | |||
"Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | description | |||
in type 11 opaque LSA."; | "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | |||
uses fapm-sub-tlvs; | in type 9 opaque LSA."; | |||
} | uses fapm-sub-tlvs; | |||
} | ||||
/* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area Prefix TLV */ | augment "/rt:routing/" | |||
augment "/rt:routing/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "ospf:ospf/ospf:areas/" | |||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
+ "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
when "../../../../../../../../../../../../" | when "../../../../../../../../../../../../" | |||
+ "rt:type = 'ospf:ospfv3'" { | + "rt:type = 'ospf:ospfv2'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3 | "This augmentation is only valid for OSPFv2."; | |||
E-Router LSAs"; | } | |||
} | description | |||
uses fapm-sub-tlvs; | "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | |||
description | in type 10 opaque LSA."; | |||
"OSPFv3 Area-Scoped Inter-Area Prefix TLV."; | uses fapm-sub-tlvs; | |||
} | } | |||
/* Flex-algo prefix metric Sub-TLV in OSPFv3 External Prefix TLV */ | augment "/rt:routing/" | |||
augment "/rt:routing/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "ospf:ospf/ospf:database/" | |||
+ "ospf:ospf/ospf:database/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
+ "ospfv3-e-lsa:e-external-tlvs/ospfv3-e-lsa:external-prefix-tlv" { | when "../../../../../../../../../../" | |||
when "'ospf:../../../../../../../../../" | + "rt:type = 'ospf:ospfv2'" { | |||
+ "rt:type' = 'ospf:ospfv3'" { | description | |||
description | "This augmentation is only valid for OSPFv2."; | |||
"This augmentation is only valid for OSPFv3."; | } | |||
} | description | |||
uses fapm-sub-tlvs; | "Flex-algo prefix metric sub TLVs for OSPFv2 extended prefix TLV | |||
description | in type 11 opaque LSA."; | |||
"OSPFv3 AS-Scoped External Prefix TLV."; | uses fapm-sub-tlvs; | |||
} | } | |||
/* OSPFv2 Extended Inter-Area ASBR LSA */ | /* Flex-algo prefix metric Sub-TLV in OSPFv3 Inter-Area Prefix TLV */ | |||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
+ "ospf:area/ospf:database/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque" { | + "ospfv3-e-lsa:e-inter-prefix-tlvs/ospfv3-e-lsa:inter-prefix-tlv" { | |||
when "../../../../../../../../../../" | when "../../../../../../../../../../../../" | |||
+ "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv3'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv3 | |||
} | E-Router LSAs"; | |||
description | } | |||
"OSPFv2 Extended Inter-Area ASBR LSA in type 10 | uses fapm-sub-tlvs; | |||
opaque LSA."; | 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'" { | ||||
description | ||||
"This augmentation is only valid for OSPFv3."; | ||||
} | ||||
uses fapm-sub-tlvs; | ||||
description | ||||
"OSPFv3 AS-Scoped External Prefix TLV."; | ||||
} | ||||
container eia-asbr-opaque { | /* OSPFv2 Extended Inter-Area ASBR LSA */ | |||
container eia-asbr-tlv { | augment "/rt:routing/" | |||
leaf asbr-rtr-id { | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
type rt-types:router-id; | + "ospf:ospf/ospf:areas/" | |||
description | + "ospf:area/ospf:database/" | |||
"The OSPF Router ID of the ASBR."; | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
} | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
uses faam-sub-tlvs; | + "ospf:ospfv2/ospf:body/ospf:opaque" { | |||
uses ospf:unknown-tlvs; | when "../../../../../../../../../../" | |||
description | + "rt:type = 'ospf:ospfv2'" { | |||
"EIA-ASBR TLV, used to advertise additional attributes | description | |||
associated with the reachability of an ASBR."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
uses ospf:unknown-tlvs; | description | |||
"OSPFv2 Extended Inter-Area ASBR LSA in type 10 | ||||
opaque LSA."; | ||||
description | container eia-asbr-opaque { | |||
"OSPFv2 Extended Inter-Area (EIA-ASBR) opaque LSA."; | 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 */ | /* FAAM Sub-TLV in OSPFv3 Inter-Area-Router TLV */ | |||
augment "/rt:routing/" | augment "/rt:routing/" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" | + "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-router/" | |||
+ "ospfv3-e-lsa:e-inter-router-tlvs/" | + "ospfv3-e-lsa:e-inter-router-tlvs/" | |||
+ "ospfv3-e-lsa:inter-router-tlv" { | + "ospfv3-e-lsa:inter-router-tlv" { | |||
when "../../../../../../../../../../../../" | when "../../../../../../../../../../../../" | |||
+ "rt:type = 'ospf:ospfv3'" { | + "rt:type = 'ospf:ospfv3'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3 | "This augmentation is only valid for OSPFv3 | |||
Inter-Area-Router TLV."; | Inter-Area-Router TLV."; | |||
} | } | |||
uses faam-sub-tlvs; | uses faam-sub-tlvs; | |||
description | description | |||
"OSPFv3 Area-Scoped Inter-Area-Router TLV."; | "OSPFv3 Area-Scoped Inter-Area-Router TLV."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. Security Considerations | 8. Security Considerations | |||
The YANG modules specified in this document define a schema for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC5246]. | |||
skipping to change at page 48, line 40 ¶ | skipping to change at page 48, line 46 ¶ | |||
This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
The YANG model was developed using the suite of YANG tools written | The YANG model was developed using the suite of YANG tools written | |||
and maintained by numerous authors. | and maintained by numerous authors. | |||
11. Normative References | 11. Normative References | |||
[I-D.ietf-lsr-flex-algo] | [I-D.ietf-lsr-flex-algo] | |||
Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and | Psenak, P., Hegde, S., Filsfils, C., Talaulikar, K., and | |||
A. Gulko, "IGP Flexible Algorithm", draft-ietf-lsr-flex- | A. Gulko, "IGP Flexible Algorithm", Work in Progress, | |||
algo-15 (work in progress), April 2021. | Internet-Draft, draft-ietf-lsr-flex-algo-18, 25 October | |||
2021, <https://www.ietf.org/archive/id/draft-ietf-lsr- | ||||
flex-algo-18.txt>. | ||||
[I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | |||
"YANG Data Model for OSPF Protocol", draft-ietf-ospf- | "YANG Data Model for OSPF Protocol", Work in Progress, | |||
yang-29 (work in progress), October 2019. | Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019, | |||
<https://www.ietf.org/archive/id/draft-ietf-ospf-yang- | ||||
29.txt>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, | DOI 10.17487/RFC3688, January 2004, | |||
<https://www.rfc-editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
skipping to change at page 50, line 33 ¶ | skipping to change at page 50, line 41 ¶ | |||
Attributes", RFC 8920, DOI 10.17487/RFC8920, October 2020, | Attributes", RFC 8920, DOI 10.17487/RFC8920, October 2020, | |||
<https://www.rfc-editor.org/info/rfc8920>. | <https://www.rfc-editor.org/info/rfc8920>. | |||
Authors' Addresses | Authors' Addresses | |||
Acee Lindem | Acee Lindem | |||
Cisco Systems | Cisco Systems | |||
301 Midenhall Way | 301 Midenhall Way | |||
Cary, NC 27513 | Cary, NC 27513 | |||
EMail: acee@cisco.com | Email: acee@cisco.com | |||
Yingzhen Qu | Yingzhen Qu | |||
Futurewei | Futurewei | |||
2330 Central Expressway | 2330 Central Expressway | |||
Santa Clara, CA 95050 | Santa Clara, CA 95050 | |||
USA | United States of America | |||
EMail: yingzhen.qu@futurewei.com | Email: yingzhen.qu@futurewei.com | |||
End of changes. 89 change blocks. | ||||
649 lines changed or deleted | 651 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |