rfc9403.original.xml | rfc9403.xml | |||
---|---|---|---|---|
<?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!-- draft submitted in xml v3 --> | ||||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY nbsp " "> | <!ENTITY nbsp " "> | |||
<!ENTITY zwsp "​"> | <!ENTITY zwsp "​"> | |||
<!ENTITY nbhy "‑"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY wj "⁠"> | <!ENTITY wj "⁠"> | |||
]> | ]> | |||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="no" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" submissionType="IETF" category=" | |||
<?rfc toc="yes" ?> | std" consensus="true" ipr="trust200902" docName="draft-ietf-rtgwg-yang-rib-exten | |||
<?rfc symrefs="yes" ?> | d-24" number="9403" obsoletes="" updates="" xml:lang="en" tocInclude="true" symR | |||
<?rfc sortrefs="yes"?> | efs="true" sortRefs="true" version="3"> | |||
<?rfc rfcedstyle="yes" ?> | ||||
<?rfc subcompact="no" ?> | ||||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" | ||||
docName="draft-ietf-rtgwg-yang-rib-extend-22" obsoletes="" updates="" | ||||
submissionType="IETF" xml:lang="en" tocInclude="true" symRefs="true" sortRe | ||||
fs="true" | ||||
version="3" consensus="true"> | ||||
<!-- xml2rfc v2v3 conversion 3.17.1 --> | <!-- xml2rfc v2v3 conversion 3.17.1 --> | |||
<front> | <front> | |||
<title abbrev="YANG RIB-EXT">RIB Extension YANG Data Model</title> | <title abbrev="YANG RIB-EXT">A YANG Data Model for RIB Extensions</title> | |||
<seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-yang-rib-extend-22 | ||||
"/> | <seriesInfo name="RFC" value="9403"/> | |||
<author initials="A." surname="Lindem" fullname="Acee Lindem"> | <author initials="A." surname="Lindem" fullname="Acee Lindem"> | |||
<organization>LabN Consulting LLC</organization> | <organization>LabN Consulting, L.L.C.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>301 Midenhall Way</street> | <street>301 Midenhall Way</street> | |||
<city>Cary</city> | <city>Cary</city> | |||
<region>NC</region> | <region>NC</region> | |||
<country>USA</country> | <country>United States of America</country> | |||
<code>27513</code> | <code>27513</code> | |||
</postal> | </postal> | |||
<email>acee.ietf@gmail.com</email> | <email>acee.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | <author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | |||
<organization>Futurewei</organization> | <organization>Futurewei Technologies</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>2330 Central Expressway</street> | <street>2330 Central Expressway</street> | |||
<city>Santa Clara</city> | <city>Santa Clara</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>95050</code> | <code>95050</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone/> | ||||
<email>yingzhen.qu@futurewei.com</email> | <email>yingzhen.qu@futurewei.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date year="2023" month="November" /> | |||
<area>rtg</area> | ||||
<workgroup>rtgwg</workgroup> | ||||
<keyword>configuration</keyword> | ||||
<keyword>IPv6 Router Advertisements</keyword> | ||||
<keyword>NETCONF</keyword> | ||||
<keyword>RESTCONF</keyword> | ||||
<keyword>YANG</keyword> | ||||
<keyword>Routing</keyword> | ||||
<keyword>RIB</keyword> | ||||
<abstract> | <abstract> | |||
<t>A Routing Information Base (RIB) is a list of routes and their | <t>A Routing Information Base (RIB) is a list of routes and their | |||
corresponding administrative data and operational state.</t> | corresponding administrative data and operational state.</t> | |||
<t>RFC 8349 defines the | <t>RFC 8349 defines the | |||
basic building blocks for the RIB data model, and this model augments it to support | basic building blocks for the RIB data model, and this model augments it to support | |||
multiple next-hops (aka, paths) for each route as well as additional | multiple next hops (aka paths) for each route as well as additional | |||
attributes.</t> | attributes.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | <name>Introduction</name> | |||
<t>This document defines a YANG <xref target="RFC7950" format="default"/> | <t>This document defines a YANG data model <xref target="RFC7950" format=" | |||
data model which extends the RIB data model defined in the ietf-routing YANG m | default"/> | |||
odule | that extends the RIB data model defined in the ietf-routing YANG module | |||
<xref target="RFC8349" format="default"/> with more route attributes.</t> | <xref target="RFC8349" format="default"/> with more route attributes.</t> | |||
<t>A RIB is a collection of routes with attributes controlled and | <t>A RIB is a collection of routes with attributes controlled and | |||
manipulated by control-plane protocols. Each RIB contains only routes | manipulated by control plane protocols. Each RIB contains only routes | |||
of one address family <xref target="RFC8349" format="default"/>. Within a prot ocol, | of one address family <xref target="RFC8349" format="default"/>. Within a prot ocol, | |||
routes are selected based on the metrics in use by that protocol, and | routes are selected based on the metrics in use by that protocol, and | |||
the protocol installs the routes to RIB. The RIB selects the preferred or active | the protocol installs the routes to the RIB. The RIB selects the preferred or ac | |||
route by comparing the route-preference (aka, administrative distance) of | tive | |||
the candidate routes installed different protocols.</t> | route by comparing the route preference (aka administrative distance) of | |||
the candidate routes installed by different protocols.</t> | ||||
<t>The module defined in this document extends the RIB to support more | <t>The module defined in this document extends the RIB to support more | |||
route attributes, such as multiple next-hops, route metrics, and | route attributes, such as multiple next hops, route metrics, and | |||
administrative tags.</t> | administrative tags.</t> | |||
<t> The YANG modules in this document conform to the Network Management | <t> The YANG modules defined and discussed in this document conform to the | |||
Datastore Architecture (NMDA) [RFC8342].</t> | Network Management | |||
Datastore Architecture (NMDA) <xref target="RFC8342"/>.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Terminology and Notation</name> | <name>Terminology and Notation</name> | |||
<t>The following terms are defined in <xref target="RFC8342" format="defau lt"/>: | <t>The following terms are defined in <xref target="RFC8342" format="defau lt"/>: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>configuration</li> | <li>configuration</li> | |||
<li>system state</li> | <li>system state</li> | |||
<li>operational state</li> | <li>operational state</li> | |||
</ul> | </ul> | |||
skipping to change at line 102 ¶ | skipping to change at line 108 ¶ | |||
<li>augment</li> | <li>augment</li> | |||
<li>container</li> | <li>container</li> | |||
<li>container with presence</li> | <li>container with presence</li> | |||
<li>data model</li> | <li>data model</li> | |||
<li>data node</li> | <li>data node</li> | |||
<li>leaf</li> | <li>leaf</li> | |||
<li>list</li> | <li>list</li> | |||
<li>mandatory node</li> | <li>mandatory node</li> | |||
<li>module</li> | <li>module</li> | |||
<li>schema tree</li> | <li>schema tree</li> | |||
<li>RPC (Remote Procedure Call) operation</li> | ||||
</ul> | </ul> | |||
<t>The following terms are defined in <xref target="RFC8349" format="defau lt"/> Section 5.2: | <t>The following term is defined in <xref target="RFC8349" sectionFormat=" comma" section="5.2"/>: | |||
</t> | </t> | |||
<ul spacing="normal"> | <ul spacing="normal"> | |||
<li>RIB</li> | <li>RIB</li> | |||
</ul> | </ul> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Tree Diagrams</name> | <name>Tree Diagrams</name> | |||
<t>Tree diagrams used in this document follow the notation defined in < xref target="RFC8340" format="default"/>.</t> | <t>Tree diagrams used in this document follow the notation defined in < xref target="RFC8340" format="default"/>.</t> | |||
</section> | </section> | |||
<section anchor="sec.prefixes" numbered="true" toc="default"> | <section anchor="sec.prefixes" numbered="true" toc="default"> | |||
<name>Prefixes in Data Node Names</name> | <name>Prefixes in Data Node Names</name> | |||
<t>In this document, names of data nodes, actions, and other | <t>In this document, names of data nodes, actions, and other | |||
data model objects are often used without a prefix, as long as | data model objects are often used without a prefix, as long as | |||
it is clear from the context in which YANG module each name is | it is clear from the context in which YANG module each name is | |||
defined. Otherwise, names are prefixed using the standard prefix | defined. Otherwise, names are prefixed using the standard prefix | |||
associated with the corresponding YANG module, as shown in <xref target= "tab.prefixes" format="default"/>.</t> | associated with the corresponding YANG module, as shown in <xref target= "tab.prefixes" format="default"/>.</t> | |||
<table anchor="tab.prefixes" align="center"> | <table anchor="tab.prefixes" align="center"> | |||
<name>Prefixes and Corresponding YANG Modules</name> | <name>Prefixes and Corresponding YANG Modules</name> | |||
<thead> | <thead> | |||
<tr> | <tr> | |||
<th align="left">Prefix</th> | <th align="left">Prefix</th> | |||
<th align="left">YANG module</th> | <th align="left">YANG Module</th> | |||
<th align="left">Reference</th> | <th align="left">Reference</th> | |||
</tr> | </tr> | |||
</thead> | </thead> | |||
<tbody> | <tbody> | |||
<tr> | <tr> | |||
<td align="left">if</td> | <td align="left">if</td> | |||
<td align="left">ietf-interfaces</td> | <td align="left">ietf-interfaces</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="RFC8343" format="default"/></td> | <xref target="RFC8343" format="default"/></td> | |||
</tr> | </tr> | |||
skipping to change at line 160 ¶ | skipping to change at line 165 ¶ | |||
<td align="left">ietf-ipv6-unicast-routing</td> | <td align="left">ietf-ipv6-unicast-routing</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="RFC8349" format="default"/></td> | <xref target="RFC8349" format="default"/></td> | |||
</tr> | </tr> | |||
<tr> | <tr> | |||
<td align="left">inet</td> | <td align="left">inet</td> | |||
<td align="left">ietf-inet-types</td> | <td align="left">ietf-inet-types</td> | |||
<td align="left"> | <td align="left"> | |||
<xref target="RFC6991" format="default"/></td> | <xref target="RFC6991" format="default"/></td> | |||
</tr> | </tr> | |||
<tr> | ||||
<td align="left">ospf</td> | ||||
<td align="left">ietf-ospf</td> | ||||
<td align="left"> | ||||
<xref target="RFC9129" format="default"/></td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">isis</td> | ||||
<td align="left">ietf-isis</td> | ||||
<td align="left"> | ||||
<xref target="RFC9130" format="default"/></td> | ||||
</tr> | ||||
</tbody> | </tbody> | |||
</table> | </table> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Design of the Model</name> | <name>Design of the Model</name> | |||
<t>The YANG module defined in this document augments the ietf-routing YANG | <t>The YANG module defined in this document augments the ietf-routing, | |||
modules | ietf-ipv4-unicast-routing, and ietf-ipv6-unicast-routing YANG modules | |||
defined in <xref target="RFC8349" format="default"/>, which provide a basis | defined in <xref target="RFC8349" format="default"/>, which provide a basis | |||
for routing system data model development. Together with YANG modules defined in | for routing system data model development. Together with the ietf-routing YANG m | |||
<xref target="RFC8349" format="default"/>, a generic RIB YANG model is defined t | odule and other YANG modules defined in | |||
o | <xref target="RFC8349" format="default"/>, a generic RIB YANG data model is defi | |||
implement and monitor a RIB.</t> | ned herein to implement and monitor a RIB. | |||
</t> | ||||
<t>The modules in <xref target="RFC8349" format="default"/> also define th e basic | <t>The modules in <xref target="RFC8349" format="default"/> also define th e basic | |||
configuration and operational state for both IPv4 and IPv6 static routes. This document | configuration and operational state for both IPv4 and IPv6 static routes. This document | |||
provides augmentations for static routes to support multiple next-hops | provides augmentations for static routes to support multiple next hops | |||
and more next-hop attributes. | and more next-hop attributes. | |||
</t> | </t> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Tags and Preference</name> | <name>Tags and Preferences</name> | |||
<t>Individual route tags are supported at both the route and next-hop le vel. | <t>Individual route tags are supported at both the route and next-hop le vel. | |||
A preference per next-hop is also supported for selection of the most preferred | A preference per next hop is also supported for selection of the most preferred | |||
reachable static route.</t> | reachable static route.</t> | |||
<t>The following tree snapshot shows tag and preference which augment | <t>The following tree snapshot shows tag and preference entries that aug | |||
static IPv4 unicast routes and IPv6 unicast routes next-hop.</t> | ment | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | static IPv4 unicast route and IPv6 unicast route next hops.</t> | |||
<sourcecode type="yangtree"><![CDATA[ | ||||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/rt:static-routes/v4ur:ipv4 | /rt:control-plane-protocol/rt:static-routes/v4ur:ipv4 | |||
/v4ur:route/v4ur:next-hop/v4ur:next-hop-options | /v4ur:route/v4ur:next-hop/v4ur:next-hop-options | |||
/v4ur:simple-next-hop: | /v4ur:simple-next-hop: | |||
+--rw preference? uint32 | +--rw preference? uint32 | |||
+--rw tag? uint32 | +--rw tag? uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/rt:static-routes/v4ur:ipv4 | /rt:control-plane-protocol/rt:static-routes/v4ur:ipv4 | |||
/v4ur:route/v4ur:next-hop/v4ur:next-hop-options | /v4ur:route/v4ur:next-hop/v4ur:next-hop-options | |||
/v4ur:next-hop-list/v4ur:next-hop-list/v4ur:next-hop: | /v4ur:next-hop-list/v4ur:next-hop-list/v4ur:next-hop: | |||
skipping to change at line 208 ¶ | skipping to change at line 226 ¶ | |||
/v6ur:route/v6ur:next-hop/v6ur:next-hop-options | /v6ur:route/v6ur:next-hop/v6ur:next-hop-options | |||
/v6ur:simple-next-hop: | /v6ur:simple-next-hop: | |||
+--rw preference? uint32 | +--rw preference? uint32 | |||
+--rw tag? uint32 | +--rw tag? uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/rt:static-routes/v6ur:ipv6 | /rt:control-plane-protocol/rt:static-routes/v6ur:ipv6 | |||
/v6ur:route/v6ur:next-hop/v6ur:next-hop-options | /v6ur:route/v6ur:next-hop/v6ur:next-hop-options | |||
/v6ur:next-hop-list/v6ur:next-hop-list/v6ur:next-hop: | /v6ur:next-hop-list/v6ur:next-hop-list/v6ur:next-hop: | |||
+--rw preference? uint32 | +--rw preference? uint32 | |||
+--rw tag? uint32 | +--rw tag? uint32 | |||
]]></artwork> | augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: | |||
+--ro metric? uint32 | ||||
+--ro tag* uint32 | ||||
+--ro application-tag? uint32 | ||||
]]></sourcecode> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Repair Path</name> | <name>Repair Path</name> | |||
<t>The IP Fast Reroute (IPFRR) calculation by routing protocol | <t>The IP Fast Reroute (IPFRR) calculation by routing protocol | |||
pre-computes repair paths <xref target="RFC5714" format="default"/>, and the repair | precomputes repair paths <xref target="RFC5714" format="default"/>, and the repair | |||
paths are installed in the RIB.</t> | paths are installed in the RIB.</t> | |||
<t>Each route next-hop in the RIB is augmented with a repair path, | <t>Each route next hop in the RIB is augmented with a repair path | |||
and is shown in the following tree snapshot.</t> | and is shown in the following tree snapshot.</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | |||
/rt:next-hop/rt:next-hop-options/rt:simple-next-hop: | /rt:next-hop/rt:next-hop-options/rt:simple-next-hop: | |||
+--ro repair-path | +--ro repair-path | |||
+--ro outgoing-interface? if:interface-state-ref | +--ro outgoing-interface? if:interface-state-ref | |||
+--ro next-hop-address? inet:ip-address-no-zone | +--ro next-hop-address? inet:ip-address-no-zone | |||
+--ro metric? uint32 | +--ro metric? uint32 | |||
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | |||
/rt:next-hop/rt:next-hop-options/rt:next-hop-list | /rt:next-hop/rt:next-hop-options/rt:next-hop-list | |||
/rt:next-hop-list/rt:next-hop: | /rt:next-hop-list/rt:next-hop: | |||
+--ro repair-path | +--ro repair-path | |||
+--ro outgoing-interface? if:interface-state-ref | +--ro outgoing-interface? if:interface-state-ref | |||
+--ro next-hop-address? inet:ip-address-no-zone | +--ro next-hop-address? inet:ip-address-no-zone | |||
+--ro metric? uint32 | +--ro metric? uint32 | |||
]]></artwork> | ]]></sourcecode> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="rib.tree" numbered="true" toc="default"> | <section anchor="rib.tree" numbered="true" toc="default"> | |||
<name>RIB Model Tree</name> | <name>RIB Model Tree</name> | |||
<t> The ietf-routing.yang tree with the augmentations herein is | <t> The ietf-routing.yang tree with the augmentations herein is | |||
included in <xref target="full-tree" format="default"/>. The meaning of the sy mbols | included in <xref target="full-tree" format="default"/>. The meanings of the s ymbols | |||
can be found in <xref target="RFC8340" format="default"/>.</t> | can be found in <xref target="RFC8340" format="default"/>.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>RIB Extension YANG Model</name> | <name>RIB Extension YANG Module</name> | |||
<sourcecode name="ietf-rib-extension@2023-06-06.yang" type="" markers="tru | ||||
e"><![CDATA[ | <t>This YANG module references <xref target="RFC6991"/>, | |||
<xref target="RFC8343"/>, <xref target="RFC8349"/>, | ||||
<xref target="RFC9129"/>, <xref target="RFC9130"/>, and | ||||
<xref target="RFC5714"/>.</t> | ||||
<sourcecode name="ietf-rib-extension@2023-11-01.yang" type="yang" markers= | ||||
"true"><![CDATA[ | ||||
module ietf-rib-extension { | module ietf-rib-extension { | |||
yang-version "1.1"; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-rib-extension"; | namespace "urn:ietf:params:xml:ns:yang:ietf-rib-extension"; | |||
prefix rib-ext; | prefix rib-ext; | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix "inet"; | prefix inet; | |||
reference "RFC 6991: Common YANG Data Types"; | reference | |||
"RFC 6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix "if"; | prefix if; | |||
reference "RFC 8343: A YANG Data Model for Interface | reference | |||
Management (NMDA Version)"; | "RFC 8343: A YANG Data Model for Interface | |||
Management"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference "RFC 8349: A YANG Data Model for Routing | reference | |||
Management (NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing | |||
Management (NMDA Version)"; | ||||
} | } | |||
import ietf-ipv4-unicast-routing { | import ietf-ipv4-unicast-routing { | |||
prefix "v4ur"; | prefix v4ur; | |||
reference "RFC 8349: A YANG Data Model for Routing | reference | |||
Management (NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing | |||
Management (NMDA Version)"; | ||||
} | } | |||
import ietf-ipv6-unicast-routing { | import ietf-ipv6-unicast-routing { | |||
prefix "v6ur"; | prefix v6ur; | |||
reference "RFC 8349: A YANG Data Model for Routing | reference | |||
Management (NMDA Version)"; | "RFC 8349: A YANG Data Model for Routing | |||
Management (NMDA Version)"; | ||||
} | } | |||
organization | import ietf-ospf { | |||
"IETF RTGWG - Routing Working Group"; | prefix ospf; | |||
reference "RFC 9129: YANG Data Model for the OSPF Protocol"; | ||||
} | ||||
import ietf-isis { | ||||
prefix isis; | ||||
reference "RFC 9130: YANG Data Model for the IS-IS Protocol"; | ||||
} | ||||
organization | ||||
"IETF RTGWG (Routing Area Working Group)"; | ||||
contact | contact | |||
"WG Web: <https://datatracker.ietf.org/group/rtgwg/> | "WG Web: <https://datatracker.ietf.org/wg/rtgwg/> | |||
WG List: <mailto:rtgwg@ietf.org> | WG List: <mailto:rtgwg@ietf.org> | |||
Author: Acee Lindem | Author: Acee Lindem | |||
<mailto:acee.ietf@gmail.com> | <mailto:acee.ietf@gmail.com> | |||
Author: Yingzhen Qu | Author: Yingzhen Qu | |||
<mailto:yingzhen.qu@futurewei.com>"; | <mailto:yingzhen.qu@futurewei.com>"; | |||
description | description | |||
"This YANG module extends the RIB defined in the ietf-routing | "This YANG module extends the RIB defined in the ietf-routing | |||
YANG module with additional route attributes. | YANG module with additional route attributes. | |||
This YANG module conforms to the Network Management | This YANG module conforms to the Network Management | |||
Datastore Architecture (NDMA) as described in RFC 8342. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
Copyright (c) 2023 IETF Trust and the persons identified as | Copyright (c) 2023 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 Revised BSD License set | the license terms contained in, the Revised 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 | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; | This version of this YANG module is part of RFC 9403; see the | |||
see the RFC itself for full legal notices."; | RFC itself for full legal notices."; | |||
revision 2023-06-06 { | revision 2023-11-01 { | |||
description | description | |||
"Initial Version"; | "Initial version."; | |||
reference | reference | |||
"RFC XXXX: A YANG Data Model for RIB Extensions."; | "RFC 9403: A YANG Data Model for RIB Extensions"; | |||
} | } | |||
/* Groupings */ | /* Groupings */ | |||
grouping rib-statistics { | grouping rib-statistics { | |||
description | description | |||
"Statistics grouping used for RIB augmentation."; | "Statistics grouping used for RIB augmentation."; | |||
container statistics { | container statistics { | |||
config false; | config false; | |||
description | description | |||
"Container for RIB statistics."; | "Container for RIB statistics."; | |||
leaf total-routes { | leaf total-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total number of routes in the RIB"; | "Total number of routes in the RIB."; | |||
} | } | |||
leaf total-active-routes { | leaf total-active-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total number of active routes in the RIB. An active | "Total number of active routes in the RIB. An active | |||
route is the route that is preferred over other routes | route is the route that is preferred over other routes | |||
to the same destination prefix."; | to the same destination prefix."; | |||
} | } | |||
leaf total-route-memory { | leaf total-route-memory { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Total memory for all routes in the RIB."; | "Total memory for all routes in the RIB."; | |||
} | } | |||
list protocol-statistics { | list protocol-statistics { | |||
skipping to change at line 359 ¶ | skipping to change at line 395 ¶ | |||
type identityref { | type identityref { | |||
base rt:routing-protocol; | base rt:routing-protocol; | |||
} | } | |||
description | description | |||
"Routing protocol installing routes in the RIB."; | "Routing protocol installing routes in the RIB."; | |||
} | } | |||
leaf routes { | leaf routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total number of routes in the RIB for the routing | "Total number of routes in the RIB for the routing | |||
protocol identified by the 'protocol'."; | protocol identified by the 'protocol' entry."; | |||
} | } | |||
leaf active-routes { | leaf active-routes { | |||
type uint32; | type uint32; | |||
description | description | |||
"Total number of active routes in the RIB for the routing | "Total number of active routes in the RIB for the | |||
protocol for the routing protocol identified by the | routing protocol identified by the 'protocol' entry. | |||
'protocol'. An active route is preferred over other | An active route is preferred over other routes to the | |||
routes to the same destination prefix."; | same destination prefix."; | |||
} | } | |||
leaf route-memory { | leaf route-memory { | |||
type uint64; | type uint64; | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"Total memory for all routes in the RIB for the routing | "Total memory for all routes in the RIB for the | |||
protocol identified by the 'protocol'."; | routing protocol identified by the 'protocol' | |||
entry."; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping attributes { | ||||
description | ||||
"Common attributes applicable to all routes."; | ||||
leaf metric { | ||||
type uint32; | ||||
description | ||||
"The metric is a numeric value indicating the cost | ||||
of the route from the perspective of the routing | ||||
protocol installing the route. In general, routes with | ||||
a lower metric installed by the same routing protocol | ||||
are lower cost to reach and are preferable to routes | ||||
with a higher metric. However, metrics from different | ||||
routing protocols are not comparable."; | ||||
} | ||||
leaf-list tag { | ||||
type uint32; | ||||
description | ||||
"A tag is a 32-bit opaque value associated with the | ||||
route that can be used for policy decisions such as | ||||
advertisement and filtering of the route."; | ||||
} | ||||
leaf application-tag { | ||||
type uint32; | ||||
description | ||||
"The application-specific tag is an additional tag that | ||||
can be used by applications that require semantics and/or | ||||
policy different from that of the tag. For example, | ||||
the tag is usually automatically advertised in OSPF | ||||
AS-External Link State Advertisements (LSAs) while this | ||||
application-specific tag is not advertised implicitly."; | ||||
} | ||||
} | ||||
grouping repair-path { | grouping repair-path { | |||
description | description | |||
"Grouping for IP Fast Reroute repair path."; | "Grouping for the IP Fast Reroute (IPFRR) repair path."; | |||
container repair-path { | container repair-path { | |||
description | description | |||
"IP Fast Reroute next-hop repair path."; | "IPFRR next-hop repair path."; | |||
leaf outgoing-interface { | leaf outgoing-interface { | |||
type if:interface-state-ref; | type if:interface-state-ref; | |||
description | description | |||
"Name of the outgoing interface."; | "Name of the outgoing interface."; | |||
} | } | |||
leaf next-hop-address { | leaf next-hop-address { | |||
type inet:ip-address-no-zone; | type inet:ip-address-no-zone; | |||
description | description | |||
"IP address of the next hop."; | "IP address of the next hop."; | |||
} | } | |||
leaf metric { | leaf metric { | |||
type uint32; | type uint32; | |||
description | description | |||
"The metric for the repair path. While the IP Fast | "The metric for the repair path. While the reroute | |||
Reroute re-route repair is local and the metric is | repair is local and the metric is not advertised | |||
not advertised externally, the metric for repair path | externally, the metric for the repair path is useful | |||
is useful for troubleshooting purposes."; | for troubleshooting purposes."; | |||
} | } | |||
reference | reference | |||
"RFC 5714: IP Fast Reroute Framework."; | "RFC 5714: IP Fast Reroute Framework"; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes/v4ur:ipv4/" | + "rt:control-plane-protocol/rt:static-routes/v4ur:ipv4/" | |||
+ "v4ur:route/v4ur:next-hop/v4ur:next-hop-options/" | + "v4ur:route/v4ur:next-hop/v4ur:next-hop-options/" | |||
+ "v4ur:simple-next-hop" | + "v4ur:simple-next-hop" { | |||
{ | ||||
description | description | |||
"Augment 'simple-next-hop' case in IPv4 unicast route."; | "Augment 'simple-next-hop' case in IPv4 unicast route."; | |||
leaf preference { | leaf preference { | |||
type uint32; | type uint32; | |||
default "1"; | default "1"; | |||
description | description | |||
"The preference is used to select among multiple static | "The preference is used to select among multiple static | |||
routes. Routes with a lower preference next-hop are | routes. Routes with a lower next-hop preference value | |||
preferred and equal preference routes result in | are preferred, and equal-preference routes result in | |||
Equal-Cost-Multi-Path (ECMP) static routes."; | Equal-Cost Multipath (ECMP) static routes."; | |||
} | } | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The tag is a 32-bit opaque value associated with the | "The tag is a 32-bit opaque value associated with the | |||
route that can be used for policy decisions such as | route that can be used for policy decisions such as | |||
advertisement and filtering of the route."; | advertisement and filtering of the route."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes/v4ur:ipv4/" | + "rt:control-plane-protocol/rt:static-routes/v4ur:ipv4/" | |||
+ "v4ur:route/v4ur:next-hop/v4ur:next-hop-options/" | + "v4ur:route/v4ur:next-hop/v4ur:next-hop-options/" | |||
+ "v4ur:next-hop-list/v4ur:next-hop-list/v4ur:next-hop" | + "v4ur:next-hop-list/v4ur:next-hop-list/v4ur:next-hop" { | |||
{ | ||||
description | description | |||
"Augment static route configuration 'next-hop-list'."; | "Augment static route configuration 'next-hop-list'."; | |||
leaf preference { | leaf preference { | |||
type uint32; | type uint32; | |||
default "1"; | default "1"; | |||
description | description | |||
"The preference is used to select among multiple static | "The preference is used to select among multiple static | |||
routes. Routes with a lower preference next-hop are | routes. Routes with a lower next-hop preference value | |||
preferred and equal preference routes result in | are preferred, and equal-preference routes result in | |||
Equal-Cost-Multi-Path (ECMP) static routes."; | ECMP static routes."; | |||
} | } | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The tag is a 32-bit opaque value associated with the | "The tag is a 32-bit opaque value associated with the | |||
route that can be used for policy decisions such as | route that can be used for policy decisions such as | |||
advertisement and filtering of the route."; | advertisement and filtering of the route."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes/v6ur:ipv6/" | + "rt:control-plane-protocol/rt:static-routes/v6ur:ipv6/" | |||
+ "v6ur:route/v6ur:next-hop/v6ur:next-hop-options/" | + "v6ur:route/v6ur:next-hop/v6ur:next-hop-options/" | |||
+ "v6ur:simple-next-hop" | + "v6ur:simple-next-hop" { | |||
{ | ||||
description | description | |||
"Augment 'simple-next-hop' case in IPv6 unicast route."; | "Augment 'simple-next-hop' case in IPv6 unicast route."; | |||
leaf preference { | leaf preference { | |||
type uint32; | type uint32; | |||
default "1"; | default "1"; | |||
description | description | |||
"The preference is used to select among multiple static | "The preference is used to select among multiple static | |||
routes. Routes with a lower preference next-hop are | routes. Routes with a lower next-hop preference value | |||
preferred and equal preference routes result in | are preferred, and equal-preference routes result in | |||
Equal-Cost-Multi-Path (ECMP) static routes."; | ECMP static routes."; | |||
} | } | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The tag is a 32-bit opaque value associated with the | "The tag is a 32-bit opaque value associated with the | |||
route that can be used for policy decisions such as | route that can be used for policy decisions such as | |||
advertisement and filtering of the route."; | advertisement and filtering of the route."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:static-routes/v6ur:ipv6/" | + "rt:control-plane-protocol/rt:static-routes/v6ur:ipv6/" | |||
+ "v6ur:route/v6ur:next-hop/v6ur:next-hop-options/" | + "v6ur:route/v6ur:next-hop/v6ur:next-hop-options/" | |||
+ "v6ur:next-hop-list/v6ur:next-hop-list/v6ur:next-hop" | + "v6ur:next-hop-list/v6ur:next-hop-list/v6ur:next-hop" { | |||
{ | ||||
description | description | |||
"Augment static route configuration 'next-hop-list'."; | "Augment static route configuration 'next-hop-list'."; | |||
leaf preference { | leaf preference { | |||
type uint32; | type uint32; | |||
default "1"; | default "1"; | |||
description | description | |||
"The preference is used to select among multiple static | "The preference is used to select among multiple static | |||
routes. Routes with a lower preference next-hop are | routes. Routes with a lower next-hop preference value | |||
preferred and equal preference routes result in | are preferred, and equal-preference routes result in | |||
Equal-Cost-Multi-Path (ECMP) static routes."; | ECMP static routes."; | |||
} | } | |||
leaf tag { | leaf tag { | |||
type uint32; | type uint32; | |||
default "0"; | default "0"; | |||
description | description | |||
"The tag is a 32-bit opaque value associated with the | "The tag is a 32-bit opaque value associated with the | |||
route that can be used for policy decisions such as | route that can be used for policy decisions such as | |||
advertisement and filtering of the route."; | advertisement and filtering of the route."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib" | augment "/rt:routing/rt:ribs/rt:rib" { | |||
{ | ||||
description | description | |||
"Augment a RIB with statistics."; | "Augment a RIB with statistics."; | |||
uses rib-statistics; | uses rib-statistics; | |||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib/" | augment "/rt:routing/rt:ribs/rt:rib/" | |||
+ "rt:routes/rt:route" | + "rt:routes/rt:route" { | |||
{ | ||||
description | description | |||
"Augment a route in RIB with attributes."; | "Augment a route in the RIB with common attributes."; | |||
uses attributes; | leaf metric { | |||
when "not(derived-from(" | ||||
+ "../rt:source-protocol, 'ospf:ospf')) " | ||||
+ "and not(derived-from( " | ||||
+ "../rt:source-protocol, 'isis:isis'))" { | ||||
description | ||||
"This augmentation is only valid for routes that don't | ||||
have OSPF or IS-IS as the source protocol. The YANG | ||||
data models for OSPF and IS-IS already include a | ||||
'metric' augmentation for routes."; | ||||
} | ||||
type uint32; | ||||
description | ||||
"The metric is a numeric value indicating the cost | ||||
of the route from the perspective of the routing | ||||
protocol installing the route. In general, routes with | ||||
a lower metric installed by the same routing protocol | ||||
are lower cost to reach and are preferable to routes | ||||
with a higher metric. However, metrics from different | ||||
routing protocols are not comparable."; | ||||
} | ||||
leaf-list tag { | ||||
when "not(derived-from(" | ||||
+ "../rt:source-protocol, 'ospf:ospf')) " | ||||
+ "and not(derived-from( " | ||||
+ "../rt:source-protocol, 'isis:isis'))" { | ||||
description | ||||
"This augmentation is only valid for routes that don't | ||||
have OSPF or IS-IS as the source protocol. The YANG | ||||
data models for OSPF and IS-IS already include a 'tag' | ||||
augmentation for routes."; | ||||
} | ||||
type uint32; | ||||
description | ||||
"A tag is a 32-bit opaque value associated with the | ||||
route that can be used for policy decisions such as | ||||
advertisement and filtering of the route."; | ||||
} | ||||
leaf application-tag { | ||||
type uint32; | ||||
description | ||||
"The application-specific tag is an additional tag that | ||||
can be used by applications that require semantics and/or | ||||
policy different from that of the tag. For example, | ||||
the tag is usually automatically advertised in OSPF | ||||
AS-External Link State Advertisements (LSAs) while this | ||||
application-specific tag is not advertised implicitly."; | ||||
} | ||||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib/" | augment "/rt:routing/rt:ribs/rt:rib/" | |||
+ "rt:routes/rt:route/rt:next-hop/rt:next-hop-options/" | + "rt:routes/rt:route/rt:next-hop/rt:next-hop-options/" | |||
+ "rt:simple-next-hop" | + "rt:simple-next-hop" { | |||
{ | ||||
description | description | |||
"Augment simple-next-hop with repair-path."; | "Augment 'simple-next-hop' with 'repair-path'."; | |||
uses repair-path; | uses repair-path; | |||
} | } | |||
augment "/rt:routing/rt:ribs/rt:rib/" | augment "/rt:routing/rt:ribs/rt:rib/" | |||
+ "rt:routes/rt:route/rt:next-hop/rt:next-hop-options/" | + "rt:routes/rt:route/rt:next-hop/rt:next-hop-options/" | |||
+ "rt:next-hop-list/rt:next-hop-list/rt:next-hop" | + "rt:next-hop-list/rt:next-hop-list/rt:next-hop" { | |||
{ | ||||
description | description | |||
"Augment the next-hop with a repair path."; | "Augment the next hop with a repair path."; | |||
uses repair-path; | uses repair-path; | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
]]></sourcecode> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>Security Considerations</name> | <name>Security Considerations</name> | |||
<t>The YANG module specified in this document defines a schema for | <t>The YANG module specified in this document defines a schema for data | |||
data that is designed to be accessed via network | that is designed to be accessed via network management protocols such | |||
management protocols such as NETCONF <xref target="RFC6241" format="defau | as NETCONF <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | |||
lt"/> or | The lowest NETCONF layer is the secure transport layer, and the | |||
RESTCONF <xref target="RFC8040" format="default"/>. The lowest NETCONF la | mandatory-to-implement secure transport is Secure Shell (SSH) | |||
yer is the secure transport | <xref target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the | |||
layer, and the mandatory-to-implement secure transport is Secure Shell (S | mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t> | |||
SH) | <t>The Network Configuration Access Control Model (NACM) <xref target="RFC834 | |||
<xref target="RFC6242" format="default"/>. The lowest RESTCONF layer is H | 1"/> provides the means to restrict access for particular NETCONF or | |||
TTPS, and the | RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF | |||
mandatory-to-implement secure transport is TLS <xref target="RFC8446" for | protocol operations and content.</t> | |||
mat="default"/>.</t> | <t>There are a number of data nodes defined in the ietf-rib-extension.yang mo | |||
<t>The NETCONF access control model <xref target="RFC8341" format="default | dule that are writable/creatable/deletable (i.e., config true, which is the defa | |||
"/> provides the | ult). These data nodes may be considered sensitive or vulnerable in some network | |||
means to restrict access for particular NETCONF or RESTCONF users to a | environments. Write operations (e.g., edit-config) to these data nodes without | |||
pre-configured subset of all available NETCONF or RESTCONF protocol | proper protection can have a negative effect on network operations. These are th | |||
operations and content.</t> | e subtrees and data nodes and their sensitivity/vulnerability:</t> | |||
<t>There are a number of data nodes defined in ietf-rib-extensions.yang mo | <ul spacing="normal"> | |||
dule that are | ||||
writable/creatable/deletable (i.e., config true, which is the default). | ||||
These data nodes may be considered sensitive or vulnerable in some network | ||||
environments. Write operations (e.g., edit-config) to these data nodes wit | ||||
hout | ||||
proper protection can have a negative effect on network operations. | ||||
These are the subtrees and data nodes and their sensitivity/vulnerability: | ||||
</t> | ||||
<ul empty="true" spacing="normal"> | ||||
<li>/v4ur:next-hop-options/v4ur:simple-next-hop/rib-ext:preference</li> | <li>/v4ur:next-hop-options/v4ur:simple-next-hop/rib-ext:preference</li> | |||
<li>/v4ur:next-hop-options/v4ur:simple-next-hop/rib-ext:tag</li> | <li>/v4ur:next-hop-options/v4ur:simple-next-hop/rib-ext:tag</li> | |||
<li>/v4ur:next-hop-options/v4ur:next-hop-list/v4ur:next-hop-list | <li>/v4ur:next-hop-options/v4ur:next-hop-list/v4ur:next-hop-list | |||
/v4ur:next-hop/rib-ext:preference</li> | /v4ur:next-hop/rib-ext:preference</li> | |||
<li>/v4ur:next-hop-options/v4ur:next-hop-list/v4ur:next-hop-list | <li>/v4ur:next-hop-options/v4ur:next-hop-list/v4ur:next-hop-list | |||
/v4ur:next-hop/rib-ext:tag</li> | /v4ur:next-hop/rib-ext:tag</li> | |||
<li>/v6ur:next-hop-options/v6ur:simple-next-hop/rib-ext:preference</li> | <li>/v6ur:next-hop-options/v6ur:simple-next-hop/rib-ext:preference</li> | |||
<li>/v6ur:next-hop-options/v6ur:simple-next-hop/rib-ext:tag</li> | <li>/v6ur:next-hop-options/v6ur:simple-next-hop/rib-ext:tag</li> | |||
<li>/v6ur:next-hop-options/v6ur:next-hop-list/v6ur:next-hop-list | <li>/v6ur:next-hop-options/v6ur:next-hop-list/v6ur:next-hop-list | |||
/v6ur:next-hop/rib-ext:preference</li> | /v6ur:next-hop/rib-ext:preference</li> | |||
<li>/v6ur:next-hop-options/v6ur:next-hop-list/v6ur:next-hop-list | <li>/v6ur:next-hop-options/v6ur:next-hop-list/v6ur:next-hop-list | |||
/v6ur:next-hop/rib-ext:tag</li> | /v6ur:next-hop/rib-ext:tag</li> | |||
<li>For these augmentations to ietf-routing.yang, the ability to delete, | ||||
add, and modify IPv4 and | ||||
IPv6 static route preference and tag would allow traffic to be misrouted.< | ||||
/li> | ||||
</ul> | </ul> | |||
<t>Some of the readable data nodes in the ietf-rib-extensions.yang module | <t indent="3">For these augmentations to ietf-routing.yang, the ability | |||
may be | to delete, add, and modify IPv4 and | |||
considered sensitive or vulnerable in some network environments. It is thu | IPv6 static route preferences and tags would allow traffic to be misrouted | |||
s | .</t> | |||
important to control read access (e.g., via get, get-config, or notificati | <t>Some of the readable data nodes in the ietf-rib-extension.yang module may | |||
on) | be considered sensitive or vulnerable in some network environments. It is thus | |||
to these data nodes. These are the subtrees and data nodes and | important to control read access (e.g., via get, get-config, or notification) to | |||
their sensitivity/vulnerability: | these data nodes. These are the subtrees and data nodes and their | |||
</t> | sensitivity/vulnerability:</t> | |||
<ul empty="true" spacing="normal"> | <ul spacing="normal"> | |||
<li>/rt:routing/rt:ribs/rt:rib/rib-ext:statistics</li> | <li>/rt:routing/rt:ribs/rt:rib/rib-ext:statistics</li> | |||
<li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rib-ext:metric</li> | <li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rib-ext:metric</li> | |||
<li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rib-ext:tag</li> | <li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rib-ext:tag</li> | |||
<li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route | <li>/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rib-ext:application-ta | |||
/rib-ext:application-tag</li> | g</li> | |||
<li>/rt:route/rt:next-hop/rt:next-hop-options/rt:simple-next-hop | <li>/rt:route/rt:next-hop/rt:next-hop-options/rt:simple-next-hop/rib-ext | |||
/rib-ext:repair-path</li> | :repair-path</li> | |||
<li>/rt:routes/rt:route/rt:next-hop/rt:next-hop-options | <li>/rt:routes/rt:route/rt:next-hop/rt:next-hop-options/rt:next-hop-list | |||
/rt:next-hop-list/rt:next-hop-list/rt:next-hop/rib-ext:repair-path</li> | /rt:next-hop-list/rt:next-hop/rib-ext:repair-path</li> | |||
<li>The exposure of the Routing Information Base (RIB) will | </ul> | |||
<t indent="3">Exposing the RIB will | ||||
expose the routing topology of the network. This may be undesirable | expose the routing topology of the network. This may be undesirable | |||
due to the fact that exposure may facilitate other attacks. Additionally, | due to the fact that such exposure may facilitate other attacks. Additiona lly, | |||
network operators may consider their topologies to be sensitive confidenti al | network operators may consider their topologies to be sensitive confidenti al | |||
data.</li> | data.</t> | |||
</ul> | ||||
<t>All the security considerations for <xref target="RFC8349" format="defa | <t>All the security considerations for writable and readable data nodes de | |||
ult"/> writable and | fined in <xref target="RFC8349" format="default"/> | |||
readable data nodes apply to the augmentations described herein.</t> | apply to the augmentations described herein.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | <name>IANA Considerations</name> | |||
<t> This document registers a URI in the IETF XML registry | <t> This document registers the following URI in the "IETF XML Registry" | |||
<xref target="RFC3688" format="default"/>. Following the format in <xref tar | <xref target="RFC3688" format="default"/>. | |||
get="RFC3688" format="default"/>, the following | ||||
registration is requested to be made: | ||||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <dl spacing="compact" newline="false"> | |||
URI: urn:ietf:params:xml:ns:yang:ietf-rib-extension | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-rib-extension</dd> | |||
Registrant Contact: The IESG. | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
XML: N/A, the requested URI is an XML namespace. | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
]]></artwork> | </dl> | |||
<t>This document registers a YANG module in the YANG Module Names | <t>IANA has registered the following YANG module in the "YANG Module Names | |||
" | ||||
registry <xref target="RFC6020" format="default"/>. | registry <xref target="RFC6020" format="default"/>. | |||
</t> | </t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <dl spacing="compact" newline="false"> | |||
name: ietf-rib-extension | <dt>Name:</dt><dd>ietf-rib-extension</dd> | |||
namespace: urn:ietf:params:xml:ns:yang:ietf-rib-extension | <dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-rib-extension</dd> | |||
prefix: rib-ext | <dt>Prefix:</dt><dd>rib-ext</dd> | |||
reference: RFC XXXX | <dt>Reference:</dt><dd>RFC 9403</dd> | |||
]]></artwork> | </dl> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references> | <references> | |||
<name>References</name> | <name>References</name> | |||
<references> | <references> | |||
<name>Normative References</name> | <name>Normative References</name> | |||
<reference anchor="RFC3688" target="https://www.rfc-editor.org/info/rfc3 | ||||
688" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688.xml" | |||
<front> | /> | |||
<title>The IETF XML Registry</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml" | |||
<author fullname="M. Mealling" initials="M." surname="Mealling"/> | /> | |||
<date month="January" year="2004"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml" | |||
<abstract> | /> | |||
<t>This document describes an IANA maintained registry for IETF st | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6242.xml" | |||
andards which use Extensible Markup Language (XML) related items such as Namespa | /> | |||
ces, Document Type Declarations (DTDs), Schemas, and Resource Description Framew | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml" | |||
ork (RDF) Schemas.</t> | /> | |||
</abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml" | |||
</front> | /> | |||
<seriesInfo name="BCP" value="81"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml" | |||
<seriesInfo name="RFC" value="3688"/> | /> | |||
<seriesInfo name="DOI" value="10.17487/RFC3688"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml" | |||
</reference> | /> | |||
<reference anchor="RFC6020" target="https://www.rfc-editor.org/info/rfc6 | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml" | |||
020" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020.xml"> | /> | |||
<front> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml" | |||
<title>YANG - A Data Modeling Language for the Network Configuration | /> | |||
Protocol (NETCONF)</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8349.xml" | |||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | /> | |||
"Bjorklund"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml" | |||
<date month="October" year="2010"/> | /> | |||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9129.xml" | |||
<t>YANG is a data modeling language used to model configuration an | /> | |||
d state data manipulated by the Network Configuration Protocol (NETCONF), NETCON | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9130.xml" | |||
F remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t> | /> | |||
</abstract> | ||||
</front> | <reference anchor="W3C.REC-xml-20081126" target="https://www.w3.org/TR/2 | |||
<seriesInfo name="RFC" value="6020"/> | 008/REC-xml-20081126"> | |||
<seriesInfo name="DOI" value="10.17487/RFC6020"/> | ||||
</reference> | ||||
<reference anchor="RFC6241" target="https://www.rfc-editor.org/info/rfc6 | ||||
241" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241.xml"> | ||||
<front> | ||||
<title>Network Configuration Protocol (NETCONF)</title> | ||||
<author fullname="R. Enns" initials="R." role="editor" surname="Enns | ||||
"/> | ||||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
"Bjorklund"/> | ||||
<author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
ame="Schoenwaelder"/> | ||||
<author fullname="A. Bierman" initials="A." role="editor" surname="B | ||||
ierman"/> | ||||
<date month="June" year="2011"/> | ||||
<abstract> | ||||
<t>The Network Configuration Protocol (NETCONF) defined in this do | ||||
cument provides mechanisms to install, manipulate, and delete the configuration | ||||
of network devices. It uses an Extensible Markup Language (XML)-based data enco | ||||
ding for the configuration data as well as the protocol messages. The NETCONF p | ||||
rotocol operations are realized as remote procedure calls (RPCs). This document | ||||
obsoletes RFC 4741. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6241"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6241"/> | ||||
</reference> | ||||
<reference anchor="RFC6242" target="https://www.rfc-editor.org/info/rfc6 | ||||
242" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6242.xml"> | ||||
<front> | ||||
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title> | ||||
<author fullname="M. Wasserman" initials="M." surname="Wasserman"/> | ||||
<date month="June" year="2011"/> | ||||
<abstract> | ||||
<t>This document describes a method for invoking and running the N | ||||
etwork Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as a | ||||
n SSH subsystem. This document obsoletes RFC 4742. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6242"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6242"/> | ||||
</reference> | ||||
<reference anchor="RFC6991" target="https://www.rfc-editor.org/info/rfc6 | ||||
991" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6991.xml"> | ||||
<front> | ||||
<title>Common YANG Data Types</title> | ||||
<author fullname="J. Schoenwaelder" initials="J." role="editor" surn | ||||
ame="Schoenwaelder"/> | ||||
<date month="July" year="2013"/> | ||||
<abstract> | ||||
<t>This document introduces a collection of common data types to b | ||||
e used with the YANG data modeling language. This document obsoletes RFC 6021.< | ||||
/t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6991"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6991"/> | ||||
</reference> | ||||
<reference anchor="RFC7950" target="https://www.rfc-editor.org/info/rfc7 | ||||
950" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950.xml"> | ||||
<front> | ||||
<title>The YANG 1.1 Data Modeling Language</title> | ||||
<author fullname="M. Bjorklund" initials="M." role="editor" surname= | ||||
"Bjorklund"/> | ||||
<date month="August" year="2016"/> | ||||
<abstract> | ||||
<t>YANG is a data modeling language used to model configuration da | ||||
ta, state data, Remote Procedure Calls, and notifications for network management | ||||
protocols. This document describes the syntax and semantics of version 1.1 of | ||||
the YANG language. YANG version 1.1 is a maintenance release of the YANG langua | ||||
ge, addressing ambiguities and defects in the original specification. There are | ||||
a small number of backward incompatibilities from YANG version 1. This documen | ||||
t also specifies the YANG mappings to the Network Configuration Protocol (NETCON | ||||
F).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7950"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7950"/> | ||||
</reference> | ||||
<reference anchor="RFC8040" target="https://www.rfc-editor.org/info/rfc8 | ||||
040" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040.xml"> | ||||
<front> | ||||
<title>RESTCONF Protocol</title> | ||||
<author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
<date month="January" year="2017"/> | ||||
<abstract> | ||||
<t>This document describes an HTTP-based protocol that provides a | ||||
programmatic interface for accessing data defined in YANG, using the datastore c | ||||
oncepts defined in the Network Configuration Protocol (NETCONF).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8040"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8040"/> | ||||
</reference> | ||||
<reference anchor="RFC8341" target="https://www.rfc-editor.org/info/rfc8 | ||||
341" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341.xml"> | ||||
<front> | ||||
<title>Network Configuration Access Control Model</title> | ||||
<author fullname="A. Bierman" initials="A." surname="Bierman"/> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>The standardization of network configuration interfaces for use | ||||
with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requ | ||||
ires a structured and secure operating environment that promotes human usability | ||||
and multi-vendor interoperability. There is a need for standard mechanisms to r | ||||
estrict NETCONF or RESTCONF protocol access for particular users to a preconfigu | ||||
red subset of all available NETCONF or RESTCONF protocol operations and content. | ||||
This document defines such an access control model.</t> | ||||
<t>This document obsoletes RFC 6536.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="91"/> | ||||
<seriesInfo name="RFC" value="8341"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8341"/> | ||||
</reference> | ||||
<reference anchor="RFC8342" target="https://www.rfc-editor.org/info/rfc8 | ||||
342" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8342.xml"> | ||||
<front> | ||||
<title>Network Management Datastore Architecture (NMDA)</title> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<author fullname="J. Schoenwaelder" initials="J." surname="Schoenwae | ||||
lder"/> | ||||
<author fullname="P. Shafer" initials="P." surname="Shafer"/> | ||||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
<author fullname="R. Wilton" initials="R." surname="Wilton"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>Datastores are a fundamental concept binding the data models wr | ||||
itten in the YANG data modeling language to network management protocols such as | ||||
the Network Configuration Protocol (NETCONF) and RESTCONF. This document defin | ||||
es an architectural framework for datastores based on the experience gained with | ||||
the initial simpler model, addressing requirements that were not well supported | ||||
in the initial model. This document updates RFC 7950.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8342"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8342"/> | ||||
</reference> | ||||
<reference anchor="RFC8343" target="https://www.rfc-editor.org/info/rfc8 | ||||
343" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8343.xml"> | ||||
<front> | ||||
<title>A YANG Data Model for Interface Management</title> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>This document defines a YANG data model for the management of n | ||||
etwork interfaces. It is expected that interface-type-specific data models augme | ||||
nt the generic interfaces data model defined in this document. The data model in | ||||
cludes definitions for configuration and system state (status information and co | ||||
unters for the collection of statistics).</t> | ||||
<t>The YANG data model in this document conforms to the Network Ma | ||||
nagement Datastore Architecture (NMDA) defined in RFC 8342.</t> | ||||
<t>This document obsoletes RFC 7223.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8343"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8343"/> | ||||
</reference> | ||||
<reference anchor="RFC8349" target="https://www.rfc-editor.org/info/rfc8 | ||||
349" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8349.xml"> | ||||
<front> | ||||
<title>A YANG Data Model for Routing Management (NMDA Version)</titl | ||||
e> | ||||
<author fullname="L. Lhotka" initials="L." surname="Lhotka"/> | ||||
<author fullname="A. Lindem" initials="A." surname="Lindem"/> | ||||
<author fullname="Y. Qu" initials="Y." surname="Qu"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>This document specifies three YANG modules and one submodule. T | ||||
ogether, they form the core routing data model that serves as a framework for co | ||||
nfiguring and managing a routing subsystem. It is expected that these modules wi | ||||
ll be augmented by additional YANG modules defining data models for control-plan | ||||
e protocols, route filters, and other functions. The core routing data model pro | ||||
vides common building blocks for such extensions -- routes, Routing Information | ||||
Bases (RIBs), and control-plane protocols.</t> | ||||
<t>The YANG modules in this document conform to the Network Manage | ||||
ment Datastore Architecture (NMDA). This document obsoletes RFC 8022.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8349"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8349"/> | ||||
</reference> | ||||
<reference anchor="RFC8446" target="https://www.rfc-editor.org/info/rfc8 | ||||
446" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446.xml"> | ||||
<front> | <front> | |||
<title>The Transport Layer Security (TLS) Protocol Version 1.3</titl | <title>Extensible Markup Language (XML) 1.0 (Fifth Edition)</title> | |||
e> | <author initials="T." surname="Bray" fullname="Tim Bray"> | |||
<author fullname="E. Rescorla" initials="E." surname="Rescorla"/> | <organization/> | |||
<date month="August" year="2018"/> | </author> | |||
<abstract> | <author initials="J." surname="Paoli" fullname="Jean Paoli"> | |||
<t>This document specifies version 1.3 of the Transport Layer Secu | <organization/> | |||
rity (TLS) protocol. TLS allows client/server applications to communicate over t | </author> | |||
he Internet in a way that is designed to prevent eavesdropping, tampering, and m | <author initials="M." surname="Sperberg-McQueen" fullname="Michael S | |||
essage forgery.</t> | perberg-McQueen"> | |||
<t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 50 | <organization/> | |||
77, 5246, and 6961. This document also specifies new requirements for TLS 1.2 im | </author> | |||
plementations.</t> | <author initials="E." surname="Maler" fullname="Eve Maler"> | |||
</abstract> | <organization/> | |||
</author> | ||||
<author initials="F." surname="Yergeau" fullname="François Yergeau"> | ||||
<organization/> | ||||
</author> | ||||
<date month="November" year="2008"/> | ||||
</front> | </front> | |||
<seriesInfo name="RFC" value="8446"/> | <refcontent>World Wide Web Consortium Recommendation REC-xml-20081126< | |||
<seriesInfo name="DOI" value="10.17487/RFC8446"/> | /refcontent> | |||
</reference> | </reference> | |||
</references> | </references> | |||
<references> | <references> | |||
<name>Informative References</name> | <name>Informative References</name> | |||
<reference anchor="RFC5714" target="https://www.rfc-editor.org/info/rfc5 | ||||
714" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5714.xml"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5714.xml" | |||
<front> | /> | |||
<title>IP Fast Reroute Framework</title> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7951.xml" | |||
<author fullname="M. Shand" initials="M." surname="Shand"/> | /> | |||
<author fullname="S. Bryant" initials="S." surname="Bryant"/> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml" | |||
<date month="January" year="2010"/> | /> | |||
<abstract> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml" | |||
<t>This document provides a framework for the development of IP fa | /> | |||
st- reroute mechanisms that provide protection against link or router failure by | ||||
invoking locally determined repair paths. Unlike MPLS fast-reroute, the mechan | ||||
isms are applicable to a network employing conventional IP routing and forwardin | ||||
g. This document is not an Internet Standards Track specification; it is publis | ||||
hed for informational purposes.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5714"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5714"/> | ||||
</reference> | ||||
<reference anchor="RFC8340" target="https://www.rfc-editor.org/info/rfc8 | ||||
340" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340.xml"> | ||||
<front> | ||||
<title>YANG Tree Diagrams</title> | ||||
<author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/> | ||||
<author fullname="L. Berger" initials="L." role="editor" surname="Be | ||||
rger"/> | ||||
<date month="March" year="2018"/> | ||||
<abstract> | ||||
<t>This document captures the current syntax used in YANG module t | ||||
ree diagrams. The purpose of this document is to provide a single location for | ||||
this definition. This syntax may be updated from time to time based on the evol | ||||
ution of the YANG language.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="215"/> | ||||
<seriesInfo name="RFC" value="8340"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8340"/> | ||||
</reference> | ||||
<reference anchor="RFC8792" target="https://www.rfc-editor.org/info/rfc8 | ||||
792" xml:base="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792.xml"> | ||||
<front> | ||||
<title>Handling Long Lines in Content of Internet-Drafts and RFCs</t | ||||
itle> | ||||
<author fullname="K. Watsen" initials="K." surname="Watsen"/> | ||||
<author fullname="E. Auerswald" initials="E." surname="Auerswald"/> | ||||
<author fullname="A. Farrel" initials="A." surname="Farrel"/> | ||||
<author fullname="Q. Wu" initials="Q." surname="Wu"/> | ||||
<date month="June" year="2020"/> | ||||
<abstract> | ||||
<t>This document defines two strategies for handling long lines in | ||||
width-bounded text content. One strategy, called the "single backslash" strate | ||||
gy, is based on the historical use of a single backslash ('\') character to indi | ||||
cate where line-folding has occurred, with the continuation occurring with the f | ||||
irst character that is not a space character (' ') on the next line. The second | ||||
strategy, called the "double backslash" strategy, extends the first strategy by | ||||
adding a second backslash character to identify where the continuation begins a | ||||
nd is thereby able to handle cases not supported by the first strategy. Both st | ||||
rategies use a self-describing header enabling automated reconstitution of the o | ||||
riginal content.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8792"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8792"/> | ||||
</reference> | ||||
</references> | </references> | |||
</references> | </references> | |||
<section anchor="full-tree" numbered="true" toc="default"> | <section anchor="full-tree" numbered="true" toc="default"> | |||
<name>Combined Tree Diagram</name> | <name>Combined Tree Diagram</name> | |||
<t>This appendix includes the combined ietf-routing.yang, ietf-ipv4-unicas | <t>This appendix provides the combined ietf-routing.yang, ietf-ipv4-unicas | |||
t-routing.yang, | t-routing.yang, | |||
ietf-ipv6-unicast-routing.yang and ietf-rib-extensions.yang tree diagram.</t> | ietf-ipv6-unicast-routing.yang, and ietf-rib-extension.yang tree diagram.</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode type="yangtree"><![CDATA[ | |||
module: ietf-routing | module: ietf-routing | |||
+--rw routing | +--rw routing | |||
+--rw router-id? yang:dotted-quad {router-id}? | +--rw router-id? yang:dotted-quad {router-id}? | |||
+--ro interfaces | +--ro interfaces | |||
| +--ro interface* if:interface-ref | | +--ro interface* if:interface-ref | |||
+--rw control-plane-protocols | +--rw control-plane-protocols | |||
| +--rw control-plane-protocol* [type name] | | +--rw control-plane-protocol* [type name] | |||
| +--rw type identityref | | +--rw type identityref | |||
| +--rw name string | | +--rw name string | |||
| +--rw description? string | | +--rw description? string | |||
| +--rw static-routes | | +--rw static-routes | |||
| +--rw v4ur:ipv4 | | +--rw v4ur:ipv4 | |||
| | +--rw v4ur:route* [destination-prefix] | | | +--rw v4ur:route* [destination-prefix] | |||
| | +--rw v4ur:destination-prefix inet:ipv4-prefix | | | +--rw v4ur:destination-prefix inet:ipv4-prefix | |||
| | +--rw v4ur:description? string | | | +--rw v4ur:description? string | |||
| | +--rw v4ur:next-hop | | | +--rw v4ur:next-hop | |||
| | +--rw (v4ur:next-hop-options) | | | +--rw (v4ur:next-hop-options) | |||
| | +--:(v4ur:simple-next-hop) | | | +--:(v4ur:simple-next-hop) | |||
| | | +--rw v4ur:outgoing-interface? | | | | +--rw v4ur:outgoing-interface? | |||
| | | | if:interface-ref | | | | | if:interface-ref | |||
| | | +--rw v4ur:next-hop-address? | | | | +--rw v4ur:next-hop-address? | |||
| | | | inet:ipv4-address | | | | | inet:ipv4-address | |||
| | | +--rw rib-ext:preference? uint32 | | | | +--rw rib-ext:preference? uint32 | |||
| | | +--rw rib-ext:tag? uint32 | | | | +--rw rib-ext:tag? uint32 | |||
| | +--:(v4ur:special-next-hop) | | | +--:(v4ur:special-next-hop) | |||
| | | +--rw v4ur:special-next-hop? enumeration | | | | +--rw v4ur:special-next-hop? enumeration | |||
| | +--:(v4ur:next-hop-list) | | | +--:(v4ur:next-hop-list) | |||
| | +--rw v4ur:next-hop-list | | | +--rw v4ur:next-hop-list | |||
| | +--rw v4ur:next-hop* [index] | | | +--rw v4ur:next-hop* [index] | |||
| | +--rw v4ur:index string | | | +--rw v4ur:index string | |||
| | +--rw v4ur:outgoing-interface? | | | +--rw v4ur:outgoing-interface? | |||
| | | if:interface-ref | | | | if:interface-ref | |||
| | +--rw v4ur:next-hop-address? | | | +--rw v4ur:next-hop-address? | |||
| | | inet:ipv4-address | | | | inet:ipv4-address | |||
| | +--rw rib-ext:preference? uint32 | | | +--rw rib-ext:preference? uint32 | |||
| | +--rw rib-ext:tag? uint32 | | | +--rw rib-ext:tag? uint32 | |||
| +--rw v6ur:ipv6 | | +--rw v6ur:ipv6 | |||
| +--rw v6ur:route* [destination-prefix] | | +--rw v6ur:route* [destination-prefix] | |||
| +--rw v6ur:destination-prefix inet:ipv6-prefix | | +--rw v6ur:destination-prefix inet:ipv6-prefix | |||
| +--rw v6ur:description? string | | +--rw v6ur:description? string | |||
| +--rw v6ur:next-hop | | +--rw v6ur:next-hop | |||
| +--rw (v6ur:next-hop-options) | | +--rw (v6ur:next-hop-options) | |||
| +--:(v6ur:simple-next-hop) | | +--:(v6ur:simple-next-hop) | |||
| | +--rw v6ur:outgoing-interface? | | | +--rw v6ur:outgoing-interface? | |||
| | | if:interface-ref | | | | if:interface-ref | |||
| | +--rw v6ur:next-hop-address? | | | +--rw v6ur:next-hop-address? | |||
| | | inet:ipv6-address | | | | inet:ipv6-address | |||
| | +--rw rib-ext:preference? uint32 | | | +--rw rib-ext:preference? uint32 | |||
| | +--rw rib-ext:tag? uint32 | | | +--rw rib-ext:tag? uint32 | |||
| +--:(v6ur:special-next-hop) | | +--:(v6ur:special-next-hop) | |||
| | +--rw v6ur:special-next-hop? enumeration | | | +--rw v6ur:special-next-hop? enumeration | |||
| +--:(v6ur:next-hop-list) | | +--:(v6ur:next-hop-list) | |||
| +--rw v6ur:next-hop-list | | +--rw v6ur:next-hop-list | |||
| +--rw v6ur:next-hop* [index] | | +--rw v6ur:next-hop* [index] | |||
| +--rw v6ur:index string | | +--rw v6ur:index string | |||
| +--rw v6ur:outgoing-interface? | | +--rw v6ur:outgoing-interface? | |||
| | if:interface-ref | | | if:interface-ref | |||
| +--rw v6ur:next-hop-address? | | +--rw v6ur:next-hop-address? | |||
| | inet:ipv6-address | | | inet:ipv6-address | |||
| +--rw rib-ext:preference? uint32 | | +--rw rib-ext:preference? uint32 | |||
| +--rw rib-ext:tag? uint32 | | +--rw rib-ext:tag? uint32 | |||
+--rw ribs | +--rw ribs | |||
+--rw rib* [name] | +--rw rib* [name] | |||
+--rw name string | +--rw name string | |||
+--rw address-family identityref | +--rw address-family identityref | |||
+--ro default-rib? boolean {multiple-ribs}? | +--ro default-rib? boolean {multiple-ribs}? | |||
+--ro routes | +--ro routes | |||
| +--ro route* [] | | +--ro route* [] | |||
| +--ro route-preference? route-preference | | +--ro route-preference? route-preference | |||
| +--ro next-hop | | +--ro next-hop | |||
| | +--ro (next-hop-options) | | | +--ro (next-hop-options) | |||
| | +--:(simple-next-hop) | | | +--:(simple-next-hop) | |||
| | | +--ro outgoing-interface? if:interface-ref | | | | +--ro outgoing-interface? | |||
| | | +--ro v4ur:next-hop-address? inet:ipv4-address | | | | | if:interface-ref | |||
| | | +--ro v6ur:next-hop-address? inet:ipv6-address | | | | +--ro v4ur:next-hop-address? | |||
| | | +--ro rib-ext:repair-path | | | | | inet:ipv4-address | |||
| | | +--ro rib-ext:outgoing-interface? | | | | +--ro v6ur:next-hop-address? | |||
| | | | if:interface-state-ref | | | | | inet:ipv6-address | |||
| | | +--ro rib-ext:next-hop-address? | | | | +--ro rib-ext:repair-path | |||
| | | | inet:ip-address-no-zone | | | | +--ro rib-ext:outgoing-interface? | |||
| | | +--ro rib-ext:metric? uint32 | | | | | if:interface-state-ref | |||
| | +--:(special-next-hop) | | | | +--ro rib-ext:next-hop-address? | |||
| | | +--ro special-next-hop? enumeration | | | | | inet:ip-address-no-zone | |||
| | +--:(next-hop-list) | | | | +--ro rib-ext:metric? uint32 | |||
| | +--ro next-hop-list | | | +--:(special-next-hop) | |||
| | +--ro next-hop* [] | | | | +--ro special-next-hop? enumeration | |||
| | +--ro outgoing-interface? | | | +--:(next-hop-list) | |||
| | | if:interface-ref | | | +--ro next-hop-list | |||
| | +--ro v4ur:address? | | | +--ro next-hop* [] | |||
| | | inet:ipv4-address | | | +--ro outgoing-interface? | |||
| | +--ro v6ur:address? | | | | if:interface-ref | |||
| | | inet:ipv6-address | | | +--ro v4ur:address? | |||
| | +--ro rib-ext:repair-path | | | | inet:ipv4-address | |||
| | +--ro rib-ext:outgoing-interface? | | | +--ro v6ur:address? | |||
| | | if:interface-state-ref | | | | inet:ipv6-address | |||
| | +--ro rib-ext:next-hop-address? | | | +--ro rib-ext:repair-path | |||
| | | inet:ip-address-no-zone | | | +--ro rib-ext:outgoing-interface? | |||
| | +--ro rib-ext:metric? uint32 | | | | if:interface-state-ref | |||
| +--ro source-protocol identityref | | | +--ro rib-ext:next-hop-address? | |||
| +--ro active? empty | | | | inet:ip-address-no-zone | |||
| +--ro last-updated? yang:date-and-time | | | +--ro rib-ext:metric? uint32 | |||
| +--ro v4ur:destination-prefix? inet:ipv4-prefix | | +--ro source-protocol identityref | |||
| +--ro v6ur:destination-prefix? inet:ipv6-prefix | | +--ro active? empty | |||
| +--ro rib-ext:metric? uint32 | | +--ro last-updated? yang:date-and-time | |||
| +--ro rib-ext:tag* uint32 | | +--ro v4ur:destination-prefix? inet:ipv4-prefix | |||
| +--ro rib-ext:application-tag? uint32 | | +--ro v6ur:destination-prefix? inet:ipv6-prefix | |||
+---x active-route | | +--ro rib-ext:metric? uint32 | |||
| +---w input | | +--ro rib-ext:tag* uint32 | |||
| | +---w v4ur:destination-address? inet:ipv4-address | | +--ro rib-ext:application-tag? uint32 | |||
| | +---w v6ur:destination-address? inet:ipv6-address | +---x active-route | |||
| +--ro output | | +---w input | |||
| +--ro route | | | +---w v4ur:destination-address? inet:ipv4-address | |||
| +--ro next-hop | | | +---w v6ur:destination-address? inet:ipv6-address | |||
| | +--ro (next-hop-options) | | +--ro output | |||
| | +--:(simple-next-hop) | | +--ro route | |||
| | | +--ro outgoing-interface? if:interface-ref | | +--ro next-hop | |||
| | | +--ro v4ur:next-hop-address? | | | +--ro (next-hop-options) | |||
| | | | inet:ipv4-address | | | +--:(simple-next-hop) | |||
| | | +--ro v6ur:next-hop-address? | | | | +--ro outgoing-interface? | |||
| | | | inet:ipv6-address | | | | | if:interface-ref | |||
| | +--:(special-next-hop) | | | | +--ro v4ur:next-hop-address? | |||
| | | +--ro special-next-hop? enumeration | | | | | inet:ipv4-address | |||
| | +--:(next-hop-list) | | | | +--ro v6ur:next-hop-address? | |||
| | +--ro next-hop-list | | | | | inet:ipv6-address | |||
| | +--ro next-hop* [] | | | +--:(special-next-hop) | |||
| | +--ro outgoing-interface? | | | | +--ro special-next-hop? enumeration | |||
| | | if:interface-ref | | | +--:(next-hop-list) | |||
| | +--ro v4ur:next-hop-address? | | | +--ro next-hop-list | |||
| | | inet:ipv4-address | | | +--ro next-hop* [] | |||
| | +--ro v6ur:next-hop-address? | | | +--ro outgoing-interface? | |||
| | | inet:ipv6-address | | | | if:interface-ref | |||
| +--ro source-protocol identityref | | | +--ro v4ur:next-hop-address? | |||
| +--ro active? empty | | | | inet:ipv4-address | |||
| +--ro last-updated? yang:date-and-time | | | +--ro v6ur:next-hop-address? | |||
| +--ro v4ur:destination-prefix? inet:ipv4-prefix | | | | inet:ipv6-address | |||
| +--ro v6ur:destination-prefix? inet:ipv6-prefix | | +--ro source-protocol identityref | |||
+--rw description? string | | +--ro active? empty | |||
+--ro rib-ext:statistics | | +--ro last-updated? yang:date-and-time | |||
+--ro rib-ext:total-routes? uint32 | | +--ro v4ur:destination-prefix? inet:ipv4-prefix | |||
+--ro rib-ext:total-active-routes? uint32 | | +--ro v6ur:destination-prefix? inet:ipv6-prefix | |||
+--ro rib-ext:total-route-memory? uint64 | +--rw description? string | |||
+--ro rib-ext:protocol-statistics* [] | +--ro rib-ext:statistics | |||
+--ro rib-ext:protocol? identityref | +--ro rib-ext:total-routes? uint32 | |||
+--ro rib-ext:routes? uint32 | +--ro rib-ext:total-active-routes? uint32 | |||
+--ro rib-ext:active-routes? uint32 | +--ro rib-ext:total-route-memory? uint64 | |||
+--ro rib-ext:route-memory? uint64 | +--ro rib-ext:protocol-statistics* [] | |||
+--ro rib-ext:protocol? identityref | ||||
]]></artwork> | +--ro rib-ext:routes? uint32 | |||
+--ro rib-ext:active-routes? uint32 | ||||
+--ro rib-ext:route-memory? uint64 | ||||
]]></sourcecode> | ||||
</section> | </section> | |||
<section anchor="examples" numbered="true" toc="default"> | <section anchor="examples" numbered="true" toc="default"> | |||
<name>ietf-rib-extension.yang example</name> | <name>ietf-rib-extension.yang example</name> | |||
<t>The following is an XML example using the RIB extension module | <t>The following is an XML example <xref target="W3C.REC-xml-20081126"/> u | |||
and RFC 8349.</t> | sing the RIB extension module and RFC 8349.</t> | |||
<t>Note: '\' line wrapping per <xref target="RFC8792" format="default"/>. | <aside><t>Note: '\' line wrapping per <xref target="RFC8792" format="defau | |||
</t> | lt"/>.</t></aside> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
<sourcecode type="xml"><![CDATA[ | ||||
<routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing"> | |||
<control-plane-protocols> | <control-plane-protocols> | |||
<control-plane-protocol> | <control-plane-protocol> | |||
<type>static</type> | <type>static</type> | |||
<name>static-routing-protocol</name> | <name>static-routing-protocol</name> | |||
<static-routes> | <static-routes> | |||
<ipv4 xmlns="urn:ietf:params:xml:ns:yang:\ | <ipv4 xmlns="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ipv4-unicast-routing"> | ietf-ipv4-unicast-routing"> | |||
<route> | <route> | |||
<destination-prefix>0.0.0.0/0</destination-prefix> | <destination-prefix>0.0.0.0/0</destination-prefix> | |||
skipping to change at line 1107 ¶ | skipping to change at line 978 ¶ | |||
</destination-prefix> | </destination-prefix> | |||
<next-hop> | <next-hop> | |||
<next-hop-address xmlns="urn:ietf:params:xml:ns:yang:\ | <next-hop-address xmlns="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ipv4-unicast-routing">192.0.2.2</next-hop-address> | ietf-ipv4-unicast-routing">192.0.2.2</next-hop-address> | |||
<repair-path xmlns="urn:ietf:params:xml:ns:yang:\ | <repair-path xmlns="urn:ietf:params:xml:ns:yang:\ | |||
ietf-rib-extension"> | ietf-rib-extension"> | |||
<next-hop-address>203.0.113.1</next-hop-address> | <next-hop-address>203.0.113.1</next-hop-address> | |||
<metric>200</metric> | <metric>200</metric> | |||
</repair-path> | </repair-path> | |||
</next-hop> | </next-hop> | |||
<route-preference>110</route-preference> | <route-preference>120</route-preference> | |||
<source-protocol xmlns:ospf="urn:ietf:params:xml:ns:yang:\ | <source-protocol xmlns:rip="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ospf">ospf:ospf</source-protocol> | ietf-rip">rip:rip</source-protocol> | |||
<last-updated>2015-10-24T18:02:45+02:00</last-updated> | <last-updated>2015-10-24T18:02:45+02:00</last-updated> | |||
</route> | </route> | |||
</routes> | </routes> | |||
</rib> | </rib> | |||
<rib> | <rib> | |||
<name>ipv6-primary</name> | <name>ipv6-primary</name> | |||
<address-family xmlns:v6ur="urn:ietf:params:xml:ns:yang:\ | <address-family xmlns:v6ur="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ipv6-unicast-routing">v6ur:ipv6-unicast</address-family> | ietf-ipv6-unicast-routing">v6ur:ipv6-unicast</address-family> | |||
<default-rib>true</default-rib> | <default-rib>true</default-rib> | |||
<routes> | <routes> | |||
skipping to change at line 1146 ¶ | skipping to change at line 1017 ¶ | |||
<next-hop> | <next-hop> | |||
<next-hop-address xmlns="urn:ietf:params:xml:ns:yang:\ | <next-hop-address xmlns="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ipv6-unicast-routing">2001:db8:aaaa::1111\ | ietf-ipv6-unicast-routing">2001:db8:aaaa::1111\ | |||
</next-hop-address> | </next-hop-address> | |||
<repair-path xmlns="urn:ietf:params:xml:ns:yang:\ | <repair-path xmlns="urn:ietf:params:xml:ns:yang:\ | |||
ietf-rib-extension"> | ietf-rib-extension"> | |||
<next-hop-address>2001:db8:cccc::2222</next-hop-address> | <next-hop-address>2001:db8:cccc::2222</next-hop-address> | |||
<metric>200</metric> | <metric>200</metric> | |||
</repair-path> | </repair-path> | |||
</next-hop> | </next-hop> | |||
<route-preference>110</route-preference> | <route-preference>120</route-preference> | |||
<source-protocol xmlns:ospf="urn:ietf:params:xml:ns:yang:\ | <source-protocol xmlns:rip="urn:ietf:params:xml:ns:yang:\ | |||
ietf-ospf">ospf:ospf</source-protocol> | ietf-rip">rip:rip</source-protocol> | |||
<last-updated>2015-10-24T18:02:45+02:00</last-updated> | <last-updated>2015-10-24T18:02:45+02:00</last-updated> | |||
</route> | </route> | |||
</routes> | </routes> | |||
</rib> | </rib> | |||
</ribs> | </ribs> | |||
</routing> | </routing> | |||
]]></sourcecode> | ||||
]]></artwork> | <t>The following is the same example using JSON format <xref target="RFC79 | |||
<t>The following is the same example using JSON format.</t> | 51"/>.</t> | |||
<artwork name="" type="" align="left" alt=""><![CDATA[ | <sourcecode type="json"><![CDATA[ | |||
{ | { | |||
"ietf-routing:routing": { | "ietf-routing:routing": { | |||
"control-plane-protocols": { | "control-plane-protocols": { | |||
"control-plane-protocol": [ | "control-plane-protocol": [ | |||
{ | { | |||
"type": "static", | "type": "static", | |||
"name": "static-routing-protocol", | "name": "static-routing-protocol", | |||
"static-routes": { | "static-routes": { | |||
"ietf-ipv4-unicast-routing:ipv4": { | "ietf-ipv4-unicast-routing:ipv4": { | |||
"route": [ | "route": [ | |||
skipping to change at line 1223 ¶ | skipping to change at line 1093 ¶ | |||
}, | }, | |||
{ | { | |||
"next-hop": { | "next-hop": { | |||
"ietf-rib-extension:repair-path": { | "ietf-rib-extension:repair-path": { | |||
"next-hop-address": "203.0.113.1", | "next-hop-address": "203.0.113.1", | |||
"metric": 200 | "metric": 200 | |||
}, | }, | |||
"ietf-ipv4-unicast-routing:next-hop-address": \ | "ietf-ipv4-unicast-routing:next-hop-address": \ | |||
"192.0.2.2" | "192.0.2.2" | |||
}, | }, | |||
"route-preference": 110, | "route-preference": 120, | |||
"source-protocol": "ietf-ospf:ospf", | "source-protocol": "ietf-rip:rip", | |||
"last-updated": "2015-10-24T18:02:45+02:00", | "last-updated": "2015-10-24T18:02:45+02:00", | |||
"ietf-ipv4-unicast-routing:destination-prefix": \ | "ietf-ipv4-unicast-routing:destination-prefix": \ | |||
"198.51.100.0/24" | "198.51.100.0/24" | |||
} | } | |||
] | ] | |||
} | } | |||
}, | }, | |||
{ | { | |||
"name": "ipv6-primary", | "name": "ipv6-primary", | |||
"address-family": "ietf-ipv6-unicast-routing:ipv6-unicast", | "address-family": "ietf-ipv6-unicast-routing:ipv6-unicast", | |||
skipping to change at line 1257 ¶ | skipping to change at line 1127 ¶ | |||
}, | }, | |||
{ | { | |||
"next-hop": { | "next-hop": { | |||
"ietf-rib-extension:repair-path": { | "ietf-rib-extension:repair-path": { | |||
"next-hop-address": "2001:db8:cccc::2222", | "next-hop-address": "2001:db8:cccc::2222", | |||
"metric": 200 | "metric": 200 | |||
}, | }, | |||
"ietf-ipv6-unicast-routing:next-hop-address": \ | "ietf-ipv6-unicast-routing:next-hop-address": \ | |||
"2001:db8:aaaa::1111" | "2001:db8:aaaa::1111" | |||
}, | }, | |||
"route-preference": 110, | "route-preference": 120, | |||
"source-protocol": "ietf-ospf:ospf", | "source-protocol": "ietf-rip:rip", | |||
"last-updated": "2015-10-24T18:02:45+02:00", | "last-updated": "2015-10-24T18:02:45+02:00", | |||
"ietf-ipv6-unicast-routing:destination-prefix": \ | "ietf-ipv6-unicast-routing:destination-prefix": \ | |||
"2001:db8:bbbb::/64" | "2001:db8:bbbb::/64" | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
] | ] | |||
} | } | |||
} | } | |||
} | } | |||
]]></sourcecode> | ||||
]]></artwork> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | <section numbered="false" toc="default"> | |||
<name>Acknowledgments</name> | <name>Acknowledgments</name> | |||
<t>The RFC text was produced using Marshall Rose's xml2rfc tool.</t> | ||||
<t> | <t> | |||
The authors wish to thank Les Ginsberg, Krishna Deevi, and Suyoung Yoon | The authors wish to thank <contact fullname="Les Ginsberg"/>, <contact f ullname="Krishna Deevi"/>, and <contact fullname="Suyoung Yoon"/> | |||
for their helpful comments and suggestions. | for their helpful comments and suggestions. | |||
</t> | </t> | |||
<t> | <t> | |||
The authors wish to thank Tom Petch, Rob Wilton, Chris Hopps, Martin | The authors wish to thank <contact fullname="Tom Petch"/>, <contact full | |||
Bjorklund, Jeffrey Zhang, Eric Vyncke, Lars Eggert, and Bo Wu for | name="Rob Wilton"/>, <contact fullname="Chris Hopps"/>, <contact fullname="Marti | |||
n Björklund"/>, <contact fullname="Jeffrey Zhang"/>, <contact fullname="Éric Vyn | ||||
cke"/>, <contact fullname="Lars Eggert"/>, and <contact fullname="Bo Wu"/> for | ||||
their reviews and comments. | their reviews and comments. | |||
</t> | </t> | |||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 109 change blocks. | ||||
726 lines changed or deleted | 528 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |