| < draft-ietf-netmod-routing-cfg-11.txt | draft-ietf-netmod-routing-cfg-12.txt > | |||
|---|---|---|---|---|
| NETMOD L. Lhotka | NETMOD L. Lhotka | |||
| Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
| Intended status: Standards Track October 18, 2013 | Intended status: Standards Track November 07, 2013 | |||
| Expires: April 21, 2014 | Expires: May 11, 2014 | |||
| A YANG Data Model for Routing Management | A YANG Data Model for Routing Management | |||
| draft-ietf-netmod-routing-cfg-11 | draft-ietf-netmod-routing-cfg-12 | |||
| 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 - routing instances, routes, | building blocks for such extensions - routing 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 April 21, 2014. | This Internet-Draft will expire on May 11, 2014. | |||
| 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 | |||
| skipping to change at page 2, line 18 ¶ | skipping to change at page 2, line 18 ¶ | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Terminology and Notation . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology and Notation . . . . . . . . . . . . . . . . . . . 5 | |||
| 2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 5 | 2.1. Glossary of New Terms . . . . . . . . . . . . . . . . . . 5 | |||
| 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 6 | 2.2. Tree Diagrams . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 6 | 2.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 6 | |||
| 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. The Design of the Core Routing Data Model . . . . . . . . . . 9 | 4. The Design of the Core Routing Data Model . . . . . . . . . . 9 | |||
| 4.1. System-Controlled and User-Controlled List Entries . . . . 12 | 4.1. System-Controlled and User-Controlled List Entries . . . . 12 | |||
| 4.2. Simple versus Advanced Routers . . . . . . . . . . . . . . 13 | 4.2. Features of Advanced Routers . . . . . . . . . . . . . . . 13 | |||
| 5. Basic Building Blocks . . . . . . . . . . . . . . . . . . . . 15 | 5. Basic Building Blocks . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.1. Routing Instance . . . . . . . . . . . . . . . . . . . . . 15 | 5.1. Routing Instance . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 5.1.1. Parameters of IPv6 Routing Instance Interfaces . . . . 16 | 5.1.1. Parameters of IPv6 Routing Instance Interfaces . . . . 15 | |||
| 5.2. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | 5.2. Route . . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 5.3. Routing Information Base (RIB) . . . . . . . . . . . . . . 17 | 5.3. Routing Information Base (RIB) . . . . . . . . . . . . . . 16 | |||
| 5.3.1. Multiple RIBs per Address Family . . . . . . . . . . . 18 | 5.3.1. Multiple RIBs per Address Family . . . . . . . . . . . 17 | |||
| 5.4. Routing Protocol . . . . . . . . . . . . . . . . . . . . . 18 | 5.4. Routing Protocol . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 5.4.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . . 19 | 5.4.1. Routing Pseudo-Protocols . . . . . . . . . . . . . . . 18 | |||
| 5.4.2. Defining New Routing Protocols . . . . . . . . . . . . 21 | 5.4.2. Defining New Routing Protocols . . . . . . . . . . . . 20 | |||
| 5.5. Route Filter . . . . . . . . . . . . . . . . . . . . . . . 22 | 5.5. Route Filter . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 5.6. RPC Operations . . . . . . . . . . . . . . . . . . . . . . 23 | 5.6. RPC Operations . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 6. Interactions with Other YANG Modules . . . . . . . . . . . . . 24 | 6. Interactions with Other YANG Modules . . . . . . . . . . . . . 23 | |||
| 6.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . . 24 | 6.1. Module "ietf-interfaces" . . . . . . . . . . . . . . . . . 23 | |||
| 6.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . . 24 | 6.2. Module "ietf-ip" . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 7. Routing YANG Module . . . . . . . . . . . . . . . . . . . . . 26 | 7. Routing YANG Module . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 8. IPv4 Unicast Routing YANG Module . . . . . . . . . . . . . . . 48 | 8. IPv4 Unicast Routing YANG Module . . . . . . . . . . . . . . . 47 | |||
| 9. IPv6 Unicast Routing YANG Module . . . . . . . . . . . . . . . 55 | 9. IPv6 Unicast Routing YANG Module . . . . . . . . . . . . . . . 54 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 72 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 71 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 73 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 72 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 74 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 73 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . . 74 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 73 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . . 74 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 73 | |||
| Appendix A. The Complete Data Trees . . . . . . . . . . . . . . . 75 | Appendix A. The Complete Data Trees . . . . . . . . . . . . . . . 74 | |||
| A.1. Configuration Data . . . . . . . . . . . . . . . . . . . . 75 | A.1. Configuration Data . . . . . . . . . . . . . . . . . . . . 74 | |||
| A.2. Operational State Data . . . . . . . . . . . . . . . . . . 77 | A.2. Operational State Data . . . . . . . . . . . . . . . . . . 76 | |||
| Appendix B. Example: Adding a New Routing Protocol . . . . . . . 79 | Appendix B. Example: Adding a New Routing Protocol . . . . . . . 78 | |||
| Appendix C. Example: NETCONF <get> Reply . . . . . . . . . . . . 82 | Appendix C. Example: NETCONF <get> Reply . . . . . . . . . . . . 81 | |||
| Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 88 | Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 87 | |||
| D.1. Changes Between Versions -10 and -11 . . . . . . . . . . . 88 | D.1. Changes Between Versions -11 and -12 . . . . . . . . . . . 87 | |||
| D.2. Changes Between Versions -09 and -10 . . . . . . . . . . . 88 | D.2. Changes Between Versions -10 and -11 . . . . . . . . . . . 87 | |||
| D.3. Changes Between Versions -08 and -09 . . . . . . . . . . . 89 | D.3. Changes Between Versions -09 and -10 . . . . . . . . . . . 87 | |||
| D.4. Changes Between Versions -07 and -08 . . . . . . . . . . . 89 | D.4. Changes Between Versions -08 and -09 . . . . . . . . . . . 88 | |||
| D.5. Changes Between Versions -06 and -07 . . . . . . . . . . . 89 | D.5. Changes Between Versions -07 and -08 . . . . . . . . . . . 88 | |||
| D.6. Changes Between Versions -05 and -06 . . . . . . . . . . . 89 | D.6. Changes Between Versions -06 and -07 . . . . . . . . . . . 88 | |||
| D.7. Changes Between Versions -04 and -05 . . . . . . . . . . . 90 | D.7. Changes Between Versions -05 and -06 . . . . . . . . . . . 88 | |||
| D.8. Changes Between Versions -03 and -04 . . . . . . . . . . . 90 | D.8. Changes Between Versions -04 and -05 . . . . . . . . . . . 89 | |||
| D.9. Changes Between Versions -02 and -03 . . . . . . . . . . . 91 | D.9. Changes Between Versions -03 and -04 . . . . . . . . . . . 90 | |||
| D.10. Changes Between Versions -01 and -02 . . . . . . . . . . . 91 | D.10. Changes Between Versions -02 and -03 . . . . . . . . . . . 90 | |||
| D.11. Changes Between Versions -00 and -01 . . . . . . . . . . . 92 | D.11. Changes Between Versions -01 and -02 . . . . . . . . . . . 91 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 93 | D.12. Changes Between Versions -00 and -01 . . . . . . . . . . . 91 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 92 | ||||
| 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 5, line 46 ¶ | skipping to change at page 5, line 46 ¶ | |||
| 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 that is actually used for sending packets. If | active route: a route that is actually used for sending packets. 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. | |||
| 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. | |||
| routing information base (RIB): An object containing routes together | routing information base (RIB): An object containing routes together | |||
| with other information. See Section 5.3 for details. | with other information. See Section 5.3 for details. | |||
| skipping to change at page 10, line 8 ¶ | skipping to change at page 10, line 8 ¶ | |||
| 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. Figures 1 and 2 show abridged views of the | routing, respectively. Figures 1 and 2 show abridged views of the | |||
| configuration and operational state data hierarchies. See Appendix A | configuration and operational state data hierarchies. See Appendix A | |||
| for the complete data trees. | for the complete data trees. | |||
| +--rw routing | +--rw routing | |||
| +--rw routing-instance* [name] | +--rw routing-instance* [name] | |||
| | +--rw name | | +--rw name | |||
| | +--rw routing-instance-id? | ||||
| | +--rw type? | | +--rw type? | |||
| | +--rw enabled? | | +--rw enabled? | |||
| | +--rw router-id? | | +--rw router-id? | |||
| | +--rw description? | | +--rw description? | |||
| | +--rw default-ribs | | +--rw default-ribs | |||
| | | +--rw default-rib* [address-family] | | | +--rw default-rib* [address-family] | |||
| | | +--rw address-family | | | +--rw address-family | |||
| | | +--rw name | | | +--rw name | |||
| | +--rw interfaces | | +--rw interfaces | |||
| | | +--rw interface* [name] | | | +--rw interface* [name] | |||
| skipping to change at page 10, line 35 ¶ | skipping to change at page 10, line 34 ¶ | |||
| | +--rw description? | | +--rw description? | |||
| | +--rw enabled? | | +--rw enabled? | |||
| | +--rw type | | +--rw type | |||
| | +--rw connected-ribs | | +--rw connected-ribs | |||
| | | ... | | | ... | |||
| | +--rw static-routes | | +--rw static-routes | |||
| | ... | | ... | |||
| +--rw ribs | +--rw ribs | |||
| | +--rw rib* [name] | | +--rw rib* [name] | |||
| | +--rw name | | +--rw name | |||
| | +--rw id? | ||||
| | +--rw address-family | | +--rw address-family | |||
| | +--rw description? | | +--rw description? | |||
| | +--rw recipient-ribs | | +--rw recipient-ribs | |||
| | +--rw recipient-rib* [rib-name] | | +--rw recipient-rib* [rib-name] | |||
| | ... | | ... | |||
| +--rw route-filters | +--rw route-filters | |||
| +--rw route-filter* [name] | +--rw route-filter* [name] | |||
| +--rw name | +--rw name | |||
| +--rw description? | +--rw description? | |||
| +--rw type | +--rw type | |||
| Figure 1: Configuration data hierarchy. | Figure 1: Configuration data hierarchy. | |||
| +--ro routing-state | +--ro routing-state | |||
| +--ro routing-instance* [id] | +--ro routing-instance* [name] | |||
| | +--ro id | | +--ro name | |||
| | +--ro name? | | +--ro id? | |||
| | +--ro type? | | +--ro type? | |||
| | +--ro router-id? | | +--ro router-id? | |||
| | +--ro default-ribs | | +--ro default-ribs | |||
| | | +--ro default-rib* [address-family] | | | +--ro default-rib* [address-family] | |||
| | | +--ro address-family | | | +--ro address-family | |||
| | | +--ro rib-id | | | +--ro rib-id | |||
| | +--ro interfaces | | +--ro interfaces | |||
| | | +--ro interface* [name] | | | +--ro interface* [name] | |||
| | | +--ro name | | | +--ro name | |||
| | | +--ro v6ur:ipv6-router-advertisements | | | +--ro v6ur:ipv6-router-advertisements | |||
| | | ... | | | ... | |||
| | +--ro routing-protocols | | +--ro routing-protocols | |||
| | +--ro routing-protocol* [name] | | +--ro routing-protocol* [name] | |||
| | +--ro name | | +--ro name | |||
| | +--ro type | | +--ro type | |||
| | +--ro connected-ribs | | +--ro connected-ribs | |||
| | ... | | ... | |||
| +--ro ribs | +--ro ribs | |||
| | +--ro rib* [id] | | +--ro rib* [name] | |||
| | +--ro id | | +--ro name | |||
| | +--ro name? | | +--ro id? | |||
| | +--ro address-family | | +--ro address-family | |||
| | +--ro routes | | +--ro routes | |||
| | | +--ro route* [id] | | | +--ro route* | |||
| | | ... | | | ... | |||
| | +--ro recipient-ribs | | +--ro recipient-ribs | |||
| | +--ro recipient-rib* [rib-id] | | +--ro recipient-rib* [rib-id] | |||
| | ... | | ... | |||
| +--ro route-filters | +--ro route-filters | |||
| +--ro route-filter* [name] | +--ro route-filter* [name] | |||
| +--ro name | +--ro name | |||
| +--ro type | +--ro type | |||
| Figure 2: Operational state data hierarchy. | Figure 2: Operational state data hierarchy. | |||
| skipping to change at page 12, line 47 ¶ | skipping to change at page 12, line 47 ¶ | |||
| "static" and "direct" pseudo-protocols). | "static" and "direct" pseudo-protocols). | |||
| o RIBs may also be connected to each other and exchange routes in | o RIBs may also be connected to each other and exchange routes in | |||
| either direction (or both). | either direction (or both). | |||
| o Route exchanges along all connections may be controlled by means | o Route exchanges along all connections may be controlled by means | |||
| of route filters, denoted by "F" in Figure 3. | of route filters, denoted by "F" in Figure 3. | |||
| 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, for example "rt: | The core routing data model defines several lists, for example | |||
| routing-instance" or "rt:rib", that have to be populated with at | "routing-instance" or "rib", that have to be populated with at least | |||
| least one entry in any properly functioning device, and additional | one entry in any properly functioning device, and additional entries | |||
| entries may be configured by the user. | may be configured by the user. | |||
| 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 operational state data, i.e., inside the | system-controlled entry in operational state data, i.e., inside the | |||
| "rt:routing-state" container. | "routing-state" container. | |||
| Additional entries may be created in the configuration by the user | Additional entries may be created in the configuration by the user | |||
| via the NETCONF protocol. These are the so-called user-controlled | 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 operational state version of the | then this entry also appears in the operational state version of the | |||
| list. | list. | |||
| Each version of the list (in operational state data and | Both versions of the list (in operational state data and | |||
| configuration) uses its own set of list keys. In operational state, | configuration) use the "name" leaf as their key. | |||
| the keys are unique numeric identifiers assigned by the server. In | ||||
| configuration, the list keys are selected by the user. | ||||
| The user may also provide supplemental configuration of system- | The user may also provide supplemental configuration of system- | |||
| controlled entries. To do so, the user creates a new entry in the | controlled entries. To do so, the user creates a new entry in the | |||
| configuration with an arbitrary key and desired configuration | configuration with the desired contents. In order to bind this entry | |||
| contents. In order to bind this entry with the corresponding entry | with the corresponding entry in the operational state list, the key | |||
| in the operational state list, the user writes the operational state | of the configuration entry has to be set to the same value as the key | |||
| key as a value of a special leaf that is defined in the data model | of the state entry. | |||
| for this purpose. | ||||
| An example can be seen in Appendix C: the "/routing-state/ | An example can be seen in Appendix C: the "/routing-state/ | |||
| routing-instance" list has a single system-controlled entry whose | routing-instance" list has a single system-controlled entry whose | |||
| "id" key has the value "1415926535". This entry is configured by the | "name" key has the value "rtr0". This entry is configured by the | |||
| "/routing/routing-instance" entry whose "name" key is "rtr0". The | "/routing/routing-instance" entry whose "name" key is also "rtr0". | |||
| binding with the operational state entry is established through the | ||||
| value of the leaf "routing-instance-id". | ||||
| Deleting a user-controlled entry from the configuration list results | Deleting a user-controlled entry from the configuration list results | |||
| in the removal of the corresponding entry in the operational state | in the removal of the corresponding entry in the operational state | |||
| list. In contrast, if a system-controlled entry is deleted from the | list. In contrast, if a system-controlled entry is deleted from the | |||
| configuration list, only the extra configuration specified in that | configuration list, only the extra configuration specified in that | |||
| entry is removed but the corresponding operational state entry | entry is removed but the corresponding operational state entry | |||
| remains in the list. | remains in the list. | |||
| 4.2. Simple versus Advanced Routers | 4.2. Features of Advanced Routers | |||
| The core routing data model attempts to address devices with | The core routing data model attempts to address devices with | |||
| elementary routing functions as well as advanced routers. For simple | elementary routing functions as well as advanced routers. For simple | |||
| devices, some parts and options of the data model are not needed and | devices, some parts and options of the data model are not needed and | |||
| represent unnecessary complications for the implementation. | would represent unnecessary complications for the implementation. | |||
| Therefore, the core routing data model makes the advanced | Therefore, the core routing data model makes the advanced | |||
| functionality optional by means of a feature "advanced-router". | functionality optional by means of two YANG features: | |||
| Specifically, the following objects and options are supported only in | ||||
| devices that advertise the "advanced-router" feature: | ||||
| o multiple RIBs per address family, and user-controlled RIB entries | ||||
| in particular, | ||||
| o routing protocols connected to non-default RIBs, | ||||
| o RIBs configured as receivers of routes from other RIBs, | o "multiple-ribs" - indicates that the device supports multiple RIBs | |||
| per address family, routing protocols connected to non-default | ||||
| RIBs, and RIBs configured as receivers of routes from other RIBs. | ||||
| o routes with multiple nexthops. | o "multipath-routes" - indicates that the device supports routes | |||
| with multiple nexthops. | ||||
| See the "ietf-routing" module for details. | See the "ietf-routing" module for details. | |||
| 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. Routing Instance | 5.1. Routing Instance | |||
| skipping to change at page 15, line 49 ¶ | skipping to change at page 14, line 49 ¶ | |||
| Each network layer interface has to be assigned to one or more | Each network layer interface has to be assigned to one or more | |||
| routing instances in order to be able to participate in packet | routing instances in order to be able to participate in packet | |||
| forwarding, routing protocols and other operations of those routing | forwarding, routing protocols and other operations of those routing | |||
| instances. The assignment is accomplished by placing a corresponding | instances. The assignment is accomplished by placing a corresponding | |||
| (system- or user-controlled) entry in the list of routing instance | (system- or user-controlled) entry in the list of routing instance | |||
| interfaces ("rt:interface"). The key of the list entry is the name | interfaces ("rt:interface"). The key of the list entry is the name | |||
| of a configured network layer interface, see the "ietf-interfaces" | of a configured network layer interface, see the "ietf-interfaces" | |||
| module [YANG-IF]. | module [YANG-IF]. | |||
| In YANG terms, the list of routing instance interfaces is modeled as | In YANG terms, the list of routing instance interfaces is modeled as | |||
| the "list" node rather than "leaf-list" in order to allow for adding, | a "list" node rather than "leaf-list" in order to allow for adding, | |||
| via augmentation, other configuration or state data related to the | via augmentation, other configuration or state data related to the | |||
| corresponding interface. | corresponding interface. | |||
| Implementations MAY specify additional rules for the assignment of | Implementations MAY specify additional rules for the assignment of | |||
| interfaces to routing instances. For example, it may be required | interfaces to routing instances. For example, it may be required | |||
| that the sets of interfaces assigned to different routing instances | that the sets of interfaces assigned to different routing instances | |||
| be disjoint. | be disjoint. | |||
| 5.1.1. Parameters of IPv6 Routing Instance Interfaces | 5.1.1. Parameters of IPv6 Routing Instance Interfaces | |||
| skipping to change at page 17, line 32 ¶ | skipping to change at page 16, line 32 ¶ | |||
| 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 | |||
| route attributes: | route attributes: | |||
| o destination prefix: IP prefix specifying the set of destination | o destination prefix: IP prefix specifying the set of destination | |||
| addresses for which the route may be used. This attribute is | addresses for which the route may be used. This attribute is | |||
| mandatory. | mandatory. | |||
| o next hop or action: outgoing interface, IP address of one or more | o next hop or action: outgoing interface, IP address of one or more | |||
| adjacent routers to which a packet should be forwarded, or other | adjacent routers to which a packet should be forwarded, or a | |||
| special action. | special action such as discarding the packet. | |||
| The above list of route attributes suffices for a simple static | The above list of route attributes suffices for a simple static | |||
| routing configuration. It is expected that future modules defining | routing configuration. It is expected that future modules defining | |||
| routing protocols will add other route attributes such as metrics or | routing protocols will add other route attributes such as metrics or | |||
| preferences. | preferences. | |||
| Routes and their attributes are used both in configuration data, for | Routes and their attributes are used both in configuration data, for | |||
| example as manually configured static routes, and in operational | example as manually configured static routes, and in operational | |||
| state data, for example as entries in RIBs. | state data, for example as entries in RIBs. | |||
| skipping to change at page 18, line 8 ¶ | skipping to change at page 17, line 8 ¶ | |||
| A routing information base (RIB) is a list of routes complemented | A routing information base (RIB) is a list of routes complemented | |||
| with administrative data, namely: | with administrative data, namely: | |||
| o "source-protocol": type of the routing protocol from which the | o "source-protocol": type of the routing protocol from which the | |||
| route was originally obtained. | route was originally obtained. | |||
| o "last-updated": the date and time when the route was last updated, | o "last-updated": the date and time when the route was last updated, | |||
| or inserted into the RIB. | or inserted into the RIB. | |||
| Each RIB MUST contain only routes of the same address family. In the | Each RIB MUST contain only routes of one address family. In the data | |||
| data model, address family is represented with an identity derived | model, address family is represented with an identity derived from | |||
| from the "rt:address-family" base identity. | the "rt:address-family" base identity. | |||
| In the core routing data model, RIBs are operational state data | In the core routing data model, RIBs are operational state data | |||
| represented as entries of the list "/routing-state/ribs/rib". The | represented as entries of the list "/routing-state/ribs/rib". The | |||
| contents of RIBs are controlled and manipulated by routing protocol | contents of RIBs are controlled and manipulated by routing protocol | |||
| operations which may result in route additions, removals and | operations which may result in route additions, removals and | |||
| modifications. This also includes manipulations via the "static" | modifications. This also includes manipulations via the "static" | |||
| and/or "direct" pseudo-protocols, see Section 5.4.1. | and/or "direct" pseudo-protocols, see Section 5.4.1. | |||
| RIBs are global, which means that a RIB may be used by any or all | RIBs are global, which means that a RIB may be used by any or all | |||
| routing instances. However, an implementation MAY specify rules and | routing instances. However, an implementation MAY specify rules and | |||
| restrictions for sharing RIBs among routing instances. | restrictions for sharing RIBs among routing instances. | |||
| Each routing instance must have, for every supported address family, | Each routing instance must have, for every supported address family, | |||
| one RIB selected as the so-called default RIB. This selection is | one RIB selected as the so-called default RIB. This selection is | |||
| recorded in the list "default-rib". The role of default RIBs is | recorded in the list "default-rib". The role of default RIBs is | |||
| explained in Section 5.4. | explained in Section 5.4. | |||
| Simple router implementations that do not advertise the feature | Simple router implementations that do not advertise the feature | |||
| "advanced-router" will typically create one system-controlled RIB per | "multiple-ribs" will typically create one system-controlled RIB per | |||
| supported address family, and declare it as a default RIB (via a | supported address family, and declare it as a default RIB (via a | |||
| system-controlled entry of the "default-rib" list). | system-controlled entry of the "default-rib" list). | |||
| 5.3.1. Multiple RIBs per Address Family | 5.3.1. Multiple RIBs per Address Family | |||
| More complex router implementations advertising the "advanced-router" | More complex router implementations advertising the "multiple-ribs" | |||
| feature support multiple RIBs per address family that can be used for | feature support multiple RIBs per address family that can be used for | |||
| policy routing and other purposes. Every RIB can then serve as a | policy routing and other purposes. Every RIB can then serve as a | |||
| source of routes for other RIBs of the same address family. To | source of routes for other RIBs of the same address family. To | |||
| achieve this, one or more recipient RIBs may be specified in the | achieve this, one or more recipient RIBs may be specified in the | |||
| configuration of the source RIB. Optionally, a route filter may be | configuration of the source RIB. Optionally, a route filter may be | |||
| configured for any or all recipient RIBs. Such a route filter then | configured for any or all recipient RIBs. Such a route filter then | |||
| selects and/or manipulates the routes that are passed between the | selects and/or manipulates the routes that are passed between the | |||
| source and recipient RIB. | source and recipient RIB. | |||
| A RIB MUST NOT appear among its own recipient RIBs. | A RIB MUST NOT appear among its own recipient RIBs. | |||
| skipping to change at page 19, line 16 ¶ | skipping to change at page 18, line 16 ¶ | |||
| Each routing protocol instance is connected to exactly one RIB for | Each routing protocol instance is connected to exactly one RIB for | |||
| each address family that the routing protocol instance supports. | each address family that the routing protocol instance supports. | |||
| Routes learned from the network by a routing protocol are normally | Routes learned from the network by a routing protocol are normally | |||
| installed into the connected RIB(s) and, conversely, routes from the | installed into the connected RIB(s) and, conversely, routes from the | |||
| connected RIB(s) are normally injected into the routing protocol. | connected RIB(s) are normally injected into the routing protocol. | |||
| However, routing protocol implementations MAY specify rules that | However, routing protocol implementations MAY specify rules that | |||
| restrict this exchange of routes in either direction (or both | restrict this exchange of routes in either direction (or both | |||
| directions). | directions). | |||
| On devices supporting the "advanced-router" feature, any RIB (system- | On devices supporting the "multiple-ribs" feature, any RIB (system- | |||
| controlled or user-controlled) may be connected to a routing protocol | controlled or user-controlled) may be connected to a routing protocol | |||
| instance by configuring a corresponding entry in the "connected-rib" | instance by configuring a corresponding entry in the "connected-rib" | |||
| list. If such an entry is not configured for an address family, then | list. If such an entry is not configured for an address family, then | |||
| the default RIB MUST be used as the connected RIB for this address | the default RIB MUST be used as the connected RIB for this address | |||
| family. | family. | |||
| In addition, two independent route filters (see Section 5.5) may be | In addition, two independent route filters (see Section 5.5) may be | |||
| configured for each connected RIB to apply user-defined policies | configured for each connected RIB to apply user-defined policies | |||
| controlling the exchange of routes in both directions between the | controlling the exchange of routes in both directions between the | |||
| routing protocol instance and the connected RIB: | routing protocol instance and the connected RIB: | |||
| skipping to change at page 21, line 17 ¶ | skipping to change at page 20, line 17 ¶ | |||
| | +--rw v4ur:route* [id] | | +--rw v4ur:route* [id] | |||
| | +--rw v4ur:id | | +--rw v4ur:id | |||
| | +--rw v4ur:description? | | +--rw v4ur:description? | |||
| | +--rw v4ur:destination-prefix | | +--rw v4ur:destination-prefix | |||
| | +--rw (nexthop-options) | | +--rw (nexthop-options) | |||
| | +--:(special-nexthop) | | +--:(special-nexthop) | |||
| | | +--rw v4ur:special-nexthop? | | | +--rw v4ur:special-nexthop? | |||
| | +--:(simple-nexthop) | | +--:(simple-nexthop) | |||
| | | +--rw v4ur:gateway? | | | +--rw v4ur:gateway? | |||
| | | +--rw v4ur:outgoing-interface? | | | +--rw v4ur:outgoing-interface? | |||
| | +--:(nexthop-list) {rt:advanced-router}? | | +--:(nexthop-list) {rt:multipath-routes}? | |||
| | +--rw v4ur:nexthop* [id] | | +--rw v4ur:nexthop* [id] | |||
| | +--rw v4ur:id | | +--rw v4ur:id | |||
| | +--rw v4ur:address? | | +--rw v4ur:address? | |||
| | +--rw v4ur:outgoing-interface? | | +--rw v4ur:outgoing-interface? | |||
| | +--rw v4ur:priority? | | +--rw v4ur:priority? | |||
| | +--rw v4ur:weight? | | +--rw v4ur:weight? | |||
| +--rw v6ur:ipv6 | +--rw v6ur:ipv6 | |||
| +--rw v6ur:route* [id] | +--rw v6ur:route* [id] | |||
| +--rw v6ur:id | +--rw v6ur:id | |||
| +--rw v6ur:description? | +--rw v6ur:description? | |||
| +--rw v6ur:destination-prefix | +--rw v6ur:destination-prefix | |||
| +--rw (nexthop-options) | +--rw (nexthop-options) | |||
| +--:(special-nexthop) | +--:(special-nexthop) | |||
| | +--rw v6ur:special-nexthop? | | +--rw v6ur:special-nexthop? | |||
| +--:(simple-nexthop) | +--:(simple-nexthop) | |||
| | +--rw v6ur:gateway? | | +--rw v6ur:gateway? | |||
| | +--rw v6ur:outgoing-interface? | | +--rw v6ur:outgoing-interface? | |||
| +--:(nexthop-list) {rt:advanced-router}? | +--:(nexthop-list) {rt:multipath-routes}? | |||
| +--rw v6ur:nexthop* [id] | +--rw v6ur:nexthop* [id] | |||
| +--rw v6ur:id | +--rw v6ur:id | |||
| +--rw v6ur:address? | +--rw v6ur:address? | |||
| +--rw v6ur:outgoing-interface? | +--rw v6ur:outgoing-interface? | |||
| +--rw v6ur:priority? | +--rw v6ur:priority? | |||
| +--rw v6ur:weight? | +--rw v6ur:weight? | |||
| Figure 4: Structure of "static-routes" subtree. | Figure 4: Structure of "static-routes" subtree. | |||
| 5.4.2. Defining New Routing Protocols | 5.4.2. Defining New Routing Protocols | |||
| skipping to change at page 22, line 35 ¶ | skipping to change at page 21, line 35 ¶ | |||
| under both "/routing" and "/routing-state". | under both "/routing" and "/routing-state". | |||
| o Per-interface configuration, including activation of the routing | o Per-interface configuration, including activation of the routing | |||
| protocol on individual interfaces, can use references to entries | protocol on individual interfaces, can use references to entries | |||
| in the list of routing instance interfaces (rt:interface). | in the list of routing instance interfaces (rt:interface). | |||
| By using the "when" statement, the augmented configuration parameters | By using the "when" statement, the augmented configuration parameters | |||
| and state data specific to the new protocol SHOULD be made | and state data specific to the new protocol SHOULD be made | |||
| conditional and valid only if the value of "rt:type" or "rt:source- | conditional and valid only if the value of "rt:type" or "rt:source- | |||
| protocol" is equal to the new protocol's identity. It is also | protocol" is equal to the new protocol's identity. It is also | |||
| RECOMMENDED that the protocol-specific data be encapsulated in | RECOMMENDED that protocol-specific data nodes be encapsulated in | |||
| appropriately named containers. | 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. | |||
| 5.5. Route Filter | 5.5. Route Filter | |||
| The core routing data model provides a skeleton for defining route | The core routing data model provides a skeleton for defining route | |||
| filters that can be used to restrict the set of routes being | filters that can be used to restrict the set of routes being | |||
| exchanged between a routing protocol instance and a connected RIB, or | exchanged between a routing protocol instance and a connected RIB, or | |||
| skipping to change at page 23, line 26 ¶ | skipping to change at page 22, line 26 ¶ | |||
| will be developed separately. | will be developed separately. | |||
| Each route filter is identified by a unique name. Its type MUST be | Each route filter is identified by a unique name. Its type MUST be | |||
| specified by the "type" identity reference - this opens the space for | specified by the "type" identity reference - this opens the space for | |||
| multiple route filtering framework implementations. | multiple route filtering framework implementations. | |||
| 5.6. RPC Operations | 5.6. RPC Operations | |||
| The "ietf-routing" module defines two RPC operations: | The "ietf-routing" module defines two RPC operations: | |||
| o active-route: query the routing system for the active route(s) | o active-route: query the routing system for the active route that | |||
| that are currently used for sending datagrams to a destination | is currently used for sending datagrams to a destination host | |||
| host whose address is passed as an input parameter. | whose address is passed as an input parameter. | |||
| o route-count: retrieve the total number of entries in a RIB. | o route-count: retrieve the total number of entries in a RIB. | |||
| 6. Interactions with Other YANG Modules | 6. Interactions with Other YANG Modules | |||
| The semantics of the core routing data model also depend on several | The semantics of the core routing data model also depend on several | |||
| configuration parameters that are defined in other YANG modules. | configuration parameters that are defined in other YANG modules. | |||
| 6.1. Module "ietf-interfaces" | 6.1. Module "ietf-interfaces" | |||
| skipping to change at page 26, line 11 ¶ | skipping to change at page 25, 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. | |||
| 7. Routing YANG Module | 7. 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-10-18.yang" | <CODE BEGINS> file "ietf-routing@2013-11-07.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 27, line 13 ¶ | skipping to change at page 26, 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-10-18 { | revision 2013-11-07 { | |||
| 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"; | |||
| } | } | |||
| /* Features */ | /* Features */ | |||
| feature advanced-router { | feature multiple-ribs { | |||
| description | description | |||
| "This feature indicates that the device supports advanced | "This feature indicates that the device supports multiple RIBS | |||
| routing functions, namely: | per address family, and the framework for passing routes | |||
| between RIBs, or between routing protocols and RIBs. | ||||
| - user-defined RIBs, | ||||
| - multi-path routes. | ||||
| Devices that do not support this feature MUST provide exactly | Devices that do not support this feature MUST provide exactly | |||
| one system-controlled RIB per supported address family. These | one system-controlled RIB per supported address family. These | |||
| RIBs then appear as entries of the list | RIBs then appear as entries of the list | |||
| /routing-state/ribs/rib. | /routing-state/ribs/rib. | |||
| "; | "; | |||
| } | } | |||
| feature multipath-routes { | ||||
| description | ||||
| "This feature indicates that the device supports multipath | ||||
| routes that have a list of nexthops."; | ||||
| } | ||||
| /* Identities */ | /* Identities */ | |||
| identity address-family { | identity address-family { | |||
| description | description | |||
| "Base identity from which identities describing address | "Base identity from which identities describing address | |||
| families are derived."; | families are derived."; | |||
| } | } | |||
| identity ipv4 { | identity ipv4 { | |||
| base address-family; | base address-family; | |||
| skipping to change at page 30, line 39 ¶ | skipping to change at page 29, line 42 ¶ | |||
| leaf address-family { | leaf address-family { | |||
| type identityref { | type identityref { | |||
| base address-family; | base address-family; | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Address family."; | "Address family."; | |||
| } | } | |||
| } | } | |||
| grouping state-entry-id { | ||||
| description | ||||
| "This grouping defines a unique identifier of entries in | ||||
| several operational state lists."; | ||||
| leaf id { | ||||
| type uint64 { | ||||
| range "1..max"; | ||||
| } | ||||
| description | ||||
| "Unique numerical identifier of a list entry in operational | ||||
| state."; | ||||
| } | ||||
| } | ||||
| grouping router-id { | grouping router-id { | |||
| description | description | |||
| "This grouping provides the definition of router ID."; | "This grouping provides the definition of router ID."; | |||
| leaf router-id { | leaf router-id { | |||
| type yang:dotted-quad; | type yang:dotted-quad; | |||
| description | description | |||
| "Router ID - 32-bit number in the form of a dotted quad."; | "Router ID - 32-bit number in the form of a dotted quad."; | |||
| } | } | |||
| } | } | |||
| skipping to change at page 33, line 14 ¶ | skipping to change at page 32, line 30 ¶ | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Options for expressing the nexthop in routes."; | "Options for expressing the nexthop in routes."; | |||
| case special-nexthop { | case special-nexthop { | |||
| uses special-nexthop; | uses special-nexthop; | |||
| } | } | |||
| case simple-nexthop { | case simple-nexthop { | |||
| uses outgoing-interface; | uses outgoing-interface; | |||
| } | } | |||
| case nexthop-list { | case nexthop-list { | |||
| if-feature advanced-router; | if-feature multipath-routes; | |||
| list nexthop { | list nexthop { | |||
| key "id"; | unique "id"; | |||
| description | description | |||
| "An entry of a nexthop list."; | "An entry of a nexthop list."; | |||
| leaf id { | uses state-entry-id; | |||
| type uint64; | ||||
| description | ||||
| "A numeric identifier of the entry, assigned by the | ||||
| server."; | ||||
| } | ||||
| uses outgoing-interface; | uses outgoing-interface; | |||
| uses nexthop-classifiers; | uses nexthop-classifiers; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| grouping route-metadata { | grouping route-metadata { | |||
| description | description | |||
| "Route metadata."; | "Route metadata."; | |||
| skipping to change at page 34, line 4 ¶ | skipping to change at page 33, line 15 ¶ | |||
| originated."; | originated."; | |||
| } | } | |||
| leaf last-updated { | leaf last-updated { | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "Time stamp of the last modification of the route. If the | "Time stamp of the last modification of the route. If the | |||
| route was never modified, it is the time when the route was | route was never modified, it is the time when the route was | |||
| inserted into the RIB."; | inserted into the RIB."; | |||
| } | } | |||
| } | } | |||
| /* Operational state data */ | /* Operational state data */ | |||
| container routing-state { | container routing-state { | |||
| config "false"; | config "false"; | |||
| description | description | |||
| "Operational state of the routing subsystem."; | "Operational state of the routing subsystem."; | |||
| list routing-instance { | list routing-instance { | |||
| key "id"; | key "name"; | |||
| unique "id"; | ||||
| description | description | |||
| "Each list entry is a container for operational state data of | "Each list entry is a container for operational state data of | |||
| a routing instance. | a routing instance. | |||
| An implementation MAY create one or more system-controlled | An implementation MAY create one or more system-controlled | |||
| instances, other user-controlled instances MAY be created by | instances, other user-controlled instances MAY be created by | |||
| configuration. | configuration. | |||
| "; | "; | |||
| leaf id { | ||||
| type uint64; | ||||
| description | ||||
| "Unique numeric identifier of the routing instance."; | ||||
| } | ||||
| leaf name { | leaf name { | |||
| type leafref { | type string; | |||
| path "/routing/routing-instance/name"; | ||||
| } | ||||
| description | description | |||
| "The name of the routing instance assigned in the | "The name of the routing instance. | |||
| corresponding configuration entry (if any). | ||||
| "; | "; | |||
| } | } | |||
| uses state-entry-id; | ||||
| leaf type { | leaf type { | |||
| type identityref { | type identityref { | |||
| base routing-instance-type; | base routing-instance-type; | |||
| } | } | |||
| default "rt:standard-routing-instance"; | default "rt:standard-routing-instance"; | |||
| description | description | |||
| "The routing instance type, primarily intended for | "The routing instance type, primarily intended for | |||
| discriminating among different types of logical routers, | discriminating among different types of logical routers, | |||
| route virtualization, master-slave arrangements etc., | route virtualization, master-slave arrangements etc., | |||
| while keeping all routing instances in the same flat list. | while keeping all routing instances in the same flat list. | |||
| skipping to change at page 36, line 24 ¶ | skipping to change at page 35, line 31 ¶ | |||
| } | } | |||
| leaf type { | leaf type { | |||
| type identityref { | type identityref { | |||
| base routing-protocol; | base routing-protocol; | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Type of the routing protocol."; | "Type of the routing protocol."; | |||
| } | } | |||
| container connected-ribs { | container connected-ribs { | |||
| if-feature advanced-router; | if-feature multiple-ribs; | |||
| description | description | |||
| "Container for connected RIBs. | "Container for connected RIBs. | |||
| "; | "; | |||
| list connected-rib { | list connected-rib { | |||
| key "rib-id"; | key "rib-id"; | |||
| description | description | |||
| "List of RIBs to which the routing protocol instance | "List of RIBs to which the routing protocol instance | |||
| is connected (at most one RIB per address family). | is connected (at most one RIB per address family). | |||
| "; | "; | |||
| leaf rib-id { | leaf rib-id { | |||
| skipping to change at page 37, line 29 ¶ | skipping to change at page 36, line 36 ¶ | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container ribs { | container ribs { | |||
| description | description | |||
| "Container for RIBs."; | "Container for RIBs."; | |||
| list rib { | list rib { | |||
| key "id"; | key "name"; | |||
| unique "id"; | ||||
| description | description | |||
| "Each entry represents a RIB identified by the 'name' key. | "Each entry represents a RIB identified by the 'name' key. | |||
| All routes in a RIB MUST belong to the same address | All routes in a RIB MUST belong to the same address | |||
| family. | family. | |||
| The server MUST create the default RIB for each address | The server MUST create the default RIB for each address | |||
| family, and MAY create other RIBs. Additional RIBs MAY be | family, and MAY create other RIBs. Additional RIBs MAY be | |||
| created in the configuration. | created in the configuration. | |||
| "; | "; | |||
| leaf id { | ||||
| type uint64; | ||||
| description | ||||
| "Unique numeric identifier of the RIB instance."; | ||||
| } | ||||
| leaf name { | leaf name { | |||
| type leafref { | type string; | |||
| path "/routing/ribs/rib/name"; | ||||
| } | ||||
| description | description | |||
| "The name of the RIB assigned in the corresponding | "The name of the RIB."; | |||
| configuration entry (if any)."; | ||||
| } | } | |||
| uses state-entry-id; | ||||
| uses address-family; | uses address-family; | |||
| container routes { | container routes { | |||
| description | description | |||
| "Current contents of the RIB."; | "Current contents of the RIB."; | |||
| list route { | list route { | |||
| key "id"; | unique "id"; | |||
| description | description | |||
| "A RIB route entry. This data node MUST be augmented | "A RIB route entry. This data node MUST be augmented | |||
| with information specific for routes of each address | with information specific for routes of each address | |||
| family."; | family."; | |||
| leaf id { | uses state-entry-id; | |||
| type uint64 { | ||||
| range "1..max"; | ||||
| } | ||||
| description | ||||
| "Unique numeric identifier of the route."; | ||||
| } | ||||
| uses nexthop-content; | uses nexthop-content; | |||
| uses route-metadata; | uses route-metadata; | |||
| } | } | |||
| } | } | |||
| container recipient-ribs { | container recipient-ribs { | |||
| if-feature advanced-router; | if-feature multiple-ribs; | |||
| description | description | |||
| "Container for recipient RIBs."; | "Container for recipient RIBs."; | |||
| list recipient-rib { | list recipient-rib { | |||
| key "rib-id"; | key "rib-id"; | |||
| description | description | |||
| "List of RIBs that receive routes from this RIB."; | "List of RIBs that receive routes from this RIB."; | |||
| leaf rib-id { | leaf rib-id { | |||
| type rib-state-ref; | type rib-state-ref; | |||
| description | description | |||
| "The name of the recipient RIB."; | "The name of the recipient RIB."; | |||
| skipping to change at page 39, line 38 ¶ | skipping to change at page 38, line 33 ¶ | |||
| } | } | |||
| } | } | |||
| /* Configuration Data */ | /* Configuration Data */ | |||
| container routing { | container routing { | |||
| description | description | |||
| "Configuration parameters for the routing subsystem."; | "Configuration parameters for the routing subsystem."; | |||
| list routing-instance { | list routing-instance { | |||
| key "name"; | key "name"; | |||
| unique "routing-instance-id"; | ||||
| description | description | |||
| "Configuration of a routing instance. | "Configuration of a routing instance. | |||
| "; | "; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the configured routing instance."; | "The name of the routing instance. | |||
| } | ||||
| leaf routing-instance-id { | ||||
| type uint64; | ||||
| description | ||||
| "Reference to a system-assigned numeric identifier of the | ||||
| routing instance. | ||||
| This leaf is essential for creating new configuration | For system-controlled entries, the value of this leaf must | |||
| entries that refer to existing system-controlled routing | be the same as the name of the corresponding entry in | |||
| instances. | state data. | |||
| For user-controlled entries, an arbitrary name can be | ||||
| used. | ||||
| "; | "; | |||
| } | } | |||
| leaf type { | leaf type { | |||
| type identityref { | type identityref { | |||
| base routing-instance-type; | base routing-instance-type; | |||
| } | } | |||
| default "rt:standard-routing-instance"; | default "rt:standard-routing-instance"; | |||
| description | description | |||
| "The type of the routing instance."; | "The type of the routing instance."; | |||
| } | } | |||
| skipping to change at page 40, line 39 ¶ | skipping to change at page 39, line 29 ¶ | |||
| uses router-id { | uses router-id { | |||
| description | description | |||
| "Configuration of the global router ID."; | "Configuration of the global router ID."; | |||
| } | } | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Textual description of the routing instance."; | "Textual description of the routing instance."; | |||
| } | } | |||
| container default-ribs { | container default-ribs { | |||
| if-feature advanced-router; | if-feature multiple-ribs; | |||
| description | description | |||
| "Configuration of the default RIBs used by the routing | "Configuration of the default RIBs used by the routing | |||
| instance. | instance. | |||
| The default RIB for an addressed family if by default | The default RIB for an addressed family if by default | |||
| connected to all routing protocol instances supporting | connected to all routing protocol instances supporting | |||
| that address family, and always receives direct routes. | that address family, and always receives direct routes. | |||
| "; | "; | |||
| list default-rib { | list default-rib { | |||
| must "address-family=/routing/ribs/rib[name=current()/" | must "address-family=/routing/ribs/rib[name=current()/" | |||
| skipping to change at page 42, line 30 ¶ | skipping to change at page 41, line 21 ¶ | |||
| leaf type { | leaf type { | |||
| type identityref { | type identityref { | |||
| base routing-protocol; | base routing-protocol; | |||
| } | } | |||
| mandatory "true"; | mandatory "true"; | |||
| description | description | |||
| "Type of the routing protocol - an identity derived | "Type of the routing protocol - an identity derived | |||
| from the 'routing-protocol' base identity."; | from the 'routing-protocol' base identity."; | |||
| } | } | |||
| container connected-ribs { | container connected-ribs { | |||
| if-feature advanced-router; | if-feature multiple-ribs; | |||
| description | description | |||
| "Configuration of connected RIBs. | "Configuration of connected RIBs. | |||
| "; | "; | |||
| list connected-rib { | list connected-rib { | |||
| must "not(/routing/ribs/rib[name=current()/" | must "not(/routing/ribs/rib[name=current()/" | |||
| + "preceding-sibling::connected-rib/" | + "preceding-sibling::connected-rib/" | |||
| + "name and address-family=/routing/ribs/" | + "name and address-family=/routing/ribs/" | |||
| + "rib[name=current()/name]/address-family])" { | + "rib[name=current()/name]/address-family])" { | |||
| error-message | error-message | |||
| "Duplicate address family for connected RIBs."; | "Duplicate address family for connected RIBs."; | |||
| skipping to change at page 44, line 5 ¶ | skipping to change at page 42, line 43 ¶ | |||
| "; | "; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| } | } | |||
| container ribs { | container ribs { | |||
| description | description | |||
| "Configured RIBs."; | "Configured RIBs."; | |||
| list rib { | list rib { | |||
| key "name"; | key "name"; | |||
| unique "id"; | ||||
| description | description | |||
| "Each entry represents a configured RIB identified by the | "Each entry represents a configured RIB identified by the | |||
| 'name' key. | '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-state/ribs/rib are used for | of the list /routing-state/ribs/rib are used for | |||
| configuring parameters of that entry. Other entries define | configuring parameters of that entry. Other entries define | |||
| additional user-controlled RIBs. | additional user-controlled RIBs. | |||
| "; | "; | |||
| leaf name { | leaf name { | |||
| type string; | type string; | |||
| description | description | |||
| "The name of the RIB."; | "The name of the RIB. | |||
| } | ||||
| leaf id { | ||||
| type uint64; | ||||
| description | ||||
| "System-assigned numeric identifier of the RIB instance. | ||||
| This leaf is essential for creating new configuration | For system-controlled entries, the value of this leaf | |||
| entries that refer to existing system-controlled RIBs. | must be the same as the name of the corresponding entry | |||
| in state data. | ||||
| For user-controlled entries, an arbitrary name can be | ||||
| used. | ||||
| "; | "; | |||
| } | } | |||
| uses address-family; | uses address-family; | |||
| leaf description { | leaf description { | |||
| type string; | type string; | |||
| description | description | |||
| "Textual description of the RIB."; | "Textual description of the RIB."; | |||
| } | } | |||
| container recipient-ribs { | container recipient-ribs { | |||
| if-feature advanced-router; | if-feature multiple-ribs; | |||
| description | description | |||
| "Configuration of recipient RIBs."; | "Configuration of recipient RIBs."; | |||
| list recipient-rib { | list recipient-rib { | |||
| must "name != ../../name" { | must "name != ../../name" { | |||
| error-message | error-message | |||
| "Source and recipient RIBs are identical."; | "Source and recipient RIBs are identical."; | |||
| description | description | |||
| "A RIB MUST NOT appear among its recipient RIBs."; | "A RIB MUST NOT appear among its recipient RIBs."; | |||
| } | } | |||
| must "/routing/ribs/rib[name=current()/name]/" | must "/routing/ribs/rib[name=current()/name]/" | |||
| skipping to change at page 48, line 11 ¶ | skipping to change at page 47, line 11 ¶ | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 8. IPv4 Unicast Routing YANG Module | 8. 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-10-18.yang" | <CODE BEGINS> file "ietf-ipv4-unicast-routing@2013-11-07.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 49, line 14 ¶ | skipping to change at page 48, line 14 ¶ | |||
| 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-10-18 { | revision 2013-11-07 { | |||
| 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 ipv4-unicast { | identity ipv4-unicast { | |||
| base rt:ipv4; | base rt:ipv4; | |||
| skipping to change at page 51, line 47 ¶ | skipping to change at page 50, line 47 ¶ | |||
| } | } | |||
| description | description | |||
| "Name of the outgoing interface. | "Name of the outgoing interface. | |||
| Only interfaces configured for the parent routing | Only interfaces configured for the parent routing | |||
| instance can be given. | instance can be given. | |||
| "; | "; | |||
| } | } | |||
| } | } | |||
| case nexthop-list { | case nexthop-list { | |||
| if-feature rt:advanced-router; | if-feature rt:multipath-routes; | |||
| list nexthop { | list nexthop { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "An entry of a nexthop list."; | "An entry of a nexthop list."; | |||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Unique numeric identifier of the entry. | "Unique numeric identifier of the entry. | |||
| This value is unrelated to system-assigned keys of | This value is unrelated to system-assigned keys of | |||
| skipping to change at page 53, line 44 ¶ | skipping to change at page 52, line 44 ¶ | |||
| "IPv4 address of the gateway."; | "IPv4 address of the gateway."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:active-route/rt:output/rt:route/rt:nexthop-options/" | augment "/rt:active-route/rt:output/rt:route/rt:nexthop-options/" | |||
| + "rt:nexthop-list/rt:nexthop" { | + "rt:nexthop-list/rt:nexthop" { | |||
| when "../rt:address-family='v4ur:ipv4-unicast'" { | when "../rt:address-family='v4ur:ipv4-unicast'" { | |||
| description | description | |||
| "This augment is valid only for IPv4 unicast."; | "This augment is valid only for IPv4 unicast."; | |||
| } | } | |||
| if-feature rt:advanced-router; | if-feature rt:multipath-routes; | |||
| description | description | |||
| "This leaf augments the 'nexthop-list' case in the reply to the | "This leaf augments the 'nexthop-list' case in the reply to the | |||
| 'rt:active-route' operation."; | 'rt:active-route' operation."; | |||
| leaf address { | leaf address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "IPv4 address of the nexthop."; | "IPv4 address of the nexthop."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 9. IPv6 Unicast Routing YANG Module | 9. 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-10-18.yang" | <CODE BEGINS> file "ietf-ipv6-unicast-routing@2013-11-07.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 56, line 22 ¶ | skipping to change at page 55, line 22 ¶ | |||
| 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-10-18 { | revision 2013-11-07 { | |||
| 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 ipv6-unicast { | identity ipv6-unicast { | |||
| base rt:ipv6; | base rt:ipv6; | |||
| skipping to change at page 67, line 44 ¶ | skipping to change at page 66, line 44 ¶ | |||
| } | } | |||
| description | description | |||
| "Name of the outgoing interface. | "Name of the outgoing interface. | |||
| Only interfaces configured for the parent routing | Only interfaces configured for the parent routing | |||
| instance can be given. | instance can be given. | |||
| "; | "; | |||
| } | } | |||
| } | } | |||
| case nexthop-list { | case nexthop-list { | |||
| if-feature rt:advanced-router; | if-feature rt:multipath-routes; | |||
| list nexthop { | list nexthop { | |||
| key "id"; | key "id"; | |||
| description | description | |||
| "An entry of a nexthop list."; | "An entry of a nexthop list."; | |||
| leaf id { | leaf id { | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "Unique numeric identifier of the entry. | "Unique numeric identifier of the entry. | |||
| This value is unrelated to system-assigned keys of | This value is unrelated to system-assigned keys of | |||
| skipping to change at page 69, line 39 ¶ | skipping to change at page 68, line 39 ¶ | |||
| "IPv6 address of the gateway."; | "IPv6 address of the gateway."; | |||
| } | } | |||
| } | } | |||
| augment "/rt:active-route/rt:output/rt:route/rt:nexthop-options/" | augment "/rt:active-route/rt:output/rt:route/rt:nexthop-options/" | |||
| + "rt:nexthop-list/rt:nexthop" { | + "rt:nexthop-list/rt:nexthop" { | |||
| when "../rt:address-family='v6ur:ipv6-unicast'" { | when "../rt:address-family='v6ur:ipv6-unicast'" { | |||
| description | description | |||
| "This augment is valid only for IPv6 unicast."; | "This augment is valid only for IPv6 unicast."; | |||
| } | } | |||
| if-feature rt:advanced-router; | if-feature rt:multipath-routes; | |||
| description | description | |||
| "This leaf augments the 'nexthop-list' case in the reply to the | "This leaf augments the 'nexthop-list' case in the reply to the | |||
| 'rt:active-route' operation."; | 'rt:active-route' operation."; | |||
| leaf address { | leaf address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "IPv6 address of the nexthop."; | "IPv6 address of the nexthop."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| skipping to change at page 73, line 8 ¶ | skipping to change at page 72, line 8 ¶ | |||
| device. | device. | |||
| Unauthorized access to any of these lists can adversely affect the | Unauthorized access to any of these lists can adversely affect the | |||
| routing subsystem of both the local device and the network. This may | routing subsystem of both the local device and the network. This may | |||
| lead to network malfunctions, delivery of packets to inappropriate | lead to network malfunctions, delivery of packets to inappropriate | |||
| destinations and other problems. | destinations and other problems. | |||
| 12. Acknowledgments | 12. Acknowledgments | |||
| The author wishes to thank Nitin Bahadur, Martin Bjorklund, | The author wishes to thank Nitin Bahadur, Martin Bjorklund, | |||
| Joel Halpern, Wes Hardaker, Sriganesh Kini, Andrew McGregor, | Joel Halpern, Wes Hardaker, Sriganesh Kini, David Lamparter, | |||
| Jan Medved, Xiang Li, Thomas Morin, Tom Petch, Bruno Rijsman, | Andrew McGregor, Jan Medved, Xiang Li, Thomas Morin, Tom Petch, | |||
| Juergen Schoenwaelder, Phil Shafer, Dave Thaler and Yi Yang for their | Bruno Rijsman, Juergen Schoenwaelder, Phil Shafer, Dave Thaler and | |||
| helpful comments and suggestions. | Yi Yang for their helpful comments and suggestions. | |||
| 13. References | 13. References | |||
| 13.1. Normative References | 13.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
| January 2004. | January 2004. | |||
| skipping to change at page 74, line 31 ¶ | skipping to change at page 73, line 31 ¶ | |||
| September 2010. | September 2010. | |||
| [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. | |||
| [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", | |||
| RFC 6991, July 2013. | RFC 6991, July 2013. | |||
| [YANG-IF] Bjorklund, M., "A YANG Data Model for Interface | [YANG-IF] Bjorklund, M., "A YANG Data Model for Interface | |||
| Management", draft-ietf-netmod-interfaces-cfg-12 (work in | Management", draft-ietf-netmod-interfaces-cfg-13 (work in | |||
| progress), July 2013. | progress), November 2013. | |||
| [YANG-IP] Bjorklund, M., "A YANG Data Model for IP Management", | [YANG-IP] Bjorklund, M., "A YANG Data Model for IP Management", | |||
| draft-ietf-netmod-ip-cfg-10 (work in progress), | draft-ietf-netmod-ip-cfg-11 (work in progress), | |||
| August 2013. | October 2013. | |||
| 13.2. Informative References | 13.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 Trees | Appendix A. The Complete Data Trees | |||
| skipping to change at page 75, line 18 ¶ | skipping to change at page 74, line 18 ¶ | |||
| state data trees of the core routing data model. | state data trees of the core routing data model. | |||
| See Section 2.2 for an explanation of the symbols used. Data type of | See Section 2.2 for an explanation of the symbols used. Data type of | |||
| every leaf node is shown near the right end of the corresponding | every leaf node is shown near the right end of the corresponding | |||
| line. | line. | |||
| A.1. Configuration Data | A.1. Configuration Data | |||
| +--rw routing | +--rw routing | |||
| +--rw routing-instance* [name] | +--rw routing-instance* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw routing-instance-id? uint64 | | +--rw type? identityref | |||
| | +--rw type? identityref | | +--rw enabled? boolean | |||
| | +--rw enabled? boolean | | +--rw router-id? yang:dotted-quad | |||
| | +--rw router-id? yang:dotted-quad | | +--rw description? string | |||
| | +--rw description? string | | +--rw default-ribs {multiple-ribs}? | |||
| | +--rw default-ribs {advanced-router}? | ||||
| | | +--rw default-rib* [address-family] | | | +--rw default-rib* [address-family] | |||
| | | +--rw address-family identityref | | | +--rw address-family identityref | |||
| | | +--rw name string | | | +--rw name string | |||
| | +--rw interfaces | | +--rw interfaces | |||
| | | +--rw interface* [name] | | | +--rw interface* [name] | |||
| | | +--rw name if:interface-ref | | | +--rw name if:interface-ref | |||
| | | +--rw v6ur:ipv6-router-advertisements | | | +--rw v6ur:ipv6-router-advertisements | |||
| | | +--rw v6ur:send-advertisements? boolean | | | +--rw v6ur:send-advertisements? boolean | |||
| | | +--rw v6ur:max-rtr-adv-interval? uint16 | | | +--rw v6ur:max-rtr-adv-interval? uint16 | |||
| | | +--rw v6ur:min-rtr-adv-interval? uint16 | | | +--rw v6ur:min-rtr-adv-interval? uint16 | |||
| | | +--rw v6ur:managed-flag? boolean | | | +--rw v6ur:managed-flag? boolean | |||
| | | +--rw v6ur:other-config-flag? boolean | | | +--rw v6ur:other-config-flag? boolean | |||
| | | +--rw v6ur:link-mtu? uint32 | | | +--rw v6ur:link-mtu? uint32 | |||
| | | +--rw v6ur:reachable-time? uint32 | | | +--rw v6ur:reachable-time? uint32 | |||
| | | +--rw v6ur:retrans-timer? uint32 | | | +--rw v6ur:retrans-timer? uint32 | |||
| | | +--rw v6ur:cur-hop-limit? uint8 | | | +--rw v6ur:cur-hop-limit? uint8 | |||
| skipping to change at page 76, line 10 ¶ | skipping to change at page 75, line 9 ¶ | |||
| | | +--rw v6ur:valid-lifetime? uint32 | | | +--rw v6ur:valid-lifetime? uint32 | |||
| | | +--rw v6ur:on-link-flag? boolean | | | +--rw v6ur:on-link-flag? boolean | |||
| | | +--rw v6ur:preferred-lifetime? uint32 | | | +--rw v6ur:preferred-lifetime? uint32 | |||
| | | +--rw v6ur:autonomous-flag? boolean | | | +--rw v6ur:autonomous-flag? boolean | |||
| | +--rw routing-protocols | | +--rw routing-protocols | |||
| | +--rw routing-protocol* [name] | | +--rw routing-protocol* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw description? string | | +--rw description? string | |||
| | +--rw enabled? boolean | | +--rw enabled? boolean | |||
| | +--rw type identityref | | +--rw type identityref | |||
| | +--rw connected-ribs {advanced-router}? | | +--rw connected-ribs {multiple-ribs}? | |||
| | | +--rw connected-rib* [rib-name] | | | +--rw connected-rib* [rib-name] | |||
| | | +--rw rib-name rib-ref | | | +--rw rib-name rib-ref | |||
| | | +--rw import-filter? route-filter-ref | | | +--rw import-filter? route-filter-ref | |||
| | | +--rw export-filter? route-filter-ref | | | +--rw export-filter? route-filter-ref | |||
| | +--rw static-routes | | +--rw static-routes | |||
| | +--rw v4ur:ipv4 | | +--rw v4ur:ipv4 | |||
| | | +--rw v4ur:route* [id] | | | +--rw v4ur:route* [id] | |||
| | | +--rw v4ur:id uint32 | | | +--rw v4ur:id uint32 | |||
| | | +--rw v4ur:description? string | | | +--rw v4ur:description? string | |||
| | | +--rw v4ur:destination-prefix inet:ipv4-prefix | | | +--rw v4ur:destination-prefix inet:ipv4-prefix | |||
| | | +--rw (nexthop-options) | | | +--rw (nexthop-options) | |||
| | | +--:(special-nexthop) | | | +--:(special-nexthop) | |||
| | | | +--rw v4ur:special-nexthop? enumeration | | | | +--rw v4ur:special-nexthop? enumeration | |||
| | | +--:(simple-nexthop) | | | +--:(simple-nexthop) | |||
| | | | +--rw v4ur:gateway? inet:ipv4-address | | | | +--rw v4ur:gateway? inet:ipv4-address | |||
| | | | +--rw v4ur:outgoing-interface? leafref | | | | +--rw v4ur:outgoing-interface? leafref | |||
| | | +--:(nexthop-list) {rt:advanced-router}? | | | +--:(nexthop-list) {rt:multipath-routes}? | |||
| | | +--rw v4ur:nexthop* [id] | | | +--rw v4ur:nexthop* [id] | |||
| | | +--rw v4ur:id uint32 | | | +--rw v4ur:id uint32 | |||
| | | +--rw v4ur:address? inet:ipv4-address | | | +--rw v4ur:address? inet:ipv4-address | |||
| | | +--rw v4ur:outgoing-interface? leafref | | | +--rw v4ur:outgoing-interface? leafref | |||
| | | +--rw v4ur:priority? enumeration | | | +--rw v4ur:priority? enumeration | |||
| | | +--rw v4ur:weight? uint8 | | | +--rw v4ur:weight? uint8 | |||
| | +--rw v6ur:ipv6 | | +--rw v6ur:ipv6 | |||
| | +--rw v6ur:route* [id] | | +--rw v6ur:route* [id] | |||
| | +--rw v6ur:id uint32 | | +--rw v6ur:id uint32 | |||
| | +--rw v6ur:description? string | | +--rw v6ur:description? string | |||
| | +--rw v6ur:destination-prefix inet:ipv6-prefix | | +--rw v6ur:destination-prefix inet:ipv6-prefix | |||
| | +--rw (nexthop-options) | | +--rw (nexthop-options) | |||
| | +--:(special-nexthop) | | +--:(special-nexthop) | |||
| | | +--rw v6ur:special-nexthop? enumeration | | | +--rw v6ur:special-nexthop? enumeration | |||
| | +--:(simple-nexthop) | | +--:(simple-nexthop) | |||
| | | +--rw v6ur:gateway? inet:ipv6-address | | | +--rw v6ur:gateway? inet:ipv6-address | |||
| | | +--rw v6ur:outgoing-interface? leafref | | | +--rw v6ur:outgoing-interface? leafref | |||
| | +--:(nexthop-list) {rt:advanced-router}? | | +--:(nexthop-list) {rt:multipath-routes}? | |||
| | +--rw v6ur:nexthop* [id] | | +--rw v6ur:nexthop* [id] | |||
| | +--rw v6ur:id uint32 | | +--rw v6ur:id uint32 | |||
| | +--rw v6ur:address? inet:ipv6-address | | +--rw v6ur:address? inet:ipv6-address | |||
| | +--rw v6ur:outgoing-interface? leafref | | +--rw v6ur:outgoing-interface? leafref | |||
| | +--rw v6ur:priority? enumeration | | +--rw v6ur:priority? enumeration | |||
| | +--rw v6ur:weight? uint8 | | +--rw v6ur:weight? uint8 | |||
| +--rw ribs | +--rw ribs | |||
| | +--rw rib* [name] | | +--rw rib* [name] | |||
| | +--rw name string | | +--rw name string | |||
| | +--rw id? uint64 | ||||
| | +--rw address-family identityref | | +--rw address-family identityref | |||
| | +--rw description? string | | +--rw description? string | |||
| | +--rw recipient-ribs {advanced-router}? | | +--rw recipient-ribs {multiple-ribs}? | |||
| | +--rw recipient-rib* [rib-name] | | +--rw recipient-rib* [rib-name] | |||
| | +--rw rib-name rib-ref | | +--rw rib-name rib-ref | |||
| | +--rw filter? route-filter-ref | | +--rw filter? route-filter-ref | |||
| +--rw route-filters | +--rw route-filters | |||
| +--rw route-filter* [name] | +--rw route-filter* [name] | |||
| +--rw name string | +--rw name string | |||
| +--rw description? string | +--rw description? string | |||
| +--rw type identityref | +--rw type identityref | |||
| A.2. Operational State Data | A.2. Operational State Data | |||
| +--ro routing-state | +--ro routing-state | |||
| +--ro routing-instance* [id] | +--ro routing-instance* [name] | |||
| | +--ro id uint64 | | +--ro name string | |||
| | +--ro name? leafref | | +--ro id? uint64 | |||
| | +--ro type? identityref | | +--ro type? identityref | |||
| | +--ro router-id? yang:dotted-quad | | +--ro router-id? yang:dotted-quad | |||
| | +--ro default-ribs | | +--ro default-ribs | |||
| | | +--ro default-rib* [address-family] | | | +--ro default-rib* [address-family] | |||
| | | +--ro address-family identityref | | | +--ro address-family identityref | |||
| | | +--ro rib-id rib-state-ref | | | +--ro rib-id rib-state-ref | |||
| | +--ro interfaces | | +--ro interfaces | |||
| | | +--ro interface* [name] | | | +--ro interface* [name] | |||
| | | +--ro name if:interface-state-ref | | | +--ro name if:interface-state-ref | |||
| | | +--ro v6ur:ipv6-router-advertisements | | | +--ro v6ur:ipv6-router-advertisements | |||
| skipping to change at page 77, line 48 ¶ | skipping to change at page 76, line 46 ¶ | |||
| | | +--ro v6ur:min-rtr-adv-interval? uint16 | | | +--ro v6ur:min-rtr-adv-interval? uint16 | |||
| | | +--ro v6ur:managed-flag? boolean | | | +--ro v6ur:managed-flag? boolean | |||
| | | +--ro v6ur:other-config-flag? boolean | | | +--ro v6ur:other-config-flag? boolean | |||
| | | +--ro v6ur:link-mtu? uint32 | | | +--ro v6ur:link-mtu? uint32 | |||
| | | +--ro v6ur:reachable-time? uint32 | | | +--ro v6ur:reachable-time? uint32 | |||
| | | +--ro v6ur:retrans-timer? uint32 | | | +--ro v6ur:retrans-timer? uint32 | |||
| | | +--ro v6ur:cur-hop-limit? uint8 | | | +--ro v6ur:cur-hop-limit? uint8 | |||
| | | +--ro v6ur:default-lifetime? uint16 | | | +--ro v6ur:default-lifetime? uint16 | |||
| | | +--ro v6ur:prefix-list | | | +--ro v6ur:prefix-list | |||
| | | +--ro v6ur:prefix* [prefix-spec] | | | +--ro v6ur:prefix* [prefix-spec] | |||
| | | +--ro v6ur:prefix-spec inet:ipv6-prefix | | | +--ro v6ur:prefix-spec inet:ipv6-prefix | |||
| | | +--ro v6ur:valid-lifetime? uint32 | | | +--ro v6ur:valid-lifetime? uint32 | |||
| | | +--ro v6ur:on-link-flag? boolean | | | +--ro v6ur:on-link-flag? boolean | |||
| | | +--ro v6ur:preferred-lifetime? uint32 | | | +--ro v6ur:preferred-lifetime? uint32 | |||
| | | +--ro v6ur:autonomous-flag? boolean | | | +--ro v6ur:autonomous-flag? boolean | |||
| | +--ro routing-protocols | | +--ro routing-protocols | |||
| | +--ro routing-protocol* [name] | | +--ro routing-protocol* [name] | |||
| | +--ro name string | | +--ro name string | |||
| | +--ro type identityref | | +--ro type identityref | |||
| | +--ro connected-ribs {advanced-router}? | | +--ro connected-ribs {multiple-ribs}? | |||
| | +--ro connected-rib* [rib-id] | | +--ro connected-rib* [rib-id] | |||
| | +--ro rib-id rib-state-ref | | +--ro rib-id rib-state-ref | |||
| | +--ro import-filter? route-filter-state-ref | | +--ro import-filter? route-filter-state-ref | |||
| | +--ro export-filter? route-filter-state-ref | | +--ro export-filter? route-filter-state-ref | |||
| +--ro ribs | +--ro ribs | |||
| | +--ro rib* [id] | | +--ro rib* [name] | |||
| | +--ro id uint64 | | +--ro name string | |||
| | +--ro name? leafref | | +--ro id? uint64 | |||
| | +--ro address-family identityref | | +--ro address-family identityref | |||
| | +--ro routes | | +--ro routes | |||
| | | +--ro route* [id] | | | +--ro route* | |||
| | | +--ro id uint64 | | | +--ro id? uint64 | |||
| | | +--ro (nexthop-options) | | | +--ro (nexthop-options) | |||
| | | | +--:(special-nexthop) | | | | +--:(special-nexthop) | |||
| | | | | +--ro special-nexthop? enumeration | | | | | +--ro special-nexthop? enumeration | |||
| | | | +--:(simple-nexthop) | | | | +--:(simple-nexthop) | |||
| | | | | +--ro outgoing-interface? leafref | | | | | +--ro outgoing-interface? leafref | |||
| | | | | +--ro v4ur:gateway? inet:ipv4-address | | | | | +--ro v4ur:gateway? inet:ipv4-address | |||
| | | | | +--ro v6ur:gateway? inet:ipv6-address | | | | | +--ro v6ur:gateway? inet:ipv6-address | |||
| | | | +--:(nexthop-list) {advanced-router}? | | | | +--:(nexthop-list) {multipath-routes}? | |||
| | | | +--ro nexthop* [id] | | | | +--ro nexthop* | |||
| | | | +--ro id uint64 | | | | +--ro id? uint64 | |||
| | | | +--ro outgoing-interface? leafref | | | | +--ro outgoing-interface? leafref | |||
| | | | +--ro priority? enumeration | | | | +--ro priority? enumeration | |||
| | | | +--ro weight? uint8 | | | | +--ro weight? uint8 | |||
| | | | +--ro v4ur:address? inet:ipv4-address | | | | +--ro v4ur:address? inet:ipv4-address | |||
| | | | +--ro v6ur:address? inet:ipv6-address | | | | +--ro v6ur:address? inet:ipv6-address | |||
| | | +--ro source-protocol identityref | | | +--ro source-protocol identityref | |||
| | | +--ro last-updated? yang:date-and-time | | | +--ro last-updated? yang:date-and-time | |||
| | | +--ro v4ur:destination-prefix? inet:ipv4-prefix | | | +--ro v4ur:destination-prefix? inet:ipv4-prefix | |||
| | | +--ro v6ur:destination-prefix? inet:ipv6-prefix | | | +--ro v6ur:destination-prefix? inet:ipv6-prefix | |||
| | +--ro recipient-ribs {advanced-router}? | | +--ro recipient-ribs {multiple-ribs}? | |||
| | +--ro recipient-rib* [rib-id] | | +--ro recipient-rib* [rib-id] | |||
| | +--ro rib-id rib-state-ref | | +--ro rib-id rib-state-ref | |||
| | +--ro filter? route-filter-state-ref | | +--ro filter? route-filter-state-ref | |||
| +--ro route-filters | +--ro route-filters | |||
| +--ro route-filter* [name] | +--ro route-filter* [name] | |||
| +--ro name string | +--ro name string | |||
| +--ro type identityref | +--ro type identityref | |||
| Appendix B. Example: Adding a New Routing Protocol | Appendix B. Example: Adding a New Routing Protocol | |||
| skipping to change at page 82, line 51 ¶ | skipping to change at page 81, line 51 ¶ | |||
| +--------+--------+ | +--------+--------+ | |||
| eth1|198.51.100.1 | eth1|198.51.100.1 | |||
| |2001:db8:0:2::1 | |2001:db8:0:2::1 | |||
| | | | | |||
| Figure 5: Example network configuration | Figure 5: Example network configuration | |||
| A reply to the NETCONF <get> message sent by router "A" would then be | A reply to the NETCONF <get> message sent by router "A" would then be | |||
| as follows: | as follows: | |||
| <?xml version="1.0"?> | <?xml version="1.0"?> | |||
| <rpc-reply | <rpc-reply | |||
| message-id="101" | message-id="101" | |||
| xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" | |||
| xmlns:v4ur="urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing" | xmlns:v4ur="urn:ietf:params:xml:ns:yang:ietf-ipv4-unicast-routing" | |||
| xmlns:v6ur="urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing" | xmlns:v6ur="urn:ietf:params:xml:ns:yang:ietf-ipv6-unicast-routing" | |||
| xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces" | xmlns:if="urn:ietf:params:xml:ns:yang:ietf-interfaces" | |||
| xmlns:ip="urn:ietf:params:xml:ns:yang:ietf-ip" | xmlns:ip="urn:ietf:params:xml:ns:yang:ietf-ip" | |||
| xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing"> | xmlns:rt="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
| <data> | <data> | |||
| <if:interfaces> | <if:interfaces> | |||
| <if:interface> | <if:interface> | |||
| <if:name>eth0</if:name> | <if:name>eth0</if:name> | |||
| <if:type>ethernetCsmacd</if:type> | <if:type>ethernetCsmacd</if:type> | |||
| <if:description> | <if:description> | |||
| Uplink to ISP. | Uplink to ISP. | |||
| </if:description> | </if:description> | |||
| <ip:ipv4> | <ip:ipv4> | |||
| <ip:address> | <ip:address> | |||
| <ip:ip>192.0.2.1</ip:ip> | <ip:ip>192.0.2.1</ip:ip> | |||
| <ip:prefix-length>24</ip:prefix-length> | <ip:prefix-length>24</ip:prefix-length> | |||
| </ip:address> | </ip:address> | |||
| <ip:forwarding>true</ip:forwarding> | <ip:forwarding>true</ip:forwarding> | |||
| </ip:ipv4> | </ip:ipv4> | |||
| <ip:ipv6> | <ip:ipv6> | |||
| <ip:address> | <ip:address> | |||
| <ip:ip>2001:0db8:0:1::1</ip:ip> | <ip:ip>2001:0db8:0:1::1</ip:ip> | |||
| <ip:prefix-length>64</ip:prefix-length> | <ip:prefix-length>64</ip:prefix-length> | |||
| </ip:address> | </ip:address> | |||
| <ip:forwarding>true</ip:forwarding> | <ip:forwarding>true</ip:forwarding> | |||
| <ip:autoconf> | <ip:autoconf> | |||
| <ip:create-global-addresses>false</ip:create-global-addresses> | <ip:create-global-addresses>false</ip:create-global-addresses> | |||
| </ip:autoconf> | </ip:autoconf> | |||
| </ip:ipv6> | </ip:ipv6> | |||
| </if:interface> | </if:interface> | |||
| <if:interface> | <if:interface> | |||
| <if:name>eth1</if:name> | <if:name>eth1</if:name> | |||
| <if:type>ethernetCsmacd</if:type> | <if:type>ethernetCsmacd</if:type> | |||
| <if:description> | <if:description> | |||
| Interface to the internal network. | Interface to the internal network. | |||
| </if:description> | </if:description> | |||
| <ip:ipv4> | <ip:ipv4> | |||
| <ip:address> | <ip:address> | |||
| <ip:ip>198.51.100.1</ip:ip> | <ip:ip>198.51.100.1</ip:ip> | |||
| <ip:prefix-length>24</ip:prefix-length> | <ip:prefix-length>24</ip:prefix-length> | |||
| </ip:address> | </ip:address> | |||
| <ip:forwarding>true</ip:forwarding> | <ip:forwarding>true</ip:forwarding> | |||
| </ip:ipv4> | </ip:ipv4> | |||
| <ip:ipv6> | <ip:ipv6> | |||
| <ip:address> | <ip:address> | |||
| <ip:ip>2001:0db8:0:2::1</ip:ip> | <ip:ip>2001:0db8:0:2::1</ip:ip> | |||
| <ip:prefix-length>64</ip:prefix-length> | <ip:prefix-length>64</ip:prefix-length> | |||
| </ip:address> | </ip:address> | |||
| <ip:forwarding>true</ip:forwarding> | <ip:forwarding>true</ip:forwarding> | |||
| <ip:autoconf> | <ip:autoconf> | |||
| <ip:create-global-addresses>false</ip:create-global-addresses> | <ip:create-global-addresses>false</ip:create-global-addresses> | |||
| </ip:autoconf> | </ip:autoconf> | |||
| </ip:ipv6> | </ip:ipv6> | |||
| </if:interface> | </if:interface> | |||
| </if:interfaces> | </if:interfaces> | |||
| <if:interfaces-state> | <if:interfaces-state> | |||
| <if:interface> | <if:interface> | |||
| <if:name>eth0</if:name> | <if:name>eth0</if:name> | |||
| <if:type>ethernetCsmacd</if:type> | <if:type>ethernetCsmacd</if:type> | |||
| <if:phys-address>00:0C:42:E5:B1:E9</if:phys-address> | <if:phys-address>00:0C:42:E5:B1:E9</if:phys-address> | |||
| <if:oper-status>up</if:oper-status> | <if:oper-status>up</if:oper-status> | |||
| <if:statistics> | <if:statistics> | |||
| <if:discontinuity-time> | <if:discontinuity-time> | |||
| 2013-07-02T17:11:27+00:58 | 2013-07-02T17:11:27+00:58 | |||
| </if:discontinuity-time> | </if:discontinuity-time> | |||
| </if:statistics> | </if:statistics> | |||
| </if:interface> | </if:interface> | |||
| <if:interface> | <if:interface> | |||
| <if:name>eth1</if:name> | <if:name>eth1</if:name> | |||
| <if:type>ethernetCsmacd</if:type> | <if:type>ethernetCsmacd</if:type> | |||
| <if:oper-status>up</if:oper-status> | <if:oper-status>up</if:oper-status> | |||
| <if:phys-address>00:0C:42:E5:B1:EA</if:phys-address> | <if:phys-address>00:0C:42:E5:B1:EA</if:phys-address> | |||
| <if:statistics> | <if:statistics> | |||
| <if:discontinuity-time> | <if:discontinuity-time> | |||
| 2013-07-02T17:11:27+00:59 | 2013-07-02T17:11:27+00:59 | |||
| </if:discontinuity-time> | </if:discontinuity-time> | |||
| </if:statistics> | </if:statistics> | |||
| </if:interface> | </if:interface> | |||
| </if:interfaces-state> | </if:interfaces-state> | |||
| <rt:routing> | <rt:routing> | |||
| <rt:routing-instance> | <rt:routing-instance> | |||
| <rt:name>rtr0</rt:name> | <rt:name>rtr0</rt:name> | |||
| <rt:routing-instance-id>1415926535</rt:routing-instance-id> | <rt:description>Router A</rt:description> | |||
| <rt:description>Router A</rt:description> | <rt:interfaces> | |||
| <rt:interfaces> | <rt:interface> | |||
| <rt:interface> | <rt:name>eth1</rt:name> | |||
| <rt:name>eth1</rt:name> | <v6ur:ipv6-router-advertisements> | |||
| <v6ur:ipv6-router-advertisements> | <v6ur:send-advertisements>true</v6ur:send-advertisements> | |||
| <v6ur:send-advertisements>true</v6ur:send-advertisements> | <v6ur:prefix-list> | |||
| <v6ur:prefix-list> | <v6ur:prefix> | |||
| <v6ur:prefix> | <v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | |||
| <v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | </v6ur:prefix> | |||
| </v6ur:prefix> | </v6ur:prefix-list> | |||
| </v6ur:prefix-list> | </v6ur:ipv6-router-advertisements> | |||
| </v6ur:ipv6-router-advertisements> | </rt:interface> | |||
| </rt:interface> | </rt:interfaces> | |||
| </rt:interfaces> | <rt:routing-protocols> | |||
| <rt:routing-protocols> | <rt:routing-protocol> | |||
| <rt:routing-protocol> | <rt:name>st0</rt:name> | |||
| <rt:name>st0</rt:name> | <rt:description> | |||
| <rt:description> | Static routing is used for the internal network. | |||
| Static routing is used for the internal network. | </rt:description> | |||
| </rt:description> | <rt:type>rt:static</rt:type> | |||
| <rt:type>rt:static</rt:type> | <rt:static-routes> | |||
| <rt:static-routes> | <v4ur:ipv4> | |||
| <v4ur:ipv4> | <v4ur:route> | |||
| <v4ur:route> | <v4ur:id>1</v4ur:id> | |||
| <v4ur:id>1</v4ur:id> | <v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | |||
| <v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | <v4ur:gateway>192.0.2.2</v4ur:gateway> | |||
| <v4ur:gateway>192.0.2.2</v4ur:gateway> | </v4ur:route> | |||
| </v4ur:route> | </v4ur:ipv4> | |||
| </v4ur:ipv4> | <v6ur:ipv6> | |||
| <v6ur:ipv6> | <v6ur:route> | |||
| <v6ur:route> | <v6ur:id>1</v6ur:id> | |||
| <v6ur:id>1</v6ur:id> | <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | |||
| <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | <v6ur:gateway>2001:db8:0:1::2</v6ur:gateway> | |||
| <v6ur:gateway>2001:db8:0:1::2</v6ur:gateway> | </v6ur:route> | |||
| </v6ur:route> | </v6ur:ipv6> | |||
| </v6ur:ipv6> | </rt:static-routes> | |||
| </rt:static-routes> | </rt:routing-protocol> | |||
| </rt:routing-protocol> | </rt:routing-protocols> | |||
| </rt:routing-protocols> | </rt:routing-instance> | |||
| </rt:routing-instance> | </rt:routing> | |||
| </rt:routing> | <rt:routing-state> | |||
| <rt:routing-state> | <rt:routing-instance> | |||
| <rt:routing-instance> | <rt:name>rtr0</rt:name> | |||
| <rt:id>1415926535</rt:id> | <rt:router-id>192.0.2.1</rt:router-id> | |||
| <rt:name>rtr0</rt:name> | <rt:default-ribs> | |||
| <rt:router-id>192.0.2.1</rt:router-id> | <rt:default-rib> | |||
| <rt:default-ribs> | ||||
| <rt:default-rib> | ||||
| <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | ||||
| <rt:rib-id>897932384</rt:rib-id> | ||||
| </rt:default-rib> | ||||
| <rt:default-rib> | ||||
| <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | ||||
| <rt:rib-id>751058209</rt:rib-id> | ||||
| </rt:default-rib> | ||||
| </rt:default-ribs> | ||||
| <rt:interfaces> | ||||
| <rt:interface> | ||||
| <rt:name>eth0</rt:name> | ||||
| </rt:interface> | ||||
| <rt:interface> | ||||
| <rt:name>eth1</rt:name> | ||||
| <v6ur:ipv6-router-advertisements> | ||||
| <v6ur:send-advertisements>true</v6ur:send-advertisements> | ||||
| <v6ur:prefix-list> | ||||
| <v6ur:prefix> | ||||
| <v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | ||||
| </v6ur:prefix> | ||||
| </v6ur:prefix-list> | ||||
| </v6ur:ipv6-router-advertisements> | ||||
| </rt:interface> | ||||
| </rt:interfaces> | ||||
| <rt:routing-protocols> | ||||
| <rt:routing-protocol> | ||||
| <rt:name>st0</rt:name> | ||||
| <rt:type>rt:static</rt:type> | ||||
| </rt:routing-protocol> | ||||
| </rt:routing-protocols> | ||||
| </rt:routing-instance> | ||||
| <rt:ribs> | ||||
| <rt:rib> | ||||
| <rt:id>897932384</rt:id> | ||||
| <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | |||
| <rt:routes> | <rt:rib-id>897932384</rt:rib-id> | |||
| <rt:route> | </rt:default-rib> | |||
| <rt:id>626433832</rt:id> | <rt:default-rib> | |||
| <v4ur:destination-prefix> | ||||
| 192.0.2.1/24 | ||||
| </v4ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth0</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>795028841</rt:id> | ||||
| <v4ur:destination-prefix> | ||||
| 198.51.100.0/24 | ||||
| </v4ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth1</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>971693993</rt:id> | ||||
| <v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | ||||
| <rt:source-protocol>rt:static</rt:source-protocol> | ||||
| <v4ur:gateway>192.0.2.2</v4ur:gateway> | ||||
| <rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| </rt:routes> | ||||
| </rt:rib> | ||||
| <rt:rib> | ||||
| <rt:id>751058209</rt:id> | ||||
| <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | |||
| <rt:routes> | <rt:rib-id>751058209</rt:rib-id> | |||
| <rt:route> | </rt:default-rib> | |||
| <rt:id>749445923</rt:id> | </rt:default-ribs> | |||
| <v6ur:destination-prefix> | <rt:interfaces> | |||
| 2001:db8:0:1::/64 | <rt:interface> | |||
| </v6ur:destination-prefix> | <rt:name>eth0</rt:name> | |||
| <rt:outgoing-interface>eth0</rt:outgoing-interface> | </rt:interface> | |||
| <rt:source-protocol>rt:direct</rt:source-protocol> | <rt:interface> | |||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | <rt:name>eth1</rt:name> | |||
| </rt:route> | <v6ur:ipv6-router-advertisements> | |||
| <rt:route> | <v6ur:send-advertisements>true</v6ur:send-advertisements> | |||
| <rt:id>78164062</rt:id> | <v6ur:prefix-list> | |||
| <v6ur:destination-prefix> | <v6ur:prefix> | |||
| 2001:db8:0:2::/64 | <v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | |||
| </v6ur:destination-prefix> | </v6ur:prefix> | |||
| <rt:outgoing-interface>eth1</rt:outgoing-interface> | </v6ur:prefix-list> | |||
| <rt:source-protocol>rt:direct</rt:source-protocol> | </v6ur:ipv6-router-advertisements> | |||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | </rt:interface> | |||
| </rt:route> | </rt:interfaces> | |||
| <rt:route> | <rt:routing-protocols> | |||
| <rt:id>862089986</rt:id> | <rt:routing-protocol> | |||
| <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | <rt:name>st0</rt:name> | |||
| <v6ur:gateway>2001:db8:0:1::2</v6ur:gateway> | <rt:type>rt:static</rt:type> | |||
| <rt:source-protocol>rt:static</rt:source-protocol> | </rt:routing-protocol> | |||
| <rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | </rt:routing-protocols> | |||
| </rt:route> | </rt:routing-instance> | |||
| </rt:routes> | <rt:ribs> | |||
| </rt:rib> | <rt:rib> | |||
| </rt:ribs> | <rt:name>ipv4-main</rt:name> | |||
| </rt:routing-state> | <rt:id>897932384</rt:id> | |||
| </data> | <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | |||
| </rpc-reply> | <rt:routes> | |||
| <rt:route> | ||||
| <rt:id>626433832</rt:id> | ||||
| <v4ur:destination-prefix>192.0.2.1/24</v4ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth0</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>795028841</rt:id> | ||||
| <v4ur:destination-prefix> | ||||
| 198.51.100.0/24 | ||||
| </v4ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth1</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>971693993</rt:id> | ||||
| <v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | ||||
| <rt:source-protocol>rt:static</rt:source-protocol> | ||||
| <v4ur:gateway>192.0.2.2</v4ur:gateway> | ||||
| <rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| </rt:routes> | ||||
| </rt:rib> | ||||
| <rt:rib> | ||||
| <rt:name>ipv6-main</rt:name> | ||||
| <rt:id>751058209</rt:id> | ||||
| <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | ||||
| <rt:routes> | ||||
| <rt:route> | ||||
| <rt:id>749445923</rt:id> | ||||
| <v6ur:destination-prefix> | ||||
| 2001:db8:0:1::/64 | ||||
| </v6ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth0</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>78164062</rt:id> | ||||
| <v6ur:destination-prefix> | ||||
| 2001:db8:0:2::/64 | ||||
| </v6ur:destination-prefix> | ||||
| <rt:outgoing-interface>eth1</rt:outgoing-interface> | ||||
| <rt:source-protocol>rt:direct</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| <rt:route> | ||||
| <rt:id>862089986</rt:id> | ||||
| <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | ||||
| <v6ur:gateway>2001:db8:0:1::2</v6ur:gateway> | ||||
| <rt:source-protocol>rt:static</rt:source-protocol> | ||||
| <rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | ||||
| </rt:route> | ||||
| </rt:routes> | ||||
| </rt:rib> | ||||
| </rt:ribs> | ||||
| </rt:routing-state> | ||||
| </data> | ||||
| </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 -10 and -11 | D.1. Changes Between Versions -11 and -12 | |||
| o Removed feature "advanced-router" and introduced two features | ||||
| instead: "multiple-ribs" and "multipath-routes". | ||||
| o Unified the keys of config and state versions of "routing- | ||||
| instance" and "rib" lists. | ||||
| o Numerical identifiers of state list entries are not keys anymore, | ||||
| but they are constrained using the "unique" statement. | ||||
| o Updated acknowledgements. | ||||
| D.2. Changes Between Versions -10 and -11 | ||||
| o Migrated address families from IANA enumerations to identities. | o Migrated address families from IANA enumerations to identities. | |||
| o Terminology and node names aligned with the I2RS RIB model: router | o Terminology and node names aligned with the I2RS RIB model: router | |||
| -> routing instance, routing table -> RIB. | -> routing instance, routing table -> RIB. | |||
| o Introduced uint64 keys for state lists: routing-instance, rib, | o Introduced uint64 keys for state lists: routing-instance, rib, | |||
| route, nexthop. | route, nexthop. | |||
| o Described the relationship between system-controlled and user- | o Described the relationship between system-controlled and user- | |||
| skipping to change at page 88, line 33 ¶ | skipping to change at page 87, line 46 ¶ | |||
| router". | router". | |||
| o Made nexthop into a choice in order to allow for nexthop-list | o Made nexthop into a choice in order to allow for nexthop-list | |||
| (I2RS requirement). | (I2RS requirement). | |||
| o Added nexthop-list with entries having priorities (backup) and | o Added nexthop-list with entries having priorities (backup) and | |||
| weights (load balancing). | weights (load balancing). | |||
| o Updated bibliography references. | o Updated bibliography references. | |||
| D.2. Changes Between Versions -09 and -10 | D.3. Changes Between Versions -09 and -10 | |||
| o Added subtree for operational state data ("/routing-state"). | o Added subtree for operational state data ("/routing-state"). | |||
| o Terms "system-controlled entry" and "user-controlled entry" | o Terms "system-controlled entry" and "user-controlled entry" | |||
| defined and used. | defined and used. | |||
| o New feature "user-defined-routing-tables". Nodes that are useful | o New feature "user-defined-routing-tables". Nodes that are useful | |||
| only with user-defined routing tables are now conditional. | only with user-defined routing tables are now conditional. | |||
| o Added grouping "router-id". | o Added grouping "router-id". | |||
| o In routing tables, "source-protocol" attribute of routes now | o In routing tables, "source-protocol" attribute of routes now | |||
| reports only protocol type, and its datatype is "identityref". | reports only protocol type, and its datatype is "identityref". | |||
| o Renamed "main-routing-table" to "default-routing-table". | o Renamed "main-routing-table" to "default-routing-table". | |||
| D.3. Changes Between Versions -08 and -09 | D.4. Changes Between Versions -08 and -09 | |||
| o Fixed "must" expresion for "connected-routing-table". | o Fixed "must" expresion for "connected-routing-table". | |||
| o Simplified "must" expression for "main-routing-table". | o Simplified "must" expression for "main-routing-table". | |||
| o Moved per-interface configuration of a new routing protocol under | o Moved per-interface configuration of a new routing protocol under | |||
| 'routing-protocol'. This also affects the 'example-rip' module. | 'routing-protocol'. This also affects the 'example-rip' module. | |||
| D.4. Changes Between Versions -07 and -08 | D.5. Changes Between Versions -07 and -08 | |||
| o Changed reference from RFC6021 to RFC6021bis. | o Changed reference from RFC6021 to RFC6021bis. | |||
| D.5. Changes Between Versions -06 and -07 | D.6. 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.6. Changes Between Versions -05 and -06 | D.7. 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 90, line 11 ¶ | skipping to change at page 89, line 22 ¶ | |||
| 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.7. Changes Between Versions -04 and -05 | D.8. 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 90, line 46 ¶ | skipping to change at page 90, line 8 ¶ | |||
| 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.8. Changes Between Versions -03 and -04 | D.9. 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.9. Changes Between Versions -02 and -03 | D.10. 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 91, line 43 ¶ | skipping to change at page 91, line 7 ¶ | |||
| "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.10. Changes Between Versions -01 and -02 | D.11. 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 92, line 20 ¶ | skipping to change at page 91, line 31 ¶ | |||
| 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.11. Changes Between Versions -00 and -01 | D.12. 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. 111 change blocks. | ||||
| 471 lines changed or deleted | 460 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||