| 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. | ||||