| < draft-ietf-lsr-isis-yang-augmentation-v1-01.txt | draft-ietf-lsr-isis-yang-augmentation-v1-02.txt > | |||
|---|---|---|---|---|
| Internet A. Lindem | Internet A. Lindem | |||
| Internet-Draft S. Litkowski | Internet-Draft S. Litkowski | |||
| Intended status: Standards Track Cisco Systems | Intended status: Standards Track Cisco Systems | |||
| Expires: December 23, 2021 Y. Qu | Expires: 25 June 2022 Y. Qu | |||
| Futurewei | Futurewei | |||
| June 21, 2021 | 22 December 2021 | |||
| IS-IS YANG Model Augmentations for Additional Features - Version 1 | IS-IS YANG Model Augmentations for Additional Features - Version 1 | |||
| draft-ietf-lsr-isis-yang-augmentation-v1-01 | draft-ietf-lsr-isis-yang-augmentation-v1-02 | |||
| Abstract | Abstract | |||
| This document defines YANG data modules augmenting the IETF IS-IS | This document defines YANG data modules augmenting the IETF IS-IS | |||
| YANG model to provide support for IS-IS Minimum Remaining Lifetime as | YANG model to provide support for IS-IS Minimum Remaining Lifetime as | |||
| defined in RFC 7987, ,IS-IS Application-Specific Link Attributes as | defined in RFC 7987, and IS-IS Application-Specific Link Attributes | |||
| defined in RFC 8919, and IS-IS Flexible Algorithm. | as defined in RFC 8919. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| 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 December 23, 2021. | This Internet-Draft will expire on 25 June 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | |||
| 1.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree diagram . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. YANG Module for IS-IS Minimum Remaining Lifetime . . . . . . 3 | 2. YANG Module for IS-IS Minimum Remaining Lifetime . . . . . . 3 | |||
| 3. YANG Module for IS-IS Application-Specific Link Attributes . 5 | 3. YANG Module for IS-IS Application-Specific Link Attributes . 5 | |||
| 4. YANG Module for IS-IS Flexible Algorithm . . . . . . . . . . 14 | 4. YANG Module for IS-IS Flexible Algorithm . . . . . . . . . . 14 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 25 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 8.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 27 | |||
| 8.2. Informative References . . . . . . . . . . . . . . . . . 29 | 8.2. Informative References . . . . . . . . . . . . . . . . . 29 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] [RFC7950] is a data definition language used to define | YANG [RFC7950] is a data definition language used to define the | |||
| the contents of a conceptual data store that allows networked devices | contents of a conceptual data store that allows networked devices to | |||
| to be managed using NETCONF [RFC6241]. YANG is proving relevant | be managed using NETCONF [RFC6241]. YANG is proving relevant beyond | |||
| beyond its initial confines, as bindings to other interfaces (e.g., | its initial confines, as bindings to other interfaces (e.g., ReST) | |||
| ReST) and encodings other than XML (e.g., JSON) are being defined. | and encodings other than XML (e.g., JSON) are being defined. | |||
| Furthermore, YANG data models can be used as the basis for | Furthermore, YANG data models can be used as the basis for | |||
| implementation of other interfaces, such as CLI and programmatic | implementation of other interfaces, such as CLI and programmatic | |||
| APIs. | APIs. | |||
| This document defines YANG data modules augmenting the IETF IS-IS | This document defines YANG data modules augmenting the IETF IS-IS | |||
| YANG model [I-D.ietf-isis-yang-isis-cfg], which itself augments | YANG model [I-D.ietf-isis-yang-isis-cfg], which itself augments | |||
| [RFC8349], to provide support for configuration and operational state | [RFC8349], to provide support for configuration and operational state | |||
| for the following IS-IS features: | for the following IS-IS features: | |||
| RFC7987: IS-IS Minimum Remaining Lifetime[RFC7987]. | RFC7987: IS-IS Minimum Remaining Lifetime[RFC7987]. | |||
| skipping to change at page 3, line 34 ¶ | skipping to change at page 3, line 34 ¶ | |||
| module: ietf-isis-remaining-lifetime | module: ietf-isis-remaining-lifetime | |||
| notifications: | notifications: | |||
| +---n corrupt-remaining-lifetime | +---n corrupt-remaining-lifetime | |||
| +--ro routing-protocol-name? -> /rt:routing | +--ro routing-protocol-name? -> /rt:routing | |||
| /control-plane-protocols | /control-plane-protocols | |||
| /control-plane-protocol/name | /control-plane-protocol/name | |||
| +--ro isis-level? level | +--ro isis-level? level | |||
| +--ro lsp-id? isis:lsp-id | +--ro lsp-id? isis:lsp-id | |||
| <CODE BEGINS> file "ietf-isis-remaining-lifetime@2021-01-05.yang" | <CODE BEGINS> file "ietf-isis-remaining-lifetime@2021-12-22.yang" | |||
| module ietf-isis-remaining-lifetime { | module ietf-isis-remaining-lifetime { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis-remaining-lifetime"; | |||
| prefix isis-remaining-lifetime; | prefix isis-remaining-lifetime; | |||
| import ietf-isis { | import ietf-isis { | |||
| prefix "isis"; | prefix "isis"; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/lsr> | "WG Web: <http://tools.ietf.org/wg/lsr> | |||
| WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yqu@futurewei.com> | <mailto:yqu@futurewei.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Stephane Litkowski | Author: Stephane Litkowski | |||
| <mailto:slitkows.ietf@gmail.com>"; | <mailto:slitkows.ietf@gmail.com>"; | |||
| description | description | |||
| "This YANG module defines the configuration and operational | "This YANG module defines the configuration and operational | |||
| state for IS-IS Minimum Remaining Lifetime feature as defined | state for IS-IS Minimum Remaining Lifetime feature as defined | |||
| in RFC 7987. | in RFC 7987. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2021 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject to | |||
| to the license terms contained in, the Simplified BSD License | the license terms contained in, the Revised BSD License set | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2021-01-05 { | revision 2021-12-22 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for IS-IS."; | "RFC XXXX: A YANG Data Model for IS-IS Minimum Remaining Lifetime."; | |||
| } | } | |||
| notification corrupt-remaining-lifetime { | notification corrupt-remaining-lifetime { | |||
| uses isis:notification-instance-hdr; | uses isis:notification-instance-hdr; | |||
| leaf lsp-id { | leaf lsp-id { | |||
| type isis:lsp-id; | type isis:lsp-id; | |||
| description "LSP ID"; | description "LSP ID"; | |||
| } | ||||
| description | ||||
| "This notification is sent when the system | ||||
| detects corrupted lifetime of an LSP."; | ||||
| reference "RFC 7987: IS-IS Minimum Remaining Lifetime"; | ||||
| } | } | |||
| description | ||||
| "This notification is sent when the system | ||||
| detects correpted lifetime of an LSP."; | ||||
| reference "RFC 7987: IS-IS Minimum Remaining Lifetime"; | ||||
| } | } | |||
| } | ||||
| <CODE ENDS> | <CODE ENDS> | |||
| 3. YANG Module for IS-IS Application-Specific Link Attributes | 3. YANG Module for IS-IS Application-Specific Link Attributes | |||
| This document defines a YANG module for IS-IS Application-Specific | This document defines a YANG module for IS-IS Application-Specific | |||
| Link Attributes [RFC8919]. It is an augmentation of the IS-IS base | Link Attributes [RFC8919]. It is an augmentation of the IS-IS base | |||
| model. | model. | |||
| module: ietf-isis-link-attr | module: ietf-isis-link-attr | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at page 6, line 41 ¶ | |||
| | | +--ro ipv4-int-addr? inet:ipv4-address | | | +--ro ipv4-int-addr? inet:ipv4-address | |||
| | +--ro ipv4-neighbor-addr | | +--ro ipv4-neighbor-addr | |||
| | | +--ro ipv4-neighbor-addr? inet:ipv4-address | | | +--ro ipv4-neighbor-addr? inet:ipv4-address | |||
| | +--ro ipv6-interface-addr | | +--ro ipv6-interface-addr | |||
| | | +--ro ipv6-int-addr? inet:ipv6-address | | | +--ro ipv6-int-addr? inet:ipv6-address | |||
| | +--ro ipv6-neighbor-addr | | +--ro ipv6-neighbor-addr | |||
| | +--ro ipv6-neighbor-addr? inet:ipv6-address | | +--ro ipv6-neighbor-addr? inet:ipv6-address | |||
| +--ro srlgs | +--ro srlgs | |||
| +--ro srlg* uint32 | +--ro srlg* uint32 | |||
| <CODE BEGINS> file "ietf-isis-link-attr@2021-01-05.yang" | <CODE BEGINS> file "ietf-isis-link-attr@2021-12-22.yang" | |||
| module ietf-isis-link-attr { | module ietf-isis-link-attr { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-link-attr"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis-link-attr"; | |||
| prefix isis-link-attr; | prefix isis-link-attr; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix inet; | prefix inet; | |||
| reference "RFC 6991 - Common YANG Data Types"; | reference "RFC 6991 - Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| } | } | |||
| import ietf-isis { | import ietf-isis { | |||
| prefix "isis"; | prefix "isis"; | |||
| } | } | |||
| organization | organization | |||
| "IETF LSR - Link State Routing Working Group"; | "IETF LSR - Link State Routing Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://tools.ietf.org/wg/lsr> | "WG Web: <http://tools.ietf.org/wg/lsr> | |||
| WG List: <mailto:lsr@ietf.org> | WG List: <mailto:lsr@ietf.org> | |||
| Author: Yingzhen Qu | Author: Yingzhen Qu | |||
| <mailto:yqu@futurewei.com> | <mailto:yqu@futurewei.com> | |||
| Author: Acee Lindem | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
| Author: Stephane Litkowski | Author: Stephane Litkowski | |||
| <mailto:slitkows.ietf@gmail.com>"; | <mailto:slitkows.ietf@gmail.com>"; | |||
| description | description | |||
| "This YANG module defines the configuration and operational | "This YANG module defines the configuration and operational | |||
| state for IS-IS application specific link attributes feature as | state for IS-IS application specific link attributes feature as | |||
| defined in RFC 8919. | defined in RFC 8919. | |||
| This YANG model conforms to the Network Management | This YANG model conforms to the Network Management | |||
| Datastore Architecture (NMDA) as described in RFC 8342. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
| Copyright (c) 2021 IETF Trust and the persons identified as | Copyright (c) 2021 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
| Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject to | |||
| to the license terms contained in, the Simplified BSD License | the license terms contained in, the Revised BSD License set | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices. | see the RFC itself for full legal notices. | |||
| The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
| they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2021-01-05 { | revision 2021-12-22 { | |||
| description | description | |||
| "Initial version"; | "Initial version"; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for IS-IS."; | "RFC XXXX: A YANG Data Model for IS-IS Application-Specific Link | |||
| } | Attributes."; | |||
| } | ||||
| identity sabm-bit { | identity sabm-bit { | |||
| description | description | |||
| "Base identity for sabm bits."; | "Base identity for sabm bits."; | |||
| reference "RFC 8919: IS-IS Application-Specific Link Attributes"; | reference "RFC 8919: IS-IS Application-Specific Link Attributes"; | |||
| } | } | |||
| identity rsvp-te-bit { | identity rsvp-te-bit { | |||
| base sabm-bit; | base sabm-bit; | |||
| description | description | |||
| "R bit, RSVP-TE."; | "R bit, RSVP-TE."; | |||
| } | } | |||
| identity sr-policy-bit { | identity sr-policy-bit { | |||
| base sabm-bit; | base sabm-bit; | |||
| description | description | |||
| "S bit, Segment Routing Policy."; | "S bit, Segment Routing Policy."; | |||
| } | } | |||
| identity lfa-bit { | identity lfa-bit { | |||
| base sabm-bit; | base sabm-bit; | |||
| description | description | |||
| "F bit, Loop Free Alternate (LFA). Includes all LFA types."; | "F bit, Loop Free Alternate (LFA). Includes all LFA types."; | |||
| } | } | |||
| grouping application-identifier-bit-mask { | grouping application-identifier-bit-mask { | |||
| description | description | |||
| "Identification of the set of applications associated with link | "Identification of the set of applications associated with link | |||
| attribute advertisements"; | attribute advertisements"; | |||
| leaf l-flag { | leaf l-flag { | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Legacy Flag. When set, all of the applications | "Legacy Flag. When set, all of the applications | |||
| specified in the bit mask MUST use the legacy | specified in the bit mask MUST use the legacy | |||
| advertisements."; | advertisements."; | |||
| } | } | |||
| leaf sabm-length { | leaf sabm-length { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Standard Application Identifier Bit Mask Length in | "Standard Application Identifier Bit Mask Length in | |||
| octets."; | octets."; | |||
| } | } | |||
| leaf r-flag { | leaf r-flag { | |||
| type boolean; | type boolean; | |||
| default false; | default false; | |||
| description | description | |||
| "Reserved."; | "Reserved."; | |||
| } | } | |||
| leaf udabm-length { | leaf udabm-length { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "User Defined Application Identifier Bit Mask Length | "User Defined Application Identifier Bit Mask Length | |||
| in octets."; | in octets."; | |||
| } | } | |||
| container sabm { | container sabm { | |||
| leaf-list sabm-bits { | leaf-list sabm-bits { | |||
| type identityref { | type identityref { | |||
| base sabm-bit; | base sabm-bit; | |||
| } | } | |||
| description | description | |||
| "SABM bits list. This list will contain | "SABM bits list. This list will contain | |||
| identities for the bits which are set in the | identities for the bits which are set in the | |||
| SABA bits."; | SABA bits."; | |||
| } | } | |||
| description | description | |||
| "Standard Application Identifier Bit Mask."; | "Standard Application Identifier Bit Mask."; | |||
| } | } | |||
| container udabm { | container udabm { | |||
| description | description | |||
| "User Defined Application Identifier Bit Mask. | "User Defined Application Identifier Bit Mask. | |||
| This container is to be augmented by user defined | This container is to be augmented by user defined | |||
| applications."; | applications."; | |||
| } | } | |||
| } | } | |||
| grouping application-specific-link-attributes-sub-tlv { | grouping application-specific-link-attributes-sub-tlv { | |||
| description | description | |||
| "Grouping for specification of the applications and | "Grouping for specification of the applications and | |||
| application-specific attribute values."; | application-specific attribute values."; | |||
| container application-specific-link-attributes-sub-tlvs { | container application-specific-link-attributes-sub-tlvs { | |||
| list asla-sub-tlvs { | list asla-sub-tlvs { | |||
| uses application-identifier-bit-mask; | uses application-identifier-bit-mask; | |||
| uses isis:unknown-tlvs; | uses isis:unknown-tlvs; | |||
| description | description | |||
| "List of application specific link attributes sub-tlvs."; | "List of application specific link attributes sub-tlvs."; | |||
| } | ||||
| description | ||||
| "Application specific link attributes sub-tlv."; | ||||
| } | ||||
| } | ||||
| grouping application-specific-srlg-tlv { | } | |||
| description | description | |||
| "Grouping of a TLV to advertise application-specific | "Application specific link attributes sub-tlv."; | |||
| SRLGs for a given link."; | } | |||
| container application-specific-srlg-tlv { | } | |||
| list as-srlg-tlvs { | ||||
| leaf neighbor-system-id { | ||||
| type isis:system-id; | ||||
| description | ||||
| "Neighbor System-ID."; | ||||
| } | ||||
| leaf pseudo-node-id { | ||||
| type uint8; | ||||
| description | ||||
| "Pseudo-node ID."; | ||||
| } | ||||
| uses application-identifier-bit-mask; | ||||
| leaf length-of-sub-tlvs { | ||||
| type uint8; | ||||
| description | ||||
| "Length of sub-tlvs."; | ||||
| } | ||||
| container link-id-sub-tlvs { | grouping application-specific-srlg-tlv { | |||
| description | description | |||
| "Link Identifier sub-TLVs."; | "Grouping of a TLV to advertise application-specific | |||
| container link-local-remote-ids { | SRLGs for a given link."; | |||
| description | container application-specific-srlg-tlv { | |||
| "Link local/remote identifier sub-tlv."; | list as-srlg-tlvs { | |||
| leaf link-local-id { | leaf neighbor-system-id { | |||
| type union { | type isis:system-id; | |||
| type inet:ipv4-address; | description | |||
| type uint32; | "Neighbor System-ID."; | |||
| } | } | |||
| description | leaf pseudo-node-id { | |||
| "Local identifier of the link. | type uint8; | |||
| It could be an IPv4 address or a local identifier."; | description | |||
| } | "Pseudo-node ID."; | |||
| leaf link-remote-id { | } | |||
| type union { | uses application-identifier-bit-mask; | |||
| type inet:ipv4-address; | leaf length-of-sub-tlvs { | |||
| type uint32; | type uint8; | |||
| } | description | |||
| description | "Length of sub-tlvs."; | |||
| "Remote identifier of the link. | } | |||
| It could be an IPv4 address or a remotely learned | ||||
| identifier."; | ||||
| } | ||||
| } | ||||
| container ipv4-interface-addr { | ||||
| leaf ipv4-int-addr { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 address for the interface."; | ||||
| } | ||||
| description | ||||
| "IPv4 interface address sub-tlv."; | ||||
| } | ||||
| container ipv4-neighbor-addr { | ||||
| leaf ipv4-neighbor-addr { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 address for a neighboring router | ||||
| on this link."; | ||||
| } | ||||
| description | ||||
| "IPv4 neighbor address sub-tlv."; | ||||
| } | ||||
| container ipv6-interface-addr { | ||||
| leaf ipv6-int-addr { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 address for the interface."; | ||||
| } | ||||
| description | ||||
| "IPv6 interface address sub-tlv."; | ||||
| } | ||||
| container ipv6-neighbor-addr { | ||||
| leaf ipv6-neighbor-addr { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 address for a neighboring router | ||||
| on this link."; | ||||
| } | ||||
| description | ||||
| "IPv6 neighbor address sub-tlv."; | ||||
| } | ||||
| } | ||||
| container srlgs { | container link-id-sub-tlvs { | |||
| description "List of SRLGs."; | description | |||
| leaf-list srlg { | "Link Identifier sub-TLVs."; | |||
| type uint32; | container link-local-remote-ids { | |||
| description | description | |||
| "SRLG value of the link."; | "Link local/remote identifier sub-tlv."; | |||
| } | leaf link-local-id { | |||
| } | type union { | |||
| type inet:ipv4-address; | ||||
| type uint32; | ||||
| } | ||||
| description | ||||
| "Local identifier of the link. | ||||
| It could be an IPv4 address or a local identifier."; | ||||
| } | ||||
| leaf link-remote-id { | ||||
| type union { | ||||
| type inet:ipv4-address; | ||||
| type uint32; | ||||
| description | } | |||
| "List of application specific SRLG tlvs."; | description | |||
| } | "Remote identifier of the link. | |||
| description | It could be an IPv4 address or a remotely learned | |||
| "Application specific SRLG tlv."; | identifier."; | |||
| } | } | |||
| } | } | |||
| container ipv4-interface-addr { | ||||
| leaf ipv4-int-addr { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 address for the interface."; | ||||
| } | ||||
| description | ||||
| "IPv4 interface address sub-tlv."; | ||||
| } | ||||
| container ipv4-neighbor-addr { | ||||
| leaf ipv4-neighbor-addr { | ||||
| type inet:ipv4-address; | ||||
| description | ||||
| "IPv4 address for a neighboring router | ||||
| on this link."; | ||||
| } | ||||
| description | ||||
| "IPv4 neighbor address sub-tlv."; | ||||
| } | ||||
| container ipv6-interface-addr { | ||||
| leaf ipv6-int-addr { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 address for the interface."; | ||||
| } | ||||
| description | ||||
| "IPv6 interface address sub-tlv."; | ||||
| } | ||||
| container ipv6-neighbor-addr { | ||||
| leaf ipv6-neighbor-addr { | ||||
| type inet:ipv6-address; | ||||
| description | ||||
| "IPv6 address for a neighboring router | ||||
| on this link."; | ||||
| } | ||||
| description | ||||
| "IPv6 neighbor address sub-tlv."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | container srlgs { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description "List of SRLGs."; | |||
| "/isis:isis/isis:interfaces/isis:interface" { | leaf-list srlg { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | type uint32; | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | description | |||
| description | "SRLG value of the link."; | |||
| "This augment ISIS routing protocol when used."; | } | |||
| } | } | |||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with TE attributes per application."; | ||||
| container isis-link-attr { | description | |||
| choice link-attr-op-mode { | "List of application specific SRLG tlvs."; | |||
| mandatory "true"; | } | |||
| leaf legacy { | description | |||
| type empty; | "Application specific SRLG tlv."; | |||
| 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"; | ||||
| } | ||||
| description | ||||
| "Link attributes operation mode."; | ||||
| } | ||||
| } | ||||
| /* TLV 22 */ | augment "/rt:routing/" + | |||
| augment "/rt:routing/" + | "rt:control-plane-protocols/rt:control-plane-protocol"+ | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | "/isis:isis/isis:interfaces/isis:interface" { | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | when "/rt:routing/rt:control-plane-protocols/"+ | |||
| "/isis:extended-is-neighbor/isis:neighbor"+ | "rt:control-plane-protocol/rt:type = 'isis:isis'" { | |||
| "/isis:instances/isis:instance" { | description | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | "This augment ISIS routing protocol when used."; | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | } | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augments ISIS protocol configuration | |||
| } | with TE attributes per application."; | |||
| description | ||||
| "This augments ISIS protocol LSDB TLV22."; | ||||
| uses application-specific-link-attributes-sub-tlv; | container isis-link-attr { | |||
| } | choice link-attr-op-mode { | |||
| mandatory "true"; | ||||
| leaf legacy { | ||||
| type empty; | ||||
| description | ||||
| "Only send legacy advertisements."; | ||||
| } | ||||
| leaf transition { | ||||
| type empty; | ||||
| description | ||||
| "Send both application-specific and legacy advertisements."; | ||||
| } | ||||
| leaf app-specific{ | ||||
| type empty; | ||||
| description | ||||
| "Only send application-specific advertisements."; | ||||
| } | ||||
| description | ||||
| "Link attributes mode"; | ||||
| /* TLV 223 */ | } | |||
| augment "/rt:routing/" + | description | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | "Link attributes operation mode."; | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | } | |||
| "/isis:mt-is-neighbor/isis:neighbor"+ | } | |||
| "/isis:instances/isis:instance" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB TLV22."; | ||||
| uses application-specific-link-attributes-sub-tlv; | /* TLV 22 */ | |||
| } | augment "/rt:routing/" + | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:extended-is-neighbor/isis:neighbor"+ | ||||
| "/isis:instances/isis:instance" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB TLV22."; | ||||
| /* application-specific SRLG TLV 238 */ | uses application-specific-link-attributes-sub-tlv; | |||
| augment "/rt:routing/" + | } | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB router capability."; | ||||
| uses application-specific-srlg-tlv; | /* TLV 223 */ | |||
| } | augment "/rt:routing/" + | |||
| } | "rt:control-plane-protocols/rt:control-plane-protocol"+ | |||
| <CODE ENDS> | "/isis:isis/isis:database/isis:levels/isis:lsp"+ | |||
| "/isis:mt-is-neighbor/isis:neighbor"+ | ||||
| "/isis:instances/isis:instance" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB TLV22."; | ||||
| uses application-specific-link-attributes-sub-tlv; | ||||
| } | ||||
| /* application-specific SRLG TLV 238 */ | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB router capability."; | ||||
| uses application-specific-srlg-tlv; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. YANG Module for IS-IS Flexible Algorithm | 4. YANG Module for IS-IS Flexible Algorithm | |||
| This document defines a YANG module for IS-IS Flexible Algorithm | This document defines a YANG module for IS-IS Flexible Algorithm | |||
| [I-D.ietf-lsr-flex-algo]. It is an augmentation of the IS-IS base | [I-D.ietf-lsr-flex-algo]. It is an augmentation of the IS-IS base | |||
| model. | model. | |||
| module: ietf-isis-flex-algo | module: ietf-isis-flex-algo | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis: | /rt:control-plane-protocol/isis:isis: | |||
| skipping to change at page 16, line 5 ¶ | skipping to change at page 16, line 7 ¶ | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis/isis:database | /rt:control-plane-protocol/isis:isis/isis:database | |||
| /isis:levels/isis:lsp/isis:mt-ipv6-reachability | /isis:levels/isis:lsp/isis:mt-ipv6-reachability | |||
| /isis:prefixes: | /isis:prefixes: | |||
| +--ro fapm-sub-tlvs | +--ro fapm-sub-tlvs | |||
| +--ro fapm-sub-tlv* [] | +--ro fapm-sub-tlv* [] | |||
| +--ro flex-algo? uint8 | +--ro flex-algo? uint8 | |||
| +--ro metric? uint32 | +--ro metric? uint32 | |||
| <CODE BEGINS> file "ietf-isis-flex-algo@2021-06-18.yang" | <CODE BEGINS> file "ietf-isis-flex-algo@2021-12-22.yang" | |||
| module ietf-isis-flex-algo { | module ietf-isis-flex-algo { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo"; | namespace "urn:ietf:params:xml:ns:yang:ietf-isis-flex-algo"; | |||
| prefix isis-flex-algo; | prefix isis-flex-algo; | |||
| import ietf-routing { | ||||
| prefix rt; | ||||
| reference "RFC 8349: A YANG Data Model for Routing | ||||
| Management (NMDA Version)"; | ||||
| } | ||||
| import ietf-te-types { | import ietf-routing { | |||
| prefix te-types; | prefix rt; | |||
| reference | reference "RFC 8349: A YANG Data Model for Routing | |||
| "RFC8776: Common YANG Data Types for Traffic Engineering."; | Management (NMDA Version)"; | |||
| } | } | |||
| import ietf-isis { | import ietf-te-types { | |||
| prefix "isis"; | prefix te-types; | |||
| } | reference | |||
| "RFC8776: Common YANG Data Types for Traffic Engineering."; | ||||
| } | ||||
| import ietf-te { | import ietf-isis { | |||
| prefix "te"; | prefix "isis"; | |||
| } | } | |||
| 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 ISIS 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 ISIS 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 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). | ||||
| 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 ISIS 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 ISIS Flexible Algorithm."; | |||
| description | ||||
| "Initial Version"; | ||||
| reference "RFC XXXX: YANG Data Model for ISIS Flexible Algorithm."; | ||||
| } | ||||
| /* Identities */ | revision 2021-12-22 { | |||
| description | ||||
| "Initial Version"; | ||||
| reference "RFC XXXX: YANG Data Model for ISIS 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 { | identity igp-metric { | |||
| base metric-type; | base metric-type; | |||
| description | description | |||
| "Min unidirectional link delay metric type."; | "Identity for the IGP metric type."; | |||
| reference | } | |||
| "RFC 8570 - IS-IS Traffic Engineering (TE) Metric Extensions"; | ||||
| } | ||||
| identity te-metric { | ||||
| base metric-type; | ||||
| description | ||||
| "Traffic engineering metric type."; | ||||
| reference | ||||
| "RFC 5305 - IS-IS Extensions for Traffic Engineering (TE)"; | ||||
| } | ||||
| identity fad-flags { | identity min-uni-delay { | |||
| description | base metric-type; | |||
| "Base identity for ISIS FAD flags."; | description | |||
| } | "Min unidirectional link delay metric type."; | |||
| identity m-bit { | reference | |||
| base fad-flags; | "RFC 8570 - IS-IS Traffic Engineering (TE) Metric Extensions"; | |||
| description | } | |||
| "M bit, when set, the fex-algo specific prefix and ASBR | ||||
| metric MUST be used for inter-area and external prefix | ||||
| calculation."; | ||||
| } | ||||
| /* Groupings */ | identity te-metric { | |||
| grouping fa-ex-ag-sub-tlv { | base metric-type; | |||
| container fa-ex-ag-sub-tlv { | description | |||
| leaf-list extended-admin-groups { | "Traffic engineering metric type."; | |||
| type uint64; | reference | |||
| description | "RFC 5305 - IS-IS Extensions for Traffic Engineering (TE)"; | |||
| "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 fad-flags { | |||
| container fa-in-any-ag-sub-tlv { | description | |||
| leaf-list extended-admin-groups { | "Base identity for ISIS FAD flags."; | |||
| type uint64; | } | |||
| description | ||||
| "Extended administrative group as defined in RFC 7308."; | ||||
| } | ||||
| description | ||||
| "The flex-algo include-any admin group sub-tlv."; | ||||
| } | ||||
| description | ||||
| "The flex-algo include-any admin group sub-tlv."; | ||||
| } | identity m-bit { | |||
| base fad-flags; | ||||
| description | ||||
| "M bit, when set, the fex-algo specific prefix and ASBR | ||||
| metric MUST be used for inter-area and external prefix | ||||
| calculation."; | ||||
| } | ||||
| 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 | } | |||
| "ISIS flex-algo definition flags."; | description | |||
| } | "The flex-algo include-any admin group sub-tlv."; | |||
| description | } | |||
| "The flex-algo definition flags sub-tlv."; | ||||
| } | ||||
| grouping fa-ex-srlg-sub-tlv { | grouping fa-in-all-ag-sub-tlv { | |||
| container fa-ex-srlg-sub-tlv { | container fa-in-all-ag-sub-tlv { | |||
| leaf-list srlgs { | leaf-list extended-admin-groups { | |||
| type uint32; | type uint64; | |||
| description | description | |||
| "SRLG value as defined in RFC 4203."; | "Extended administrative group as defined in RFC 7308."; | |||
| } | } | |||
| description | description | |||
| "The flex-algo exclude SRLG sub-tlv."; | "The flex-algo include-all admin group sub-tlv."; | |||
| } | } | |||
| description | description | |||
| "The flex-algo exclude SRLG sub-tlv."; | "The flex-algo include-all admin group sub-tlv."; | |||
| } | } | |||
| grouping fad-tlvs { | grouping fad-flags-sub-tlv { | |||
| container fad-tlvs { | container fad-flags-sub-tlv { | |||
| list fad-tlv { | leaf-list fad-flags { | |||
| leaf flex-algo { | type identityref { | |||
| type uint8; | base fad-flags; | |||
| description | } | |||
| "Flex-algo number, value between 128 and 255 inclusive."; | description | |||
| } | "Flex-algo definition flags list."; | |||
| leaf metric-type { | } | |||
| type identityref { | description | |||
| base metric-type; | "ISIS flex-algo definition flags."; | |||
| } | } | |||
| description | description | |||
| "Type of metric to be used during the calculation."; | "The flex-algo definition flags sub-tlv."; | |||
| } | } | |||
| 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; | grouping fa-ex-srlg-sub-tlv { | |||
| uses fa-in-any-ag-sub-tlv; | container fa-ex-srlg-sub-tlv { | |||
| uses fa-in-all-ag-sub-tlv; | leaf-list srlgs { | |||
| uses fad-flags-sub-tlv; | type uint32; | |||
| uses fa-ex-srlg-sub-tlv; | description | |||
| uses isis:unknown-tlvs; | "SRLG value as defined in RFC 4203."; | |||
| } | ||||
| description | ||||
| "The flex-algo exclude SRLG sub-tlv."; | ||||
| } | ||||
| description | ||||
| "The flex-algo exclude SRLG sub-tlv."; | ||||
| description | } | |||
| "List of flex-algo definition TLVs."; | ||||
| } | ||||
| description | ||||
| "ISIS Flexible Algorithm Definition TLV."; | ||||
| } | ||||
| description | ||||
| "ISIS Flexible Algorithm Definition (FAD) 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 metric { | type identityref { | |||
| type uint32; | base metric-type; | |||
| description | } | |||
| "Prefix metric."; | description | |||
| } | "Type of metric to be used during the calculation."; | |||
| description | } | |||
| "List of flex-algo prefix sub-tlvs."; | leaf calc-type { | |||
| } | type uint8 { | |||
| description | range "0..127"; | |||
| "Flex-algo prefix metric sub-tlvs."; | } | |||
| } | description | |||
| description | "IGP algorithm types, value from 0 to 127 as | |||
| "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; | defined under 'Interior Gateway Protocol (IGP) | |||
| } | Parameter' by IANA."; | |||
| } | ||||
| leaf priority { | ||||
| type uint8; | ||||
| description | ||||
| "Priority of the advertisement."; | ||||
| } | ||||
| /* 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 isis:unknown-tlvs; | ||||
| augment "/rt:routing/" + | description | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | "List of flex-algo definition TLVs."; | |||
| "/isis:isis" { | } | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | description | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "ISIS Flexible Algorithm Definition TLV."; | |||
| description | } | |||
| "This augment ISIS routing protocol when used"; | description | |||
| } | "ISIS Flexible Algorithm Definition (FAD) TLV."; | |||
| description | } | |||
| "This augments ISIS protocol configuration | grouping fapm-sub-tlvs { | |||
| with flexible algorithm."; | container fapm-sub-tlvs { | |||
| list fapm-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 flex-algo prefix sub-tlvs."; | ||||
| } | ||||
| description | ||||
| "Flex-algo prefix metric sub-tlvs."; | ||||
| } | ||||
| description | ||||
| "Flexible Algorithm Prefix Metric (FAPM) sub TLVs."; | ||||
| } | ||||
| container isis-flex-algo { | /* Configurations */ | |||
| list flex-algo { | ||||
| key "algo-number"; | ||||
| leaf algo-number { | augment "/rt:routing/" + | |||
| type uint8 { | "rt:control-plane-protocols/rt:control-plane-protocol"+ | |||
| range "128..255"; | "/isis:isis" { | |||
| } | when "/rt:routing/rt:control-plane-protocols/"+ | |||
| description | "rt:control-plane-protocol/rt:type = 'isis:isis'" { | |||
| "An identifier in the range 128-255 that's associated | description | |||
| with the Flexible Algorithm Definition."; | "This augment ISIS routing protocol when used"; | |||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with flexible algorithm."; | ||||
| } | container isis-flex-algo { | |||
| list flex-algo { | ||||
| key "algo-number"; | ||||
| leaf advertise-definition { | leaf algo-number { | |||
| type boolean; | type uint8 { | |||
| default true; | range "128..255"; | |||
| description | } | |||
| "Enable to advertise the flex-algo definition."; | description | |||
| } | "An identifier in the range 128-255 that's associated | |||
| with the Flexible Algorithm Definition."; | ||||
| } | ||||
| container admin-groups { | leaf advertise-definition { | |||
| if-feature "te-types:extended-admin-groups"; | type boolean; | |||
| if-feature "te-types:named-extended-admin-groups"; | default true; | |||
| leaf-list exclude-admin-groups { | description | |||
| type leafref { | "Enable to advertise the flex-algo definition."; | |||
| 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 { | container admin-groups { | |||
| if-feature "te-types:named-srlg-groups"; | if-feature "te-types:extended-admin-groups"; | |||
| type leafref { | if-feature "te-types:named-extended-admin-groups"; | |||
| path "/te:te/te:globals/te:named-srlgs/te:named-srlg/" | leaf-list exclude-admin-groups { | |||
| + "te:name"; | 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 { | |||
| description | if-feature "te-types:named-srlg-groups"; | |||
| "Shared Risk Link Groups (SRLGs) to be excluded during | type leafref { | |||
| the flex-algo path computation."; | 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 fast-reroute { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enable fast reroute."; | "Enable fast reroute."; | |||
| } | } | |||
| leaf metric-type { | leaf metric-type { | |||
| type identityref { | type identityref { | |||
| base metric-type; | base metric-type; | |||
| } | } | |||
| description | description | |||
| "Type of metric to be used during the calculation."; | "Type of metric to be used during the calculation."; | |||
| } | } | |||
| leaf microloop-avoidance { | leaf microloop-avoidance { | |||
| type boolean; | type boolean; | |||
| default true; | default true; | |||
| description | description | |||
| "Enable microloop avoidance."; | "Enable microloop avoidance."; | |||
| } | } | |||
| container prefix-metric { | container prefix-metric { | |||
| presence | presence | |||
| "Use flex-algo specific prefix metric."; | "Use flex-algo specific prefix metric."; | |||
| description | description | |||
| "Use flex-algo prefix metric."; | "Use flex-algo prefix metric."; | |||
| } | } | |||
| leaf priority { | leaf priority { | |||
| type uint8; | type uint8; | |||
| description | description | |||
| "Priority of the advertisement."; | "Priority of the advertisement."; | |||
| } | } | |||
| description | description | |||
| "List of flex-algo configurations."; | "List of flex-algo configurations."; | |||
| } | } | |||
| description | description | |||
| "Flexible Algorithm configuration."; | "Flexible Algorithm configuration."; | |||
| } | } | |||
| } | } | |||
| /* Database */ | ||||
| augment "/rt:routing/" + | /* Database */ | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:router-capabilities" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB router capability."; | ||||
| uses fad-tlvs; | augment "/rt:routing/" + | |||
| } | "rt:control-plane-protocols/rt:control-plane-protocol"+ | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:router-capabilities" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB router capability."; | ||||
| augment "/rt:routing/" + | uses fad-tlvs; | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | } | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:extended-ipv4-reachability/isis:prefixes" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| 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"+ | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | "/isis:isis/isis:database/isis:levels/isis:lsp"+ | |||
| "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | "/isis:extended-ipv4-reachability/isis:prefixes" { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | when "/rt:routing/rt:control-plane-protocols/"+ | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "rt:control-plane-protocol/rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses fapm-sub-tlvs; | 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"+ | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | "/isis:isis/isis:database/isis:levels/isis:lsp"+ | |||
| "/isis:ipv6-reachability/isis:prefixes" { | "/isis:mt-extended-ipv4-reachability/isis:prefixes" { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | when "/rt:routing/rt:control-plane-protocols/"+ | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "rt:control-plane-protocol/rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses fapm-sub-tlvs; | uses fapm-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:ipv6-reachability/isis:prefixes" { | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | ||||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | ||||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol LSDB prefix."; | ||||
| 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"+ | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | "/isis:isis/isis:database/isis:levels/isis:lsp"+ | |||
| "/isis:mt-ipv6-reachability/isis:prefixes" { | "/isis:mt-ipv6-reachability/isis:prefixes" { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | when "/rt:routing/rt:control-plane-protocols/"+ | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "rt:control-plane-protocol/rt:type = 'isis:isis'" { | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "This augment ISIS routing protocol when used"; | |||
| } | } | |||
| description | description | |||
| "This augments ISIS protocol LSDB prefix."; | "This augments ISIS protocol LSDB prefix."; | |||
| uses fapm-sub-tlvs; | uses fapm-sub-tlvs; | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 5. Security Considerations | 5. 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 27, line 33 ¶ | skipping to change at page 27, line 36 ¶ | |||
| 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. | |||
| 8. References | 8. References | |||
| 8.1. Normative References | 8.1. Normative References | |||
| [I-D.ietf-isis-yang-isis-cfg] | [I-D.ietf-isis-yang-isis-cfg] | |||
| Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. | Litkowski, S., Yeung, D., Lindem, A., Zhang, J., and L. | |||
| Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- | Lhotka, "YANG Data Model for IS-IS Protocol", Work in | |||
| isis-yang-isis-cfg-42 (work in progress), October 2019. | Progress, Internet-Draft, draft-ietf-isis-yang-isis-cfg- | |||
| 42, 15 October 2019, <https://www.ietf.org/archive/id/ | ||||
| draft-ietf-isis-yang-isis-cfg-42.txt>. | ||||
| [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>. | ||||
| [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 29, line 28 ¶ | skipping to change at page 29, line 36 ¶ | |||
| BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8340>. | <https://www.rfc-editor.org/info/rfc8340>. | |||
| 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 | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Cisco Systems | Cisco Systems | |||
| EMail: slitkows.ietf@gmail.com | Email: slitkows.ietf@gmail.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. 113 change blocks. | ||||
| 805 lines changed or deleted | 813 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/ | ||||