draft-ietf-rtgwg-yang-rip-03.txt   draft-ietf-rtgwg-yang-rip-04.txt 
Network Working Group X. Liu Network Working Group X. Liu
Internet-Draft Jabil Internet-Draft Jabil
Intended status: Standards Track P. Sarda Intended status: Standards Track P. Sarda
Expires: July 20, 2017 Ericsson Expires: December 8, 2017 Ericsson
V. Choudhary V. Choudhary
Huawei Technologies Huawei Technologies
January 16, 2017 June 6, 2017
A YANG Data Model for Routing Information Protocol (RIP) A YANG Data Model for Routing Information Protocol (RIP)
draft-ietf-rtgwg-yang-rip-03 draft-ietf-rtgwg-yang-rip-04
Abstract Abstract
This document describes a data model for the Routing Information This document describes a data model for the Routing Information
Protocol (RIP). Both RIP version 2 and RIPng are covered. Protocol (RIP). Both RIP version 2 and RIPng 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 34 skipping to change at page 1, line 34
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 20, 2017. This Internet-Draft will expire on December 8, 2017.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 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.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3
2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4 2. Design of the Data Model . . . . . . . . . . . . . . . . . . 4
2.1. Scope of the Model . . . . . . . . . . . . . . . . . . . 4 2.1. Scope of the Model . . . . . . . . . . . . . . . . . . . 4
2.2. Relation with Core Routing Framework . . . . . . . . . . 4 2.2. Relation with Core Routing Framework . . . . . . . . . . 4
2.3. Protocol Configuration . . . . . . . . . . . . . . . . . 5 2.3. Protocol Configuration . . . . . . . . . . . . . . . . . 5
2.4. Protocol States . . . . . . . . . . . . . . . . . . . . . 5 2.4. Protocol States . . . . . . . . . . . . . . . . . . . . . 5
2.5. RPC Operations . . . . . . . . . . . . . . . . . . . . . 6 2.5. RPC Operations . . . . . . . . . . . . . . . . . . . . . 6
2.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 6 2.6. Notifications . . . . . . . . . . . . . . . . . . . . . . 6
2.7. Optional Features . . . . . . . . . . . . . . . . . . . . 7 2.7. Optional Features . . . . . . . . . . . . . . . . . . . . 7
3. Tree Structure . . . . . . . . . . . . . . . . . . . . . . . 7 3. Tree Structure . . . . . . . . . . . . . . . . . . . . . . . 7
4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 12 4. YANG Module . . . . . . . . . . . . . . . . . . . . . . . . . 11
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36
6. Security Considerations . . . . . . . . . . . . . . . . . . . 37 6. Security Considerations . . . . . . . . . . . . . . . . . . . 37
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 38 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 37
7.1. Normative References . . . . . . . . . . . . . . . . . . 38 7.1. Normative References . . . . . . . . . . . . . . . . . . 37
7.2. Informative References . . . . . . . . . . . . . . . . . 40 7.2. Informative References . . . . . . . . . . . . . . . . . 39
Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 41 Appendix A. Data Tree Example . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43
1. Introduction 1. Introduction
This document introduces a YANG [RFC7950] data model for the Routing This document introduces a YANG [RFC7950] data model for the Routing
Information Protocol (RIP) [RFC2453][RFC2080]. RIP was designed to Information Protocol (RIP) [RFC2453][RFC2080]. RIP was designed to
work as an Interior Gateway Protocol (IGP) in moderate-size work as an Interior Gateway Protocol (IGP) in moderate-size
Autonomous Systems (AS). Autonomous Systems (AS).
This YANG model supports both RIP version 2 and RIPng. RIP version 2 This YANG model supports both RIP version 2 and RIPng. RIP version 2
(defined in [RFC2453]) supports IPv4. RIPng (defined in [RFC2080]) (defined in [RFC2453]) supports IPv4. RIPng (defined in [RFC2080])
supports IPv6. supports IPv6.
1.1. Terminology 1.1. Terminology
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
"OPTIONAL" in this document are to be interpreted as described in BCP document are to be interpreted as described in [RFC2119].
14, [RFC2119].
The following terms are defined in [RFC7950] and are not redefined The following terms are defined in [RFC7950] and are not redefined
here: here:
o augment o augment
o data model o data model
o data node o data node
1.2. Tree Diagrams 1.2. Tree Diagrams
skipping to change at page 3, line 37 skipping to change at page 3, line 37
shown. shown.
1.3. Prefixes in Data Node Names 1.3. Prefixes in Data Node Names
In this document, names of data nodes, actions, and other data model In this document, names of data nodes, actions, and other data model
objects are often used without a prefix, as long as it is clear from objects are often used without a prefix, as long as it is clear from
the context in which YANG module each name is defined. Otherwise, the context in which YANG module each name is defined. Otherwise,
names are prefixed using the standard prefix associated with the names are prefixed using the standard prefix associated with the
corresponding YANG module, as shown in Table 1. corresponding YANG module, as shown in Table 1.
+-----------+-----------------+---------------------------------+ +-----------+-----------------+---------------------------------+
| Prefix | YANG module | Reference | | Prefix | YANG module | Reference |
+-----------+-----------------+---------------------------------+ +-----------+-----------------+---------------------------------+
| yang | ietf-yang-types | [RFC6991] | | yang | ietf-yang-types | [RFC6991] |
| inet | ietf-inet-types | [RFC6991] | | inet | ietf-inet-types | [RFC6991] |
| if | ietf-interfaces | [RFC7223] | | if | ietf-interfaces | [RFC7223] |
| ip | ietf-ip | [RFC7277] | | ip | ietf-ip | [RFC7277] |
| rt | ietf-routing | [RFC8022] | | rt | ietf-routing | [RFC8022] |
| bfd | ietf-bfd | [I-D.ietf-bfd-yang] | | bfd | ietf-bfd | [I-D.ietf-bfd-yang] |
| isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] | | isis | ietf-isis | [I-D.ietf-isis-yang-isis-cfg] |
| key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] | | key-chain | ietf-key-chain | [I-D.ietf-rtgwg-yang-key-chain] |
| ospf | ietf-ospf | [I-D.ietf-ospf-yang] | | ospf | ietf-ospf | [I-D.ietf-ospf-yang] |
+-----------+-----------------+---------------------------------+ +-----------+-----------------+---------------------------------+
Table 1: Prefixes and Corresponding YANG Modules Table 1: Prefixes and Corresponding YANG Modules
2. Design of the Data Model 2. Design of the Data Model
2.1. Scope of the Model 2.1. Scope of the Model
The model covers RIP version 2 [RFC2453] and RIPng [RFC2080] The model covers RIP version 2 [RFC2453] and RIPng [RFC2080]
protocols. The model is designed to be implemented on a device where protocols. The model is designed to be implemented on a device where
RIP version 2 or RIPng is implemented, and can be used to: RIP version 2 or RIPng is implemented, and can be used to:
o Configure the RIP version 2 or RIPng protocol. o Configure the RIP version 2 or RIPng protocol.
o Manage the protocol operational behaviors. o Manage the protocol operational behaviors.
o Retrieve the protocol operational status. o Retrieve the protocol operational status.
The capabilities describe in [RFC1724] are covered.
2.2. Relation with Core Routing Framework 2.2. Relation with Core Routing Framework
This model augments the core routing data model "ietf-routing" This model augments the core routing data model "ietf-routing"
specified in [RFC8022]. specified in [RFC8022].
+--rw routing +--rw routing
+--rw router-id? +--rw router-id?
+--rw control-plane-protocols +--rw control-plane-protocols
| +--rw control-plane-protocol* [type name] | +--rw control-plane-protocol* [type name]
| +--rw type | +--rw type
skipping to change at page 7, line 25 skipping to change at page 7, line 25
This model defines several features are beyond the basic RIP This model defines several features are beyond the basic RIP
configuration and it is the responsibility of each vendor to decide configuration and it is the responsibility of each vendor to decide
whether to support a given feature on a device. whether to support a given feature on a device.
3. Tree Structure 3. Tree Structure
This document defines the YANG module "ietf-rip", which has the This document defines the YANG module "ietf-rip", which has the
following tree structure: following tree structure:
module: ietf-rip module: ietf-rip
augment /rt:routing/rt:control-plane-protocols/ augment /rt:routing/rt:control-plane-protocols
rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw rip +--rw rip
+--rw originate-default-route! +--rw originate-default-route!
| +--rw route-policy? route-policy-ref | +--rw route-policy? route-policy-ref
+--rw default-metric? uint8 +--rw default-metric? uint8
+--rw distance? uint8 +--rw distance? uint8
+--rw triggered-update-threshold? uint8 +--rw triggered-update-threshold? uint8
+--rw maximum-paths? uint8 +--rw maximum-paths? uint8
+--rw output-delay? uint8 +--rw output-delay? uint8
+--rw distribute-list* [prefix-set-name direction] +--rw distribute-list* [prefix-set-name direction]
| +--rw prefix-set-name prefix-set-ref | +--rw prefix-set-name prefix-set-ref
| +--rw direction enumeration | +--rw direction enumeration
| +--rw if-name? if:interface-ref | +--rw if-name? if:interface-ref
+--rw redistribute +--rw redistribute
| +--rw bgp* [asn] | +--rw bgp* [asn]
| | +--rw asn inet:as-number | | +--rw asn inet:as-number
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw cg-nat! | +--rw cg-nat!
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw connected! | +--rw connected!
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw ipsec! | +--rw ipsec!
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw isis* [instance] | +--rw isis* [instance]
| | +--rw instance leafref | | +--rw instance leafref
| | +--rw level? enumeration | | +--rw level? enumeration
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw nat! | +--rw nat!
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw ospfv2* [instance] | +--rw ospfv2* [instance]
| | +--rw instance leafref | | +--rw instance leafref
| | +--rw route-type? ospf:route-type | | +--rw route-type? ospf:route-type
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw ospfv3* [instance] | +--rw ospfv3* [instance]
| | +--rw instance leafref | | +--rw instance leafref
| | +--rw route-type? ospf:route-type | | +--rw route-type? ospf:route-type
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw ripv2* [instance] | +--rw ripv2* [instance]
| | +--rw instance leafref | | +--rw instance leafref
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw ripng* [instance] | +--rw ripng* [instance]
| | +--rw instance leafref | | +--rw instance leafref
| | +--rw metric? uint8 | | +--rw metric? uint8
| | +--rw route-policy? route-policy-ref | | +--rw route-policy? route-policy-ref
| +--rw static! | +--rw static!
| +--rw metric? uint8 | +--rw metric? uint8
| +--rw route-policy? route-policy-ref | +--rw route-policy? route-policy-ref
+--rw timers +--rw timers
| +--rw update-interval? uint16 | +--rw update-interval? uint16
| +--rw invalid-interval? uint16 | +--rw invalid-interval? uint16
| +--rw holddown-interval? uint16 | +--rw holddown-interval? uint16
| +--rw flush-interval? uint16 | +--rw flush-interval? uint16
+--rw interfaces +--rw interfaces
+--rw interface* [interface] +--rw interface* [interface]
+--rw interface if:interface-ref +--rw interface if:interface-ref
+--rw authentication +--rw authentication
| +--rw (auth-type-selection)? | +--rw (auth-type-selection)?
| +--:(auth-key-chain) | +--:(auth-key-chain)
| | +--rw key-chain? key-chain:key-chain-ref | | +--rw key-chain?
| +--:(auth-key) key-chain:key-chain-ref
| +--rw key? string | +--:(auth-key)
| +--rw crypto-algorithm | +--rw key? string
| +--rw (algorithm)? | +--rw crypto-algorithm? identityref
| +--:(hmac-sha-1-12) {crypto-hmac-sha-1-12}? +--rw bfd {bfd}?
| | +--rw hmac-sha1-12? empty | +--rw enabled? boolean
| +--:(aes-cmac-prf-128) {aes-cmac-prf-128}? | +--rw local-multiplier? bfd-multiplier
| | +--rw aes-cmac-prf-128? empty | +--rw (interval-config-type)?
| +--:(md5) | +--:(tx-rx-intervals)
| | +--rw md5? empty | | +--rw desired-min-tx-interval uint32
| +--:(sha-1) | | +--rw required-min-rx-interval uint32
| | +--rw sha-1? empty | +--:(single-interval)
| +--:(hmac-sha-1) | +--rw min-interval uint32
| | +--rw hmac-sha-1? empty +--rw cost? uint8
| +--:(hmac-sha-256) +--rw neighbors {explicit-neighbors}?
| | +--rw hmac-sha-256? empty | +--rw neighbor* [address]
| +--:(hmac-sha-384) | +--rw address inet:ip-address
| | +--rw hmac-sha-384? empty +--rw no-listen? empty
| +--:(hmac-sha-512) +--rw originate-default-route!
| | +--rw hmac-sha-512? empty | +--rw route-policy? route-policy-ref
| +--:(clear-text) {clear-text}? +--rw passive? empty
| | +--rw clear-text? empty +--rw split-horizon? enumeration
| +--:(replay-protection-only) +--rw summary-address
{replay-protection-only}? | +--rw address? inet:ip-prefix
| +--rw replay-protection-only? empty | +--rw metric? uint8
+--rw bfd {bfd}? +--rw timers
| +--rw enabled? boolean +--rw update-interval? uint16
| +--rw local-multiplier? bfd-multiplier +--rw invalid-interval? uint16
| +--rw (interval-config-type)? +--rw holddown-interval? uint16
| +--:(tx-rx-intervals) +--rw flush-interval? uint16
| | +--rw desired-min-tx-interval uint32 augment /rt:routing-state/rt:control-plane-protocols
| | +--rw required-min-rx-interval uint32 /rt:control-plane-protocol:
| +--:(single-interval) +--ro rip
| +--rw min-interval uint32 +--ro originate-default-route!
+--rw cost? uint8 | +--ro route-policy? route-policy-ref
+--rw neighbors {explicit-neighbors}? +--ro default-metric? uint8
| +--rw neighbor* [address] +--ro distance? uint8
| +--rw address inet:ip-address +--ro triggered-update-threshold? uint8
+--rw no-listen? empty +--ro maximum-paths? uint8
+--rw originate-default-route! +--ro output-delay? uint8
| +--rw route-policy? route-policy-ref +--ro distribute-list* [prefix-set-name direction]
+--rw passive? empty | +--ro prefix-set-name prefix-set-ref
+--rw split-horizon? enumeration | +--ro direction enumeration
+--rw summary-address | +--ro if-name? if:interface-ref
| +--rw address? inet:ip-prefix +--ro next-triggered-update? uint32
| +--rw metric? uint8 +--ro num-of-routes? uint32
+--rw timers +--ro timers
+--rw update-interval? uint16 | +--ro update-interval? uint16
+--rw invalid-interval? uint16 | +--ro invalid-interval? uint16
+--rw holddown-interval? uint16 | +--ro holddown-interval? uint16
+--rw flush-interval? uint16 | +--ro flush-interval? uint16
augment /rt:routing-state/rt:control-plane-protocols/ +--ro interfaces
rt:control-plane-protocol: | +--ro interface* [interface]
| +--ro interface if:interface-ref
+--ro rip | +--ro oper-status? enumeration
+--ro originate-default-route! | +--ro cost? uint8
| +--ro route-policy? route-policy-ref | +--ro listen? boolean
+--ro default-metric? uint8 | +--ro next-full-update? uint32
+--ro distance? uint8 | +--ro originate-default-route? boolean
+--ro triggered-update-threshold? uint8 | +--ro passive? boolean
+--ro maximum-paths? uint8 | +--ro poison-reverse? boolean
+--ro output-delay? uint8 | +--ro split-horizon? boolean
+--ro distribute-list* [prefix-set-name direction] | +--ro valid-address? boolean
| +--ro prefix-set-name prefix-set-ref | +--ro timers
| +--ro direction enumeration | | +--ro update-interval? uint16
| +--ro if-name? if:interface-ref | | +--ro invalid-interval? uint16
+--ro next-triggered-update? uint32 | | +--ro holddown-interval? uint16
+--ro num-of-routes? uint32 | | +--ro flush-interval? uint16
+--ro timers | +--ro statistics {interface-statistics}?
| +--ro update-interval? uint16 | +--ro discontinuity-time? yang:date-and-time
| +--ro invalid-interval? uint16 | +--ro bad-packets-rcvd? yang:counter32
| +--ro holddown-interval? uint16 | +--ro bad-routes-rcvd? yang:counter32
| +--ro flush-interval? uint16 | +--ro updates-sent? yang:counter32
+--ro interfaces +--ro ipv4
| +--ro interface* [interface] | +--ro neighbors
| +--ro interface if:interface-ref | | +--ro neighbor* [ipv4-address]
| +--ro oper-status? enumeration | | +--ro ipv4-address inet:ipv4-address
| +--ro cost? uint8 | | +--ro last-update? yang:date-and-time
| +--ro listen? boolean | | +--ro bad-packets-rcvd? yang:counter32
| +--ro next-full-update? uint32 | | +--ro bad-routes-rcvd? yang:counter32
| +--ro originate-default-route? boolean | +--ro routes
| +--ro passive? boolean | +--ro route* [ipv4-prefix]
| +--ro poison-reverse? boolean | +--ro ipv4-prefix inet:ipv4-prefix
| +--ro split-horizon? boolean | +--ro next-hop?
| +--ro valid-address? boolean inet:ipv4-address
| +--ro timers | +--ro interface? if:interface-ref
| | +--ro update-interval? uint16 | +--ro redistributed? boolean
| | +--ro invalid-interval? uint16 | +--ro route-type? enumeration
| | +--ro holddown-interval? uint16 | +--ro metric? uint8
| | +--ro flush-interval? uint16 | +--ro expire-time? uint16
| +--ro statistics {interface-statistics}? | +--ro deleted? boolean
| +--ro discontinuity-time? yang:date-and-time | +--ro holddown? boolean
| +--ro bad-packets-rcvd? yang:counter32 | +--ro need-triggered-update? boolean
| +--ro bad-routes-rcvd? yang:counter32 | +--ro inactive? boolean
| +--ro updates-sent? yang:counter32 | +--ro flush-expire-before-holddown? boolean
+--ro ipv4 +--ro ipv6
| +--ro neighbors | +--ro neighbors
| | +--ro neighbor* [ipv4-address] | | +--ro neighbor* [ipv6-address]
| | +--ro ipv4-address inet:ipv4-address | | +--ro ipv6-address inet:ipv6-address
| | +--ro last-update? yang:date-and-time | | +--ro last-update? yang:date-and-time
| | +--ro bad-packets-rcvd? yang:counter32 | | +--ro bad-packets-rcvd? yang:counter32
| | +--ro bad-routes-rcvd? yang:counter32 | | +--ro bad-routes-rcvd? yang:counter32
| +--ro routes | +--ro routes
| +--ro route* [ipv4-prefix] | +--ro route* [ipv6-prefix]
| +--ro ipv4-prefix inet:ipv4-prefix | +--ro ipv6-prefix inet:ipv6-prefix
| +--ro next-hop? inet:ipv4-address | +--ro next-hop?
| +--ro interface? if:interface-ref inet:ipv6-address
| +--ro redistributed? boolean | +--ro interface? if:interface-ref
| +--ro route-type? enumeration | +--ro redistributed? boolean
| +--ro metric? uint8 | +--ro route-type? enumeration
| +--ro expire-time? uint16 | +--ro metric? uint8
| +--ro deleted? boolean | +--ro expire-time? uint16
| +--ro holddown? boolean | +--ro deleted? boolean
| +--ro need-triggered-update? boolean | +--ro holddown? boolean
| +--ro inactive? boolean | +--ro need-triggered-update? boolean
| +--ro flush-expire-before-holddown? boolean | +--ro inactive? boolean
+--ro ipv6 | +--ro flush-expire-before-holddown? boolean
| +--ro neighbors +--ro statistics {global-statistics}?
| | +--ro neighbor* [ipv6-address] +--ro discontinuity-time? yang:date-and-time
| | +--ro ipv6-address inet:ipv6-address +--ro requests-rcvd? yang:counter32
| | +--ro last-update? yang:date-and-time +--ro requests-sent? yang:counter32
| | +--ro bad-packets-rcvd? yang:counter32 +--ro responses-rcvd? yang:counter32
| | +--ro bad-routes-rcvd? yang:counter32 +--ro responses-sent? yang:counter32
| +--ro routes rpcs:
| +--ro route* [ipv6-prefix] +---x clear-rip-route
| +--ro ipv6-prefix inet:ipv6-prefix +---w input
| +--ro next-hop? inet:ipv6-address +---w rip-instance? leafref
| +--ro interface? if:interface-ref
| +--ro redistributed? boolean
| +--ro route-type? enumeration
| +--ro metric? uint8
| +--ro expire-time? uint16
| +--ro deleted? boolean
| +--ro holddown? boolean
| +--ro need-triggered-update? boolean
| +--ro inactive? boolean
| +--ro flush-expire-before-holddown? boolean
+--ro statistics {global-statistics}?
+--ro discontinuity-time? yang:date-and-time
+--ro requests-rcvd? yang:counter32
+--ro requests-sent? yang:counter32
+--ro responses-rcvd? yang:counter32
+--ro responses-sent? yang:counter32
rpcs:
+---x clear-rip-route
+---w input
+---w rip-instance? leafref
4. YANG Module 4. YANG Module
<CODE BEGINS> file "ietf-rip@2017-01-16.yang" <CODE BEGINS> file "ietf-rip@2017-06-05.yang"
module ietf-rip { module ietf-rip {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-rip"; namespace "urn:ietf:params:xml:ns:yang:ietf-rip";
prefix rip; prefix rip;
import ietf-inet-types { import ietf-inet-types {
prefix "inet"; prefix "inet";
} }
skipping to change at page 13, line 37 skipping to change at page 13, line 17
Copyright (c) 2016 IETF Trust and the persons identified as Copyright (c) 2016 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(http://trustee.ietf.org/license-info)."; (http://trustee.ietf.org/license-info).";
revision 2017-01-16 { revision 2017-06-05 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 2453: RIP Version 2. "RFC 2453: RIP Version 2.
RFC 2080: RIPng for IPv6. RFC 2080: RIPng for IPv6.
RFC 1724: RIP Version 2 MIB Extension."; RFC 1724: RIP Version 2 MIB Extension.";
} }
/* /*
* Features * Features
skipping to change at page 26, line 30 skipping to change at page 26, line 10
when "derived-from-or-self(" when "derived-from-or-self("
+ "../../../../rt:type, 'rip:ripv2')" { + "../../../../rt:type, 'rip:ripv2')" {
description "Only applicable to RIPv2."; description "Only applicable to RIPv2.";
} }
description description
"Enables authentication and specifies the "Enables authentication and specifies the
authentication scheme for the RIP interface"; authentication scheme for the RIP interface";
choice auth-type-selection { choice auth-type-selection {
description description
"Specify the authentication scheme. "Specify the authentication scheme.
The use of the key-chain reference here is: The use of the key-chain reference here is
1) Designed to align with other proposed protocol designed to align with other proposed protocol
models. models.";
2) Not finalized, pending resolution of alignment
with the RFC published KeyTables information
model.";
case auth-key-chain { case auth-key-chain {
leaf key-chain { leaf key-chain {
type key-chain:key-chain-ref; type key-chain:key-chain-ref;
description description
"key-chain name"; "key-chain name";
} }
} }
case auth-key { case auth-key {
leaf key { leaf key {
type string; type string;
description description
"Key string in ASCII format."; "Key string in ASCII format.";
} }
container crypto-algorithm { leaf crypto-algorithm {
uses key-chain:crypto-algorithm-types; type identityref {
base key-chain:crypto-algorithm;
}
description description
"Cryptographic algorithm associated with key."; "Cryptographic algorithm associated with key.";
} }
} }
} }
} }
container bfd { container bfd {
if-feature bfd; if-feature bfd;
description "BFD operation."; description "BFD operation.";
skipping to change at page 39, line 9 skipping to change at page 38, line 34
<http://www.rfc-editor.org/info/rfc7277>. <http://www.rfc-editor.org/info/rfc7277>.
[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,
<http://www.rfc-editor.org/info/rfc7950>. <http://www.rfc-editor.org/info/rfc7950>.
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", RFC 8022, DOI 10.17487/RFC8022, November Management", RFC 8022, DOI 10.17487/RFC8022, November
2016, <http://www.rfc-editor.org/info/rfc8022>. 2016, <http://www.rfc-editor.org/info/rfc8022>.
[I-D.ietf-rtgwg-routing-types]
Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger,
"Routing Area Common YANG Data Types", draft-ietf-rtgwg-
routing-types-00 (work in progress), December 2016.
[I-D.ietf-rtgwg-yang-key-chain] [I-D.ietf-rtgwg-yang-key-chain]
Lindem, A., Qu, Y., Yeung, D., Chen, I., Zhang, Z., and Y. Lindem, A., Qu, Y., Yeung, D., Chen, I., and Z. Zhang,
Yang, "Routing Key Chain YANG Data Model", draft-ietf- "Routing Key Chain YANG Data Model", draft-ietf-rtgwg-
rtgwg-yang-key-chain-11 (work in progress), November 2016. yang-key-chain-24 (work in progress), April 2017.
[I-D.ietf-ospf-yang]
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
"Yang Data Model for OSPF Protocol", draft-ietf-ospf-
yang-06 (work in progress), October 2016.
[I-D.ietf-isis-yang-isis-cfg] [I-D.ietf-isis-yang-isis-cfg]
Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L. Litkowski, S., Yeung, D., Lindem, A., Zhang, Z., and L.
Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf- Lhotka, "YANG Data Model for IS-IS protocol", draft-ietf-
isis-yang-isis-cfg-14 (work in progress), November 2016. isis-yang-isis-cfg-17 (work in progress), March 2017.
[I-D.ietf-idr-bgp-model]
Shaikh, A., Shakir, R., Patel, K., Hares, S., D'Souza, K.,
Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and
X. Liu, "BGP Model for Service Provider Networks", draft-
ietf-idr-bgp-model-02 (work in progress), July 2016.
[I-D.ietf-bfd-yang] [I-D.ietf-bfd-yang]
Zheng, L., Rahman, R., Networks, J., Jethanandani, M., and Rahman, R., Zheng, L., Networks, J., Jethanandani, M., and
G. Mirsky, "Yang Data Model for Bidirectional Forwarding G. Mirsky, "Yang Data Model for Bidirectional Forwarding
Detection (BFD)", draft-ietf-bfd-yang-03 (work in Detection (BFD)", draft-ietf-bfd-yang-05 (work in
progress), July 2016. progress), March 2017.
[I-D.ietf-netconf-rfc5277bis] [I-D.ietf-netconf-rfc5277bis]
Clemm, A., Prieto, A., Voit, E., Nilsen-Nygaard, E., Clemm, A., Prieto, A., Voit, E., Nilsen-Nygaard, E.,
Tripathy, A., Chisholm, S., and H. Trevino, "Subscribing Tripathy, A., Chisholm, S., and H. Trevino, "Subscribing
to Event Notifications", draft-ietf-netconf-rfc5277bis-01 to Event Notifications", draft-ietf-netconf-rfc5277bis-01
(work in progress), October 2016. (work in progress), October 2016.
[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, "Subscribing to Nygaard, E., Bierman, A., and B. Lengyel, "Subscribing to
YANG datastore push updates", draft-ietf-netconf-yang- YANG datastore push updates", draft-ietf-netconf-yang-
push-04 (work in progress), October 2016. push-06 (work in progress), April 2017.
7.2. Informative References 7.2. Informative References
[RFC1724] Malkin, G. and F. Baker, "RIP Version 2 MIB Extension", [RFC1724] Malkin, G. and F. Baker, "RIP Version 2 MIB Extension",
RFC 1724, DOI 10.17487/RFC1724, November 1994, RFC 1724, DOI 10.17487/RFC1724, November 1994,
<http://www.rfc-editor.org/info/rfc1724>. <http://www.rfc-editor.org/info/rfc1724>.
[RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG
Data Model Documents", RFC 6087, DOI 10.17487/RFC6087,
January 2011, <http://www.rfc-editor.org/info/rfc6087>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012, DOI 10.17487/RFC6536, March 2012,
<http://www.rfc-editor.org/info/rfc6536>. <http://www.rfc-editor.org/info/rfc6536>.
[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,
<http://www.rfc-editor.org/info/rfc7951>. <http://www.rfc-editor.org/info/rfc7951>.
[I-D.ietf-ospf-yang]
Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem,
"Yang Data Model for OSPF Protocol", draft-ietf-ospf-
yang-07 (work in progress), March 2017.
Appendix A. 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.
+-----------------+ +---------------------+
| | | |
| Router 10.0.0.1 | | Router 203.0.113.1 |
| | | |
+--------+--------+ +----------+----------+
|eth0 |eth0
|10.1.1.1 |192.0.2.1
| |
| |
|10.1.1.2 |192.0.2.2
+--------+--------+ +----------+----------+
| | | |
| Another Router | | Another Router |
| | | |
+--------+--------+ +---------------------+
The instance data tree for Router 10.0.0.1 in the above figure could The instance data tree for Router 203.0.113.1 in the above figure
be as follows: could be as follows:
{ {
"ietf-interfaces:interfaces": { "ietf-interfaces:interfaces": {
"interface": [ "interface": [
{ {
"name": "eth1", "name": "eth1",
"type": "iana-if-type:ethernetCsmacd", "type": "iana-if-type:ethernetCsmacd",
"description": "An interface with RIPv2 enabled.", "description": "An interface with RIPv2 enabled.",
"ietf-ip:ipv4": { "ietf-ip:ipv4": {
"address": [ "address": [
{ {
"ip": "10.1.1.1", "ip": "192.0.2.1",
"prefix-length": 24 "prefix-length": 24
} }
], ],
"forwarding": true "forwarding": true
} }
} }
] ]
}, },
"ietf-interfaces:interfaces-state": { "ietf-interfaces:interfaces-state": {
"interface": [ "interface": [
skipping to change at page 42, line 14 skipping to change at page 41, line 14
"phys-address": "00:0C:42:E5:B1:E9", "phys-address": "00:0C:42:E5:B1:E9",
"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:ipv4": {
"forwarding": true, "forwarding": true,
"mtu": 1500, "mtu": 1500,
"address": [ "address": [
{ {
"ip": "10.1.1.1", "ip": "192.0.2.1",
"prefix-length": 24 "prefix-length": 24
} }
] ]
} }
} }
] ]
}, },
"ietf-routing:routing": { "ietf-routing:routing": {
"router-id": "10.0.0.1", "router-id": "203.0.113.1",
"control-plane-protocols": { "control-plane-protocols": {
"control-plane-protocol": [ "control-plane-protocol": [
{ {
"type": "ietf-rip:ripv2", "type": "ietf-rip:ripv2",
"name": "ripv2-1", "name": "ripv2-1",
"description": "RIPv2 instance ripv2-1.", "description": "RIPv2 instance ripv2-1.",
"ietf-rip:rip": { "ietf-rip:rip": {
"redistribute": { "redistribute": {
"connected": { "connected": {
} }
skipping to change at page 43, line 33 skipping to change at page 42, line 33
"poison-reverse": true, "poison-reverse": true,
"split-horizon": true, "split-horizon": true,
"valid-address": true "valid-address": true
} }
] ]
}, },
"ipv4" { "ipv4" {
"neighbors": { "neighbors": {
"neighbor": [ "neighbor": [
{ {
"address": "10.1.1.2" "address": "192.0.2.2"
} }
] ]
} }
"routes": { "routes": {
"route": [ "route": [
{ {
"ipv4-prefix": "10.1.1.1/24", "ipv4-prefix": "192.0.2.1/24",
"interface": "eth1", "interface": "eth1",
"redistributed": true, "redistributed": true,
"route-type": "connected", "route-type": "connected",
"metric": 0, "metric": 0,
"expire-time": 22 "expire-time": 22
}, },
{ {
"ipv4-prefix": "10.1.2.1/24", "ipv4-prefix": "198.51.100.0/24",
"next-hop": "10.1.1.2", "next-hop": "192.0.2.2",
"interface": "eth1", "interface": "eth1",
"redistributed": false, "redistributed": false,
"route-type": "rip", "route-type": "rip",
"metric": 2, "metric": 2,
"expire-time": 82 "expire-time": 82
} }
] ]
} }
}, },
"statistics": { "statistics": {
 End of changes. 30 change blocks. 
307 lines changed or deleted 273 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/