draft-ietf-netmod-rfc8022bis-05.txt | draft-ietf-netmod-rfc8022bis-06.txt | |||
---|---|---|---|---|
NETMOD Working Group L. Lhotka | NETMOD Working Group L. Lhotka | |||
Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
Intended status: Standards Track A. Lindem | Intended status: Standards Track A. Lindem | |||
Expires: June 23, 2018 Cisco Systems | Expires: June 25, 2018 Cisco Systems | |||
Y. Qu | Y. Qu | |||
Huawei | Huawei | |||
December 20, 2017 | December 22, 2017 | |||
A YANG Data Model for Routing Management (NDMA Version) | A YANG Data Model for Routing Management (NDMA Version) | |||
draft-ietf-netmod-rfc8022bis-05 | draft-ietf-netmod-rfc8022bis-06 | |||
Abstract | Abstract | |||
This document contains a specification of three YANG modules and one | This document contains a specification of three YANG modules and one | |||
submodule. Together they form the core routing data model that | submodule. Together they form the core routing data model that | |||
serves as a framework for configuring and managing a routing | serves as a framework for configuring and managing a routing | |||
subsystem. It is expected that these modules will be augmented by | subsystem. It is expected that these modules will be augmented by | |||
additional YANG modules defining data models for control-plane | additional YANG modules defining data models for control-plane | |||
protocols, route filters, and other functions. The core routing data | protocols, route filters, and other functions. The core routing data | |||
model provides common building blocks for such extensions -- routes, | model provides common building blocks for such extensions -- routes, | |||
Routing Information Bases (RIBs), and control-plane protocols. | Routing Information Bases (RIBs), and control-plane protocols. | |||
The main difference from the first version is that this version fully | The YANG modules in this document conform to the Network Management | |||
conforms to the Network Management Datastore Architecture (NMDA). | Datastore Architecture (NMDA). This document obsoletes RFC 8022. | |||
Consequently, this document obsoletes RFC 8022. | ||||
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. | |||
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 June 23, 2018. | This Internet-Draft will expire on June 25, 2018. | |||
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 41 ¶ | skipping to change at page 2, line 36 ¶ | |||
5.1. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5.1. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
5.2. Routing Information Base (RIB) . . . . . . . . . . . . . 9 | 5.2. Routing Information Base (RIB) . . . . . . . . . . . . . 9 | |||
5.3. Control-Plane Protocol . . . . . . . . . . . . . . . . . 9 | 5.3. Control-Plane Protocol . . . . . . . . . . . . . . . . . 9 | |||
5.3.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . 10 | 5.3.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . 10 | |||
5.3.2. Defining New Control-Plane Protocols . . . . . . . . 10 | 5.3.2. Defining New Control-Plane Protocols . . . . . . . . 10 | |||
5.4. Parameters of IPv6 Router Advertisements . . . . . . . . 11 | 5.4. Parameters of IPv6 Router Advertisements . . . . . . . . 11 | |||
6. Interactions with Other YANG Modules . . . . . . . . . . . . 12 | 6. Interactions with Other YANG Modules . . . . . . . . . . . . 12 | |||
6.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . 12 | 6.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . 12 | |||
6.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . 12 | 6.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . 12 | |||
7. Routing Management YANG Module . . . . . . . . . . . . . . . 13 | 7. Routing Management YANG Module . . . . . . . . . . . . . . . 13 | |||
8. IPv4 Unicast Routing Management YANG Module . . . . . . . . . 28 | 8. IPv4 Unicast Routing Management YANG Module . . . . . . . . . 27 | |||
9. IPv6 Unicast Routing Management YANG Module . . . . . . . . . 36 | 9. IPv6 Unicast Routing Management YANG Module . . . . . . . . . 35 | |||
9.1. IPv6 Router Advertisements Submodule . . . . . . . . . . 44 | 9.1. IPv6 Router Advertisements Submodule . . . . . . . . . . 43 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 54 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 55 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 55 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 56 | 12.1. Normative References . . . . . . . . . . . . . . . . . . 56 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 57 | 12.2. Informative References . . . . . . . . . . . . . . . . . 57 | |||
Appendix A. The Complete Schema Tree . . . . . . . . . . . . . . 59 | Appendix A. The Complete Schema Tree . . . . . . . . . . . . . . 59 | |||
Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 64 | Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 64 | |||
Appendix C. Example: Adding a New Control-Plane Protocol . . . . 64 | Appendix C. Example: Adding a New Control-Plane Protocol . . . . 64 | |||
Appendix D. Data Tree Example . . . . . . . . . . . . . . . . . 67 | Appendix D. Data Tree Example . . . . . . . . . . . . . . . . . 67 | |||
Appendix E. NETCONF Get Data Reply Example . . . . . . . . . . . 73 | Appendix E. NETCONF Get Data Reply Example . . . . . . . . . . . 73 | |||
skipping to change at page 3, line 37 ¶ | skipping to change at page 3, line 34 ¶ | |||
covering more-sophisticated routing systems. While these three | covering more-sophisticated routing systems. While these three | |||
modules can be directly used for simple IP devices with static | modules can be directly used for simple IP devices with static | |||
routing (see Appendix B), their main purpose is to provide essential | routing (see Appendix B), their main purpose is to provide essential | |||
building blocks for more-complicated data models involving multiple | building blocks for more-complicated data models involving multiple | |||
control-plane protocols, multicast routing, additional address | control-plane protocols, multicast routing, additional address | |||
families, and advanced functions such as route filtering or policy | families, and advanced functions such as route filtering or policy | |||
routing. To this end, it is expected that the core routing data | routing. To this end, it is expected that the core routing data | |||
model will be augmented by numerous modules developed by various IETF | model will be augmented by numerous modules developed by various IETF | |||
working groups. | working groups. | |||
The main difference from the first version is that this version fully | The YANG modules in this document conform to the Network Management | |||
conforms to the Network Management Datastore Architecture (NMDA) | Datastore Architecture (NMDA) [I-D.ietf-netmod-revised-datastores]. | |||
[I-D.ietf-netmod-revised-datastores]. Consequently, this document | This document obsoletes RFC 8022 [RFC8022]. | |||
obsoletes RFC 8022 [RFC8022]. | ||||
2. Terminology and Notation | 2. Terminology and Notation | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
The following terms are defined in | The following terms are defined in | |||
[I-D.ietf-netmod-revised-datastores]: | [I-D.ietf-netmod-revised-datastores]: | |||
skipping to change at page 4, line 40 ¶ | skipping to change at page 4, line 36 ¶ | |||
o leaf | o leaf | |||
o list | o list | |||
o mandatory node | o mandatory node | |||
o module | o module | |||
o schema tree | o schema tree | |||
o state data | ||||
o RPC (Remote Procedure Call) operation | o RPC (Remote Procedure Call) operation | |||
2.1. Glossary of New Terms | 2.1. Glossary of New Terms | |||
core routing data model: YANG data model comprising "ietf-routing", | core routing data model: YANG data model comprising "ietf-routing", | |||
"ietf-ipv4-unicast-routing", and "ietf-ipv6-unicast-routing" | "ietf-ipv4-unicast-routing", and "ietf-ipv6-unicast-routing" | |||
modules. | modules. | |||
direct route: a route to a directly connected network. | direct route: a route to a directly connected network. | |||
Routing Information Base (RIB): An object containing a list of | Routing Information Base (RIB): An object containing a list of | |||
routes together with other information. See Section 5.2 for | routes together with other information. See Section 5.2 for | |||
details. | details. | |||
system-controlled entry: An entry of a list in operational state | system-controlled entry: An entry of a list in operational state | |||
("config false") that is created by the system independently of | ("config false") that is created by the system independently of | |||
what has been explicitly configured. See Section 4.1 for details. | what has been explicitly configured. See Section 4.1 for details. | |||
user-controlled entry: An entry of a list in operational state data | user-controlled entry: An entry of a list in operational state | |||
("config false") that is created and deleted as a direct | ("config false") that is created and deleted as a direct | |||
consequence of certain configuration changes. See Section 4.1 for | consequence of certain configuration changes. See Section 4.1 for | |||
details. | details. | |||
2.2. Tree Diagrams | 2.2. Tree Diagrams | |||
Tree diagrams used in this document follow the notation defined in | Tree diagrams used in this document follow the notation defined in | |||
[I-D.ietf-netmod-yang-tree-diagrams]. | [I-D.ietf-netmod-yang-tree-diagrams]. | |||
2.3. Prefixes in Data Node Names | 2.3. Prefixes in Data Node Names | |||
skipping to change at page 7, line 50 ¶ | skipping to change at page 7, line 50 ¶ | |||
describes these components in more detail. | describes these components in more detail. | |||
4.1. System-Controlled and User-Controlled List Entries | 4.1. System-Controlled and User-Controlled List Entries | |||
The core routing data model defines several lists in the schema tree, | The core routing data model defines several lists in the schema tree, | |||
such as "rib", that have to be populated with at least one entry in | such as "rib", that have to be populated with at least one entry in | |||
any properly functioning device, and additional entries may be | any properly functioning device, and additional entries may be | |||
configured by a client. | configured by a client. | |||
In such a list, the server creates the required item as a so-called | In such a list, the server creates the required item as a so-called | |||
system-controlled entry in state data in the operational state | system-controlled entry in the operational state, i.e., inside read- | |||
datastore [I-D.ietf-netmod-revised-datastores], i.e., inside read- | ||||
only lists in the "routing" container. | only lists in the "routing" container. | |||
An example can be seen in Appendix D: the "/routing/ribs/rib" list | An example can be seen in Appendix D: the "/routing/ribs/rib" list | |||
has two system-controlled entries named "ipv4-master" and | has two system-controlled entries named "ipv4-master" and | |||
"ipv6-master". | "ipv6-master". | |||
Additional entries may be created in the configuration by a client, | Additional entries may be created in the configuration by a client, | |||
e.g., via the NETCONF protocol. These are so-called user-controlled | e.g., via the NETCONF protocol. These are so-called user-controlled | |||
entries. If the server accepts a configured user-controlled entry, | entries. If the server accepts a configured user-controlled entry, | |||
then this entry also appears in the state data version of the list. | then this entry also appears in the operational state version of the | |||
list. | ||||
Corresponding entries in both versions of the list (in operational | Corresponding entries in both versions of the list (in the intended | |||
state datastore and intended datastore | configuration and the operational state) | |||
[I-D.ietf-netmod-revised-datastores] have the same value of the list | [I-D.ietf-netmod-revised-datastores] have the same value of the list | |||
key. | key. | |||
A client may also provide supplemental configuration of system- | A client may also provide supplemental configuration of system- | |||
controlled entries. To do so, the client creates a new entry in the | controlled entries. To do so, the client creates a new entry in the | |||
configuration with the desired contents. In order to bind this entry | configuration with the desired contents. In order to bind this entry | |||
to the corresponding entry in the state data list in the operational | to the corresponding entry in the operational state, the key of the | |||
state datastore, the key of the configuration entry has to be set to | configuration entry has to be set to the same value as the key of the | |||
the same value as the key of the state entry. | operational state entry. | |||
Deleting a user-controlled entry from the configuration list results | Deleting a user-controlled entry from the intended configuration | |||
in the removal of the corresponding entry in the state data list. In | results in the removal of the corresponding entry in the operational | |||
contrast, if client delets a system-controlled entry from the | state list. In contrast, if client deletes a system-controlled entry | |||
configuration list in the intended datastore, only the extra | from the intended configuration, only the extra configuration | |||
configuration specified in that entry is removed but the | specified in that entry is removed but the corresponding operational | |||
corresponding state data entry remains in the list in the operational | state entry is not removed. | |||
datastore. | ||||
5. Basic Building Blocks | 5. Basic Building Blocks | |||
This section describes the essential components of the core routing | This section describes the essential components of the core routing | |||
data model. | data model. | |||
5.1. Route | 5.1. Route | |||
Routes are basic elements of information in a routing system. The | Routes are basic elements of information in a routing system. The | |||
core routing data model defines only the following minimal set of | core routing data model defines only the following minimal set of | |||
skipping to change at page 9, line 8 ¶ | skipping to change at page 9, line 8 ¶ | |||
attribute is mandatory. | attribute is mandatory. | |||
o "route-preference": an integer value (also known as administrative | o "route-preference": an integer value (also known as administrative | |||
distance) that is used for selecting a preferred route among | distance) that is used for selecting a preferred route among | |||
routes with the same destination prefix. A lower value means a | routes with the same destination prefix. A lower value means a | |||
more preferred route. | more preferred route. | |||
o "next-hop": determines the outgoing interface and/or next-hop | o "next-hop": determines the outgoing interface and/or next-hop | |||
address(es), or a special operation to be performed with a packet. | address(es), or a special operation to be performed with a packet. | |||
Routes are primarily state data that appear as entries of RIBs | Routes are primarily system state that appear as entries of RIBs | |||
(Section 5.2) but they may also be found in configuration data, for | (Section 5.2) but they may also be found in configuration data, for | |||
example, as manually configured static routes. In the latter case, | example, as manually configured static routes. In the latter case, | |||
configurable route attributes are generally a subset of attributes | configurable route attributes are generally a subset of attributes | |||
defined for RIB routes. | defined for RIB routes. | |||
5.2. Routing Information Base (RIB) | 5.2. Routing Information Base (RIB) | |||
Every implementation of the core routing data model manages one or | Every implementation of the core routing data model manages one or | |||
more Routing Information Bases (RIBs). A RIB is a list of routes | more Routing Information Bases (RIBs). A RIB is a list of routes | |||
complemented with administrative data. Each RIB contains only routes | complemented with administrative data. Each RIB contains only routes | |||
of one address family. An address family is represented by an | of one address family. An address family is represented by an | |||
identity derived from the "rt:address-family" base identity. | identity derived from the "rt:address-family" base identity. | |||
In the core routing data model, RIBs are state data represented as | In the core routing data model, RIBs are represented as entries of | |||
entries of the list "/routing/ribs/rib" in the operational state | the list "/routing/ribs/rib" in the operational state. The contents | |||
datastore [I-D.ietf-netmod-revised-datastores]. The contents of RIBs | of RIBs are controlled and manipulated by control-plane protocol | |||
are controlled and manipulated by control-plane protocol operations | operations that may result in route additions, removals, and | |||
that may result in route additions, removals, and modifications. | modifications. This also includes manipulations via the "static" | |||
This also includes manipulations via the "static" and/or "direct" | and/or "direct" pseudo-protocols; see Section 5.3.1. | |||
pseudo-protocols; see Section 5.3.1. | ||||
For every supported address family, exactly one RIB MUST be marked as | For every supported address family, exactly one RIB MUST be marked as | |||
the so-called default RIB to which control-plane protocols place | the so-called default RIB to which control-plane protocols place | |||
their routes by default. | their routes by default. | |||
Simple router implementations that do not advertise the feature | Simple router implementations that do not advertise the feature | |||
"multiple-ribs" will typically create one system-controlled RIB per | "multiple-ribs" will typically create one system-controlled RIB per | |||
supported address family and mark it as the default RIB. | supported address family and mark it as the default RIB. | |||
More-complex router implementations advertising the "multiple-ribs" | More-complex router implementations advertising the "multiple-ribs" | |||
skipping to change at page 10, line 33 ¶ | skipping to change at page 10, line 32 ¶ | |||
the configuration of network interface addresses; see Section 6.2. | the configuration of network interface addresses; see Section 6.2. | |||
A pseudo-protocol of the type "static" allows for specifying routes | A pseudo-protocol of the type "static" allows for specifying routes | |||
manually. It MAY be configured in zero or multiple instances, | manually. It MAY be configured in zero or multiple instances, | |||
although a typical configuration will have exactly one instance. | although a typical configuration will have exactly one instance. | |||
5.3.2. Defining New Control-Plane Protocols | 5.3.2. Defining New Control-Plane Protocols | |||
It is expected that future YANG modules will create data models for | It is expected that future YANG modules will create data models for | |||
additional control-plane protocol types. Such a new module has to | additional control-plane protocol types. Such a new module has to | |||
define the protocol-specific configuration and state data, and it has | define the protocol-specific data nodes, and it has to integrate into | |||
to integrate it into the core routing framework in the following way: | the core routing framework in the following way: | |||
o A new identity MUST be defined for the control-plane protocol, and | o A new identity MUST be defined for the control-plane protocol, and | |||
its base identity MUST be set to "rt:control-plane-protocol" or to | its base identity MUST be set to "rt:control-plane-protocol" or to | |||
an identity derived from "rt:control-plane-protocol". | an identity derived from "rt:control-plane-protocol". | |||
o Additional route attributes MAY be defined, preferably in one | o Additional route attributes MAY be defined, preferably in one | |||
place by means of defining a YANG grouping. The new attributes | place by means of defining a YANG grouping. The new attributes | |||
have to be inserted by augmenting the definitions of the node | have to be inserted by augmenting the definitions of the node | |||
/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | |||
and possibly other places in the configuration, state data, | and possibly other places in the schema tree. | |||
notifications, and input/output parameters of actions or RPC | ||||
operations. | ||||
o Configuration parameters and/or state data for the new protocol | o Data nodes for the new protocol can be defined by augmenting the | |||
can be defined by augmenting the "control-plane-protocol" data | "control-plane-protocol" data node under "/routing". | |||
node under "/routing". | ||||
By using a "when" statement, the augmented configuration parameters | By using a "when" statement, the augmented data nodes specific to the | |||
and state data specific to the new protocol SHOULD be made | new protocol SHOULD be made conditional and valid only if the value | |||
conditional and valid only if the value of "rt:type" or | of "rt:type" or "rt:source-protocol" is equal to (or derived from) | |||
"rt:source-protocol" is equal to (or derived from) the new protocol's | the new protocol's identity. | |||
identity. | ||||
It is also RECOMMENDED that protocol-specific data nodes be | It is also RECOMMENDED that protocol-specific data nodes be | |||
encapsulated in an appropriately named container with presence. Such | encapsulated in an appropriately named container with presence. Such | |||
a container may contain mandatory data nodes that are otherwise | a container may contain mandatory data nodes that are otherwise | |||
forbidden at the top level of an augment. | forbidden at the top level of an augment. | |||
The above steps are implemented by the example YANG module for the | The above steps are implemented by the example YANG module for the | |||
Routing Information Protocol (RIP) in Appendix C. | Routing Information Protocol (RIP) in Appendix C. | |||
5.4. Parameters of IPv6 Router Advertisements | 5.4. Parameters of IPv6 Router Advertisements | |||
YANG module "ietf-ipv6-router-advertisements" (Section 9.1), which is | YANG module "ietf-ipv6-router-advertisements" (Section 9.1), which is | |||
a submodule of the "ietf-ipv6-unicast-routing" module, augments the | a submodule of the "ietf-ipv6-unicast-routing" module, augments the | |||
configuration and state data of IPv6 interfaces with definitions of | schema tree of IPv6 interfaces with definitions of the following | |||
the following variables as required by Section 6.2.1 of [RFC4861]: | variables as required by Section 6.2.1 of [RFC4861]: | |||
o send-advertisements | o send-advertisements | |||
o max-rtr-adv-interval | o max-rtr-adv-interval | |||
o min-rtr-adv-interval | o min-rtr-adv-interval | |||
o managed-flag | o managed-flag | |||
o other-config-flag | o other-config-flag | |||
skipping to change at page 13, line 41 ¶ | skipping to change at page 13, line 32 ¶ | |||
In addition, the "ietf-ip" module allows for configuring IPv4 and | In addition, the "ietf-ip" module allows for configuring IPv4 and | |||
IPv6 addresses and network prefixes or masks on network-layer | IPv6 addresses and network prefixes or masks on network-layer | |||
interfaces. Configuration of these parameters on an enabled | interfaces. Configuration of these parameters on an enabled | |||
interface MUST result in an immediate creation of the corresponding | interface MUST result in an immediate creation of the corresponding | |||
direct route. The destination prefix of this route is set according | direct route. The destination prefix of this route is set according | |||
to the configured IP address and network prefix/mask, and the | to the configured IP address and network prefix/mask, and the | |||
interface is set as the outgoing interface for that route. | interface is set as the outgoing interface for that route. | |||
7. Routing Management YANG Module | 7. Routing Management YANG Module | |||
<CODE BEGINS> file "ietf-routing@2017-12-20.yang" | <CODE BEGINS> file "ietf-routing@2017-12-22.yang" | |||
module ietf-routing { | module ietf-routing { | |||
yang-version "1.1"; | yang-version "1.1"; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-routing"; | namespace "urn:ietf:params:xml:ns:yang:ietf-routing"; | |||
prefix "rt"; | prefix "rt"; | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix "yang"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-interfaces module | "A Network Management Datastore Architecture (NDMA) | |||
is required."; | compatible version of the ietf-interfaces module | |||
is required."; | ||||
} | } | |||
organization | organization | |||
"IETF NETMOD - Networking Modeling Working Group"; | "IETF NETMOD - Networking Modeling Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:rtgwg@ietf.org> | WG List: <mailto:rtgwg@ietf.org> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz> | <mailto:lhotka@nic.cz> | |||
Acee Lindem | Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Yingzhen Qu | Yingzhen Qu | |||
<mailto:yingzhen.qu@huawei.com>"; | <mailto:yingzhen.qu@huawei.com>"; | |||
skipping to change at page 14, line 41 ¶ | skipping to change at page 14, line 35 ¶ | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
reference "RFC XXXX"; | reference "RFC XXXX"; | |||
revision 2017-12-20 { | revision 2017-12-22 { | |||
description | description | |||
"Network Managment Datastore Architecture (NDMA) Revision"; | "Network Managment Datastore Architecture (NDMA) Revision"; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management | "RFC XXXX: A YANG Data Model for Routing Management | |||
(NDMA Version)"; | (NDMA Version)"; | |||
} | } | |||
revision 2016-11-04 { | revision 2016-11-04 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
skipping to change at page 15, line 23 ¶ | skipping to change at page 15, line 15 ¶ | |||
RIBs. | RIBs. | |||
Servers that do not advertise this feature SHOULD provide | Servers that do not advertise this feature SHOULD provide | |||
exactly one system-controlled RIB per supported address family | exactly one system-controlled RIB per supported address family | |||
and make it also the default RIB. This RIB then appears as an | and make it also the default RIB. This RIB then appears as an | |||
entry of the list /routing/ribs/rib."; | entry of the list /routing/ribs/rib."; | |||
} | } | |||
feature router-id { | feature router-id { | |||
description | description | |||
"This feature indicates that the server supports configuration | "This feature indicates that the server supports of an explicit | |||
of an explicit 32-bit router ID that is used by some routing | 32-bit router ID that is used by some routing protocols. | |||
protocols. | ||||
Servers that do not advertise this feature set a router ID | Servers that do not advertise this feature set a router ID | |||
algorithmically, usually to one of the configured IPv4 | algorithmically, usually to one of the configured IPv4 | |||
addresses. However, this algorithm is implementation | addresses. However, this algorithm is implementation | |||
specific."; | specific."; | |||
} | } | |||
/* Identities */ | /* Identities */ | |||
identity address-family { | identity address-family { | |||
skipping to change at page 19, line 12 ¶ | skipping to change at page 19, line 4 ¶ | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping next-hop-state-content { | grouping next-hop-state-content { | |||
description | description | |||
"Generic parameters of next hops in state data."; | "Generic state parameters of next hops."; | |||
choice next-hop-options { | choice next-hop-options { | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"Options for next hops in state data. | "Options for next hops. | |||
It is expected that further cases will be added through | It is expected that further cases will be added through | |||
augments from other modules, e.g., for recursive | augments from other modules, e.g., for recursive | |||
next hops."; | next hops."; | |||
case simple-next-hop { | case simple-next-hop { | |||
description | description | |||
"This case represents a simple next hop consisting of the | "This case represents a simple next hop consisting of the | |||
next-hop address and/or outgoing interface. | next-hop address and/or outgoing interface. | |||
Modules for address families MUST augment this case with a | Modules for address families MUST augment this case with a | |||
skipping to change at page 20, line 52 ¶ | skipping to change at page 20, line 43 ¶ | |||
} | } | |||
/* Data nodes */ | /* Data nodes */ | |||
container routing { | container routing { | |||
description | description | |||
"Configuration parameters for the routing subsystem."; | "Configuration parameters for the routing subsystem."; | |||
uses router-id { | uses router-id { | |||
if-feature "router-id"; | if-feature "router-id"; | |||
description | description | |||
"Configuration of the global router ID. Routing protocols | "Support for the global router ID. Routing protocols | |||
that use router ID can use this parameter or override it | that use router ID can use this parameter or override it | |||
with another value."; | with another value."; | |||
} | } | |||
container interfaces { | container interfaces { | |||
config "false"; | config "false"; | |||
description | description | |||
"Network-layer interfaces used for routing."; | "Network-layer interfaces used for routing."; | |||
leaf-list interface { | leaf-list interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Each entry is a reference to the name of a configured | "Each entry is a reference to the name of a configured | |||
network-layer interface."; | network-layer interface."; | |||
} | } | |||
} | } | |||
container control-plane-protocols { | container control-plane-protocols { | |||
description | description | |||
"Configuration of control-plane protocol instances."; | "Support for control-plane protocol instances."; | |||
list control-plane-protocol { | list control-plane-protocol { | |||
key "type name"; | key "type name"; | |||
description | description | |||
"Each entry contains configuration of a control-plane | "Each entry contains a control-plane protocol instance."; | |||
protocol instance."; | ||||
leaf type { | leaf type { | |||
type identityref { | type identityref { | |||
base control-plane-protocol; | base control-plane-protocol; | |||
} | } | |||
description | description | |||
"Type of the control-plane protocol - an identity derived | "Type of the control-plane protocol - an identity derived | |||
from the 'control-plane-protocol' base identity."; | from the 'control-plane-protocol' base identity."; | |||
} | } | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
skipping to change at page 22, line 5 ¶ | skipping to change at page 21, line 43 ¶ | |||
"Textual description of the control-plane protocol | "Textual description of the control-plane protocol | |||
instance."; | instance."; | |||
} | } | |||
container static-routes { | container static-routes { | |||
when "derived-from-or-self(../type, 'rt:static')" { | when "derived-from-or-self(../type, 'rt:static')" { | |||
description | description | |||
"This container is only valid for the 'static' routing | "This container is only valid for the 'static' routing | |||
protocol."; | protocol."; | |||
} | } | |||
description | description | |||
"Configuration of the 'static' pseudo-protocol. | "Support for the 'static' pseudo-protocol. | |||
Address-family-specific modules augment this node with | Address-family-specific modules augment this node with | |||
their lists of routes."; | their lists of routes."; | |||
} | } | |||
} | } | |||
} | } | |||
container ribs { | container ribs { | |||
description | description | |||
"Configuration of RIBs."; | "Support for RIBs."; | |||
list rib { | list rib { | |||
key "name"; | key "name"; | |||
description | description | |||
"Each entry contains configuration for a RIB identified by | "Each entry contains configuration for a RIB identified by | |||
the 'name' key. | the 'name' key. | |||
Entries having the same key as a system-controlled entry | Entries having the same key as a system-controlled entry | |||
of the list /routing/ribs/rib are used for | of the list /routing/ribs/rib are used for | |||
configuring parameters of that entry. Other entries | configuring parameters of that entry. Other entries | |||
define additional user-controlled RIBs."; | define additional user-controlled RIBs."; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"The name of the RIB. | "The name of the RIB. | |||
For system-controlled entries, the value of this leaf | For system-controlled entries, the value of this leaf | |||
must be the same as the name of the corresponding entry | must be the same as the name of the corresponding entry | |||
in state data. | in operational state. | |||
For user-controlled entries, an arbitrary name can be | For user-controlled entries, an arbitrary name can be | |||
used."; | used."; | |||
} | } | |||
uses address-family { | uses address-family { | |||
description | description | |||
"The address family of the system-controlled RIB."; | "The address family of the system-controlled RIB."; | |||
} | } | |||
leaf default-rib { | leaf default-rib { | |||
skipping to change at page 28, line 7 ¶ | skipping to change at page 27, line 45 ¶ | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IPv4 Unicast Routing Management YANG Module | 8. IPv4 Unicast Routing Management YANG Module | |||
<CODE BEGINS> file "ietf-ipv4-unicast-routing@2017-12-20.yang" | <CODE BEGINS> file "ietf-ipv4-unicast-routing@2017-12-22.yang" | |||
module ietf-ipv4-unicast-routing { | module ietf-ipv4-unicast-routing { | |||
yang-version "1.1"; | yang-version "1.1"; | |||
namespace | namespace | |||
"urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing"; | "urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing"; | |||
prefix "v4ur"; | prefix "v4ur"; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-routing module | "A Network Management Datastore Architecture (NDMA) | |||
is required."; | compatible version of the ietf-routing module | |||
is required."; | ||||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD - Networking Modeling Working Group"; | "IETF NETMOD - Networking Modeling Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:rtgwg@ietf.org> | WG List: <mailto:rtgwg@ietf.org> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz> | <mailto:lhotka@nic.cz> | |||
Acee Lindem | Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Yingzhen Qu | Yingzhen Qu | |||
<mailto:yingzhen.qu@huawei.com>"; | <mailto:yingzhen.qu@huawei.com>"; | |||
description | description | |||
"This YANG module augments the 'ietf-routing' module with basic | "This YANG module augments the 'ietf-routing' module with basic | |||
configuration and state data for IPv4 unicast routing. The | parameters for IPv4 unicast routing. The model fully conforms | |||
model fully conforms to the Network Management Datastore | to the Network Management Datastore Architecture (NMDA). | |||
Architecture (NMDA). | ||||
Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
identified as authors of the code. All rights reserved. | identified as 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 | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | |||
skipping to change at page 29, line 4 ¶ | skipping to change at page 28, line 41 ¶ | |||
Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
identified as authors of the code. All rights reserved. | identified as 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 | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
reference "RFC XXXX"; | reference "RFC XXXX"; | |||
revision 2017-12-20 { | revision 2017-12-22 { | |||
description | description | |||
"Network Managment Datastore Architecture (NDMA) Revision"; | "Network Managment Datastore Architecture (NDMA) Revision"; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management | "RFC XXXX: A YANG Data Model for Routing Management | |||
(NDMA Version)"; | (NDMA Version)"; | |||
} | } | |||
revision 2016-11-04 { | revision 2016-11-04 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC 8022: A YANG Data Model for Routing Management"; | "RFC 8022: A YANG Data Model for Routing Management"; | |||
} | } | |||
/* Identities */ | /* Identities */ | |||
skipping to change at page 32, line 4 ¶ | skipping to change at page 31, line 42 ¶ | |||
"This augment is valid only for IPv4 unicast."; | "This augment is valid only for IPv4 unicast."; | |||
} | } | |||
description | description | |||
"Augment 'next-hop-list' case in the reply to the | "Augment 'next-hop-list' case in the reply to the | |||
'active-route' action."; | 'active-route' action."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address of the next hop."; | "IPv4 address of the next hop."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes" { | + "rt:control-plane-protocol/rt:static-routes" { | |||
description | description | |||
"This augment defines the configuration of the 'static' | "This augment defines the 'static' pseudo-protocol | |||
pseudo-protocol with data specific to IPv4 unicast."; | with data specific to IPv4 unicast."; | |||
container ipv4 { | container ipv4 { | |||
description | description | |||
"Configuration of a 'static' pseudo-protocol instance | "Support for a 'static' pseudo-protocol instance | |||
consists of a list of routes."; | consists of a list of routes."; | |||
list route { | list route { | |||
key "destination-prefix"; | key "destination-prefix"; | |||
description | description | |||
"A list of static routes."; | "A list of static routes."; | |||
leaf destination-prefix { | leaf destination-prefix { | |||
type inet:ipv4-prefix; | type inet:ipv4-prefix; | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"IPv4 destination prefix."; | "IPv4 destination prefix."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"Textual description of the route."; | "Textual description of the route."; | |||
} | } | |||
container next-hop { | container next-hop { | |||
description | description | |||
"Configuration of next-hop."; | "Support for next-hop."; | |||
uses rt:next-hop-content { | uses rt:next-hop-content { | |||
augment "next-hop-options/simple-next-hop" { | augment "next-hop-options/simple-next-hop" { | |||
description | description | |||
"Augment 'simple-next-hop' case in IPv4 static | "Augment 'simple-next-hop' case in IPv4 static | |||
routes."; | routes."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address of the next hop."; | "IPv4 address of the next hop."; | |||
} | } | |||
skipping to change at page 36, line 7 ¶ | skipping to change at page 35, line 39 ¶ | |||
status obsolete; | status obsolete; | |||
description | description | |||
"IPv4 address of the next hop."; | "IPv4 address of the next hop."; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
9. IPv6 Unicast Routing Management YANG Module | 9. IPv6 Unicast Routing Management YANG Module | |||
<CODE BEGINS> file "ietf-ipv6-unicast-routing@2017-12-20.yang" | <CODE BEGINS> file "ietf-ipv6-unicast-routing@2017-12-22.yang" | |||
module ietf-ipv6-unicast-routing { | module ietf-ipv6-unicast-routing { | |||
yang-version "1.1"; | yang-version "1.1"; | |||
namespace | namespace | |||
"urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing"; | "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing"; | |||
prefix "v6ur"; | prefix "v6ur"; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-routing module | "A Network Management Datastore Architecture (NDMA) | |||
is required."; | compatible version of the ietf-routing module | |||
is required."; | ||||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-interfaces module | "A Network Management Datastore Architecture (NDMA) | |||
is required."; | compatible version of the ietf-interfaces module | |||
is required."; | ||||
} | } | |||
include ietf-ipv6-router-advertisements { | include ietf-ipv6-router-advertisements { | |||
revision-date 2017-12-20; | revision-date 2017-12-22; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD - Networking Modeling Working Group"; | "IETF NETMOD - Networking Modeling Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:rtgwg@ietf.org> | WG List: <mailto:rtgwg@ietf.org> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz> | <mailto:lhotka@nic.cz> | |||
Acee Lindem | Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Yingzhen Qu | Yingzhen Qu | |||
<mailto:yingzhen.qu@huawei.com>"; | <mailto:yingzhen.qu@huawei.com>"; | |||
description | description | |||
"This YANG module augments the 'ietf-routing' module with basic | "This YANG module augments the 'ietf-routing' module with basic | |||
configuration and state data for IPv6 unicast routing. The | parameters for IPv6 unicast routing. The model fully conforms | |||
model fully conforms to the Network Management Datastore | to the Network Management Datastore Architecture (NMDA). | |||
Architecture (NMDA). | ||||
Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
identified as authors of the code. All rights reserved. | identified as 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 | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
reference "RFC XXXX"; | reference "RFC XXXX"; | |||
revision 2017-12-20 { | revision 2017-12-22 { | |||
description | description | |||
"Network Managment Datastore Architecture (NDMA) revision"; | "Network Managment Datastore Architecture (NDMA) revision"; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management | "RFC XXXX: A YANG Data Model for Routing Management | |||
(NDMA Version)"; | (NDMA Version)"; | |||
} | } | |||
/* Identities */ | /* Identities */ | |||
revision 2016-11-04 { | revision 2016-11-04 { | |||
skipping to change at page 40, line 16 ¶ | skipping to change at page 40, line 4 ¶ | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 address of the next hop."; | "IPv6 address of the next hop."; | |||
} | } | |||
} | } | |||
/* Data node augmentations */ | /* Data node augmentations */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes" { | + "rt:control-plane-protocol/rt:static-routes" { | |||
description | description | |||
"This augment defines the configuration of the 'static' | "This augment defines the Support for the 'static' | |||
pseudo-protocol with data specific to IPv6 unicast."; | pseudo-protocol with data specific to IPv6 unicast."; | |||
container ipv6 { | container ipv6 { | |||
description | description | |||
"Configuration of a 'static' pseudo-protocol instance | "Support for a 'static' pseudo-protocol instance | |||
consists of a list of routes."; | consists of a list of routes."; | |||
list route { | list route { | |||
key "destination-prefix"; | key "destination-prefix"; | |||
description | description | |||
"A list of static routes."; | "A list of static routes."; | |||
leaf destination-prefix { | leaf destination-prefix { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
mandatory "true"; | mandatory "true"; | |||
description | description | |||
"IPv6 destination prefix."; | "IPv6 destination prefix."; | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"Textual description of the route."; | "Textual description of the route."; | |||
} | } | |||
container next-hop { | container next-hop { | |||
description | description | |||
"Configuration of next-hop."; | "Support for next-hop."; | |||
uses rt:next-hop-content { | uses rt:next-hop-content { | |||
augment "next-hop-options/simple-next-hop" { | augment "next-hop-options/simple-next-hop" { | |||
description | description | |||
"Augment 'simple-next-hop' case in IPv6 static | "Augment 'simple-next-hop' case in IPv6 static | |||
routes."; | routes."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
description | description | |||
"IPv6 address of the next hop."; | "IPv6 address of the next hop."; | |||
} | } | |||
skipping to change at page 44, line 4 ¶ | skipping to change at page 43, line 40 ¶ | |||
status obsolete; | status obsolete; | |||
description | description | |||
"Augment 'next-hop-list' case in the reply to the | "Augment 'next-hop-list' case in the reply to the | |||
'active-route' action."; | 'active-route' action."; | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ipv6-address; | type inet:ipv6-address; | |||
status obsolete; | status obsolete; | |||
description | description | |||
"IPv6 address of the next hop."; | "IPv6 address of the next hop."; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
9.1. IPv6 Router Advertisements Submodule | 9.1. IPv6 Router Advertisements Submodule | |||
<CODE BEGINS> file "ietf-ipv6-router-advertisements@2017-12-20.yang" | <CODE BEGINS> file "ietf-ipv6-router-advertisements@2017-12-22.yang" | |||
submodule ietf-ipv6-router-advertisements { | submodule ietf-ipv6-router-advertisements { | |||
yang-version "1.1"; | yang-version "1.1"; | |||
belongs-to ietf-ipv6-unicast-routing { | belongs-to ietf-ipv6-unicast-routing { | |||
prefix "v6ur"; | prefix "v6ur"; | |||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix "inet"; | |||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix "if"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-interfaces module | "A Network Management Datastore Architecture (NDMA) | |||
is required."; | compatible version of the ietf-interfaces module | |||
is required."; | ||||
} | } | |||
import ietf-ip { | import ietf-ip { | |||
prefix "ip"; | prefix "ip"; | |||
description "A Network Management Datastore Architecture (NDMA) | description | |||
compatible version of the ietf-ip module is | "A Network Management Datastore Architecture (NDMA) | |||
required."; | compatible version of the ietf-ip module is | |||
required."; | ||||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:rtgwg@ietf.org> | WG List: <mailto:rtgwg@ietf.org> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz> | <mailto:lhotka@nic.cz> | |||
Acee Lindem | Acee Lindem | |||
<mailto:acee@cisco.com> | <mailto:acee@cisco.com> | |||
Yingzhen Qu | Yingzhen Qu | |||
<mailto:yingzhen.qu@huawei.com>"; | <mailto:yingzhen.qu@huawei.com>"; | |||
description | description | |||
"This YANG module augments the 'ietf-ip' module with | "This YANG module augments the 'ietf-ip' module with | |||
configuration and state data of IPv6 router advertisements. | parameters for IPv6 router advertisements. The model fully | |||
conforms to the Network Management Datastore | ||||
The model fully conforms to the Network Management Datastore | ||||
Architecture (NMDA). | Architecture (NMDA). | |||
Copyright (c) 2017 IETF Trust and the persons | Copyright (c) 2017 IETF Trust and the persons | |||
identified as authors of the code. All rights reserved. | identified as 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 | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set 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). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6)."; | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)."; | |||
revision 2017-12-20 { | revision 2017-12-22 { | |||
description | description | |||
"Network Managment Datastore Architecture (NDMA) Revision"; | "Network Managment Datastore Architecture (NDMA) Revision"; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management | "RFC XXXX: A YANG Data Model for Routing Management | |||
(NDMA Version)"; | (NDMA Version)"; | |||
} | } | |||
revision 2016-11-04 { | revision 2016-11-04 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC 8022: A YANG Data Model for Routing Management"; | "RFC 8022: A YANG Data Model for Routing Management"; | |||
} | } | |||
augment "/if:interfaces/if:interface/ip:ipv6" { | augment "/if:interfaces/if:interface/ip:ipv6" { | |||
description | description | |||
"Augment interface configuration with parameters of IPv6 | "Augment interface configuration with parameters of IPv6 | |||
router advertisements."; | router advertisements."; | |||
container ipv6-router-advertisements { | container ipv6-router-advertisements { | |||
description | description | |||
"Configuration of IPv6 Router Advertisements."; | "Support for IPv6 Router Advertisements."; | |||
leaf send-advertisements { | leaf send-advertisements { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"A flag indicating whether or not the router sends | "A flag indicating whether or not the router sends | |||
periodic Router Advertisements and responds to | periodic Router Advertisements and responds to | |||
Router Solicitations."; | Router Solicitations."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | |||
AdvSendAdvertisements."; | AdvSendAdvertisements."; | |||
skipping to change at page 48, line 47 ¶ | skipping to change at page 48, line 38 ¶ | |||
different link layers. | different link layers. | |||
If this parameter is not configured, the device SHOULD | If this parameter is not configured, the device SHOULD | |||
use a value of 3 * max-rtr-adv-interval."; | use a value of 3 * max-rtr-adv-interval."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | |||
AdvDefaultLifeTime."; | AdvDefaultLifeTime."; | |||
} | } | |||
container prefix-list { | container prefix-list { | |||
description | description | |||
"Configuration of prefixes to be placed in Prefix | "Support for prefixes to be placed in Prefix | |||
Information options in Router Advertisement messages | Information options in Router Advertisement messages | |||
sent from the interface. | sent from the interface. | |||
Prefixes that are advertised by default but do not | Prefixes that are advertised by default but do not | |||
have their entries in the child 'prefix' list are | have their entries in the child 'prefix' list are | |||
advertised with the default values of all parameters. | advertised with the default values of all parameters. | |||
The link-local prefix SHOULD NOT be included in the | The link-local prefix SHOULD NOT be included in the | |||
list of advertised prefixes."; | list of advertised prefixes."; | |||
reference | reference | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | |||
AdvPrefixList."; | AdvPrefixList."; | |||
list prefix { | list prefix { | |||
key "prefix-spec"; | key "prefix-spec"; | |||
description | description | |||
"Configuration of an advertised prefix entry."; | "Support for an advertised prefix entry."; | |||
leaf prefix-spec { | leaf prefix-spec { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"IPv6 address prefix."; | "IPv6 address prefix."; | |||
} | } | |||
choice control-adv-prefixes { | choice control-adv-prefixes { | |||
default "advertise"; | default "advertise"; | |||
description | description | |||
"Either the prefix is explicitly removed from the | "Either the prefix is explicitly removed from the | |||
set of advertised prefixes, or the parameters with | set of advertised prefixes, or the parameters with | |||
skipping to change at page 55, line 4 ¶ | skipping to change at page 54, line 40 ¶ | |||
Registrant Contact: The IESG. | Registrant Contact: The IESG. | |||
XML: N/A; the requested URI is an XML namespace. | XML: N/A; the requested URI is an XML namespace. | |||
[RFC8022] registered the following YANG modules in the "YANG Module | [RFC8022] registered the following YANG modules in the "YANG Module | |||
Names" registry [RFC6020]: | Names" registry [RFC6020]: | |||
Name: ietf-routing | Name: ietf-routing | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-routing | Namespace: urn:ietf:params:xml:ns:yang:ietf-routing | |||
Prefix: rt | Prefix: rt | |||
Reference: RFC 8022 | Reference: RFC 8022 | |||
Name: ietf-ipv4-unicast-routing | Name: ietf-ipv4-unicast-routing | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing | Namespace: urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing | |||
Prefix: v4ur | Prefix: v4ur | |||
Reference: RFC 8022 | Reference: RFC 8022 | |||
Name: ietf-ipv6-unicast-routing | Name: ietf-ipv6-unicast-routing | |||
Namespace: urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing | Namespace: urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing | |||
Prefix: v6ur | Prefix: v6ur | |||
Reference: RFC 8022 | Reference: RFC 8022 | |||
This document registers the following YANG submodule in the "YANG | This document registers the following YANG submodule in the "YANG | |||
Module Names" registry [RFC6020]: | Module Names" registry [RFC6020]: | |||
Name: ietf-ipv6-router-advertisements | Name: ietf-ipv6-router-advertisements | |||
Module: ietf-ipv6-unicast-routing | Module: ietf-ipv6-unicast-routing | |||
Reference: RFC 8022 | Reference: RFC 8022 | |||
11. Security Considerations | 11. Security Considerations | |||
The YANG module specified in this document defines a schedma for data | The YANG modules specified in this document define a schema for data | |||
that is designed to be accessed via network management protocols such | that is designed to be accessed via network management protocols such | |||
as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer | |||
is the secure transport layer, and the mandatory-to-implement secure | is the secure transport layer, and the mandatory-to-implement secure | |||
transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer | |||
is HTTPS, and the mandatory-to-implement secure transport is TLS | is HTTPS, and the mandatory-to-implement secure transport is TLS | |||
[RFC5246]. | [RFC5246]. | |||
The NETCONF access control model [RFC6536] provides the means to | The NETCONF access control model [RFC6536] provides the means to | |||
restrict access for particular NETCONF or RESTCONF users to a | restrict access for particular NETCONF or RESTCONF users to a | |||
preconfigured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
skipping to change at page 67, line 22 ¶ | skipping to change at page 67, line 22 ¶ | |||
default "30"; | default "30"; | |||
description | description | |||
"Time interval between periodic updates."; | "Time interval between periodic updates."; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Appendix D. Data Tree Example | Appendix D. 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 from the | |||
encoding [RFC7951], containing both configuration and state data. | operational state, in the JSON encoding [RFC7951]. The data conforms | |||
The data conforms to a data model that is defined by the following | to a data model that is defined by the following YANG library | |||
YANG library specification [RFC7895]: | specification [RFC7895]: | |||
{ | { | |||
"ietf-yang-library:modules-state": { | "ietf-yang-library:modules-state": { | |||
"module-set-id": "c2e1f54169aa7f36e1a6e8d0865d441d3600f9c4", | "module-set-id": "c2e1f54169aa7f36e1a6e8d0865d441d3600f9c4", | |||
"module": [ | "module": [ | |||
{ | { | |||
"name": "ietf-routing", | "name": "ietf-routing", | |||
"revision": "2017-12-20", | "revision": "2017-12-22", | |||
"feature": [ | "feature": [ | |||
"multiple-ribs", | "multiple-ribs", | |||
"router-id" | "router-id" | |||
], | ], | |||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-routing", | "namespace": "urn:ietf:params:xml:ns:yang:ietf-routing", | |||
"conformance-type": "implement" | "conformance-type": "implement" | |||
}, | }, | |||
{ | { | |||
"name": "ietf-ipv4-unicast-routing", | "name": "ietf-ipv4-unicast-routing", | |||
"revision": "2017-12-20", | "revision": "2017-12-22", | |||
"namespace": | "namespace": | |||
"urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing", | "urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing", | |||
"conformance-type": "implement" | "conformance-type": "implement" | |||
}, | }, | |||
{ | { | |||
"name": "ietf-ipv6-unicast-routing", | "name": "ietf-ipv6-unicast-routing", | |||
"revision": "2017-12-20", | "revision": "2017-12-22", | |||
"namespace": | "namespace": | |||
"urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing-3", | "urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing", | |||
"conformance-type": "implement" | "conformance-type": "implement", | |||
"submodule": [ | ||||
{ | ||||
"name": "ietf-ipv6-router-advertisements", | ||||
"revision": "2017-12-22" | ||||
} | ||||
] | ||||
}, | }, | |||
{ | { | |||
"name": "ietf-interfaces", | "name": "ietf-interfaces", | |||
"revision": "2017-12-16", | "revision": "2017-12-16", | |||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces", | "namespace": "urn:ietf:params:xml:ns:yang:ietf-interfaces", | |||
"conformance-type": "implement" | "conformance-type": "implement" | |||
}, | }, | |||
{ | { | |||
"name": "ietf-inet-types", | "name": "ietf-inet-types", | |||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", | "namespace": "urn:ietf:params:xml:ns:yang:ietf-inet-types", | |||
skipping to change at page 68, line 28 ¶ | skipping to change at page 68, line 34 ¶ | |||
}, | }, | |||
{ | { | |||
"name": "ietf-yang-types", | "name": "ietf-yang-types", | |||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types", | "namespace": "urn:ietf:params:xml:ns:yang:ietf-yang-types", | |||
"revision": "2013-07-15", | "revision": "2013-07-15", | |||
"conformance-type": "import" | "conformance-type": "import" | |||
}, | }, | |||
{ | { | |||
"name": "iana-if-type", | "name": "iana-if-type", | |||
"namespace": "urn:ietf:params:xml:ns:yang:iana-if-type", | "namespace": "urn:ietf:params:xml:ns:yang:iana-if-type", | |||
"revision": "", | "revision": "2014-05-08", | |||
"conformance-type": "implement" | "conformance-type": "implement" | |||
}, | }, | |||
{ | { | |||
"name": "ietf-ip", | "name": "ietf-ip", | |||
"revision": "2017-12-16", | "revision": "2017-12-16", | |||
"namespace": "urn:ietf:params:xml:ns:yang:ietf-ip", | "namespace": "urn:ietf:params:xml:ns:yang:ietf-ip", | |||
"conformance-type": "implement" | "conformance-type": "implement" | |||
} | } | |||
] | ] | |||
} | } | |||
skipping to change at page 69, line 49 ¶ | skipping to change at page 69, line 49 ¶ | |||
"discontinuity-time": "2015-10-24T17:11:27+02:00" | "discontinuity-time": "2015-10-24T17:11:27+02:00" | |||
}, | }, | |||
"ietf-ip:ipv4": { | "ietf-ip:ipv4": { | |||
"forwarding": true, | "forwarding": true, | |||
"mtu": 1500, | "mtu": 1500, | |||
"address": [ | "address": [ | |||
{ | { | |||
"ip": "192.0.2.1", | "ip": "192.0.2.1", | |||
"prefix-length": 24 | "prefix-length": 24 | |||
} | } | |||
], | ] | |||
}, | }, | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"forwarding": true, | "forwarding": true, | |||
"mtu": 1500, | "mtu": 1500, | |||
"address": [ | "address": [ | |||
{ | { | |||
"ip": "2001:0db8:0:1::1", | "ip": "2001:0db8:0:1::1", | |||
"prefix-length": 64 | "prefix-length": 64 | |||
} | } | |||
], | ], | |||
"autoconf": { | "autoconf": { | |||
"create-global-addresses": false | "create-global-addresses": false | |||
} | }, | |||
"ietf-ipv6-unicast-routing: | "ietf-ipv6-unicast-routing:ipv6-router-advertisements": { | |||
ipv6-router-advertisements": { | ||||
"send-advertisements": false | "send-advertisements": false | |||
} | } | |||
} | } | |||
}, | }, | |||
{ | { | |||
"name": "eth1", | "name": "eth1", | |||
"type": "iana-if-type:ethernetCsmacd", | "type": "iana-if-type:ethernetCsmacd", | |||
"description": "Interface to the internal network.", | "description": "Interface to the internal network.", | |||
"phys-address": "00:0C:42:E5:B1:EA", | "phys-address": "00:0C:42:E5:B1:EA", | |||
"oper-status": "up", | "oper-status": "up", | |||
skipping to change at page 70, line 37 ¶ | skipping to change at page 70, line 36 ¶ | |||
"discontinuity-time": "2015-10-24T17:11:29+02:00" | "discontinuity-time": "2015-10-24T17:11:29+02:00" | |||
}, | }, | |||
"ietf-ip:ipv4": { | "ietf-ip:ipv4": { | |||
"forwarding": true, | "forwarding": true, | |||
"mtu": 1500, | "mtu": 1500, | |||
"address": [ | "address": [ | |||
{ | { | |||
"ip": "198.51.100.1", | "ip": "198.51.100.1", | |||
"prefix-length": 24 | "prefix-length": 24 | |||
} | } | |||
], | ] | |||
}, | }, | |||
"ietf-ip:ipv6": { | "ietf-ip:ipv6": { | |||
"forwarding": true, | "forwarding": true, | |||
"mtu": 1500, | "mtu": 1500, | |||
"address": [ | "address": [ | |||
{ | { | |||
"ip": "2001:0db8:0:2::1", | "ip": "2001:0db8:0:2::1", | |||
"prefix-length": 64 | "prefix-length": 64 | |||
} | } | |||
], | ], | |||
"autoconf": { | "autoconf": { | |||
"create-global-addresses": false | "create-global-addresses": false | |||
}, | }, | |||
"ietf-ipv6-unicast-routing: | "ietf-ipv6-unicast-routing:ipv6-router-advertisements": { | |||
ipv6-router-advertisements": { | ||||
"send-advertisements": true, | "send-advertisements": true, | |||
"prefix-list": { | "prefix-list": { | |||
"prefix": [ | "prefix": [ | |||
{ | { | |||
"prefix-spec": "2001:db8:0:2::/64" | "prefix-spec": "2001:db8:0:2::/64" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at page 72, line 4 ¶ | skipping to change at page 71, line 50 ¶ | |||
"destination-prefix": "::/0", | "destination-prefix": "::/0", | |||
"next-hop": { | "next-hop": { | |||
"next-hop-address": "2001:db8:0:1::2" | "next-hop-address": "2001:db8:0:1::2" | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
] | ] | |||
}, | ||||
} | ||||
"ribs": { | "ribs": { | |||
"rib": [ | "rib": [ | |||
{ | { | |||
"name": "ipv4-master", | "name": "ipv4-master", | |||
"address-family": | "address-family": | |||
"ietf-ipv4-unicast-routing:ipv4-unicast", | "ietf-ipv4-unicast-routing:ipv4-unicast", | |||
"default-rib": true, | "default-rib": true, | |||
"routes": { | "routes": { | |||
"route": [ | "route": [ | |||
{ | { | |||
skipping to change at page 73, line 44 ¶ | skipping to change at page 73, line 41 ¶ | |||
}, | }, | |||
"source-protocol": "ietf-routing:static", | "source-protocol": "ietf-routing:static", | |||
"route-preference": 5, | "route-preference": 5, | |||
"last-updated": "2015-10-24T18:02:45+02:00" | "last-updated": "2015-10-24T18:02:45+02:00" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
}, | } | |||
} | } | |||
Appendix E. NETCONF Get Data Reply Example | Appendix E. NETCONF Get Data Reply Example | |||
This section gives an example of an XML reply to the NETCONF <get- | This section gives an example of an XML reply to the NETCONF <get- | |||
data> request for <operational> for a device that implements the | data> request for <operational> for a device that implements the | |||
example data models above. | example data models above. | |||
<rpc-reply | <rpc-reply | |||
xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | |||
End of changes. 81 change blocks. | ||||
139 lines changed or deleted | 135 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |