draft-ietf-netmod-routing-cfg-13.txt | draft-ietf-netmod-routing-cfg-14.txt | |||
---|---|---|---|---|
NETMOD L. Lhotka | NETMOD L. Lhotka | |||
Internet-Draft CZ.NIC | Internet-Draft CZ.NIC | |||
Intended status: Standards Track January 10, 2014 | Intended status: Standards Track May 22, 2014 | |||
Expires: July 14, 2014 | Expires: November 23, 2014 | |||
A YANG Data Model for Routing Management | A YANG Data Model for Routing Management | |||
draft-ietf-netmod-routing-cfg-13 | draft-ietf-netmod-routing-cfg-14 | |||
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 July 14, 2014. | This Internet-Draft will expire on November 23, 2014. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2014 IETF Trust and the persons identified as the | Copyright (c) 2014 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 49 | skipping to change at page 2, line 49 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 73 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 73 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 73 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 73 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . . 73 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 73 | |||
Appendix A. The Complete Data Trees . . . . . . . . . . . . . . . 74 | Appendix A. The Complete Data Trees . . . . . . . . . . . . . . . 74 | |||
A.1. Configuration Data . . . . . . . . . . . . . . . . . . . . 74 | A.1. Configuration Data . . . . . . . . . . . . . . . . . . . . 74 | |||
A.2. Operational State Data . . . . . . . . . . . . . . . . . . 76 | A.2. Operational State Data . . . . . . . . . . . . . . . . . . 76 | |||
Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 78 | Appendix B. Minimum Implementation . . . . . . . . . . . . . . . 78 | |||
Appendix C. Example: Adding a New Routing Protocol . . . . . . . 79 | Appendix C. Example: Adding a New Routing Protocol . . . . . . . 79 | |||
Appendix D. Example: NETCONF <get> Reply . . . . . . . . . . . . 82 | Appendix D. Example: NETCONF <get> Reply . . . . . . . . . . . . 82 | |||
Appendix E. Change Log . . . . . . . . . . . . . . . . . . . . . 89 | Appendix E. Change Log . . . . . . . . . . . . . . . . . . . . . 89 | |||
E.1. Changes Between Versions -12 and -13 . . . . . . . . . . . 89 | E.1. Changes Between Versions -13 and -14 . . . . . . . . . . . 89 | |||
E.2. Changes Between Versions -11 and -12 . . . . . . . . . . . 89 | E.2. Changes Between Versions -12 and -13 . . . . . . . . . . . 89 | |||
E.3. Changes Between Versions -10 and -11 . . . . . . . . . . . 90 | E.3. Changes Between Versions -11 and -12 . . . . . . . . . . . 90 | |||
E.4. Changes Between Versions -09 and -10 . . . . . . . . . . . 90 | E.4. Changes Between Versions -10 and -11 . . . . . . . . . . . 90 | |||
E.5. Changes Between Versions -08 and -09 . . . . . . . . . . . 90 | E.5. Changes Between Versions -09 and -10 . . . . . . . . . . . 90 | |||
E.6. Changes Between Versions -07 and -08 . . . . . . . . . . . 91 | E.6. Changes Between Versions -08 and -09 . . . . . . . . . . . 91 | |||
E.7. Changes Between Versions -06 and -07 . . . . . . . . . . . 91 | E.7. Changes Between Versions -07 and -08 . . . . . . . . . . . 91 | |||
E.8. Changes Between Versions -05 and -06 . . . . . . . . . . . 91 | E.8. Changes Between Versions -06 and -07 . . . . . . . . . . . 91 | |||
E.9. Changes Between Versions -04 and -05 . . . . . . . . . . . 92 | E.9. Changes Between Versions -05 and -06 . . . . . . . . . . . 91 | |||
E.10. Changes Between Versions -03 and -04 . . . . . . . . . . . 92 | E.10. Changes Between Versions -04 and -05 . . . . . . . . . . . 92 | |||
E.11. Changes Between Versions -02 and -03 . . . . . . . . . . . 93 | E.11. Changes Between Versions -03 and -04 . . . . . . . . . . . 93 | |||
E.12. Changes Between Versions -01 and -02 . . . . . . . . . . . 93 | E.12. Changes Between Versions -02 and -03 . . . . . . . . . . . 93 | |||
E.13. Changes Between Versions -00 and -01 . . . . . . . . . . . 94 | E.13. Changes Between Versions -01 and -02 . . . . . . . . . . . 94 | |||
E.14. Changes Between Versions -00 and -01 . . . . . . . . . . . 94 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 95 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 95 | |||
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" | |||
skipping to change at page 6, line 34 | skipping to change at page 6, line 34 | |||
presented in Appendix A, and similar diagrams of its various subtrees | presented in Appendix A, and similar diagrams of its various subtrees | |||
appear in the main text. The meaning of the symbols in these | appear in the main text. The meaning of the symbols in these | |||
diagrams is as follows: | diagrams is as follows: | |||
o Brackets "[" and "]" enclose list keys. | o Brackets "[" and "]" enclose list keys. | |||
o Curly braces "{" and "}" contain names of optional features that | o Curly braces "{" and "}" contain names of optional features that | |||
make the corresponding node conditional. | make the corresponding node conditional. | |||
o Abbreviations before data node names: "rw" means configuration | o Abbreviations before data node names: "rw" means configuration | |||
(read-write) and "ro" state data (read-only). | (read-write), and "ro" state data (read-only). | |||
o Symbols after data node names: "?" means an optional node and "*" | o Symbols after data node names: "?" means an optional node and "*" | |||
denotes a "list" or "leaf-list". | denotes a "list" or "leaf-list". | |||
o Parentheses enclose choice and case nodes, and case nodes are also | o Parentheses enclose choice and case nodes, and case nodes are also | |||
marked with a colon (":"). | marked with a colon (":"). | |||
o Ellipsis ("...") stands for contents of subtrees that are not | o Ellipsis ("...") stands for contents of subtrees that are not | |||
shown. | shown. | |||
skipping to change at page 7, line 8 | skipping to change at page 7, line 8 | |||
In this document, names of data nodes, RPC methods and other data | In this document, names of data nodes, RPC methods and other data | |||
model objects are often used without a prefix, as long as it is clear | model objects are often used without a prefix, as long as it is clear | |||
from the context in which YANG module each name is defined. | from the context in which YANG module each name is defined. | |||
Otherwise, names are prefixed using the standard prefix associated | Otherwise, names are prefixed using the standard prefix associated | |||
with the corresponding YANG module, as shown in Table 1. | with the corresponding YANG module, as shown in Table 1. | |||
+--------+---------------------------+-----------+ | +--------+---------------------------+-----------+ | |||
| Prefix | YANG module | Reference | | | Prefix | YANG module | Reference | | |||
+--------+---------------------------+-----------+ | +--------+---------------------------+-----------+ | |||
| if | ietf-interfaces | [YANG-IF] | | | if | ietf-interfaces | [RFC7223] | | |||
| | | | | | | | | | |||
| ip | ietf-ip | [YANG-IP] | | | ip | ietf-ip | [YANG-IP] | | |||
| | | | | | | | | | |||
| rt | ietf-routing | Section 7 | | | rt | ietf-routing | Section 7 | | |||
| | | | | | | | | | |||
| v4ur | ietf-ipv4-unicast-routing | Section 8 | | | v4ur | ietf-ipv4-unicast-routing | Section 8 | | |||
| | | | | | | | | | |||
| v6ur | ietf-ipv6-unicast-routing | Section 9 | | | v6ur | ietf-ipv6-unicast-routing | Section 9 | | |||
| | | | | | | | | | |||
| yang | ietf-yang-types | [RFC6991] | | | yang | ietf-yang-types | [RFC6991] | | |||
skipping to change at page 14, line 44 | skipping to change at page 14, line 44 | |||
instance" and may not allow creation of any user-controlled | instance" and may not allow creation of any user-controlled | |||
instances. | instances. | |||
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 [RFC7223]. | |||
In YANG terms, the list of routing instance interfaces is modeled as | In YANG terms, the list of routing instance interfaces is modeled as | |||
a "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. | |||
skipping to change at page 21, line 11 | skipping to change at page 21, line 11 | |||
additional routing protocol types. Such a new module has to define | additional routing protocol types. Such a new module has to define | |||
the protocol-specific configuration and state data, and it has to fit | the protocol-specific configuration and state data, and it has to fit | |||
it into the core routing framework in the following way: | it into the core routing framework in the following way: | |||
o A new identity MUST be defined for the routing protocol and its | o A new identity MUST be defined for the routing protocol and its | |||
base identity MUST be set to "rt:routing-protocol", or to an | base identity MUST be set to "rt:routing-protocol", or to an | |||
identity derived from "rt:routing-protocol". | identity derived from "rt:routing-protocol". | |||
o Additional route attributes MAY be defined, preferably in one | o Additional route attributes MAY be defined, preferably in one | |||
place by means of defining a YANG grouping. The new attributes | place by means of defining a YANG grouping. The new attributes | |||
have to be inserted as state data by augmenting the definitions of | have to be inserted by augmenting the definitions of the nodes | |||
the nodes | ||||
/rt:ribs/rt:rib/rt:route | /rt:routing-state/rt:ribs/rt:rib/rt:route | |||
and | and | |||
/rt:active-route/rt:output/rt:route, | /rt:active-route/rt:output/rt:route, | |||
and possibly other places in the configuration, state data and RPC | and possibly other places in the configuration, state data and RPC | |||
input or output. | input or output. | |||
o Configuration parameters and/or state data for the new protocol | o Configuration parameters and/or state data for the new protocol | |||
can be defined by augmenting the "routing-protocol" data node | can be defined by augmenting the "routing-protocol" data node | |||
skipping to change at page 23, line 13 | skipping to change at page 23, line 13 | |||
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" | |||
The following boolean switch is defined in the "ietf-interfaces" YANG | The following boolean switch is defined in the "ietf-interfaces" YANG | |||
module [YANG-IF]: | module [RFC7223]: | |||
/if:interfaces/if:interface/if:enabled | /if:interfaces/if:interface/if:enabled | |||
If this switch is set to "false" for a network layer interface, | If this switch is set to "false" for a network layer interface, | |||
the device MUST behave exactly as if that interface was not | the device MUST behave exactly as if that interface was not | |||
assigned to any routing instance at all. | assigned to any routing instance at all. | |||
6.2. Module "ietf-ip" | 6.2. Module "ietf-ip" | |||
The following boolean switches are defined in the "ietf-ip" YANG | The following boolean switches are defined in the "ietf-ip" YANG | |||
skipping to change at page 25, 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 Management YANG Module | 7. Routing Management 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@2014-01-10.yang" | <CODE BEGINS> file "ietf-routing@2014-05-22.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 25, line 34 | skipping to change at page 25, line 34 | |||
prefix "if"; | prefix "if"; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
WG Chair: David Kessens | WG Chair: Thomas Nadeau | |||
<mailto:david.kessens@nsn.com> | <mailto:tnadeau@lucidvision.com> | |||
WG Chair: Juergen Schoenwaelder | WG Chair: Juergen Schoenwaelder | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz>"; | <mailto:lhotka@nic.cz>"; | |||
description | description | |||
"This YANG module defines essential components for the management | "This YANG module defines essential components for the management | |||
of a routing subsystem. | of a routing subsystem. | |||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2014 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
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 2014-01-10 { | revision 2014-05-22 { | |||
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 multiple-ribs { | feature multiple-ribs { | |||
description | description | |||
skipping to change at page 30, line 26 | skipping to change at page 30, line 26 | |||
neighbors."; | neighbors."; | |||
} | } | |||
} | } | |||
grouping outgoing-interface { | grouping outgoing-interface { | |||
description | description | |||
"This grouping defines the outgoing interface for use in | "This grouping defines the outgoing interface for use in | |||
next-hops."; | next-hops."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type leafref { | type leafref { | |||
path "/routing-state/routing-instance/interfaces/interface/" | path "/rt:routing-state/rt:routing-instance/rt:interfaces/" | |||
+ "name"; | + "rt:interface/rt:name"; | |||
} | } | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
} | } | |||
grouping special-next-hop { | grouping special-next-hop { | |||
description | description | |||
"This grouping provides the leaf for specifying special | "This grouping provides the leaf for specifying special | |||
next-hop options."; | next-hop options."; | |||
skipping to change at page 32, line 32 | skipping to change at page 32, line 32 | |||
"Options for expressing the next-hop in routes."; | "Options for expressing the next-hop in routes."; | |||
case special-next-hop { | case special-next-hop { | |||
uses special-next-hop; | uses special-next-hop; | |||
} | } | |||
case simple-next-hop { | case simple-next-hop { | |||
uses outgoing-interface; | uses outgoing-interface; | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
if-feature multipath-routes; | if-feature multipath-routes; | |||
container next-hop-list { | container next-hop-list { | |||
description | ||||
"Container for multiple next-hops."; | ||||
list next-hop { | list next-hop { | |||
key "id"; | key "id"; | |||
description | description | |||
"An entry of a next-hop list."; | "An entry of a next-hop list."; | |||
uses state-entry-id; | uses state-entry-id; | |||
uses outgoing-interface; | uses outgoing-interface; | |||
uses next-hop-classifiers; | uses next-hop-classifiers; | |||
} | } | |||
} | } | |||
} | } | |||
skipping to change at page 41, line 29 | skipping to change at page 41, 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 - 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 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/" | |||
+ "rib-name and address-family=/routing/ribs/" | + "rib-name and address-family=/routing/ribs/" | |||
+ "rib[name=current()/rib-name]/address-family])" { | + "rib[name=current()/rib-name]/address-family])" { | |||
error-message | error-message | |||
"Duplicate address family for connected RIBs."; | "Duplicate address family for connected RIBs."; | |||
description | description | |||
skipping to change at page 47, line 11 | skipping to change at page 47, line 11 | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
8. IPv4 Unicast Routing Management YANG Module | 8. IPv4 Unicast Routing Management 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@2014-01-10.yang" | <CODE BEGINS> file "ietf-ipv4-unicast-routing@2014-05-22.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 47, line 34 | skipping to change at page 47, line 34 | |||
prefix "inet"; | prefix "inet"; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
WG Chair: David Kessens | WG Chair: Thomas Nadeau | |||
<mailto:david.kessens@nsn.com> | <mailto:tnadeau@lucidvision.com> | |||
WG Chair: Juergen Schoenwaelder | WG Chair: Juergen Schoenwaelder | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz>"; | <mailto:lhotka@nic.cz>"; | |||
description | description | |||
"This YANG module augments the 'ietf-routing' module with basic | "This YANG module augments the 'ietf-routing' module with basic | |||
configuration and operational state data for IPv4 unicast | configuration and operational state data for IPv4 unicast | |||
routing. | routing. | |||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2014 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
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 2014-01-10 { | revision 2014-05-22 { | |||
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 50, 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 ancestor routing | Only interfaces configured for the ancestor routing | |||
instance can be given."; | instance can be given."; | |||
} | } | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
if-feature rt:multipath-routes; | if-feature rt:multipath-routes; | |||
container next-hop-list { | container next-hop-list { | |||
description | ||||
"Configuration of multiple next-hops."; | ||||
list next-hop { | list next-hop { | |||
key "id"; | key "id"; | |||
description | description | |||
"An entry of a next-hop list."; | "An entry of a next-hop 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 'id' | This value is unrelated to system-assigned 'id' | |||
parameters of next-hops in RIBs."; | parameters of next-hops in RIBs."; | |||
} | } | |||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
skipping to change at page 52, line 50 | skipping to change at page 53, line 4 | |||
} | } | |||
if-feature rt:multipath-routes; | if-feature rt:multipath-routes; | |||
description | description | |||
"This leaf augments the 'next-hop-list' case in the reply to | "This leaf augments the 'next-hop-list' case in the reply to | |||
the 'rt:active-route' operation."; | the 'rt:active-route' operation."; | |||
leaf address { | leaf address { | |||
type inet:ipv4-address; | type inet:ipv4-address; | |||
description | description | |||
"IPv4 address of the next-hop."; | "IPv4 address of the next-hop."; | |||
} | } | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
9. IPv6 Unicast Routing Management YANG Module | 9. IPv6 Unicast Routing Management YANG Module | |||
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@2014-01-10.yang" | <CODE BEGINS> file "ietf-ipv6-unicast-routing@2014-05-22.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 54, line 42 | skipping to change at page 54, line 42 | |||
prefix "ip"; | prefix "ip"; | |||
} | } | |||
organization | organization | |||
"IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; | |||
contact | contact | |||
"WG Web: <http://tools.ietf.org/wg/netmod/> | "WG Web: <http://tools.ietf.org/wg/netmod/> | |||
WG List: <mailto:netmod@ietf.org> | WG List: <mailto:netmod@ietf.org> | |||
WG Chair: David Kessens | WG Chair: Thomas Nadeau | |||
<mailto:david.kessens@nsn.com> | <mailto:tnadeau@lucidvision.com> | |||
WG Chair: Juergen Schoenwaelder | WG Chair: Juergen Schoenwaelder | |||
<mailto:j.schoenwaelder@jacobs-university.de> | <mailto:j.schoenwaelder@jacobs-university.de> | |||
Editor: Ladislav Lhotka | Editor: Ladislav Lhotka | |||
<mailto:lhotka@nic.cz>"; | <mailto:lhotka@nic.cz>"; | |||
description | description | |||
"This YANG module augments the 'ietf-routing' module with basic | "This YANG module augments the 'ietf-routing' module with basic | |||
configuration and operational state data for IPv6 unicast | configuration and operational state data for IPv6 unicast | |||
routing. | routing. | |||
Copyright (c) 2013 IETF Trust and the persons identified as | Copyright (c) 2014 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Simplified BSD License set | the license terms contained in, the Simplified BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info). | (http://trustee.ietf.org/license-info). | |||
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 2014-01-10 { | revision 2014-05-22 { | |||
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 55, line 51 | skipping to change at page 55, line 51 | |||
container ipv6-router-advertisements { | container ipv6-router-advertisements { | |||
description | description | |||
"Parameters of IPv6 Router Advertisements."; | "Parameters of IPv6 Router Advertisements."; | |||
leaf send-advertisements { | leaf send-advertisements { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"A flag indicating whether or not the router sends periodic | "A flag indicating whether or not the router sends periodic | |||
Router Advertisements and responds to Router | Router Advertisements and responds to Router | |||
Solicitations."; | Solicitations."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvSendAdvertisements."; | ||||
} | } | |||
leaf max-rtr-adv-interval { | leaf max-rtr-adv-interval { | |||
type uint16 { | type uint16 { | |||
range "4..1800"; | range "4..1800"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
default "600"; | default "600"; | |||
description | description | |||
"The maximum time allowed between sending unsolicited | "The maximum time allowed between sending unsolicited | |||
multicast Router Advertisements from the interface."; | multicast Router Advertisements from the interface."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
MaxRtrAdvInterval."; | ||||
} | } | |||
leaf min-rtr-adv-interval { | leaf min-rtr-adv-interval { | |||
type uint16 { | type uint16 { | |||
range "3..1350"; | range "3..1350"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The minimum time allowed between sending unsolicited | "The minimum time allowed between sending unsolicited | |||
multicast Router Advertisements from the interface. | multicast Router Advertisements from the interface."; | |||
The default value to be used operationally if this leaf is | ||||
not configured is determined as follows: | ||||
- if max-rtr-adv-interval >= 9 seconds, the default value | ||||
is 0.33 * max-rtr-adv-interval; | ||||
- otherwise it is 0.75 * max-rtr-adv-interval."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
MinRtrAdvInterval."; | ||||
} | } | |||
leaf managed-flag { | leaf managed-flag { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"The boolean value to be placed in the 'Managed address | "The boolean value that is placed in the 'Managed address | |||
configuration' flag field in the Router Advertisement."; | configuration' flag field in the Router Advertisement."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvManagedFlag."; | ||||
} | } | |||
leaf other-config-flag { | leaf other-config-flag { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"The boolean value to be placed in the 'Other | "The boolean value that is placed in the 'Other | |||
configuration' flag field in the Router Advertisement."; | configuration' flag field in the Router Advertisement."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvOtherConfigFlag."; | ||||
} | } | |||
leaf link-mtu { | leaf link-mtu { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in MTU options sent by the router. | "The value that is placed in MTU options sent by the | |||
A value of zero indicates that no MTU options are sent."; | router. A value of zero indicates that no MTU options are | |||
reference | sent."; | |||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvLinkMTU."; | ||||
} | } | |||
leaf reachable-time { | leaf reachable-time { | |||
type uint32 { | type uint32 { | |||
range "0..3600000"; | range "0..3600000"; | |||
} | } | |||
units "milliseconds"; | units "milliseconds"; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in the Reachable Time field in the | "The value that is placed in the Reachable Time field in | |||
Router Advertisement messages sent by the router. The | the Router Advertisement messages sent by the router. The | |||
value zero means unspecified (by this router)."; | value zero means unspecified (by this router)."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvReachableTime."; | ||||
} | } | |||
leaf retrans-timer { | leaf retrans-timer { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in the Retrans Timer field in the | "The value that is placed in the Retrans Timer field in the | |||
Router Advertisement messages sent by the router. The | Router Advertisement messages sent by the router. The | |||
value zero means unspecified (by this router)."; | value zero means unspecified (by this router)."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvRetransTimer."; | ||||
} | } | |||
leaf cur-hop-limit { | leaf cur-hop-limit { | |||
type uint8; | type uint8; | |||
default "64"; | ||||
description | description | |||
"The default value to be placed in the Cur Hop Limit field | "The default value that is placed in the Cur Hop Limit | |||
in the Router Advertisement messages sent by the router. | field in the Router Advertisement messages sent by the | |||
The value should be set to the current diameter of the | router. The value zero means unspecified (by this | |||
Internet. The value zero means unspecified (by this | router)."; | |||
router). | ||||
The default SHOULD be set to the value specified in IANA | ||||
Assigned Numbers that was in effect at the time of | ||||
implementation."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvCurHopLimit. | ||||
IANA: IP Parameters, | ||||
http://www.iana.org/assignments/ip-parameters"; | ||||
} | } | |||
leaf default-lifetime { | leaf default-lifetime { | |||
type uint16 { | type uint16 { | |||
range "0..9000"; | range "0..9000"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The value to be placed in the Router Lifetime field of | "The value that is placed in the Router Lifetime field of | |||
Router Advertisements sent from the interface, in seconds. | Router Advertisements sent from the interface, in seconds. | |||
MUST be either zero or between max-rtr-adv-interval and | A value of zero indicates that the router is not to be | |||
9000 seconds. A value of zero indicates that the router is | used as a default router."; | |||
not to be used as a default router. These limits may be | ||||
overridden by specific documents that describe how IPv6 | ||||
operates over different link layers. | ||||
If this parameter is not configured, a value of 3 * | ||||
max-rtr-adv-interval SHOULD be used."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvDefaultLifeTime."; | ||||
} | } | |||
container prefix-list { | container prefix-list { | |||
description | description | |||
"A list of prefixes that are placed in Prefix Information | "A list of prefixes that are placed in Prefix Information | |||
options in Router Advertisement messages sent from the | options in Router Advertisement messages sent from the | |||
interface. | interface. | |||
By default, these are all prefixes that the router | By default, these are all prefixes that the router | |||
advertises via routing protocols as being on-link for the | advertises via routing protocols as being on-link for the | |||
interface from which the advertisement is sent. | interface from which the advertisement is sent."; | |||
The link-local prefix SHOULD NOT be included in the list | ||||
of advertised prefixes."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvPrefixList."; | ||||
list prefix { | list prefix { | |||
key "prefix-spec"; | key "prefix-spec"; | |||
description | description | |||
"Advertised prefix entry with parameters."; | "Advertised prefix entry and its parameters."; | |||
leaf prefix-spec { | leaf prefix-spec { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"IPv6 address prefix."; | "IPv6 address prefix."; | |||
} | } | |||
leaf valid-lifetime { | leaf valid-lifetime { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default "2592000"; | default "2592000"; | |||
description | description | |||
"The value to be placed in the Valid Lifetime in the | "The value that is placed in the Valid Lifetime in the | |||
Prefix Information option. The designated value of all | Prefix Information option. The designated value of all | |||
1's (0xffffffff) represents infinity."; | 1's (0xffffffff) represents infinity."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvValidLifetime."; | ||||
} | } | |||
leaf on-link-flag { | leaf on-link-flag { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"The value to be placed in the on-link flag ('L-bit') | "The value that is placed in the on-link flag ('L-bit') | |||
field in the Prefix Information option."; | field in the Prefix Information option."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvOnLinkFlag."; | ||||
} | } | |||
leaf preferred-lifetime { | leaf preferred-lifetime { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default "604800"; | default "604800"; | |||
description | description | |||
"The value to be placed in the Preferred Lifetime in | "The value that is placed in the Preferred Lifetime in | |||
the Prefix Information option, in seconds. The | the Prefix Information option, in seconds. The | |||
designated value of all 1's (0xffffffff) represents | designated value of all 1's (0xffffffff) represents | |||
infinity."; | infinity."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvPreferredLifetime."; | ||||
} | } | |||
leaf autonomous-flag { | leaf autonomous-flag { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"The value to be placed in the Autonomous Flag field in | "The value that is placed in the Autonomous Flag field | |||
the Prefix Information option."; | in the Prefix Information option."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvAutonomousFlag."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | augment "/rt:routing-state/rt:ribs/rt:rib/rt:routes/rt:route" { | |||
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."; | |||
skipping to change at page 61, line 33 | skipping to change at page 60, line 11 | |||
+ "ip:ipv6/ip:enabled='true'" { | + "ip:ipv6/ip:enabled='true'" { | |||
description | description | |||
"This augment is only valid for router interfaces with | "This augment is only valid for router interfaces with | |||
enabled IPv6."; | enabled IPv6."; | |||
} | } | |||
description | description | |||
"Configuration of IPv6-specific parameters of router | "Configuration of IPv6-specific parameters of router | |||
interfaces."; | interfaces."; | |||
container ipv6-router-advertisements { | container ipv6-router-advertisements { | |||
description | description | |||
"Configuration of IPv6 Router Advertisements. | "Configuration of IPv6 Router Advertisements."; | |||
See the corresponding parameters under /rt:routing-state for | ||||
detailed descriptions and references."; | ||||
leaf send-advertisements { | leaf send-advertisements { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"A flag indicating whether or not the router sends periodic | "A flag indicating whether or not the router sends periodic | |||
Router Advertisements and responds to Router | Router Advertisements and responds to Router | |||
Solicitations."; | Solicitations."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvSendAdvertisements."; | ||||
} | } | |||
leaf max-rtr-adv-interval { | leaf max-rtr-adv-interval { | |||
type uint16 { | type uint16 { | |||
range "4..1800"; | range "4..1800"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
default "600"; | default "600"; | |||
description | description | |||
"The maximum time allowed between sending unsolicited | "The maximum time allowed between sending unsolicited | |||
multicast Router Advertisements from the interface."; | multicast Router Advertisements from the interface."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
MaxRtrAdvInterval."; | ||||
} | } | |||
leaf min-rtr-adv-interval { | leaf min-rtr-adv-interval { | |||
type uint16 { | type uint16 { | |||
range "3..1350"; | range "3..1350"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
must ". <= 0.75 * ../max-rtr-adv-interval" { | must ". <= 0.75 * ../max-rtr-adv-interval" { | |||
description | description | |||
"The value MUST NOT be greater than 75 % of | "The value MUST NOT be greater than 75 % of | |||
'max-rtr-adv-interval'."; | 'max-rtr-adv-interval'."; | |||
} | } | |||
description | description | |||
"The minimum time allowed between sending unsolicited | "The minimum time allowed between sending unsolicited | |||
multicast Router Advertisements from the interface."; | multicast Router Advertisements from the interface. | |||
The default value to be used operationally if this leaf is | ||||
not configured is determined as follows: | ||||
- if max-rtr-adv-interval >= 9 seconds, the default value | ||||
is 0.33 * max-rtr-adv-interval; | ||||
- otherwise it is 0.75 * max-rtr-adv-interval."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
MinRtrAdvInterval."; | ||||
} | } | |||
leaf managed-flag { | leaf managed-flag { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"The boolean value to be placed in the 'Managed address | "The boolean value to be placed in the 'Managed address | |||
configuration' flag field in the Router Advertisement."; | configuration' flag field in the Router Advertisement."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvManagedFlag."; | ||||
} | } | |||
leaf other-config-flag { | leaf other-config-flag { | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"The boolean value to be placed in the 'Other | "The boolean value to be placed in the 'Other | |||
configuration' flag field in the Router Advertisement."; | configuration' flag field in the Router Advertisement."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvOtherConfigFlag."; | ||||
} | } | |||
leaf link-mtu { | leaf link-mtu { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in MTU options sent by the router. | "The value to be placed in MTU options sent by the router. | |||
A value of zero indicates that no MTU options are sent."; | A value of zero indicates that no MTU options are sent."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvLinkMTU."; | ||||
} | } | |||
leaf reachable-time { | leaf reachable-time { | |||
type uint32 { | type uint32 { | |||
range "0..3600000"; | range "0..3600000"; | |||
} | } | |||
units "milliseconds"; | units "milliseconds"; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in the Reachable Time field in the | "The value to be placed in the Reachable Time field in the | |||
Router Advertisement messages sent by the router. The | Router Advertisement messages sent by the router. The | |||
value zero means unspecified (by this router)."; | value zero means unspecified (by this router)."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvReachableTime."; | ||||
} | } | |||
leaf retrans-timer { | leaf retrans-timer { | |||
type uint32; | type uint32; | |||
units "milliseconds"; | units "milliseconds"; | |||
default "0"; | default "0"; | |||
description | description | |||
"The value to be placed in the Retrans Timer field in the | "The value to be placed in the Retrans Timer field in the | |||
Router Advertisement messages sent by the router. The | Router Advertisement messages sent by the router. The | |||
value zero means unspecified (by this router)."; | value zero means unspecified (by this router)."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvRetransTimer."; | ||||
} | } | |||
leaf cur-hop-limit { | leaf cur-hop-limit { | |||
type uint8; | type uint8; | |||
default "64"; | default "64"; | |||
description | description | |||
"The default value to be placed in the Cur Hop Limit field | "The default value to be placed in the Cur Hop Limit field | |||
in the Router Advertisement messages sent by the | in the Router Advertisement messages sent by the router. | |||
router."; | The value zero means unspecified (by this router). | |||
If this parameter is not configured, the device SHOULD use | ||||
the value specified in IANA Assigned Numbers that was in | ||||
effect at the time of implementation."; | ||||
reference | ||||
"- RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvCurHopLimit. | ||||
- IANA: IP Parameters, | ||||
http://www.iana.org/assignments/ip-parameters"; | ||||
} | } | |||
leaf default-lifetime { | leaf default-lifetime { | |||
type uint16 { | type uint16 { | |||
range "0..9000"; | range "0..9000"; | |||
} | } | |||
units "seconds"; | units "seconds"; | |||
description | description | |||
"The value to be placed in the Router Lifetime field of | "The value to be placed in the Router Lifetime field of | |||
Router Advertisements sent from the interface, in | Router Advertisements sent from the interface, in seconds. | |||
seconds."; | MUST be either zero or between max-rtr-adv-interval and | |||
9000 seconds. A value of zero indicates that the router is | ||||
not to be used as a default router. These limits may be | ||||
overridden by specific documents that describe how IPv6 | ||||
operates over different link layers. | ||||
If this parameter is not configured, the device SHOULD use | ||||
a value of 3 * max-rtr-adv-interval."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvDefaultLifeTime."; | ||||
} | } | |||
container prefix-list { | container prefix-list { | |||
description | description | |||
"Configuration of prefixes to be placed in Prefix | "Configuration of prefixes to be placed in Prefix | |||
Information options in Router Advertisement messages sent | Information options in Router Advertisement messages sent | |||
from the interface. | from the interface. | |||
Prefixes that are advertised by default but do not have | Prefixes that are advertised by default but do not have | |||
their entries in the child 'prefix' list are advertised | their entries in the child 'prefix' list are advertised | |||
with the default values of all parameters."; | with the default values of all parameters. | |||
The link-local prefix SHOULD NOT be included in the list | ||||
of advertised prefixes."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 (IPv6) - | ||||
AdvPrefixList."; | ||||
list prefix { | list prefix { | |||
key "prefix-spec"; | key "prefix-spec"; | |||
description | description | |||
"Advertised prefix entry."; | "Configuration of an advertised prefix entry."; | |||
leaf prefix-spec { | leaf prefix-spec { | |||
type inet:ipv6-prefix; | type inet:ipv6-prefix; | |||
description | description | |||
"IPv6 address prefix."; | "IPv6 address prefix."; | |||
} | } | |||
choice control-adv-prefixes { | choice control-adv-prefixes { | |||
default "advertise"; | default "advertise"; | |||
description | description | |||
"The prefix either may be explicitly removed from the | "The prefix either may be explicitly removed from the | |||
set of advertised prefixes, or parameters with which | set of advertised prefixes, or parameters with which | |||
skipping to change at page 64, line 23 | skipping to change at page 64, line 7 | |||
This can be used for removing the prefix from the | This can be used for removing the prefix from the | |||
default set of advertised prefixes."; | default set of advertised prefixes."; | |||
} | } | |||
case advertise { | case advertise { | |||
leaf valid-lifetime { | leaf valid-lifetime { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
default "2592000"; | default "2592000"; | |||
description | description | |||
"The value to be placed in the Valid Lifetime in | "The value to be placed in the Valid Lifetime in | |||
the Prefix Information option."; | the Prefix Information option. The designated | |||
value of all 1's (0xffffffff) represents | ||||
infinity."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 | ||||
(IPv6) - AdvValidLifetime."; | ||||
} | } | |||
leaf on-link-flag { | leaf on-link-flag { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"The value to be placed in the on-link flag | "The value to be placed in the on-link flag | |||
('L-bit') field in the Prefix Information | ('L-bit') field in the Prefix Information | |||
option."; | option."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 | ||||
(IPv6) - AdvOnLinkFlag."; | ||||
} | } | |||
leaf preferred-lifetime { | leaf preferred-lifetime { | |||
type uint32; | type uint32; | |||
units "seconds"; | units "seconds"; | |||
must ". <= ../valid-lifetime" { | must ". <= ../valid-lifetime" { | |||
description | description | |||
"This value MUST NOT be greater than | "This value MUST NOT be greater than | |||
valid-lifetime."; | valid-lifetime."; | |||
} | } | |||
default "604800"; | default "604800"; | |||
description | description | |||
"The value to be placed in the Preferred Lifetime | "The value to be placed in the Preferred Lifetime | |||
in the Prefix Information option."; | in the Prefix Information option. The designated | |||
value of all 1's (0xffffffff) represents | ||||
infinity."; | ||||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 | ||||
(IPv6) - AdvPreferredLifetime."; | ||||
} | } | |||
leaf autonomous-flag { | leaf autonomous-flag { | |||
type boolean; | type boolean; | |||
default "true"; | default "true"; | |||
description | description | |||
"The value to be placed in the Autonomous Flag | "The value to be placed in the Autonomous Flag | |||
field in the Prefix Information option."; | field in the Prefix Information option."; | |||
reference | ||||
"RFC 4861: Neighbor Discovery for IP version 6 | ||||
(IPv6) - AdvAutonomousFlag."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | augment "/rt:routing/rt:routing-instance/rt:routing-protocols/" | |||
skipping to change at page 66, line 27 | skipping to change at page 66, line 27 | |||
description | description | |||
"Name of the outgoing interface. | "Name of the outgoing interface. | |||
Only interfaces configured for the ancestor routing | Only interfaces configured for the ancestor routing | |||
instance can be given."; | instance can be given."; | |||
} | } | |||
} | } | |||
case next-hop-list { | case next-hop-list { | |||
if-feature rt:multipath-routes; | if-feature rt:multipath-routes; | |||
container next-hop-list { | container next-hop-list { | |||
description | ||||
"Configuration of multiple next-hops."; | ||||
list next-hop { | list next-hop { | |||
key "id"; | key "id"; | |||
description | description | |||
"An entry of a next-hop list."; | "An entry of a next-hop 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 'id' | This value is unrelated to system-assigned 'id' | |||
skipping to change at page 71, line 11 | skipping to change at page 71, line 11 | |||
prefix: v6ur | prefix: v6ur | |||
reference: RFC XXXX | reference: RFC XXXX | |||
------------------------------------------------------------------- | ------------------------------------------------------------------- | |||
11. Security Considerations | 11. Security Considerations | |||
Configuration and state data conforming to the core routing data | Configuration and state data conforming to the core routing data | |||
model (defined in this document) are designed to be accessed via the | model (defined in this document) are designed to be accessed via the | |||
NETCONF protocol [RFC6241]. The lowest NETCONF layer is the secure | NETCONF protocol [RFC6241]. The lowest NETCONF layer is the secure | |||
transport layer and the mandatory-to-implement secure transport is | transport layer and the mandatory-to-implement secure transport is | |||
SSH [RFC6242]. | SSH [RFC6242]. The NETCONF access control model [RFC6536] provides | |||
the means to restrict access for particular NETCONF users to a pre- | ||||
configured subset of all available NETCONF protocol operations and | ||||
content. | ||||
A number of data nodes defined in the YANG modules belonging to the | A number of data nodes defined in the YANG modules belonging to the | |||
configuration part of the core routing data model are writable/ | configuration part of the core routing data model are writable/ | |||
creatable/deletable (i.e., "config true" in YANG terms, which is the | creatable/deletable (i.e., "config true" in YANG terms, which is the | |||
default). These data nodes may be considered sensitive or vulnerable | default). These data nodes may be considered sensitive or vulnerable | |||
in some network environments. Write operations to these data nodes, | in some network environments. Write operations to these data nodes, | |||
such as "edit-config", can have negative effects on the network if | such as "edit-config", can have negative effects on the network if | |||
the protocol operations are not properly protected. | the protocol operations are not properly protected. | |||
The vulnerable "config true" subtrees and data nodes are the | The vulnerable "config true" subtrees and data nodes are the | |||
following: | following: | |||
/routing/routing-instance/interfaces/interface This list assigns a | /routing/routing-instance/interfaces/interface: This list assigns a | |||
network layer interface to a routing instance and may also specify | network layer interface to a routing instance and may also specify | |||
interface parameters related to routing. | interface parameters related to routing. | |||
/routing/routing-instance/routing-protocols/routing-protocol This | /routing/routing-instance/routing-protocols/routing-protocol: This | |||
list specifies the routing protocols configured on a device. | list specifies the routing protocols configured on a device. | |||
/routing/route-filters/route-filter This list specifies the | /routing/route-filters/route-filter: This list specifies the | |||
configured route filters which represent administrative policies | configured route filters which represent administrative policies | |||
for redistributing and modifying routing information. | for redistributing and modifying routing information. | |||
/routing/ribs/rib This list specifies the RIBs configured for the | /routing/ribs/rib: This list specifies the RIBs configured for the | |||
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, | |||
skipping to change at page 73, line 30 | skipping to change at page 73, line 30 | |||
Network Configuration Protocol (NETCONF)", RFC 6020, | Network Configuration Protocol (NETCONF)", RFC 6020, | |||
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 | [RFC7223] Bjorklund, M., "A YANG Data Model for Interface | |||
Management", draft-ietf-netmod-interfaces-cfg-15 (work in | Management", RFC 7223, May 2014. | |||
progress), December 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-12 (work in progress), | draft-ietf-netmod-ip-cfg-14 (work in progress), | |||
January 2014. | March 2014. | |||
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. | |||
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration | ||||
Protocol (NETCONF) Access Control Model", RFC 6536, | ||||
March 2012. | ||||
Appendix A. The Complete Data Trees | Appendix A. The Complete Data Trees | |||
This appendix presents the complete configuration and operational | This appendix presents the complete configuration and operational | |||
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 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 {multiple-ribs}? | |||
| | +--rw default-rib* [address-family] | | | +--rw default-rib* [address-family] | |||
| | +--rw address-family identityref | | | +--rw address-family identityref | |||
| | +--rw rib-name string | | | +--rw rib-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 | |||
| | +--rw v6ur:default-lifetime? uint16 | | | +--rw v6ur:default-lifetime? uint16 | |||
| | +--rw v6ur:prefix-list | | | +--rw v6ur:prefix-list | |||
| | +--rw v6ur:prefix* [prefix-spec] | | | +--rw v6ur:prefix* [prefix-spec] | |||
| | +--rw v6ur:prefix-spec inet:ipv6-prefix | | | +--rw v6ur:prefix-spec inet:ipv6-prefix | |||
| | +--rw (control-adv-prefixes)? | | | +--rw (control-adv-prefixes)? | |||
| | +--:(no-advertise) | | | +--:(no-advertise) | |||
| | | +--rw v6ur:no-advertise? empty | | | | +--rw v6ur:no-advertise? empty | |||
| | +--:(advertise) | | | +--:(advertise) | |||
| | +--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 {multiple-ribs}? | | +--rw connected-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 (next-hop-options) | | | +--rw (next-hop-options) | |||
| | +--:(special-next-hop) | | | +--:(special-next-hop) | |||
| | | +--rw v4ur:special-next-hop? enumeration | | | | +--rw v4ur:special-next-hop? enumeration | |||
| | +--:(simple-next-hop) | | | +--:(simple-next-hop) | |||
| | | +--rw v4ur:next-hop? inet:ipv4-address | | | | +--rw v4ur:next-hop? inet:ipv4-address | |||
| | | +--rw v4ur:outgoing-interface? leafref | | | | +--rw v4ur:outgoing-interface? leafref | |||
| | +--:(next-hop-list) {rt:multipath-routes}? | | | +--:(next-hop-list) {rt:multipath-routes}? | |||
| | +--rw v4ur:next-hop-list | | | +--rw v4ur:next-hop-list | |||
| | +--rw v4ur:next-hop* [id] | | | +--rw v4ur:next-hop* [id] | |||
| | +--rw v4ur:id uint32 | | | +--rw v4ur:id uint32 | |||
| | +--rw v4ur:address? | | | +--rw v4ur:address? inet:ipv4-address | |||
| | +--rw v4ur:outgoing-interface? | | | +--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 (next-hop-options) | | +--rw (next-hop-options) | |||
| +--:(special-next-hop) | | +--:(special-next-hop) | |||
| | +--rw v6ur:special-next-hop? enumeration | | | +--rw v6ur:special-next-hop? enumeration | |||
| +--:(simple-next-hop) | | +--:(simple-next-hop) | |||
| | +--rw v6ur:next-hop? inet:ipv6-address | | | +--rw v6ur:next-hop? inet:ipv6-address | |||
| | +--rw v6ur:outgoing-interface? leafref | | | +--rw v6ur:outgoing-interface? leafref | |||
| +--:(next-hop-list) {rt:multipath-routes}? | | +--:(next-hop-list) {rt:multipath-routes}? | |||
| +--rw v6ur:next-hop-list | | +--rw v6ur:next-hop-list | |||
| +--rw v6ur:next-hop* [id] | | +--rw v6ur:next-hop* [id] | |||
| +--rw v6ur:id uint32 | | +--rw v6ur:id uint32 | |||
| +--rw v6ur:address? | | +--rw v6ur:address? inet:ipv6-address | |||
| +--rw v6ur:outgoing-interface? | | +--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 address-family identityref | | +--rw address-family identityref | |||
| +--rw description? string | | +--rw description? string | |||
| +--rw recipient-ribs {multiple-ribs}? | | +--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* [name] | +--ro routing-instance* [name] | |||
| +--ro name string | | +--ro name string | |||
| +--ro id uint64 | | +--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-name rib-state-ref | | | +--ro rib-name 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 | |||
| | +--ro v6ur:send-advertisements? boolean | | | +--ro v6ur:send-advertisements? boolean | |||
| | +--ro v6ur:max-rtr-adv-interval? uint16 | | | +--ro v6ur:max-rtr-adv-interval? uint16 | |||
| | +--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 | | +--ro connected-ribs | |||
| +--ro connected-rib* [rib-name] | | +--ro connected-rib* [rib-name] | |||
skipping to change at page 77, line 27 | skipping to change at page 77, line 27 | |||
| +--ro id uint64 | | +--ro id uint64 | |||
| +--ro address-family identityref | | +--ro address-family identityref | |||
| +--ro routes | | +--ro routes | |||
| | +--ro route* [id] | | | +--ro route* [id] | |||
| | +--ro id uint64 | | | +--ro id uint64 | |||
| | +--ro (next-hop-options) | | | +--ro (next-hop-options) | |||
| | | +--:(special-next-hop) | | | | +--:(special-next-hop) | |||
| | | | +--ro special-next-hop? enumeration | | | | | +--ro special-next-hop? enumeration | |||
| | | +--:(simple-next-hop) | | | | +--:(simple-next-hop) | |||
| | | | +--ro outgoing-interface? leafref | | | | | +--ro outgoing-interface? leafref | |||
| | | | +--ro v4ur:next-hop? inet:ipv4-address | | | | | +--ro v4ur:next-hop? inet:ipv4-address | |||
| | | | +--ro v6ur:next-hop? inet:ipv6-address | | | | | +--ro v6ur:next-hop? inet:ipv6-address | |||
| | | +--:(next-hop-list) {multipath-routes}? | | | | +--:(next-hop-list) {multipath-routes}? | |||
| | | +--ro next-hop-list | | | | +--ro next-hop-list | |||
| | | +--ro next-hop* [id] | | | | +--ro next-hop* [id] | |||
| | | +--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 {multiple-ribs}? | | +--ro recipient-ribs {multiple-ribs}? | |||
| +--ro recipient-rib* [rib-name] | | +--ro recipient-rib* [rib-name] | |||
| +--ro rib-name rib-state-ref | | +--ro rib-name 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] | |||
skipping to change at page 82, line 11 | skipping to change at page 82, line 11 | |||
} | } | |||
} | } | |||
} | } | |||
Appendix D. Example: NETCONF <get> Reply | Appendix D. Example: NETCONF <get> Reply | |||
This section contains a sample reply to the NETCONF <get> message, | This section contains a sample reply to the NETCONF <get> message, | |||
which could be sent by a server supporting (i.e., advertising them in | which could be sent by a server supporting (i.e., advertising them in | |||
the NETCONF <hello> message) the following YANG modules: | the NETCONF <hello> message) the following YANG modules: | |||
o ietf-interfaces [YANG-IF], | o ietf-interfaces [RFC7223], | |||
o ietf-ip [YANG-IP], | o ietf-ip [YANG-IP], | |||
o ietf-routing (Section 7), | o ietf-routing (Section 7), | |||
o ietf-ipv4-unicast-routing (Section 8), | o ietf-ipv4-unicast-routing (Section 8), | |||
o ietf-ipv6-unicast-routing (Section 9). | o ietf-ipv6-unicast-routing (Section 9). | |||
We assume a simple network setup as shown in Figure 5: router "A" | We assume a simple network setup as shown in Figure 5: router "A" | |||
skipping to change at page 82, line 51 | skipping to change at page 82, 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:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type" | xmlns:ianaift="urn:ietf:params:xml:ns:yang:iana-if-type" | |||
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>ianaift:ethernetCsmacd</if:type> | <if:type>ianaift: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>ianaift:ethernetCsmacd</if:type> | <if:type>ianaift: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>ianaift:ethernetCsmacd</if:type> | <if:type>ianaift: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> | <ip:ipv4> | |||
<ip:ipv4> | <ip:forwarding>true</ip:forwarding> | |||
<ip:forwarding>true</ip:forwarding> | <ip:mtu>1500</ip:mtu> | |||
<ip:mtu>1500</ip:mtu> | <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:ipv4> | |||
</ip:ipv4> | <ip:ipv6> | |||
<ip:ipv6> | <ip:forwarding>true</ip:forwarding> | |||
<ip:forwarding>true</ip:forwarding> | <ip:mtu>1500</ip:mtu> | |||
<ip:mtu>1500</ip:mtu> | <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:ipv6> | |||
</ip:ipv6> | </if:interface> | |||
</if:interface> | <if:interface> | |||
<if:interface> | <if:name>eth1</if:name> | |||
<if:name>eth1</if:name> | <if:type>ianaift:ethernetCsmacd</if:type> | |||
<if:type>ianaift: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</if:discontinuity-time> | |||
2013-07-02T17:11:27+00:59 | </if:statistics> | |||
</if:discontinuity-time> | <ip:ipv4> | |||
<ip:forwarding>true</ip:forwarding> | ||||
<ip:mtu>1500</ip:mtu> | ||||
<ip:address> | ||||
<ip:ip>198.51.100.1</ip:ip> | ||||
<ip:prefix-length>24</ip:prefix-length> | ||||
</ip:address> | ||||
</ip:ipv4> | ||||
<ip:ipv6> | ||||
<ip:forwarding>true</ip:forwarding> | ||||
<ip:mtu>1500</ip:mtu> | ||||
<ip:address> | ||||
<ip:ip>2001:0db8:0:2::1</ip:ip> | ||||
<ip:prefix-length>64</ip:prefix-length> | ||||
</ip:address> | ||||
</ip:ipv6> | ||||
</if:interface> | ||||
</if:interfaces-state> | ||||
<rt:routing> | ||||
<rt:routing-instance> | ||||
<rt:name>rtr0</rt:name> | ||||
<rt:description>Router A</rt:description> | ||||
<rt:interfaces> | ||||
<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:description> | ||||
Static routing is used for the internal network. | ||||
</rt:description> | ||||
<rt:type>rt:static</rt:type> | ||||
<rt:static-routes> | ||||
<v4ur:ipv4> | ||||
<v4ur:route> | ||||
<v4ur:id>1</v4ur:id> | ||||
<v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | ||||
<v4ur:next-hop>192.0.2.2</v4ur:next-hop> | ||||
</v4ur:route> | ||||
</if:statistics> | </v4ur:ipv4> | |||
<ip:ipv4> | <v6ur:ipv6> | |||
<ip:forwarding>true</ip:forwarding> | <v6ur:route> | |||
<ip:mtu>1500</ip:mtu> | <v6ur:id>1</v6ur:id> | |||
<ip:address> | <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | |||
<ip:ip>198.51.100.1</ip:ip> | <v6ur:next-hop>2001:db8:0:1::2</v6ur:next-hop> | |||
<ip:prefix-length>24</ip:prefix-length> | </v6ur:route> | |||
</ip:address> | </v6ur:ipv6> | |||
</ip:ipv4> | </rt:static-routes> | |||
<ip:ipv6> | </rt:routing-protocol> | |||
<ip:forwarding>true</ip:forwarding> | </rt:routing-protocols> | |||
<ip:mtu>1500</ip:mtu> | </rt:routing-instance> | |||
<ip:address> | </rt:routing> | |||
<ip:ip>2001:0db8:0:2::1</ip:ip> | <rt:routing-state> | |||
<ip:prefix-length>64</ip:prefix-length> | <rt:routing-instance> | |||
</ip:address> | <rt:name>rtr0</rt:name> | |||
</ip:ipv6> | <rt:id>2718281828</rt:id> | |||
</if:interface> | <rt:router-id>192.0.2.1</rt:router-id> | |||
</if:interfaces-state> | <rt:default-ribs> | |||
<rt:routing> | <rt:default-rib> | |||
<rt:routing-instance> | <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | |||
<rt:name>rtr0</rt:name> | <rt:rib-name>ipv4-master</rt:rib-name> | |||
<rt:description>Router A</rt:description> | </rt:default-rib> | |||
<rt:interfaces> | <rt:default-rib> | |||
<rt:interface> | <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | |||
<rt:name>eth1</rt:name> | <rt:rib-name>ipv6-master</rt:rib-name> | |||
<v6ur:ipv6-router-advertisements> | </rt:default-rib> | |||
<v6ur:send-advertisements>true</v6ur:send-advertisements> | </rt:default-ribs> | |||
<v6ur:prefix-list> | <rt:interfaces> | |||
<v6ur:prefix> | <rt:interface> | |||
<v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | <rt:name>eth0</rt:name> | |||
</v6ur:prefix> | </rt:interface> | |||
</v6ur:prefix-list> | <rt:interface> | |||
</v6ur:ipv6-router-advertisements> | <rt:name>eth1</rt:name> | |||
</rt:interface> | <v6ur:ipv6-router-advertisements> | |||
</rt:interfaces> | <v6ur:send-advertisements>true</v6ur:send-advertisements> | |||
<rt:routing-protocols> | <v6ur:prefix-list> | |||
<rt:routing-protocol> | <v6ur:prefix> | |||
<rt:name>st0</rt:name> | <v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | |||
<rt:description> | </v6ur:prefix> | |||
Static routing is used for the internal network. | </v6ur:prefix-list> | |||
</rt:description> | </v6ur:ipv6-router-advertisements> | |||
<rt:type>rt:static</rt:type> | </rt:interface> | |||
<rt:static-routes> | </rt:interfaces> | |||
<v4ur:ipv4> | <rt:routing-protocols> | |||
<v4ur:route> | <rt:routing-protocol> | |||
<v4ur:id>1</v4ur:id> | <rt:name>st0</rt:name> | |||
<v4ur:destination-prefix>0.0.0.0/0</v4ur:destination-prefix> | <rt:type>rt:static</rt:type> | |||
<v4ur:next-hop>192.0.2.2</v4ur:next-hop> | ||||
</v4ur:route> | </rt:routing-protocol> | |||
</v4ur:ipv4> | </rt:routing-protocols> | |||
<v6ur:ipv6> | </rt:routing-instance> | |||
<v6ur:route> | <rt:ribs> | |||
<v6ur:id>1</v6ur:id> | <rt:rib> | |||
<v6ur:destination-prefix>::/0</v6ur:destination-prefix> | <rt:name>ipv4-master</rt:name> | |||
<v6ur:next-hop>2001:db8:0:1::2</v6ur:next-hop> | <rt:id>897932384</rt:id> | |||
</v6ur:route> | ||||
</v6ur:ipv6> | ||||
</rt:static-routes> | ||||
</rt:routing-protocol> | ||||
</rt:routing-protocols> | ||||
</rt:routing-instance> | ||||
</rt:routing> | ||||
<rt:routing-state> | ||||
<rt:routing-instance> | ||||
<rt:name>rtr0</rt:name> | ||||
<rt:id>2718281828</rt:id> | ||||
<rt:router-id>192.0.2.1</rt:router-id> | ||||
<rt:default-ribs> | ||||
<rt:default-rib> | ||||
<rt:address-family>v4ur:ipv4-unicast</rt:address-family> | <rt:address-family>v4ur:ipv4-unicast</rt:address-family> | |||
<rt:rib-name>ipv4-master</rt:rib-name> | <rt:routes> | |||
</rt:default-rib> | <rt:route> | |||
<rt:default-rib> | <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:next-hop>192.0.2.2</v4ur:next-hop> | ||||
<rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | ||||
</rt:route> | ||||
</rt:routes> | ||||
</rt:rib> | ||||
<rt:rib> | ||||
<rt:name>ipv6-master</rt:name> | ||||
<rt:id>751058209</rt:id> | ||||
<rt:address-family>v6ur:ipv6-unicast</rt:address-family> | <rt:address-family>v6ur:ipv6-unicast</rt:address-family> | |||
<rt:rib-name>ipv6-master</rt:rib-name> | <rt:routes> | |||
</rt:default-rib> | <rt:route> | |||
</rt:default-ribs> | <rt:id>749445923</rt:id> | |||
<rt:interfaces> | <v6ur:destination-prefix> | |||
<rt:interface> | 2001:db8:0:1::/64</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:destination-prefix> | |||
<v6ur:prefix-spec>2001:db8:0:2::/64</v6ur:prefix-spec> | <rt:outgoing-interface>eth1</rt:outgoing-interface> | |||
</v6ur:prefix> | <rt:source-protocol>rt:direct</rt:source-protocol> | |||
</v6ur:prefix-list> | <rt:last-updated>2013-07-02T17:11:27+01:00</rt:last-updated> | |||
</v6ur:ipv6-router-advertisements> | </rt:route> | |||
</rt:interface> | <rt:route> | |||
</rt:interfaces> | <rt:id>862089986</rt:id> | |||
<rt:routing-protocols> | <v6ur:destination-prefix>::/0</v6ur:destination-prefix> | |||
<rt:routing-protocol> | <v6ur:next-hop>2001:db8:0:1::2</v6ur:next-hop> | |||
<rt:name>st0</rt:name> | <rt:source-protocol>rt:static</rt:source-protocol> | |||
<rt:type>rt:static</rt:type> | <rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | |||
</rt:routing-protocol> | </rt:route> | |||
</rt:routing-protocols> | </rt:routes> | |||
</rt:routing-instance> | </rt:rib> | |||
<rt:ribs> | </rt:ribs> | |||
<rt:rib> | </rt:routing-state> | |||
<rt:name>ipv4-master</rt:name> | </data> | |||
<rt:id>897932384</rt:id> | </rpc-reply> | |||
<rt:address-family>v4ur:ipv4-unicast</rt:address-family> | ||||
<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:next-hop>192.0.2.2</v4ur:next-hop> | ||||
<rt:last-updated>2013-07-02T18:02:45+01:00</rt:last-updated> | ||||
</rt:route> | ||||
</rt:routes> | ||||
</rt:rib> | ||||
<rt:rib> | ||||
<rt:name>ipv6-master</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:next-hop>2001:db8:0:1::2</v6ur:next-hop> | ||||
<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 E. Change Log | Appendix E. Change Log | |||
RFC Editor: remove this section upon publication as an RFC. | RFC Editor: remove this section upon publication as an RFC. | |||
E.1. Changes Between Versions -12 and -13 | E.1. Changes Between Versions -13 and -14 | |||
o Removed dependency of 'connected-ribs' on the 'multiple-ribs' | ||||
feature. | ||||
o Removed default value of 'cur-hop-limit' in state data. | ||||
o Moved parts of descriptions and all references on IPv6 RA | ||||
parameters from state data to configuration. | ||||
o Added reference to RFC 6536 in the Security section. | ||||
E.2. Changes Between Versions -12 and -13 | ||||
o Wrote appendix about minimum implementation. | o Wrote appendix about minimum implementation. | |||
o Remove "when" statement for IPv6 router interface operational | o Remove "when" statement for IPv6 router interface operational | |||
state - it was dependent on a config value that may not be | state - it was dependent on a config value that may not be | |||
present. | present. | |||
o Extra container for the next-hop list. | o Extra container for the next-hop list. | |||
o Names rather than numeric ids are used for referring to list | o Names rather than numeric ids are used for referring to list | |||
skipping to change at page 89, line 37 | skipping to change at page 90, line 5 | |||
o | o | |||
o Removed "if-feature multiple-ribs;" from connected-ribs. | o Removed "if-feature multiple-ribs;" from connected-ribs. | |||
o "rib-name" instead of "name" is used as the name of leafref nodes. | o "rib-name" instead of "name" is used as the name of leafref nodes. | |||
o "next-hop" instead of "nexthop" or "gateway" used throughout, both | o "next-hop" instead of "nexthop" or "gateway" used throughout, both | |||
in node names and text. | in node names and text. | |||
E.2. Changes Between Versions -11 and -12 | E.3. Changes Between Versions -11 and -12 | |||
o Removed feature "advanced-router" and introduced two features | o Removed feature "advanced-router" and introduced two features | |||
instead: "multiple-ribs" and "multipath-routes". | instead: "multiple-ribs" and "multipath-routes". | |||
o Unified the keys of config and state versions of "routing- | o Unified the keys of config and state versions of "routing- | |||
instance" and "rib" lists. | instance" and "rib" lists. | |||
o Numerical identifiers of state list entries are not keys anymore, | o Numerical identifiers of state list entries are not keys anymore, | |||
but they are constrained using the "unique" statement. | but they are constrained using the "unique" statement. | |||
o Updated acknowledgements. | o Updated acknowledgements. | |||
E.3. Changes Between Versions -10 and -11 | E.4. 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 90, line 29 | skipping to change at page 90, line 42 | |||
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. | |||
E.4. Changes Between Versions -09 and -10 | E.5. 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". | |||
E.5. Changes Between Versions -08 and -09 | E.6. 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. | |||
E.6. Changes Between Versions -07 and -08 | E.7. Changes Between Versions -07 and -08 | |||
o Changed reference from RFC6021 to RFC6021bis. | o Changed reference from RFC6021 to RFC6021bis. | |||
E.7. Changes Between Versions -06 and -07 | E.8. Changes Between Versions -06 and -07 | |||
o The contents of <get-reply> in Appendix D was updated: "eth[01]" | o The contents of <get-reply> in Appendix D 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. | |||
E.8. Changes Between Versions -05 and -06 | E.9. 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 92, line 5 | skipping to change at page 92, line 17 | |||
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. | |||
E.9. Changes Between Versions -04 and -05 | E.10. 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 92, line 40 | skipping to change at page 93, line 5 | |||
o The "direct" pseudo-protocol is always connected to main routing | o The "direct" pseudo-protocol is always connected to main routing | |||
tables. | tables. | |||
o Entries in the list of connected routing tables renamed from | o Entries in the list of connected routing tables renamed from | |||
"routing-table" to "connected-routing-table". | "routing-table" to "connected-routing-table". | |||
o Added "must" constraint saying that a routing table must not be | o Added "must" constraint saying that a routing table must not be | |||
its own recipient. | its own recipient. | |||
E.10. Changes Between Versions -03 and -04 | E.11. 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". | |||
E.11. Changes Between Versions -02 and -03 | E.12. 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 93, line 37 | skipping to change at page 94, line 5 | |||
"ietf-ip". | "ietf-ip". | |||
o Added "router-id" leaf. | o Added "router-id" leaf. | |||
o Specified the names for IPv4/IPv6 unicast main routing tables. | o Specified the names for IPv4/IPv6 unicast main routing tables. | |||
o Route parameter "last-modified" changed to "age". | o Route parameter "last-modified" changed to "age". | |||
o Added container "recipient-routing-tables". | o Added container "recipient-routing-tables". | |||
E.12. Changes Between Versions -01 and -02 | E.13. 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 D now uses IP addresses from blocks | o The example in Appendix D 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 94, line 14 | skipping to change at page 94, line 29 | |||
o Additional "must" statements were added. | o Additional "must" statements were added. | |||
o The "route-content" grouping for IPv4 and IPv6 unicast now | o The "route-content" grouping for IPv4 and IPv6 unicast now | |||
includes the material from the "ietf-routing" version via "uses | includes the material from the "ietf-routing" version via "uses | |||
rt:route-content". | rt:route-content". | |||
o Explanation of symbols in the tree representation of data model | o Explanation of symbols in the tree representation of data model | |||
hierarchy. | hierarchy. | |||
E.13. Changes Between Versions -00 and -01 | E.14. 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. 103 change blocks. | ||||
543 lines changed or deleted | 566 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |