rfc9885v1.txt | rfc9885.txt | |||
---|---|---|---|---|
skipping to change at line 113 ¶ | skipping to change at line 113 ¶ | |||
tuples. Simultaneously, new traffic engineering technologies are | tuples. Simultaneously, new traffic engineering technologies are | |||
defining new attributes, further adding to the scaling pressures. | defining new attributes, further adding to the scaling pressures. | |||
The original TLV definition limits each TLV to a maximum of 255 | The original TLV definition limits each TLV to a maximum of 255 | |||
octets of payload, which is becoming increasingly problematic. | octets of payload, which is becoming increasingly problematic. | |||
Some TLV definitions have addressed this by explicitly stating that a | Some TLV definitions have addressed this by explicitly stating that a | |||
TLV may appear multiple times inside of a Link State PDU (LSP). | TLV may appear multiple times inside of a Link State PDU (LSP). | |||
However, this has not been done for many currently defined TLVs, | However, this has not been done for many currently defined TLVs, | |||
leaving the situation somewhat ambiguous. | leaving the situation somewhat ambiguous. | |||
For example, [RFC5305] defines the Extended IS Reachability TLV (22) | For example, [RFC5305] defines the Extended IS reachability TLV (22) | |||
and [RFC5120] defines the MT Intermediate Systems TLV (222). These | and [RFC5120] defines the MT-ISN TLV (222). These documents do not | |||
documents do not specify sending multiple TLVs for the same object | specify sending multiple TLVs for the same object and no other | |||
and no other mechanism for expanding the information carrying | mechanism for expanding the information carrying capacity of the TLV | |||
capacity of the TLV has been specified. | has been specified. | |||
The intent of this document is to clarify and codify the situation by | The intent of this document is to clarify and codify the situation by | |||
explicitly making multiple occurrences of a TLV the standard | explicitly making multiple occurrences of a TLV the standard | |||
mechanism for scaling TLV contents. Any future document that | mechanism for scaling TLV contents. Any future document that | |||
proposes a different mechanism for scaling TLV contents for a given | proposes a different mechanism for scaling TLV contents for a given | |||
codepoint must explain why multiple occurrences of a TLV is not | codepoint must explain why multiple occurrences of a TLV is not | |||
appropriate. | appropriate. | |||
This document does not alter the encoding of any TLV where multiple | This document does not alter the encoding of any TLV where multiple | |||
occurrences of a TLV are already defined. Some examples of this are: | occurrences of a TLV are already defined. Some examples of this are: | |||
* Router Capability TLV (Type 242) [RFC7981] | * Router CAPABILITY TLV (Type 242) [RFC7981] | |||
* Application-Specific SRLG (Type 238) [RFC9479] | * Application-Specific SRLG (Type 238) [RFC9479] | |||
* Instance Identifier (Type 7) [RFC8202] | * Instance Identifier (Type 7) [RFC8202] | |||
* Application-Specific Link Attributes (sub-TLV Type 16) [RFC9479] | * Application-Specific Link Attributes (sub-TLV Type 16) [RFC9479] | |||
[RFC7356] has defined a 16-bit length field for TLVs in flooding | [RFC7356] has defined a 16-bit Length field for TLVs in flooding | |||
scoped Protocol Data Units (PDUs), in which case the problem | scoped Protocol Data Units (PDUs), in which case the problem | |||
addressed by this document would not exist. However, introduction of | addressed by this document would likely not be encountered. However, | |||
these new PDU types is not backwards compatible. Therefore, there is | introduction of these new PDU types is not backwards compatible. | |||
a need to address how to expand the information advertised in | Therefore, there is a need to address how to expand the information | |||
existing PDUs that use 8-bit length TLVs. | advertised in existing PDUs that use TLVs with 8-bit Length fields. | |||
The mechanism described in this document has not been documented for | The mechanism described in this document has not been documented for | |||
all TLVs previously. This document provides the necessary protocol | all TLVs previously. This document provides the necessary protocol | |||
definition and discusses potential interoperability issues and | definition and discusses potential interoperability issues and | |||
deployment challenges. | deployment challenges. | |||
This document specifies a means for extending TLVs where no extension | This document specifies a means for extending TLVs where no extension | |||
mechanism has been previously explicitly specified, and defines this | mechanism has been previously explicitly specified. It also | |||
mechanism as the default extension mechanism for future TLVs. The | specifies this mechanism as the default extension mechanism for | |||
mechanism described in this document is applicable to top level TLVs | future TLVs. The mechanism described in this document is applicable | |||
as well as any level of sub-TLVs that may appear within a top level | to top level TLVs as well as any level of sub-TLVs that may appear | |||
TLV. | within a top level TLV. | |||
2. Requirements Language | 2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Overview of MP-TLV Applicability to TLVs | 3. Overview of MP-TLV Applicability to TLVs | |||
skipping to change at line 193 ¶ | skipping to change at line 193 ¶ | |||
3.2. TLVs that Advertise Objects with Identifier(s) | 3.2. TLVs that Advertise Objects with Identifier(s) | |||
Some TLVs support advertisement of objects of a given type, where | Some TLVs support advertisement of objects of a given type, where | |||
each object is identified by a unique set of identifiers. In this | each object is identified by a unique set of identifiers. In this | |||
case, the "key" that uniquely identifies a given object consists of | case, the "key" that uniquely identifies a given object consists of | |||
the set of identifiers. | the set of identifiers. | |||
3.2.1. Example: Extended IS Reachability | 3.2.1. Example: Extended IS Reachability | |||
As an example, consider the Extended IS Reachability TLV (Type 22) | As an example, consider the Extended IS reachability TLV (Type 22) | |||
[RFC5305]. A neighbor in this TLV is specified by: | [RFC5305]. A neighbor in this TLV is specified by: | |||
* 7 octets of a system ID and pseudonode number | * 7 octets of a system ID and pseudonode number | |||
* 3 octets of a default metric | * 3 octets of a default metric | |||
* Optionally, one or more of the following link identifiers encoded | * Optionally, one or more of the following link identifiers encoded | |||
as sub-TLVs: | as sub-TLVs: | |||
- an IPv4 interface address and IPv4 neighbor address as | - an IPv4 interface address and IPv4 neighbor address as | |||
skipping to change at line 216 ¶ | skipping to change at line 216 ¶ | |||
- an IPv6 interface address and IPv6 neighbor address as | - an IPv6 interface address and IPv6 neighbor address as | |||
specified in [RFC6119] | specified in [RFC6119] | |||
- Link Local/Remote Identifiers as specified in [RFC5307] | - Link Local/Remote Identifiers as specified in [RFC5307] | |||
The key consists of the 7 octets of system ID and pseudonode number | The key consists of the 7 octets of system ID and pseudonode number | |||
plus the set of link identifiers that are present. | plus the set of link identifiers that are present. | |||
3.2.2. Example: Extended IP Reachability | 3.2.2. Example: Extended IP Reachability | |||
As another example, consider the Extended IP Reachability TLV (Type | As another example, consider the Extended IP reachability TLV (Type | |||
135) [RFC5305]. A prefix in this TLV is specified by: | 135) [RFC5305]. A prefix in this TLV is specified by: | |||
* 4 octets of metric information | * 4 octets of metric information | |||
* 1 octet of control information that includes 6 bits specifying the | * 1 octet of control information that includes 6 bits specifying the | |||
prefix length | prefix length | |||
* 0-4 octets of an IPv4 prefix | * 0-4 octets of an IPv4 prefix | |||
The above are followed by up to 250 octets of sub-TLV information. | The above are followed by up to 250 octets of sub-TLV information. | |||
skipping to change at line 241 ¶ | skipping to change at line 241 ¶ | |||
4. Multi-Part TLVs | 4. Multi-Part TLVs | |||
If a router advertises multiple TLV tuples with the same TLV type and | If a router advertises multiple TLV tuples with the same TLV type and | |||
the same key (when applicable) in an IS-IS Hello (IIH) packet or in | the same key (when applicable) in an IS-IS Hello (IIH) packet or in | |||
the set of LSPs for a given level, they are considered a Multi-Part | the set of LSPs for a given level, they are considered a Multi-Part | |||
TLV (MP-TLV). | TLV (MP-TLV). | |||
In the absence of MP-TLV support, when a router receives an MP-TLV, | In the absence of MP-TLV support, when a router receives an MP-TLV, | |||
the receiver chooses which TLV will be processed and which TLV will | the receiver chooses which TLV will be processed and which TLV will | |||
be ignored. Note that this can occur either legitimately as a | be ignored. Note that this can occur either legitimately as a | |||
transient when a TLV moves from one LSP to another or as a result of | transient condition when a TLV moves from one LSP to another or as a | |||
a defect in the sending implementation. | result of a defect in the sending implementation. | |||
In the presence of MP-TLV support, when a router receives an MP-TLV, | In the presence of MP-TLV support, when a router receives an MP-TLV, | |||
information from all the TLVs is processed. | information from all the TLVs is processed. | |||
The encoding of TLVs is not altered by the introduction of MP-TLV | The encoding of TLVs is not altered by the introduction of MP-TLV | |||
support. In particular, the "key" that is used to identify the set | support. In particular, the "key" that is used to identify the set | |||
of TLVs that form an MP-TLV is the same key used in the absence of | of TLVs that form an MP-TLV is the same key used in the absence of | |||
MP-TLV support. Also note the definition of the "key" is part of the | MP-TLV support. Also note the definition of the "key" is part of the | |||
specification(s) that define(s) the TLV and is therefore outside the | specification(s) that define(s) the TLV and is therefore outside the | |||
scope of this document. | scope of this document. | |||
skipping to change at line 291 ¶ | skipping to change at line 291 ¶ | |||
255 bytes MUST NOT cause the TLVs to be rejected. See Section 8.2 | 255 bytes MUST NOT cause the TLVs to be rejected. See Section 8.2 | |||
for guidance on sending MP-TLVs. | for guidance on sending MP-TLVs. | |||
The contents of an MP-TLV MUST be processed as if they were | The contents of an MP-TLV MUST be processed as if they were | |||
concatenated. If the internals of the TLV contain key information, | concatenated. If the internals of the TLV contain key information, | |||
then replication of the key information MUST be taken to indicate | then replication of the key information MUST be taken to indicate | |||
that subsequent data MUST be processed as if the subsequent data were | that subsequent data MUST be processed as if the subsequent data were | |||
concatenated after a single copy of the key information. | concatenated after a single copy of the key information. | |||
For example, suppose that a router receives an LSP with a Multi-Part | For example, suppose that a router receives an LSP with a Multi-Part | |||
Extended IS Reachability TLV. The first part contains key | Extended IS reachability TLV. The first part contains key | |||
information K with unique sub-TLVs A, B, and C. The second part | information K with unique sub-TLVs A, B, and C. The second part | |||
contains key information K with unique sub-TLVs D, E, and F. The | contains key information K with unique sub-TLVs D, E, and F. The | |||
receiving router must then process this as having key information K | receiving router must then process this as having key information K | |||
and unique sub-TLVs A, B, C, D, E, F, or, because ordering is | and unique sub-TLVs A, B, C, D, E, F, or, because ordering is | |||
irrelevant, unique sub-TLVs D, E, F, A, B, C, or any other | irrelevant, unique sub-TLVs D, E, F, A, B, C, or any other | |||
permutation. | permutation. | |||
A TLV may contain information in its fixed part that is not part of | A TLV may contain information in its fixed part that is not part of | |||
the key. For example, the metric in both the Extended IS | the key. For example, the metric in both the Extended IS | |||
Reachability TLV and the Extended IP Reachability TLV does not | reachability TLV and the Extended IP Reachability TLV does not | |||
specify which object the TLV refers to, and thus is not part of the | specify which object the TLV refers to, and thus is not part of the | |||
key. Having inconsistent information in different parts of an MP-TLV | key. Having inconsistent information in different parts of an MP-TLV | |||
is an error. | is an error. | |||
It is also possible that information that is not part of the fixed | It is also possible that information that is not part of the fixed | |||
part of a TLV can be duplicated, e.g., a sub-TLV that is intended to | part of a TLV can be duplicated, e.g., a sub-TLV that is intended to | |||
only appear once appears multiple times and has inconsistent values. | only appear once appears multiple times and has inconsistent values. | |||
This could occur within the same TLV or in different parts of an MP- | This could occur within the same TLV or in different parts of an MP- | |||
TLV. This is also an error. | TLV. This is also an error. | |||
skipping to change at line 368 ¶ | skipping to change at line 368 ¶ | |||
For example, if there are multiple TLVs associated with the | For example, if there are multiple TLVs associated with the | |||
advertisement of a neighbor and an implementation does not process | advertisement of a neighbor and an implementation does not process | |||
all of the link attributes advertised, then constrained path | all of the link attributes advertised, then constrained path | |||
calculations based on those attributes are likely to produce | calculations based on those attributes are likely to produce | |||
incorrect or unexpected results. This could produce forwarding loops | incorrect or unexpected results. This could produce forwarding loops | |||
or dropped traffic. | or dropped traffic. | |||
As an aid to network operators when diagnosing such situations, a new | As an aid to network operators when diagnosing such situations, a new | |||
sub-TLV of the IS-IS Router CAPABILITY TLV [RFC7981] is defined: | sub-TLV of the IS-IS Router CAPABILITY TLV [RFC7981] is defined: | |||
MP-TLV Support for TLVs with implicit support | MP-TLV Support for TLVs with Implicit Support | |||
Type: 30 (1 octet) | Type: 30 (1 octet) | |||
Length: 0 (1 octet) | Length: 0 (1 octet) | |||
Routers that support MP-TLV for codepoints for which existing | Routers that support MP-TLV for codepoints for which existing | |||
specifications do not explicitly define such support, but for which | specifications do not explicitly define such support, but for which | |||
MP-TLV is applicable, SHOULD include this sub-TLV in a Router | MP-TLV is applicable, SHOULD include this sub-TLV in a Router | |||
Capability TLV. | CAPABILITY TLV. | |||
Scope of the associated Router Capability TLV is per level (S-bit | Scope of the associated Router CAPABILITY TLV is per level (S-bit | |||
clear). | clear) [RFC7981]. | |||
This advertisement is for informational purposes only. IS-IS | This advertisement is for informational purposes only. IS-IS | |||
protocol implementations MUST NOT alter what is sent or how what is | protocol implementations MUST NOT alter what is sent or how what is | |||
received is processed based on these advertisements. | received is processed based on these advertisements. | |||
The sub-TLV intentionally does not provide a syntax to specify MP-TLV | The sub-TLV intentionally does not provide a syntax to specify MP-TLV | |||
support on a per-codepoint basis. It is presumed that if such | support on a per-codepoint basis. It is presumed that if such | |||
support is provided that it applies to all relevant codepoints. It | support is provided that it applies to all relevant codepoints. It | |||
is understood that in reality, a given implementation might limit MP- | is understood that in reality, a given implementation might limit MP- | |||
TLV support to particular codepoints based on the needs of the | TLV support to particular codepoints based on the needs of the | |||
deployment scenarios in which it is used. Therefore, diligence is | deployment scenarios in which it is used. Therefore, diligence is | |||
still required on the part of the operator to ensure that | still required on the part of the operator to ensure that | |||
configurations which require the sending of an MP-TLV for a given | configurations which require the sending of an MP-TLV for a given | |||
codepoint are not introduced on any router in the network until all | codepoint are not introduced on any router in the network until all | |||
routers in the network support MP-TLV for the relevant codepoints. | routers in the network support MP-TLV for the relevant codepoints. | |||
The Router Capability TLV is meant to advertise capabilities that are | The Router CAPABILITY TLV is meant to advertise capabilities that are | |||
of direct use to the IS-IS protocol. The MP-TLV Support sub-TLV | of direct use to the IS-IS protocol. The MP-TLV Support sub-TLV | |||
advertises management information, which is not of direct use to the | advertises management information, which is not of direct use to the | |||
protocol. The intent is to provide information that may be of use to | protocol. The intent is to provide information that may be of use to | |||
a network operator. This exception to the intended use of the Router | a network operator. This exception to the intended use of the Router | |||
Capability TLV is introduced to help mitigate the potential | CAPABILITY TLV is introduced to help mitigate the potential | |||
disruptiveness associated with the introduction of MP-TLV support in | disruptiveness associated with the introduction of MP-TLV support in | |||
cases where such support has not been explicitly defined. This is | cases where such support has not been explicitly defined. This is | |||
not intended to introduce a generic new use case for the Router | not intended to introduce a generic new use case for the Router | |||
Capability TLV. | CAPABILITY TLV. | |||
NOTE: A more appropriate and robust mechanism to provide detailed | NOTE: A more appropriate and robust mechanism to provide detailed | |||
information on what a given implementation supports is to utilize | information on what a given implementation supports is to utilize | |||
YANG to define Protocol Implementation Conformance Statement (PICS). | YANG to define Protocol Implementation Conformance Statement (PICS). | |||
An example of this can be found in [PICS-YANG]. | An example of this can be found in [PICS-YANG]. | |||
8. Deployment Considerations | 8. Deployment Considerations | |||
Sending of MP-TLVs in the presence of routers that do not correctly | Sending of MP-TLVs in the presence of routers that do not correctly | |||
process such advertisements can result in interoperability issues, | process such advertisements can result in interoperability issues, | |||
skipping to change at line 475 ¶ | skipping to change at line 475 ¶ | |||
existing TLV, as long as there is space in the TLV, information | existing TLV, as long as there is space in the TLV, information | |||
SHOULD NOT be split into multiple TLVs. If there is no space in the | SHOULD NOT be split into multiple TLVs. If there is no space in the | |||
current LSP to fit the now larger TLV, the TLV SHOULD be moved to a | current LSP to fit the now larger TLV, the TLV SHOULD be moved to a | |||
new LSP. | new LSP. | |||
9. IANA Considerations | 9. IANA Considerations | |||
9.1. MP-TLV Support Sub-TLV | 9.1. MP-TLV Support Sub-TLV | |||
IANA has registered the following code point from the "IS-IS Sub-TLVs | IANA has registered the following code point from the "IS-IS Sub-TLVs | |||
for IS-IS Router CAPABILITY TLV" registry: | for IS-IS Router CAPABILITY TLV" registry (see | |||
<https://www.iana.org/assignments/isis-tlv-codepoints>): | ||||
Type: 30 | Type: 30 | |||
Description: MP-TLV Support for TLVs with implicit support | Description: MP-TLV Support for TLVs with Implicit Support | |||
MP-TLV Applicability: N | MP-TLV Applicability: N | |||
Reference: Section 7 of RFC 9885 | Reference: Section 7 of RFC 9885 | |||
9.2. Extension to IS-IS Top-Level TLV Registries | 9.2. Extension to IS-IS Top-Level TLV Registries | |||
IANA has extended a number of registries under the "IS-IS TLV | IANA has extended a number of registries under the "IS-IS TLV | |||
Codepoints" registry group (<https://www.iana.org/assignments/isis- | Codepoints" registry group (<https://www.iana.org/assignments/isis- | |||
tlv-codepoints/>) to include a column that indicates whether the MP- | tlv-codepoints/>) to include a column that indicates whether the MP- | |||
TLV procedures described in this document are applicable to that | TLV procedures described in this document are applicable to that | |||
codepoint. "Y" indicates that MP-TLV is applicable. "N" indicates | codepoint. "Y" indicates that MP-TLV is applicable. "N" indicates | |||
skipping to change at line 500 ¶ | skipping to change at line 501 ¶ | |||
The following subsections provide the initial contents of the new | The following subsections provide the initial contents of the new | |||
column for a number of existing registries. The initial values for | column for a number of existing registries. The initial values for | |||
MP-TLV applicability defined in the following subsections are based | MP-TLV applicability defined in the following subsections are based | |||
on the rule that MP-TLV is applicable to any codepoint that supports | on the rule that MP-TLV is applicable to any codepoint that supports | |||
sub-TLVs, without regard to whether the sub-TLVs that are currently | sub-TLVs, without regard to whether the sub-TLVs that are currently | |||
defined are sufficient to require MP-TLVs to be sent. | defined are sufficient to require MP-TLVs to be sent. | |||
9.2.1. MP-TLV for IS-IS Top-Level TLV Codepoints | 9.2.1. MP-TLV for IS-IS Top-Level TLV Codepoints | |||
IANA has added the MP column to the "IS-IS Top-Level TLV Codepoints" | ||||
registry (<https://www.iana.org/assignments/isis-tlv-codepoints>) and | ||||
populated it as shown in Table 1. | ||||
+===========+====================================+====+ | +===========+====================================+====+ | |||
| Value | Name | MP | | | Value | Name | MP | | |||
+===========+====================================+====+ | +===========+====================================+====+ | |||
| 0 | Reserved | | | | 0 | Reserved | | | |||
+-----------+------------------------------------+----+ | +-----------+------------------------------------+----+ | |||
| 1 | Area Addresses | N | | | 1 | Area Addresses | N | | |||
+-----------+------------------------------------+----+ | +-----------+------------------------------------+----+ | |||
| 2 | IIS Neighbors | N | | | 2 | IIS Neighbors | N | | |||
+-----------+------------------------------------+----+ | +-----------+------------------------------------+----+ | |||
| 3 | ES Neighbors | N | | | 3 | ES Neighbors | N | | |||
End of changes. 19 change blocks. | ||||
31 lines changed or deleted | 36 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |