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.