| < draft-ietf-ospf-yang-28.txt | draft-ietf-ospf-yang-29.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: February 27, 2020 Futurewei | Expires: April 19, 2020 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 | |||
| August 26, 2019 | October 17, 2019 | |||
| YANG Data Model for OSPF Protocol | YANG Data Model for OSPF Protocol | |||
| draft-ietf-ospf-yang-28 | draft-ietf-ospf-yang-29 | |||
| 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. The model is based on YANG 1.1 as defined in RFC | and manage OSPF. The model is based on YANG 1.1 as defined in RFC | |||
| 7950 and conforms to the Network Management Datastore Architecture | 7950 and conforms to the Network Management Datastore Architecture | |||
| (NMDA) as described in RFC 8342. | (NMDA) as described in RFC 8342. | |||
| 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 February 27, 2020. | This Internet-Draft will expire on April 19, 2020. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | |||
| skipping to change at page 23, line 49 ¶ | skipping to change at page 23, line 49 ¶ | |||
| -> /rt:routing/control-plane-protocols/ | -> /rt:routing/control-plane-protocols/ | |||
| control-plane-protocol/name | control-plane-protocol/name | |||
| 3. OSPF YANG Module | 3. OSPF YANG Module | |||
| The following RFCs and drafts are not referenced in the document text | The following RFCs and drafts are not referenced in the document text | |||
| but are referenced in the ietf-ospf.yang module: [RFC0905], | but are referenced in the ietf-ospf.yang module: [RFC0905], | |||
| [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | [RFC4576], [RFC4973], [RFC5250], [RFC5309], [RFC5642], [RFC5881], | |||
| [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | [RFC6991], [RFC7770], [RFC7884], [RFC8294], and [RFC8476]. | |||
| <CODE BEGINS> file "ietf-ospf@2019-08-26.yang" | <CODE BEGINS> file "ietf-ospf@2019-10-17.yang" | |||
| module ietf-ospf { | module ietf-ospf { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf"; | |||
| prefix ospf; | prefix ospf; | |||
| 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"; | |||
| } | } | |||
| skipping to change at page 26, line 10 ¶ | skipping to change at page 26, line 10 ¶ | |||
| 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. | |||
| 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."; | |||
| revision 2019-08-26 { | revision 2019-10-17 { | |||
| description | description | |||
| "Initial revision."; | "Initial revision."; | |||
| reference | reference | |||
| "RFC XXXX: A YANG Data Model for OSPF."; | "RFC XXXX: A YANG Data Model for OSPF."; | |||
| } | } | |||
| feature multi-topology { | feature multi-topology { | |||
| description | description | |||
| "Support Multiple-Topology Routing (MTR)."; | "Support Multiple-Topology Routing (MTR)."; | |||
| reference "RFC 4915: Multi-Topology Routing"; | reference "RFC 4915: Multi-Topology Routing"; | |||
| skipping to change at page 99, line 47 ¶ | skipping to change at page 99, line 47 ¶ | |||
| determine interface cost (Mbits). The cost is the | determine interface cost (Mbits). The cost is the | |||
| reference bandwidth divided by the interface speed | reference bandwidth divided by the interface speed | |||
| with 1 being the minimum cost."; | with 1 being the minimum cost."; | |||
| } | } | |||
| } | } | |||
| container spf-control { | container spf-control { | |||
| leaf paths { | leaf paths { | |||
| if-feature max-ecmp; | if-feature max-ecmp; | |||
| type uint16 { | type uint16 { | |||
| range "1..32"; | range "1..65535"; | |||
| } | } | |||
| description | description | |||
| "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | "Maximum number of Equal-Cost Multi-Path (ECMP) paths."; | |||
| } | } | |||
| container ietf-spf-delay { | container ietf-spf-delay { | |||
| if-feature ietf-spf-delay; | if-feature ietf-spf-delay; | |||
| uses ietf-spf-delay; | uses ietf-spf-delay; | |||
| description | description | |||
| "IETF SPF delay algorithm configuration."; | "IETF SPF delay algorithm configuration."; | |||
| } | } | |||
| skipping to change at page 107, line 27 ¶ | skipping to change at page 107, line 27 ¶ | |||
| } | } | |||
| description | description | |||
| "This reason for the LSA log entry."; | "This reason for the LSA log entry."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
| when "derived-from(rt:type, 'ospf-protocol')" { | when "derived-from(rt:type, 'ospf')" { | |||
| description | description | |||
| "This augmentation is only valid for a routing protocol | "This augmentation is only valid for a routing protocol | |||
| instance of OSPF (type 'ospfv2' or 'ospfv3')."; | instance of OSPF (type 'ospfv2' or 'ospfv3')."; | |||
| } | } | |||
| description "OSPF protocol ietf-routing module | description "OSPF protocol ietf-routing module | |||
| control-plane-protocol augmentation."; | control-plane-protocol augmentation."; | |||
| container ospf { | container ospf { | |||
| description | description | |||
| "OSPF protocol Instance"; | "OSPF protocol Instance"; | |||
| skipping to change at page 109, line 49 ¶ | skipping to change at page 109, line 49 ¶ | |||
| uses interface-state; | uses interface-state; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/ospf" { | + "rt:control-plane-protocol/ospf" { | |||
| when "derived-from(../rt:type, 'ospf-protocol')" { | when "derived-from(../rt:type, 'ospf')" { | |||
| description | description | |||
| "This augmentation is only valid for OSPF | "This augmentation is only valid for OSPF | |||
| (type 'ospfv2' or 'ospfv3')."; | (type 'ospfv2' or 'ospfv3')."; | |||
| } | } | |||
| if-feature multi-topology; | if-feature multi-topology; | |||
| description | description | |||
| "OSPF multi-topology instance configuration | "OSPF multi-topology instance configuration | |||
| state augmentation."; | state augmentation."; | |||
| container topologies { | container topologies { | |||
| skipping to change at page 112, line 30 ¶ | skipping to change at page 112, line 30 ¶ | |||
| default "0"; | default "0"; | |||
| description "OSPF route tag."; | description "OSPF route tag."; | |||
| } | } | |||
| leaf route-type { | leaf route-type { | |||
| type route-type; | type route-type; | |||
| description "OSPF route type"; | description "OSPF route type"; | |||
| } | } | |||
| } | } | |||
| augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
| when "derived-from(rt:source-protocol, 'ospf-protocol')" { | when "derived-from(rt:source-protocol, 'ospf')" { | |||
| description | description | |||
| "This augmentation is only valid for routes whose | "This augmentation is only valid for routes whose | |||
| source protocol is OSPF."; | source protocol is OSPF."; | |||
| } | } | |||
| description | description | |||
| "OSPF-specific route attributes."; | "OSPF-specific route attributes."; | |||
| uses route-content; | uses route-content; | |||
| } | } | |||
| /* | /* | |||
| skipping to change at page 114, line 27 ¶ | skipping to change at page 114, line 27 ¶ | |||
| data for OSPF notifications."; | data for OSPF notifications."; | |||
| leaf routing-protocol-name { | leaf routing-protocol-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
| } | } | |||
| must "derived-from( " | must "derived-from( " | |||
| + "/rt:routing/rt:control-plane-protocols/" | + "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol[rt:name=current()]/" | + "rt:control-plane-protocol[rt:name=current()]/" | |||
| + "rt:type, 'ospf-protocol')"; | + "rt:type, 'ospf')"; | |||
| description | description | |||
| "OSPF routing protocol instance name."; | "OSPF routing protocol instance name."; | |||
| } | } | |||
| leaf address-family { | leaf address-family { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/" | path "/rt:routing/" | |||
| + "rt:control-plane-protocols/rt:control-plane-protocol" | + "rt:control-plane-protocols/rt:control-plane-protocol" | |||
| + "[rt:name=current()/../routing-protocol-name]/" | + "[rt:name=current()/../routing-protocol-name]/" | |||
| + "ospf/address-family"; | + "ospf/address-family"; | |||
| skipping to change at page 123, line 28 ¶ | skipping to change at page 123, line 28 ¶ | |||
| registry [RFC6020]. | registry [RFC6020]. | |||
| name: ietf-ospf | name: ietf-ospf | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | namespace: urn:ietf:params:xml:ns:yang:ietf-ospf | |||
| prefix: ospf | prefix: ospf | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| 6. Acknowledgements | 6. Acknowledgements | |||
| The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | The authors wish to thank Yi Yang, Alexander Clemm, Gaurav Gupta, | |||
| Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta and | Ladislav Lhotka, Stephane Litkowski, Greg Hankins, Manish Gupta, | |||
| Alan Davey for their thorough reviews and helpful comments. | Michael Darwish, and Alan Davey for their thorough reviews and | |||
| helpful comments. | ||||
| Thanks to Tom Petch for last call review and improvement of the | Thanks to Tom Petch for last call review and improvement of the | |||
| document organization. | document organization. | |||
| Thanks to Alvaro Retana for AD comments. | Thanks to Alvaro Retana for AD comments. | |||
| Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | Thanks to Benjamin Kaduk, Suresh Krishnan, and Roman Dannyliw for | |||
| IESG review comments. | IESG review comments. | |||
| This document was produced using Marshall Rose's xml2rfc tool. | This document was produced using Marshall Rose's xml2rfc tool. | |||
| End of changes. 12 change blocks. | ||||
| 13 lines changed or deleted | 14 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/ | ||||