Internet DRAFT - draft-liang-rtgwg-staticrt-yang-cfg
draft-liang-rtgwg-staticrt-yang-cfg
RTG Working Group Q. Liang
Internet-Draft G. Yan
Intended status: Standards Track S. Zhuang
Expires: June 18, 2016 Huawei Technologies
December 16, 2015
A YANG Data Model for Static Route
draft-liang-rtgwg-staticrt-yang-cfg-01
Abstract
This document defines a YANG data model for static routes. The data
model includes configuration data and state data.
Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
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). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
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."
This Internet-Draft will expire on June 18, 2016.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
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
Liang, et al. Expires June 18, 2016 [Page 1]
Internet-Draft Yang Model for Static Routes December 2015
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 3
2. Static Route Data Model . . . . . . . . . . . . . . . . . . . 3
3. Static Route YANG Module . . . . . . . . . . . . . . . . . . 6
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15
5. Security Considerations . . . . . . . . . . . . . . . . . . . 16
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 16
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.1. NormativeInformative . . . . . . . . . . . . . . . . . . 16
7.2. Informative References . . . . . . . . . . . . . . . . . 17
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 17
1. Introduction
Static routes are special routes that are configured manually by
network administrators. On simple networks, the network
administrator configures static routes in the routers which cannot
run dynamic routing protocols or cannot generate routes to a special
destination network, so that the network can run properly. Route
selection can be controlled using static routes. However, each time
a fault occurs on the network or the network topology changes, maybe
the network administrator need to reconfigure the static routes.
This document defines a YANG [RFC6020] data model for the
configuration and state data of static route. Any RPC or
notification definition is not part of this document. . YANG is
proving relevant beyond its initial confines, as bindings to other
interfaces(e.g. ReST) and encoding other than XML (e.g. JSON) are
being defined. Furthermore, YANG data models can be used as the
basis of implementation for other interface, such as CLI and
Programmatic APIs.
As many vendors have different object constructs to represent the
same static route, it has been tried to design this model in a very
flexible, extensible and generic way to fit into most of the vendor
requirements.
Liang, et al. Expires June 18, 2016 [Page 2]
Internet-Draft Yang Model for Static Routes December 2015
1.1. Terminology
The following terms are defined in [RFC6020] :
o configuration data
o data model
o module
o state data
The terminology for describing YANG data models is found in
[RFC6020].
1.2. Tree Diagrams
A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in these diagrams is as
follows:
o Brackets "[" and "]" enclose list keys.
o Abbreviations before data node names: "rw" means configuration
data (read-write), and "ro" means state data (read-only).
o Symbols after data node names: "?" means an optional node, "!"
means a presence container, and "*" denotes a list and leaf-list.
o Parentheses enclose choice and case nodes, and case nodes are
also marked with a colon (":").
o Ellipsis ("...") stands for contents of subtrees that are not
shown.
2. Static Route Data Model
The data model has the following structure for configuration of
static routes:
module: ietf-staticrt
+--rw staticrt
| +--rw staticrt-cfg
| | +--rw staticrt-topo* [VRF-name address-family topo-name]
| | +--rw topo-name string
| | +--rw VRF-name string
| | +--rw address-family identityref
| | +--rw enable-FRR? boolean
Liang, et al. Expires June 18, 2016 [Page 3]
Internet-Draft Yang Model for Static Routes December 2015
| | +--rw staticrt-entries* [ip-prefix ip-prefix-mask
output-interface target-VRF-name target-nexthop]
| | +--rw ip-prefix inet:ip-address
| | +--rw ip-prefix-mask inet:ip-address
| | +--rw output-interface string
| | +--rw target-VRF-name string
| | +--rw target-nexthop inet:ip-address
| | +--rw description? string
| | +--rw preference? uint32
| | +--rw cost? uint32
| | +--rw tag? uint32
| | +--rw enable-inherit-cost? boolean
| | +--rw is-permanent? boolean
| | +--rw not-advertise? boolean
| | +--rw is-iterated-to-host-route? boolean
| | +--rw BFD-enable? boolean
| | +--rw BFD-session-name? string
| | +--rw adminstated-down-not-selected? boolean
| +--ro staticrt-state
| +--ro staticrt-rib
| | +--ro staticrt-route*
| | +--ro index? uint32
| | +--ro topo-name? string
| | +--ro VRF-name? string
| | +--ro address-family? string
| | +--ro ip-prefix inet:ip-address
| | +--ro ip-prefix-mask inet:ip-address
| | +--ro output-interface? string
| | +--ro target-VRF-name? string
| | +--ro target-nexthop? inet:ip-address
| | +--ro description? string
| | +--ro preference? uint32
| | +--ro cost? uint32
| | +--ro tag? uint32
| | +--ro enable-inherit-cost? boolean
| | +--ro is-permanent? boolean
| | +--ro not-advertise? boolean
| | +--ro is-iterated-to-host-route? boolean
| | +--ro BFD-enable? boolean
| | +--ro BFD-session-name? string
| | +--ro adminstated-down-not-selected? boolean
| | +--ro iterated-nexthop? inet:ip-address
| | +--ro iterated-output-interface? string
| | +--ro label? uint32
| | +--ro route-state? string
| | +--ro interface-state? string
| | +--ro BFD-state? string
| | +--ro local-address? inet:ip-address
Liang, et al. Expires June 18, 2016 [Page 4]
Internet-Draft Yang Model for Static Routes December 2015
| | +--ro remote-address? inet:ip-address
| +--ro staticrt-statistics
| +--ro staticrt-stats*
| +--ro topo-name? string
| +--ro VRF-name? string
| +--ro address-family? string
| +--ro static-route-stats*
| +--ro ip-prefix inet:ip-address
| +--ro ip-prefix-mask inet:ip-address
| +--ro output-interface? string
| +--ro target-VRF-name? string
| +--ro target-nexthop? inet:ip-address
| +--ro description? string
| +--ro preference? uint32
| +--ro cost? uint32
| +--ro tag? uint32
| +--ro enable-inherit-cost? boolean
| +--ro is-permanent? boolean
| +--ro not-advertise? boolean
| +--ro is-iterated-to-host-route? boolean
| +--ro classified-pkts? uint64
| +--ro classified-bytes? uint64
+--rw BFD-paras-cfg
+--rw BFD-enable? boolean
+--rw BFD-session-paras* [BFD-session-name]
+--rw BFD-session-name string
+--rw address-family? identityref
+--rw interface-name? string
+--rw destination-VRF-name? string
+--rw nexthop? inet:ip-address
+--rw local-ip-address? inet:ip-address
+--rw min-tx-interval? uint32
+--rw min-rx-interval? uint32
+--rw multiplier? uint32
This data model defines the configuration and state containers for
static routes. In staticrt-cfg container, there is a list of
configuration containers per static route, which contains the
configuration for static route.
The data model for state of static routes defines two state
containers. Container staticrt-rib contains the current state of
static routes. In the second container, there is statistics
information for static routes. The staticrt-entries in the staticrt-
statistics container is listed per routing instance per address
family. The list of staticrt-entries is in order of applied rules in
the forwarding path.
Liang, et al. Expires June 18, 2016 [Page 5]
Internet-Draft Yang Model for Static Routes December 2015
This data model also defines the configuration for BFD session using
to detect the configured nexthop reachability of the static route.
3. Static Route YANG Module
<CODE BEGINS> file "ietf-staticrt@2015-10-16.yang"
module ietf-staticrt{
namespace "urn:ietf:params:xml:ns:yang:ietf-staticrt";
prefix staticrt;
import ietf-inet-types {
prefix inet;
}
organization "TBD";
contact "TBD";
description
"This module contains a collection of YANG definitions for
configuring static routes.";
revision 2015-10-16 {
description
"Initial revision.";
reference
" [draft-ietf-netmod-routing-cfg-16]
A YANG Data Model for Routing Management.
";
}
identity address-family {
description
"Base identity from which identities describing address
families are derived.";
}
identity ipv4 {
base address-family;
description
"This identity represents IPv4 address family.";
}
identity ipv6 {
base address-family;
description
"This identity represents IPv6 address family.";
}
Liang, et al. Expires June 18, 2016 [Page 6]
Internet-Draft Yang Model for Static Routes December 2015
grouping staticrt-entry {
description
"This group defines the static route.";
leaf ip-prefix {
type inet:ip-address;
mandatory "true";
description
"The destination ip prefix of the static route.";
}
leaf ip-prefix-mask {
type inet:ip-address;
mandatory "true";
description
"The destination ip prefix mask of the
static route.";
}
leaf output-interface {
type string;
description
" The name of the output interface.";
}
leaf target-VRF-name {
type string;
description
"The VRF name of the target nexthop.";
}
leaf target-nexthop {
type inet:ip-address;
description
" The configured target nexthop.";
}
leaf description {
type string;
description
" The description of the static route.";
}
leaf preference {
type uint32;
description "Specifies route preference.";
}
Liang, et al. Expires June 18, 2016 [Page 7]
Internet-Draft Yang Model for Static Routes December 2015
leaf cost {
type uint32;
description "Specifies route cost.";
}
leaf tag {
type uint32;
description "Specifies route tag.";
}
leaf enable-inherit-cost {
type boolean;
default false;
description
"The flag indicates whether the static route should
inherit the cost of the iterated route.";
}
leaf is-permanent {
type boolean;
default false;
description
"The flag indicates whether the static route should
be released permanently.";
}
leaf not-advertise {
type boolean;
default false;
description
"The flag indicates whether the router should not
advertise the static route.";
}
leaf is-iterated-to-host-route {
type boolean;
default false;
description
"The flag indicates whether the static route should be
iterated to a host route.";
}
}
grouping staticrt-BFD-paras {
description
"This group defines the corresponding BFD session
information for detecting the configured nexthop
reachability of the static route.";
Liang, et al. Expires June 18, 2016 [Page 8]
Internet-Draft Yang Model for Static Routes December 2015
leaf BFD-enable {
type boolean;
description
" The flag indicates whether the router enable
the corresponding BFD session for this static route.";
}
leaf BFD-session-name {
type string;
description "The BFD session name.";
}
leaf adminstated-down-not-selected {
type boolean;
description
"If this flag is true,it indicates that the corresponding
static route should not be selected when the BFD session
associated with it is in the AdminDown State.";
}
}
grouping staticrt-reachability-paras {
description
"This group defines the reachability detecting session
information for detecting the configured nexthop
reachability of the static route.";
uses staticrt-BFD-paras;
}
grouping staticrt-BFD-state {
description
"This group defines the corresponding BFD session state
as a detecting result of the configured nexthop
reachability.";
leaf BFD-state {
type string;
config false;
description "The BFD session state.";
}
leaf local-address {
type inet:ip-address;
config false;
description
"the local IP address of the corresponding BFD session.";
}
Liang, et al. Expires June 18, 2016 [Page 9]
Internet-Draft Yang Model for Static Routes December 2015
leaf remote-address {
type inet:ip-address;
config false;
description
"the remote IP address of the corresponding BFD session.";
}
}
grouping staticrt-reachability-state {
description
"This group defines the reachability detecting session
state as a detecting result of the configured nexthop
reachability.";
uses staticrt-BFD-state;
}
container staticrt {
description
"Container for static route configuration and state";
container staticrt-cfg {
description
"Configuration for static route.";
list staticrt-topo {
key "VRF-name address-family topo-name";
description
"Configuration of a static route list.";
leaf topo-name {
type string;
description
"The topology name of the destination ip prefix
belonging to.";
}
leaf VRF-name {
type string;
description
"The VRF-name of the staticrt-entry";
}
leaf address-family {
type identityref {
base address-family;
}
description
"address-family of the staticrt-entry";
}
leaf enable-FRR {
Liang, et al. Expires June 18, 2016 [Page 10]
Internet-Draft Yang Model for Static Routes December 2015
type boolean;
description
"Enable FRR.FRR is implemented only on static routes
that are manually configured. That is, FRR is not
implemented on iterated next hops.";
}
list staticrt-entries {
key "ip-prefix ip-prefix-mask output-interface "
+"target-VRF-name target-nexthop";
ordered-by system;
uses staticrt-entry;
uses staticrt-reachability-paras;
description
"Define static routes.";
}
}
}
container staticrt-state {
config false;
description
"Operational state of static routes.";
container staticrt-rib{
description
"Define the operational state data for static routes.";
list staticrt-route {
description
"Static routes are organized into list of routes.";
leaf index {
type uint32;
description
"Static route entry index.";
}
leaf topo-name {
type string;
description
"The topology name of the destination ip prefix
belonging to.";
}
leaf VRF-name {
type string;
Liang, et al. Expires June 18, 2016 [Page 11]
Internet-Draft Yang Model for Static Routes December 2015
description
"VRF-name of the set of static routes";
}
leaf address-family {
type string;
description
"Address-family of the set of static-routes";
}
uses staticrt-entry;
uses staticrt-reachability-paras;
leaf iterated-nexthop {
type inet:ip-address;
config false;
description "The iterated nexthop.";
}
leaf iterated-output-interface {
type string;
config false;
description "The iterated output interface name.";
}
leaf label {
type uint32;
config false;
description "Specifies egress label.";
}
leaf route-state {
type string;
config false;
description "Route state.";
}
leaf interface-state {
type string;
config false;
description "The configured output interface state.";
}
uses staticrt-reachability-state;
}
}
container staticrt-statistics {
config false;
description
Liang, et al. Expires June 18, 2016 [Page 12]
Internet-Draft Yang Model for Static Routes December 2015
"Define the statistics of list of static routes.";
list staticrt-stats {
description
"Statistics of list of static routes per VRF &
Address-family & topology.";
leaf topo-name {
type string;
description
"The topology name of the destination ip prefix
belonging to.";
}
leaf VRF-name {
type string;
description
"Vrf-name of the set of static routes";
}
leaf address-family {
type string;
description
"Address-family of the set of static-routes";
}
list static-route-stats {
description
"This defines the static route statistics of
each static route.";
uses staticrt-entry;
leaf classified-pkts {
type uint64;
description
" Number of total packets which matched
to the static route";
}
leaf classified-bytes {
type uint64;
description
" Number of total bytes which matched
to the static route";
}
}
}
}
}
Liang, et al. Expires June 18, 2016 [Page 13]
Internet-Draft Yang Model for Static Routes December 2015
}
container BFD-paras-cfg {
description
"This container defines the corresponding BFD session
information for detecting the configured nexthop
reachability of the static route.";
leaf BFD-enable {
type boolean;
description
"The flag indicates whether the router enable
the corresponding BFD session for this static route.";
}
list BFD-session-paras {
key "BFD-session-name";
description "The BFD sessions for static routes";
leaf BFD-session-name {
type string;
description "The BFD session name.";
}
leaf address-family {
type identityref {
base address-family;
}
description
" address-family of the staticrt-entry";
}
leaf interface-name {
type string;
description "Interface name.";
}
leaf destination-VRF-name {
type string;
description "Destination vpn instance name for Gateway.";
}
leaf nexthop {
type inet:ip-address;
description "NextHop address.";
}
leaf local-ip-address {
Liang, et al. Expires June 18, 2016 [Page 14]
Internet-Draft Yang Model for Static Routes December 2015
type inet:ip-address;
description "The local ip address of the BFD session.";
}
leaf min-tx-interval {
type uint32;
description "Min transmit interval.";
}
leaf min-rx-interval {
type uint32;
description "Min receive interval.";
}
leaf multiplier {
type uint32;
description "Multiplier value.";
}
}
}
}
<CODE ENDS>
4. IANA Considerations
This document registers a URI in the "IETF XML Registry" [RFC3688].
Following the format in [RFC3688], the following registration has
been made.
URI: urn:ietf:params:xml:ns:yang:ietf-staticrt
Registrant Contact: The RTGWG WG of the IETF.
XML: N/A; the requested URI is an XML namespace.
This document registers a YANG module in the "YANG Module Names"
registry [RFC6020].
Name: ietf-staticrt
Namespace: urn:ietf:params:xml:ns:yang:ietf-staticrt
Prefix: staticrt
Reference: RFC xxxx
Liang, et al. Expires June 18, 2016 [Page 15]
Internet-Draft Yang Model for Static Routes December 2015
5. Security Considerations
The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model
[RFC6536] provides the means to restrict access for particular
NETCONF users to a pre-configured subset of all available NETCONF
protocol operations and content.
There are a number of data nodes defined in the YANG module which are
writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., <edit-config>)
to these data nodes without proper protection can have a negative
effect on network operations.
6. Acknowledgements
The editor of this document wishes to thank Eric Wu, Guangying Zheng,
Baohua Song, Xiangfeng Ding for the guidance and support in coming up
with this draft.
7. References
7.1. NormativeInformative
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004,
<http://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010,
<http://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<http://www.rfc-editor.org/info/rfc6242>.
Liang, et al. Expires June 18, 2016 [Page 16]
Internet-Draft Yang Model for Static Routes December 2015
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536,
DOI 10.17487/RFC6536, March 2012,
<http://www.rfc-editor.org/info/rfc6536>.
7.2. Informative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
Authors' Addresses
Qiandeng Liang
Huawei Technologies
101 Software Avenue, Yuhuatai District
Nanjing 210012
China
Email: liangqiandeng@huawei.com
Gang Yan
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: yangang@huawei.com
Shunwan Zhuang
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing 100095
China
Email: zhuangshunwan@huawei.com
Liang, et al. Expires June 18, 2016 [Page 17]