| < draft-ietf-isis-sr-yang-06.txt | draft-ietf-isis-sr-yang-07.txt > | |||
|---|---|---|---|---|
| IS-IS Working Group S. Litkowski | IS-IS Working Group S. Litkowski | |||
| Internet-Draft Orange | Internet-Draft Cisco Systems | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: January 8, 2020 Futurewei | Expires: July 12, 2020 Futurewei | |||
| P. Sarkar | P. Sarkar | |||
| Individual | Individual | |||
| I. Chen | I. Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| J. Tantsura | J. Tantsura | |||
| Individual | Apstra | |||
| July 7, 2019 | January 9, 2020 | |||
| YANG Data Model for IS-IS Segment Routing | YANG Data Model for IS-IS Segment Routing | |||
| draft-ietf-isis-sr-yang-06 | draft-ietf-isis-sr-yang-07 | |||
| Abstract | Abstract | |||
| This document defines a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage IS-IS Segment Routing. | and manage IS-IS Segment Routing. | |||
| 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. | |||
| skipping to change at page 1, line 38 ¶ | skipping to change at page 1, line 38 ¶ | |||
| 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 8, 2020. | This Internet-Draft will expire on July 12, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 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/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 4. IS-IS Segment Routing . . . . . . . . . . . . . . . . . . . . 3 | 4. IS-IS Segment Routing . . . . . . . . . . . . . . . . . . . . 3 | |||
| 5. IS-IS Segment Routing configuration . . . . . . . . . . . . . 6 | 5. IS-IS Segment Routing configuration . . . . . . . . . . . . . 6 | |||
| 5.1. Segment Routing activation . . . . . . . . . . . . . . . 6 | 5.1. Segment Routing activation . . . . . . . . . . . . . . . 6 | |||
| 5.2. Advertising mapping server policy . . . . . . . . . . . . 6 | 5.2. Advertising mapping server policy . . . . . . . . . . . . 6 | |||
| 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 6 | 5.3. IP Fast reroute . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 6 | 6. IS-IS Segment Routing YANG Module . . . . . . . . . . . . . . 6 | |||
| 7. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | |||
| 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 | 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 11. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 21 | 11. Change log for ietf-isis-sr YANG module . . . . . . . . . . . 22 | |||
| 11.1. From version -03 to version -04 . . . . . . . . . . . . 21 | 11.1. From version -03 to version -04 . . . . . . . . . . . . 22 | |||
| 11.2. From version -02 to version -03 . . . . . . . . . . . . 22 | 11.2. From version -02 to version -03 . . . . . . . . . . . . 22 | |||
| 11.3. From isis-sr document version -01 to version -02 . . . . 22 | 11.3. From isis-sr document version -01 to version -02 . . . . 22 | |||
| 11.4. From isis-sr document version -00 to version -01 . . . . 22 | 11.4. From isis-sr document version -00 to version -01 . . . . 23 | |||
| 11.5. From isis document version -12 to isis-sr document | 11.5. From isis document version -12 to isis-sr document | |||
| version -00 . . . . . . . . . . . . . . . . . . . . . . 22 | version -00 . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 11.6. From isis document version -12 to version -13 . . . . . 22 | 11.6. From isis document version -12 to version -13 . . . . . 23 | |||
| 11.7. From isis document version -09 to version -11 . . . . . 22 | 11.7. From isis document version -09 to version -11 . . . . . 23 | |||
| 11.8. From isis document version -08 to version -09 . . . . . 22 | 11.8. From isis document version -08 to version -09 . . . . . 23 | |||
| 11.9. From isis document version -07 to version -08 . . . . . 22 | 11.9. From isis document version -07 to version -08 . . . . . 23 | |||
| 12. Normative References . . . . . . . . . . . . . . . . . . . . 23 | 12. Normative References . . . . . . . . . . . . . . . . . . . . 23 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] [RFC7950] is a data definition language used to define | YANG [RFC6020] [RFC7950] is a data definition language used to define | |||
| the contents of a conceptual data store that allows networked devices | the contents of a conceptual data store that allows networked devices | |||
| to be managed using NETCONF [RFC6241]. YANG is proving relevant | to be managed using NETCONF [RFC6241]. YANG is proving relevant | |||
| beyond its initial confines, as bindings to other interfaces (e.g., | beyond its initial confines, as bindings to other interfaces (e.g., | |||
| ReST) and encodings other than XML (e.g., JSON) are being defined. | ReST) 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 a YANG data model that can be used to configure | This document defines a YANG data model that can be used to configure | |||
| and manage IS-IS Segment Routing | and manage IS-IS Segment Routing [RFC8667] and it is an augmentation | |||
| [I-D.ietf-isis-segment-routing-extensions] and it is an augmentation | ||||
| to the IS-IS YANG data model. | to the IS-IS YANG data model. | |||
| The YANG modules in this document conform to the Network Management | The YANG modules in this document conform to the Network Management | |||
| Datastore Architecture (NMDA) [RFC8342]. | Datastore Architecture (NMDA) [RFC8342]. | |||
| 2. Requirements Language | 2. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
| skipping to change at page 3, line 39 ¶ | skipping to change at page 3, line 36 ¶ | |||
| The IS-IS SR YANG module requires support for the base segment | The IS-IS SR YANG module requires support for the base segment | |||
| routing module [I-D.ietf-spring-sr-yang], which defines the global | routing module [I-D.ietf-spring-sr-yang], which defines the global | |||
| segment routing configuration independent of any specific routing | segment routing configuration independent of any specific routing | |||
| protocol configuration, and support of IS-IS base model | protocol configuration, and support of IS-IS base model | |||
| [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration | [I-D.ietf-isis-yang-isis-cfg] which defines basic IS-IS configuration | |||
| and state. | and state. | |||
| The figure below describes the overall structure of the isis-sr YANG | The figure below describes the overall structure of the isis-sr YANG | |||
| module: | module: | |||
| module: ietf-isis-sr | module: ietf-isis-sr | |||
| 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: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw bindings | | +--rw bindings | |||
| | +--rw advertise | | +--rw advertise | |||
| | | +--rw policies* string | | | +--rw policies* string | |||
| | +--rw receive? boolean | | +--rw receive? boolean | |||
| +--rw protocol-srgb {sr:protocol-srgb}? | +--rw protocol-srgb {sr-mpls:protocol-srgb}? | |||
| +--rw srgb* [lower-bound upper-bound] | +--rw srgb* [lower-bound upper-bound] | |||
| +--rw lower-bound uint32 | +--rw lower-bound uint32 | |||
| +--rw upper-bound uint32 | +--rw upper-bound uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis/isis:interfaces | /rt:control-plane-protocol/isis:isis/isis:interfaces | |||
| /isis:interface: | /isis:interface: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw adjacency-sid | +--rw adjacency-sid | |||
| +--rw adj-sids* [value] | +--rw adj-sids* [value] | |||
| | +--rw value-type? enumeration | | +--rw value-type? enumeration | |||
| | +--rw value uint32 | | +--rw value uint32 | |||
| | +--rw protected? boolean | | +--rw protected? boolean | |||
| +--rw advertise-adj-group-sid* [group-id] | +--rw advertise-adj-group-sid* [group-id] | |||
| | +--rw group-id uint32 | | +--rw group-id uint32 | |||
| +--rw advertise-protection? enumeration | +--rw advertise-protection? enumeration | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis/isis:interfaces | /rt:control-plane-protocol/isis:isis/isis:interfaces | |||
| /isis:interface/isis:fast-reroute: | /isis:interface/isis:fast-reroute: | |||
| +--rw ti-lfa {ti-lfa}? | +--rw ti-lfa {ti-lfa}? | |||
| +--rw enable? boolean | +--rw enable? boolean | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis/isis:interfaces | /rt:control-plane-protocol/isis:isis/isis:interfaces | |||
| /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: | /isis:interface/isis:fast-reroute/isis:lfa/isis:remote-lfa: | |||
| +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | +--rw use-segment-routing-path? boolean {remote-lfa-sr}? | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/isis:isis/isis:interfaces | /rt:control-plane-protocol/isis:isis/isis:interfaces | |||
| /isis:interface/isis:adjacencies/isis:adjacency: | /isis:interface/isis:adjacencies/isis:adjacency: | |||
| +--ro adjacency-sid* [value] | +--ro adjacency-sid* [value] | |||
| +--ro af? iana-rt-types:address-family | +--ro af? iana-rt-types:address-family | |||
| +--ro value uint32 | +--ro value uint32 | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro protection-requested? boolean | +--ro protection-requested? boolean | |||
| 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:router-capabilities: | /isis:levels/isis:lsp/isis:router-capabilities: | |||
| +--ro sr-capability | +--ro sr-capability | |||
| | +--ro flags? bits | | +--ro sr-capability | |||
| | +--ro global-blocks | | | +--ro sr-capability-bits* identityref | |||
| | +--ro global-block* | | +--ro global-blocks | |||
| | +--ro range-size? uint32 | | +--ro global-block* [] | |||
| | +--ro sid-sub-tlv | | +--ro range-size? uint32 | |||
| | +--ro sid? uint32 | | +--ro sid-sub-tlv | |||
| +--ro sr-algorithms | | +--ro sid? uint32 | |||
| | +--ro sr-algorithm* uint8 | +--ro sr-algorithms | |||
| +--ro local-blocks | | +--ro sr-algorithm* uint8 | |||
| | +--ro local-block* | +--ro local-blocks | |||
| | +--ro range-size? uint32 | | +--ro local-block* [] | |||
| | +--ro sid-sub-tlv | | +--ro range-size? uint32 | |||
| | +--ro sid? uint32 | | +--ro sid-sub-tlv | |||
| +--ro srms-preference | | +--ro sid? uint32 | |||
| +--ro preference? uint8 | +--ro srms-preference | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro preference? uint8 | |||
| /rt:control-plane-protocol/isis:isis/isis:database | augment /rt:routing/rt:control-plane-protocols | |||
| /isis:levels/isis:lsp/isis:extended-is-neighbor | /rt:control-plane-protocol/isis:isis/isis:database/isis:levels | |||
| /isis:neighbor: | /isis:lsp/isis:extended-is-neighbor/isis:neighbor: | |||
| +--ro sid-list* [value] | ||||
| +--ro flags? bits | +--ro sid-list* [value] | |||
| +--ro weight? uint8 | +--ro adj-sid-flags | |||
| +--ro neighbor-id? isis:system-id | | +--ro bits* identityref | |||
| +--ro value uint32 | +--ro weight? uint8 | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro neighbor-id? isis:system-id | |||
| /rt:control-plane-protocol/isis:isis/isis:database | +--ro value uint32 | |||
| /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor: | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro sid-list* [value] | /rt:control-plane-protocol/isis:isis/isis:database | |||
| +--ro flags? bits | /isis:levels/isis:lsp/isis:mt-is-neighbor/isis:neighbor: | |||
| +--ro weight? uint8 | +--ro sid-list* [value] | |||
| +--ro neighbor-id? isis:system-id | +--ro adj-sid-flags | |||
| +--ro value uint32 | | +--ro bits* identityref | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro weight? uint8 | |||
| /rt:control-plane-protocol/isis:isis/isis:database | +--ro neighbor-id? isis:system-id | |||
| /isis:levels/isis:lsp/isis:extended-ipv4-reachability | +--ro value uint32 | |||
| /isis:prefixes: | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro sid-list* [value] | /rt:control-plane-protocol/isis:isis/isis:database | |||
| +--ro flags? bits | /isis:levels/isis:lsp/isis:extended-ipv4-reachability | |||
| +--ro algorithm? uint8 | /isis:prefixes: | |||
| +--ro value uint32 | +--ro sid-list* [value] | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro perfix-sid-flags | |||
| /rt:control-plane-protocol/isis:isis/isis:database | | +--ro bits* identityref | |||
| /isis:levels/isis:lsp/isis:mt-extended-ipv4-reachability | +--ro algorithm? uint8 | |||
| /isis:prefixes: | +--ro value uint32 | |||
| +--ro sid-list* [value] | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro flags? bits | /rt:control-plane-protocol/isis:isis/isis:database | |||
| +--ro algorithm? uint8 | /isis:levels/isis:lsp/isis:mt-extended-ipv4-reachability | |||
| +--ro value uint32 | /isis:prefixes: | |||
| augment /rt:routing/rt:control-plane-protocols | +--ro sid-list* [value] | |||
| /rt:control-plane-protocol/isis:isis/isis:database | +--ro perfix-sid-flags | |||
| /isis:levels/isis:lsp/isis:ipv6-reachability/isis:prefixes: | | +--ro bits* identityref | |||
| +--ro sid-list* [value] | +--ro algorithm? uint8 | |||
| +--ro flags? bits | +--ro value uint32 | |||
| +--ro algorithm? uint8 | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro value uint32 | /rt:control-plane-protocol/isis:isis/isis:database | |||
| augment /rt:routing/rt:control-plane-protocols | /isis:levels/isis:lsp/isis:ipv6-reachability/isis:prefixes: | |||
| /rt:control-plane-protocol/isis:isis/isis:database | +--ro sid-list* [value] | |||
| /isis:levels/isis:lsp/isis:mt-ipv6-reachability | +--ro perfix-sid-flags | |||
| /isis:prefixes: | | +--ro bits* identityref | |||
| +--ro sid-list* [value] | +--ro algorithm? uint8 | |||
| +--ro flags? bits | +--ro value uint32 | |||
| +--ro algorithm? uint8 | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro value uint32 | /rt:control-plane-protocol/isis:isis/isis:database | |||
| augment /rt:routing/rt:control-plane-protocols | /isis:levels/isis:lsp/isis:mt-ipv6-reachability/isis:prefixes: | |||
| /rt:control-plane-protocol/isis:isis/isis:database | +--ro sid-list* [value] | |||
| /isis:levels/isis:lsp: | +--ro perfix-sid-flags | |||
| +--ro segment-routing-bindings* [fec range] | | +--ro bits* identityref | |||
| +--ro fec string | +--ro algorithm? uint8 | |||
| +--ro range uint16 | +--ro value uint32 | |||
| +--ro flags? bits | augment /rt:routing/rt:control-plane-protocols | |||
| +--ro binding | /rt:control-plane-protocol/isis:isis/isis:database | |||
| +--ro prefix-sid | /isis:levels/isis:lsp: | |||
| +--ro sid-list* [value] | +--ro segment-routing-bindings* [fec range] | |||
| +--ro flags? bits | +--ro fec string | |||
| +--ro algorithm? uint8 | +--ro range uint16 | |||
| +--ro value uint32 | +--ro sid-binding-flags | |||
| | +--ro bits* identityref | ||||
| +--ro binding | ||||
| +--ro prefix-sid | ||||
| +--ro sid-list* [value] | ||||
| +--ro perfix-sid-flags | ||||
| | +--ro bits* identityref | ||||
| +--ro algorithm? uint8 | ||||
| +--ro value uint32 | ||||
| 5. IS-IS Segment Routing configuration | 5. IS-IS Segment Routing configuration | |||
| 5.1. Segment Routing activation | 5.1. Segment Routing activation | |||
| Activation of segment-routing IS-IS is done by setting the "enable" | Activation of segment-routing IS-IS is done by setting the "enable" | |||
| leaf to true. This triggers advertisement of segment-routing | leaf to true. This triggers advertisement of segment-routing | |||
| extensions based on the configuration parameters that have been setup | extensions based on the configuration parameters that have been setup | |||
| using the base segment routing module. | using the base segment routing module. | |||
| skipping to change at page 6, line 44 ¶ | skipping to change at page 6, line 48 ¶ | |||
| 5.3. IP Fast reroute | 5.3. IP Fast reroute | |||
| IS-IS SR model augments the fast-reroute container under interface. | IS-IS SR model augments the fast-reroute container under interface. | |||
| It brings the ability to activate TI-LFA (topology independent LFA) | It brings the ability to activate TI-LFA (topology independent LFA) | |||
| and also enhances remote LFA to use segment-routing tunneling instead | and also enhances remote LFA to use segment-routing tunneling instead | |||
| of LDP. | of LDP. | |||
| 6. IS-IS Segment Routing YANG Module | 6. IS-IS Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-isis-sr@2019-07-07.yang" | <CODE BEGINS> file "ietf-isis-sr@2020-01-09.yang" | |||
| module ietf-isis-sr { | module ietf-isis-sr { | |||
| namespace "urn:ietf:params:xml:ns:" | namespace "urn:ietf:params:xml:ns:" | |||
| + "yang:ietf-isis-sr"; | + "yang:ietf-isis-sr"; | |||
| prefix isis-sr; | ||||
| import ietf-routing { | prefix isis-sr; | |||
| prefix "rt"; | ||||
| } | ||||
| import ietf-segment-routing-common { | import ietf-routing { | |||
| prefix "sr-cmn"; | prefix "rt"; | |||
| } | } | |||
| import ietf-segment-routing { | import ietf-segment-routing-common { | |||
| prefix "sr"; | prefix "sr-cmn"; | |||
| } | } | |||
| import ietf-isis { | import ietf-segment-routing-mpls { | |||
| prefix "isis"; | prefix "sr-mpls"; | |||
| } | } | |||
| import iana-routing-types { | import ietf-isis { | |||
| prefix "iana-rt-types"; | prefix "isis"; | |||
| } | } | |||
| organization | import iana-routing-types { | |||
| "IETF LSR - LSR Working Group"; | prefix "iana-rt-types"; | |||
| } | ||||
| contact | organization | |||
| "WG List: <mailto:lsr@ietf.org> | "IETF LSR - LSR Working Group"; | |||
| Editor: Stephane Litkowski | contact | |||
| <mailto:stephane.litkowski@orange.com> | "WG List: <mailto:lsr@ietf.org> | |||
| Author: Acee Lindem | Editor: Stephane Litkowski | |||
| <mailto:acee@cisco.com> | <mailto:stephane.litkowski@orange.com> | |||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@futurewei.com> | ||||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ingwherchen@mitre.org> | ||||
| Author: Jeff Tantsura | ||||
| <mailto:jefftant.ietf@gmail.com> | ||||
| "; | ||||
| description | Author: Acee Lindem | |||
| "The YANG module defines a generic configuration model for | <mailto:acee@cisco.com> | |||
| Segment routing ISIS extensions common across all of the vendor | Author: Yingzhen Qu | |||
| implementations."; | <mailto:yingzhen.qu@futurewei.com> | |||
| Author: Pushpasis Sarkar | ||||
| <mailto:pushpasis.ietf@gmail.com> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ingwherchen@mitre.org> | ||||
| Author: Jeff Tantsura | ||||
| <mailto:jefftant.ietf@gmail.com> | ||||
| "; | ||||
| revision 2019-07-07 { | description | |||
| description | "The YANG module defines a generic configuration model for | |||
| "Initial revision."; | Segment routing ISIS extensions common across all of the vendor | |||
| reference "RFC XXXX"; | implementations | |||
| } | Copyright (c) 2020 IETF Trust and the persons identified as | |||
| authors of the code. All rights reserved. | ||||
| /* Identities */ | Redistribution and use in source and binary forms, with or | |||
| without modification, is permitted pursuant to, and subject | ||||
| to the license terms contained in, the Simplified BSD License | ||||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | ||||
| Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info). | ||||
| /* Features */ | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | ||||
| feature remote-lfa-sr { | reference "RFC XXXX"; | |||
| description | ||||
| "Enhance rLFA to use SR path."; | ||||
| } | ||||
| feature ti-lfa { | revision 2020-01-09 { | |||
| description | description | |||
| "Enhance IPFRR with ti-lfa | "Initial revision."; | |||
| support"; | reference "RFC XXXX"; | |||
| } | } | |||
| /* Groupings */ | /* Identities */ | |||
| identity sr-capability { | ||||
| description | ||||
| "Base identity for ISIS SR-Capabilities sub-TLV flgs"; | ||||
| } | ||||
| grouping sid-sub-tlv { | identity mpls-ipv4 { | |||
| description "SID/Label sub-TLV grouping."; | base sr-capability; | |||
| container sid-sub-tlv { | description | |||
| description | "If set, then the router is capable of | |||
| "Used to advertise the SID/Label associated with a | processing SR MPLS encapsulated IPv4 packets | |||
| prefix or adjacency."; | on all interfaces."; | |||
| leaf sid { | } | |||
| type uint32; | ||||
| description | ||||
| "Segment Identifier (SID) - A 20 bit label or | ||||
| 32 bit SID."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping sr-capability { | identity mpls-ipv6 { | |||
| description | base sr-capability; | |||
| "SR capability grouping."; | description | |||
| container sr-capability { | "If set, then the router is capable of | |||
| description | processing SR MPLS encapsulated IPv6 packets | |||
| "Segment Routing capability."; | on all interfaces."; | |||
| leaf flags { | } | |||
| type bits { | ||||
| bit mpls-ipv4 { | ||||
| position 0; | ||||
| description | ||||
| "If set, then the router is capable of | ||||
| processing SR MPLS encapsulated IPv4 packets | ||||
| on all interfaces."; | ||||
| } | ||||
| bit mpls-ipv6 { | ||||
| position 1; | ||||
| description | ||||
| "If set, then the router is capable of | ||||
| processing SR MPLS encapsulated IPv6 packets | ||||
| on all interfaces."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Flags."; | ||||
| } | ||||
| container global-blocks { | ||||
| description | ||||
| "Segment Routing Global Blocks."; | ||||
| list global-block { | ||||
| description "Segment Routing Global Block."; | ||||
| leaf range-size { | ||||
| type uint32; | ||||
| description "The SID range."; | ||||
| } | ||||
| uses sid-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping sr-algorithm { | identity prefix-sid-bit { | |||
| description | description | |||
| "SR algorithm grouping."; | "Base identity for prefix sid sub-tlv bits."; | |||
| container sr-algorithms { | } | |||
| description "All SR algorithms."; | identity r-bit { | |||
| leaf-list sr-algorithm { | base prefix-sid-bit; | |||
| type uint8; | description | |||
| description | "Re-advertisement Flag."; | |||
| "The Segment Routing (SR) algorithms that the router is | } | |||
| currently using."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping srlb { | identity n-bit { | |||
| description | base prefix-sid-bit; | |||
| "SR Local Block grouping."; | description | |||
| container local-blocks { | "Node-SID Flag."; | |||
| description "List of SRLBs."; | } | |||
| list local-block { | ||||
| description "Segment Routing Local Block."; | ||||
| leaf range-size { | ||||
| type uint32; | ||||
| description "The SID range."; | ||||
| } | ||||
| uses sid-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping srms-preference { | identity p-bit { | |||
| description "The SRMS preference TLV is used to advertise | base prefix-sid-bit; | |||
| a preference associated with the node that acts | description | |||
| as an SR Mapping Server."; | "No-PHP (No Penultimate Hop-Popping) Flag."; | |||
| container srms-preference { | } | |||
| description "SRMS Preference TLV."; | ||||
| leaf preference { | ||||
| type uint8 { | ||||
| range "0 .. 255"; | ||||
| } | ||||
| description "SRMS preference TLV, vlaue from 0 to 255."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping adjacency-state { | identity e-bit { | |||
| description | base prefix-sid-bit; | |||
| "This group will extend adjacency state."; | description | |||
| list adjacency-sid { | "Explicit NULL Flag."; | |||
| key value; | } | |||
| config false; | ||||
| leaf af { | ||||
| type iana-rt-types:address-family; | ||||
| description | ||||
| "Address-family associated with the | ||||
| segment ID"; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight associated with | ||||
| the adjacency SID."; | ||||
| } | ||||
| leaf protection-requested { | ||||
| type boolean; | ||||
| description | ||||
| "Describe if the adjacency SID | ||||
| must be protected."; | ||||
| } | ||||
| description | ||||
| "List of adjacency Segment IDs."; | ||||
| } | ||||
| } | ||||
| grouping prefix-segment-id { | identity v-bit { | |||
| description | base prefix-sid-bit; | |||
| "This group defines segment routing extensions | description | |||
| for prefixes."; | "Value Flag."; | |||
| } | ||||
| list sid-list { | identity l-bit { | |||
| key value; | base prefix-sid-bit; | |||
| description | ||||
| "Local Flag."; | ||||
| } | ||||
| leaf flags { | identity adj-sid-bit { | |||
| type bits { | description | |||
| bit readvertisment { | "Base identity for adj sid sub-tlv bits."; | |||
| position 7; | } | |||
| description | ||||
| "If set, then the prefix to | ||||
| which this Prefix-SID is attached, | ||||
| has been propagated by the | ||||
| router either from another level | ||||
| or from redistribution."; | ||||
| } | ||||
| bit php { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the penultimate hop MUST NOT | ||||
| pop the Prefix-SID before delivering the packet | ||||
| to the node that advertised the Prefix-SID."; | ||||
| } | ||||
| bit explicit-null { | ||||
| position 4; | ||||
| description | ||||
| "If set, any upstream neighbor of | ||||
| the Prefix-SID originator MUST replace | ||||
| the Prefix-SID with a | ||||
| Prefix-SID having an | ||||
| Explicit-NULL value (0 for IPv4 and 2 for | ||||
| IPv6) before forwarding the packet."; | ||||
| } | ||||
| bit value { | ||||
| position 3; | ||||
| description | ||||
| "If set, then the Prefix-SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| bit local { | ||||
| position 2; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the Prefix-SID has local significance. | ||||
| By default the flag is UNSET."; | ||||
| } | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| leaf algorithm { | identity f-bit { | |||
| type uint8; | base adj-sid-bit; | |||
| description | description | |||
| "Algorithm to be used for path computation."; | "Address-Family flag."; | |||
| } | } | |||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the prefix-SID."; | ||||
| } | ||||
| description | ||||
| "List of segments."; | ||||
| } | ||||
| } | ||||
| grouping adjacency-segment-id { | identity b-bit { | |||
| description | base adj-sid-bit; | |||
| "This group defines segment routing extensions | description | |||
| for adjacencies."; | "Backup flag."; | |||
| } | ||||
| list sid-list { | identity vi-bit { | |||
| key value; | base adj-sid-bit; | |||
| description | ||||
| "Value/Index flag."; | ||||
| } | ||||
| leaf flags { | identity lo-bit { | |||
| type bits { | base adj-sid-bit; | |||
| bit address-family { | description | |||
| position 7; | "Local flag."; | |||
| description | } | |||
| "If unset, then the Adj-SID refers | ||||
| to an adjacency with outgoing IPv4 encapsulation. | ||||
| If set then the Adj-SID refers to an adjacency | ||||
| with outgoing IPv6 encapsulation."; | ||||
| } | ||||
| bit backup { | ||||
| position 6; | ||||
| description | ||||
| "If set, the Adj-SID refers to an | ||||
| adjacency being protected | ||||
| (e.g.: using IPFRR or MPLS-FRR)"; | ||||
| } | ||||
| bit value { | ||||
| position 5; | ||||
| description | ||||
| "If set, then the SID carries a | ||||
| value (instead of an index). | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit local { | ||||
| position 4; | ||||
| description | ||||
| "If set, then the value/index carried by | ||||
| the SID has local significance. | ||||
| By default the flag is SET."; | ||||
| } | ||||
| bit set { | ||||
| position 3; | ||||
| description | ||||
| "When set, the S-Flag indicates that the | ||||
| Adj-SID refers to a set of adjacencies."; | ||||
| } | ||||
| bit persistent { | ||||
| position 2; | ||||
| description | ||||
| "When set, the P-Flag indicates that the | ||||
| Adj-SID is persistently allocated."; | ||||
| } | ||||
| } | ||||
| description | identity s-bit { | |||
| "Describes flags associated with the | base adj-sid-bit; | |||
| segment ID."; | description | |||
| } | "Group flag."; | |||
| leaf weight { | } | |||
| type uint8; | ||||
| description | ||||
| "The value represents the weight of the Adj-SID | ||||
| for the purpose of load balancing."; | ||||
| } | ||||
| leaf neighbor-id { | ||||
| type isis:system-id; | ||||
| description | ||||
| "Describes the system ID of the neighbor | ||||
| associated with the SID value. This is only | ||||
| used on LAN adjacencies."; | ||||
| } | ||||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| description | ||||
| "List of segments."; | ||||
| } | ||||
| } | ||||
| grouping segment-routing-binding-tlv { | identity pe-bit { | |||
| list segment-routing-bindings { | base adj-sid-bit; | |||
| key "fec range"; | description | |||
| "Persistent flag."; | ||||
| } | ||||
| leaf fec { | identity sid-binding-bit { | |||
| type string; | description | |||
| description | "Base identity for sid binding tlv bits."; | |||
| "IP (v4 or v6) range to be bound to SIDs."; | } | |||
| } | ||||
| leaf range { | identity af-bit { | |||
| type uint16; | base sid-binding-bit; | |||
| description | description | |||
| "Describes number of elements to assign | "Address-Family flag."; | |||
| a binding to."; | } | |||
| } | ||||
| leaf flags { | identity m-bit { | |||
| type bits { | base sid-binding-bit; | |||
| bit address-family { | description | |||
| position 7; | "Mirror Context flag."; | |||
| description | } | |||
| "If unset, then the Prefix FEC | ||||
| carries an IPv4 Prefix. | ||||
| If set then the Prefix FEC carries an | ||||
| IPv6 Prefix."; | ||||
| } | identity sf-bit { | |||
| bit mirror { | base sid-binding-bit; | |||
| position 6; | description | |||
| description | "S flag. If set, the binding label tlv should be flooded | |||
| "Set if the advertised SID/path | across the entire routing domain."; | |||
| corresponds to a mirrored context."; | } | |||
| } | ||||
| bit flooding { | ||||
| position 5; | ||||
| description | ||||
| "If the S bit is set(1), | ||||
| the IS-IS Router CAPABILITY TLV | ||||
| MUST be flooded across the entire routing domain. | ||||
| If the S bit is | ||||
| not set(0), the TLV MUST NOT be leaked between levels. | ||||
| This bit MUST NOT be altered during the TLV leaking."; | ||||
| } | ||||
| bit down { | ||||
| position 4; | ||||
| description | ||||
| "When the IS-IS Router CAPABILITY TLV is | ||||
| leaked from level-2 to level-1, the D bit | ||||
| MUST be set. Otherwise, this bit MUST | ||||
| be clear. IS-IS Router capability TLVs | ||||
| with the D bit set MUST NOT | ||||
| be leaked from level-1 to level-2. | ||||
| This is to prevent TLV looping."; | ||||
| } | ||||
| bit attached { | ||||
| position 3; | ||||
| description | ||||
| "The originator of the SID/Label Binding TLV MAY set the | ||||
| A bit in order to signal that the prefixes and SIDs | ||||
| advertised in the SID/Label Binding TLV are directly | ||||
| connected to their originators."; | ||||
| } | ||||
| } | identity d-bit { | |||
| description | base sid-binding-bit; | |||
| "Flags of the binding."; | description | |||
| } | "Leaking flag."; | |||
| } | ||||
| container binding { | identity a-bit { | |||
| container prefix-sid { | base sid-binding-bit; | |||
| uses prefix-segment-id; | description | |||
| description | "Attached flag."; | |||
| "Binding prefix SID to the range."; | } | |||
| } | ||||
| description | ||||
| "Bindings associated with the range."; | ||||
| } | ||||
| description | /* Features */ | |||
| "This container describes list of SID/Label bindings. | ||||
| ISIS reference is TLV 149."; | ||||
| } | ||||
| description | ||||
| "Defines binding TLV for database."; | ||||
| } | ||||
| /* Cfg */ | feature remote-lfa-sr { | |||
| description | ||||
| "Enhance rLFA to use SR path."; | ||||
| } | ||||
| augment "/rt:routing/" + | feature ti-lfa { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description | |||
| "/isis:isis" { | "Enhance IPFRR with ti-lfa | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | support"; | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | } | |||
| description | ||||
| "This augment ISIS routing protocol when used"; | ||||
| } | ||||
| description | ||||
| "This augments ISIS protocol configuration | ||||
| with segment routing."; | ||||
| uses sr:sr-controlplane; | /* Groupings */ | |||
| container protocol-srgb { | ||||
| if-feature sr:protocol-srgb; | ||||
| uses sr-cmn:srgb; | ||||
| description | ||||
| "Per-protocol SRGB."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | grouping sid-sub-tlv { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description "SID/Label sub-TLV grouping."; | |||
| "/isis:isis/isis:interfaces/isis:interface" { | container sid-sub-tlv { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | description | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "Used to advertise the SID/Label associated with a | |||
| description | prefix or adjacency."; | |||
| "This augment ISIS routing protocol when used"; | leaf sid { | |||
| } | type uint32; | |||
| description | description | |||
| "This augments ISIS protocol configuration | "Segment Identifier (SID) - A 20 bit label or | |||
| with segment routing."; | 32 bit SID."; | |||
| } | ||||
| } | ||||
| } | ||||
| grouping sr-capability { | ||||
| description | ||||
| "SR capability grouping."; | ||||
| container sr-capability { | ||||
| description | ||||
| "Segment Routing capability."; | ||||
| container sr-capability { | ||||
| leaf-list sr-capability-bits { | ||||
| type identityref { | ||||
| base sr-capability; | ||||
| } | ||||
| description "SR Capbility sub-tlv flags list."; | ||||
| } | ||||
| description | ||||
| "SR Capability Flags."; | ||||
| } | ||||
| container global-blocks { | ||||
| description | ||||
| "Segment Routing Global Blocks."; | ||||
| list global-block { | ||||
| description "Segment Routing Global Block."; | ||||
| leaf range-size { | ||||
| type uint32; | ||||
| description "The SID range."; | ||||
| } | ||||
| uses sid-sub-tlv; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| uses sr:igp-interface; | grouping sr-algorithm { | |||
| description | ||||
| "SR algorithm grouping."; | ||||
| container sr-algorithms { | ||||
| description "All SR algorithms."; | ||||
| leaf-list sr-algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "The Segment Routing (SR) algorithms that the router is | ||||
| currently using."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | grouping srlb { | |||
| description | ||||
| "SR Local Block grouping."; | ||||
| augment "/rt:routing/" + | container local-blocks { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description "List of SRLBs."; | |||
| "/isis:isis/isis:interfaces/isis:interface"+ | list local-block { | |||
| "/isis:fast-reroute" { | description "Segment Routing Local Block."; | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | leaf range-size { | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | type uint32; | |||
| description | description "The SID range."; | |||
| "This augment ISIS routing protocol when used"; | } | |||
| } | uses sid-sub-tlv; | |||
| description | } | |||
| "This augments ISIS IP FRR with TILFA."; | } | |||
| } | ||||
| container ti-lfa { | grouping srms-preference { | |||
| if-feature ti-lfa; | description "The SRMS preference TLV is used to advertise | |||
| leaf enable { | a preference associated with the node that acts | |||
| type boolean; | as an SR Mapping Server."; | |||
| description | container srms-preference { | |||
| "Enables TI-LFA computation."; | description "SRMS Preference TLV."; | |||
| } | leaf preference { | |||
| description | type uint8 { | |||
| "TILFA configuration."; | range "0 .. 255"; | |||
| } | } | |||
| } | description "SRMS preference TLV, vlaue from 0 to 255."; | |||
| } | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | grouping adjacency-state { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description | |||
| "/isis:isis/isis:interfaces/isis:interface"+ | "This group will extend adjacency state."; | |||
| "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | list adjacency-sid { | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | key value; | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | config false; | |||
| description | leaf af { | |||
| "This augment ISIS routing protocol when used"; | type iana-rt-types:address-family; | |||
| } | description | |||
| description | "Address-family associated with the | |||
| "This augments ISIS remoteLFA config with | segment ID"; | |||
| use of segment-routing path."; | } | |||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description | ||||
| "Weight associated with | ||||
| the adjacency SID."; | ||||
| } | ||||
| leaf protection-requested { | ||||
| type boolean; | ||||
| description | ||||
| "Describe if the adjacency SID | ||||
| must be protected."; | ||||
| } | ||||
| description | ||||
| "List of adjacency Segment IDs."; | ||||
| } | ||||
| } | ||||
| leaf use-segment-routing-path { | grouping prefix-segment-id { | |||
| if-feature remote-lfa-sr; | description | |||
| type boolean; | "This group defines segment routing extensions | |||
| description | for prefixes."; | |||
| "force remote LFA to use segment routing | ||||
| path instead of LDP path."; | ||||
| } | ||||
| } | ||||
| /* Operational states */ | ||||
| augment "/rt:routing/" + | list sid-list { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | key value; | |||
| "/isis:isis/isis:interfaces/isis:interface" + | ||||
| "/isis:adjacencies/isis:adjacency" { | ||||
| 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 configuration | ||||
| with segment routing."; | ||||
| uses adjacency-state; | container perfix-sid-flags { | |||
| } | leaf-list bits { | |||
| type identityref { | ||||
| base prefix-sid-bit; | ||||
| } | ||||
| description | ||||
| "Prefix SID Sub-TLV flag bits list."; | ||||
| } | ||||
| description | ||||
| "Describes flags associated with the | ||||
| segment ID."; | ||||
| } | ||||
| augment "/rt:routing/" + | leaf algorithm { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | type uint8; | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | description | |||
| "/isis:router-capabilities" { | "Algorithm to be used for path computation."; | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | } | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | leaf value { | |||
| description | type uint32; | |||
| "This augment ISIS routing protocol when used"; | description | |||
| } | "Value of the prefix-SID."; | |||
| description | } | |||
| "This augments ISIS protocol LSDB router capability."; | description | |||
| "List of segments."; | ||||
| } | ||||
| uses sr-capability; | } | |||
| uses sr-algorithm; | ||||
| uses srlb; | ||||
| uses srms-preference; | ||||
| } | ||||
| augment "/rt:routing/" + | grouping adjacency-segment-id { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | description | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | "This group defines segment routing extensions | |||
| "/isis:extended-is-neighbor/isis:neighbor" { | for adjacencies."; | |||
| 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 neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | list sid-list { | |||
| key value; | ||||
| augment "/rt:routing/" + | container adj-sid-flags { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | leaf-list bits { | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | type identityref { | |||
| "/isis:mt-is-neighbor/isis:neighbor" { | base adj-sid-bit; | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | } | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | description "Adj sid sub-tlv flags list."; | |||
| description | } | |||
| "This augment ISIS routing protocol when used"; | description "Adj-sid sub-tlv flags."; | |||
| } | } | |||
| description | ||||
| "This augments ISIS protocol LSDB neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | leaf weight { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | type uint8; | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | description | |||
| "/isis:extended-ipv4-reachability/isis:prefixes" { | "The value represents the weight of the Adj-SID | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | for the purpose of load balancing."; | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | } | |||
| description | leaf neighbor-id { | |||
| "This augment ISIS routing protocol when used"; | type isis:system-id; | |||
| } | description | |||
| description | "Describes the system ID of the neighbor | |||
| "This augments ISIS protocol LSDB prefix."; | associated with the SID value. This is only | |||
| uses prefix-segment-id; | used on LAN adjacencies."; | |||
| } | } | |||
| leaf value { | ||||
| type uint32; | ||||
| description | ||||
| "Value of the Adj-SID."; | ||||
| } | ||||
| description | ||||
| "List of segments."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | grouping segment-routing-binding-tlv { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | list segment-routing-bindings { | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | key "fec range"; | |||
| "/isis:mt-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 prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | leaf fec { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | type string; | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | description | |||
| "/isis:ipv6-reachability/isis:prefixes" { | "IP (v4 or v6) range to be bound to SIDs."; | |||
| } | ||||
| when "/rt:routing/rt:control-plane-protocols/"+ | leaf range { | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | type uint16; | |||
| description | description | |||
| "This augment ISIS routing protocol when used"; | "Describes number of elements to assign | |||
| } | a binding to."; | |||
| description | } | |||
| "This augments ISIS protocol LSDB prefix."; | ||||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | container sid-binding-flags { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | leaf-list bits { | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | type identityref { | |||
| "/isis:mt-ipv6-reachability/isis:prefixes" { | base sid-binding-bit; | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | } | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | description | |||
| description | "SID Binding TLV flag bits list."; | |||
| "This augment ISIS routing protocol when used"; | } | |||
| } | description | |||
| description | "Binding flags."; | |||
| "This augments ISIS protocol LSDB prefix."; | } | |||
| uses prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | container binding { | |||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | container prefix-sid { | |||
| "/isis:isis/isis:database/isis:levels/isis:lsp" { | uses prefix-segment-id; | |||
| when "/rt:routing/rt:control-plane-protocols/"+ | description | |||
| "rt:control-plane-protocol/rt:type = 'isis:isis'" { | "Binding prefix SID to the range."; | |||
| description | } | |||
| "This augment ISIS routing protocol when used"; | description | |||
| } | "Bindings associated with the range."; | |||
| description | } | |||
| "This augments ISIS protocol LSDB."; | ||||
| uses segment-routing-binding-tlv; | ||||
| } | ||||
| /* Notifications */ | description | |||
| "This container describes list of SID/Label bindings. | ||||
| ISIS reference is TLV 149."; | ||||
| } | ||||
| description | ||||
| "Defines binding TLV for database."; | ||||
| } | ||||
| } | /* Cfg */ | |||
| <CODE ENDS> | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis" { | ||||
| 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 configuration | ||||
| with segment routing."; | ||||
| uses sr-mpls:sr-controlplane; | ||||
| container protocol-srgb { | ||||
| if-feature sr-mpls:protocol-srgb; | ||||
| uses sr-cmn:srgb; | ||||
| description | ||||
| "Per-protocol SRGB."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:interfaces/isis:interface" { | ||||
| 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 configuration | ||||
| with segment routing."; | ||||
| uses sr-mpls:igp-interface; | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:interfaces/isis:interface"+ | ||||
| "/isis:fast-reroute" { | ||||
| 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 IP FRR with TILFA."; | ||||
| container ti-lfa { | ||||
| if-feature ti-lfa; | ||||
| leaf enable { | ||||
| type boolean; | ||||
| description | ||||
| "Enables TI-LFA computation."; | ||||
| } | ||||
| description | ||||
| "TILFA configuration."; | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:interfaces/isis:interface"+ | ||||
| "/isis:fast-reroute/isis:lfa/isis:remote-lfa" { | ||||
| 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 remoteLFA config with | ||||
| use of segment-routing path."; | ||||
| leaf use-segment-routing-path { | ||||
| if-feature remote-lfa-sr; | ||||
| type boolean; | ||||
| description | ||||
| "force remote LFA to use segment routing | ||||
| path instead of LDP path."; | ||||
| } | ||||
| } | ||||
| /* Operational states */ | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:interfaces/isis:interface" + | ||||
| "/isis:adjacencies/isis:adjacency" { | ||||
| 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 configuration | ||||
| with segment routing."; | ||||
| uses adjacency-state; | ||||
| } | ||||
| 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."; | ||||
| uses sr-capability; | ||||
| uses sr-algorithm; | ||||
| uses srlb; | ||||
| uses srms-preference; | ||||
| } | ||||
| 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" { | ||||
| 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 neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:mt-is-neighbor/isis:neighbor" { | ||||
| 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 neighbor."; | ||||
| uses adjacency-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "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 prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:mt-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 prefix-segment-id; | ||||
| } | ||||
| 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 prefix-segment-id; | ||||
| } | ||||
| augment "/rt:routing/" + | ||||
| "rt:control-plane-protocols/rt:control-plane-protocol"+ | ||||
| "/isis:isis/isis:database/isis:levels/isis:lsp"+ | ||||
| "/isis:mt-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 prefix-segment-id; | ||||
| } | ||||
| 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."; | ||||
| uses segment-routing-binding-tlv; | ||||
| } | ||||
| /* Notifications */ | ||||
| } | ||||
| <CODE ENDS> | ||||
| 7. Security Considerations | 7. Security Considerations | |||
| Configuration and state data defined in this document are designed to | Configuration and state data defined in this document are designed to | |||
| be accessed via the NETCONF protocol [RFC6241]. | be accessed via the NETCONF protocol [RFC6241]. | |||
| As IS-IS is an IGP protocol (critical piece of the network), ensuring | As IS-IS is an IGP protocol (critical piece of the network), ensuring | |||
| stability and security of the protocol is mandatory for the network | stability and security of the protocol is mandatory for the network | |||
| service. | service. | |||
| skipping to change at page 21, line 20 ¶ | skipping to change at page 21, line 49 ¶ | |||
| ([RFC6536]) to restrict access to all or part of the configuration to | ([RFC6536]) to restrict access to all or part of the configuration to | |||
| specific users. | specific users. | |||
| 8. Contributors | 8. Contributors | |||
| Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for | Authors would like to thank Derek Yeung, Acee Lindem, Yi Yang for | |||
| their major contributions to the draft. | their major contributions to the draft. | |||
| 9. Acknowledgements | 9. Acknowledgements | |||
| Author affiliation with The MITRE Corporation is provided for | MITRE has approved this document for Public Release, Distribution | |||
| identification purposes only, and is not intended to convey or imply | Unlimited, with Public Release Case Number 19-3033. | |||
| MITRE's concurrence with, or support for, the positions, opinions or | ||||
| viewpoints expressed. MITRE has approved this document for Public | ||||
| Release, Distribution Unlimited, with Public Release Case Number | ||||
| 18-3281. | ||||
| 10. IANA Considerations | 10. IANA Considerations | |||
| The IANA is requested to assign two new URIs from the IETF XML | The IANA is requested to assign two new URIs from the IETF XML | |||
| registry ([RFC3688]). Authors are suggesting the following URI: | registry ([RFC3688]). Authors are suggesting the following URI: | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr | URI: urn:ietf:params:xml:ns:yang:ietf-isis-sr | |||
| Registrant Contact: IS-IS WG | Registrant Contact: IS-IS WG | |||
| XML: N/A, the requested URI is an XML namespace | XML: N/A, the requested URI is an XML namespace | |||
| skipping to change at page 23, line 7 ¶ | skipping to change at page 23, line 31 ¶ | |||
| 11.8. From isis document version -08 to version -09 | 11.8. From isis document version -08 to version -09 | |||
| o Align to draft-ietf-netmod-routing-cfg-23. | o Align to draft-ietf-netmod-routing-cfg-23. | |||
| 11.9. From isis document version -07 to version -08 | 11.9. From isis document version -07 to version -08 | |||
| o Align to draft-ietf-netmod-routing-cfg-21. | o Align to draft-ietf-netmod-routing-cfg-21. | |||
| 12. Normative References | 12. Normative References | |||
| [I-D.ietf-isis-segment-routing-extensions] | ||||
| Previdi, S., Ginsberg, L., Filsfils, C., Bashandy, A., | ||||
| Gredler, H., Litkowski, S., Decraene, B., and J. Tantsura, | ||||
| "IS-IS Extensions for Segment Routing", draft-ietf-isis- | ||||
| segment-routing-extensions-22 (work in progress). | ||||
| [I-D.ietf-isis-yang-isis-cfg] | [I-D.ietf-isis-yang-isis-cfg] | |||
| Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. | Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. | |||
| Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- | Lhotka, "YANG Data Model for IS-IS Protocol", draft-ietf- | |||
| isis-yang-isis-cfg-35 (work in progress), March 2019. | isis-yang-isis-cfg-42 (work in progress), October 2019. | |||
| [I-D.ietf-spring-sr-yang] | [I-D.ietf-spring-sr-yang] | |||
| Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | Litkowski, S., Qu, Y., Sarkar, P., and J. Tantsura, "YANG | |||
| Data Model for Segment Routing", draft-ietf-spring-sr- | Data Model for Segment Routing", draft-ietf-spring-sr- | |||
| yang-08 (work in progress), December 2017. | yang-15 (work in progress), December 2017. | |||
| [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 24, line 18 ¶ | skipping to change at page 24, line 37 ¶ | |||
| [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", | |||
| 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>. | |||
| [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | [RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore Architecture | and R. Wilton, "Network Management Datastore Architecture | |||
| (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | (NMDA)", RFC 8342, DOI 10.17487/RFC8342, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8342>. | <https://www.rfc-editor.org/info/rfc8342>. | |||
| [RFC8667] Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C., | ||||
| Bashandy, A., Gredler, H., and B. Decraene, "IS-IS | ||||
| Extensions for Segment Routing", RFC 8667, | ||||
| DOI 10.17487/RFC8667, December 2019, | ||||
| <https://www.rfc-editor.org/info/rfc8667>. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Stephane Litkowski | Stephane Litkowski | |||
| Orange | Cisco Systems | |||
| Email: stephane.litkowski@orange.com | ||||
| Email: slitkows.ietf@gmail.com | ||||
| Yinghzen Qu | Yinghzen Qu | |||
| Futurewei | Futurewei | |||
| Email: yingzhen.qu@Futurewei.com | Email: yingzhen.qu@futurewei.com | |||
| Pushpasis Sarkar | Pushpasis Sarkar | |||
| Individual | Individual | |||
| Email: pushpasis.ietf@gmail.com | Email: pushpasis.ietf@gmail.com | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| Email: ingwherchen@mitre.org | Email: ingwherchen@mitre.org | |||
| Jeff Tantsura | Jeff Tantsura | |||
| Individual | Apstra | |||
| Email: jefftant.ietf@gmail.com | Email: jefftant.ietf@gmail.com | |||
| End of changes. 85 change blocks. | ||||
| 769 lines changed or deleted | 797 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/ | ||||