| < draft-ietf-ospf-sr-yang-03.txt | draft-ietf-ospf-sr-yang-04.txt > | |||
|---|---|---|---|---|
| Internet D. Yeung | Internet D. Yeung | |||
| Internet-Draft Arrcus | Internet-Draft Arrcus | |||
| Intended status: Informational Y. Qu | Intended status: Informational Y. Qu | |||
| Expires: July 1, 2018 Huawei | Expires: September 4, 2018 Huawei | |||
| J. Zhang | J. Zhang | |||
| Juniper Networks | Juniper Networks | |||
| I. Chen | I. Chen | |||
| Jabil Circuit | Jabil Circuit | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| December 28, 2017 | March 3, 2018 | |||
| Yang Data Model for OSPF SR (Segment Routing) Protocol | Yang Data Model for OSPF SR (Segment Routing) Protocol | |||
| draft-ietf-ospf-sr-yang-03 | draft-ietf-ospf-sr-yang-04 | |||
| 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 OSPF Segment Routing. | and manage OSPF 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 July 1, 2018. | This Internet-Draft will expire on September 4, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 2 | |||
| 2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2 | 2. OSPF Segment Routing . . . . . . . . . . . . . . . . . . . . 2 | |||
| 3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 7 | 3. OSPF Segment Routing Yang Module . . . . . . . . . . . . . . 7 | |||
| 4. Security Considerations . . . . . . . . . . . . . . . . . . . 19 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 20 | |||
| 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | 5. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 20 | 6.1. Normative References . . . . . . . . . . . . . . . . . . 20 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 22 | 6.2. Informative References . . . . . . . . . . . . . . . . . 22 | |||
| Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 23 | Appendix A. Contributors' Addreses . . . . . . . . . . . . . . . 23 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 1. Overview | 1. Overview | |||
| YANG [RFC6020] [RFC7950] is a data definition language used to | YANG [RFC6020] [RFC7950] is a data definition language used to | |||
| skipping to change at page 3, line 9 ¶ | skipping to change at page 3, line 9 ¶ | |||
| is an augmentation of the OSPF base model. | is an augmentation of the OSPF base model. | |||
| The OSPF SR YANG module requires support for the base segment routing | The OSPF SR YANG module requires support for the base segment routing | |||
| module [I-D.ietf-spring-sr-yang], which defines the global segment | module [I-D.ietf-spring-sr-yang], which defines the global segment | |||
| routing configuration independent of any specific routing protocol | routing configuration independent of any specific routing protocol | |||
| configuration, and support of OSPF base model[I-D.ietf-ospf-yang] | configuration, and support of OSPF base model[I-D.ietf-ospf-yang] | |||
| which defines basic OSPF configuration and state. | which defines basic OSPF configuration and state. | |||
| module: ietf-ospf-sr | module: ietf-ospf-sr | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance: | /rt:control-plane-protocol/ospf:ospf: | |||
| +--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: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/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:interfaces/ospf:interface: | /ospf:areas/ospf:area/ospf:interface: | |||
| +--rw segment-routing | +--rw segment-routing | |||
| +--rw adjacency-sid | +--rw adjacency-sid | |||
| +--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/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | |||
| /ospf:fast-reroute: | /ospf: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/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | |||
| /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs | /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs | |||
| /ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | |||
| /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas | /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas | |||
| /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs | /ospf:body/ospf:opaque/ospf:extended-prefix-tlvs | |||
| /ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlv: | |||
| +--ro perfix-sid-sub-tlvs | +--ro perfix-sid-sub-tlvs | |||
| +--ro prefix-sid-sub-tlv* | +--ro prefix-sid-sub-tlv* | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro algorithm? uint8 | +--ro algorithm? uint8 | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | |||
| /ospf:extended-link-tlvs/ospf:extended-link-tlv: | /ospf:extended-link-tlvs/ospf:extended-link-tlv: | |||
| +--ro adj-sid-sub-tlvs | +--ro adj-sid-sub-tlvs | |||
| | +--ro adj-sid-sub-tlv* | | +--ro adj-sid-sub-tlv* | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro mt-id? uint8 | | +--ro mt-id? uint8 | |||
| | +--ro weight? uint8 | | +--ro weight? uint8 | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro lan-adj-sid-sub-tlvs | +--ro lan-adj-sid-sub-tlvs | |||
| +--ro lan-adj-sid-sub-tlv* | +--ro lan-adj-sid-sub-tlv* | |||
| +--ro flags? bits | +--ro flags? bits | |||
| +--ro mt-id? uint8 | +--ro mt-id? uint8 | |||
| +--ro weight? uint8 | +--ro weight? uint8 | |||
| +--ro neighbor-router-id? yang:dotted-quad | +--ro neighbor-router-id? yang:dotted-quad | |||
| +--ro sid? uint32 | +--ro sid? uint32 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | /ospf:areas/ospf:area/ospf:interfaces/ospf:interface | |||
| /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:database/ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
| /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque: | /ospf:body/ospf:opaque: | |||
| +--ro extended-prefix-range-tlvs | +--ro extended-prefix-range-tlvs | |||
| | +--ro extended-prefix-range-tlv* | | +--ro extended-prefix-range-tlv* | |||
| | +--ro range-size? uint16 | | +--ro range-size? uint16 | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro prefix? inet:ip-prefix | | +--ro prefix? inet:ip-prefix | |||
| | +--ro perfix-sid-sub-tlvs | | +--ro perfix-sid-sub-tlvs | |||
| skipping to change at page 5, line 31 ¶ | skipping to change at page 5, line 31 ¶ | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* | |||
| | +--ro range-size? ospf:uint24 | | +--ro range-size? ospf: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 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | /ospf:areas/ospf:area/ospf:database/ospf:area-scope-lsa-type | |||
| /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version | |||
| /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: | /ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque: | |||
| +--ro extended-prefix-range-tlvs | +--ro extended-prefix-range-tlvs | |||
| | +--ro extended-prefix-range-tlv* | | +--ro extended-prefix-range-tlv* | |||
| | +--ro range-size? uint16 | | +--ro range-size? uint16 | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro prefix? inet:ip-prefix | | +--ro prefix? inet:ip-prefix | |||
| | +--ro perfix-sid-sub-tlvs | | +--ro perfix-sid-sub-tlvs | |||
| | | +--ro prefix-sid-sub-tlv* | | | +--ro prefix-sid-sub-tlv* | |||
| skipping to change at page 6, line 18 ¶ | skipping to change at page 6, line 18 ¶ | |||
| | +--ro sid-sub-tlv | | +--ro sid-sub-tlv | |||
| | +--ro sid? uint32 | | +--ro sid? uint32 | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* | |||
| | +--ro range-size? ospf:uint24 | | +--ro range-size? ospf: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 | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/ospf:ospf/ospf:instance | /rt:control-plane-protocol/ospf:ospf | |||
| /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas | /ospf:database/ospf:as-scope-lsa-type/ospf:as-scope-lsas | |||
| /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:as-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
| /ospf:body/ospf:opaque: | /ospf:body/ospf:opaque: | |||
| +--ro extended-prefix-range-tlvs | +--ro extended-prefix-range-tlvs | |||
| | +--ro extended-prefix-range-tlv* | | +--ro extended-prefix-range-tlv* | |||
| | +--ro range-size? uint16 | | +--ro range-size? uint16 | |||
| | +--ro flags? bits | | +--ro flags? bits | |||
| | +--ro prefix? inet:ip-prefix | | +--ro prefix? inet:ip-prefix | |||
| | +--ro perfix-sid-sub-tlvs | | +--ro perfix-sid-sub-tlvs | |||
| | | +--ro prefix-sid-sub-tlv* | | | +--ro prefix-sid-sub-tlv* | |||
| skipping to change at page 7, line 7 ¶ | skipping to change at page 7, line 7 ¶ | |||
| +--ro local-block-tlvs | +--ro local-block-tlvs | |||
| | +--ro local-block-tlv* | | +--ro local-block-tlv* | |||
| | +--ro range-size? ospf:uint24 | | +--ro range-size? ospf: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. OSPF Segment Routing Yang Module | 3. OSPF Segment Routing Yang Module | |||
| <CODE BEGINS> file "ietf-ospf-sr@2017-12-28.yang" | <CODE BEGINS> file "ietf-ospf-sr@2018-03-03.yang" | |||
| module ietf-ospf-sr { | module ietf-ospf-sr { | |||
| 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"; | |||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| skipping to change at page 8, line 31 ¶ | skipping to change at page 8, line 31 ¶ | |||
| to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
| set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
| Relating to IETF Documents | Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
| This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC XXXX; | |||
| see the RFC itself for full legal notices."; | see the RFC itself for full legal notices."; | |||
| reference "RFC XXXX"; | reference "RFC XXXX"; | |||
| revision 2018-03-03 { | ||||
| description | ||||
| "* Remove OSPF instance."; | ||||
| reference | ||||
| "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | ||||
| } | ||||
| revision 2017-12-28 { | revision 2017-12-28 { | |||
| description | description | |||
| ""; | ""; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | "RFC XXXX: A YANG Data Model for OSPF Segment Routing."; | |||
| } | } | |||
| revision 2017-07-02 { | revision 2017-07-02 { | |||
| description | description | |||
| "* Implement NMDA model. | "* Implement NMDA model. | |||
| skipping to change at page 13, line 26 ¶ | skipping to change at page 13, line 31 ¶ | |||
| type uint8 { | type uint8 { | |||
| range "0 .. 255"; | range "0 .. 255"; | |||
| } | } | |||
| description "SRMS preference TLV, vlaue from 0 to 255."; | description "SRMS preference TLV, vlaue from 0 to 255."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| /* Configuration */ | /* Configuration */ | |||
| augment "/rt:routing/rt:control-plane-protocols" | augment "/rt:routing/rt:control-plane-protocols" | |||
| + "/rt:control-plane-protocol/ospf:ospf/ospf:instance" { | + "/rt:control-plane-protocol/ospf:ospf" { | |||
| when "../../rt:type = 'ospf:ospfv2' or " | when "../rt:type = 'ospf:ospfv2' or " | |||
| + "../../rt:type = 'ospf:ospfv3'" { | + "../rt:type = 'ospf:ospfv3'" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol configuration | "This augments the OSPF protocol configuration | |||
| with segment routing."; | with segment routing."; | |||
| uses sr:controlplane-cfg; | uses sr:controlplane-cfg; | |||
| container protocol-srgb { | container protocol-srgb { | |||
| if-feature sr:protocol-srgb; | if-feature sr:protocol-srgb; | |||
| uses sr-cmn:srgb-cfg; | uses sr-cmn:srgb-cfg; | |||
| description | description | |||
| "Per-protocol SRGB."; | "Per-protocol SRGB."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | |||
| when "../../../../../../rt:type = 'ospf:ospfv2' or " | ||||
| + "../../../../../../rt:type = 'ospf:ospfv3'" { | when "../../../../../rt:type = 'ospf:ospfv2' or " | |||
| + "../../../../../rt:type = 'ospf:ospfv3'" { | ||||
| description | description | |||
| "This augments the OSPF interface configuration | "This augments the OSPF interface configuration | |||
| when used."; | when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol interface | "This augments the OSPF protocol interface | |||
| configuration with segment routing."; | configuration with segment routing."; | |||
| uses sr:igp-interface-cfg; | uses sr:igp-interface-cfg; | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf:ospf/ospf:instance/" | + "rt:control-plane-protocol/ospf:ospf/" | |||
| + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | + "ospf:areas/ospf:area/ospf:interfaces/ospf:interface/" | |||
| + "ospf:fast-reroute" { | + "ospf:fast-reroute" { | |||
| when "../../../../../../../rt:type = 'ospf:ospfv2' or " | when "../../../../../../rt:type = 'ospf:ospfv2' or " | |||
| + "../../../../../../../rt:type = 'ospf:ospfv3'" { | + "../../../../../../rt:type = 'ospf:ospfv3'" { | |||
| description | description | |||
| "This augments the OSPF routing protocol when used."; | "This augments the OSPF routing protocol when used."; | |||
| } | } | |||
| description | description | |||
| "This augments the OSPF protocol IP-FRR with TI-LFA."; | "This augments the OSPF protocol IP-FRR with TI-LFA."; | |||
| container ti-lfa { | container ti-lfa { | |||
| if-feature ti-lfa; | if-feature ti-lfa; | |||
| leaf enable { | leaf enable { | |||
| type boolean; | type boolean; | |||
| skipping to change at page 14, line 39 ¶ | skipping to change at page 14, line 46 ¶ | |||
| } | } | |||
| description | description | |||
| "Topology Independent Loop Free Alternate | "Topology Independent Loop Free Alternate | |||
| (TI-LFA) support."; | (TI-LFA) support."; | |||
| } | } | |||
| } | } | |||
| /* Database */ | /* Database */ | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:instance/ospf:areas/ospf:area/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| + "ospf:link-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-tlvs/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-tlvs/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 9 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:instance/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-tlvs/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 10 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:instance/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-prefix-tlvs/ospf:extended-prefix-tlv" { | + "ospf:extended-prefix-tlvs/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 11 opaque LSA."; | in type 11 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:instance/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque/" | + "ospf:ospfv2/ospf:body/ospf:opaque/" | |||
| + "ospf:extended-link-tlvs/ospf:extended-link-tlv" { | + "ospf:extended-link-tlvs/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 link TLV | "SR specific TLVs for OSPFv2 extended link TLV | |||
| in type 10 opaque LSA."; | in type 10 opaque LSA."; | |||
| container adj-sid-sub-tlvs { | container adj-sid-sub-tlvs { | |||
| description "Adjacency SID optional sub-TLVs."; | description "Adjacency SID optional sub-TLVs."; | |||
| skipping to change at page 17, line 46 ¶ | skipping to change at page 18, line 4 ¶ | |||
| bit G { | bit G { | |||
| position 3; | position 3; | |||
| description | description | |||
| "Group flag."; | "Group flag."; | |||
| } | } | |||
| bit P { | bit P { | |||
| position 4; | position 4; | |||
| description | description | |||
| "Persistent flag."; | "Persistent flag."; | |||
| } | } | |||
| } | } | |||
| description "Flags."; | description "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 neighbor-router-id { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| description "Neighbor router ID."; | description "Neighbor router ID."; | |||
| } | } | |||
| leaf sid { | leaf sid { | |||
| type uint32; | type uint32; | |||
| description "Segment Identifier (SID) index/label."; | description "Segment Identifier (SID) index/label."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| 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:instance/ospf:areas/ospf:area/" | + "ospf:ospf/ospf:areas/ospf:area/" | |||
| + "ospf:interfaces/ospf:interface/ospf:database/" | + "ospf:interfaces/ospf:interface/ospf:database/" | |||
| + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | |||
| + "ospf:link-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" { | |||
| 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 type 9 opaque LSA."; | "SR specific TLVs for OSPFv2 type 9 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | uses extended-prefix-range-tlvs; | |||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:instance/ospf:areas/" | + "ospf:ospf/ospf:areas/" | |||
| + "ospf:area/ospf:database/" | + "ospf:area/ospf:database/" | |||
| + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | |||
| + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque" { | |||
| when "../../../../../../../../../../../" | when "../../../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | "SR specific TLVs for OSPFv2 type 10 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | uses extended-prefix-range-tlvs; | |||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| uses local-block-tlvs; | uses local-block-tlvs; | |||
| uses srms-preference-tlv; | uses srms-preference-tlv; | |||
| } | } | |||
| augment "/rt:routing/" | augment "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol/" | + "rt:control-plane-protocols/rt:control-plane-protocol/" | |||
| + "ospf:ospf/ospf:instance/ospf:database/" | + "ospf:ospf/ospf:database/" | |||
| + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | |||
| + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | |||
| + "ospf:ospfv2/ospf:body/ospf:opaque" { | + "ospf:ospfv2/ospf:body/ospf:opaque" { | |||
| when "../../../../../../../../../" | when "../../../../../../../../" | |||
| + "rt:type = 'ospf:ospfv2'" { | + "rt:type = 'ospf:ospfv2'" { | |||
| description | description | |||
| "This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
| } | } | |||
| description | description | |||
| "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | "SR specific TLVs for OSPFv2 type 11 opaque LSA."; | |||
| uses extended-prefix-range-tlvs; | uses extended-prefix-range-tlvs; | |||
| uses sr-algorithm-tlv; | uses sr-algorithm-tlv; | |||
| uses sid-range-tlvs; | uses sid-range-tlvs; | |||
| skipping to change at page 22, line 15 ¶ | skipping to change at page 22, line 27 ¶ | |||
| 6.2. Informative References | 6.2. Informative References | |||
| [I-D.ietf-ospf-yang] | [I-D.ietf-ospf-yang] | |||
| Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, | |||
| "Yang Data Model for OSPF Protocol", draft-ietf-ospf- | "Yang Data Model for OSPF Protocol", draft-ietf-ospf- | |||
| yang-09 (work in progress), October 2017. | yang-09 (work in progress), October 2017. | |||
| [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-07 (work in progress), July 2017. | yang-08 (work in progress), December 2017. | |||
| Appendix A. Contributors' Addreses | Appendix A. Contributors' Addreses | |||
| Dean Bogdanovic | Dean Bogdanovic | |||
| Volta Networks, Inc. | Volta Networks, Inc. | |||
| EMail: dean@voltanet.io | EMail: dean@voltanet.io | |||
| Kiran Koushik Agrahara Sreenivasa | Kiran Koushik Agrahara Sreenivasa | |||
| Cisco Systems | Cisco Systems | |||
| End of changes. 40 change blocks. | ||||
| 43 lines changed or deleted | 51 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/ | ||||