| < draft-ietf-ospf-sr-yang-15.txt | draft-ietf-ospf-sr-yang-16.txt > | |||
|---|---|---|---|---|
| Internet D. Yeung | Internet D. Yeung | |||
| Internet-Draft Arrcus | Internet-Draft Arrcus | |||
| Intended status: Standards Track Y. Qu | Intended status: Standards Track Y. Qu | |||
| Expires: January 3, 2022 Futurewei | Expires: 6 July 2022 Futurewei | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| I. Chen | I. Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| July 2, 2021 | 2 January 2022 | |||
| YANG Data Model for OSPF SR (Segment Routing) Protocol | YANG Data Model for OSPF Segment Routing | |||
| draft-ietf-ospf-sr-yang-15 | draft-ietf-ospf-sr-yang-16 | |||
| Abstract | Abstract | |||
| This document defines a YANG data module that can be used to | This document defines a YANG data module that can be used to | |||
| configure and manage OSPF Extensions for Segment Routing. It also | configure and manage OSPF Extensions for Segment Routing. It also | |||
| defines a module for management of Signaling Maximum SID Depth (MSD) | defines a module for management of Signaling Maximum SID Depth (MSD) | |||
| Using OSPF. | Using OSPF. | |||
| Status of This Memo | Status of This Memo | |||
| skipping to change at page 1, line 40 ¶ | skipping to change at page 1, line 40 ¶ | |||
| 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 3, 2022. | This Internet-Draft will expire on 6 July 2022. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with respect | Please review these documents carefully, as they describe your rights | |||
| to this document. Code Components extracted from this document must | and restrictions with respect to this document. Code Components | |||
| include Simplified BSD License text as described in Section 4.e of | extracted from this document must include Revised BSD License text as | |||
| the Trust Legal Provisions and are provided without warranty as | described in Section 4.e of the Trust Legal Provisions and are | |||
| described in the Simplified BSD License. | provided without warranty as described in the Revised 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 Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2. OSPF MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. OSPF MSD . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. OSPF MSD YANG Module . . . . . . . . . . . . . . . . . . 5 | 2.1. OSPF MSD YANG Module . . . . . . . . . . . . . . . . . . 4 | |||
| 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 11 | 3. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 11 | |||
| 3.1. OSPF Segment Routing YANG Module . . . . . . . . . . . . 16 | 3.1. OSPF Segment Routing YANG Module . . . . . . . . . . . . 16 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 7.1. Normative References . . . . . . . . . . . . . . . . . . 32 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 32 | |||
| 7.2. Informative References . . . . . . . . . . . . . . . . . 34 | 7.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
| Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 35 | Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 34 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 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 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 OSPFv2 extensions for Segment Routing [RFC8665] and it is | and manage OSPFv2 extensions for Segment Routing [RFC8665] and it is | |||
| an augmentation to the OSPF YANG data model. | an augmentation to the OSPF YANG data model. | |||
| This document also defines a YANG data model for Signaling Maximum | This document also defines a YANG data model for Signaling Maximum | |||
| SID Depth (MSD) Using OSPF [RFC8476], which augments the base OSPF | SID Depth (MSD) Using OSPF [RFC8476], which augments the base OSPF | |||
| skipping to change at page 5, line 6 ¶ | skipping to change at page 5, line 4 ¶ | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
| /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | |||
| /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | |||
| /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs: | /ospf:body/ospfv3-e-lsa:e-router/ospfv3-e-lsa:e-router-tlvs: | |||
| +--ro link-msd-sub-tlv | +--ro link-msd-sub-tlv | |||
| +--ro link-msds* [msd-type] | +--ro link-msds* [msd-type] | |||
| +--ro msd-type identityref | +--ro msd-type identityref | |||
| +--ro msd-value? uint8 | +--ro msd-value? uint8 | |||
| 2.1. OSPF MSD YANG Module | 2.1. OSPF MSD YANG Module | |||
| <CODE BEGINS> file "ietf-ospf-msd@2022-01-02.yang" | ||||
| <CODE BEGINS> file "ietf-ospf-msd@2021-02-21.yang" | ||||
| module ietf-ospf-msd { | module ietf-ospf-msd { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-msd"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-msd"; | |||
| prefix ospf-msd; | prefix ospf-msd; | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix rt; | prefix rt; | |||
| reference "RFC 8349: A YANG Data Model for Routing | reference "RFC 8349: A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| skipping to change at page 5, line 50 ¶ | skipping to change at page 5, line 47 ¶ | |||
| <jefftant.ietf@gmail.com> | <jefftant.ietf@gmail.com> | |||
| "; | "; | |||
| description | description | |||
| "The YANG module augments the base OSPF model to | "The YANG module augments the base OSPF model to | |||
| manage different types of MSDs. | manage different types of MSDs. | |||
| 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) 2022 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 | |||
| (https://trustee.ietf.org/license-info). | (https://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: YANG Data Model for OSPF MSD."; | reference "RFC XXXX: YANG Data Model for OSPF MSD."; | |||
| revision 2021-02-21 { | revision 2022-01-02 { | |||
| description | description | |||
| "Initial Version"; | "Initial Version"; | |||
| reference "RFC XXXX: YANG Data Model for OSPF MSD."; | reference "RFC XXXX: YANG Data Model for OSPF MSD."; | |||
| } | } | |||
| identity msd-base-type { | identity msd-base-type { | |||
| description | description | |||
| "Base identity for MSD Type"; | "Base identity for MSD Type"; | |||
| } | } | |||
| skipping to change at page 16, line 25 ¶ | skipping to change at page 16, line 24 ¶ | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* [] | | +--ro local-block-tlv* [] | |||
| | +--ro range-size? uint24 | | +--ro range-size? uint24 | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro srms-preference-tlv | +--ro srms-preference-tlv | |||
| +--ro preference? uint8 | +--ro preference? uint8 | |||
| 3.1. OSPF Segment Routing YANG Module | 3.1. OSPF Segment Routing YANG Module | |||
| <CODE BEGINS> file "ietf-ospf-sr@2021-07-02.yang" | <CODE BEGINS> file "ietf-ospf-sr@2022-01-02.yang" | |||
| module ietf-ospf-sr { | module ietf-ospf-sr { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-sr"; | |||
| prefix ospf-sr; | prefix ospf-sr; | |||
| 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-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix "yang"; | |||
| reference "RFC 6991 - Common YANG Data Types"; | reference "RFC 6991 - Common YANG Data Types"; | |||
| } | } | |||
| import ietf-routing { | import ietf-routing { | |||
| prefix "rt"; | prefix "rt"; | |||
| reference "RFC 8349 - A YANG Data Model for Routing | reference "RFC 8349 - A YANG Data Model for Routing | |||
| Management (NMDA Version)"; | Management (NMDA Version)"; | |||
| } | } | |||
| import ietf-segment-routing-common { | import ietf-segment-routing-common { | |||
| prefix "sr-cmn"; | prefix "sr-cmn"; | |||
| reference "RFC 9020 - YANG Data Model for Segment | reference "RFC 9020 - YANG Data Model for Segment | |||
| Routing"; | Routing"; | |||
| } | ||||
| import ietf-segment-routing-mpls { | ||||
| prefix "sr-mpls"; | ||||
| reference "RFC 9020 - YANG Data Model for Segment | ||||
| Routing"; | ||||
| } | ||||
| import ietf-ospf { | ||||
| prefix "ospf"; | ||||
| } | ||||
| organization | } | |||
| "IETF LSR - Link State Routing Working Group"; | import ietf-segment-routing-mpls { | |||
| prefix "sr-mpls"; | ||||
| reference "RFC 9020 - YANG Data Model for Segment | ||||
| Routing"; | ||||
| } | ||||
| import ietf-ospf { | ||||
| prefix "ospf"; | ||||
| } | ||||
| contact | organization | |||
| "WG Web: <http://tools.ietf.org/wg/lsr/> | "IETF LSR - Link State Routing Working Group"; | |||
| WG List: <mailto:lsr@ietf.org> | ||||
| Editor: Derek Yeung | contact | |||
| <mailto:derek@arrcus.com> | "WG Web: <http://tools.ietf.org/wg/lsr/> | |||
| Author: Derek Yeung | WG List: <mailto:lsr@ietf.org> | |||
| <mailto:derek@arrcus.com> | ||||
| Author: Yingzhen Qu | ||||
| <mailto:yingzhen.qu@futurewei.com> | ||||
| Author: Acee Lindem | ||||
| <mailto:acee@cisco.com> | ||||
| Author: Jeffrey Zhang | ||||
| <mailto:zzhang@juniper.net> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ingwherchen@mitre.org> | ||||
| Author: Greg Hankins | ||||
| <mailto:greg.hankins@alcatel-lucent.com>"; | ||||
| description | Editor: Derek Yeung | |||
| "This YANG module defines the generic configuration | <mailto:derek@arrcus.com> | |||
| and operational state for OSPF Segment Routing, which is | Author: Derek Yeung | |||
| common across all of the vendor implementations. It is | <mailto:derek@arrcus.com> | |||
| intended that the module will be extended by vendors to | Author: Yingzhen Qu | |||
| define vendor-specific OSPF Segment Routing configuration | <mailto:yingzhen.qu@futurewei.com> | |||
| and operational parameters and policies. | Author: Acee Lindem | |||
| <mailto:acee@cisco.com> | ||||
| Author: Jeffrey Zhang | ||||
| <mailto:zzhang@juniper.net> | ||||
| Author: Ing-Wher Chen | ||||
| <mailto:ingwherchen@mitre.org> | ||||
| Author: Greg Hankins | ||||
| <mailto:greg.hankins@alcatel-lucent.com>"; | ||||
| This YANG model conforms to the Network Management | description | |||
| Datastore Architecture (NMDA) as described in RFC 8342. | "This YANG module defines the generic configuration | |||
| and operational state for OSPF Segment Routing, which is | ||||
| common across all of the vendor implementations. It is | ||||
| intended that the module will be extended by vendors to | ||||
| define vendor-specific OSPF Segment Routing configuration | ||||
| and operational parameters and policies. | ||||
| 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) 2022 IETF Trust and the persons identified as | |||
| without modification, is permitted pursuant to, and subject to | authors of the code. All rights reserved. | |||
| 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 | |||
| (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | without modification, is permitted pursuant to, and subject to | |||
| for full legal notices. | 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', | (https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | for full legal notices. | |||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here. | ||||
| This version of this YANG module is part of RFC XXXX; | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
| see the RFC itself for full legal notices."; | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
| 'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
| described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
| they appear in all capitals, as shown here. | ||||
| reference "RFC XXXX"; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | ||||
| revision 2021-07-02 { | reference "RFC XXXX"; | |||
| description | ||||
| "Initial revision."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | ||||
| } | ||||
| feature ti-lfa { | revision 2022-01-02 { | |||
| description | description | |||
| "Topology-Independent Loop-Free Alternate (TI-LFA) | "Initial revision."; | |||
| computation using segment routing."; | reference | |||
| } | "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | |||
| } | ||||
| identity prefix-sid-bit { | feature ti-lfa { | |||
| description | description | |||
| "Base identity for prefix sid sub-tlv bits."; | "Topology-Independent Loop-Free Alternate (TI-LFA) | |||
| } | computation using segment routing."; | |||
| } | ||||
| identity np-bit { | identity prefix-sid-bit { | |||
| base prefix-sid-bit; | description | |||
| description | "Base identity for prefix sid sub-tlv bits."; | |||
| "No-PHP flag."; | } | |||
| } | ||||
| identity m-bit { | identity np-bit { | |||
| base prefix-sid-bit; | base prefix-sid-bit; | |||
| description | description | |||
| "Mapping server flag."; | "No-PHP flag."; | |||
| } | } | |||
| identity e-bit { | identity m-bit { | |||
| base prefix-sid-bit; | base prefix-sid-bit; | |||
| description | description | |||
| "Explicit-NULL flag."; | "Mapping server flag."; | |||
| } | } | |||
| identity v-bit { | identity e-bit { | |||
| base prefix-sid-bit; | base prefix-sid-bit; | |||
| description | description | |||
| "Value/Index flag."; | "Explicit-NULL flag."; | |||
| } | } | |||
| identity l-bit { | identity v-bit { | |||
| base prefix-sid-bit; | base prefix-sid-bit; | |||
| description | description | |||
| "Local flag."; | "Value/Index flag."; | |||
| } | } | |||
| identity extended-prefix-range-bit { | identity l-bit { | |||
| description | base prefix-sid-bit; | |||
| "Base identity for extended prefix range TLV bits."; | description | |||
| } | "Local flag."; | |||
| } | ||||
| identity ia-bit { | identity extended-prefix-range-bit { | |||
| base extended-prefix-range-bit; | description | |||
| description | "Base identity for extended prefix range TLV bits."; | |||
| "Inter-Area flag. If set, advertisement is of inter-area type."; | } | |||
| } | ||||
| identity adj-sid-bit { | identity ia-bit { | |||
| description | base extended-prefix-range-bit; | |||
| "Base identity for adj sid sub-tlv bits."; | description | |||
| } | "Inter-Area flag. If set, advertisement is of inter-area type."; | |||
| } | ||||
| identity b-bit { | identity adj-sid-bit { | |||
| base adj-sid-bit; | description | |||
| description | "Base identity for adj sid sub-tlv bits."; | |||
| "Backup flag."; | } | |||
| } | ||||
| identity vi-bit { | identity b-bit { | |||
| base adj-sid-bit; | base adj-sid-bit; | |||
| description | description | |||
| "Value/Index flag."; | "Backup flag."; | |||
| } | } | |||
| identity lo-bit { | ||||
| base adj-sid-bit; | ||||
| description | ||||
| "Local/Global flag."; | ||||
| } | ||||
| identity g-bit { | identity vi-bit { | |||
| base adj-sid-bit; | base adj-sid-bit; | |||
| description | description | |||
| "Group flag."; | "Value/Index flag."; | |||
| } | } | |||
| identity lo-bit { | ||||
| base adj-sid-bit; | ||||
| description | ||||
| "Local/Global flag."; | ||||
| } | ||||
| identity p-bit { | identity g-bit { | |||
| base adj-sid-bit; | base adj-sid-bit; | |||
| description | description | |||
| "Persistent flag."; | "Group flag."; | |||
| } | } | |||
| typedef uint24 { | identity p-bit { | |||
| type uint32 { | base adj-sid-bit; | |||
| range "0 .. 16777215"; | description | |||
| } | "Persistent flag."; | |||
| description | } | |||
| "24-bit unsigned integer."; | ||||
| } | ||||
| /* Groupings */ | typedef uint24 { | |||
| grouping sid-sub-tlv { | type uint32 { | |||
| description "SID/Label sub-TLV grouping."; | range "0 .. 16777215"; | |||
| container sid-sub-tlv { | } | |||
| description | description | |||
| "Used to advertise the SID/Label associated with a | "24-bit unsigned integer."; | |||
| prefix or adjacency."; | } | |||
| leaf sid { | ||||
| type uint32; | ||||
| description | ||||
| "Segment Identifier (SID) - A 20 bit label or | ||||
| 32 bit SID."; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping prefix-sid-sub-tlvs { | /* Groupings */ | |||
| description "Prefix Segment ID (SID) sub-TLVs."; | grouping sid-sub-tlv { | |||
| container perfix-sid-sub-tlvs{ | description "SID/Label sub-TLV grouping."; | |||
| description "Prefix SID sub-TLV."; | container sid-sub-tlv { | |||
| list prefix-sid-sub-tlv { | description | |||
| description "Prefix SID sub-TLV."; | "Used to advertise the SID/Label associated with a | |||
| container prefix-sid-flags { | prefix or adjacency."; | |||
| leaf-list bits { | leaf sid { | |||
| type identityref { | type uint32; | |||
| base prefix-sid-bit; | description | |||
| } | "Segment Identifier (SID) - A 20 bit label or | |||
| description | 32 bit SID."; | |||
| "Prefix SID Sub-TLV flag bits list."; | } | |||
| } | } | |||
| description "Segment Identifier (SID) Flags."; | } | |||
| } | ||||
| leaf mt-id { | ||||
| type uint8; | ||||
| description "Multi-topology ID."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "The algorithm associated with the prefix-SID."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description "An index or label."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping extended-prefix-range-tlvs { | grouping prefix-sid-sub-tlvs { | |||
| description "Extended prefix range TLV grouping."; | description "Prefix Segment ID (SID) sub-TLVs."; | |||
| container prefix-sid-sub-tlvs{ | ||||
| description "Prefix SID sub-TLV."; | ||||
| list prefix-sid-sub-tlv { | ||||
| description "Prefix SID sub-TLV."; | ||||
| container prefix-sid-flags { | ||||
| leaf-list bits { | ||||
| type identityref { | ||||
| base prefix-sid-bit; | ||||
| } | ||||
| description | ||||
| "Prefix SID Sub-TLV flag bits list."; | ||||
| } | ||||
| description "Segment Identifier (SID) Flags."; | ||||
| } | ||||
| leaf mt-id { | ||||
| type uint8; | ||||
| description "Multi-topology ID."; | ||||
| } | ||||
| leaf algorithm { | ||||
| type uint8; | ||||
| description | ||||
| "The algorithm associated with the prefix-SID."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description "An index or label."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| container extended-prefix-range-tlvs { | grouping extended-prefix-range-tlvs { | |||
| description "The list of range of prefixes."; | description "Extended prefix range TLV grouping."; | |||
| list extended-prefix-range-tlv { | ||||
| description "The range of prefixes."; | ||||
| leaf prefix-length { | ||||
| type uint8; | ||||
| description "Length of prefix in bits."; | ||||
| } | ||||
| leaf af { | ||||
| type uint8; | ||||
| description "Address family for the prefix."; | ||||
| } | ||||
| leaf range-size { | ||||
| type uint16; | ||||
| description "The number of prefixes covered by the | ||||
| advertisement."; | ||||
| } | ||||
| container extended-prefix-range-flags { | ||||
| leaf-list bits { | ||||
| type identityref { | ||||
| base extended-prefix-range-bit; | ||||
| } | ||||
| description "Extended prefix range TLV flags list."; | ||||
| } | ||||
| description "Extended Prefix Range TLV flags."; | ||||
| } | ||||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description "Address prefix."; | ||||
| } | ||||
| uses prefix-sid-sub-tlvs; | ||||
| uses ospf:unknown-tlvs; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping sr-algorithm-tlv { | container extended-prefix-range-tlvs { | |||
| description "SR algorithm TLV grouping."; | description "The list of range of prefixes."; | |||
| container sr-algorithm-tlv { | list extended-prefix-range-tlv { | |||
| description "All SR algorithm TLVs."; | description "The range of prefixes."; | |||
| leaf-list sr-algorithm { | leaf prefix-length { | |||
| type uint8; | type uint8; | |||
| description | description "Length of prefix in bits."; | |||
| "The Segment Routing (SR) algorithms that the router is | } | |||
| currently using."; | leaf af { | |||
| } | type uint8; | |||
| } | description "Address family for the prefix."; | |||
| } | } | |||
| leaf range-size { | ||||
| type uint16; | ||||
| description "The number of prefixes covered by the | ||||
| advertisement."; | ||||
| } | ||||
| container extended-prefix-range-flags { | ||||
| leaf-list bits { | ||||
| type identityref { | ||||
| base extended-prefix-range-bit; | ||||
| } | ||||
| description "Extended prefix range TLV flags list."; | ||||
| } | ||||
| description "Extended Prefix Range TLV flags."; | ||||
| } | ||||
| leaf prefix { | ||||
| type inet:ip-prefix; | ||||
| description "Address prefix."; | ||||
| } | ||||
| uses prefix-sid-sub-tlvs; | ||||
| uses ospf:unknown-tlvs; | ||||
| } | ||||
| } | ||||
| } | ||||
| grouping sid-range-tlvs { | grouping sr-algorithm-tlv { | |||
| description "SID Range TLV grouping."; | description "SR algorithm TLV grouping."; | |||
| container sid-range-tlvs { | container sr-algorithm-tlv { | |||
| description "List of SID range TLVs."; | description "All SR algorithm TLVs."; | |||
| list sid-range-tlv { | leaf-list sr-algorithm { | |||
| description "SID range TLV."; | type uint8; | |||
| leaf range-size { | description | |||
| type uint24; | "The Segment Routing (SR) algorithms that the router is | |||
| description "The SID range."; | currently using."; | |||
| } | } | |||
| uses sid-sub-tlv; | } | |||
| } | } | |||
| } | ||||
| } | ||||
| grouping local-block-tlvs { | grouping sid-range-tlvs { | |||
| description "The SR local block TLV contains the | description "SID Range TLV grouping."; | |||
| range of labels reserved for local SIDs."; | container sid-range-tlvs { | |||
| container local-block-tlvs { | description "List of SID range TLVs."; | |||
| description "List of SRLB TLVs."; | list sid-range-tlv { | |||
| list local-block-tlv { | description "SID range TLV."; | |||
| description "SRLB TLV."; | leaf range-size { | |||
| leaf range-size { | type uint24; | |||
| type uint24; | description "The SID range."; | |||
| description "The SID range."; | } | |||
| } | uses sid-sub-tlv; | |||
| uses sid-sub-tlv; | } | |||
| } | } | |||
| } | } | |||
| } | ||||
| grouping srms-preference-tlv { | grouping local-block-tlvs { | |||
| description "The SRMS preference TLV is used to advertise | description "The SR local block TLV contains the | |||
| a preference associated with the node that acts | range of labels reserved for local SIDs."; | |||
| as an SR Mapping Server."; | container local-block-tlvs { | |||
| container srms-preference-tlv { | description "List of SRLB TLVs."; | |||
| description "SRMS Preference TLV."; | list local-block-tlv { | |||
| leaf preference { | description "SRLB TLV."; | |||
| type uint8 { | leaf range-size { | |||
| range "0 .. 255"; | type uint24; | |||
| } | description "The SID range."; | |||
| description "SRMS preference TLV, value from 0 to 255."; | } | |||
| } | uses sid-sub-tlv; | |||
| } | } | |||
| } | } | |||
| } | ||||
| /* Configuration */ | grouping srms-preference-tlv { | |||
| augment "/rt:routing/rt:control-plane-protocols" | description "The SRMS preference TLV is used to advertise | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | a preference associated with the node that acts | |||
| when "../rt:type = 'ospf:ospfv2' or " | as an SR Mapping Server."; | |||
| + "../rt:type = 'ospf:ospfv3'" { | container srms-preference-tlv { | |||
| description | description "SRMS Preference TLV."; | |||
| "This augments the OSPF routing protocol when used."; | leaf preference { | |||
| } | type uint8 { | |||
| description | range "0 .. 255"; | |||
| "This augments the OSPF protocol configuration | } | |||
| with segment routing."; | description "SRMS preference TLV, value from 0 to 255."; | |||
| uses sr-mpls:sr-control-plane; | } | |||
| 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/ospf:ospf/" | ||||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | ||||
| when "../../../../../rt:type = 'ospf:ospfv2' or " | ||||
| + "../../../../../rt:type = 'ospf:ospfv3'" { | ||||
| description | ||||
| "This augments the OSPF interface configuration | ||||
| when used."; | ||||
| } | ||||
| description | ||||
| "This augments the OSPF protocol interface | ||||
| configuration with segment routing."; | ||||
| uses sr-mpls:igp-interface; | /* Configuration */ | |||
| } | augment "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf" { | ||||
| when "../rt:type = 'ospf:ospfv2' or " | ||||
| + "../rt:type = 'ospf:ospfv3'" { | ||||
| description | ||||
| "This augments the OSPF routing protocol when used."; | ||||
| } | ||||
| description | ||||
| "This augments the OSPF protocol configuration | ||||
| with segment routing."; | ||||
| uses sr-mpls:sr-control-plane; | ||||
| 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/ospf:ospf/" | ||||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | ||||
| when "../../../../../rt:type = 'ospf:ospfv2' or " | ||||
| + "../../../../../rt:type = 'ospf:ospfv3'" { | ||||
| description | ||||
| "This augments the OSPF interface configuration | ||||
| when used."; | ||||
| } | ||||
| description | ||||
| "This augments the OSPF protocol interface | ||||
| configuration with segment routing."; | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | uses sr-mpls:igp-interface; | |||
| + "rt:control-plane-protocol/ospf:ospf/" | } | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | ||||
| + "ospf:fast-reroute" { | ||||
| when "../../../../../../rt:type = 'ospf:ospfv2' or " | ||||
| + "../../../../../../rt:type = 'ospf:ospfv3'" { | ||||
| description | ||||
| "This augments the OSPF routing protocol when used."; | ||||
| } | ||||
| description | ||||
| "This augments the OSPF protocol IP-FRR with TI-LFA."; | ||||
| container ti-lfa { | augment "/rt:routing/rt:control-plane-protocols/" | |||
| if-feature ti-lfa; | + "rt:control-plane-protocol/ospf:ospf/" | |||
| leaf enable { | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | |||
| type boolean; | + "ospf:fast-reroute" { | |||
| description | when "../../../../../../rt:type = 'ospf:ospfv2' or " | |||
| "Enables TI-LFA computation."; | + "../../../../../../rt:type = 'ospf:ospfv3'" { | |||
| } | description | |||
| description | "This augments the OSPF routing protocol when used."; | |||
| "Topology Independent Loop Free Alternate | } | |||
| (TI-LFA) support."; | description | |||
| } | "This augments the OSPF protocol IP-FRR with TI-LFA."; | |||
| } | ||||
| /* Database */ | container ti-lfa { | |||
| augment "/rt:routing/" | if-feature ti-lfa; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | leaf enable { | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | type boolean; | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | description | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | "Enables TI-LFA computation."; | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | } | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | description | |||
| + "ospf:extended-prefix-opaque" { | "Topology Independent Loop Free Alternate | |||
| when "../../../../../../../../../../../../../" | (TI-LFA) support."; | |||
| + "rt:type = 'ospf:ospfv2'" { | } | |||
| description | } | |||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 9 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | /* Database */ | |||
| } | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | ||||
| + "ospf:ospf/ospf:areas/ospf:area/" | ||||
| + "ospf:interfaces/ospf:interface/ospf:database/" | ||||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 9 opaque LSA."; | ||||
| augment "/rt:routing/" | uses extended-prefix-range-tlvs; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | } | |||
| + "ospf:ospf/ospf:areas/" | ||||
| + "ospf:area/ospf:database/" | ||||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 10 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | augment "/rt:routing/" | |||
| } | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | ||||
| + "ospf:area/ospf:database/" | ||||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 10 opaque LSA."; | ||||
| augment "/rt:routing/" | uses extended-prefix-range-tlvs; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | } | |||
| + "ospf:ospf/ospf:database/" | ||||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 11 opaque LSA."; | ||||
| uses extended-prefix-range-tlvs; | augment "/rt:routing/" | |||
| } | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | ||||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | ||||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque" { | ||||
| when "../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix LSA | ||||
| in type 11 opaque LSA."; | ||||
| augment "/rt:routing/" | uses extended-prefix-range-tlvs; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | } | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | ||||
| + "ospf:interfaces/ospf:interface/ospf:database/" | ||||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | ||||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | ||||
| when "../../../../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 extended prefix TLV | ||||
| in type 9 opaque LSA."; | ||||
| uses prefix-sid-sub-tlvs; | ||||
| } | ||||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| + "ospf:area/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| when "../../../../../../../../../../../../" | when "../../../../../../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 extended prefix TLV | "SR specific TLVs for OSPFv2 extended prefix TLV | |||
| in type 10 opaque LSA."; | in type 9 opaque LSA."; | |||
| uses prefix-sid-sub-tlvs; | uses prefix-sid-sub-tlvs; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:database/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:area/ospf:database/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| when "../../../../../../../../../../" | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| + "rt:type = 'ospf:ospfv2'" { | when "../../../../../../../../../../../../" | |||
| description | + "rt:type = 'ospf:ospfv2'" { | |||
| "This augmentation is only valid for OSPFv2."; | description | |||
| } | "This augmentation is only valid for OSPFv2."; | |||
| description | } | |||
| "SR specific TLVs for OSPFv2 extended prefix TLV | description | |||
| in type 11 opaque LSA."; | "SR specific TLVs for OSPFv2 extended prefix TLV | |||
| uses prefix-sid-sub-tlvs; | in type 10 opaque LSA."; | |||
| } | uses prefix-sid-sub-tlvs; | |||
| } | ||||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:area/ospf:database/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
| + "ospf:extended-link-opaque/ospf:extended-link-tlv" { | when "../../../../../../../../../../" | |||
| when "../../../../../../../../../../../../" | + "rt:type = 'ospf:ospfv2'" { | |||
| + "rt:type = 'ospf:ospfv2'" { | description | |||
| description | "This augmentation is only valid for OSPFv2."; | |||
| "This augmentation is only valid for OSPFv2."; | } | |||
| } | description | |||
| description | "SR specific TLVs for OSPFv2 extended prefix TLV | |||
| "SR specific TLVs for OSPFv2 extended link TLV | in type 11 opaque LSA."; | |||
| in type 10 opaque LSA."; | uses prefix-sid-sub-tlvs; | |||
| } | ||||
| container adj-sid-sub-tlvs { | augment "/rt:routing/" | |||
| description "Adjacency SID optional sub-TLVs."; | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| list adj-sid-sub-tlv { | + "ospf:ospf/ospf:areas/" | |||
| description "List of Adjacency SID sub-TLVs."; | + "ospf:area/ospf:database/" | |||
| container adj-sid-flags { | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| leaf-list bits { | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| type identityref { | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| base adj-sid-bit; | + "ospf:extended-link-opaque/ospf:extended-link-tlv" { | |||
| } | when "../../../../../../../../../../../../" | |||
| description "Adj sid sub-tlv flags list."; | + "rt:type = 'ospf:ospfv2'" { | |||
| } | description | |||
| description "Adj-sid sub-tlv flags."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| leaf mt-id { | description | |||
| type uint8; | "SR specific TLVs for OSPFv2 extended link TLV | |||
| description "Multi-topology ID."; | in type 10 opaque LSA."; | |||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description "Weight used for load-balancing."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description "Segment Identifier (SID) index/label."; | ||||
| } | ||||
| } | ||||
| } | ||||
| container lan-adj-sid-sub-tlvs { | container adj-sid-sub-tlvs { | |||
| description "LAN Adjacency SID optional sub-TLVs."; | description "Adjacency SID optional sub-TLVs."; | |||
| list lan-adj-sid-sub-tlv { | list adj-sid-sub-tlv { | |||
| description "List of LAN adjacency SID sub-TLVs."; | description "List of Adjacency SID sub-TLVs."; | |||
| container lan-adj-sid-flags { | container adj-sid-flags { | |||
| leaf-list bits { | leaf-list bits { | |||
| type identityref { | type identityref { | |||
| base adj-sid-bit; | base adj-sid-bit; | |||
| } | } | |||
| description "LAN adj sid sub-tlv flags list."; | description "Adj sid sub-tlv flags list."; | |||
| } | } | |||
| description "LAN adj-sid sub-tlv flags."; | description "Adj-sid sub-tlv flags."; | |||
| } | } | |||
| leaf mt-id { | leaf mt-id { | |||
| type uint8; | type uint8; | |||
| description "Multi-topology ID."; | description "Multi-topology ID."; | |||
| } | } | |||
| leaf weight { | leaf weight { | |||
| type uint8; | type uint8; | |||
| description "Weight used for load-balancing."; | description "Weight used for load-balancing."; | |||
| } | } | |||
| leaf neighbor-router-id { | leaf sid { | |||
| type yang:dotted-quad; | type uint32; | |||
| description "Neighbor router ID."; | description "Segment Identifier (SID) index/label."; | |||
| } | } | |||
| leaf sid { | } | |||
| type uint32; | } | |||
| description "Segment Identifier (SID) index/label."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| augment "/rt:routing/" | container lan-adj-sid-sub-tlvs { | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | description "LAN Adjacency SID optional sub-TLVs."; | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | list lan-adj-sid-sub-tlv { | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | description "List of LAN adjacency SID sub-TLVs."; | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | container lan-adj-sid-flags { | |||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | leaf-list bits { | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | type identityref { | |||
| when "../../../../../../../../../../../../../" | base adj-sid-bit; | |||
| + "rt:type = 'ospf:ospfv2'" { | } | |||
| description | description "LAN adj sid sub-tlv flags list."; | |||
| "This augmentation is only valid for OSPFv2."; | } | |||
| } | description "LAN adj-sid sub-tlv flags."; | |||
| } | ||||
| leaf mt-id { | ||||
| type uint8; | ||||
| description "Multi-topology ID."; | ||||
| } | ||||
| leaf weight { | ||||
| type uint8; | ||||
| description "Weight used for load-balancing."; | ||||
| } | ||||
| leaf neighbor-router-id { | ||||
| type yang:dotted-quad; | ||||
| description "Neighbor router ID."; | ||||
| } | ||||
| leaf sid { | ||||
| type uint32; | ||||
| description "Segment Identifier (SID) index/label."; | ||||
| } | ||||
| } | ||||
| } | ||||
| } | ||||
| description | augment "/rt:routing/" | |||
| "SR specific TLVs for OSPFv2 type 9 opaque LSA."; | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/ospf:area/" | ||||
| + "ospf:interfaces/ospf:interface/ospf:database/" | ||||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | ||||
| + "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
| when "../../../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| uses sr-algorithm-tlv; | description | |||
| uses sid-range-tlvs; | "SR specific TLVs for OSPFv2 type 9 opaque LSA."; | |||
| uses local-block-tlvs; | ||||
| uses srms-preference-tlv; | ||||
| } | ||||
| augment "/rt:routing/" | uses sr-algorithm-tlv; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | uses sid-range-tlvs; | |||
| + "ospf:ospf/ospf:areas/" | uses local-block-tlvs; | |||
| + "ospf:area/ospf:database/" | uses srms-preference-tlv; | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | } | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
| when "../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | augment "/rt:routing/" | |||
| "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:areas/" | ||||
| + "ospf:area/ospf:database/" | ||||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | ||||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | ||||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
| when "../../../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| uses sr-algorithm-tlv; | description | |||
| uses sid-range-tlvs; | "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | |||
| uses local-block-tlvs; | ||||
| uses srms-preference-tlv; | ||||
| } | ||||
| augment "/rt:routing/" | uses sr-algorithm-tlv; | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | uses sid-range-tlvs; | |||
| + "ospf:ospf/ospf:database/" | uses local-block-tlvs; | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | uses srms-preference-tlv; | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | } | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | ||||
| when "../../../../../../../../../" | ||||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | ||||
| uses sr-algorithm-tlv; | augment "/rt:routing/" | |||
| uses sid-range-tlvs; | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| uses local-block-tlvs; | + "ospf:ospf/ospf:database/" | |||
| uses srms-preference-tlv; | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| } | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| } | + "ospf:ospfv2/ospf:body/ospf:opaque/ospf:ri-opaque" { | |||
| <CODE ENDS> | when "../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | ||||
| description | ||||
| "This augmentation is only valid for OSPFv2."; | ||||
| } | ||||
| description | ||||
| "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | ||||
| uses sr-algorithm-tlv; | ||||
| uses sid-range-tlvs; | ||||
| uses local-block-tlvs; | ||||
| uses srms-preference-tlv; | ||||
| } | ||||
| } | ||||
| <CODE ENDS> | ||||
| 4. Security Considerations | 4. 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 | |||
| [RFC8446]. | [RFC8446]. | |||
| skipping to change at page 32, line 24 ¶ | skipping to change at page 32, line 24 ¶ | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-msd | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-msd | |||
| prefix: ospf-msd | prefix: ospf-msd | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 7. References | 7. References | |||
| 7.1. Normative References | 7.1. Normative References | |||
| [I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
| Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, | |||
| "YANG Data Model for OSPF Protocol", draft-ietf-ospf- | "YANG Data Model for OSPF Protocol", Work in Progress, | |||
| yang-29 (work in progress), October 2019. | Internet-Draft, draft-ietf-ospf-yang-29, 17 October 2019, | |||
| <https://www.ietf.org/archive/id/draft-ietf-ospf-yang- | ||||
| 29.txt>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | [RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328, | |||
| DOI 10.17487/RFC2328, April 1998, | DOI 10.17487/RFC2328, April 1998, | |||
| <https://www.rfc-editor.org/info/rfc2328>. | <https://www.rfc-editor.org/info/rfc2328>. | |||
| skipping to change at page 35, line 21 ¶ | skipping to change at page 35, line 4 ¶ | |||
| Kiran Koushik Agrahara Sreenivasa | Kiran Koushik Agrahara Sreenivasa | |||
| Cisco Systems | Cisco Systems | |||
| 12515 Research Blvd, Bldg 4 | 12515 Research Blvd, Bldg 4 | |||
| Austin, TX 78681 | Austin, TX 78681 | |||
| USA | USA | |||
| EMail: kkoushik@cisco.com | EMail: kkoushik@cisco.com | |||
| Authors' Addresses | Authors' Addresses | |||
| Derek Yeung | Derek Yeung | |||
| Arrcus | Arrcus | |||
| EMail: derek@arrcus.com | Email: derek@arrcus.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 | |||
| Jeffrey Zhang | Jeffrey Zhang | |||
| Juniper Networks | Juniper Networks | |||
| 10 Technology Park Drive | 10 Technology Park Drive | |||
| Westford, MA 01886 | Westford, MA 01886 | |||
| USA | United States of America | |||
| EMail: zzhang@juniper.net | Email: zzhang@juniper.net | |||
| Ing-Wher Chen | Ing-Wher Chen | |||
| The MITRE Corporation | The MITRE Corporation | |||
| EMail: ingwherchen@mitre.org | Email: ingwherchen@mitre.org | |||
| 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 | |||
| End of changes. 86 change blocks. | ||||
| 638 lines changed or deleted | 640 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/ | ||||