draft-ietf-netmod-routing-cfg-08.txt | draft-ietf-netmod-routing-cfg-09.txt | |||
---|---|---|---|---|
NETMOD L. Lhotka | NETMOD L. Lhotka | |||
Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
Intended status: Standards Track February 11, 2013 | Intended status: Standards Track February 23, 2013 | |||
Expires: August 15, 2013 | Expires: August 27, 2013 | |||
A YANG Data Model for Routing Management | A YANG Data Model for Routing Management | |||
draft-ietf-netmod-routing-cfg-08 | draft-ietf-netmod-routing-cfg-09 | |||
Abstract | Abstract | |||
This document contains a specification of three YANG modules. | This document contains a specification of three YANG modules. | |||
Together they form the core routing data model which serves as a | Together they form the core routing data model which serves as a | |||
framework for configuring and managing a routing subsystem. It is | framework for configuring and managing a routing subsystem. It is | |||
expected that these modules will be augmented by additional YANG | expected that these modules will be augmented by additional YANG | |||
modules defining data models for individual routing protocols and | modules defining data models for individual routing protocols and | |||
other related functions. The core routing data model provides common | other related functions. The core routing data model provides common | |||
building blocks for such extensions - router instances, routes, | building blocks for such extensions - router instances, routes, | |||
skipping to change at page 1, line 37 | skipping to change at page 1, line 37 | |||
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 August 15, 2013. | This Internet-Draft will expire on August 27, 2013. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2013 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 | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Terminology and Notation . . . . . . . . . . . . . . . . . . . 4 | 2. Terminology and Notation . . . . . . . . . . . . . . . . . . . 5 | |||
2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 4 | 2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 5 | |||
2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 5 | 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 6 | |||
2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 5 | 2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 6 | |||
3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
4. The Design of the Core Routing Data Model . . . . . . . . . . 8 | 4. The Design of the Core Routing Data Model . . . . . . . . . . 9 | |||
4.1. Router . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 4.1. Router . . . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.1.1. Configuration of IPv6 Router Interfaces . . . . . . . 11 | 4.1.1. Configuration of IPv6 Router Interfaces . . . . . . . 12 | |||
4.2. Routes . . . . . . . . . . . . . . . . . . . . . . . . . . 13 | 4.2. Routes . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.3. Routing Tables . . . . . . . . . . . . . . . . . . . . . . 13 | 4.3. Routing Tables . . . . . . . . . . . . . . . . . . . . . . 14 | |||
4.4. Routing Protocols . . . . . . . . . . . . . . . . . . . . 15 | 4.4. Routing Protocols . . . . . . . . . . . . . . . . . . . . 16 | |||
4.4.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . . 15 | 4.4.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . . 16 | |||
4.4.2. Defining New Routing Protocols . . . . . . . . . . . . 16 | 4.4.2. Defining New Routing Protocols . . . . . . . . . . . . 17 | |||
4.5. Route Filters . . . . . . . . . . . . . . . . . . . . . . 17 | 4.5. Route Filters . . . . . . . . . . . . . . . . . . . . . . 18 | |||
4.6. RPC Operations . . . . . . . . . . . . . . . . . . . . . . 18 | 4.6. RPC Operations . . . . . . . . . . . . . . . . . . . . . . 19 | |||
5. Interactions with Other YANG Modules . . . . . . . . . . . . . 19 | 5. Interactions with Other YANG Modules . . . . . . . . . . . . . 20 | |||
5.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . . 19 | 5.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . . 20 | |||
5.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . . 19 | 5.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . . 20 | |||
6. Routing YANG Module . . . . . . . . . . . . . . . . . . . . . 21 | 6. Routing YANG Module . . . . . . . . . . . . . . . . . . . . . 22 | |||
7. IPv4 Unicast Routing YANG Module . . . . . . . . . . . . . . . 35 | 7. IPv4 Unicast Routing YANG Module . . . . . . . . . . . . . . . 36 | |||
8. IPv6 Unicast Routing YANG Module . . . . . . . . . . . . . . . 39 | 8. IPv6 Unicast Routing YANG Module . . . . . . . . . . . . . . . 40 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 49 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 51 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 52 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 52 | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . . 53 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 54 | |||
12.2. Informative References . . . . . . . . . . . . . . . . . . 53 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 54 | |||
Appendix A. The Complete Data Tree . . . . . . . . . . . . . . . 54 | Appendix A. The Complete Data Tree . . . . . . . . . . . . . . . 55 | |||
Appendix B. Example: Adding a New Routing Protocol . . . . . . . 56 | Appendix B. Example: Adding a New Routing Protocol . . . . . . . 57 | |||
Appendix C. Example: NETCONF <get> Reply . . . . . . . . . . . . 59 | Appendix C. Example: NETCONF <get> Reply . . . . . . . . . . . . 60 | |||
Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 64 | Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 65 | |||
D.1. Changes Between Versions -07 and -08 . . . . . . . . . . . 64 | D.1. Changes Between Versions -08 and -09 . . . . . . . . . . . 65 | |||
D.2. Changes Between Versions -06 and -07 . . . . . . . . . . . 64 | D.2. Changes Between Versions -07 and -08 . . . . . . . . . . . 65 | |||
D.3. Changes Between Versions -05 and -06 . . . . . . . . . . . 64 | D.3. Changes Between Versions -06 and -07 . . . . . . . . . . . 65 | |||
D.4. Changes Between Versions -04 and -05 . . . . . . . . . . . 65 | D.4. Changes Between Versions -05 and -06 . . . . . . . . . . . 65 | |||
D.5. Changes Between Versions -03 and -04 . . . . . . . . . . . 65 | D.5. Changes Between Versions -04 and -05 . . . . . . . . . . . 66 | |||
D.6. Changes Between Versions -02 and -03 . . . . . . . . . . . 66 | D.6. Changes Between Versions -03 and -04 . . . . . . . . . . . 67 | |||
D.7. Changes Between Versions -01 and -02 . . . . . . . . . . . 66 | D.7. Changes Between Versions -02 and -03 . . . . . . . . . . . 67 | |||
D.8. Changes Between Versions -00 and -01 . . . . . . . . . . . 67 | D.8. Changes Between Versions -01 and -02 . . . . . . . . . . . 68 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 68 | D.9. Changes Between Versions -00 and -01 . . . . . . . . . . . 68 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 69 | ||||
1. Introduction | 1. Introduction | |||
This document contains a specification of the following YANG modules: | This document contains a specification of the following YANG modules: | |||
o Module "ietf-routing" provides generic components of a routing | o Module "ietf-routing" provides generic components of a routing | |||
data model. | data model. | |||
o Module "ietf-ipv4-unicast-routing" augments the "ietf-routing" | o Module "ietf-ipv4-unicast-routing" augments the "ietf-routing" | |||
module with additional data specific to IPv4 unicast. | module with additional data specific to IPv4 unicast. | |||
skipping to change at page 4, line 41 | skipping to change at page 5, line 41 | |||
o mandatory node | o mandatory node | |||
o module | o module | |||
o state data | o state data | |||
o RPC operation | o RPC operation | |||
2.1. Glossary of New Terms | 2.1. Glossary of New Terms | |||
active route: a route which is actually used for sending packets. | active route: a route that is actually used for sending packets. If | |||
If there are multiple candidate routes with a matching destination | there are multiple candidate routes with a matching destination | |||
prefix, then it is up to the routing algorithm to select the | prefix, then it is up to the routing algorithm to select the | |||
active route (or several active routes in the case of multi-path | active route (or several active routes in the case of multi-path | |||
routing). | routing). | |||
core routing data model: YANG data model resulting from the | core routing data model: YANG data model resulting from the | |||
combination of "ietf-routing", "ietf-ipv4-unicast-routing" and | combination of "ietf-routing", "ietf-ipv4-unicast-routing" and | |||
"ietf-ipv6-unicast-routing" modules. | "ietf-ipv6-unicast-routing" modules. | |||
direct route: a route to a directly connected network. | direct route: a route to a directly connected network. | |||
skipping to change at page 8, line 13 | skipping to change at page 9, line 13 | |||
models with different logic. | models with different logic. | |||
4. The Design of the Core Routing Data Model | 4. The Design of the Core Routing Data Model | |||
The core routing data model consists of three YANG modules. The | The core routing data model consists of three YANG modules. The | |||
first module, "ietf-routing", defines the generic components of a | first module, "ietf-routing", defines the generic components of a | |||
routing system. The other two modules, "ietf-ipv4-unicast-routing" | routing system. The other two modules, "ietf-ipv4-unicast-routing" | |||
and "ietf-ipv6-unicast-routing", augment the "ietf-routing" module | and "ietf-ipv6-unicast-routing", augment the "ietf-routing" module | |||
with additional data nodes that are needed for IPv4 and IPv6 unicast | with additional data nodes that are needed for IPv4 and IPv6 unicast | |||
routing, respectively. An abridged view of the data hierarchy is | routing, respectively. An abridged view of the data hierarchy is | |||
given in Figure 1. See Appendix A for the complete data tree. | shown in Figure 1. See Appendix A for the complete data tree. | |||
+--rw routing | +--rw routing | |||
+--rw router [name] | +--rw router [name] | |||
| +--rw name | | +--rw name | |||
| +--rw type? | | +--rw type? | |||
| +--rw enabled? | | +--rw enabled? | |||
| +--rw router-id? | | +--rw router-id? | |||
| +--rw description? | | +--rw description? | |||
| +--rw main-routing-tables | | +--rw main-routing-tables | |||
| | +--rw main-routing-table [address-family safi] | | | +--rw main-routing-table [address-family safi] | |||
skipping to change at page 11, line 29 | skipping to change at page 12, line 29 | |||
An implementation MAY pose restrictions on allowed router types and | An implementation MAY pose restrictions on allowed router types and | |||
on the number of supported instances for each type. For example, a | on the number of supported instances for each type. For example, a | |||
simple router implementation may support only one router instance of | simple router implementation may support only one router instance of | |||
the default type "standard-router". | the default type "standard-router". | |||
Each network layer interface has to be assigned to one or more router | Each network layer interface has to be assigned to one or more router | |||
instances in order to be able to participate in packet forwarding, | instances in order to be able to participate in packet forwarding, | |||
routing protocols and other operations of those router instances. | routing protocols and other operations of those router instances. | |||
The assignment is accomplished by creating a corresponding entry in | The assignment is accomplished by creating a corresponding entry in | |||
the list of router interfaces ("rt:interface"). The key of the list | the list of router interfaces ("rt:interface"). The key of the list | |||
entry MUST be the name of a configured network layer interface, i.e., | entry is the name of a configured network layer interface, i.e., the | |||
the value of a node /if:interfaces/if:interface/if:name defined in | value of a node /if:interfaces/if:interface/if:name defined in the | |||
the "ietf-interfaces" module [YANG-IF]. | "ietf-interfaces" module [YANG-IF]. | |||
In YANG terms, the list of router interfaces is modeled as the "list" | In YANG terms, the list of router interfaces is modeled as the "list" | |||
node rather than "leaf-list" in order to allow for adding, via | node rather than "leaf-list" in order to allow for adding, via | |||
augmentation, other configuration or state data related to the | augmentation, other configuration or state data related to the | |||
corresponding router interface. | corresponding router interface. | |||
Implementations MAY specify additional rules for the assignment of | Implementations MAY specify additional rules for the assignment of | |||
interfaces to logical routers. For example, it may be required that | interfaces to logical routers. For example, it may be required that | |||
the sets of interfaces assigned to different logical routers be | the sets of interfaces assigned to different logical routers be | |||
disjoint. | disjoint. | |||
skipping to change at page 17, line 7 | skipping to change at page 18, line 7 | |||
additional routing protocol types. Such a new module has to define | additional routing protocol types. Such a new module has to define | |||
the protocol-specific configuration and state data, and it has to fit | the protocol-specific configuration and state data, and it has to fit | |||
it into the core routing framework in the following way: | it into the core routing framework in the following way: | |||
o A new identity MUST be defined for the routing protocol and its | o A new identity MUST be defined for the routing protocol and its | |||
base identity MUST be set to "rt:routing-protocol", or to an | base identity MUST be set to "rt:routing-protocol", or to an | |||
identity derived from "rt:routing-protocol". | identity derived from "rt:routing-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 as state data by augmenting the definition of | have to be inserted as state data by augmenting the definitions of | |||
the node | the nodes | |||
/rt:routing-tables/rt:routing-table/rt:route, | /rt:routing-tables/rt:routing-table/rt:route | |||
and possibly to other places in the configuration, state data and | and | |||
RPC input or output. | ||||
o Per-interface configuration parameters can be added by augmenting | /rt:active-route/rt:output/rt:route, | |||
the data node "rt:interface" (the list of router interfaces). | ||||
o Other configuration parameters and state data can be defined by | and possibly other places in the configuration, state data and RPC | |||
augmenting the "routing-protocol" data node. | input or output. | |||
By using the "when" statement, the augmented per-interface and other | o Configuration parameters and state data for the new protocol can | |||
configuration parameters specific to the new protocol SHOULD be made | be defined by augmenting the "routing-protocol" data node. | |||
o Per-interface configuration, including activation of the routing | ||||
protocol on individual interfaces, can use references to entries | ||||
in the list of router interfaces (rt:interface). | ||||
By using the "when" statement, the augmented configuration parameters | ||||
and state data specific to the new protocol SHOULD be made | ||||
conditional and valid only if the value of "rt:type" is equal to the | conditional and valid only if the value of "rt:type" is equal to the | |||
new protocol's identity. It is also RECOMMENDED that the protocol- | new protocol's identity. It is also RECOMMENDED that the protocol- | |||
specific data be encapsulated in appropriately named containers. | specific data be encapsulated in appropriately named containers. | |||
The above steps are implemented by the example YANG module for the | The above steps are implemented by the example YANG module for the | |||
RIP routing protocol in Appendix B. | RIP routing protocol in Appendix B. | |||
4.5. Route Filters | 4.5. Route Filters | |||
The core routing data model provides a skeleton for defining route | The core routing data model provides a skeleton for defining route | |||
skipping to change at page 21, line 11 | skipping to change at page 22, line 11 | |||
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. | |||
6. Routing YANG Module | 6. Routing YANG Module | |||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | |||
actual RFC number and all occurrences of the revision date below with | actual RFC number and all occurrences of the revision date below with | |||
the date of RFC publication (and remove this note). | the date of RFC publication (and remove this note). | |||
<CODE BEGINS> file "ietf-routing@2013-02-11.yang" | <CODE BEGINS> file "ietf-routing@2013-02-23.yang" | |||
module ietf-routing { | module ietf-routing { | |||
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"; | |||
} | } | |||
skipping to change at page 22, line 17 | skipping to change at page 23, line 17 | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
RFC itself for full legal notices. | RFC itself for full legal notices. | |||
"; | "; | |||
revision 2013-02-11 { | revision 2013-02-23 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management"; | "RFC XXXX: A YANG Data Model for Routing Management"; | |||
} | } | |||
/* Identities */ | /* Identities */ | |||
identity router-type { | identity router-type { | |||
description | description | |||
skipping to change at page 27, line 41 | skipping to change at page 28, line 41 | |||
} | } | |||
leaf description { | leaf description { | |||
type string; | type string; | |||
description | description | |||
"Textual description of the router."; | "Textual description of the router."; | |||
} | } | |||
container main-routing-tables { | container main-routing-tables { | |||
description | description | |||
"Main routing tables used by the router instance."; | "Main routing tables used by the router instance."; | |||
list main-routing-table { | list main-routing-table { | |||
must "not(address-family!=/routing/routing-tables/" | must "address-family=/routing/routing-tables/" | |||
+ "routing-table[name=current()/name]/" | + "routing-table[name=current()/name]/" | |||
+ "address-family or safi!=/routing/routing-tables/" | + "address-family and safi=/routing/routing-tables/" | |||
+ "routing-table[name=current()/name]/safi)" { | + "routing-table[name=current()/name]/safi" { | |||
error-message "Address family mismatch."; | error-message "Address family mismatch."; | |||
description | description | |||
"The entry's address family MUST match that of the | "The entry's address family MUST match that of the | |||
referenced routing table."; | referenced routing table."; | |||
} | } | |||
key "address-family safi"; | key "address-family safi"; | |||
description | description | |||
"Each list entry specifies the main routing table for one | "Each list entry specifies the main routing table for one | |||
address family. | address family. | |||
skipping to change at page 29, line 44 | skipping to change at page 30, line 44 | |||
from the 'routing-protocol' base identity."; | from the 'routing-protocol' base identity."; | |||
} | } | |||
container connected-routing-tables { | container connected-routing-tables { | |||
description | description | |||
"Container for connected routing tables. | "Container for connected routing tables. | |||
"; | "; | |||
list connected-routing-table { | list connected-routing-table { | |||
must "not(/routing/routing-tables/" | must "not(/routing/routing-tables/" | |||
+ "routing-table[name=current()/" | + "routing-table[name=current()/" | |||
+ "preceding-sibling::connected-routing-table/" | + "preceding-sibling::connected-routing-table/" | |||
+ "name]/address-family=/routing/routing-tables/" | + "name and address-family=/routing/routing-tables/" | |||
+ "routing-table[name=current()/name]/" | + "routing-table[name=current()/name]/" | |||
+ "address-family and /routing/routing-tables/" | + "address-family and safi=/routing/routing-tables/" | |||
+ "routing-table[name=current()/" | + "routing-table[name=current()/name]/safi])" { | |||
+ "preceding-sibling::connected-routing-table/" | ||||
+ "name]/safi=/routing/routing-tables/" | ||||
+ "routing-table[name=current()/name]/safi)" { | ||||
error-message "Duplicate address family for " | error-message "Duplicate address family for " | |||
+ "connected routing tables."; | + "connected routing tables."; | |||
description | description | |||
"For each AFN/SAFI pair there MUST NOT be more than | "For each AFN/SAFI pair there MUST NOT be more than | |||
one connected routing table."; | one connected routing table."; | |||
} | } | |||
key "name"; | key "name"; | |||
description | description | |||
"List of routing tables to which the routing protocol | "List of routing tables to which the routing protocol | |||
instance is connected (at most one routing table per | instance is connected (at most one routing table per | |||
address family). | address family). | |||
If no connected routing table is configured for an | If no connected routing table is configured for an | |||
address family, the routing protocol MUST be | address family, the routing protocol MUST be | |||
operationally connected to the main routing table | operationally connected to the main routing table | |||
skipping to change at page 33, line 37 | skipping to change at page 34, line 33 | |||
} | } | |||
} | } | |||
container route-filters { | container route-filters { | |||
description | description | |||
"Container for configured route filters."; | "Container for configured route filters."; | |||
list route-filter { | list route-filter { | |||
key "name"; | key "name"; | |||
description | description | |||
"Route filters are used for filtering and/or manipulating | "Route filters are used for filtering and/or manipulating | |||
routes that are passed between a routing protocol and a | routes that are passed between a routing protocol and a | |||
routing table or vice versa, or between two routing | routing table and vice versa, or between two routing | |||
tables. | tables. | |||
It is expected that other modules augment this list with | It is expected that other modules augment this list with | |||
contents specific for a particular route filter type. | contents specific for a particular route filter type. | |||
"; | "; | |||
leaf name { | leaf name { | |||
type string; | type string; | |||
description | description | |||
"An arbitrary name of the route filter."; | "An arbitrary name of the route filter."; | |||
} | } | |||
skipping to change at page 35, line 11 | skipping to change at page 36, line 11 | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
7. IPv4 Unicast Routing YANG Module | 7. IPv4 Unicast Routing YANG Module | |||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | |||
actual RFC number and all occurrences of the revision date below with | actual RFC number and all occurrences of the revision date below with | |||
the date of RFC publication (and remove this note). | the date of RFC publication (and remove this note). | |||
<CODE BEGINS> file "ietf-ipv4-unicast-routing@2013-02-11.yang" | <CODE BEGINS> file "ietf-ipv4-unicast-routing@2013-02-23.yang" | |||
module ietf-ipv4-unicast-routing { | module 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"; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
} | } | |||
skipping to change at page 36, line 13 | skipping to change at page 37, line 13 | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
RFC itself for full legal notices. | RFC itself for full legal notices. | |||
"; | "; | |||
revision 2013-02-11 { | revision 2013-02-23 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management"; | "RFC XXXX: A YANG Data Model for Routing Management"; | |||
} | } | |||
/* Groupings */ | /* Groupings */ | |||
grouping route-content { | grouping route-content { | |||
description | description | |||
skipping to change at page 39, line 11 | skipping to change at page 40, line 11 | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IPv6 Unicast Routing YANG Module | 8. IPv6 Unicast Routing YANG Module | |||
RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | RFC Ed.: In this section, replace all occurrences of 'XXXX' with the | |||
actual RFC number and all occurrences of the revision date below with | actual RFC number and all occurrences of the revision date below with | |||
the date of RFC publication (and remove this note). | the date of RFC publication (and remove this note). | |||
<CODE BEGINS> file "ietf-ipv6-unicast-routing@2013-02-11.yang" | <CODE BEGINS> file "ietf-ipv6-unicast-routing@2013-02-23.yang" | |||
module ietf-ipv6-unicast-routing { | module 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"; | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix "rt"; | |||
} | } | |||
skipping to change at page 40, line 21 | skipping to change at page 41, line 21 | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see the | This version of this YANG module is part of RFC XXXX; see the | |||
RFC itself for full legal notices. | RFC itself for full legal notices. | |||
"; | "; | |||
revision 2013-02-11 { | revision 2013-02-23 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for Routing Management"; | "RFC XXXX: A YANG Data Model for Routing Management"; | |||
} | } | |||
/* Groupings */ | /* Groupings */ | |||
grouping route-content { | grouping route-content { | |||
description | description | |||
skipping to change at page 53, line 43 | skipping to change at page 54, line 43 | |||
[RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. | |||
Bierman, "NETCONF Configuration Protocol", RFC 6241, | Bierman, "NETCONF Configuration Protocol", RFC 6241, | |||
June 2011. | June 2011. | |||
[YANG-IF] Bjorklund, M., "A YANG Data Model for Interface | [YANG-IF] Bjorklund, M., "A YANG Data Model for Interface | |||
Configuration", draft-ietf-netmod-interfaces-cfg-09 (work | Configuration", draft-ietf-netmod-interfaces-cfg-09 (work | |||
in progress), February 2013. | in progress), February 2013. | |||
[YANG-IP] Bjorklund, M., "A YANG Data Model for IP Configuration", | [YANG-IP] Bjorklund, M., "A YANG Data Model for IP Configuration", | |||
draft-ietf-netmod-ip-cfg-09 (work in progress), | draft-ietf-netmod-ip-cfg-09 (work in progress), | |||
February 2012. | February 2013. | |||
12.2. Informative References | 12.2. Informative References | |||
[RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG | [RFC6087] Bierman, A., "Guidelines for Authors and Reviewers of YANG | |||
Data Model Documents", RFC 6087, January 2011. | Data Model Documents", RFC 6087, January 2011. | |||
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure | |||
Shell (SSH)", RFC 6242, June 2011. | Shell (SSH)", RFC 6242, June 2011. | |||
Appendix A. The Complete Data Tree | Appendix A. The Complete Data Tree | |||
skipping to change at page 57, line 12 | skipping to change at page 58, line 12 | |||
augment "/rt:routing/rt:routing-tables/rt:routing-table/rt:routes/" | augment "/rt:routing/rt:routing-tables/rt:routing-table/rt:routes/" | |||
+ "rt:route" { | + "rt:route" { | |||
description | description | |||
"RIP-specific route attributes."; | "RIP-specific route attributes."; | |||
uses route-content; | uses route-content; | |||
} | } | |||
augment "/rt:active-route/rt:output/rt:route" { | augment "/rt:active-route/rt:output/rt:route" { | |||
description | description | |||
"RIP-specific route attributes."; | "RIP-specific route attributes in the output of 'active-route' | |||
RPC."; | ||||
uses route-content; | uses route-content; | |||
} | } | |||
augment "/rt:routing/rt:router/rt:interfaces/rt:interface" { | ||||
when "../../rt:routing-protocols/rt:routing-protocol/rt:type = " | ||||
+ "'rip:rip'" { | ||||
description | ||||
'This augment is only valid for a routing protocol instance | ||||
of type "rip".'; | ||||
} | ||||
container rip { | ||||
description | ||||
"Per-interface RIP configuration."; | ||||
leaf enabled { | ||||
type boolean; | ||||
default "true"; | ||||
} | ||||
leaf metric { | ||||
type rip-metric; | ||||
default "1"; | ||||
} | ||||
} | ||||
} | ||||
augment "/rt:routing/rt:router/rt:routing-protocols/" | augment "/rt:routing/rt:router/rt:routing-protocols/" | |||
+ "rt:routing-protocol" { | + "rt:routing-protocol" { | |||
when "rt:type = 'rip:rip'" { | when "rt:type = 'rip:rip'" { | |||
description | description | |||
'This augment is only valid for a routing protocol instance | 'This augment is only valid for a routing protocol instance | |||
of type "rip".'; | of type "rip".'; | |||
} | } | |||
container rip { | container rip { | |||
description | description | |||
"Global RIP configuration."; | "RIP instance configuration."; | |||
container interfaces { | ||||
description | ||||
"Per-interface RIP configuration."; | ||||
list interface { | ||||
key "name"; | ||||
description | ||||
"RIP is enabled on interfaces that have an entry in this | ||||
list, unless 'enabled' is set to 'false' for that | ||||
entry."; | ||||
leaf name { | ||||
type leafref { | ||||
path "../../../../../../rt:interfaces/rt:interface/" | ||||
+ "rt:name"; | ||||
} | ||||
} | ||||
leaf enabled { | ||||
type boolean; | ||||
default "true"; | ||||
} | ||||
leaf metric { | ||||
type rip-metric; | ||||
default "1"; | ||||
} | ||||
} | ||||
} | ||||
leaf update-interval { | leaf update-interval { | |||
type uint8 { | type uint8 { | |||
range "10..60"; | range "10..60"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
default "30"; | default "30"; | |||
description | description | |||
"Time interval between periodic updates."; | "Time interval between periodic updates."; | |||
} | } | |||
} | } | |||
skipping to change at page 64, line 9 | skipping to change at page 65, line 9 | |||
</rt:routing-table> | </rt:routing-table> | |||
</rt:routing-tables> | </rt:routing-tables> | |||
</rt:routing> | </rt:routing> | |||
</data> | </data> | |||
</rpc-reply> | </rpc-reply> | |||
Appendix D. Change Log | Appendix D. Change Log | |||
RFC Editor: remove this section upon publication as an RFC. | RFC Editor: remove this section upon publication as an RFC. | |||
D.1. Changes Between Versions -07 and -08 | D.1. Changes Between Versions -08 and -09 | |||
o Fixed "must" expresion for "connected-routing-table". | ||||
o Simplified "must" expression for "main-routing-table". | ||||
o Moved per-interface configuration of a new routing protocol under | ||||
'routing-protocol'. This also affects the 'example-rip' module. | ||||
D.2. Changes Between Versions -07 and -08 | ||||
o Changed reference from RFC6021 to RFC6021bis. | o Changed reference from RFC6021 to RFC6021bis. | |||
D.2. Changes Between Versions -06 and -07 | D.3. Changes Between Versions -06 and -07 | |||
o The contents of <get-reply> in Appendix C was updated: "eth[01]" | o The contents of <get-reply> in Appendix C was updated: "eth[01]" | |||
is used as the value of "location", and "forwarding" is on for | is used as the value of "location", and "forwarding" is on for | |||
both interfaces and both IPv4 and IPv6. | both interfaces and both IPv4 and IPv6. | |||
o The "must" expression for "main-routing-table" was modified to | o The "must" expression for "main-routing-table" was modified to | |||
avoid redundant error messages reporting address family mismatch | avoid redundant error messages reporting address family mismatch | |||
when "name" points to a non-existent routing table. | when "name" points to a non-existent routing table. | |||
o The default behavior for IPv6 RA prefix advertisements was | o The default behavior for IPv6 RA prefix advertisements was | |||
clarified. | clarified. | |||
o Changed type of "rt:router-id" to "ip:dotted-quad". | o Changed type of "rt:router-id" to "ip:dotted-quad". | |||
o Type of "rt:router-id" changed to "yang:dotted-quad". | o Type of "rt:router-id" changed to "yang:dotted-quad". | |||
o Fixed missing prefixes in XPath expressions. | o Fixed missing prefixes in XPath expressions. | |||
D.3. Changes Between Versions -05 and -06 | D.4. Changes Between Versions -05 and -06 | |||
o Document title changed: "Configuration" was replaced by | o Document title changed: "Configuration" was replaced by | |||
"Management". | "Management". | |||
o New typedefs "routing-table-ref" and "route-filter-ref". | o New typedefs "routing-table-ref" and "route-filter-ref". | |||
o Double slashes "//" were removed from XPath expressions and | o Double slashes "//" were removed from XPath expressions and | |||
replaced with the single "/". | replaced with the single "/". | |||
o Removed uniqueness requirement for "router-id". | o Removed uniqueness requirement for "router-id". | |||
skipping to change at page 65, line 5 | skipping to change at page 66, line 15 | |||
o Complete data tree is now in Appendix A. | o Complete data tree is now in Appendix A. | |||
o Changed type of "source-protocol" from "leafref" to "string". | o Changed type of "source-protocol" from "leafref" to "string". | |||
o Clarified the relationship between routing protocol instances and | o Clarified the relationship between routing protocol instances and | |||
connected routing tables. | connected routing tables. | |||
o Added a must constraint saying that a routing table connected to | o Added a must constraint saying that a routing table connected to | |||
the direct pseudo-protocol must not be a main routing table. | the direct pseudo-protocol must not be a main routing table. | |||
D.4. Changes Between Versions -04 and -05 | D.5. Changes Between Versions -04 and -05 | |||
o Routing tables are now global, i.e., "routing-tables" is a child | o Routing tables are now global, i.e., "routing-tables" is a child | |||
of "routing" rather than "router". | of "routing" rather than "router". | |||
o "must" statement for "static-routes" changed to "when". | o "must" statement for "static-routes" changed to "when". | |||
o Added "main-routing-tables" containing references to main routing | o Added "main-routing-tables" containing references to main routing | |||
tables for each address family. | tables for each address family. | |||
o Removed the defaults for "address-family" and "safi" and made them | o Removed the defaults for "address-family" and "safi" and made them | |||
skipping to change at page 65, line 40 | skipping to change at page 67, line 5 | |||
o The "direct" pseudo-protocol is always connected to main routing | o The "direct" pseudo-protocol is always connected to main routing | |||
tables. | tables. | |||
o Entries in the list of connected routing tables renamed from | o Entries in the list of connected routing tables renamed from | |||
"routing-table" to "connected-routing-table". | "routing-table" to "connected-routing-table". | |||
o Added "must" constraint saying that a routing table must not be | o Added "must" constraint saying that a routing table must not be | |||
its own recipient. | its own recipient. | |||
D.5. Changes Between Versions -03 and -04 | D.6. Changes Between Versions -03 and -04 | |||
o Changed "error-tag" for both RPC methods from "missing element" to | o Changed "error-tag" for both RPC methods from "missing element" to | |||
"data-missing". | "data-missing". | |||
o Removed the decrementing behavior for advertised IPv6 prefix | o Removed the decrementing behavior for advertised IPv6 prefix | |||
parameters "valid-lifetime" and "preferred-lifetime". | parameters "valid-lifetime" and "preferred-lifetime". | |||
o Changed the key of the static route lists from "seqno" to "id" | o Changed the key of the static route lists from "seqno" to "id" | |||
because the routes needn't be sorted. | because the routes needn't be sorted. | |||
o Added 'must' constraint saying that "preferred-lifetime" must not | o Added 'must' constraint saying that "preferred-lifetime" must not | |||
be greater than "valid-lifetime". | be greater than "valid-lifetime". | |||
D.6. Changes Between Versions -02 and -03 | D.7. Changes Between Versions -02 and -03 | |||
o Module "iana-afn-safi" moved to I-D "iana-if-type". | o Module "iana-afn-safi" moved to I-D "iana-if-type". | |||
o Removed forwarding table. | o Removed forwarding table. | |||
o RPC "get-route" changed to "active-route". Its output is a list | o RPC "get-route" changed to "active-route". Its output is a list | |||
of routes (for multi-path routing). | of routes (for multi-path routing). | |||
o New RPC "route-count". | o New RPC "route-count". | |||
skipping to change at page 66, line 37 | skipping to change at page 68, line 5 | |||
"ietf-ip". | "ietf-ip". | |||
o Added "router-id" leaf. | o Added "router-id" leaf. | |||
o Specified the names for IPv4/IPv6 unicast main routing tables. | o Specified the names for IPv4/IPv6 unicast main routing tables. | |||
o Route parameter "last-modified" changed to "age". | o Route parameter "last-modified" changed to "age". | |||
o Added container "recipient-routing-tables". | o Added container "recipient-routing-tables". | |||
D.7. Changes Between Versions -01 and -02 | D.8. Changes Between Versions -01 and -02 | |||
o Added module "ietf-ipv6-unicast-routing". | o Added module "ietf-ipv6-unicast-routing". | |||
o The example in Appendix C now uses IP addresses from blocks | o The example in Appendix C now uses IP addresses from blocks | |||
reserved for documentation. | reserved for documentation. | |||
o Direct routes appear by default in the forwarding table. | o Direct routes appear by default in the forwarding table. | |||
o Network layer interfaces must be assigned to a router instance. | o Network layer interfaces must be assigned to a router instance. | |||
Additional interface configuration may be present. | Additional interface configuration may be present. | |||
skipping to change at page 67, line 14 | skipping to change at page 68, line 29 | |||
o Additional "must" statements were added. | o Additional "must" statements were added. | |||
o The "route-content" grouping for IPv4 and IPv6 unicast now | o The "route-content" grouping for IPv4 and IPv6 unicast now | |||
includes the material from the "ietf-routing" version via "uses | includes the material from the "ietf-routing" version via "uses | |||
rt:route-content". | rt:route-content". | |||
o Explanation of symbols in the tree representation of data model | o Explanation of symbols in the tree representation of data model | |||
hierarchy. | hierarchy. | |||
D.8. Changes Between Versions -00 and -01 | D.9. Changes Between Versions -00 and -01 | |||
o AFN/SAFI-independent stuff was moved to the "ietf-routing" module. | o AFN/SAFI-independent stuff was moved to the "ietf-routing" module. | |||
o Typedefs for AFN and SAFI were placed in a separate "iana-afn- | o Typedefs for AFN and SAFI were placed in a separate "iana-afn- | |||
safi" module. | safi" module. | |||
o Names of some data nodes were changed, in particular "routing- | o Names of some data nodes were changed, in particular "routing- | |||
process" is now "router". | process" is now "router". | |||
o The restriction of a single AFN/SAFI per router was lifted. | o The restriction of a single AFN/SAFI per router was lifted. | |||
End of changes. 38 change blocks. | ||||
111 lines changed or deleted | 129 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |