| < draft-ietf-rtgwg-yang-vrrp-09.txt | draft-ietf-rtgwg-yang-vrrp-10.txt > | |||
|---|---|---|---|---|
| Network Working Group X. Liu, Ed. | Network Working Group X. Liu, Ed. | |||
| Internet-Draft A. Kyparlis | Internet-Draft A. Kyparlis | |||
| Intended status: Standards Track Jabil | Intended status: Standards Track Jabil | |||
| Expires: July 13, 2018 R. Parikh | Expires: July 28, 2018 R. Parikh | |||
| VMware | VMware | |||
| A. Lindem | A. Lindem | |||
| Cisco Systems | Cisco Systems | |||
| M. Zhang | M. Zhang | |||
| Huawei Technologies | Huawei Technologies | |||
| January 9, 2018 | January 24, 2018 | |||
| A YANG Data Model for Virtual Router Redundancy Protocol (VRRP) | A YANG Data Model for Virtual Router Redundancy Protocol (VRRP) | |||
| draft-ietf-rtgwg-yang-vrrp-09 | draft-ietf-rtgwg-yang-vrrp-10 | |||
| Abstract | Abstract | |||
| This document describes a data model for Virtual Router Redundancy | This document describes a data model for Virtual Router Redundancy | |||
| Protocol (VRRP). Both version 2 and version 3 of VRRP are covered. | Protocol (VRRP). Both version 2 and version 3 of VRRP are covered. | |||
| 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 37 ¶ | skipping to change at page 1, line 37 ¶ | |||
| 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 http://datatracker.ietf.org/drafts/current/. | Drafts is at http://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 13, 2018. | This Internet-Draft will expire on July 28, 2018. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 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 | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://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 2, line 20 ¶ | skipping to change at page 2, line 20 ¶ | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 | 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 | |||
| 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 3 | |||
| 2.1. Scope of the Model . . . . . . . . . . . . . . . . . . . 3 | 2.1. Scope of the Model . . . . . . . . . . . . . . . . . . . 3 | |||
| 2.2. Relations with Interface Model and IP Model . . . . . . . 4 | 2.2. Relations with Interface Model and IP Model . . . . . . . 4 | |||
| 2.3. Protocol Configuration . . . . . . . . . . . . . . . . . 5 | 2.3. Protocol Configuration . . . . . . . . . . . . . . . . . 5 | |||
| 2.4. Protocol States . . . . . . . . . . . . . . . . . . . . . 6 | 2.4. Protocol States . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 | 2.5. Notifications . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 3. Tree Structure . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 32 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 6. References . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 35 | |||
| 6.1. Normative References . . . . . . . . . . . . . . . . . . 33 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 6.2. Informative References . . . . . . . . . . . . . . . . . 35 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 36 | |||
| Appendix A. Complete Model Tree Structure . . . . . . . . . . . 36 | 7.2. Informative References . . . . . . . . . . . . . . . . . 37 | |||
| Appendix B. Data Tree Example . . . . . . . . . . . . . . . . . 38 | Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 39 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 1. Introduction | 1. Introduction | |||
| This document introduces a YANG [RFC6020][RFC7950] data model for | This document introduces a YANG [RFC6020][RFC7950] data model for | |||
| Virtual Router Redundancy Protocol (VRRP) [RFC3768] [RFC5798]. VRRP | Virtual Router Redundancy Protocol (VRRP) [RFC3768] [RFC5798]. VRRP | |||
| provides higher resiliency by specifying an election protocol that | provides higher resiliency by specifying an election protocol that | |||
| dynamically assigns responsibility for a virtual router to one of the | dynamically assigns responsibility for a virtual router to one of the | |||
| VRRP routers on a LAN. | VRRP routers on a LAN. | |||
| skipping to change at page 10, line 5 ¶ | skipping to change at page 10, line 5 ¶ | |||
| [I-D.ietf-netconf-yang-push] can be used for other general | [I-D.ietf-netconf-yang-push] can be used for other general | |||
| notifications. This mechanism currently allows the user to: | notifications. This mechanism currently allows the user to: | |||
| o Subscribe notifications on a per client basis. | o Subscribe notifications on a per client basis. | |||
| o Specify subtree filters or xpath filters so that only interested | o Specify subtree filters or xpath filters so that only interested | |||
| contents will be sent. | contents will be sent. | |||
| o Specify either periodic or on-demand notifications. | o Specify either periodic or on-demand notifications. | |||
| 3. YANG Module | 3. Tree Structure | |||
| The VRRP YANG data model defined in this document has the following | ||||
| tree structure: | ||||
| module: ietf-vrrp | ||||
| +--ro vrrp | ||||
| +--ro virtual-routers? uint32 | ||||
| +--ro interfaces? uint32 | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro checksum-errors? yang:counter64 | ||||
| +--ro version-errors? yang:counter64 | ||||
| +--ro vrid-errors? yang:counter64 | ||||
| +--ro ip-ttl-errors? yang:counter64 | ||||
| augment /if:interfaces/if:interface/ip:ipv4: | ||||
| +--rw vrrp | ||||
| +--rw vrrp-instance* [vrid] | ||||
| +--rw vrid uint8 | ||||
| +--rw version identityref | ||||
| +--rw log-state-change? boolean | ||||
| +--rw preempt | ||||
| | +--rw enabled? boolean | ||||
| | +--rw hold-time? uint16 | ||||
| +--rw priority? uint8 | ||||
| +--rw accept-mode? boolean | ||||
| +--rw (advertise-interval-choice)? | ||||
| | +--:(v2) | ||||
| | | +--rw advertise-interval-sec? uint8 | ||||
| | +--:(v3) | ||||
| | +--rw advertise-interval-centi-sec? uint16 | ||||
| +--rw track | ||||
| | +--rw interfaces | ||||
| | | +--rw interface* [interface] | ||||
| | | +--rw interface if:interface-ref | ||||
| | | +--rw priority-decrement? uint8 | ||||
| | +--rw networks | ||||
| | +--rw network* [prefix] | ||||
| | +--rw prefix inet:ipv4-prefix | ||||
| | +--rw priority-decrement? uint8 | ||||
| +--rw virtual-ipv4-addresses | ||||
| | +--rw virtual-ipv4-address* [ipv4-address] | ||||
| | +--rw ipv4-address inet:ipv4-address | ||||
| +--ro state? identityref | ||||
| +--ro is-owner? boolean | ||||
| +--ro last-adv-source? inet:ip-address | ||||
| +--ro up-datetime? yang:date-and-time | ||||
| +--ro master-down-interval? uint32 | ||||
| +--ro skew-time? uint32 | ||||
| +--ro last-event? identityref | ||||
| +--ro new-master-reason? | ||||
| new-master-reason-type | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro master-transitions? yang:counter32 | ||||
| +--ro advertisement-recv? yang:counter64 | ||||
| +--ro advertisement-sent? yang:counter64 | ||||
| +--ro interval-errors? yang:counter64 | ||||
| | {validate-interval-errors}? | ||||
| +--ro priority-zero-pkts-rcvd? yang:counter64 | ||||
| +--ro priority-zero-pkts-sent? yang:counter64 | ||||
| +--ro invalid-type-pkts-rcvd? yang:counter64 | ||||
| +--ro address-list-errors? yang:counter64 | ||||
| | {validate-address-list-errors}? | ||||
| +--ro packet-length-errors? yang:counter64 | ||||
| augment /if:interfaces/if:interface/ip:ipv6: | ||||
| +--rw vrrp | ||||
| +--rw vrrp-instance* [vrid] | ||||
| +--rw vrid uint8 | ||||
| +--rw version identityref | ||||
| +--rw log-state-change? boolean | ||||
| +--rw preempt | ||||
| | +--rw enabled? boolean | ||||
| | +--rw hold-time? uint16 | ||||
| +--rw priority? uint8 | ||||
| +--rw accept-mode? boolean | ||||
| +--rw advertise-interval-centi-sec? uint16 | ||||
| +--rw track | ||||
| | +--rw interfaces | ||||
| | | +--rw interface* [interface] | ||||
| | | +--rw interface if:interface-ref | ||||
| | | +--rw priority-decrement? uint8 | ||||
| | +--rw networks | ||||
| | +--rw network* [prefix] | ||||
| | +--rw prefix inet:ipv6-prefix | ||||
| | +--rw priority-decrement? uint8 | ||||
| +--rw virtual-ipv6-addresses | ||||
| | +--rw virtual-ipv6-address* [ipv6-address] | ||||
| | +--rw ipv6-address inet:ipv6-address | ||||
| +--ro state? identityref | ||||
| +--ro is-owner? boolean | ||||
| +--ro last-adv-source? inet:ip-address | ||||
| +--ro up-datetime? yang:date-and-time | ||||
| +--ro master-down-interval? uint32 | ||||
| +--ro skew-time? uint32 | ||||
| +--ro last-event? identityref | ||||
| +--ro new-master-reason? | ||||
| new-master-reason-type | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro master-transitions? yang:counter32 | ||||
| +--ro advertisement-recv? yang:counter64 | ||||
| +--ro advertisement-sent? yang:counter64 | ||||
| +--ro interval-errors? yang:counter64 | ||||
| | {validate-interval-errors}? | ||||
| +--ro priority-zero-pkts-rcvd? yang:counter64 | ||||
| +--ro priority-zero-pkts-sent? yang:counter64 | ||||
| +--ro invalid-type-pkts-rcvd? yang:counter64 | ||||
| +--ro address-list-errors? yang:counter64 | ||||
| | {validate-address-list-errors}? | ||||
| +--ro packet-length-errors? yang:counter64 | ||||
| notifications: | ||||
| +---n vrrp-new-master-event | ||||
| | +--ro master-ip-address inet:ip-address | ||||
| | +--ro new-master-reason new-master-reason-type | ||||
| +---n vrrp-protocol-error-event | ||||
| | +--ro protocol-error-reason identityref | ||||
| +---n vrrp-virtual-router-error-event | ||||
| +--ro interface if:interface-ref | ||||
| +--ro (ip-version) | ||||
| | +--:(ipv4) | ||||
| | | +--ro ipv4 | ||||
| | | +--ro vrid leafref | ||||
| | +--:(ipv6) | ||||
| | +--ro ipv6 | ||||
| | +--ro vrid leafref | ||||
| +--ro virtual-router-error-reason identityref | ||||
| 4. YANG Module | ||||
| <CODE BEGINS> file "ietf-vrrp@2018-01-09.yang" | <CODE BEGINS> file "ietf-vrrp@2018-01-09.yang" | |||
| module ietf-vrrp { | module ietf-vrrp { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-vrrp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-vrrp"; | |||
| prefix "vrrp"; | prefix "vrrp"; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix "inet"; | |||
| } | } | |||
| skipping to change at page 32, line 10 ¶ | skipping to change at page 34, line 43 ¶ | |||
| base vrrp:vrrp-error-virtual-router; | base vrrp:vrrp-error-virtual-router; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the reason for the virtual router error."; | "Indicates the reason for the virtual router error."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 4. IANA Considerations | 5. IANA Considerations | |||
| RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | |||
| actual RFC number (and remove this note). | actual RFC number (and remove this note). | |||
| This document registers the following namespace URIs in the IETF XML | This document registers the following namespace URIs in the IETF XML | |||
| registry [RFC3688]: | registry [RFC3688]: | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-vrrp | URI: urn:ietf:params:xml:ns:yang:ietf-vrrp | |||
| Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
| skipping to change at page 32, line 34 ¶ | skipping to change at page 35, line 21 ¶ | |||
| This document registers the following YANG modules in the YANG Module | This document registers the following YANG modules in the YANG Module | |||
| Names registry [RFC7950]: | Names registry [RFC7950]: | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| name: ietf-vrrp | name: ietf-vrrp | |||
| namespace: urn:ietf:params:xml:ns:yang:ietf-vrrp | namespace: urn:ietf:params:xml:ns:yang:ietf-vrrp | |||
| prefix: vrrp | prefix: vrrp | |||
| reference: RFC XXXX | reference: RFC XXXX | |||
| -------------------------------------------------------------------- | -------------------------------------------------------------------- | |||
| 5. Security Considerations | 6. Security Considerations | |||
| The YANG module specified in this document defines a schema for data | The YANG module specified in this document defines a schema for data | |||
| that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
| as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
| is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
| transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
| is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
| [RFC5246]. | [RFC5246]. | |||
| The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
| skipping to change at page 33, line 37 ¶ | skipping to change at page 36, line 20 ¶ | |||
| /ietf-vrrp:vrrp | /ietf-vrrp:vrrp | |||
| /if:interfaces/if:interface/ip:ipv4/vrrp:vrrp/vrrp:vrrp-instance | /if:interfaces/if:interface/ip:ipv4/vrrp:vrrp/vrrp:vrrp-instance | |||
| /if:interfaces/if:interface/ip:ipv6/vrrp:vrrp/vrrp:vrrp-instance | /if:interfaces/if:interface/ip:ipv6/vrrp:vrrp/vrrp:vrrp-instance | |||
| Unauthorized access to any data node of these subtrees can disclose | Unauthorized access to any data node of these subtrees can disclose | |||
| the operational state information of VRRP on this device. | the operational state information of VRRP on this device. | |||
| 6. References | 7. References | |||
| 6.1. Normative References | 7.1. Normative References | |||
| [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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, <https://www.rfc- | |||
| editor.org/info/rfc2119>. | editor.org/info/rfc2119>. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | |||
| editor.org/info/rfc3688>. | editor.org/info/rfc3688>. | |||
| skipping to change at page 34, line 48 ¶ | skipping to change at page 37, line 28 ¶ | |||
| [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", | |||
| RFC 7950, DOI 10.17487/RFC7950, August 2016, | RFC 7950, DOI 10.17487/RFC7950, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7950>. | <https://www.rfc-editor.org/info/rfc7950>. | |||
| [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | [RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF | |||
| Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017, | |||
| <https://www.rfc-editor.org/info/rfc8040>. | <https://www.rfc-editor.org/info/rfc8040>. | |||
| [I-D.ietf-netmod-rfc7223bis] | [I-D.ietf-netmod-rfc7223bis] | |||
| Bjorklund, M., "A YANG Data Model for Interface | Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", draft-ietf-netmod-rfc7223bis-02 (work in | Management", draft-ietf-netmod-rfc7223bis-03 (work in | |||
| progress), January 2018. | progress), January 2018. | |||
| [I-D.ietf-netmod-rfc7277bis] | [I-D.ietf-netmod-rfc7277bis] | |||
| Bjorklund, M., "A YANG Data Model for IP Management", | Bjorklund, M., "A YANG Data Model for IP Management", | |||
| draft-ietf-netmod-rfc7277bis-02 (work in progress), | draft-ietf-netmod-rfc7277bis-03 (work in progress), | |||
| January 2018. | January 2018. | |||
| [I-D.ietf-netmod-revised-datastores] | [I-D.ietf-netmod-revised-datastores] | |||
| Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., | |||
| and R. Wilton, "Network Management Datastore | and R. Wilton, "Network Management Datastore | |||
| Architecture", draft-ietf-netmod-revised-datastores-09 | Architecture", draft-ietf-netmod-revised-datastores-10 | |||
| (work in progress), December 2017. | (work in progress), January 2018. | |||
| 6.2. Informative References | 7.2. Informative References | |||
| [RFC3768] Hinden, R., Ed., "Virtual Router Redundancy Protocol | [RFC3768] Hinden, R., Ed., "Virtual Router Redundancy Protocol | |||
| (VRRP)", RFC 3768, DOI 10.17487/RFC3768, April 2004, | (VRRP)", RFC 3768, DOI 10.17487/RFC3768, April 2004, | |||
| <https://www.rfc-editor.org/info/rfc3768>. | <https://www.rfc-editor.org/info/rfc3768>. | |||
| [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | [RFC7951] Lhotka, L., "JSON Encoding of Data Modeled with YANG", | |||
| RFC 7951, DOI 10.17487/RFC7951, August 2016, | RFC 7951, DOI 10.17487/RFC7951, August 2016, | |||
| <https://www.rfc-editor.org/info/rfc7951>. | <https://www.rfc-editor.org/info/rfc7951>. | |||
| [I-D.ietf-netconf-subscribed-notifications] | [I-D.ietf-netconf-subscribed-notifications] | |||
| skipping to change at page 35, line 40 ¶ | skipping to change at page 38, line 19 ¶ | |||
| progress), December 2017. | progress), December 2017. | |||
| [I-D.ietf-netconf-yang-push] | [I-D.ietf-netconf-yang-push] | |||
| Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- | Clemm, A., Voit, E., Prieto, A., Tripathy, A., Nilsen- | |||
| Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore | Nygaard, E., Bierman, A., and B. Lengyel, "YANG Datastore | |||
| Subscription", draft-ietf-netconf-yang-push-12 (work in | Subscription", draft-ietf-netconf-yang-push-12 (work in | |||
| progress), December 2017. | progress), December 2017. | |||
| [I-D.ietf-netmod-rfc6087bis] | [I-D.ietf-netmod-rfc6087bis] | |||
| Bierman, A., "Guidelines for Authors and Reviewers of YANG | Bierman, A., "Guidelines for Authors and Reviewers of YANG | |||
| Data Model Documents", draft-ietf-netmod-rfc6087bis-15 | Data Model Documents", draft-ietf-netmod-rfc6087bis-16 | |||
| (work in progress), December 2017. | (work in progress), January 2018. | |||
| [I-D.ietf-netmod-yang-tree-diagrams] | [I-D.ietf-netmod-yang-tree-diagrams] | |||
| Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- | Bjorklund, M. and L. Berger, "YANG Tree Diagrams", draft- | |||
| ietf-netmod-yang-tree-diagrams-04 (work in progress), | ietf-netmod-yang-tree-diagrams-05 (work in progress), | |||
| December 2017. | January 2018. | |||
| Appendix A. Complete Model Tree Structure | ||||
| The VRRP YANG data model defined in this document has the following | ||||
| tree structure: | ||||
| module: ietf-vrrp | ||||
| +--ro vrrp | ||||
| +--ro virtual-routers? uint32 | ||||
| +--ro interfaces? uint32 | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro checksum-errors? yang:counter64 | ||||
| +--ro version-errors? yang:counter64 | ||||
| +--ro vrid-errors? yang:counter64 | ||||
| +--ro ip-ttl-errors? yang:counter64 | ||||
| augment /if:interfaces/if:interface/ip:ipv4: | ||||
| +--rw vrrp | ||||
| +--rw vrrp-instance* [vrid] | ||||
| +--rw vrid uint8 | ||||
| +--rw version identityref | ||||
| +--rw log-state-change? boolean | ||||
| +--rw preempt | ||||
| | +--rw enabled? boolean | ||||
| | +--rw hold-time? uint16 | ||||
| +--rw priority? uint8 | ||||
| +--rw accept-mode? boolean | ||||
| +--rw (advertise-interval-choice)? | ||||
| | +--:(v2) | ||||
| | | +--rw advertise-interval-sec? uint8 | ||||
| | +--:(v3) | ||||
| | +--rw advertise-interval-centi-sec? uint16 | ||||
| +--rw track | ||||
| | +--rw interfaces | ||||
| | | +--rw interface* [interface] | ||||
| | | +--rw interface if:interface-ref | ||||
| | | +--rw priority-decrement? uint8 | ||||
| | +--rw networks | ||||
| | +--rw network* [prefix] | ||||
| | +--rw prefix inet:ipv4-prefix | ||||
| | +--rw priority-decrement? uint8 | ||||
| +--rw virtual-ipv4-addresses | ||||
| | +--rw virtual-ipv4-address* [ipv4-address] | ||||
| | +--rw ipv4-address inet:ipv4-address | ||||
| +--ro state? identityref | ||||
| +--ro is-owner? boolean | ||||
| +--ro last-adv-source? inet:ip-address | ||||
| +--ro up-datetime? yang:date-and-time | ||||
| +--ro master-down-interval? uint32 | ||||
| +--ro skew-time? uint32 | ||||
| +--ro last-event? identityref | ||||
| +--ro new-master-reason? | ||||
| new-master-reason-type | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro master-transitions? yang:counter32 | ||||
| +--ro advertisement-recv? yang:counter64 | ||||
| +--ro advertisement-sent? yang:counter64 | ||||
| +--ro interval-errors? yang:counter64 | ||||
| | {validate-interval-errors}? | ||||
| +--ro priority-zero-pkts-rcvd? yang:counter64 | ||||
| +--ro priority-zero-pkts-sent? yang:counter64 | ||||
| +--ro invalid-type-pkts-rcvd? yang:counter64 | ||||
| +--ro address-list-errors? yang:counter64 | ||||
| | {validate-address-list-errors}? | ||||
| +--ro packet-length-errors? yang:counter64 | ||||
| augment /if:interfaces/if:interface/ip:ipv6: | ||||
| +--rw vrrp | ||||
| +--rw vrrp-instance* [vrid] | ||||
| +--rw vrid uint8 | ||||
| +--rw version identityref | ||||
| +--rw log-state-change? boolean | ||||
| +--rw preempt | ||||
| | +--rw enabled? boolean | ||||
| | +--rw hold-time? uint16 | ||||
| +--rw priority? uint8 | ||||
| +--rw accept-mode? boolean | ||||
| +--rw advertise-interval-centi-sec? uint16 | ||||
| +--rw track | ||||
| | +--rw interfaces | ||||
| | | +--rw interface* [interface] | ||||
| | | +--rw interface if:interface-ref | ||||
| | | +--rw priority-decrement? uint8 | ||||
| | +--rw networks | ||||
| | +--rw network* [prefix] | ||||
| | +--rw prefix inet:ipv6-prefix | ||||
| | +--rw priority-decrement? uint8 | ||||
| +--rw virtual-ipv6-addresses | ||||
| | +--rw virtual-ipv6-address* [ipv6-address] | ||||
| | +--rw ipv6-address inet:ipv6-address | ||||
| +--ro state? identityref | ||||
| +--ro is-owner? boolean | ||||
| +--ro last-adv-source? inet:ip-address | ||||
| +--ro up-datetime? yang:date-and-time | ||||
| +--ro master-down-interval? uint32 | ||||
| +--ro skew-time? uint32 | ||||
| +--ro last-event? identityref | ||||
| +--ro new-master-reason? | ||||
| new-master-reason-type | ||||
| +--ro statistics | ||||
| +--ro discontinuity-datetime? yang:date-and-time | ||||
| +--ro master-transitions? yang:counter32 | ||||
| +--ro advertisement-recv? yang:counter64 | ||||
| +--ro advertisement-sent? yang:counter64 | ||||
| +--ro interval-errors? yang:counter64 | ||||
| | {validate-interval-errors}? | ||||
| +--ro priority-zero-pkts-rcvd? yang:counter64 | ||||
| +--ro priority-zero-pkts-sent? yang:counter64 | ||||
| +--ro invalid-type-pkts-rcvd? yang:counter64 | ||||
| +--ro address-list-errors? yang:counter64 | ||||
| | {validate-address-list-errors}? | ||||
| +--ro packet-length-errors? yang:counter64 | ||||
| notifications: | ||||
| +---n vrrp-new-master-event | ||||
| | +--ro master-ip-address inet:ip-address | ||||
| | +--ro new-master-reason new-master-reason-type | ||||
| +---n vrrp-protocol-error-event | ||||
| | +--ro protocol-error-reason identityref | ||||
| +---n vrrp-virtual-router-error-event | ||||
| +--ro interface if:interface-ref | ||||
| +--ro (ip-version) | ||||
| | +--:(ipv4) | ||||
| | | +--ro ipv4 | ||||
| | | +--ro vrid leafref | ||||
| | +--:(ipv6) | ||||
| | +--ro ipv6 | ||||
| | +--ro vrid leafref | ||||
| +--ro virtual-router-error-reason identityref | ||||
| Appendix B. Data Tree Example | Appendix A. Data Tree Example | |||
| This section contains an example of an instance data tree in the JSON | This section contains an example of an instance data tree in the JSON | |||
| encoding [RFC7951], containing both configuration and state data. | encoding [RFC7951], containing both configuration and state data. | |||
| Virtual router IP address: 192.0.2.1 | Virtual router IP address: fe80::1 | |||
| +-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
| | | | | | | | | | | |||
| | Router 1 | | Router 2 | | | Router 1 | | Router 2 | | |||
| | | | | | | | | | | |||
| +--------+--------+ +--------+--------+ | +--------+--------+ +--------+--------+ | |||
| |eth1 |eth1 | |eth1 |eth1 | |||
| |192.0.2.11 |192.0.2.12 | |fe80::11 |fe80::12 | |||
| -------+--------------------------+------- | -------+--------------------------+------- | |||
| | | | | | | |||
| |192.0.2.51 |192.0.2.52 | |fe80::51 |fe80::52 | |||
| +--------+--------+ +--------+--------+ | +--------+--------+ +--------+--------+ | |||
| | Host 1 | | Host 2 | | | Host 1 | | Host 2 | | |||
| | Default gateway:| | Default gateway:| | | Default gateway:| | Default gateway:| | |||
| | 192.0.2.1 | | 192.0.2.1 | | | fe80::1 | | fe80::1 | | |||
| +-----------------+ +-----------------+ | +-----------------+ +-----------------+ | |||
| The configuration instance data for Router 1 in the above figure | The configuration instance data for Router 1 in the above figure | |||
| could be as follows: | could be as follows: | |||
| { | { | |||
| "ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
| "interface": [ | "interface": [ | |||
| { | { | |||
| "name": "eth1", | "name": "eth1", | |||
| "type": "iana-if-type:ethernetCsmacd", | ||||
| "description": "An interface with VRRP enabled.", | "description": "An interface with VRRP enabled.", | |||
| "ietf-ip:ipv4": { | "type": "iana-if-type:ethernetCsmacd", | |||
| "ietf-ip:ipv6": { | ||||
| "address": [ | "address": [ | |||
| { | { | |||
| "ip": "192.0.2.11", | "ip": "2001:db8:0:1::1", | |||
| "prefix-length": 24 | "prefix-length": 64 | |||
| }, | ||||
| { | ||||
| "ip": "fe80::11", | ||||
| "prefix-length": 64 | ||||
| } | } | |||
| ], | ], | |||
| "forwarding": true, | "forwarding": true, | |||
| "ietf-vrrp:vrrp": { | "ietf-vrrp:vrrp": { | |||
| "vrrp-instance": [ | "vrrp-instance": [ | |||
| { | { | |||
| "vrid": 1, | "vrid": 1, | |||
| "version": "vrrp-v3", | "version": "vrrp-v3", | |||
| "priority": 200, | "priority": 200, | |||
| "advertise-interval-centi-sec": 50, | "advertise-interval-centi-sec": 50, | |||
| "virtual-ipv4-addresses": { | "virtual-ipv6-addresses": { | |||
| "virtual-ipv4-address": [ | "virtual-ipv6-address": [ | |||
| "ipv4-address": "192.0.2.1" | "ipv6-address": "fe80::1" | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| The cooresponding operational state data for Router 1 could be as | The cooresponding operational state data for Router 1 could be as | |||
| follows: | follows: | |||
| { | { | |||
| "ietf-interfaces:interfaces": { | "ietf-interfaces:interfaces": { | |||
| "interface": [ | "interface": [ | |||
| { | { | |||
| "name": "eth1", | "name": "eth1", | |||
| "description": "An interface with VRRP enabled.", | ||||
| "type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
| "phys-address": "00:0C:42:E5:B1:E9", | "phys-address": "00:00:5e:00:53:01", | |||
| "oper-status": "up", | "oper-status": "up", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-time": "2016-10-24T17:11:27+02:00" | "discontinuity-time": "2016-10-24T17:11:27+02:00" | |||
| }, | }, | |||
| "ietf-ip:ipv4": { | "ietf-ip:ipv6": { | |||
| "forwarding": true, | "forwarding": true, | |||
| "mtu": 1500, | "mtu": 1500, | |||
| "address": [ | "address": [ | |||
| { | { | |||
| "ip": "192.0.2.11", | "ip": "2001:db8:0:1::1", | |||
| "prefix-length": 24 | "prefix-length": 64, | |||
| "origin": "static", | ||||
| "status": "preferred" | ||||
| }, | ||||
| { | ||||
| "ip": "fe80::11", | ||||
| "prefix-length": 64, | ||||
| "origin": "static", | ||||
| "status": "preferred" | ||||
| } | } | |||
| ] | ] | |||
| "ietf-vrrp:vrrp": { | "ietf-vrrp:vrrp": { | |||
| "vrrp-instance": [ | "vrrp-instance": [ | |||
| { | { | |||
| "vrid": 1, | "vrid": 1, | |||
| "version": "vrrp-v3", | "version": "vrrp-v3", | |||
| "log-state-change": false, | "log-state-change": false, | |||
| "preempt": { | "preempt": { | |||
| "enabled": true, | "enabled": true, | |||
| "hold-time": 0 | "hold-time": 0 | |||
| } | } | |||
| "priority": 200, | "priority": 200, | |||
| "accept-mode": false, | "accept-mode": false, | |||
| "advertise-interval-centi-sec": 50, | "advertise-interval-centi-sec": 50, | |||
| "virtual-ipv4-addresses": { | "virtual-ipv6-addresses": { | |||
| "virtual-ipv4-address": [ | "virtual-ipv6-address": [ | |||
| "ipv4-address": "192.0.2.1" | "ipv6-address": "fe80::1" | |||
| ] | ] | |||
| }, | }, | |||
| "state": "master", | "state": "master", | |||
| "is-owner": false, | "is-owner": false, | |||
| "last-adv-source": "192.0.2.11", | "last-adv-source": "fe80::11", | |||
| "up-datetime": "2016-10-24T17:11:27+02:00", | "up-datetime": "2016-10-24T17:11:27+02:00", | |||
| "master-down-interval": 161, | "master-down-interval": 161, | |||
| "skew-time": 11, | "skew-time": 11, | |||
| "last-event": "vrrp-event-interface-up", | "last-event": "vrrp-event-interface-up", | |||
| "new-master-reason": "priority", | "new-master-reason": "priority", | |||
| "statistics": { | "statistics": { | |||
| "discontinuity-datetime": | "discontinuity-datetime": | |||
| "2016-10-24T17:11:27+02:00", | "2016-10-24T17:11:27+02:00", | |||
| "master-transitions": 2, | "master-transitions": 2, | |||
| "advertisement-recv": 20, | "advertisement-recv": 20, | |||
| End of changes. 31 change blocks. | ||||
| 175 lines changed or deleted | 188 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/ | ||||