draft-ietf-rtgwg-yang-vrrp-00.txt   draft-ietf-rtgwg-yang-vrrp-01.txt 
Network Working Group X. Liu, Editor Network Working Group X. Liu, Editor
Internet-Draft A. Kyparlis Internet-Draft A. Kyparlis
Intended status: Standards Track R. Parikh Intended status: Standards Track Kuatro Technologies
Expires: December 27, 2016 Ericsson Expires: June 1, 2017 R. Parikh
VMware
A. Lindem A. Lindem
Cisco Systems Cisco Systems
M. Zhang M. Zhang
Huawei Technologies Huawei Technologies
June 27, 2016 December 1, 2016
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-00.txt draft-ietf-rtgwg-yang-vrrp-01
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 41 skipping to change at page 1, line 42
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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html http://www.ietf.org/shadow.html
This Internet-Draft will expire on December 27, 2016. This Internet-Draft will expire on June 1, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2016 IETF Trust and the persons identified as the Copyright (c) 2016 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 21 skipping to change at page 2, line 26
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. Introduction...................................................2 1. Introduction...................................................2
1.1. Terminology...............................................2 1.1. Terminology...............................................2
2. VRRP YANG model overview.......................................3 2. VRRP YANG model overview.......................................3
3. VRRP YANG module...............................................7 3. VRRP YANG module...............................................7
4. Security Considerations.......................................28 4. IANA Considerations...........................................29
5. References....................................................28 5. Security Considerations.......................................29
5.1. Normative References.....................................28 6. References....................................................30
5.2. Informative References...................................29 6.1. Normative References.....................................30
6.2. Informative References...................................30
1. Introduction 1. Introduction
This document introduces a YANG [RFC6020] data model for Virtual This document introduces a YANG [RFC6020] data model for Virtual
Router Redundancy Protocol (VRRP) [RFC3768][RFC5798]. VRRP provides Router Redundancy Protocol (VRRP) [RFC3768][RFC5798]. VRRP provides
higher resiliency by specifying an election protocol that dynamically higher resiliency by specifying an election protocol that dynamically
assigns responsibility for a virtual router to one of the VRRP assigns responsibility for a virtual router to one of the VRRP
routers on a LAN. routers on a LAN.
This YANG model supports both version 2 and version 3 of VRRP. VRRP This YANG model supports both version 2 and version 3 of VRRP. VRRP
skipping to change at page 7, line 14 skipping to change at page 7, line 21
| +--ro protocol-error-reason? enumeration | +--ro protocol-error-reason? enumeration
+---n vrrp-virtual-router-error-event +---n vrrp-virtual-router-error-event
+--ro interface? if:interface-ref +--ro interface? if:interface-ref
+--ro ip-version? enumeration +--ro ip-version? enumeration
+--ro vrid-v4? leafref +--ro vrid-v4? leafref
+--ro vrid-v6? leafref +--ro vrid-v6? leafref
+--ro virtual-router-error-reason? enumeration +--ro virtual-router-error-reason? enumeration
3. VRRP YANG module 3. VRRP YANG module
<CODE BEGINS> file "ietf-vrrp@2015-09-28.yang" <CODE BEGINS> file "ietf-vrrp@2016-12-01.yang"
module ietf-vrrp { module ietf-vrrp {
namespace "urn:ietf:params:xml:ns:yang:ietf-vrrp"; namespace "urn:ietf:params:xml:ns:yang:ietf-vrrp";
// replace with IANA namespace when assigned prefix "vrrp";
prefix vrrp;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
import ietf-yang-types { import ietf-yang-types {
prefix "yang"; prefix "yang";
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix "if";
} }
import ietf-ip { import ietf-ip {
prefix ip; prefix "ip";
} }
organization "TBD"; organization
contact "TBD"; "IETF Routing Area Working Group (RTGWG)";
contact
"WG Web: <https://datatracker.ietf.org/wg/rtgwg/>
WG List: <mailto:rtgwg@ietf.org>
WG Chair: Jeff Tantsura
<mailto:jefftant.ietf@gmail.com>
WG Chair: Chris Bowers
<mailto:cbowers@juniper.net>
Editor: Xufeng Liu
<mailto:xliu@kuatrotech.com>
Editor: Athanasios Kyparlis
<mailto:akyparlis@kuatrotech.com>
Editor: Ravi Parikh
<mailto:parikhr@vmware.com>
Editor: Acee Lindem
<mailto:acee@cisco.com>
Editor: Mingui Zhang
<mailto:zhangmingui@huawei.com>";
description description
"This YANG module defines a model for managing Virtual Router "This YANG module defines a model for managing Virtual Router
Redundancy Protocol (VRRP) version 2 and version 3."; Redundancy Protocol (VRRP) version 2 and version 3.";
revision "2015-09-28" { revision 2016-12-01 {
description "Initial revision"; description "Initial revision";
reference reference
"RFC 2787: Definitions of Managed Objects for the Virtual "RFC 2787: Definitions of Managed Objects for the Virtual
Router Redundancy Protocol. Router Redundancy Protocol.
RFC 3768: Virtual Router Redundancy Protocol (VRRP). RFC 3768: Virtual Router Redundancy Protocol (VRRP).
RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version RFC 5798: Virtual Router Redundancy Protocol (VRRP) Version 3.
3.
RFC 6527: Definitions of Managed Objects for the Virtual RFC 6527: Definitions of Managed Objects for the Virtual
Router Redundancy Protocol Version 3 (VRRPv3)."; Router Redundancy Protocol Version 3 (VRRPv3).";
} }
/* /*
* Features * Features
*/ */
feature validate-interval-errors { feature validate-interval-errors {
description description
"This feature indicates that the system validates that "This feature indicates that the system validates that
the advertisement interval from advertisement packets the advertisement interval from advertisement packets
received is the same as the one configured for the local received is the same as the one configured for the local
VRRP router."; VRRP router.";
} }
feature validate-address-list-errors { feature validate-address-list-errors {
description description
"This feature indicates that the system validates that "This feature indicates that the system validates that
the address list from received packets matches the the address list from received packets matches the
locally configured list for the VRRP router."; locally configured list for the VRRP router.";
} }
/* /*
* Typedefs * Typedefs
*/ */
typedef new-master-reason-type { typedef new-master-reason-type {
type enumeration { type enumeration {
enum not-master { enum not-master {
description description
"The virtual router has never transitioned to master "The virtual router has never transitioned to master
state,"; state,";
} }
enum priority { enum priority {
description "Priority was higher."; description "Priority was higher.";
} }
enum preempted { enum preempted {
description "The master was preempted."; description "The master was preempted.";
} }
enum master-no-response { enum master-no-response {
description "Previous master did not respond."; description "Previous master did not respond.";
} }
} }
description description
"The reason for the virtual router to transition to master "The reason for the virtual router to transition to master
skipping to change at page 9, line 15 skipping to change at page 9, line 44
} }
enum preempted { enum preempted {
description "The master was preempted."; description "The master was preempted.";
} }
enum master-no-response { enum master-no-response {
description "Previous master did not respond."; description "Previous master did not respond.";
} }
} }
description description
"The reason for the virtual router to transition to master "The reason for the virtual router to transition to master
state."; state.";
} // new-master-reason-type } // new-master-reason-type
/* /*
* Identities * Identities
*/ */
identity vrrp-state-type { identity vrrp-state-type {
description description
"The type to indicate the state of a virtual router."; "The type to indicate the state of a virtual router.";
} }
identity initialize { identity initialize {
base vrrp-state-type; base vrrp-state-type;
description description
"Indicates that the virtual router is waiting "Indicates that the virtual router is waiting
for a startup event."; for a startup event.";
} }
identity backup { identity backup {
base vrrp-state-type; base vrrp-state-type;
description description
"Indicates that the virtual router is monitoring the "Indicates that the virtual router is monitoring the
availability of the master router."; availability of the master router.";
} }
identity master { identity master {
base vrrp-state-type; base vrrp-state-type;
description description
"Indicates that the virtual router is forwarding "Indicates that the virtual router is forwarding
packets for IP addresses that are associated with packets for IP addresses that are associated with
this virtual router."; this virtual router.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping vrrp-common-attributes { grouping vrrp-common-attributes {
description description
"Group of VRRP attributes common to version 2 and version 3"; "Group of VRRP attributes common to version 2 and version 3";
leaf vrid { leaf vrid {
type uint8 { type uint8 {
skipping to change at page 10, line 35 skipping to change at page 11, line 25
description "VRRP version 3."; description "VRRP version 3.";
} }
} }
description "Version 2 or version 3 of VRRP."; description "Version 2 or version 3 of VRRP.";
} }
leaf log-state-change { leaf log-state-change {
type boolean; type boolean;
description description
"Generates VRRP state change messages each time the VRRP "Generates VRRP state change messages each time the VRRP
instance changes state (from up to down or down to up)."; instance changes state (from up to down or down to up).";
} }
container preempt { container preempt {
presence "Present if preempt is enabled."; presence "Present if preempt is enabled.";
description description
"Enables a higher priority Virtual Router Redundancy "Enables a higher priority Virtual Router Redundancy
Protocol (VRRP) backup router to preempt a lower priority Protocol (VRRP) backup router to preempt a lower priority
VRRP master."; VRRP master.";
leaf hold-time { leaf hold-time {
type uint16; type uint16;
description description
"Hold time, in seconds, for which a higher priority VRRP "Hold time, in seconds, for which a higher priority VRRP
backup router must wait before preempting a lower priority backup router must wait before preempting a lower priority
VRRP master."; VRRP master.";
} }
} }
leaf priority { leaf priority {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
default 100; default 100;
description description
"Configures the Virtual Router Redundancy Protocol (VRRP) "Configures the Virtual Router Redundancy Protocol (VRRP)
election priority for the backup virtual router."; election priority for the backup virtual router.";
} }
} // vrrp-common-attributes } // vrrp-common-attributes
grouping vrrp-v3-attributes { grouping vrrp-v3-attributes {
description description
"Group of VRRP versin 3 attributes."; "Group of VRRP version 3 attributes.";
leaf accept-mode { leaf accept-mode {
type boolean; type boolean;
default false; default false;
description description
"Controls whether a virtual router in Master state will "Controls whether a virtual router in Master state will
accept packets addressed to the address owner's IPvX address accept packets addressed to the address owner's IPvX address
as its own if it is not the IPvX address owner. The default as its own if it is not the IPvX address owner. The default
is false. Deployments that rely on, for example, pinging the is false. Deployments that rely on, for example, pinging the
address owner's IPvX address may wish to configure address owner's IPvX address may wish to configure
accept-mode to true. accept-mode to true.
Note: IPv6 Neighbor Solicitations and Neighbor Advertisements Note: IPv6 Neighbor Solicitations and Neighbor
MUST NOT be dropped when accept-mode is false."; Advertisements MUST NOT be dropped when accept-mode is
false.";
} }
} }
grouping vrrp-ipv4-attributes { grouping vrrp-ipv4-attributes {
description description
"Group of VRRP attributes for IPv4."; "Group of VRRP attributes for IPv4.";
uses vrrp-common-attributes; uses vrrp-common-attributes;
uses vrrp-v3-attributes { uses vrrp-v3-attributes {
skipping to change at page 12, line 13 skipping to change at page 13, line 4
description description
"Group of VRRP attributes for IPv4."; "Group of VRRP attributes for IPv4.";
uses vrrp-common-attributes; uses vrrp-common-attributes;
uses vrrp-v3-attributes { uses vrrp-v3-attributes {
when "version = 3" { when "version = 3" {
description "Applicable only to version 3."; description "Applicable only to version 3.";
} }
} }
choice advertise-interval-choice { choice advertise-interval-choice {
description description
"The options for the advertisement interval at which VRRPv2 "The options for the advertisement interval at which VRRPv2
or VRRPv3 advertisements are sent from the specified or VRRPv3 advertisements are sent from the specified
interface."; interface.";
case v2 { case v2 {
when "version = 2" { when "version = '2'" {
description "Applicable only to version 2."; description "Applicable only to version 2.";
} }
leaf advertise-interval-sec { leaf advertise-interval-sec {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
default 1; default 1;
description description
"Configures the interval that Virtual Router "Configures the interval that Virtual Router
Redundancy Protocol Version 2 (VRRPv2) advertisements Redundancy Protocol Version 2 (VRRPv2) advertisements
are sent from the specified interface."; are sent from the specified interface.";
} }
} }
case v3 { case v3 {
when "version = 3" { when "version = '3'" {
description "Applicable only to version 3."; description "Applicable only to version 3.";
} }
leaf advertise-interval-centi-sec { leaf advertise-interval-centi-sec {
type uint16 { type uint16 {
range 1..4095; range 1..4095;
} }
units centiseconds; units centiseconds;
default 100; default 100;
description description
"Configures the interval that Virtual Router "Configures the interval that Virtual Router
Redundancy Protocol version 3 (VRRPv3) advertisements Redundancy Protocol version 3 (VRRPv3) advertisements
are sent from the specified interface."; are sent from the specified interface.";
} }
} }
} // advertise-interval-choice } // advertise-interval-choice
container track { container track {
description description
"Enables the specified VRRP instance to track interfaces "Enables the specified VRRP instance to track interfaces
or networks."; or networks.";
container interfaces { container interfaces {
description description
"Enables the specified Virtual Router Redundancy Protocol "Enables the specified Virtual Router Redundancy Protocol
version 2 (VRRP) or version 3 (VRRPv3) instance to track version 2 (VRRP) or version 3 (VRRPv3) instance to track
an interface."; an interface.";
list interface { list interface {
key "interface"; key "interface";
description description
"Interface to track."; "Interface to track.";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
must "../../../../../../../ipv4" { must "/if:interfaces/if:interface[if:name=.]/ip:ipv4" {
description "Interface is IPv4."; description "Interface is IPv4.";
} }
description description
"Interface to track."; "Interface to track.";
} }
leaf priority-decrement { leaf priority-decrement {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
description description
"Specifies how much to decrement the priority of the "Specifies how much to decrement the priority of the
VRRP instance if the interface goes down."; VRRP instance if the interface goes down.";
} }
} // track-interface } // track-interface
} // track-interfaces } // track-interfaces
container networks { container networks {
description description
"Enables the backup Virtual Router Redundancy Protocol "Enables the backup Virtual Router Redundancy Protocol
version 2 (VRRP) or version 3 (VRRPv3) router to track a version 2 (VRRP) or version 3 (VRRPv3) router to track a
specified network through the IP network prefix of that specified network through the IP network prefix of that
network."; network.";
list network { list network {
key "network"; key "network";
description description
"Enables the specified Virtual Router Redundancy "Enables the specified Virtual Router Redundancy
Protocol version 2 (VRRP) or version 3 (VRRPv3) Protocol version 2 (VRRP) or version 3 (VRRPv3)
instance to track an interface."; instance to track an interface.";
leaf network { leaf network {
type inet:ipv4-prefix; type inet:ipv4-prefix;
description description
"Network to track."; "Network to track.";
} }
leaf priority-decrement { leaf priority-decrement {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
default 10; default 10;
description description
"Specifies how much to decrement the priority of the "Specifies how much to decrement the priority of the
backup VRRP router if there is a failure in the IP backup VRRP router if there is a failure in the IP
network."; network.";
} }
} // track-network } // track-network
} // track-networks } // track-networks
} // track } // track
container virtual-ipv4-addresses { container virtual-ipv4-addresses {
description description
"Configures the virtual IP address for the Virtual Router "Configures the virtual IP address for the Virtual Router
Redundancy Protocol (VRRP) interface."; Redundancy Protocol (VRRP) interface.";
list virtual-ipv4-address { list virtual-ipv4-address {
key "ipv4-address"; key "ipv4-address";
max-elements 16; max-elements 16;
description description
"Virtual IP addresses for a single VRRP instance. For a "Virtual IP addresses for a single VRRP instance. For a
VRRP owner router, the virtual address must match one VRRP owner router, the virtual address must match one
of the IP addresses configured on the interface of the IP addresses configured on the interface
corresponding to the virtual router."; corresponding to the virtual router.";
leaf ipv4-address { leaf ipv4-address {
type inet:ipv4-address; type inet:ipv4-address;
description description
"Virtual IPv4 address."; "Virtual IPv4 address.";
} }
} // virtual-ipv4-address } // virtual-ipv4-address
} // virtual-ipv4-addresses } // virtual-ipv4-addresses
} // grouping vrrp-ipv4-attributes } // grouping vrrp-ipv4-attributes
grouping vrrp-ipv6-attributes { grouping vrrp-ipv6-attributes {
description description
"Group of VRRP attributes for IPv6."; "Group of VRRP attributes for IPv6.";
uses vrrp-common-attributes; uses vrrp-common-attributes;
skipping to change at page 15, line 43 skipping to change at page 16, line 32
} // uses vrrp-v3-attributes } // uses vrrp-v3-attributes
leaf advertise-interval-centi-sec { leaf advertise-interval-centi-sec {
type uint16 { type uint16 {
range 1..4095; range 1..4095;
} }
units centiseconds; units centiseconds;
default 100; default 100;
description description
"Configures the interval that Virtual Router "Configures the interval that Virtual Router
Redundancy Protocol version 3 (VRRPv3) advertisements Redundancy Protocol version 3 (VRRPv3) advertisements
are sent from the specified interface."; are sent from the specified interface.";
} }
container track { container track {
description description
"Enables the specified VRRP instance to track interfaces "Enables the specified VRRP instance to track interfaces
or networks."; or networks.";
container interfaces { container interfaces {
description description
"Enables the specified Virtual Router Redundancy Protocol "Enables the specified Virtual Router Redundancy Protocol
version 2 (VRRP) or version 3 (VRRPv3) instance to track version 2 (VRRP) or version 3 (VRRPv3) instance to track
an interface."; an interface.";
list interface { list interface {
key "interface"; key "interface";
description description
"Interface to track."; "Interface to track.";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
must "../../../../../../../ipv6" { must "/if:interfaces/if:interface[if:name=.]/ip:ipv6" {
description "Interface is IPv6."; description "Interface is IPv6.";
} }
description description
"Interface to track."; "Interface to track.";
} }
leaf priority-decrement { leaf priority-decrement {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
description description
"Specifies how much to decrement the priority of the "Specifies how much to decrement the priority of the
VRRP instance if the interface goes down."; VRRP instance if the interface goes down.";
} }
} // track-interface } // track-interface
} // track-interfaces } // track-interfaces
container networks { container networks {
description description
"Enables the backup Virtual Router Redundancy Protocol "Enables the backup Virtual Router Redundancy Protocol
version 2 (VRRP) or version 3 (VRRPv3) router to track a version 2 (VRRP) or version 3 (VRRPv3) router to track a
specified network through the IP network prefix of that specified network through the IP network prefix of that
network."; network.";
list network { list network {
key "network"; key "network";
description description
"Enables the specified Virtual Router Redundancy "Enables the specified Virtual Router Redundancy
Protocol version 2 (VRRP) or version 3 (VRRPv3) Protocol version 2 (VRRP) or version 3 (VRRPv3)
instance to track an interface."; instance to track an interface.";
leaf network { leaf network {
type inet:ipv6-prefix; type inet:ipv6-prefix;
description description
"Network to track."; "Network to track.";
} }
leaf priority-decrement { leaf priority-decrement {
type uint8 { type uint8 {
range 1..254; range 1..254;
} }
default 10; default 10;
description description
"Specifies how much to decrement the priority of the "Specifies how much to decrement the priority of the
backup VRRP router if there is a failure in the IP backup VRRP router if there is a failure in the IP
network."; network.";
} }
} // track-network } // track-network
} // track-networks } // track-networks
} // track } // track
container virtual-ipv6-addresses { container virtual-ipv6-addresses {
description description
"Configures the virtual IP address for the Virtual Router "Configures the virtual IP address for the Virtual Router
Redundancy Protocol (VRRP) interface."; Redundancy Protocol (VRRP) interface.";
list virtual-ipv6-address { list virtual-ipv6-address {
key "ipv6-address"; key "ipv6-address";
max-elements 2; max-elements 2;
description description
"Two IPv6 addresses are allowed. The first one must be "Two IPv6 addresses are allowed. The first one must be
a link-local address and the second one can be a a link-local address and the second one can be a
link-local or global address."; link-local or global address.";
leaf ipv6-address { leaf ipv6-address {
type inet:ipv6-address; type inet:ipv6-address;
description description
"Virtual IPv6 address."; "Virtual IPv6 address.";
} }
} // virtual-ipv6-address } // virtual-ipv6-address
} // virtual-ipv6-addresses } // virtual-ipv6-addresses
} // grouping vrrp-ipv6-attributes } // grouping vrrp-ipv6-attributes
skipping to change at page 18, line 39 skipping to change at page 19, line 29
leaf last-adv-source { leaf last-adv-source {
type inet:ip-address; type inet:ip-address;
description description
"Last advertised IPv4/IPv6 source address"; "Last advertised IPv4/IPv6 source address";
} }
leaf up-time { leaf up-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time when this virtual router "The time when this virtual router
transitioned out of init state."; transitioned out of init state.";
} }
leaf master-down-interval { leaf master-down-interval {
type uint32; type uint32;
units centiseconds; units centiseconds;
description description
"Time interval for backup virtual router to declare "Time interval for backup virtual router to declare
Master down."; Master down.";
} }
leaf skew-time { leaf skew-time {
type uint32; type uint32;
units microseconds; units microseconds;
description description
"Calculated based on the priority and advertisement "Calculated based on the priority and advertisement
interval configuration command parameters. See RFC 3768."; interval configuration command parameters. See RFC 3768.";
} }
leaf last-event { leaf last-event {
type string; type string;
description description
"Last reported event."; "Last reported event.";
} }
leaf new-master-reason { leaf new-master-reason {
type new-master-reason-type; type new-master-reason-type;
description description
"Indicates the reason for the virtual router to transition "Indicates the reason for the virtual router to transition
to master state."; to master state.";
} }
container statistics { container statistics {
description description
"VRRP statistics."; "VRRP statistics.";
leaf discontinuity-time { leaf discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time on the most recent occasion at which any one or "The time on the most recent occasion at which any one or
more of the VRRP statistic counters suffered a more of the VRRP statistic counters suffered a
discontinuity. If no such discontinuities have occurred discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management since the last re-initialization of the local management
subsystem, then this node contains the time that the subsystem, then this node contains the time that the
local management subsystem re-initialized itself."; local management subsystem re-initialized itself.";
} }
leaf master-transitions { leaf master-transitions {
type yang:counter32; type yang:counter32;
description description
"The total number of times that this virtual router's "The total number of times that this virtual router's
state has transitioned to master"; state has transitioned to master";
} }
leaf advertisement-recv { leaf advertisement-recv {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP advertisements received by "The total number of VRRP advertisements received by
this virtual router."; this virtual router.";
} }
leaf advertisement-sent { leaf advertisement-sent {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP advertisements sent by "The total number of VRRP advertisements sent by
this virtual router."; this virtual router.";
} }
leaf interval-errors { leaf interval-errors {
if-feature validate-interval-errors; if-feature validate-interval-errors;
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP advertisement packets "The total number of VRRP advertisement packets
received with an advertisement interval received with an advertisement interval
different than the one configured for the local different than the one configured for the local
virtual router"; virtual router";
} }
leaf priority-zero-pkts-rcvd { leaf priority-zero-pkts-rcvd {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets received by the "The total number of VRRP packets received by the
virtual router with a priority of 0."; virtual router with a priority of 0.";
} }
leaf priority-zero-pkts-sent { leaf priority-zero-pkts-sent {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets sent by the "The total number of VRRP packets sent by the
virtual router with a priority of 0."; virtual router with a priority of 0.";
} }
leaf invalid-type-pkts-rcvd { leaf invalid-type-pkts-rcvd {
type yang:counter64; type yang:counter64;
description description
"The number of VRRP packets received by the virtual "The number of VRRP packets received by the virtual
router with an invalid value in the 'type' field."; router with an invalid value in the 'type' field.";
} }
leaf address-list-errors { leaf address-list-errors {
if-feature validate-address-list-errors; if-feature validate-address-list-errors;
type yang:counter64; type yang:counter64;
description description
"The total number of packets received with an "The total number of packets received with an
address list that does not match the locally address list that does not match the locally
configured address list for the virtual router."; configured address list for the virtual router.";
} }
leaf packet-length-errors { leaf packet-length-errors {
type yang:counter64; type yang:counter64;
description description
"The total number of packets received with a packet "The total number of packets received with a packet
length less than the length of the VRRP header."; length less than the length of the VRRP header.";
} }
} // container statistics } // container statistics
} // grouping vrrp-state-attributes } // grouping vrrp-state-attributes
grouping vrrp-global-state-attributes { grouping vrrp-global-state-attributes {
description description
"Group of VRRP global state attributes."; "Group of VRRP global state attributes.";
leaf virtual-routers { leaf virtual-routers {
type uint32; type uint32;
skipping to change at page 22, line 4 skipping to change at page 22, line 34
"Group of VRRP global state attributes."; "Group of VRRP global state attributes.";
leaf virtual-routers { leaf virtual-routers {
type uint32; type uint32;
description "Number of configured virtual routers."; description "Number of configured virtual routers.";
} }
leaf interfaces { leaf interfaces {
type uint32; type uint32;
description "Number of interface with VRRP configured."; description "Number of interface with VRRP configured.";
} }
leaf checksum-errors { leaf checksum-errors {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets received with an invalid "The total number of VRRP packets received with an invalid
VRRP checksum value."; VRRP checksum value.";
reference "RFC 5798, Section 5.2.8"; reference "RFC 5798, Section 5.2.8";
} }
leaf version-errors { leaf version-errors {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets received with an unknown "The total number of VRRP packets received with an unknown
or unsupported version number."; or unsupported version number.";
reference "RFC 5798, Section 5.2.1"; reference "RFC 5798, Section 5.2.1";
} }
leaf vrid-errors { leaf vrid-errors {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets received with a VRID that "The total number of VRRP packets received with a VRID that
is not valid for any virtual router on this router."; is not valid for any virtual router on this router.";
reference "RFC 5798, Section 5.2.3"; reference "RFC 5798, Section 5.2.3";
} }
leaf ip-ttl-errors { leaf ip-ttl-errors {
type yang:counter64; type yang:counter64;
description description
"The total number of VRRP packets received by the "The total number of VRRP packets received by the
virtual router with IP TTL (Time-To-Live) not equal virtual router with IP TTL (Time-To-Live) not equal
to 255."; to 255.";
reference "RFC 5798, Sections 5.1.1.3 and 5.1.2.3."; reference "RFC 5798, Sections 5.1.1.3 and 5.1.2.3.";
} }
leaf global-statistics-discontinuity-time { leaf global-statistics-discontinuity-time {
type yang:date-and-time; type yang:date-and-time;
description description
"The time on the most recent occasion at which one of "The time on the most recent occasion at which one of
router-checksum-errors, router-version-errors, router-checksum-errors, router-version-errors,
router-vrid-errors, and ip-ttl-errors suffered a router-vrid-errors, and ip-ttl-errors suffered a
discontinuity. discontinuity.
If no such discontinuities have occurred since the last If no such discontinuities have occurred since the last
re-initialization of the local management subsystem, re-initialization of the local management subsystem,
then this object will be 0."; then this object will be 0.";
} }
} // vrrp-global-state-attributes } // vrrp-global-state-attributes
/* /*
* Configuration data nodes * Configuration data nodes
*/ */
augment "/if:interfaces/if:interface/ip:ipv4" { augment "/if:interfaces/if:interface/ip:ipv4" {
description "Augment IPv4 interface."; description "Augment IPv4 interface.";
container vrrp { container vrrp {
description description
"Configures the Virtual Router Redundancy Protocol (VRRP) "Configures the Virtual Router Redundancy Protocol (VRRP)
version 2 or version 3 for IPv4."; version 2 or version 3 for IPv4.";
list vrrp-instance { list vrrp-instance {
key vrid; key vrid;
description description
"Defines a virtual router, identified by a virtual router "Defines a virtual router, identified by a virtual router
identifier (VRID), within IPv4 address space."; identifier (VRID), within IPv4 address space.";
uses vrrp-ipv4-attributes; uses vrrp-ipv4-attributes;
} }
} }
} // augment ipv4 } // augment ipv4
augment "/if:interfaces/if:interface/ip:ipv6" { augment "/if:interfaces/if:interface/ip:ipv6" {
description "Augment IPv6 interface."; description "Augment IPv6 interface.";
container vrrp { container vrrp {
description description
"Configures the Virtual Router Redundancy Protocol (VRRP) "Configures the Virtual Router Redundancy Protocol (VRRP)
version 3 for IPv6."; version 3 for IPv6.";
list vrrp-instance { list vrrp-instance {
must "version = 3" { must "version = '3'" {
description description
"IPv6 is only supported by version 3."; "IPv6 is only supported by version 3.";
} }
key vrid; key vrid;
description description
"Defines a virtual router, identified by a virtual router "Defines a virtual router, identified by a virtual router
identifier (VRID), within IPv6 address space."; identifier (VRID), within IPv6 address space.";
uses vrrp-ipv6-attributes; uses vrrp-ipv6-attributes;
} // list vrrp-instance } // list vrrp-instance
} // container vrrp } // container vrrp
} // augment ipv6 } // augment ipv6
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
augment "/if:interfaces-state/if:interface/ip:ipv4" { augment "/if:interfaces-state/if:interface/ip:ipv4" {
description "Augment IPv4 interface state."; description "Augment IPv4 interface state.";
skipping to change at page 24, line 27 skipping to change at page 25, line 18
/* /*
* Operational state data nodes * Operational state data nodes
*/ */
augment "/if:interfaces-state/if:interface/ip:ipv4" { augment "/if:interfaces-state/if:interface/ip:ipv4" {
description "Augment IPv4 interface state."; description "Augment IPv4 interface state.";
container vrrp { container vrrp {
description description
"State information for Virtual Router Redundancy Protocol "State information for Virtual Router Redundancy Protocol
(VRRP) version 2 for IPv4."; (VRRP) version 2 for IPv4.";
list vrrp-instance { list vrrp-instance {
key vrid; key vrid;
description description
"States of a virtual router, identified by a virtual router "States of a virtual router, identified by a virtual router
identifier (VRID), within IPv4 address space."; identifier (VRID), within IPv4 address space.";
uses vrrp-ipv4-attributes; uses vrrp-ipv4-attributes;
uses vrrp-state-attributes; uses vrrp-state-attributes;
} // list vrrp-instance } // list vrrp-instance
} }
} }
augment "/if:interfaces-state/if:interface/ip:ipv6" { augment "/if:interfaces-state/if:interface/ip:ipv6" {
description "Augment IPv6 interface state."; description "Augment IPv6 interface state.";
container vrrp { container vrrp {
description description
"State information of the Virtual Router Redundancy Protocol "State information of the Virtual Router Redundancy Protocol
(VRRP) version 2 or version 3 for IPv6."; (VRRP) version 2 or version 3 for IPv6.";
list vrrp-instance { list vrrp-instance {
key vrid; key vrid;
description description
"States of a virtual router, identified by a virtual router "States of a virtual router, identified by a virtual router
identifier (VRID), within IPv6 address space."; identifier (VRID), within IPv6 address space.";
uses vrrp-ipv6-attributes; uses vrrp-ipv6-attributes;
uses vrrp-state-attributes; uses vrrp-state-attributes;
} // list vrrp-instance } // list vrrp-instance
} }
} }
augment "/if:interfaces-state" { augment "/if:interfaces-state" {
description "Specify VRRP state data at the global level."; description "Specify VRRP state data at the global level.";
container vrrp-global { container vrrp-global {
description description
"State information of the Virtual Router Redundancy Protocol "State information of the Virtual Router Redundancy Protocol
(VRRP) at the global level"; (VRRP) at the global level";
uses vrrp-global-state-attributes; uses vrrp-global-state-attributes;
} }
} }
/* /*
* Notifications * Notifications
*/ */
notification vrrp-new-master-event { notification vrrp-new-master-event {
skipping to change at page 26, line 7 skipping to change at page 26, line 39
"Notification event for a change of VRRP new master."; "Notification event for a change of VRRP new master.";
leaf master-ipaddr { leaf master-ipaddr {
type inet:ipv4-address; type inet:ipv4-address;
description description
"IPv4 or IPv6 address of the new master."; "IPv4 or IPv6 address of the new master.";
} }
leaf new-master-reason { leaf new-master-reason {
type new-master-reason-type; type new-master-reason-type;
description description
"Indicates the reason for the virtual router to transition "Indicates the reason for the virtual router to transition
to master state."; to master state.";
} }
} }
notification vrrp-protocol-error-event { notification vrrp-protocol-error-event {
description description
"Notification event for a VRRP protocol error."; "Notification event for a VRRP protocol error.";
leaf protocol-error-reason { leaf protocol-error-reason {
type enumeration { type enumeration {
enum checksum-error { enum checksum-error {
description description
"A packet has been received with an invalid VRRP checksum "A packet has been received with an invalid VRRP checksum
value."; value.";
} }
enum version-error { enum version-error {
description description
"A packet has been received with an unknown or "A packet has been received with an unknown or
unsupported version number."; unsupported version number.";
} }
enum vrid-error { enum vrid-error {
description description
"A packet has been received with a VRID that is not valid "A packet has been received with a VRID that is not valid
for any virtual router on this router."; for any virtual router on this router.";
} }
enum ip-ttl-error { enum ip-ttl-error {
description description
"A packet has been received with IP TTL (Time-To-Live) "A packet has been received with IP TTL (Time-To-Live)
not equal to 255."; not equal to 255.";
} }
} }
description description
"Indicates the reason for the protocol error."; "Indicates the reason for the protocol error.";
} }
} }
notification vrrp-virtual-router-error-event { notification vrrp-virtual-router-error-event {
description description
"Notification event for a error happened on a virtual router."; "Notification event for an error happened on a virtual
router.";
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"Indicates the interface for which statistics area "Indicates the interface for which statistics area
to be cleared."; to be cleared.";
} }
leaf ip-version { leaf ip-version {
type enumeration { type enumeration {
enum 4 { enum 4 {
description "IPv4"; description "IPv4";
} }
enum 6 { enum 6 {
description "IPv6"; description "IPv6";
} }
} }
description "Indicates the IP version."; description "Indicates the IP version.";
} }
leaf vrid-v4 { leaf vrid-v4 {
type leafref { type leafref {
path "/if:interfaces/if:interface" path "/if:interfaces/if:interface"
+ "[if:name = current()/../interface]/ip:ipv4/vrrp/" + "[if:name = current()/../interface]/ip:ipv4/vrrp/"
+ "vrrp-instance/vrid"; + "vrrp-instance/vrid";
} }
description description
"Indicates the virtual router on which the event has "Indicates the virtual router on which the event has
occured."; occurred.";
} }
leaf vrid-v6 { leaf vrid-v6 {
type leafref { type leafref {
path "/if:interfaces/if:interface" path "/if:interfaces/if:interface"
+ "[if:name = current()/../interface]/ip:ipv6/vrrp/" + "[if:name = current()/../interface]/ip:ipv6/vrrp/"
+ "vrrp-instance/vrid"; + "vrrp-instance/vrid";
} }
description description
"Indicates the virtual router on which the event has "Indicates the virtual router on which the event has
occured."; occurred.";
} }
leaf virtual-router-error-reason { leaf virtual-router-error-reason {
type enumeration { type enumeration {
enum interval-error { enum interval-error {
description description
"A packet has been received with an advertisement "A packet has been received with an advertisement
interval different than the one configured for the local interval different than the one configured for the local
virtual router"; virtual router";
} }
enum address-list-error { enum address-list-error {
description description
"A packet has been received with an address list that "A packet has been received with an address list that
does not match the locally configured address list for does not match the locally configured address list for
the virtual router."; the virtual router.";
} }
enum packet-length-error { enum packet-length-error {
description description
"A packet has been received with a packet length less "A packet has been received with a packet length less
than the length of the VRRP header."; than the length of the VRRP header.";
} }
} }
description description
"Indicates the reason for the virtual router error."; "Indicates the reason for the virtual router error.";
} }
} }
} }
<CODE ENDS> <CODE ENDS>
4. Security Considerations 4. IANA Considerations
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
actual RFC number (and remove this note).
This document registers the following namespace URIs in the IETF XML
registry [RFC3688]:
--------------------------------------------------------------------
URI: urn:ietf:params:xml:ns:yang:ietf-vrrp
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace.
--------------------------------------------------------------------
This document registers the following YANG modules in the YANG Module
Names registry [RFC6020]:
--------------------------------------------------------------------
name: ietf-vrrp
namespace: urn:ietf:params:xml:ns:yang:ietf-vrrp
prefix: vrrp
reference: RFC XXXX
--------------------------------------------------------------------
5. Security Considerations
The configuration, state, action and notification data defined in The configuration, state, action and notification data defined in
this document are designed to be accessed via the NETCONF protocol this document are designed to be accessed via the NETCONF protocol
[RFC6241]. The data-model by itself does not create any security [RFC6241]. The data-model by itself does not create any security
implications. The security considerations for the NETCONF protocol implications. The security considerations for the NETCONF protocol
are applicable. The NETCONF protocol used for sending the data are applicable. The NETCONF protocol used for sending the data
supports authentication and encryption. supports authentication and encryption.
5. References 6. References
5.1. Normative References 6.1. Normative References
[RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the
Network Configuration Protocol (NETCONF)", RFC 6020, Network Configuration Protocol (NETCONF)", RFC 6020,
October 2010. October 2010.
[RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021, [RFC6021] Schoenwaelder, J., "Common YANG Data Types", RFC 6021,
October 2010. October 2010.
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman, [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. Bierman,
"Network Configuration Protocol (NETCONF)", RFC 6241, June "Network Configuration Protocol (NETCONF)", RFC 6241, June
skipping to change at page 29, line 28 skipping to change at page 30, line 42
for the Virtual Router Redundancy Protocol", RFC 2787, for the Virtual Router Redundancy Protocol", RFC 2787,
March 2000. March 2000.
[RFC5798] Nadas, S., Ed., "Virtual Router Redundancy Protocol (VRRP) [RFC5798] Nadas, S., Ed., "Virtual Router Redundancy Protocol (VRRP)
Version 3 for IPv4 and IPv6", RFC 5798, March 2010. Version 3 for IPv4 and IPv6", RFC 5798, March 2010.
[RFC6527] Tata, K., Ed., "Definitions of Managed Objects for the [RFC6527] Tata, K., Ed., "Definitions of Managed Objects for the
Virtual Router Redundancy Protocol Version 3 (VRRPv3)", RFC Virtual Router Redundancy Protocol Version 3 (VRRPv3)", RFC
6527, March 2012. 6527, March 2012.
5.2. Informative References 6.2. Informative References
[RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", RFC 6087, January 2011. Data Model Documents", RFC 6087, January 2011.
Authors' Addresses Authors' Addresses
Xufeng Liu (Editor) Xufeng Liu (Editor)
Ericsson Kuatro Technologies
1595 Spring Hill Road, Suite 500 8281 Greensboro Drive, Suite 200
Vienna, VA 22182 McLean, VA 22102
USA USA
Email: xliu@kuatrotech.com Email: xliu@kuatrotech.com
Athanasios Kyparlis Athanasios Kyparlis
Ericsson Kuatro Technologies
1595 Spring Hill Road, Suite 500 8281 Greensboro Drive, Suite 200
Vienna, VA 22182 McLean, VA 22102
USA USA
Email: akyparlis@kuatrotech.com Email: akyparlis@kuatrotech.com
Ravi Parikh Ravi Parikh
Ericsson VMware
300 Holger Way 3425 Hillview Avenue
San Jose, CA 95134 Palo Alto, CA 94304
USA USA
Email: ravi.parikh@ericsson.com Email: parikhr@vmware.com
Acee Lindem Acee Lindem
Cisco Systems Cisco Systems
301 Midenhall Way 301 Midenhall Way
Cary, NC 27513 Cary, NC 27513
USA USA
Email: acee@cisco.com Email: acee@cisco.com
Mingui Zhang Mingui Zhang
 End of changes. 111 change blocks. 
163 lines changed or deleted 214 lines changed or added

This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/