| 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 Intermediate Systems TLV (222). These | |||
| documents do not specify sending multiple TLVs for the same object | documents do not specify sending multiple TLVs for the same object | |||
| and no other mechanism for expanding the information carrying | and no other mechanism for expanding the information carrying | |||
| capacity of the TLV has been specified. | capacity of the TLV 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 not exist. However, introduction of | |||
| 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). | |||
| 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 478 ¶ | skipping to change at line 478 ¶ | |||
| 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: | |||
| 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 | |||
| End of changes. 14 change blocks. | ||||
| 15 lines changed or deleted | 15 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||