Network Working Group X. Liu Internet-Draft A. Kyparlis Intended status: Standards Track Ericsson Expires: June 3, 2015 December 3, 2014 A YANG Data Model for Virtual Router Redundancy Protocol (VRRP) draft-liu-rtgwg-yang-vrrp-00.txt Abstract This document describes a data model for Virtual Router Redundancy Protocol (VRRP). Both version 2 and version 3 of VRRP are covered. Status of this Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html This Internet-Draft will expire on January 1, 2015. Copyright Notice Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved. Liu Expires June 3, 2015 [Page 1] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Table of Contents 1. Introduction...................................................2 1.1. Terminology...............................................2 2. VRRP YANG model overview.......................................3 3. VRRP YANG module...............................................6 4. Security Considerations.......................................21 5. References....................................................21 5.1. Normative References.....................................21 5.2. Informative References...................................21 1. Introduction This document introduces a YANG [RFC6020] data model for Virtual Router Redundancy Protocol (VRRP) [RFC3768][RFC5798]. VRRP provides higher resiliency by specifying an election protocol that dynamically assigns responsibility for a virtual router to one of the VRRP routers on a LAN. This YNAG model supports both version 2 and version 3 of VRRP. VRRP version 2 defined in [RFC3768] supports IPv4. VRRP version 3 defined in [RFC5798] supports both IPv4 and IPv6. 1.1. Terminology The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, [RFC2119]. The following terms are defined in [RFC6020] and are not redefined here: o augment o data model o data node Liu Expires June 3, 2015 [Page 2] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 2. VRRP YANG model overview This document defines the YANG module "ietf-vrrp", which has the following structure: module: ietf-vrrp augment /if:interfaces/if:interface/ip:ipv4: +--rw vrrp +--rw vrrp-instance* [vrid] +--rw vrid uint8 +--rw version? enumeration +--rw (advertise-interval-choice)? | +--:(v2) | | +--rw advertise-interval-sec? uint8 | +--:(v3) | +--rw advertise-interval-centi-sec? uint16 +--rw is-owner? boolean +--rw init-wait? uint16 +--rw log-state-change? boolean +--rw preempt! | +--rw hold-time? uint16 +--rw priority? uint8 +--rw accept-mode? boolean +--rw virtual-ipv4-addresses +--rw virtual-ipv4-address* [ipv4-address] +--rw ipv4-address inet:ipv4-address augment /if:interfaces/if:interface/ip:ipv6: +--rw vrrp +--rw vrrp-instance* [vrid] +--rw vrid uint8 +--rw version? enumeration +--rw (advertise-interval-choice)? | +--:(v2) | | +--rw advertise-interval-sec? uint8 | +--:(v3) | +--rw advertise-interval-centi-sec? uint16 +--rw is-owner? boolean +--rw init-wait? uint16 +--rw log-state-change? boolean +--rw preempt! | +--rw hold-time? uint16 +--rw priority? uint8 Liu Expires June 3, 2015 [Page 3] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 +--rw accept-mode? boolean +--rw virtual-ipv4-addresses +--rw virtual-ipv4-address* [ipv4-address] +--rw ipv4-address inet:ipv4-address augment /if:interfaces-state/if:interface/ip:ipv4: +--ro vrrp +--ro vrrp-instance* [vrid] +--ro vrid uint8 +--ro version? enumeration +--ro (advertise-interval-choice)? | +--:(v2) | | +--ro advertise-interval-sec? uint8 | +--:(v3) | +--ro advertise-interval-centi-sec? uint16 +--ro is-owner? boolean +--ro init-wait? uint16 +--ro log-state-change? boolean +--ro preempt! | +--ro hold-time? uint16 +--ro priority? uint8 +--ro accept-mode? boolean +--ro virtual-ipv4-addresses | +--ro virtual-ipv4-address* [ipv4-address] | +--ro ipv4-address inet:ipv4-address +--ro state? enumeration +--ro last-adv-source? inet:ip-address +--ro up-time? yang:date-and-time +--ro master-down-interval? uint32 +--ro skew-time? uint32 +--ro last-event? string +--ro statistics +--ro master-transitions? yang:counter32 +--ro new-master-reason? enumeration +--ro advertisement-recv? yang:counter64 +--ro advertisement-sent? yang:counter64 +--ro interval-errors? yang:counter64 +--ro ip-ttl-errors? yang:counter64 +--ro riority-zero-pkts-rcvd? yang:counter64 +--ro riority-zero-pkts-sent? yang:counter64 +--ro invalid-type-pkts-rcvd? yang:counter64 +--ro address-list-errors? yang:counter64 Liu Expires June 3, 2015 [Page 4] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 +--ro packet-length-errors? yang:counter64 +--ro wrong-owner-errors? yang:counter64 +--ro self-orig-pkt-recv? yang:counter64 augment /if:interfaces-state/if:interface/ip:ipv6: +--ro vrrp +--ro vrrp-instance* [vrid] +--ro vrid uint8 +--ro version? enumeration +--ro (advertise-interval-choice)? | +--:(v2) | | +--ro advertise-interval-sec? uint8 | +--:(v3) | +--ro advertise-interval-centi-sec? uint16 +--ro is-owner? boolean +--ro init-wait? uint16 +--ro log-state-change? boolean +--ro preempt! | +--ro hold-time? uint16 +--ro priority? uint8 +--ro accept-mode? boolean +--ro virtual-ipv6-addresses | +--ro virtual-ipv6-address* [ipv6-address] | +--ro ipv6-address inet:ipv6-address +--ro state? enumeration +--ro last-adv-source? inet:ip-address +--ro up-time? yang:date-and-time +--ro master-down-interval? uint32 +--ro skew-time? uint32 +--ro last-event? string +--ro statistics +--ro master-transitions? yang:counter32 +--ro new-master-reason? enumeration +--ro advertisement-recv? yang:counter64 +--ro advertisement-sent? yang:counter64 +--ro interval-errors? yang:counter64 +--ro ip-ttl-errors? yang:counter64 +--ro riority-zero-pkts-rcvd? yang:counter64 +--ro riority-zero-pkts-sent? yang:counter64 +--ro invalid-type-pkts-rcvd? yang:counter64 +--ro address-list-errors? yang:counter64 +--ro packet-length-errors? yang:counter64 Liu Expires June 3, 2015 [Page 5] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 +--ro wrong-owner-errors? yang:counter64 +--ro self-orig-pkt-recv? yang:counter64 rpcs: +---x clear-vrrp-statistics +--ro input +--ro clear-type? enumeration +--ro interface? if:interface-ref +--ro ip-version? enumeration +--ro vrid-v4? leafref +--ro vrid-v6? leafref 3. VRRP YANG module file "ietf-vrrp@2014-11-24.yang" module ietf-vrrp { namespace "urn:ietf:params:xml:ns:yang:ietf-vrrp"; // replace with IANA namespace when assigned prefix vrrp; import ietf-inet-types { prefix "inet"; } import ietf-yang-types { prefix "yang"; } import ietf-interfaces { prefix if; } import ietf-ip { prefix ip; } organization "TBD"; contact "TBD"; description "This YANG module defines a model for managing Virtual Router Redundancy Protocol (VRRP) version 2 and version 3."; Liu Expires June 3, 2015 [Page 6] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 revision "2014-11-24" { description "Initial revision"; reference "RFC 2787: Definitions of Managed Objects for the Virtual Router Redundancy Protocol. RFC 3768: Virtual Router Redundancy Protocol (VRRP). RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3. RFC 6527: Definitions of Managed Objects for the Virtual Router Redundancy Protocol Version 3 (VRRPv3)."; } grouping vrrp-common-attributes { description "Goup of VRRP attributes common to version 2 and version 3"; leaf vrid { type uint8 { range 1..255; } description "Virtual router ID."; } leaf version { type enumeration { enum 2 { description "VRRP version 2."; } enum 3 { description "VRRP version 3."; } } description "Version 2 or version 3 of VRRP."; } choice advertise-interval-choice { description "The options of advertisement interval at which VRRPv2 or VRRPv3 advertisements are sent from the specified interface."; Liu Expires June 3, 2015 [Page 7] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 case v2 { when "version = 2" { description "Applicable only to version 2."; } leaf advertise-interval-sec { type uint8 { range 1..254; } default 1; description "Configures the interval at which Virtual Router Redundancy Protocol Version 2 (VRRPv2) advertisements are sent from the specified interface."; } } case v3 { when "version = 3" { description "Applicable only to version 3."; } leaf advertise-interval-centi-sec { type uint16 { range 1..4095; } units centiseconds; default 100; description "Configures the interval at which Virtual Router Redundancy Protocol version 3 (VRRPv3) advertisements are sent from the specified interface."; } } } // advertise-interval-choice leaf is-owner { type boolean; description "Set to true if this VRRP router is owner."; } Liu Expires June 3, 2015 [Page 8] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 leaf init-wait { type uint16 { range 1..3600; } units seconds; description "Time, in seconds, that a backup router in Initialize state delays before transitioning to Backup state."; } leaf log-state-change { type boolean; description "Generates VRRP state change messages each time the VRRP instance changes state (from up to down or down to up)."; } container preempt { presence "Present if preempt is enabled."; description "Enables a higher priority Virtual Router Redundancy Protocol (VRRP) backup router to preempt a lower priority VRRP master."; leaf hold-time { type uint16; description "Hold time, in seconds, for which a higher priority VRRP backup router must wait before preempting a lower priority VRRP master."; } } leaf priority { type uint8 { range 1..254; } default 100; description "Configures the Virtual Router Redundancy Protocol (VRRP) election priority for the backup virtual router."; } Liu Expires June 3, 2015 [Page 9] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 } // vrrp-common-attributes grouping vrrp-v3-attributes { description "Goup of VRRP versin 3 attributes."; leaf accept-mode { type boolean; description "Configures a virtual router in Master state to accept packets addressed to the IPv4 or IPv6 address of the owner even if it is not the IPv4 or IPv6 address owner."; } } grouping vrrp-ipv4-attributes { description "Goup of VRRP attributes for IPv4."; uses vrrp-common-attributes; uses vrrp-v3-attributes { when "version = 3" { description "Applicable only to version 3."; } } container virtual-ipv4-addresses { description "Configures the virtual IP address for the Virtual Router Redundancy Protocol (VRRP) interface."; list virtual-ipv4-address { key "ipv4-address"; max-elements 16; description "Virtual IP addresses for a single VRRP instance. For a VRRP owner router, the virtual address must match one of the interface IP addresses on which the owner VRRP is configured."; Liu Expires June 3, 2015 [Page 10] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 leaf ipv4-address { type inet:ipv4-address; description "Virtual IPv4 address."; } } // virtual-ipv4-address } // virtual-ipv4-addresses } // grouping vrrp-ipv4-attributes grouping vrrp-ipv6-attributes { description "Goup of VRRP attributes for IPv6."; uses vrrp-common-attributes; uses vrrp-v3-attributes { when "version = 3" { description "Uses VRRP version 3 attributes."; } } // uses vrrp-v3-attributes container virtual-ipv6-addresses { description "Configures the virtual IP address for the Virtual Router Redundancy Protocol (VRRP) interface."; list virtual-ipv6-address { key "ipv6-address"; max-elements 2; description "Two IPv6 addresses are allowed. The first one must be a link-local address and the second one can be a link-local or global address."; leaf ipv6-address { type inet:ipv6-address; description "Virtual IPv4 address."; } } // virtual-ipv6-address } // virtual-ipv6-addresses } // grouping vrrp-ipv6-attributes Liu Expires June 3, 2015 [Page 11] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 grouping vrrp-state-attributes { description "Goup of VRRP state attributes."; leaf state { type enumeration { enum none { description "Unknown state."; } enum init { description "Not initialized. Not ready to process events."; } enum wait { description "Indicates that all the virtual router is waiting for a startup event."; } enum backup { description "Indicates the virtual router is monitoring the availability of the master router."; } enum master { description "indicates that the virtual router is forwarding packets for IP addresses that are associated with this router."; } } description "Operational state."; } leaf last-adv-source { type inet:ip-address; description "Last advertised IPv4/IPv6 source address"; } Liu Expires June 3, 2015 [Page 12] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 leaf up-time { type yang:date-and-time; description "The time when this virtual router oper-state transitioned out of init state."; } leaf master-down-interval { type uint32; units centiseconds; description "Time interval for Backup to declare Master down."; } leaf skew-time { type uint32; units microseconds; description "Calculated based on the priority and adv interval configuration command parameters. See RFC 3768."; } leaf last-event { type string; description "Last reported event."; } container statistics { description "VRRP statistics."; leaf master-transitions { type yang:counter32; description "The total number of times that this virtual router's state has transitioned to master"; } leaf new-master-reason { Liu Expires June 3, 2015 [Page 13] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 type enumeration { enum not-master { description "The virtual router was never transitioned to master state,"; } enum priority { description "Priority was higher."; } enum preempted { description "The master was preempted."; } enum master-no-response { description "Previous master did not response."; } } description "Indicates the reason for the virtual router to transition to master state."; } leaf advertisement-recv { type yang:counter64; description "The total number of VRRP advertisements received by this virtual router."; } leaf advertisement-sent { type yang:counter64; description "The total number of VRRP advertisements sent by this virtual router."; } leaf interval-errors { type yang:counter64; description "The total number of VRRP advertisement packets received for which the advertisement interval is different than the one configured for the local Liu Expires June 3, 2015 [Page 14] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 virtual router"; } leaf ip-ttl-errors { type yang:counter64; description "The total number of VRRP packets received by the virtual router with IP TTL (Time-To-Live) not equal to 255"; } leaf riority-zero-pkts-rcvd { type yang:counter64; description "The total number of VRRP packets received by the virtual router with a priority of 0."; } leaf riority-zero-pkts-sent { type yang:counter64; description "The total number of VRRP packets sent by the virtual router with a priority of 0."; } leaf invalid-type-pkts-rcvd { type yang:counter64; description "The number of VRRP packets received by the virtual router with an invalid value in the 'type' field."; } leaf address-list-errors { type yang:counter64; description "The total number of packets received for which the address list does not match the locally configured list for the virtual router."; } leaf packet-length-errors { Liu Expires June 3, 2015 [Page 15] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 type yang:counter64; description "The total number of packets received with a packet length less than the length of the VRRP header."; } leaf wrong-owner-errors { type yang:counter64; description "The number of VRRP packets received by the virtual router with an invalid owner."; } leaf self-orig-pkt-recv { type yang:counter64; description "The number of VRRP packets received by the virtual router originated by itself."; } } // container statistics } // grouping vrrp-state-attributes augment "/if:interfaces/if:interface/ip:ipv4" { description "Augment IPv4 interface."; container vrrp { description "Configures the Virtual Router Redundancy Protocol (VRRP) version 2 for IPv4."; list vrrp-instance { key vrid; description "Defines a virtual router, identified by a virtual router identifier (VRID), within IPv4 address space."; uses vrrp-ipv4-attributes; } } } // augment ipv4 Liu Expires June 3, 2015 [Page 16] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 augment "/if:interfaces/if:interface/ip:ipv6" { description "Augment IPv6 interface."; container vrrp { description "Configures the Virtual Router Redundancy Protocol (VRRP) version 2 or version 3 for IPv6."; list vrrp-instance { key vrid; description "Defines a virtual router, identified by a virtual router identifier (VRID), within IPv6 address space."; uses vrrp-ipv4-attributes; } // list vrrp-instance } // container vrrp } // augment ipv6 augment "/if:interfaces-state/if:interface/ip:ipv4" { description "Augment IPv4 interface state."; container vrrp { description "State information of the Virtual Router Redundancy Protocol (VRRP) version 2 for IPv4."; list vrrp-instance { key vrid; description "States of a virtual router, identified by a virtual router identifier (VRID), within IPv4 address space."; uses vrrp-ipv4-attributes; uses vrrp-state-attributes; } // list vrrp-instance } } augment "/if:interfaces-state/if:interface/ip:ipv6" { description "Augment IPv6 interface state."; Liu Expires June 3, 2015 [Page 17] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 container vrrp { description "State information of the Virtual Router Redundancy Protocol (VRRP) version 2 or version 3 for IPv6."; list vrrp-instance { key vrid; description "States of a virtual router, identified by a virtual router identifier (VRID), within IPv6 address space."; uses vrrp-ipv6-attributes; uses vrrp-state-attributes; } // list vrrp-instance } } rpc clear-vrrp-statistics { description "Clears Virtual Router Redundancy Protocol (VRRP) statistics."; input { description "Specify the information to be cleared"; leaf clear-type { type enumeration { enum all { description "Clears all VRRP statistics."; } enum global { description "Clears global VRRP statistics."; } enum all-interface { description "Clears VRRP statistics for all interfaces."; } enum interface { Liu Expires June 3, 2015 [Page 18] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 description "Clears VRRP statistics for the specified interface."; } enum virtual-router { description "Clears VRRP statistics for the specified virtual router."; } enum scheduler { description "Clear VRRP scheduler statistics."; } } description "Specify the type of information to be cleared."; } leaf interface { when "../clear-type = interface or " +"../clear-type = virtual-router" { description "Valid only when clear-type is interface."; } type if:interface-ref; description "Specify the interface whose statistics to be cleared."; } leaf ip-version { when "../clear-type = virtual-router" { description "Valid only when clear-type is virtual-router."; } type enumeration { enum 4 { description "IPv4"; } enum 6 { description "IPv6"; } } description "Specify the IP version."; Liu Expires June 3, 2015 [Page 19] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 } leaf vrid-v4 { when "'../clear-type = virtual-router' and" + "'../ip-version = 4'" { description "Valid only when clear-type is virtual-router."; } type leafref { path "/if:interfaces/if:interface" + "[if:name = current()/../interface]/ip:ipv4/vrrp/" + "vrrp-instance/vrid"; } description "Specify the virtual router whose statistics to be cleared."; } leaf vrid-v6 { when "'../clear-type = virtual-router' and" + "'../ip-version = 4'" { description "Valid only when clear-type is virtual-router."; } type leafref { path "/if:interfaces/if:interface" + "[if:name = current()/../interface]/ip:ipv6/vrrp/" + "vrrp-instance/vrid"; } description "Specify the virtual router whose statistics to be cleared."; } } // input } // rpc clear-vrrp-statistics } Liu Expires June 3, 2015 [Page 20] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 4. Security Considerations The abstract protocol used for sending the topology data MUST support authentication and SHOULD support encryption. The data-model by itself does not create any security implications. 5. References 5.1. Normative References [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, October 2010. [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, October 2010. [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, "Network Configuration Protocol (NETCONF)", RFC 6241, June 2011. [RFC2234] Crocker, D. and Overell, P.(Editors), "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, Internet Mail Consortium and Demon Internet Ltd., November 1997. [RFC2338] Knight, S., Weaver, D., Whipple, D., Hinden, R., Mitzel, D., Hunt, P., Higginson, P., Shand, M., and A. Lindem, "Virtual Router Redundancy Protocol", RFC 2338, April 1998. [RFC2787] Jewell, B. and D. Chuang, "Definitions of Managed Objects for the Virtual Router Redundancy Protocol", RFC 2787, March 2000. [RFC5798] Nadas, S., Ed., "Virtual Router Redundancy Protocol (VRRP) Version 3 for IPv4 and IPv6", RFC 5798, March 2010. [RFC6527] Tata, K., Ed., "Definitions of Managed Objects for the Virtual Router Redundancy Protocol Version 3 (VRRPv3)", RFC 6527, March 2012. 5.2. Informative References [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG Data Model Documents", RFC 6087, January 2011. Liu Expires June 3, 2015 [Page 21] Internet-Draft draft-liu-rtgwg-yang-vrrp-00.txt December 2014 Authors' Addresses Xufeng Liu Ericsson Email: xufeng.liu@ericsson.com Athanasios Kyparlis Ericsson Email: athanasios.kyparlis@ericsson.com Liu Expires June 3, 2015 [Page 22]