rfc9825.original.xml | rfc9825.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<!DOCTYPE rfc [ | <!DOCTYPE rfc [ | |||
<!ENTITY RFC2119 PUBLIC '' | <!ENTITY nbsp " "> | |||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'> | <!ENTITY zwsp "​"> | |||
<!ENTITY RFC2328 PUBLIC '' | <!ENTITY nbhy "‑"> | |||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2328.xml'> | <!ENTITY wj "⁠"> | |||
<!ENTITY RFC3101 PUBLIC '' | ]> | |||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3101.xml'> | ||||
<!ENTITY RFC3688 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml'> | ||||
<!ENTITY RFC4252 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4252.xml'> | ||||
<!ENTITY RFC4271 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml'> | ||||
<!ENTITY RFC5130 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5130.xml'> | ||||
<!ENTITY RFC5340 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml'> | ||||
<!ENTITY RFC6020 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6020.xml'> | ||||
<!ENTITY RFC6241 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6241.xml'> | ||||
<!ENTITY RFC6991 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.6991.xml'> | ||||
<!ENTITY RFC7684 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7684.xml'> | ||||
<!ENTITY RFC7752 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7752.xml'> | ||||
<!ENTITY RFC7950 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.7950.xml'> | ||||
<!ENTITY RFC8040 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8040.xml'> | ||||
<!ENTITY RFC8174 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml'> | ||||
<!ENTITY RFC8340 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8340.xml'> | ||||
<!ENTITY RFC8349 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8349.xml'> | ||||
<!ENTITY RFC8341 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8341.xml'> | ||||
<!ENTITY RFC8362 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8362.xml'> | ||||
<!ENTITY RFC8446 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.8446.xml'> | ||||
<!ENTITY RFC9000 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9000.xml'> | ||||
<!ENTITY RFC9129 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9129.xml'> | ||||
<!ENTITY RFC9513 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9513.xml'> | ||||
<!ENTITY RFC9552 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9552.xml'> | ||||
<!ENTITY RFC9587 PUBLIC '' | ||||
'http://xml.resource.org/public/rfc/bibxml/reference.RFC.9587.xml'> | ||||
]> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="no" ?> | ||||
<?rfc toc="yes" ?> | ||||
<?rfc symrefs="yes" ?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc rfcedstyle="yes" ?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" ipr="trust200902" | |||
<?rfc subcompact="no" ?> | docName="draft-ietf-lsr-ospf-admin-tags-29" number="9825" consensus="true" upda | |||
tes="" obsoletes="" submissionType="IETF" version="3" symRefs="true" sortRefs="t | ||||
rue" xml:lang="en" tocInclude="true"> | ||||
<rfc category="std" ipr="trust200902" docName="draft-ietf-lsr-ospf-admin-tags-29 | <front> | |||
" | ||||
consensus="true" submissionType="IETF" version="3"> | <!-- [rfced] We note that most of the recently published RFCs containing | |||
YANG modules format their titles as "A YANG Data Model for...", for example: | ||||
RFC 9094 - A YANG Data Model for Wavelength Switched Optical Networks (WSONs) | ||||
RFC 9093 - A YANG Data Model for Layer 0 Types | ||||
RFC 9067 - A YANG Data Model for Routing Policy | ||||
Please consider whether the title of this document should be updated. | ||||
Current: | ||||
Extensions to OSPF for Advertising Prefix Administrative Tags | ||||
Perhaps: | ||||
A Yang Data Model for Extensions to OSPF for Advertising Prefix | ||||
Administrative Tags | ||||
--> | ||||
<title abbrev="OSPF Administrative Tags">Extensions to OSPF for Advertising | ||||
Prefix Administrative Tags</title> | ||||
<seriesInfo name="RFC" value="9825"/> | ||||
<front> | ||||
<title abbrev="OSPF Administrative Tags"> | ||||
Extensions to OSPF for Advertising Prefix Administrative Tags</title> | ||||
<author initials='A.' surname="Lindem" fullname='Acee Lindem' role="editor"> | <author initials='A.' surname="Lindem" fullname='Acee Lindem' role="editor"> | |||
<organization>LabN Consulting, L.L.C.</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> <region>NC</region> | <city>Cary</city> <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 initials='P.' surname="Psenak" fullname='Peter Psenak'> | <author initials='P.' surname="Psenak" fullname='Peter Psenak'> | |||
<organization>Cisco Systems</organization> | <organization>Cisco Systems</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Apollo Business Center</street> | <street>Apollo Business Center</street> | |||
<street>Mlynske nivy 43</street> | <street>Mlynske nivy 43</street> | |||
<city>Bratislava 821 09</city> | <city>Bratislava</city> | |||
<code>821 09</code> | ||||
<country>Slovakia</country> | <country>Slovakia</country> | |||
<code></code> | ||||
</postal> | </postal> | |||
<email>ppsenak@cisco.com</email> | <email>ppsenak@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | <author fullname="Yingzhen Qu" initials="Y" surname="Qu"> | |||
<organization>Futurewei Technologies</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></phone> | ||||
<email>yingzhen.ietf@gmail.com</email> | <email>yingzhen.ietf@gmail.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date/> | <date month="July" year="2025"/> | |||
<workgroup>Link State Routing (LSR) Working Group</workgroup> | <area>RTG</area> | |||
<workgroup>lsr</workgroup> | ||||
<!-- [rfced] Please insert any keywords (beyond those that appear in | ||||
the title) for use on https://www.rfc-editor.org/search. --> | ||||
<keyword>example</keyword> | ||||
<abstract> | <abstract> | |||
<t>It is useful for routers in OSPFv2 and OSPFv3 routing domains to be able t o | <t>It is useful for routers in OSPFv2 and OSPFv3 routing domains to be able t o | |||
associate tags with prefixes. | associate tags with prefixes. | |||
Previously, OSPFv2 and OSPFv3 were relegated to a single tag and only for Aut onomous | Previously, OSPFv2 and OSPFv3 were relegated to a single tag and only for Aut onomous | |||
System (AS) External and Not-So-Stubby-Area (NSSA) prefixes. | System (AS) External and Not-So-Stubby-Area (NSSA) prefixes. | |||
With the flexible encodings provided by OSPFv2 Prefix/Link Attribute Advertis ement | With the flexible encodings provided by OSPFv2 Prefix/Link Attribute Advertis ement | |||
and OSPFv3 Extended Link State Advertisements (LSAs), multiple administrative | and OSPFv3 Extended Link State Advertisements (LSAs), multiple administrative | |||
tags may be advertised for all types of prefixes. These administrative | tags may be advertised for all types of prefixes. These administrative | |||
tags can be used for many applications including route redistribution policy, selective | tags can be used for many applications including route redistribution policy, selective | |||
prefix prioritization, selective IP Fast-ReRoute (IPFRR) prefix protection, a nd many | prefix prioritization, selective IP Fast Reroute (IPFRR) prefix protection, a nd many | |||
others.</t> | others.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section> | |||
<name>Introduction</name> | ||||
<t> | <t> | |||
It is useful for routers in OSPFv2 <xref target="RFC2328"/> | It is useful for routers in OSPFv2 <xref target="RFC2328"/> | |||
and OSPFv3 <xref target="RFC5340"/> routing domains to be able to associate tags with prefixes. | and OSPFv3 <xref target="RFC5340"/> routing domains to be able to associate tags with prefixes. | |||
Previously, OSPFv2 and OSPFv3 were relegated to a single tag and only for Au tonomous System (AS) | Previously, OSPFv2 and OSPFv3 were relegated to a single tag and only for Au tonomous System (AS) | |||
External and Not-So-Stubby-Area (NSSA) prefixes. | External and Not-So-Stubby-Area (NSSA) prefixes. | |||
With the flexible encodings provided by OSPFv2 Prefix/Link Attribute Adverti sement | With the flexible encodings provided by OSPFv2 Prefix/Link Attribute Adverti sement | |||
(<xref target="RFC7684"/>) and OSPFv3 Extended Link State Advertisement (LSA ) (<xref target="RFC8362"/>), | <xref target="RFC7684"/> and OSPFv3 Extended Link State Advertisement (LSA) <xref target="RFC8362"/>, | |||
multiple administrative tags may be advertised for all types of prefixes. Th ese administrative | multiple administrative tags may be advertised for all types of prefixes. Th ese administrative | |||
tags can be used in many applications including (but not limited to): | tags can be used in many applications including (but not limited to): | |||
</t> | </t> | |||
<ol spacing="normal"> | <ol spacing="normal"> | |||
<li>Controlling which routes are redistributed into other protocols for | <li>Controlling which routes are redistributed into other protocols for | |||
re-advertisement.</li> | re-advertisement.</li> | |||
<li>Prioritizing selected prefixes for faster convergence and installation in the | <li>Prioritizing selected prefixes for faster convergence and installation in the | |||
forwarding plane.</li> | forwarding plane.</li> | |||
<li>Identifying selected prefixes for Loop-Free Alternative (LFA) protection. </li> | <li>Identifying selected prefixes for Loop-Free Alternative (LFA) protection. </li> | |||
</ol> | </ol> | |||
<t>Throughout this document, OSPF is used when the text applies to both | <t>Throughout this document, "OSPF" is used when the text applies to both | |||
OSPFv2 and OSPFv3. OSPFv2 or OSPFv3 is used when the text is | OSPFv2 and OSPFv3. "OSPFv2" or "OSPFv3" is used when the text is | |||
specific to one version of the OSPF protocol.</t> | specific to one version of the OSPF protocol.</t> | |||
<t>The definition of the 64-bit tag was considered but discard given that | <t>The definition of the 64-bit tag was considered but discarded, given that | |||
there is no strong requirement or use case.</t> | there is no strong requirement or use case.</t> | |||
<t>The IS-IS protocol supports a similar mechanism that is described in RFC 51 30 | <t>The IS-IS protocol supports a similar mechanism that is described in | |||
<xref target="RFC5130"/>.</t> | <xref target="RFC5130"/>.</t> | |||
<section title="Requirements Language"> | ||||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL | <section> | |||
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", | <name>Requirements Language</name> | |||
"MAY", and "OPTIONAL" in this document are to be interpreted as | <t> | |||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
when, and only when, they appear in all capitals, as shown here.</t> | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | ||||
RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="UINT32-TAG" title="Administrative Tag Sub-TLV"> | <section anchor="UINT32-TAG"> | |||
<t>This document creates a new Administrative Tag Sub-TLV for OSPFv2 and | <name>Administrative Tag Sub-TLV</name> | |||
OSPFv3. This Sub-TLV specifies one or | <t>This document creates a new Administrative Tag sub-TLV for OSPFv2 and | |||
OSPFv3. This sub-TLV specifies one or | ||||
more 32-bit unsigned integers that may be associated with an | more 32-bit unsigned integers that may be associated with an | |||
OSPF advertised prefix. The precise usage of these tags is beyond | OSPF advertised prefix. The precise usage of these tags is beyond | |||
the scope of this document.</t> | the scope of this document.</t> | |||
<t> | <t> | |||
The format of the Administrative Tag TLV is as follows: | The format of the Administrative Tag TLV is as follows: | |||
</t> | </t> | |||
<figure title="Administrative Tag Sub-TLV"> | <figure> | |||
<artwork> | <name>Administrative Tag Sub-TLV</name> | |||
<artwork><![CDATA[ | ||||
0 1 2 3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | | | Type | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| First Administrative Tag | | | First Administrative Tag | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| o | | | o | | |||
o | o | |||
| o | | | o | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Last Administrative Tag | | | Last Administrative Tag | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
]]></artwork> | ||||
</figure> | ||||
Type A 16-bit field set to: | <dl spacing="normal" newline="false"> | |||
TBD1: "OSPFv2 Extended Prefix TLV Sub-TLV" Registry | <dt>Type:</dt><dd><t>A 16-bit field set to:</t> | |||
TBD2: "OSPFv3 Extended-LSA Sub-TLV" Registry | <dl spacing="normal" newline="false"> | |||
TBD3: "OSPFv3 SRv6 Locator LSA Sub-TLVs" Registry | <dt>13:</dt><dd>"OSPFv2 Extended Prefix TLV Sub-TLVs" registry</dd> | |||
<dt>39:</dt><dd>"OSPFv3 Extended-LSA Sub-TLVs" registry</dd> | ||||
Length A 16-bit field that indicates the length of the value | <dt>6:</dt><dd>"OSPFv3 SRv6 Locator LSA Sub-TLVs" registry</dd> | |||
portion in octets and MUST be a multiple of 4 octets | </dl> | |||
dependent on the number of administrative tags | </dd> | |||
advertised. At least one administrative tag MUST be | <dt>Length:</dt><dd>A 16-bit field that indicates the length of the value | |||
advertised. | portion in octets and <bcp14>MUST</bcp14> be a multiple of 4 octets | |||
dependent on the number of administrative tags | ||||
advertised. At least one administrative tag <bcp14>MUST</bcp14> be | ||||
advertised.</dd> | ||||
<dt>Value:</dt><dd>A variable length list of one or more administrative | ||||
tags.</dd> | ||||
</dl> | ||||
Value A variable length list of one or more administrative | ||||
tags. | ||||
</artwork> | ||||
</figure> | ||||
<t> | <t> | |||
This sub-TLV will carry one or more 32-bit unsigned integer values | This sub-TLV will carry one or more 32-bit unsigned integer values | |||
that will be used as administrative tags. If the length is 0 or not | that will be used as administrative tags. If the length is 0 or not | |||
a multiple of 4 octets, the sub-TLV MUST be ignored and the reception | a multiple of 4 octets, the sub-TLV <bcp14>MUST</bcp14> be ignored, and the | |||
SHOULD be logged for further analysis (subject to rate-limiting). | reception | |||
<bcp14>SHOULD</bcp14> be logged for further analysis (subject to rate-limiti | ||||
ng). | ||||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="APPLICABILTY" title="Administrative Tag Applicability"> | <section anchor="APPLICABILTY"> | |||
<name>Administrative Tag Applicability</name> | ||||
<t> | <t> | |||
The administrative tag TLV specified herein will be valid as a sub-TLV of | The administrative tag TLV specified herein will be valid as a sub-TLV of | |||
the following TLVs specified in <xref target="RFC7684"/>: | the following TLVs specified in <xref target="RFC7684"/>: | |||
</t> | </t> | |||
<ol spacing="normal"> | <ul spacing="normal"> | |||
<li>Extended Prefix TLV advertised in the OSPFv2 Extended Prefix LSA</li> | ||||
</ol> | <!-- [rfced] FYI - We updated "OSPFv2 Extended Prefix LSA" to "OSPFv2 Extended | |||
Prefix Opaque LSA" to match RFC 7684. Please let us know of any objections. | ||||
--> | ||||
<li>Extended Prefix TLV advertised in the OSPFv2 Extended Prefix Opaque LSA< | ||||
/li> | ||||
</ul> | ||||
<t> | <t> | |||
The administrative tag TLV specified herein will be valid as a sub-TLV of | The administrative tag TLV specified herein will be valid as a sub-TLV of | |||
the following TLVs specified in <xref target="RFC8362"/>: | the following TLVs specified in <xref target="RFC8362"/>: | |||
</t> | </t> | |||
<ol spacing="normal"> | <ul spacing="normal"> | |||
<li>Inter-Area-Prefix TLV advertised in the E-Inter-Area-Prefix-LSA</li> | <li>Inter-Area-Prefix TLV advertised in the E-Inter-Area-Prefix-LSA</li> | |||
<li>Intra-Area-Prefix TLV advertised in the E-Intra-Area-Prefix-LSA.</li> | <li>Intra-Area-Prefix TLV advertised in the E-Intra-Area-Prefix-LSA</li> | |||
<li>External-Prefix TLV advertised in the E-AS-External-LSA and the E-NSSA-L SA</li> | <li>External-Prefix TLV advertised in the E-AS-External-LSA and the E-NSSA-L SA</li> | |||
</ol> | </ul> | |||
<t> | <t> | |||
The administrative tag TLV specified herein will be valid as a sub-TLV of | The administrative tag TLV specified herein will be valid as a sub-TLV of | |||
the following TLVs specified in <xref target="RFC9513"/>: | the following TLVs specified in <xref target="RFC9513"/>: | |||
</t> | </t> | |||
<ol spacing="normal"> | <ul spacing="normal"> | |||
<li>SRv6 Locator TLV advertised in the SRv6 Locator LSA</li> | <li>SRv6 Locator TLV advertised in the SRv6 Locator LSA</li> | |||
</ol> | </ul> | |||
</section> | </section> | |||
<section anchor="OSPF-OPERATION" title="Protocol Operation"> | <section anchor="OSPF-OPERATION"> | |||
<t>An OSPF router supporting this specification MUST be able to advertise and | <name>Protocol Operation</name> | |||
interpret | <t>An OSPF router supporting this specification <bcp14>MUST</bcp14> be able to | |||
at least one tag for all type of prefixes. An OSPF router supporting this | advertise and interpret | |||
specification MAY be able to advertise prefixes with multiple tags and propaga | at least one tag for all types of prefixes. An OSPF router supporting this | |||
te prefixes | specification <bcp14>MAY</bcp14> be able to advertise prefixes with multiple t | |||
ags and propagate prefixes | ||||
with multiple tags between areas. The | with multiple tags between areas. The | |||
maximum tags that an implementation supports is a local matter depending upon supported | maximum tags that an implementation supports is a local matter depending upon supported | |||
applications using prefix tags. Depending on the application, the number of t ags supported | applications using prefix tags. Depending on the application, the number of t ags supported | |||
by the OSPF routers in the OSPF routing domain may limit deployment of that ap plication. | by the OSPF routers in the OSPF routing domain may limit the deployment of tha t application. | |||
</t> | </t> | |||
<t> | <t> | |||
When tags are advertised for AS External or NSSA LSA prefixes, the existing tag in | When tags are advertised for AS External or NSSA LSA prefixes, the existing tag in | |||
the OSPFv2 and OSPFv3 AS-External-LSA and NSSA-LSA encodings MUST be utilize | the OSPFv2 and OSPFv3 AS-External-LSA and NSSA-LSA encodings <bcp14>MUST</bc | |||
d for | p14> be utilized for | |||
the first tag. Additional tags MAY be advertised using the Administrative Ta | the first tag. Additional tags <bcp14>MAY</bcp14> be advertised using the Ad | |||
g | ministrative Tag | |||
Sub-TLV specified in this document. This will facilitate backward compatibil | sub-TLV specified in this document. This will facilitate backward compatibil | |||
ity with | ity with | |||
implementations that do not support this specification. | implementations that do not support this specification. | |||
</t> | </t> | |||
<t> | <t> | |||
An OSPF router supporting this specification SHOULD propagate administrative | An OSPF router supporting this specification <bcp14>SHOULD</bcp14> propagate | |||
tags | administrative tags | |||
when acting as an Area Border Router and originating summary advertisements | when acting as an Area Border Router (ABR) and when originating summary adve | |||
into other | rtisements into other | |||
areas (unless inhibited by local policy <xref target="MANAGE"/>). Similarly, | areas (unless inhibited by local policy (<xref target="MANAGE"/>)). Similarl | |||
an OSPF | y, an OSPF | |||
router supporting this specification and acting as an ABR for a Not-So-Stubb | router supporting this specification and acting as an ABR for a NSSA | |||
y Area (NSSA) | <bcp14>SHOULD</bcp14> propagate tags when translating NSSA routes to AS Exte | |||
SHOULD propagate tags when translating NSSA routes to AS External | rnal | |||
advertisements <xref target="RFC3101"/> (also subject to local | advertisements <xref target="RFC3101"/> (also subject to local | |||
policy <xref target="MANAGE"/>). | policy (<xref target="MANAGE"/>)). | |||
</t> | </t> | |||
<t> | <t> | |||
There is no implied meaning to the ordering of the tags that | There is no implied meaning to the ordering of the tags that | |||
indicates a certain operation or set of operations need be performed | indicates a certain operation or set of operations need to be performed | |||
based on the order of the tags. Each tag SHOULD be treated as an | based on the order of the tags. Each tag <bcp14>SHOULD</bcp14> be treated a | |||
autonomous identifier that MAY be used in policy to perform a policy | s an | |||
action. Whether or not tag A precedes or succeeds tag B SHOULD NOT | autonomous identifier that <bcp14>MAY</bcp14> be used in policy to perform a | |||
change the meaning of the tags | policy | |||
The number of tags supported by an Area Border Router (ABR) MAY limit the nu | action. Whether or not tag A precedes or succeeds, tag B <bcp14>SHOULD NOT< | |||
mber | /bcp14> | |||
change the meaning of the tags. | ||||
The number of tags supported by an ABR <bcp14>MAY</bcp14> limit the number | ||||
of tags that are propagated. When propagating multiple tags between areas as | of tags that are propagated. When propagating multiple tags between areas as | |||
previously described, the order of the tags MUST be preserved so | previously described, the order of the tags <bcp14>MUST</bcp14> be preserved so | |||
that implementations supporting fewer tags will have a consistent view | that implementations supporting fewer tags will have a consistent view | |||
across areas. | across areas. | |||
</t> | </t> | |||
<t> | <t> | |||
For configured area ranges, NSSA ranges, and configured aggregation of redis tributed | For configured area ranges, NSSA ranges, and configured aggregation of redis tributed | |||
routes, tags from component routes SHOULD NOT be propagated to the summary. | routes, tags from component routes <bcp14>SHOULD NOT</bcp14> be propagated t | |||
Implementations | o the summary. Implementations | |||
SHOULD provide a mechanism to configure multiple tags for area ranges, NSSA | <bcp14>SHOULD</bcp14> provide a mechanism to configure multiple tags for are | |||
ranges, and | a ranges, NSSA ranges, and | |||
redistributed route summaries. | redistributed route summaries. | |||
</t> | </t> | |||
<section anchor="ECMP" title="Equal-Cost Multipath Applicability"> | <section anchor="ECMP"> | |||
<name>Equal-Cost Multipath Applicability</name> | ||||
<t> | <t> | |||
When multiple LSAs contribute to an OSPF route, it is possible that these | When multiple LSAs contribute to an OSPF route, it is possible that these | |||
LSAs will all have different tags. In this situation, the OSPF ABR propagati ng the | LSAs will all have different tags. In this situation, the OSPF ABR propagati ng the | |||
route to other areas with inter-area LSAs MUST associate | route to other areas with inter-area LSAs <bcp14>MUST</bcp14> associate | |||
the tags from one of the LSAs contributing a path and, if the implementation supports | the tags from one of the LSAs contributing a path and, if the implementation supports | |||
multiple tags, MAY associate tags from multiple contributing LSAs up to the | multiple tags, <bcp14>MAY</bcp14> associate tags from multiple contributing | |||
maximum | LSAs up to the maximum | |||
number of tags supported. It is RECOMMENDED that tags from LSAs are added to | number of tags supported. It is <bcp14>RECOMMENDED</bcp14> that tags from LS | |||
the path | As are added to the path | |||
in ascending order of LSA originator Router-ID. | in ascending order of the LSA originator Router-ID. | |||
</t> | </t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="BGP-LS" title="BGP-LS Advertisement"> | <section anchor="BGP-LS"> | |||
<name>BGP-LS Advertisement</name> | ||||
<t> | <t> | |||
BGP-LS <xref target="RFC9552"/> introduced the support for advertising | Border Gateway Protocol - Link State (BGP-LS) <xref target="RFC9552"/> intro duced the support for advertising | |||
administrative tags associated with prefixes using the BGP-LS IGP Rou te | administrative tags associated with prefixes using the BGP-LS IGP Rou te | |||
Tag TLV (TLV 1153). This BGP-LS TLV is used to advertise the OSPF | Tag TLV (TLV 1153). This BGP-LS TLV is used to advertise the OSPF | |||
Administrative Tags specified in this document. | Administrative Tags specified in this document. | |||
</t> | </t> | |||
</section> | </section> | |||
<section anchor="MANAGE" title="Management Considerations"> | <section anchor="MANAGE"> | |||
<name>Management Considerations</name> | ||||
<t> | <t> | |||
Implementations MAY include configuration of policies to modify the advertis | Implementations <bcp14>MAY</bcp14> include configuration of policies to modi | |||
ement of | fy the advertisement of | |||
tags for redistributed prefixes. Implementations MAY also include configurat | tags for redistributed prefixes. Implementations <bcp14>MAY</bcp14> also inc | |||
ion of | lude configuration of | |||
policies to modify the propagation of admin-tags between areas | policies to modify the propagation of admin-tags between areas | |||
(OSPFv2 Extended Prefix LSAs, OSPFv3 E-Inter-Area-Prefix-LSAs, and | (OSPFv2 Extended Prefix Opaque LSAs, OSPFv3 E-Inter-Area-Prefix-LSAs, and | |||
translated OSPFv3 E-AS-External-LSAs). | translated OSPFv3 E-AS-External-LSAs). | |||
However, the default behavior SHOULD be to advertise or propagate | However, the default behavior <bcp14>SHOULD</bcp14> be to advertise or propa gate | |||
the lesser number of all the tags associated with the prefix or the maximum number of | the lesser number of all the tags associated with the prefix or the maximum number of | |||
tags supported by the implementation. | tags supported by the implementation. | |||
</t> | </t> | |||
<t> | <t> | |||
Both the support of this specification and the number of tags supported | Both the support of this specification and the number of tags supported | |||
by OSPF routers within an OSPF routing domain will limit the usefulness and | by OSPF routers within an OSPF routing domain will limit the usefulness and | |||
deployment of applications utilizing tags. | deployment of applications utilizing tags. | |||
</t> | </t> | |||
</section> | </section> | |||
<section title="YANG Data Model"> | <section> | |||
<name>YANG Data Model</name> | ||||
<t> | <t> | |||
YANG <xref target="RFC7950"></xref> is a data definition language | YANG <xref target="RFC7950"></xref> is a data definition language | |||
used to define the contents of a conceptual data store | used to define the contents of a conceptual data store | |||
that allows networked devices to be managed using NETCONF | that allows networked devices to be managed using Network Configuration Prot ocol (NETCONF) | |||
<xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | <xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
This section defines a YANG data model that can be used to configure | This section defines a YANG data model that can be used to configure | |||
and manage the prefix administrative tags defined in this document, | and manage the prefix administrative tags defined in this document, | |||
which augments the OSPF YANG data model <xref target="RFC9129"/>, | which augments the OSPF YANG data model <xref target="RFC9129"/>, | |||
the OSPFv3 Extended LSA YANG data model <xref target="RFC9587"/>, | the OSPFv3 Extended LSA YANG data model <xref target="RFC9587"/>, | |||
and the YANG Data Model for Routing Management <xref target="RFC8349"/>. | and the Routing Management YANG data model <xref target="RFC8349"/>. | |||
Additionally, the YANG data models defined in <xref target="RFC6991"/> | Additionally, the YANG data models defined in <xref target="RFC6991"/> | |||
is imported. | are imported. | |||
</t> | </t> | |||
<section title="Tree for the YANG Data Model"> | <section> | |||
<t>This document uses the graphical representation of data models per <xref | <name>Tree for the YANG Data Model</name> | |||
target="RFC8340"/>.</t> | <t>This document uses the graphical representation of data models per <xref | |||
<t>The following show the tree diagram of the module:</t> | target="RFC8340"/>. NOTE: '\' line wrapping is per <xref target="RFC8792"/>.</t> | |||
<artwork align="left" name="" type="" alt=""><![CDATA[ | <t>The following shows the tree diagram of the module:</t> | |||
<!-- [rfced] FYI - We have added line breaks to the YANG tree | ||||
diagram as well as a note and reference to RFC 8792 for the '\' | ||||
line wrapping. Please review. | ||||
--> | ||||
<sourcecode type="yangtree"><![CDATA[ | ||||
module: ietf-ospf-admin-tags | module: ietf-ospf-admin-tags | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospf:ranges/ospf:range: | /ospf:ranges/ospf:range: | |||
+--rw admin-tags | +--rw admin-tags | |||
+--rw admin-tag* uint32 | +--rw admin-tag* uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospf:interfaces/ospf:interface: | /ospf:interfaces/ospf:interface: | |||
+--rw local-prefix-admin-tags | +--rw local-prefix-admin-tags | |||
+--rw default-admin-tag* uint32 | +--rw default-admin-tag* uint32 | |||
+--rw specific-prefix-admin-tag* [prefix] | +--rw specific-prefix-admin-tag* [prefix] | |||
+--rw prefix inet:ip-prefix | +--rw prefix inet:ip-prefix | |||
+--rw admin-tag* uint32 | +--rw admin-tag* uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:local-rib | /rt:control-plane-protocol/ospf:ospf/ospf:local-rib | |||
/ospf:route/ospf:next-hops/ospf:next-hop: | /ospf:route/ospf:next-hops/ospf:next-hop: | |||
+--ro admin-tag* uint32 | +--ro admin-tag* uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospf:interfaces/ospf:interface/ospf:database | /ospf:interfaces/ospf:interface/ospf:database | |||
/ospf:link-scope-lsa-type/ospf:link-scope-lsas | /ospf:link-scope-lsa-type/ospf:link-scope-lsas | |||
/ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | /ospf:link-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
/ospf:body/ospf:opaque/ospf:extended-prefix-opaque | /ospf:body/ospf:opaque/ospf:extended-prefix-opaque | |||
/ospf:extended-prefix-tlv: | /ospf:extended-prefix-tlv: | |||
+--ro prefix-admin-tag-sub-tlv | +--ro prefix-admin-tag-sub-tlv | |||
+--ro admin-tag* uint32 | +--ro admin-tag* uint32 | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-\ | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | lsas | |||
/ospf:body/ospf:opaque/ospf:extended-prefix-opaque | /ospf:area-scope-lsa/ospf:version/ospf:ospfv2/ospf:ospfv2 | |||
/ospf:extended-prefix-tlv: | /ospf:body/ospf:opaque/ospf:extended-prefix-opaque | |||
+--ro prefix-admin-tag-sub-tlv | /ospf:extended-prefix-tlv: | |||
+--ro admin-tag* uint32 | +--ro prefix-admin-tag-sub-tlv | |||
augment /rt:routing/rt:control-plane-protocols | +--ro admin-tag* uint32 | |||
/rt:control-plane-protocol/ospf:ospf/ospf:database | augment /rt:routing/rt:control-plane-protocols | |||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | /rt:control-plane-protocol/ospf:ospf/ospf:database | |||
/ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-\ | |||
/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | lsa | |||
+--ro prefix-admin-tag-sub-tlv | /ospf:version/ospf:ospfv2/ospf:ospfv2/ospf:body/ospf:opaque | |||
+--ro admin-tag* uint32 | /ospf:extended-prefix-opaque/ospf:extended-prefix-tlv: | |||
augment /rt:routing/rt:control-plane-protocols | +--ro prefix-admin-tag-sub-tlv | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | +--ro admin-tag* uint32 | |||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | augment /rt:routing/rt:control-plane-protocols | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospf:body/ospfv3-e-lsa:e-inter-area-prefix | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-\ | |||
/ospfv3-e-lsa:e-inter-prefix-tlvs | lsas | |||
/ospfv3-e-lsa:inter-prefix-tlv: | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | |||
+--ro prefix-admin-tag-sub-tlv | /ospf:body/ospfv3-e-lsa:e-inter-area-prefix | |||
+--ro admin-tag* uint32 | /ospfv3-e-lsa:e-inter-prefix-tlvs | |||
augment /rt:routing/rt:control-plane-protocols | /ospfv3-e-lsa:inter-prefix-tlv: | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | +--ro prefix-admin-tag-sub-tlv | |||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | +--ro admin-tag* uint32 | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | augment /rt:routing/rt:control-plane-protocols | |||
/ospf:body/ospfv3-e-lsa:e-intra-area-prefix | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
/ospfv3-e-lsa:e-intra-prefix-tlvs | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-\ | |||
/ospfv3-e-lsa:intra-prefix-tlv: | lsas | |||
+--ro prefix-admin-tag-sub-tlv | /ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | |||
+--ro admin-tag* uint32 | /ospf:body/ospfv3-e-lsa:e-intra-area-prefix | |||
augment /rt:routing/rt:control-plane-protocols | /ospfv3-e-lsa:e-intra-prefix-tlvs | |||
/rt:control-plane-protocol/ospf:ospf/ospf:database | /ospfv3-e-lsa:intra-prefix-tlv: | |||
/ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-lsa | +--ro prefix-admin-tag-sub-tlv | |||
/ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body | +--ro admin-tag* uint32 | |||
/ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs | augment /rt:routing/rt:control-plane-protocols | |||
/ospfv3-e-lsa:external-prefix-tlv: | /rt:control-plane-protocol/ospf:ospf/ospf:database | |||
+--ro prefix-admin-tag-sub-tlv | /ospf:as-scope-lsa-type/ospf:as-scope-lsas/ospf:as-scope-\ | |||
+--ro admin-tag* uint32 | lsa | |||
augment /rt:routing/rt:control-plane-protocols | /ospf:version/ospf:ospfv3/ospf:ospfv3/ospf:body | |||
/rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | /ospfv3-e-lsa:e-as-external/ospfv3-e-lsa:e-external-tlvs | |||
/ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-lsas | /ospfv3-e-lsa:external-prefix-tlv: | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | +--ro prefix-admin-tag-sub-tlv | |||
/ospf:body/ospfv3-e-lsa:e-nssa/ospfv3-e-lsa:e-external-tlvs | +--ro admin-tag* uint32 | |||
/ospfv3-e-lsa:external-prefix-tlv: | augment /rt:routing/rt:control-plane-protocols | |||
+--ro prefix-admin-tag-sub-tlv | /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area | |||
+--ro admin-tag* uint32 | /ospf:database/ospf:area-scope-lsa-type/ospf:area-scope-\ | |||
]]></artwork> | lsas | |||
/ospf:area-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3 | ||||
/ospf:body/ospfv3-e-lsa:e-nssa/ospfv3-e-lsa:e-external-tlvs | ||||
/ospfv3-e-lsa:external-prefix-tlv: | ||||
+--ro prefix-admin-tag-sub-tlv | ||||
+--ro admin-tag* uint32]]></sourcecode> | ||||
</section> | </section> | |||
<section title="YANG Data Model for OSPF Prefix Administrative Tags"> | <section> | |||
<!--[rfced] FYI - As the RFC 2119 and RFC 8174 keywords are not used | ||||
within the YANG module, we have removed the keywords boilerplate | ||||
paragraph from the module. | ||||
--> | ||||
<!--[rfced] Note that the YANG module has been updated per the | ||||
formatting option of pyang. Please let us know of any concerns. | ||||
--> | ||||
<name>YANG Data Model for OSPF Prefix Administrative Tags</name> | ||||
<t>The following is the YANG module:</t> | <t>The following is the YANG module:</t> | |||
<sourcecode name="ietf-ospf-admin-tags@2025-02-18.yang" type="" markers="true">< ![CDATA[ | <sourcecode name="ietf-ospf-admin-tags@2025-07-17.yang" type="yang" markers="tru e"><![CDATA[ | |||
module ietf-ospf-admin-tags { | module ietf-ospf-admin-tags { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags"; | namespace "urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags"; | |||
prefix ospf-admin-tags; | prefix ospf-admin-tags; | |||
import ietf-routing { | import ietf-routing { | |||
prefix rt; | prefix rt; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing | "RFC 8349: A YANG Data Model for Routing | |||
Management (NMDA Version)"; | Management (NMDA Version)"; | |||
skipping to change at line 467 ¶ | skipping to change at line 480 ¶ | |||
Author: Yingzhen Qu | Author: Yingzhen Qu | |||
<mailto:yingzhen.ietf@gmail.com> | <mailto:yingzhen.ietf@gmail.com> | |||
Author: Acee Lindem | Author: Acee Lindem | |||
<mailto:acee.ietf@gmail.com> | <mailto:acee.ietf@gmail.com> | |||
Author: Peter Psenak | Author: Peter Psenak | |||
<mailto:ppsenak@cisco.com>"; | <mailto:ppsenak@cisco.com>"; | |||
description | description | |||
"This YANG module defines the configuration | "This YANG module defines the configuration | |||
and operational state for OSPF administrative tags. | and operational state for OSPF administrative tags. | |||
This YANG model conforms to the Network Management | This YANG data model conforms to the Network Management | |||
Datastore Architecture (NMDA) as described in RFC 8342. | Datastore Architecture (NMDA) as described in RFC 8342. | |||
Copyright (c) 2025 IETF Trust and the persons identified as | Copyright (c) 2025 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 9825; | |||
see the RFC itself for full legal notices. | see the RFC itself for full legal notices."; | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | ||||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | ||||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | ||||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | ||||
they appear in all capitals, as shown here."; | ||||
reference | reference | |||
"RFC XXXX: Extensions to OSPF for Advertising Prefix | "RFC 9825: Extensions to OSPF for Advertising Prefix | |||
Administrative Tags."; | Administrative Tags."; | |||
revision 2025-02-18 { | revision 2025-07-17 { | |||
description | description | |||
"Initial revision."; | "Initial revision."; | |||
reference | reference | |||
"RFC XXXX: Extensions to OSPF for Advertising Prefix | "RFC 9825: Extensions to OSPF for Advertising Prefix | |||
Administrative Tags."; | Administrative Tags."; | |||
} | } | |||
grouping prefix-admin-tag-sub-tlv { | grouping prefix-admin-tag-sub-tlv { | |||
description | description | |||
"Prefix Administrative Tag sub-TLVs."; | "Prefix Administrative Tag sub-TLVs."; | |||
container prefix-admin-tag-sub-tlv { | container prefix-admin-tag-sub-tlv { | |||
config false; | config false; | |||
description | description | |||
"Prefix admin tag sub-TLV."; | "Prefix admin tag sub-TLV."; | |||
leaf-list admin-tag { | leaf-list admin-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative tags."; | "Administrative tags."; | |||
} | } | |||
} | } | |||
} | } | |||
/* Configuration */ | /* Configuration */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols" | |||
+ "rt:control-plane-protocol/ospf:ospf/" | + "/rt:control-plane-protocol/ospf:ospf" | |||
+ "ospf:areas/ospf:area/ospf:ranges/ospf:range" { | + "/ospf:areas/ospf:area/ospf:ranges/ospf:range" { | |||
when "derived-from-or-self(../../../../../" | when "derived-from-or-self(../../../../.." | |||
+ "rt:type, 'ospf:ospf')" { | + "/rt:type, 'ospf:ospf')" { | |||
description | description | |||
"This augments the OSPF routing protocol area range | "This augments the OSPF routing protocol area range | |||
configuration."; | configuration."; | |||
} | } | |||
description | description | |||
"This augments the OSPF protocol area range configuration | "This augments the OSPF protocol area range configuration | |||
with administrative tags. The configured tags will be | with administrative tags. The configured tags will be | |||
advertised with summary prefix when it is active."; | advertised with summary prefix when it is active."; | |||
container admin-tags { | container admin-tags { | |||
when "../ospf:advertise = 'true'"; | when "../ospf:advertise = 'true'"; | |||
leaf-list admin-tag { | leaf-list admin-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative tags."; | "Administrative tags."; | |||
} | } | |||
description | description | |||
"OSPF prefix administrative tags."; | "OSPF prefix administrative tags."; | |||
} | } | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols" | |||
+ "rt:control-plane-protocol/ospf:ospf/" | + "/rt:control-plane-protocol/ospf:ospf" | |||
+ "ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | + "/ospf:areas/ospf:area/ospf:interfaces/ospf:interface" { | |||
when "derived-from-or-self(../../../../../" | when "derived-from-or-self(../../../../.." | |||
+ "rt:type, 'ospf:ospf')" { | + "/rt:type, 'ospf:ospf')" { | |||
description | description | |||
"This augments the OSPF routing protocol interface | "This augments the OSPF routing protocol interface | |||
configuration."; | configuration."; | |||
} | } | |||
description | description | |||
"This augments the OSPF protocol interface configuration | "This augments the OSPF protocol interface configuration | |||
with Administrative Tags. The configured tags will be | with Administrative Tags. The configured tags will be | |||
advertised with local prefixes configured for the interface."; | advertised with local prefixes configured for the interface."; | |||
container local-prefix-admin-tags { | container local-prefix-admin-tags { | |||
leaf-list default-admin-tag { | leaf-list default-admin-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative tags that will be associated with | "Administrative tags that will be associated with | |||
local prefixes if the prefix is not specified explicitly. | local prefixes if the prefix is not specified explicitly. | |||
If omitted, no admin tags are associated with local | If omitted, no admin tags are associated with local | |||
prefixes by default."; | prefixes by default."; | |||
} | } | |||
list specific-prefix-admin-tag { | list specific-prefix-admin-tag { | |||
key "prefix"; | key "prefix"; | |||
leaf prefix { | leaf prefix { | |||
type inet:ip-prefix; | type inet:ip-prefix; | |||
description | description | |||
"IPv4 or IPv6 prefix"; | "IPv4 or IPv6 prefix."; | |||
} | } | |||
leaf-list admin-tag { | leaf-list admin-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative tags that will be associated with | "Administrative tags that will be associated with | |||
the specified local prefix. If omitted, no admin tags | the specified local prefix. If omitted, no admin tags | |||
are associated with the specified local prefix."; | are associated with the specified local prefix."; | |||
} | } | |||
description | description | |||
"Admin tags that are explicitly associated with | "Admin tags that are explicitly associated with | |||
the specified prefix."; | the specified prefix."; | |||
} | } | |||
description | description | |||
"List of administrative tags that are to be advertised | "List of administrative tags that are to be advertised | |||
with interface local prefixes."; | with interface local prefixes."; | |||
} | } | |||
} | } | |||
/* Local-RIB */ | /* Local-RIB */ | |||
augment "/rt:routing/" | ||||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | augment "/rt:routing" | |||
+ "ospf:ospf/ospf:local-rib/ospf:route/ospf:next-hops/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:next-hop" { | + "/ospf:ospf/ospf:local-rib/ospf:route/ospf:next-hops" | |||
+ "/ospf:next-hop" { | ||||
description | description | |||
"This augments local-rib next-hop with administrative tags."; | "This augments local-rib next-hop with administrative tags."; | |||
leaf-list admin-tag { | leaf-list admin-tag { | |||
type uint32; | type uint32; | |||
description | description | |||
"Administrative tags."; | "Administrative tags."; | |||
} | } | |||
} | } | |||
/* Database */ | /* Database */ | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:areas/ospf:area/" | + "/ospf:ospf/ospf:areas/ospf:area" | |||
+ "ospf:interfaces/ospf:interface/ospf:database/" | + "/ospf:interfaces/ospf:interface/ospf:database" | |||
+ "ospf:link-scope-lsa-type/ospf:link-scope-lsas/" | + "/ospf:link-scope-lsa-type/ospf:link-scope-lsas" | |||
+ "ospf:link-scope-lsa/ospf:version/ospf:ospfv2/" | + "/ospf:link-scope-lsa/ospf:version/ospf:ospfv2" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | + "/ospf:ospfv2/ospf:body/ospf:opaque" | |||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
when "derived-from-or-self(../../../../../../../../../../" | when "derived-from-or-self(../../../../../../../../../.." | |||
+ "../../../../rt:type, 'ospf:ospfv2')" { | + "/../../../../rt:type, 'ospf:ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
description | description | |||
"Prefix Administrative Tag Sub-TLVs for OSPFv2 extended prefix | "Prefix Administrative Tag sub-TLVs for OSPFv2 extended prefix | |||
TLV in type 9 opaque LSA."; | TLV in type 9 opaque LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:areas/" | + "/ospf:ospf/ospf:areas" | |||
+ "ospf:area/ospf:database/" | + "/ospf:area/ospf:database" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "/ospf:area-scope-lsa-type/ospf:area-scope-lsas" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv2/" | + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv2" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | + "/ospf:ospfv2/ospf:body/ospf:opaque" | |||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
when "derived-from-or-self(../../../../../../../../../../" | when "derived-from-or-self(../../../../../../../../../.." | |||
+ "../../rt:type, 'ospf:ospfv2')" { | + "/../../rt:type, 'ospf:ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
description | description | |||
"Prefix Administrative Tag Sub-TLVs for OSPFv2 extended prefix | "Prefix Administrative Tag sub-TLVs for OSPFv2 extended prefix | |||
TLV in type 10 opaque LSA."; | TLV in type 10 opaque LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:database/" | + "/ospf:ospf/ospf:database" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "/ospf:as-scope-lsa-type/ospf:as-scope-lsas" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv2/" | + "/ospf:as-scope-lsa/ospf:version/ospf:ospfv2" | |||
+ "ospf:ospfv2/ospf:body/ospf:opaque/" | + "/ospf:ospfv2/ospf:body/ospf:opaque" | |||
+ "ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | + "/ospf:extended-prefix-opaque/ospf:extended-prefix-tlv" { | |||
when "derived-from-or-self(../../../../../../../../" | when "derived-from-or-self(../../../../../../../.." | |||
+ "../../rt:type, 'ospf:ospfv2')" { | + "/../../rt:type, 'ospf:ospfv2')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv2."; | "This augmentation is only valid for OSPFv2."; | |||
} | } | |||
description | description | |||
"Prefix Administrative Tag Sub-TLVs for OSPFv2 extended prefix | "Prefix Administrative Tag sub-TLVs for OSPFv2 extended prefix | |||
TLV in type 11 opaque LSA."; | TLV in type 11 opaque LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "/ospf:ospf/ospf:areas/ospf:area/ospf:database" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "/ospf:area-scope-lsa-type/ospf:area-scope-lsas" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv3" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix/" | + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-inter-area-prefix" | |||
+ "ospfv3-e-lsa:e-inter-prefix-tlvs/" | + "/ospfv3-e-lsa:e-inter-prefix-tlvs" | |||
+ "ospfv3-e-lsa:inter-prefix-tlv" { | + "/ospfv3-e-lsa:inter-prefix-tlv" { | |||
when "derived-from-or-self(../../../../../../../../../../" | when "derived-from-or-self(../../../../../../../../../.." | |||
+ "../../rt:type, 'ospf:ospfv3')" { | + "/../../rt:type, 'ospf:ospfv3')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 Inter-Area-Prefix TLV in the | "Augment OSPFv3 Inter-Area-Prefix TLV in the | |||
E-Inter-Area-Prefix LSA."; | E-Inter-Area-Prefix LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "/ospf:ospf/ospf:areas/ospf:area/ospf:database" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "/ospf:area-scope-lsa-type/ospf:area-scope-lsas" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv3" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix/" | + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-intra-area-prefix" | |||
+ "ospfv3-e-lsa:e-intra-prefix-tlvs/" | + "/ospfv3-e-lsa:e-intra-prefix-tlvs" | |||
+ "ospfv3-e-lsa:intra-prefix-tlv" { | + "/ospfv3-e-lsa:intra-prefix-tlv" { | |||
when "/rt:routing/rt:control-plane-protocols" | when "/rt:routing/rt:control-plane-protocols" | |||
+ "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 Intra-Area-Prefix TLV in the | "Augment OSPFv3 Intra-Area-Prefix TLV in the | |||
E-Intra-Area-Prefix LSA."; | E-Intra-Area-Prefix LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:database/" | + "/ospf:ospf/ospf:database" | |||
+ "ospf:as-scope-lsa-type/ospf:as-scope-lsas/" | + "/ospf:as-scope-lsa-type/ospf:as-scope-lsas" | |||
+ "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/" | + "/ospf:as-scope-lsa/ospf:version/ospf:ospfv3" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external/" | + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-as-external" | |||
+ "ospfv3-e-lsa:e-external-tlvs/" | + "/ospfv3-e-lsa:e-external-tlvs" | |||
+ "ospfv3-e-lsa:external-prefix-tlv" { | + "/ospfv3-e-lsa:external-prefix-tlv" { | |||
when "derived-from-or-self(../../../../../../../../" | when "derived-from-or-self(../../../../../../../.." | |||
+ "../../rt:type, 'ospf:ospfv3')" { | + "/../../rt:type, 'ospf:ospfv3')" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 External-Prefix TLV in the E-AS-External-LSA."; | "Augment OSPFv3 External-Prefix TLV in the E-AS-External-LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
augment "/rt:routing/" | augment "/rt:routing" | |||
+ "rt:control-plane-protocols/rt:control-plane-protocol/" | + "/rt:control-plane-protocols/rt:control-plane-protocol" | |||
+ "ospf:ospf/ospf:areas/ospf:area/ospf:database/" | + "/ospf:ospf/ospf:areas/ospf:area/ospf:database" | |||
+ "ospf:area-scope-lsa-type/ospf:area-scope-lsas/" | + "/ospf:area-scope-lsa-type/ospf:area-scope-lsas" | |||
+ "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/" | + "/ospf:area-scope-lsa/ospf:version/ospf:ospfv3" | |||
+ "ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa/" | + "/ospf:ospfv3/ospf:body/ospfv3-e-lsa:e-nssa" | |||
+ "ospfv3-e-lsa:e-external-tlvs/" | + "/ospfv3-e-lsa:e-external-tlvs" | |||
+ "ospfv3-e-lsa:external-prefix-tlv" { | + "/ospfv3-e-lsa:external-prefix-tlv" { | |||
when "/rt:routing/rt:control-plane-protocols" | when "/rt:routing/rt:control-plane-protocols" | |||
+ "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | + "/rt:control-plane-protocol/rt:type = 'ospf:ospfv3'" { | |||
description | description | |||
"This augmentation is only valid for OSPFv3."; | "This augmentation is only valid for OSPFv3."; | |||
} | } | |||
description | description | |||
"Augment OSPFv3 External-Prefix TLV in the E-NSSA-LSA."; | "Augment OSPFv3 External-Prefix TLV in the E-NSSA-LSA."; | |||
uses prefix-admin-tag-sub-tlv; | uses prefix-admin-tag-sub-tlv; | |||
} | } | |||
} | }]]></sourcecode> | |||
]]></sourcecode> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section title="Security Considerations"> | <!--[rfced] *AD - We note that the first paragraph in the Security | |||
Considerations section does not match what appears at | ||||
<https://wiki.ietf.org/group/ops/yang-security-guidelines>. | ||||
Additionally, we have made some updates in this section to closer | ||||
reflect the boilerplate. Please review this section and let us know | ||||
if any further updates are necessary. | ||||
--> | ||||
<section> | ||||
<name>Security Considerations</name> | ||||
<t> | <t> | |||
This document describes a generic mechanism for advertising | This document describes a generic mechanism for advertising | |||
administrative tags for OSPF prefixes. | administrative tags for OSPF prefixes. | |||
The administrative tags are generally less critical | The administrative tags are generally less critical | |||
than the topology information currently advertised by the base | than the topology information currently advertised by the base | |||
OSPF protocol. | OSPF protocol. | |||
The security considerations for the generic mechanism are dependent | The security considerations for the generic mechanism are dependent | |||
on their application. One such application is to control leaking of OSPF | on their application. One such application is to control leaking of OSPF | |||
routes to other protocols (e.g., BGP <xref target="RFC4271"/>). If an attack er | routes to other protocols (e.g., BGP <xref target="RFC4271"/>). If an attack er | |||
were able to modify | were able to modify | |||
the admin tags associated with OSPF routes and they were being used for this | the admin tags associated with OSPF routes, and they were being used for thi s | |||
application, such routes could be prevented from being advertised in routing | application, such routes could be prevented from being advertised in routing | |||
domains where they are required (subtle denial of service) or they could be | domains where they are required (subtle denial of service) or they could be | |||
advertised into routing domains where they shouldn't be advertised (routing | advertised into routing domains where they shouldn't be advertised (routing | |||
vulnerability). | vulnerability). | |||
Security considerations for the base OSPF protocol are covered | Security considerations for the base OSPF protocol are covered | |||
in <xref target="RFC2328"/> and <xref target="RFC5340"/>. | in <xref target="RFC2328"/> and <xref target="RFC5340"/>. | |||
</t> | </t> | |||
<t> | <t> | |||
The ietf-ospf-admin-tag YANG module defines a data model that is | The "ietf-ospf-admin-tag" YANG module defines a data model that is | |||
designed to be accessed via YANG-based management protocols, such as | designed to be accessed via YANG-based management protocols, such as | |||
NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. | NETCONF <xref target="RFC6241"/> and RESTCONF <xref target="RFC8040"/>. | |||
These protocols have to use a secure transport layer (e.g., SSH | These protocols have to use a secure transport layer (e.g., SSH | |||
<xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and | <xref target="RFC4252"/>, TLS <xref target="RFC8446"/>, and | |||
QUIC <xref target="RFC9000"/>) and have to use mutual authentication. | QUIC <xref target="RFC9000"/>) and have to use mutual authentication. | |||
</t> | </t> | |||
<t> | <t> | |||
The NETCONF Access Control Model (NACM) <xref target="RFC8341"/> provides t he | The Network Configuration Access Control Model (NACM) <xref target="RFC8341 "/> provides the | |||
means to restrict access for particular NETCONF or RESTCONF users to a | means to restrict access for particular NETCONF or RESTCONF users to a | |||
pre-configured subset of all available NETCONF or RESTCONF protocol | preconfigured subset of all available NETCONF or RESTCONF protocol | |||
operations and content. | operations and content. | |||
</t> | </t> | |||
<t> | <t> | |||
The following data nodes defined in the YANG module that are | There are a number of data nodes defined in this YANG module that are writable/c | |||
writable/creatable/deletable (i.e., config true, which is the default). | reatable/deletable (i.e., "config true", which is the default). Write operations | |||
The modifications to these data nodes without proper protection can | (e.g., edit-config) and delete operations to these data nodes without proper pr | |||
have a negative effect on network operations. | otection or authentication can have a negative effect on network operations.</t> | |||
</t> | <ul spacing="normal"> | |||
<ul empty="true" spacing="normal"> | ||||
<li>/ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/local-pr efix-admin-tags</li> | <li>/ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/local-pr efix-admin-tags</li> | |||
<li>/ospf:ospf/ospf:areas/ospf:area/ospf:ranges/ospf:range/admin-tags</li> | <li>/ospf:ospf/ospf:areas/ospf:area/ospf:ranges/ospf:range/admin-tags</li> | |||
</ul> | </ul> | |||
<t> | <t> | |||
Some of the readable data nodes in this YANG module may be considered | Some of the readable data nodes in this YANG module may be considered | |||
sensitive or vulnerable in some network environments. Exposure of the | sensitive or vulnerable in some network environments. Exposure of the | |||
OSPF link state database may be useful in mounting a Denial-of-Service (DoS ) | OSPF link state database may be useful in mounting a Denial-of-Service (DoS ) | |||
attacks. These are the readable data nodes: | attack. These are the readable data nodes: | |||
</t> | </t> | |||
<ul empty="true" spacing="normal"> | <ul spacing="normal"> | |||
<li>/ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/local-pr efix-admin-tags</li> | <li>/ospf:ospf/ospf:areas/ospf:area/ospf:interfaces/ospf:interface/local-pr efix-admin-tags</li> | |||
<li>/ospf:ospf/ospf:areas/ospf:area/ospf:ranges/ospf:range/admin-tags</li> | <li>/ospf:ospf/ospf:areas/ospf:area/ospf:ranges/ospf:range/admin-tags</li> | |||
<li>/prefix-admin-tag-sub-tlv</li> | <li>/prefix-admin-tag-sub-tlv</li> | |||
</ul> | </ul> | |||
</section> | </section> | |||
<section title="IANA Considerations"> | <section> | |||
<name>IANA Considerations</name> | ||||
<t> | <t> | |||
The following values should be allocated from the "OSPFv2 Extended Prefix TL | The following value has been allocated in the "OSPFv2 Extended Prefix TLV | |||
V | Sub-TLVs" registry <xref target="RFC7684"/> in the "Open Shortest Path First | |||
Sub-TLV" Registry <xref target="RFC7684"/> in the "Open Shortest Path First | v2 (OSPFv2) | |||
v2 (OSPFv2) | Parameters" registry group: | |||
Parameters" group: | ||||
</t> | </t> | |||
<ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
<li>TBD1 - Administrative Tag</li> | <dt>13:</dt><dd>Administrative Tag</dd> | |||
</ul> | </dl> | |||
<t> | <t> | |||
The following values should be allocated from the "OSPFv3 Extended-LSA Sub-T | The following value has been allocated in the "OSPFv3 Extended-LSA Sub-TLVs" | |||
LV" | registry <xref target="RFC8362"/> in the "Open Shortest Path First v3 (OSPFv | |||
Registry <xref target="RFC8362"/> in the "Open Shortest Path First v3 (OSPFv | 3) Parameters" | |||
3) Parameters" | registry group: | |||
group: | ||||
</t> | </t> | |||
<ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
<li> | <dt>39:</dt><dd><t>Administrative Tag</t> | |||
TBD2 - Administrative Tag. | <t>Since this sub-TLV only applies to prefixes and not links, the value of | |||
Since this sub-TLV only applies to prefixes and not links, the value of th | the Layer-2 Bundle Member (L2BM) field will be "X".</t></dd> | |||
e | </dl> | |||
Layer-2 Bundle Member (L2BM) field will be "X". | ||||
</li> | ||||
</ul> | ||||
<t> | <t> | |||
The following values should be allocated from the "OSPFv3 SRv6 Locator LSA | The following value has been allocated in the "OSPFv3 SRv6 Locator LSA | |||
Sub-TLVs" Registry <xref target="RFC9513"/> in the "Open Shortest Path First | Sub-TLVs" registry <xref target="RFC9513"/> in the "Open Shortest Path First | |||
v3 (OSPFv3) | v3 (OSPFv3) | |||
Parameters" group: | Parameters" registry group: | |||
</t> | </t> | |||
<ul spacing="normal"> | <dl spacing="normal" newline="false"> | |||
<li>TBD3 - Administrative Tag</li> | <dt>6:</dt><dd>Administrative Tag</dd> | |||
</ul> | </dl> | |||
<t>The IANA is requested to assign one new URI from the IETF XML | <t>IANA has assigned one new URI in the "IETF XML Registry" | |||
registry (<xref target="RFC3688" format="default"/>). Authors are suggesti | <xref target="RFC3688" format="default"/>:</t> | |||
ng the | ||||
following URI:</t> | ||||
<artwork align="left" name="" type="" alt=""><![CDATA[ | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags | <dl spacing="compact" newline="false"> | |||
Registrant Contact: The IESG. | <dt>URI:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags</dd> | |||
XML: N/A, the requested URI is an XML namespace | <dt>Registrant Contact:</dt><dd>The IESG.</dd> | |||
]]></artwork> | <dt>XML:</dt><dd>N/A; the requested URI is an XML namespace.</dd> | |||
<t> This document also requests one new YANG module name in the | </dl> | |||
YANG Module Names registry (<xref target="RFC6020" format="default"/>) wit | ||||
h the following | <t> This document also registers one new YANG module name in the "YANG Module | |||
suggestion :</t> | Names" registry <xref target="RFC6020" format="default"/> with the | |||
<artwork align="left" name="" type="" alt=""><![CDATA[ | following:</t> | |||
<dl spacing="compact" newline="false"> | ||||
<dt>Name:</dt><dd>ietf-ospf-admin-tags</dd> | ||||
<dt>Namespace:</dt><dd>urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags</dd> | ||||
<dt>Prefix:</dt><dd>ospf-admin-tags</dd> | ||||
<dt>Reference:</dt><dd>RFC 9825</dd> | ||||
</dl> | ||||
name: ietf-ospf-admin-tags | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-ospf-admin-tags | ||||
prefix: ospf-admin-tags | ||||
reference: RFC XXXX | ||||
]]></artwork> | ||||
</section> | </section> | |||
<section title="Acknowledgments"> | ||||
<t> | ||||
The authors of RFC 5130 <xref target="RFC5130"/> are acknowledged since thi | ||||
s document | ||||
draws upon both the IS-IS specification and deployment experience. The text | ||||
in | ||||
<xref target="OSPF-OPERATION"/> is adopted from RFC 5130. | ||||
</t> | ||||
<t>Thanks to Donnie Savage for his comments and questions.</t> | ||||
<t>Thanks to Ketan Talaulikar for his comments and providing the BGP-LS text. | ||||
</t> | ||||
<t>Thanks to Tony Przygienda and Les Ginsberg for discussions on | ||||
tag selection.</t> | ||||
<t>Thanks to Russ White for his Routing Directorate review.</t> | ||||
<t>Thanks to Bruno Decraene and Changwang Lin for working group last call com | ||||
ments.</t> | ||||
<t>Thanks to Gunter van de Velde for has AD review and comments.</t> | ||||
<t>Thanks to David Dong for IANA review and comments.</t> | ||||
<t>Thanks to Deb Cooley, Roman Danyliw, and John Scudder for IESG review and | ||||
comments.</t> | ||||
<t>Thanks to Mahesh Jethanandani for an extensive IESG review of the YANG mod | ||||
el.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<?rfc needLines="20"?> | ||||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
&RFC2119; | <name>References</name> | |||
&RFC2328; | <references> | |||
&RFC3688; | <name>Normative References</name> | |||
&RFC5340; | ||||
&RFC6020; | ||||
&RFC6241; | ||||
&RFC6991; | ||||
&RFC7684; | ||||
&RFC7950; | ||||
&RFC8040; | ||||
&RFC8174; | ||||
&RFC8341; | ||||
&RFC8349; | ||||
&RFC8362; | ||||
&RFC8446; | ||||
&RFC9000; | ||||
&RFC9129; | ||||
&RFC9513; | ||||
&RFC9552; | ||||
&RFC9587; | ||||
</references> | ||||
<references title="Informative References"> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119. | |||
&RFC3101; | xml"/> | |||
&RFC4252; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2328. | |||
&RFC4271; | xml"/> | |||
&RFC5130; | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3688. | |||
&RFC8340; | xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4252. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5340. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6020. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6241. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6991. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7684. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7950. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8040. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8341. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8349. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8362. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8446. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9000. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9129. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9513. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9552. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9587. | ||||
xml"/> | ||||
</references> | ||||
<references> | ||||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3101. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4271. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5130. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8340. | ||||
xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8792. | ||||
xml"/> | ||||
</references> | ||||
</references> | </references> | |||
<section numbered="false"> | ||||
<name>Acknowledgments</name> | ||||
<t>The authors of <xref target="RFC5130"/> are acknowledged, since this | ||||
document draws upon both the IS-IS specification and deployment | ||||
experience. The text in <xref target="OSPF-OPERATION"/> is adopted from | ||||
<xref target="RFC5130"/>.</t> | ||||
<t>Thanks to <contact fullname="Donnie Savage"/> for his comments and | ||||
questions.</t> | ||||
<t>Thanks to <contact fullname="Ketan Talaulikar"/> for his comments and | ||||
providing the BGP-LS text.</t> | ||||
<t>Thanks to <contact fullname="Tony Przygienda"/> and <contact | ||||
fullname="Les Ginsberg"/> for discussions on tag selection.</t> | ||||
<t>Thanks to <contact fullname="Russ White"/> for his Routing Directorate | ||||
review.</t> | ||||
<t>Thanks to <contact fullname="Bruno Decraene"/> and <contact | ||||
fullname="Changwang Lin"/> for working group last call comments.</t> | ||||
<t>Thanks to <contact fullname="Gunter Van de Velde"/> for has AD review | ||||
and comments.</t> | ||||
<t>Thanks to <contact fullname="David Dong"/> for IANA review and | ||||
comments.</t> | ||||
<t>Thanks to <contact fullname="Deb Cooley"/>, <contact fullname="Roman | ||||
Danyliw"/>, and <contact fullname="John Scudder"/> for IESG review and | ||||
comments.</t> | ||||
<t>Thanks to <contact fullname="Mahesh Jethanandani"/> for an extensive | ||||
IESG review of the YANG data model.</t> | ||||
</section> | ||||
</back> | </back> | |||
<!-- [rfced] Throughout the text, the following terminology appears to | ||||
be used interchangeably. Please review these occurrences and let us know | ||||
if/how they may be made consistent. | ||||
Administrative Tag vs. admin tag vs. administrative tag | ||||
Administrative Tag sub-TLV vs. Administrative Tag TLV vs. | ||||
administrative tag TLV | ||||
E-Inter-Area-Prefix-LSA vs. E-Inter-Area-Prefix LSA | ||||
E-Intra-Area-Prefix-LSA vs. E-Intra-Area-Prefix LSA | ||||
Extended Prefix TLV vs. extended prefix TLV | ||||
Prefix Administrative Tag sub-TLV vs. prefix admin tag sub-TLV | ||||
--> | ||||
<!-- [rfced] FYI - We have added expansions for the following abbreviations | ||||
per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review each | ||||
expansion in the document carefully to ensure correctness. | ||||
Border Gateway Protocol - Link State (BGP-LS) | ||||
Network Configuration Protocol (NETCONF) | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | ||||
</rfc> | </rfc> | |||
End of changes. 105 change blocks. | ||||
475 lines changed or deleted | 566 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |