rfc9681.original   rfc9681.txt 
Network Working Group B. Decraene Internet Engineering Task Force (IETF) B. Decraene
Internet-Draft Orange Request for Comments: 9681 Orange
Intended status: Experimental L. Ginsberg Category: Experimental L. Ginsberg
Expires: 14 November 2024 Cisco Systems ISSN: 2070-1721 Cisco Systems
T. Li T. Li
Juniper Networks, Inc. Juniper Networks, Inc.
G. Solignac G. Solignac
M. Karasek M. Karasek
Cisco Systems Cisco Systems
G. Van de Velde G. Van de Velde
Nokia Nokia
T. Przygienda T. Przygienda
Juniper Juniper
13 May 2024 October 2024
IS-IS Fast Flooding IS-IS Fast Flooding
draft-ietf-lsr-isis-fast-flooding-11
Abstract Abstract
Current Link State Protocol Data Unit (PDU) flooding rates are much Current Link State PDU flooding rates are much slower than what
slower than what modern networks can support. The use of IS-IS at modern networks can support. The use of IS-IS at larger scale
larger scale requires faster flooding rates to achieve desired requires faster flooding rates to achieve desired convergence goals.
convergence goals. This document discusses the need for faster This document discusses the need for faster flooding, the issues
flooding, the issues around faster flooding, and some example around faster flooding, and some example approaches to achieve faster
approaches to achieve faster flooding. It also defines protocol flooding. It also defines protocol extensions relevant to faster
extensions relevant to faster flooding. flooding.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This document is not an Internet Standards Track specification; it is
provisions of BCP 78 and BCP 79. published for examination, experimental implementation, and
evaluation.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document defines an Experimental Protocol for the Internet
and may be updated, replaced, or obsoleted by other documents at any community. This document is a product of the Internet Engineering
time. It is inappropriate to use Internet-Drafts as reference Task Force (IETF). It represents the consensus of the IETF
material or to cite them other than as "work in progress." community. It has received public review and has been approved for
publication by the Internet Engineering Steering Group (IESG). Not
all documents approved by the IESG are candidates for any level of
Internet Standard; see Section 2 of RFC 7841.
This Internet-Draft will expire on 14 November 2024. Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
https://www.rfc-editor.org/info/rfc9681.
Copyright Notice Copyright Notice
Copyright (c) 2024 IETF Trust and the persons identified as the Copyright (c) 2024 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (https://trustee.ietf.org/ Provisions Relating to IETF Documents
license-info) in effect on the date of publication of this document. (https://trustee.ietf.org/license-info) in effect on the date of
Please review these documents carefully, as they describe your rights publication of this document. Please review these documents
and restrictions with respect to this document. Code Components carefully, as they describe your rights and restrictions with respect
extracted from this document must include Revised BSD License text as to this document. Code Components extracted from this document must
described in Section 4.e of the Trust Legal Provisions and are include Revised BSD License text as described in Section 4.e of the
provided without warranty as described in the Revised BSD License. Trust Legal Provisions and are provided without warranty as described
in the Revised BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 4 2. Requirements Language
3. Historical Behavior . . . . . . . . . . . . . . . . . . . . . 4 3. Historical Behavior
4. Flooding Parameters TLV . . . . . . . . . . . . . . . . . . . 5 4. Flooding Parameters TLV
4.1. LSP Burst Size sub-TLV . . . . . . . . . . . . . . . . . 6 4.1. LSP Burst Size Sub-TLV
4.2. LSP Transmission Interval sub-TLV . . . . . . . . . . . . 6 4.2. LSP Transmission Interval Sub-TLV
4.3. LSPs Per PSNP sub-TLV . . . . . . . . . . . . . . . . . . 6 4.3. LSPs per PSNP Sub-TLV
4.4. Flags sub-TLV . . . . . . . . . . . . . . . . . . . . . . 7 4.4. Flags Sub-TLV
4.5. Partial SNP Interval sub-TLV . . . . . . . . . . . . . . 7 4.5. Partial SNP Interval Sub-TLV
4.6. Receive Window sub-TLV . . . . . . . . . . . . . . . . . 8 4.6. Receive Window Sub-TLV
4.7. Operation on a LAN interface . . . . . . . . . . . . . . 8 4.7. Operation on a LAN Interface
5. Performance improvement on the receiver . . . . . . . . . . . 9 5. Performance Improvement on the Receiver
5.1. Rate of LSP Acknowledgments . . . . . . . . . . . . . . . 9 5.1. Rate of LSP Acknowledgments
5.2. Packet Prioritization on Receive . . . . . . . . . . . . 10 5.2. Packet Prioritization on Receive
6. Congestion and Flow Control . . . . . . . . . . . . . . . . . 11 6. Congestion and Flow Control
6.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 11 6.1. Overview
6.2. Congestion and Flow Control algorithm . . . . . . . . . . 11 6.2. Congestion and Flow Control Algorithm
6.3. Transmitter Based Congestion Control Approach . . . . . . 19 6.3. Transmitter-Based Congestion Control Approach
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 7. IANA Considerations
7.1. Flooding Parameters TLV . . . . . . . . . . . . . . . . . 21 7.1. Flooding Parameters TLV
7.2. Registry: IS-IS Sub-TLV for Flooding Parameters TLV . . . 21 7.2. Registry: IS-IS Sub-TLV for Flooding Parameters TLV
7.3. Registry: IS-IS Bit Values for Flooding Parameters Flags 7.3. Registry: IS-IS Bit Values for Flooding Parameters Flags
Sub-TLV . . . . . . . . . . . . . . . . . . . . . . . . . 22 Sub-TLV
8. Security Considerations . . . . . . . . . . . . . . . . . . . 23 8. Security Considerations
9. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 24 9. References
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 9.1. Normative References
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 9.2. Informative References
11.1. Normative References . . . . . . . . . . . . . . . . . . 24 Acknowledgments
11.2. Informative References . . . . . . . . . . . . . . . . . 25 Contributors
Appendix A. Changes / Author Notes . . . . . . . . . . . . . . . 25 Authors' Addresses
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26
1. Introduction 1. Introduction
Link state IGPs such as Intermediate-System-to-Intermediate-System Link state IGPs such as Intermediate System to Intermediate System
(IS-IS) depend upon having consistent Link State Databases (LSDB) on (IS-IS) depend upon having consistent Link State Databases (LSDBs) on
all Intermediate Systems (ISs) in the network in order to provide all Intermediate Systems (ISs) in the network in order to provide
correct forwarding of data packets. When topology changes occur, correct forwarding of data packets. When topology changes occur,
new/updated Link State PDUs (LSPs) are propagated network-wide. The new/updated Link State PDUs (LSPs) are propagated network-wide. The
speed of propagation is a key contributor to convergence time. speed of propagation is a key contributor to convergence time.
IS-IS base specification [ISO10589] does not use flow or congestion IS-IS base specification [ISO10589] does not use flow or congestion
control but static flooding rates. Historically, flooding rates have control but static flooding rates. Historically, flooding rates have
been conservative - on the order of 10s of LSPs/second. This is the been conservative -- on the order of tens of LSPs per second. This
result of guidance in the base specification and early deployments is the result of guidance in the base specification and early
when the CPU and interface speeds were much slower and the area scale deployments when the CPU and interface speeds were much slower and
much smaller than they are today. the area scale was much smaller than they are today.
As IS-IS is deployed in greater scale both in the number of nodes in As IS-IS is deployed in greater scale both in the number of nodes in
an area and in the number of neighbors per node, the impact of the an area and in the number of neighbors per node, the impact of the
historic flooding rates becomes more significant. Consider the historic flooding rates becomes more significant. Consider the
bringup or failure of a node with 1000 neighbors. This will result bring-up or failure of a node with 1000 neighbors. This will result
in a minimum of 1000 LSP updates. At typical LSP flooding rates used in a minimum of 1000 LSP updates. At typical LSP flooding rates used
today (33 LSPs/second), it would take more than 30 seconds simply to today (33 LSPs per second), it would take more than 30 seconds simply
send the updated LSPs to a given neighbor. Depending on the diameter to send the updated LSPs to a given neighbor. Depending on the
of the network, achieving a consistent LSDB on all nodes in the diameter of the network, achieving a consistent LSDB on all nodes in
network could easily take a minute or more. the network could easily take a minute or more.
Increasing the LSP flooding rate therefore becomes an essential Therefore, increasing the LSP flooding rate becomes an essential
element of supporting greater network scale. element of supporting greater network scale.
Improving the LSP flooding rate is complementary to protocol Improving the LSP flooding rate is complementary to protocol
extensions that reduce LSP flooding traffic by reducing the flooding extensions that reduce LSP flooding traffic by reducing the flooding
topology such as Mesh Groups [RFC2973] or Dynamic Flooding topology such as Mesh Groups [RFC2973] or Dynamic Flooding
[I-D.ietf-lsr-dynamic-flooding] . Reduction of the flooding topology [DYNAMIC-FLOODING]. Reduction of the flooding topology does not
does not alter the number of LSPs required to be exchanged between alter the number of LSPs required to be exchanged between two nodes,
two nodes, so increasing the overall flooding speed is still so increasing the overall flooding speed is still beneficial when
beneficial when such extensions are in use. It is also possible that such extensions are in use. It is also possible that the flooding
the flooding topology can be reduced in ways that prefer the use of topology can be reduced in ways that prefer the use of neighbors that
neighbors that support improved flooding performance. support improved flooding performance.
With the goal of supporting faster flooding, this document introduces With the goal of supporting faster flooding, this document introduces
the signaling of additional flooding related parameters Section 4, the signaling of additional flooding related parameters (Section 4),
specifies some performance improvements on the receiver Section 5 and specifies some performance improvements on the receiver (Section 5)
introduces the use of flow and/or congestion control Section 6. and introduces the use of flow and/or congestion control (Section 6).
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 BCP "OPTIONAL" in this document are to be interpreted as described in
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. Historical Behavior 3. Historical Behavior
The base specification for IS-IS [ISO10589] was first published in The base specification for IS-IS [ISO10589] was first published in
1992 and updated in 2002. The update made no changes in regards to 1992 and updated in 2002. The update made no changes in regards to
suggested timer values. Convergence targets at the time were on the suggested timer values. Convergence targets at the time were on the
order of seconds and the specified timer values reflect that. Here order of seconds, and the specified timer values reflect that. Here
are some examples: are some examples:
minimumLSPGenerationInterval - This is the minimum time interval minimumLSPGenerationInterval: This is the minimum time interval
between generation of Link State PDUs. A source Intermediate between generation of Link State PDUs. A source Intermediate
system shall wait at least this long before re-generating one system shall wait at least this long before regenerating one of
of its own Link State PDUs. its own Link State PDUs.
The recommended value is 30 seconds. The recommended value is 30 seconds.
minimumLSPTransmissionInterval - This is the amount of time an minimumLSPTransmissionInterval: This is the amount of time an
Intermediate system shall wait before further propagating Intermediate system shall wait before further propagating another
another Link State PDU from the same source system. Link State PDU from the same source system.
The recommended value is 5 seconds. The recommended value is 5 seconds.
partialSNPInterval - This is the amount of time between periodic partialSNPInterval: This is the amount of time between periodic
action for transmission of Partial Sequence Number PDUs. action for transmission of Partial Sequence Number PDUs. It shall
It shall be less than minimumLSPTransmissionInterval. be less than minimumLSPTransmissionInterval.
The recommended value is 2 seconds. The recommended value is 2 seconds.
Most relevant to a discussion of the LSP flooding rate is the Most relevant to a discussion of the LSP flooding rate is the
recommended interval between the transmission of two different LSPs recommended interval between the transmission of two different LSPs
on a given interface. on a given interface.
For broadcast interfaces, [ISO10589] defined: For broadcast interfaces, [ISO10589] defined:
minimumBroadcastLSPTransmissionInterval - the minimum interval | minimumBroadcastLSPTransmissionInterval - the minimum interval
between PDU arrivals which can be processed by the slowest | between PDU arrivals which can be processed by the slowest
Intermediate System on the LAN. | Intermediate System on the LAN.
The default value was defined as 33 milliseconds. It is permitted to The default value was defined as 33 milliseconds. It is permitted to
send multiple LSPs "back-to-back" as a burst, but this was limited to send multiple LSPs back to back as a burst, but this was limited to
10 LSPs in a one second period. 10 LSPs in a one-second period.
Although this value was specific to LAN interfaces, this has commonly Although this value was specific to LAN interfaces, this has commonly
been applied by implementations to all interfaces though that was not been applied by implementations to all interfaces though that was not
the original intent of the base specification. In fact the original intent of the base specification. In fact,
Section 12.1.2.4.3 states: Section 12.1.2.4.3 states:
On point-to-point links the peak rate of arrival is limited only | On point-to-point links the peak rate of arrival is limited only
by the speed of the data link and the other traffic flowing on | by the speed of the data link and the other traffic flowing on
that link. | that link.
Although modern implementations have not strictly adhered to the 33 Although modern implementations have not strictly adhered to the
millisecond interval, it is commonplace for implementations to limit 33-millisecond interval, it is commonplace for implementations to
the flooding rate to the same order of magnitude: tens of limit the flooding rate to the same order of magnitude: tens of
milliseconds, and not the single digits or fractions of milliseconds milliseconds, and not the single digits or fractions of milliseconds
that are needed today. that are needed today.
In the past 20 years, significant work on achieving faster In the past 20 years, significant work on achieving faster
convergence, more specifically sub-second convergence, has resulted convergence, more specifically sub-second convergence, has resulted
in implementations modifying a number of the above timers in order to in implementations modifying a number of the above timers in order to
support faster signaling of topology changes. For example, support faster signaling of topology changes. For example,
minimumLSPGenerationInterval has been modified to support millisecond minimumLSPGenerationInterval has been modified to support millisecond
intervals, often with a backoff algorithm applied to prevent LSP intervals, often with a backoff algorithm applied to prevent LSP
generation storms in the event of rapid successive oscillations. generation storms in the event of rapid successive oscillations.
However, the flooding rate has not been fundamentally altered. However, the flooding rate has not been fundamentally altered.
4. Flooding Parameters TLV 4. Flooding Parameters TLV
This document defines a new Type-Length-Value tuple (TLV) called the This document defines a new Type-Length-Value (TLV) tuple called the
"Flooding Parameters TLV" that may be included in IS to IS Hellos "Flooding Parameters TLV" that may be included in IS-IS Hellos (IIHs)
(IIH) or Partial Sequence Number PDUs (PSNPs). It allows IS-IS or Partial Sequence Number PDUs (PSNPs). It allows IS-IS
implementations to advertise flooding-related parameters and implementations to advertise flooding-related parameters and
capabilities which may be used by the peer to support faster capabilities that may be used by the peer to support faster flooding.
flooding.
Type: 21
Length: variable, the size in octets of the Value field
Value: One or more sub-TLVs Type: 21
Length: variable; the size in octets of the Value field
Value: one or more sub-TLVs
Several sub-TLVs are defined in this document. The support of any Several sub-TLVs are defined in this document. The support of any
sub-TLV is OPTIONAL. sub-TLV is OPTIONAL.
For a given IS-IS adjacency, the Flooding Parameters TLV does not For a given IS-IS adjacency, the Flooding Parameters TLV does not
need to be advertised in each IIH or PSNP. An IS uses the latest need to be advertised in each IIH or PSNP. An IS uses the latest
received value for each parameter until a new value is advertised by received value for each parameter until a new value is advertised by
the peer. However, as IIHs and PSNPs are not reliably exchanged, and the peer. However, as IIHs and PSNPs are not reliably exchanged and
may never be received, parameters SHOULD be sent even if there is no may never be received, parameters SHOULD be sent even if there is no
change in value since the last transmission. For a parameter that change in value since the last transmission. For a parameter that
has never been advertised, an IS uses its local default value. That has never been advertised, an IS uses its local default value. That
value SHOULD be configurable on a per-node basis and MAY be value SHOULD be configurable on a per-node basis and MAY be
configurable on a per-interface basis. configurable on a per-interface basis.
4.1. LSP Burst Size sub-TLV 4.1. LSP Burst Size Sub-TLV
The LSP Burst Size sub-TLV advertises the maximum number of LSPs that The LSP Burst Size sub-TLV advertises the maximum number of LSPs that
the node can receive without an intervening delay between LSP the node can receive without an intervening delay between LSP
transmissions. transmissions.
Type: 1 Type: 1
Length: 4 octets
Length: 4 octets Value: number of LSPs that can be received back to back
Value: number of LSPs that can be received back-to-back.
4.2. LSP Transmission Interval sub-TLV 4.2. LSP Transmission Interval Sub-TLV
The LSP Transmission Interval sub-TLV advertises the minimum The LSP Transmission Interval sub-TLV advertises the minimum
interval, in micro-seconds, between LSPs arrivals which can be interval, in microseconds, between LSPs arrivals that can be
sustained on this receiving interface. sustained on this receiving interface.
Type: 2 Type: 2
Length: 4 octets
Length: 4 octets Value: minimum interval, in microseconds, between two consecutive
LSPs received after LSP Burst Size LSPs have been received
Value: minimum interval, in micro-seconds, between two consecutive
LSPs received after LSP Burst Size LSPs have been received
The LSP Transmission Interval is an advertisement of the receiver's The LSP Transmission Interval is an advertisement of the receiver's
sustainable LSP reception rate. This rate may be safely used by a sustainable LSP reception rate. This rate may be safely used by a
sender which do not support the flow control or congestion algorithm. sender that does not support the flow control or congestion
It may also be used as the minimal safe rate by flow control or algorithm. It may also be used as the minimal safe rate by flow
congestion algorithms in unexpected cases, e.g., when the receiver is control or congestion algorithms in unexpected cases, e.g., when the
not acknowledging LSPs anymore. receiver is not acknowledging LSPs anymore.
4.3. LSPs Per PSNP sub-TLV 4.3. LSPs per PSNP Sub-TLV
The LSP per PSNP (LPP) sub-TLV advertises the number of received LSPs The LSP per PSNP (LPP) sub-TLV advertises the number of received LSPs
that triggers the immediate sending of a PSNP to acknowledge them. that triggers the immediate sending of a PSNP to acknowledge them.
Type: 3 Type: 3
Length: 2 octets
Length: 2 octets Value: number of LSPs acknowledged per PSNP
Value: number of LSPs acknowledged per PSNP
A node advertising this sub-TLV with a value for LPP MUST send a PSNP A node advertising this sub-TLV with a value for LPP MUST send a PSNP
once LPP LSPs have been received and need to be acknowledged. once LPP LSPs have been received and need to be acknowledged.
4.4. Flags sub-TLV 4.4. Flags Sub-TLV
The sub-TLV Flags advertises a set of flags. The sub-TLV Flags advertises a set of flags.
Type: 4 Type: 4
Length: Indicates the length in octets (1-8) of the Value field.
Length: Indicates the length in octets (1-8) of the Value field. The The length SHOULD be the minimum required to send all bits that
length SHOULD be the minimum required to send all bits that are set. are set.
Value: list of flags
Value: List of flags. 0 1 2 3 4 5 6 7 ...
+-+-+-+-+-+-+-+-+...
0 1 2 3 4 5 6 7 ... |O| ...
+-+-+-+-+-+-+-+-+... +-+-+-+-+-+-+-+-+...
|O| ...
+-+-+-+-+-+-+-+-+...
An LSP receiver sets the O-flag to indicate to the LSP sender that it An LSP receiver sets the O-flag (Ordered acknowledgment) to indicate
will acknowledge the LSPs in the order as received. A PSNP to the LSP sender that it will acknowledge the LSPs in the order as
acknowledging N LSPs is acknowledging the N oldest LSPs received. received. A PSNP acknowledging N LSPs is acknowledging the N oldest
The order inside the PSNP is meaningless. If the sender keeps track LSPs received. The order inside the PSNP is meaningless. If the
of the order of LSPs sent, this indication allows a fast detection of sender keeps track of the order of LSPs sent, this indication allows
the loss of an LSP. This MUST NOT be used to alter the for fast detection of the loss of an LSP. This MUST NOT be used to
retransmission timer for any LSP. This MAY be used to trigger a alter the retransmission timer for any LSP. This MAY be used to
congestion signal. trigger a congestion signal.
4.5. Partial SNP Interval sub-TLV 4.5. Partial SNP Interval Sub-TLV
The Partial SNP Interval sub-TLV advertises the amount of time in The Partial SNP Interval sub-TLV advertises the amount of time in
milliseconds between periodic action for transmission of Partial milliseconds between periodic action for transmission of PSNPs. This
Sequence Number PDUs. This time will trigger the sending of a PSNP time will trigger the sending of a PSNP even if the number of
even if the number of unacknowledged LSPs received on a given unacknowledged LSPs received on a given interface does not exceed LPP
interface does not exceed LPP (Section 4.3). The time is measured (Section 4.3). The time is measured from the reception of the first
from the reception of the first unacknowledged LSP. unacknowledged LSP.
Type: 5
Length: 2 octets
Value: partialSNPInterval in milliseconds Type: 5
Length: 2 octets
Value: partialSNPInterval in milliseconds
A node advertising this sub-TLV SHOULD send a PSNP at least once per A node advertising this sub-TLV SHOULD send a PSNP at least once per
Partial SNP Interval if one or more unacknowledged LSPs have been Partial SNP Interval if one or more unacknowledged LSPs have been
received on a given interface. received on a given interface.
4.6. Receive Window sub-TLV 4.6. Receive Window Sub-TLV
The Receive Window (RWIN) sub-TLV advertises the maximum number of The Receive Window (RWIN) sub-TLV advertises the maximum number of
unacknowledged LSPs that the node can receive for a given adjacency. unacknowledged LSPs that the node can receive for a given adjacency.
Type: 6 Type: 6
Length: 2 octets
Length: 2 octets Value: maximum number of unacknowledged LSPs
Value: maximum number of unacknowledged LSPs
4.7. Operation on a LAN interface 4.7. Operation on a LAN Interface
On a LAN interface, all LSPs are link-level multicasts. Each LSP On a LAN interface, all LSPs are link-level multicasts. Each LSP
sent will be received by all ISs on the LAN and each IS will receive sent will be received by all ISs on the LAN, and each IS will receive
LSPs from all transmitters. In this section, we clarify how the LSPs from all transmitters. In this section, we clarify how the
flooding parameters should be interpreted in the context of a LAN. flooding parameters should be interpreted in the context of a LAN.
An LSP receiver on a LAN will communicate its desired flooding An LSP receiver on a LAN will communicate its desired flooding
parameters using a single Flooding Parameters TLV, which will be parameters using a single Flooding Parameters TLV, which will be
received by all LSP transmitters. The flooding parameters sent by received by all LSP transmitters. The flooding parameters sent by
the LSP receiver MUST be understood as instructions from the LSP the LSP receiver MUST be understood as instructions from the LSP
receiver to each LSP transmitter about the desired maximum transmit receiver to each LSP transmitter about the desired maximum transmit
characteristics of each transmitter. The receiver is aware that characteristics of each transmitter. The receiver is aware that
there are multiple transmitters that can send LSPs to the receiver there are multiple transmitters that can send LSPs to the receiver
skipping to change at page 8, line 41 skipping to change at line 353
advertising more conservative values, e.g., a higher LSP Transmission advertising more conservative values, e.g., a higher LSP Transmission
Interval. When the transmitters receive the LSP Transmission Interval. When the transmitters receive the LSP Transmission
Interval value advertised by an LSP receiver, the transmitters should Interval value advertised by an LSP receiver, the transmitters should
rate-limit LSPs according to the advertised flooding parameters. rate-limit LSPs according to the advertised flooding parameters.
They should not apply any further interpretation to the flooding They should not apply any further interpretation to the flooding
parameters advertised by the receiver. parameters advertised by the receiver.
A given LSP transmitter will receive multiple flooding parameter A given LSP transmitter will receive multiple flooding parameter
advertisements from different receivers that may include different advertisements from different receivers that may include different
flooding parameter values. A given transmitter SHOULD use the most flooding parameter values. A given transmitter SHOULD use the most
convervative value on a per-parameter basis. For example, if the conservative value on a per-parameter basis. For example, if the
transmitter receives multiple LSP Burst Size values, it should use transmitter receives multiple LSP Burst Size values, it should use
the smallest value. the smallest value.
The Designated Intermediate System (DIS) plays a special role in the The Designated Intermediate System (DIS) plays a special role in the
operation of flooding on the LAN as it is responsible for responding operation of flooding on the LAN as it is responsible for responding
to PSNPs sent on the LAN circuit which are used to request LSPs that to PSNPs sent on the LAN circuit that are used to request LSPs that
the sender of the PSNP does not have. If the DIS does not support the sender of the PSNP does not have. If the DIS does not support
faster flooding, this will impact the maximum flooding speed which faster flooding, this will impact the maximum flooding speed that
could occur on a LAN. Use of LAN priority to prefer a node which could occur on a LAN. Use of LAN priority to prefer a node that
supports faster flooding in the DIS election may be useful. supports faster flooding in the DIS election may be useful.
NOTE: The focus of work used to develop the example algorithms | Note: The focus of work used to develop the example algorithms
discussed later in this document focused on operation over point-to- | discussed later in this document focused on operation over
point interfaces. A full discussion of how best to do faster | point-to-point interfaces. A full discussion of how best to do
flooding on a LAN interface is therefore out of scope for this | faster flooding on a LAN interface is therefore out of scope
document. | for this document.
5. Performance improvement on the receiver 5. Performance Improvement on the Receiver
This section defines two behaviors that SHOULD be implemented on the This section defines two behaviors that SHOULD be implemented on the
receiver. receiver.
5.1. Rate of LSP Acknowledgments 5.1. Rate of LSP Acknowledgments
On point-to-point networks, PSNPs provide acknowledgments for On point-to-point networks, PSNPs provide acknowledgments for
received LSPs. [ISO10589] suggests that some delay be used when received LSPs. [ISO10589] suggests using some delay when sending
sending PSNPs. This provides some optimization as multiple LSPs can PSNPs. This provides some optimization as multiple LSPs can be
be acknowledged by a single PSNP. acknowledged by a single PSNP.
Faster LSP flooding benefits from a faster feedback loop. This Faster LSP flooding benefits from a faster feedback loop. This
requires a reduction in the delay in sending PSNPs. requires a reduction in the delay in sending PSNPs.
For the generation of PSNPs, the receiver SHOULD use a For the generation of PSNPs, the receiver SHOULD use a
partialSNPInterval smaller than the one defined in [ISO10589]. The partialSNPInterval smaller than the one defined in [ISO10589]. The
choice of this lower value is a local choice. It may depend on the choice of this lower value is a local choice. It may depend on the
available processing power of the node, the number of adjacencies, available processing power of the node, the number of adjacencies,
and the requirement to synchronize the LSDB more quickly. 200 ms and the requirement to synchronize the LSDB more quickly. 200 ms
seems to be a reasonable value. seems to be a reasonable value.
In addition to the timer-based partialSNPInterval, the receiver In addition to the timer-based partialSNPInterval, the receiver
SHOULD keep track of the number of unacknowledged LSPs per circuit SHOULD keep track of the number of unacknowledged LSPs per circuit
and level. When this number exceeds a preset threshold of LSPs Per and level. When this number exceeds a preset threshold of LSPs per
PSNP (LPP), the receiver SHOULD immediately send a PSNP without PSNP (LPP), the receiver SHOULD immediately send a PSNP without
waiting for the PSNP timer to expire. In the case of a burst of waiting for the PSNP timer to expire. In the case of a burst of
LSPs, this allows for more frequent PSNPs, giving faster feedback to LSPs, this allows more frequent PSNPs, giving faster feedback to the
the sender. Outside of the burst case, the usual time-based PSNP sender. Outside of the burst case, the usual time-based PSNP
approach comes into effect. approach comes into effect.
The smaller the LPP, the faster the feedback to the sender and The smaller the LPP is, the faster the feedback to the sender and
possibly the higher the rate if the rate is limited by the end to end possibly the higher the rate if the rate is limited by the end-to-end
RTT (link RTT + time to acknowledge). This may result in an increase RTT (link RTT + time to acknowledge). This may result in an increase
in the number of PSNPs sent which may increase CPU and IO load on in the number of PSNPs sent, which may increase CPU and IO load on
both the sender and receiver. The LPP should be less than or equal both the sender and receiver. The LPP should be less than or equal
to 90 as this is the maximum number of LSPs that can be acknowledged to 90 as this is the maximum number of LSPs that can be acknowledged
in a PSNP at common MTU sizes, hence waiting longer would not reduce in a PSNP at common MTU sizes; hence, waiting longer would not reduce
the number of PSNPs sent but would delay the acknowledgements. LPP the number of PSNPs sent but would delay the acknowledgments. LPP
should not be chosen too high as the congestion control starts with a should not be chosen too high as the congestion control starts with a
congestion window of LPP+1. Based on experimental evidence, 15 congestion window of LPP + 1. Based on experimental evidence, 15
unacknowledged LSPs is a good value assuming that the Receive Window unacknowledged LSPs is a good value, assuming that the Receive Window
is at least 30. More frequent PSNPs gives the transmitter more is at least 30. More frequent PSNPs give the transmitter more
feedback on receiver progress, allowing the transmitter to continue feedback on receiver progress, allowing the transmitter to continue
transmitting while not burdening the receiver with undue overhead. transmitting while not burdening the receiver with undue overhead.
By deploying both the time-based and the threshold-based PSNP By deploying both the time-based and the threshold-based PSNP
approaches, the receiver can be adaptive to both LSP bursts and approaches, the receiver can be adaptive to both LSP bursts and
infrequent LSP updates. infrequent LSP updates.
As PSNPs also consume link bandwidth, packet-queue space, and As PSNPs also consume link bandwidth, packet-queue space, and
protocol-processing time on receipt, the increased sending of PSNPs protocol-processing time on receipt, the increased sending of PSNPs
should be taken into account when considering the rate at which LSPs should be taken into account when considering the rate at which LSPs
skipping to change at page 10, line 29 skipping to change at line 438
There are three classes of PDUs sent by IS-IS: There are three classes of PDUs sent by IS-IS:
* Hellos * Hellos
* LSPs * LSPs
* Complete Sequence Number PDUs (CSNPs) and PSNPs * Complete Sequence Number PDUs (CSNPs) and PSNPs
Implementations today may prioritize the reception of Hellos over Implementations today may prioritize the reception of Hellos over
LSPs and Sequence Number PDUs (SNPs) in order to prevent a burst of LSPs and Sequence Number PDUs (SNPs) in order to prevent a burst of
LSP updates from triggering an adjacency timeout which in turn would LSP updates from triggering an adjacency timeout, which in turn would
require additional LSPs to be updated. require additional LSPs to be updated.
CSNPs and PSNPs serve to trigger or acknowledge the transmission of CSNPs and PSNPs serve to trigger or acknowledge the transmission of
specified LSPs. On a point-to-point link, PSNPs acknowledge the specified LSPs. On a point-to-point link, PSNPs acknowledge the
receipt of one or more LSPs. For this reason, [ISO10589] specifies a receipt of one or more LSPs. For this reason, [ISO10589] specifies a
delay (partialSNPInterval) before sending a PSNP so that the number delay (partialSNPInterval) before sending a PSNP so that the number
of PSNPs required to be sent is reduced. On receipt of a PSNP, the of PSNPs required to be sent is reduced. On receipt of a PSNP, the
set of LSPs acknowledged by that PSNP can be marked so that they do set of LSPs acknowledged by that PSNP can be marked so that they do
not need to be retransmitted. not need to be retransmitted.
If a PSNP is dropped on reception, the set of LSPs advertised in the If a PSNP is dropped on reception, the set of LSPs advertised in the
PSNP cannot be marked as acknowledged and this results in needless PSNP cannot be marked as acknowledged, and this results in needless
retransmissions that will further delay transmission of other LSPs retransmissions that further delay transmission of other LSPs that
that are yet to be transmitted. It may also make it more likely that are yet to be transmitted. It may also make it more likely that a
a receiver becomes overwhelmed by LSP transmissions. receiver becomes overwhelmed by LSP transmissions.
Therefore implementations SHOULD prioritize IS-IS PDUs on the way Therefore, implementations SHOULD prioritize IS-IS PDUs on the way
from the incoming interface to the IS-IS process. The relative from the incoming interface to the IS-IS process. The relative
priority of packets in decreasing order SHOULD be: Hellos, SNPs, priority of packets in decreasing order SHOULD be: Hellos, SNPs, and
LSPs. Implementations MAY also prioritize IS-IS packets over other LSPs. Implementations MAY also prioritize IS-IS packets over other
protocols which are less critical for the router or network, less protocols, which are less critical for the router or network, less
sensitive to delay or more bursty (e.g., BGP). sensitive to delay, or more bursty (e.g., BGP).
6. Congestion and Flow Control 6. Congestion and Flow Control
6.1. Overview 6.1. Overview
Ensuring the goodput between two entities is a layer-4 responsibility Ensuring the goodput between two entities is a Layer 4 responsibility
as per the OSI model. A typical example is the TCP protocol defined as per the OSI model. A typical example is the TCP protocol defined
in [RFC9293] that provides flow control, congestion control, and in [RFC9293] that provides flow control, congestion control, and
reliability. reliability.
Flow control creates a control loop between a transmitter and a Flow control creates a control loop between a transmitter and a
receiver so that the transmitter does not overwhelm the receiver. receiver so that the transmitter does not overwhelm the receiver.
TCP provides a means for the receiver to govern the amount of data TCP provides a means for the receiver to govern the amount of data
sent by the sender through the use of a sliding window. sent by the sender through the use of a sliding window.
Congestion control prevents the set of transmitters from overwhelming Congestion control prevents the set of transmitters from overwhelming
the path of the packets between two IS-IS implementations. This path the path of the packets between two IS-IS implementations. This path
typically includes a point-to-point link between two IS-IS neighbors typically includes a point-to-point link between two IS-IS neighbors,
which is usually over-sized compared to the capability of the IS-IS which is usually oversized compared to the capability of the IS-IS
speakers, but potentially some internal elements inside each neighbor speakers, but potentially also includes some internal elements inside
such as switching fabric, line card CPU, and forwarding plane buffers each neighbor such as switching fabric, line card CPU, and forwarding
that may experience congestion. These resources may be shared across plane buffers that may experience congestion. These resources may be
multiple IS-IS adjacencies for the system and it is the shared across multiple IS-IS adjacencies for the system, and it is
responsibility of congestion control to ensure that these are shared the responsibility of congestion control to ensure that these are
reasonably. shared reasonably.
Reliability provides loss detection and recovery. IS-IS already has Reliability provides loss detection and recovery. IS-IS already has
mechanisms to ensure the reliable transmission of LSPs. This is not mechanisms to ensure the reliable transmission of LSPs. This is not
changed by this document. changed by this document.
The following two sections provide two Flow and/or Congestion control The following two sections provide two flow and/or congestion control
algorithms that may be implemented by taking advantage of the algorithms that may be implemented by taking advantage of the
extensions defined in this document. The signal that these IS-IS extensions defined in this document. The signal that these IS-IS
extensions defined in Section 4 and Section 5 provide are generic and extensions (defined in Sections 4 and 5) provide is generic and is
are designed to support different sender-side algorithms. A sender designed to support different sender-side algorithms. A sender can
can unilaterally choose a different algorithm to use. unilaterally choose a different algorithm to use.
6.2. Congestion and Flow Control algorithm 6.2. Congestion and Flow Control Algorithm
6.2.1. Flow control 6.2.1. Flow Control
A flow control mechanism creates a control loop between a single A flow control mechanism creates a control loop between a single
instance of a transmitter and a single receiver. This section uses a instance of a transmitter and a single receiver. This section uses a
mechanism similar to the TCP receive window to allow the receiver to mechanism similar to the TCP receive window to allow the receiver to
govern the amount of data sent by the sender. This receive window govern the amount of data sent by the sender. This receive window
('rwin') indicates an allowed number of LSPs that the sender may ('rwin') indicates an allowed number of LSPs that the sender may
transmit before waiting for an acknowledgment. The size of the transmit before waiting for an acknowledgment. The size of the
receive window, in units of LSPs, is initialized with the value receive window, in units of LSPs, is initialized with the value
advertised by the receiver in the Receive Window sub-TLV. If no advertised by the receiver in the Receive Window sub-TLV. If no
value is advertised, the transmitter should initialize rwin with its value is advertised, the transmitter should initialize rwin with its
locally configured value for this neighbor. locally configured value for this neighbor.
When the transmitter sends a set of LSPs to the receiver, it When the transmitter sends a set of LSPs to the receiver, it
subtracts the number of LSPs sent from rwin. If the transmitter subtracts the number of LSPs sent from rwin. If the transmitter
receives a PSNP, then rwin is incremented for each acknowledged LSP. receives a PSNP, then rwin is incremented for each acknowledged LSP.
The transmitter must ensure that the value of rwin never goes The transmitter must ensure that the value of rwin never goes
negative. negative.
The RWIN value is of importance when the RTT is the limiting factor The RWIN value is of importance when the RTT is the limiting factor
for the throughput. In this case the optimal size is the desired LSP for the throughput. In this case, the optimal size is the desired
rate multiplied by the RTT. The RTT being the addition of the link LSP rate multiplied by the RTT. The RTT is the addition of the link
RTT plus the time taken by the receiver to acknowledge the first RTT plus the time taken by the receiver to acknowledge the first
received LSP in its PSNP. 50 or 100 may be reasonable default received LSP in its PSNP. 50 or 100 may be reasonable default
numbers. As an example, a RWIN of 100 requires a control plane input numbers. As an example, an RWIN of 100 requires a control plane
buffer of 150 kbytes per neighbor assuming an IS-IS MTU of 1500 input buffer of 150 kbytes per neighbor assuming an IS-IS MTU of 1500
octets and limits the throughput to 10000 LSPs per second and per octets and limits the throughput to 10000 LSPs per second and per
neighbor for a link RTT of 10 ms. With the same RWIN, the throughput neighbor for a link RTT of 10 ms. With the same RWIN, the throughput
limitation is 2000 LSP per second when the RTT is 50ms. That's the limitation is 2000 LSPs per second when the RTT is 50 ms. That's the
maximum throughput assuming no other limitations such as CPU maximum throughput assuming no other limitations such as CPU
limitations. limitations.
Equally RTT is of importance for the performance. That is why the Equally, RTT is of importance for the performance. That is why the
performance improvements on the receiver specified in section performance improvements on the receiver specified in Section 5 are
Section 5 are important to achieve good throughput. If the receiver important to achieve good throughput. If the receiver does not
does not support those performance improvements, in the worst case support those performance improvements, in the worst case (small RWIN
(small RWIN and high RTT) the throughput will be limited by the LSP and high RTT) the throughput will be limited by the LSP Transmission
Transmission Interval as defined in section Section 4.2. Interval as defined in Section 4.2.
6.2.1.1. Operation on a point to point interface 6.2.1.1. Operation on a Point-to-Point Interface
By sending the Receive Window sub-TLV, a node advertises to its By sending the Receive Window sub-TLV, a node advertises to its
neighbor its ability to receive that many un-acknowledged LSPs from neighbor its ability to receive that many unacknowledged LSPs from
the neighbor. This is akin to a receive window or sliding window in the neighbor. This is akin to a receive window or sliding window in
flow control. In some implementations, this value should reflect the flow control. In some implementations, this value should reflect the
IS-IS socket buffer size. Special care must be taken to leave space IS-IS socket buffer size. Special care must be taken to leave space
for CSNPs and PSNPs and IIHs if they share the same input queue. In for CSNPs, PSNPs, and IIHs if they share the same input queue. In
this case, this document suggests advertising an LSP Receive Window this case, this document suggests advertising an LSP Receive Window
corresponding to half the size of the IS-IS input queue. corresponding to half the size of the IS-IS input queue.
By advertising an LSP Transmission Interval sub-TLV, a node By advertising an LSP Transmission Interval sub-TLV, a node
advertises its ability to receive LSPs separated by at least the advertises its ability to receive LSPs separated by at least the
advertised value, outside of LSP bursts. advertised value, outside of LSP bursts.
By advertising an LSP Burst Size sub-TLV, a node advertises its By advertising an LSP Burst Size sub-TLV, a node advertises its
ability to receive that number of LSPs back-to-back. ability to receive that number of LSPs back to back.
The LSP transmitter MUST NOT exceed these parameters. After having The LSP transmitter MUST NOT exceed these parameters. After having
sent a full burst of LSPs, it MUST send the subsequent LSPs with a sent a full burst of LSPs, it MUST send the subsequent LSPs with a
minimum of LSP Transmission Interval between LSP transmissions. For minimum of LSP Transmission Interval between LSP transmissions. For
CPU scheduling reasons, this rate MAY be averaged over a small CPU scheduling reasons, this rate MAY be averaged over a small
period, e.g., 10-30ms. period, e.g., 10-30 ms.
If either the LSP transmitter or receiver does not adhere to these If either the LSP transmitter or receiver does not adhere to these
parameters, for example because of transient conditions, this doesn't parameters, for example, because of transient conditions, this
result in a fatal condition for IS-IS operation. In the worst case, doesn't result in a fatal condition for IS-IS operation. In the
an LSP is lost at the receiver and this situation is already remedied worst case, an LSP is lost at the receiver, and this situation is
by mechanisms in [ISO10589]. After a few seconds, neighbors will already remedied by mechanisms in [ISO10589]. After a few seconds,
exchange PSNPs (for point-to-point interfaces) or CSNPs (for neighbors will exchange PSNPs (for point-to-point interfaces) or
broadcast interfaces) and recover from the lost LSPs. This worst CSNPs (for broadcast interfaces) and recover from the lost LSPs.
case should be avoided as those additional seconds impact convergence This worst case should be avoided as those additional seconds impact
time since the LSDB is not fully synchronized. Hence it is better to convergence time since the LSDB is not fully synchronized. Hence, it
err on the conservative side and to under-run the receiver rather is better to err on the conservative side and to under-run the
than over-run it. receiver rather than over-run it.
6.2.1.2. Operation on a broadcast LAN interface 6.2.1.2. Operation on a Broadcast LAN Interface
Flow and congestion control on a LAN interface is out of scope for Flow and congestion control on a LAN interface is out of scope for
this document. this document.
6.2.2. Congestion Control 6.2.2. Congestion Control
Whereas flow control prevents the sender from overwhelming the Whereas flow control prevents the sender from overwhelming the
receiver, congestion control prevents senders from overwhelming the receiver, congestion control prevents senders from overwhelming the
network. For an IS-IS adjacency, the network between two IS-IS network. For an IS-IS adjacency, the network between two IS-IS
neighbors is relatively limited in scope and includes a single link neighbors is relatively limited in scope and includes a single link
which is typically over-sized compared to the capability of the IS-IS that is typically oversized compared to the capability of the IS-IS
speakers. In situations where the probability of LSP drop is low, speakers. In situations where the probability of LSP drop is low,
flow control Section 6.2.1 is expected to give good results, without flow control (Section 6.2.1) is expected to give good results,
the need to implement congestion control. Otherwise, adding without the need to implement congestion control. Otherwise, adding
congestion control will help handling congestion of LSPs in the congestion control will help handling congestion of LSPs in the
receiver. receiver.
This section describes one sender-side congestion control algorithm This section describes one sender-side congestion control algorithm
largely inspired by the TCP congestion control algorithm [RFC5681]. largely inspired by the TCP congestion control algorithm [RFC5681].
The proposed algorithm uses a variable congestion window 'cwin'. It The proposed algorithm uses a variable congestion window 'cwin'. It
plays a role similar to the receive window described above. The main plays a role similar to the receive window described above. The main
difference is that cwin is adjusted dynamically according to various difference is that cwin is adjusted dynamically according to various
events described below. events described below.
6.2.2.1. Core algorithm 6.2.2.1. Core Algorithm
In its simplest form, the congestion control algorithm looks like the In its simplest form, the congestion control algorithm looks like the
following: following:
+---------------+ +---------------+
| | | |
| v | v
| +----------------------+ | +----------------------+
| | Congestion avoidance | | | Congestion avoidance |
| + ---------------------+ | + ---------------------+
| | | |
| | Congestion signal | | Congestion signal
----------------+ ----------------+
Figure 1 Figure 1
The algorithm starts with cwin = cwin0 = LPP + 1. In the congestion The algorithm starts with cwin = cwin0 = LPP + 1. In the congestion
avoidance phase, cwin increases as LSPs are acked: for every acked avoidance phase, cwin increases as LSPs are acked: for every acked
LSP, cwin += 1 / cwin without exceeding RWIN. When LSPs are LSP, cwin += 1 / cwin without exceeding RWIN. When LSPs are
exchanged, cwin LSPs will be acknowledged in 1 RTT, meaning cwin(t) = exchanged, cwin LSPs will be acknowledged in 1 RTT, meaning cwin(t) =
t/RTT + cwin0. Since the RTT is low in many IS-IS deployments, the t/RTT + cwin0. Since the RTT is low in many IS-IS deployments, the
sending rate can reach fast rates in short periods of time. sending rate can reach fast rates in short periods of time.
When updating cwin, it must not become higher than the number of LSPs When updating cwin, it must not become higher than the number of LSPs
waiting to be sent, otherwise the sending will not be paced by the waiting to be sent, otherwise the sending will not be paced by the
receiving of acks. Said differently, tx pressure is needed to receiving of acks. Said differently, transmission pressure is needed
maintain and increase cwin. to maintain and increase cwin.
When the congestion signal is triggered, cwin is set back to its When the congestion signal is triggered, cwin is set back to its
initial value and the congestion avoidance phase starts again. initial value, and the congestion avoidance phase starts again.
6.2.2.2. Congestion signals 6.2.2.2. Congestion Signals
The congestion signal can take various forms. The more reactive the The congestion signal can take various forms. The more reactive the
congestion signals, the fewer LSPs will be lost due to congestion. congestion signals, the fewer LSPs will be lost due to congestion.
However, overly aggressive congestion signals will cause a sender to However, overly aggressive congestion signals will cause a sender to
keep a very low sending rate even without actual congestion on the keep a very low sending rate even without actual congestion on the
path. path.
Two practical signals are given below. Two practical signals are given below.
Delay: When receiving acknowledgements, a sender estimates the 1. Delay: When receiving acknowledgments, a sender estimates the
acknowledgement time of the receiver. Based on this estimation, it acknowledgment time of the receiver. Based on this estimation,
can infer that a packet was lost, and infer congestion on the path. it can infer that a packet was lost and that congestion is on the
path.
There can be a timer per LSP, but this can become costly for There can be a timer per LSP, but this can become costly for
implementations. It is possible to use only a single timer t1 for implementations. It is possible to use only a single timer t1
all LSPs: during t1, sent LSPs are recorded in a list list_1. Once for all LSPs: during t1, sent LSPs are recorded in a list list_1.
the RTT is over, list_1 is kept and another list list_2 is used to Once the RTT is over, list_1 is kept and another list, list_2, is
store the next LSPs. LSPs are removed from the lists when acked. At used to store the next LSPs. LSPs are removed from the lists
the end of the second t1 period, every LSP in list_1 should have been when acked. At the end of the second t1 period, every LSP in
acked, so list_1 is checked to be empty. list_1 can then be reused list_1 should have been acked, so list_1 is checked to be empty.
for the next RTT. list_1 can then be reused for the next RTT.
There are multiple strategies to set the timeout value t1. It should There are multiple strategies to set the timeout value t1. It
be based on measurements of the maximum acknowledgement time (MAT) of should be based on measurements of the maximum acknowledgment
each PSNP. The simplest one is to use three times the RTT. time (MAT) of each PSNP. The simplest one is to use three times
Alternatively an exponential moving average of the MATs, like the RTT. Alternatively an exponential moving average of the
[RFC6298]. A more elaborate one is to take a running maximum of the MATs, like [RFC6298]. A more elaborate one is to take a running
MATs over a period of a few seconds. This value should include a maximum of the MATs over a period of a few seconds. This value
margin of error to avoid false positives (e.g., estimated MAT measure should include a margin of error to avoid false positives (e.g.,
variance) which would have a significant impact on performance. estimated MAT measure variance), which would have a significant
impact on performance.
Loss: if the receiver has signaled the O-flag (Ordered 2. Loss: if the receiver has signaled the O-flag (see Section 4.4),
acknowledgement) Section 4.4, a sender MAY record its sending order a sender MAY record its sending order and check that
and check that acknowledgements arrive in the same order. If not, acknowledgments arrive in the same order. If not, some LSPs are
some LSPs are missing and this MAY be used to trigger a congestion missing, and this MAY be used to trigger a congestion signal.
signal.
6.2.2.3. Refinement 6.2.2.3. Refinement
With the algorithm presented above, if congestion is detected, cwin With the algorithm presented above, if congestion is detected, cwin
goes back to its initial value, and does not use the information goes back to its initial value and does not use the information
gathered in previous congestion avoidance phases. gathered in previous congestion avoidance phases.
It is possible to use a fast recovery phase once congestion is It is possible to use a fast recovery phase once congestion is
detected, to avoid going through this linear rate of growth from detected and to avoid going through this linear rate of growth from
scratch. When congestion is detected, a fast recovery threshold scratch. When congestion is detected, a fast recovery threshold
frthresh is set to frthresh = cwin / 2. In this fast recovery phase, frthresh is set to frthresh = cwin / 2. In this fast recovery phase,
for every acked LSP, cwin += 1. Once cwin reaches frthresh, the for every acked LSP, cwin += 1. Once cwin reaches frthresh, the
algorithm goes back to the congestion avoidance phase. algorithm goes back to the congestion avoidance phase.
+---------------+ +---------------+
| | | |
| v | v
| +----------------------+ | +----------------------+
| | Congestion avoidance | | | Congestion avoidance |
| + ---------------------+ | + ---------------------+
| | | |
| | Congestion signal | | Congestion signal
| | | |
| +----------------------+ | +----------------------+
| | Fast recovery | | | Fast recovery |
| +----------------------+ | +----------------------+
| | | |
| | frthresh reached | | frthresh reached
----------------+ ----------------+
Figure 2 Figure 2
6.2.2.4. Remarks 6.2.2.4. Remarks
This algorithm's performance is dependent on the LPP value. Indeed, This algorithm's performance is dependent on the LPP value. Indeed,
the smaller LPP is, the more information is available for the the smaller the LPP is, the more information is available for the
congestion control algorithm to perform well. However, it also congestion control algorithm to perform well. However, it also
increases the resources spent on sending PSNPs, so a trade-off must increases the resources spent on sending PSNPs, so a trade-off must
be made. This document recommends to use an LPP of 15 or less. If a be made. This document recommends using an LPP of 15 or less. If a
Receive Window is advertised, LPP SHOULD be lower and the best Receive Window is advertised, LPP SHOULD be lower, and the best
performance is achieved when LPP is an integer fraction of the performance is achieved when LPP is an integer fraction of the
Receive Window. Receive Window.
Note that this congestion control algorithm benefits from the Note that this congestion control algorithm benefits from the
extensions proposed in this document. The advertisement of a receive extensions proposed in this document. The advertisement of a receive
window from the receiver (Section 6.2.1) avoids the use of an window from the receiver (Section 6.2.1) avoids the use of an
arbitrary maximum value by the sender. The faster acknowledgment of arbitrary maximum value by the sender. The faster acknowledgment of
LSPs (Section 5.1) allows for a faster control loop and hence a LSPs (Section 5.1) allows for a faster control loop and hence a
faster increase of the congestion window in the absence of faster increase of the congestion window in the absence of
congestion. congestion.
6.2.3. Pacing 6.2.3. Pacing
As discussed in [RFC9002], Section 7.7 a sender SHOULD pace sending As discussed in [RFC9002], Section 7.7, a sender SHOULD pace sending
of all in-flight LSPs based on input from the congestion controller. of all in-flight LSPs based on input from the congestion controller.
Sending multiple packets without any delay between them creates a Sending multiple packets without any delay between them creates a
packet burst that might cause short-term congestion and losses. packet burst that might cause short-term congestion and losses.
Senders MUST either use pacing or limit such bursts. Senders SHOULD Senders MUST either use pacing or limit such bursts. Senders SHOULD
limit bursts to LSP Burst Size. limit bursts to LSP Burst Size.
Senders can implement pacing as they choose. A perfectly paced Senders can implement pacing as they choose. A perfectly paced
sender spreads packets evenly over time. For a window-based sender spreads packets evenly over time. For a window-based
congestion controller, such as the one in this section, that rate can congestion controller, such as the one in this section, that rate can
be computed by averaging the congestion window over the RTT. be computed by averaging the congestion window over the RTT.
Expressed as an inter-packet interval in units of time: Expressed as an inter-packet interval in units of time:
interval = (SRTT / cwin) / N interval = (SRTT / cwin) / N
SRTT is the smoothed round-trip time [RFC6298] SRTT is the Smoothed Round-Trip Time [RFC6298].
Using a value for N that is small, but at least 1 (for example, 1.25) Using a value for N that is small, but at least 1 (for example,
ensures that variations in RTT do not result in underutilization of 1.25), ensures that variations in RTT do not result in
the congestion window. underutilization of the congestion window.
Practical considerations, such as scheduling delays and computational Practical considerations, such as scheduling delays and computational
efficiency, can cause a sender to deviate from this rate over time efficiency, can cause a sender to deviate from this rate over time
periods that are much shorter than an RTT. periods that are much shorter than an RTT.
One possible implementation strategy for pacing uses a leaky bucket One possible implementation strategy for pacing uses a leaky bucket
algorithm, where the capacity of the "bucket" is limited to the algorithm, where the capacity of the "bucket" is limited to the
maximum burst size and the rate that the "bucket" fills is determined maximum burst size, and the rate that the "bucket" fills is
by the above function. determined by the above function.
6.2.4. Determining values to be advertised in the Flooding Parameters 6.2.4. Determining Values to be Advertised in the Flooding Parameters
TLV TLV
The values that a receiver advertises do not need to be perfect. If The values that a receiver advertises do not need to be perfect. If
the values are too low then the transmitter will not use the full the values are too low, then the transmitter will not use the full
bandwidth or available CPU resources. If the values are too high bandwidth or available CPU resources. If the values are too high,
then the receiver may drop some LSPs during the first RTT and this then the receiver may drop some LSPs during the first RTT, and this
loss will reduce the usable receive window and the protocol loss will reduce the usable receive window, and the protocol
mechanisms will allow the adjacency to recover. Flooding slower than mechanisms will allow the adjacency to recover. Flooding slower than
both nodes can support will hurt performance, as will consistently both nodes can support will hurt performance as will consistently
overloading the receiver. overloading the receiver.
6.2.4.1. Static values 6.2.4.1. Static Values
The values advertised need not be dynamic as feedback is provided by The values advertised need not be dynamic, as feedback is provided by
the acknowledgment of LSPs in SNP messages. Acknowledgments provide the acknowledgment of LSPs in SNP messages. Acknowledgments provide
a feedback loop on how fast the LSPs are processed by the receiver. a feedback loop on how fast the LSPs are processed by the receiver.
They also signal that the LSPs can be removed from receive window, They also signal that the LSPs can be removed from the receive
explicitly signaling to the sender that more LSPs may be sent. By window, explicitly signaling to the sender that more LSPs may be
advertising relatively static parameters, we expect to produce sent. By advertising relatively static parameters, we expect to
overall flooding behavior similar to what might be achieved by produce overall flooding behavior similar to what might be achieved
manually configuring per-interface LSP rate-limiting on all by manually configuring per-interface LSP rate-limiting on all
interfaces in the network. The advertised values could be based, for interfaces in the network. The advertised values could be based, for
example, on offline tests of the overall LSP-processing speed for a example, on offline tests of the overall LSP-processing speed for a
particular set of hardware and the number of interfaces configured particular set of hardware and the number of interfaces configured
for IS-IS. With such a formula, the values advertised in the for IS-IS. With such a formula, the values advertised in the
Flooding Parameters TLV would only change when additional IS-IS Flooding Parameters TLV would only change when additional IS-IS
interfaces are configured. interfaces are configured.
Static values are dependent on the CPU generation, class of router Static values are dependent on the CPU generation, class of router,
and network scaling, typically the number of adjacent neighbors. and network scaling, typically the number of adjacent neighbors.
Examples at the time of publication are provided below. LSP Burst Examples at the time of publication are provided below. The LSP
Size could be in the range 5 to 20. From a router perspective, this Burst Size could be in the range 5 to 20. From a router perspective,
value typically depends on the queue(s) size(s) on the I/O path from this value typically depends on the queue(s) size(s) on the I/O path
the packet forwarding engine to the control plane which is very from the packet forwarding engine to the control plane, which is very
platform dependent. It also depends upon how many IS-IS neighbors platform-dependent. It also depends upon how many IS-IS neighbors
share this I/O path as typically all neighbors will send the same share this I/O path, as typically all neighbors will send the same
LSPs at the same time. It may also depend on other incoming control LSPs at the same time. It may also depend on other incoming control
plane traffic sharing that I/O path, how bursty they are, and how plane traffic that is sharing that I/O path, how bursty they are, and
many incoming IS-IS packets are prioritized over other incoming how many incoming IS-IS packets are prioritized over other incoming
control plane traffic. As indicated in Section 3, the historical control plane traffic. As indicated in Section 3, the historical
behavior from [ISO10589] allows a value of 10 hence 10 seems behavior from [ISO10589] allows a value of 10; hence, 10 seems
conservative. From a network operation perspective, it would be conservative. From a network operation perspective, it would be
beneficial for the burst size to be equal to or higher than the beneficial for the burst size to be equal to or higher than the
number of LSPs which may be originated by a single failure. For a number of LSPs that may be originated by a single failure. For a
node failure, this is equal to the number of IS-IS neighbors of the node failure, this is equal to the number of IS-IS neighbors of the
failed node. LSP Transmission Interval could be in the range of 1 ms failed node. The LSP Transmission Interval could be in the range of
to 33 ms. As indicated in Section 3, the historical behavior from 1 ms to 33 ms. As indicated in Section 3, the historical behavior
[ISO10589] is 33ms hence is conservative. The LSP Transmission from [ISO10589] is 33 ms; hence, 33 ms is conservative. The LSP
Interval is an advertisement of the receiver's sustainable LSP Transmission Interval is an advertisement of the receiver's
reception rate taking into account all aspects and in particular the sustainable LSP reception rate taking into account all aspects and
control plane CPU and the I/O bandwidth. It's expected to improve particularly the control plane CPU and the I/O bandwidth. It's
(hence decrease) as hardware and software naturally improve over expected to improve (hence, decrease) as hardware and software
time. It should be chosen conservatively as this rate may be used by naturally improve over time. It should be chosen conservatively, as
the sender in all conditions including the worst conditions. It's this rate may be used by the sender in all conditions -- including
also not a bottleneck as the flow control algorithm may use a higher the worst conditions. It's also not a bottleneck as the flow control
rate in good conditions, in particular when the receiver acknowledges algorithm may use a higher rate in good conditions, particularly when
quickly and the receive window is large enough compared to the RTT. the receiver acknowledges quickly, and the receive window is large
LPP could be in the range of 5 to 90 with a proposed 15. A smaller enough compared to the RTT. LPP could be in the range of 5 to 90
value provides faster feedback at the cost of the small overhead of with a proposed 15. A smaller value provides faster feedback at the
more PSNP messages. PartialSNPInterval could be in the range 50ms to cost of the small overhead of more PSNP messages. PartialSNPInterval
500ms with a proposed 200ms. One may distinguish the value used could be in the range 50 to 500 ms with a proposed value of 200 ms.
locally from the value signaled to the sender. The value used One may distinguish the value used locally from the value signaled to
locally benefits from being small but is not expected to be the main the sender. The value used locally benefits from being small but is
parameter to improve performance. It depends on how fast the IS-IS not expected to be the main parameter to improve performance. It
flooding process may be scheduled by the CPU. It's safe as, even depends on how fast the IS-IS flooding process may be scheduled by
when the receiver CPU is busy, it will naturally delay its the CPU. Even when the receiver CPU is busy, it's safe because it
acknowledgments which provides a negative feedback loop. The value will naturally delay its acknowledgments, which provides a negative
advertised to the sender should be conservative (high enough) as this feedback loop. The value advertised to the sender should be
value could be used by the sender to send some LSPs rather than keep conservative (high enough) as this value could be used by the sender
waiting for acknowledgments. Receive Window in the range of 30 to to send some LSPs rather than keep waiting for acknowledgments.
200 with a proposed 60. In general, the larger the better the Receive Window could be in the range of 30 to 200 with a proposed
performance on links with high RTT. The higher the number and the value of 60. In general, the larger the better the performance on
higher the number of IS-IS neighbors, the higher the use of control links with high RTT. The higher that number and the higher the
plane memory so it's mostly dependent on the amount of memory which number of IS-IS neighbors, the higher the use of control plane
may be dedicated to IS-IS flooding and the number of IS-IS neighbors. memory, so it's mostly dependent on the amount of memory, which may
From a memory usage perspective, a priori, one could use the same be dedicated to IS-IS flooding and the number of IS-IS neighbors.
From a memory usage perspective (a priori), one could use the same
value as the TCP receive window, but the value advertised should not value as the TCP receive window, but the value advertised should not
be higher than the buffer of the "socket" used. be higher than the buffer of the "socket" used.
6.2.4.2. Dynamic values 6.2.4.2. Dynamic Values
The values may be updated dynamically, to reflect the relative change To reflect the relative change of load on the receiver, the values
of load on the receiver, by improving the values when the receiver may be updated dynamically by improving the values when the receiver
load is getting lower and degrading the values when the receiver load load is getting lower and by degrading the values when the receiver
is getting higher. For example, if LSPs are regularly dropped, or if load is getting higher. For example, if LSPs are regularly dropped,
the queue regularly comes close to being filled, then the values may or if the queue regularly comes close to being filled, then the
be too high. On the other hand, if the queue is barely used (by IS- values may be too high. On the other hand, if the queue is barely
IS), then the values may be too low. used (by IS-IS), then the values may be too low.
The values may also be absolute value reflecting relevant average The values may also be absolute value reflecting relevant average
hardware resources that are monitored, typically the amount of buffer hardware resources that are monitored, typically the amount of buffer
space used by incoming LSPs. In this case, care must be taken when space used by incoming LSPs. In this case, care must be taken when
choosing the parameters influencing the values in order to avoid choosing the parameters influencing the values in order to avoid
undesirable or unstable feedback loops. It would be undesirable to undesirable or unstable feedback loops. For example, it would be
use a formula that depends, for example, on an active measurement of undesirable to use a formula that depends on an active measurement of
the instantaneous CPU load to modify the values advertised in the the instantaneous CPU load to modify the values advertised in the
Flooding Parameters TLV. This could introduce feedback into the IGP Flooding Parameters TLV. This could introduce feedback into the IGP
flooding process that could produce unexpected behavior. flooding process that could produce unexpected behavior.
6.2.5. Operation considerations 6.2.5. Operation Considerations
As discussed in Section 4.7, the solution is more effective on point- As discussed in Section 4.7, the solution is more effective on point-
to-point adjacencies. Hence a broadcast interface (e.g., Ethernet) to-point adjacencies. Hence, a broadcast interface (e.g., Ethernet)
only shared by two IS-IS neighbors should be configured as point-to- only shared by two IS-IS neighbors should be configured as point-to-
point in order to have more effective flooding. point in order to have more effective flooding.
6.3. Transmitter Based Congestion Control Approach 6.3. Transmitter-Based Congestion Control Approach
This section describes an approach to congestion control algorithm This section describes an approach to the congestion control
based on performance measured by the transmitter without dependance algorithm based on performance measured by the transmitter without
on signaling from the receiver. dependence on signaling from the receiver.
6.3.1. Router Architecture Discussion 6.3.1. Router Architecture Discussion
(The following description is an abstraction - implementation details Note that the following description is an abstraction; implementation
vary.) details vary.
Existing router architectures may utilize multiple input queues. On Existing router architectures may utilize multiple input queues. On
a given line card, IS-IS PDUs from multiple interfaces may be placed a given line card, IS-IS PDUs from multiple interfaces may be placed
in a rate-limited input queue. This queue may be dedicated to IS-IS in a rate-limited input queue. This queue may be dedicated to IS-IS
PDUs or may be shared with other routing related packets. PDUs or may be shared with other routing related packets.
The input queue may then pass IS-IS PDUs to a "punt queue" which is The input queue may then pass IS-IS PDUs to a "punt queue," which is
used to pass PDUs from the data plane to the control plane. The punt used to pass PDUs from the data plane to the control plane. The punt
queue typically also has controls on its size and the rate at which queue typically also has controls on its size and the rate at which
packets will be punted. packets will be punted.
An input queue in the control plane may then be used to assemble PDUs An input queue in the control plane may then be used to assemble PDUs
from multiple linecards, separate the IS-IS PDUs from other types of from multiple line cards, separate the IS-IS PDUs from other types of
packets, and place the IS-IS PDUs on an input queue dedicated to the packets, and place the IS-IS PDUs in an input queue dedicated to the
IS-IS protocol. IS-IS protocol.
The IS-IS input queue then separates the IS-IS PDUs and directs them The IS-IS input queue then separates the IS-IS PDUs and directs them
to an instance-specific processing queue. The instance-specific to an instance-specific processing queue. The instance-specific
processing queue may then further separate the IS-IS PDUs by type processing queue may then further separate the IS-IS PDUs by type
(IIHs, SNPs, and LSPs) so that separate processing threads with (IIHs, SNPs, and LSPs) so that separate processing threads with
varying priorities may be employed to process the incoming PDUs. varying priorities may be employed to process the incoming PDUs.
In such an architecture, it may be difficult for IS-IS in the control In such an architecture, it may be difficult for IS-IS in the control
plane to determine what value should be advertised as a receive plane to determine what value should be advertised as a receive
window. window.
The following section describes an approach to congestion control The following section describes an approach to congestion control
based on performance measured by the transmitter without dependance based on performance measured by the transmitter without dependence
on signaling from the receiver. on signaling from the receiver.
6.3.2. Guidelines for transmitter side congestion controls 6.3.2. Guidelines for Transmitter-Side Congestion Controls
The approach described in this section does not depend upon direct The approach described in this section does not depend upon direct
signaling from the receiver. Instead it adapts the transmission rate signaling from the receiver. Instead, it adapts the transmission
based on measurement of the actual rate of acknowledgments received. rate based on measurement of the actual rate of acknowledgments
received.
Flow control is not used by this approach. When congestion control Flow control is not used by this approach. When congestion control
is necessary, it can be implemented based on knowledge of the current is necessary, it can be implemented based on knowledge of the current
flooding rate and the current acknowledgement rate. The algorithm flooding rate and the current acknowledgment rate. The algorithm
used is a local matter. There is no requirement to standardize it used is a local matter. There is no requirement to standardize it,
but there are a number of aspects which serve as guidelines which can but there are a number of aspects that serve as guidelines that can
be described. Algorithms based on this approach should follow the be described. Algorithms based on this approach should follow the
recommendations described below. recommendations described below.
A maximum LSP transmission rate (LSPTxMax) should be configurable. A maximum LSP transmission rate (LSPTxMax) should be configurable.
This represents the fastest LSP transmission rate which will be This represents the fastest LSP transmission rate that will be
attempted. This value should be applicable to all interfaces and attempted. This value should be applicable to all interfaces and
should be consistent network wide. should be consistent network wide.
When the current rate of LSP transmission (LSPTxRate) exceeds the When the current rate of LSP transmission (LSPTxRate) exceeds the
capabilities of the receiver, the congestion control algorithm needs capabilities of the receiver, the congestion control algorithm needs
to quickly and aggressively reduce the LSPTxRate. Slower to quickly and aggressively reduce the LSPTxRate. Slower
responsiveness is likely to result in a larger number of responsiveness is likely to result in a larger number of
retransmissions which can introduce much longer delays in retransmissions, which can introduce much longer delays in
convergence. convergence.
Dynamic increase of the rate of LSP transmission (LSPTxRate) (i.e., Dynamic increase of the rate of LSP transmission (LSPTxRate), i.e.,
faster) should be done less aggressively and only be done when the making the rate faster, should be done less aggressively and only be
neighbor has demonstrated its ability to sustain the current done when the neighbor has demonstrated its ability to sustain the
LSPTxRate. current LSPTxRate.
The congestion control algorithm should not assume the receive The congestion control algorithm should not assume that the receive
performance of a neighbor is static, i.e., it should handle transient performance of a neighbor is static, i.e., it should handle transient
conditions which result in a slower or faster receive rate on the conditions that result in a slower or faster receive rate on the part
part of a neighbor. of a neighbor.
The congestion control algorithm should consider the expected delay The congestion control algorithm should consider the expected delay
time in receiving an acknowledgment. It therefore incorporates the time in receiving an acknowledgment. Therefore, it incorporates the
neighbor partialSNPInterval (Section 4.5) to help determine whether neighbor partialSNPInterval (Section 4.5) to help determine whether
acknowlegments are keeping pace with the rate of LSPs transmitted. acknowledgments are keeping pace with the rate of LSPs transmitted.
In the absence of an advertisement of partialSNPInterval, a locally In the absence of an advertisement of partialSNPInterval, a locally
configured value can be used. configured value can be used.
7. IANA Considerations 7. IANA Considerations
7.1. Flooding Parameters TLV 7.1. Flooding Parameters TLV
IANA has made the following temporary allocation from the IS-IS TLV IANA has made the following allocation in the "IS-IS Top-Level TLV
codepoint registry. This document requests the allocation be made Codepoints" registry.
permanent.
Type Description IIH LSP SNP Purge +=======+=========================+=====+=====+=====+=======+
---- --------------------------- --- --- --- --- | Value | Name | IIH | LSP | SNP | Purge |
21 Flooding Parameters TLV y n y n +=======+=========================+=====+=====+=====+=======+
| 21 | Flooding Parameters TLV | y | n | y | n |
+-------+-------------------------+-----+-----+-----+-------+
Figure 3 Table 1
7.2. Registry: IS-IS Sub-TLV for Flooding Parameters TLV 7.2. Registry: IS-IS Sub-TLV for Flooding Parameters TLV
This document creates the following sub-TLV Registry under the "IS-IS IANA has created the following sub-TLV registry in the "IS-IS TLV
TLV Codepoints" grouping: Codepoints" registry group.
Name: IS-IS Sub-TLVs for Flooding Parameters TLV.
Registration Procedure(s): Expert Review
Expert(s): TBD
Description: This registry defines sub-TLVs for the Flooding
Parameters TLV(21).
Reference: This document. Name: IS-IS Sub-TLVs for Flooding Parameters TLV
Registration Procedure(s): Expert Review (as defined in [RFC8126])
Description: This registry defines sub-TLVs for the Flooding
Parameters TLV (21).
Reference: RFC 9681
+=======+===========================+ +=======+===========================+
| Type | Description | | Type | Description |
+=======+===========================+ +=======+===========================+
| 0 | Reserved | | 0 | Reserved |
+-------+---------------------------+ +-------+---------------------------+
| 1 | LSP Burst Size | | 1 | LSP Burst Size |
+-------+---------------------------+ +-------+---------------------------+
| 2 | LSP Transmission Interval | | 2 | LSP Transmission Interval |
+-------+---------------------------+ +-------+---------------------------+
| 3 | LSPs Per PSNP | | 3 | LSPs per PSNP |
+-------+---------------------------+ +-------+---------------------------+
| 4 | Flags | | 4 | Flags |
+-------+---------------------------+ +-------+---------------------------+
| 5 | Partial SNP Interval | | 5 | Partial SNP Interval |
+-------+---------------------------+ +-------+---------------------------+
| 6 | Receive Window | | 6 | Receive Window |
+-------+---------------------------+ +-------+---------------------------+
| 7-255 | Unassigned | | 7-255 | Unassigned |
+-------+---------------------------+ +-------+---------------------------+
Table 1: Initial Sub-TLV Table 2: Initial Sub-TLV
allocations for Flooding Allocations for Flooding
Parameters TLV Parameters TLV
7.3. Registry: IS-IS Bit Values for Flooding Parameters Flags Sub-TLV 7.3. Registry: IS-IS Bit Values for Flooding Parameters Flags Sub-TLV
This document requests IANA to create a new registry, under the "IS- IANA has created a new registry, in the "IS-IS TLV Codepoints"
IS TLV Codepoints" grouping, for assigning Flag bits advertised in registry group, for assigning Flag bits advertised in the Flags sub-
the Flags sub- TLV. TLV.
Name: IS-IS Bit Values for Flooding Parameters Flags Sub-TLV.
Registration Procedure: Expert Review
Expert Review Expert(s): TBD
Description: This registry defines bit values for the Flags sub-
TLV(4) advertised in the Flooding Parameters TLV(21).
Note: In order to minimize encoding space, a new allocation should
pick the smallest available value.
Reference: This document. Name: IS-IS Bit Values for Flooding Parameters Flags Sub-TLV
Registration Procedure: Expert Review
Description: This registry defines bit values for the Flags sub-TLV
(4) advertised in the Flooding Parameters TLV (21).
Note: In order to minimize encoding space, a new allocation should
pick the smallest available value.
Reference: RFC 9681
+=======+==================================+ +=======+=================================+
| Bit # | Description | | Bit # | Description |
+=======+==================================+ +=======+=================================+
| 0 | Ordered acknowledgement (O-flag) | | 0 | Ordered acknowledgment (O-flag) |
+-------+----------------------------------+ +-------+---------------------------------+
| 1-63 | Unassigned | | 1-63 | Unassigned |
+-------+----------------------------------+ +-------+---------------------------------+
Table 2: Initial bit allocations for Table 3: Initial Bit Allocations for
Flags Sub-TLV Flags Sub-TLV
8. Security Considerations 8. Security Considerations
Security concerns for IS-IS are addressed in [ISO10589] , [RFC5304] , Security concerns for IS-IS are addressed in [ISO10589], [RFC5304],
and [RFC5310] . These documents describe mechanisms that provide for and [RFC5310]. These documents describe mechanisms that provide for
the authentication and integrity of IS-IS PDUs, including SNPs and the authentication and integrity of IS-IS PDUs, including SNPs and
IIHs. These authentication mechanisms are not altered by this IIHs. These authentication mechanisms are not altered by this
document. document.
With the cryptographic mechanisms described in [RFC5304] and With the cryptographic mechanisms described in [RFC5304] and
[RFC5310] , an attacker wanting to advertise an incorrect Flooding [RFC5310], an attacker wanting to advertise an incorrect Flooding
Parameters TLV would have to first defeat these mechanisms. Parameters TLV would have to first defeat these mechanisms.
In the absence of cryptographic authentication, as IS-IS does not run In the absence of cryptographic authentication, as IS-IS does not run
over IP but directly over the link layer, it's considered difficult over IP but directly over the link layer, it's considered difficult
to inject false SNP/IIH without having access to the link layer. to inject a false SNP or IIH without having access to the link layer.
If a false SNP/IIH is sent with a Flooding Parameters TLV set to If a false SNP or IIH is sent with a Flooding Parameters TLV set to
conservative values, the attacker can reduce the flooding speed conservative values, the attacker can reduce the flooding speed
between the two adjacent neighbors which can result in LSDB between the two adjacent neighbors, which can result in LSDB
inconsistencies and transient forwarding loops. However, it is not inconsistencies and transient forwarding loops. However, it is not
significantly different than filtering or altering LSPs which would significantly different than filtering or altering LSPs, which would
also be possible with access to the link layer. In addition, if the also be possible with access to the link layer. In addition, if the
downstream flooding neighbor has multiple IGP neighbors, which is downstream flooding neighbor has multiple IGP neighbors (which is
typically the case for reliability or topological reasons, it would typically the case for reliability or topological reasons), it would
receive LSPs at a regular speed from its other neighbors and hence receive LSPs at a regular speed from its other neighbors and hence
would maintain LSDB consistency. would maintain LSDB consistency.
If a false SNP/IIH is sent with a Flooding Parameters TLV set to If a false SNP or IIH is sent with a Flooding Parameters TLV set to
aggressive values, the attacker can increase the flooding speed which aggressive values, the attacker can increase the flooding speed,
can either overload a node or more likely generate loss of LSPs. which can either overload a node or more likely cause loss of LSPs.
However, it is not significantly different than sending many LSPs However, it is not significantly different than sending many LSPs,
which would also be possible with access to the link layer, even with which would also be possible with access to the link layer, even with
cryptographic authentication enabled. In addition, IS-IS has cryptographic authentication enabled. In addition, IS-IS has
procedures to detect the loss of LSPs and recover. procedures to detect the loss of LSPs and recover.
This TLV advertisement is not flooded across the network but only This TLV advertisement is not flooded across the network but only
sent between adjacent IS-IS neighbors. This would limit the sent between adjacent IS-IS neighbors. This would limit the
consequences in case of forged messages, and also limits the consequences in case of forged messages and also limit the
dissemination of such information. dissemination of such information.
9. Contributors 9. References
The following people gave a substantial contribution to the content
of this document and should be considered as coauthors:
* Jayesh J, Ciena, jayesh.ietf@gmail.com
* Chris Bowers, Juniper Networks, cbowers@juniper.net
* Peter Psenak, Cisco Systems, ppsenak@cisco.com
10. Acknowledgments
The authors would like to thank Henk Smit, Sarah Chen, Xuesong Geng,
Pierre Francois, Hannes Gredler, Acee Lindem, Mirja Kuhlewind,
Zaheduzzaman Sarker and John Scudder for their reviews, comments and
suggestions.
The authors would like to thank David Jacquet, Sarah Chen, and
Qiangzhou Gao for the tests performed on commercial implementations
and their identification of some limiting factors.
11. References
11.1. Normative References 9.1. Normative References
[ISO10589] ISO, "Intermediate system to Intermediate system intra- [ISO10589] ISO/IEC, "Information technology - Telecommunications and
domain routeing information exchange protocol for use in information exchange between systems - Intermediate system
conjunction with the protocol for providing the to Intermediate system intra-domain routeing information
connectionless-mode Network Service (ISO 8473)", ISO/ exchange protocol for use in conjunction with the protocol
IEC 10589:2002, Second Edition, November 2002. for providing the connectionless-mode network service (ISO
8473)", Second Edition, ISO/IEC 10589:2002, November 2002,
<https://www.iso.org/standard/30932.html>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic [RFC5304] Li, T. and R. Atkinson, "IS-IS Cryptographic
Authentication", RFC 5304, DOI 10.17487/RFC5304, October Authentication", RFC 5304, DOI 10.17487/RFC5304, October
2008, <https://www.rfc-editor.org/info/rfc5304>. 2008, <https://www.rfc-editor.org/info/rfc5304>.
skipping to change at page 25, line 19 skipping to change at line 1097
[RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent, [RFC6298] Paxson, V., Allman, M., Chu, J., and M. Sargent,
"Computing TCP's Retransmission Timer", RFC 6298, "Computing TCP's Retransmission Timer", RFC 6298,
DOI 10.17487/RFC6298, June 2011, DOI 10.17487/RFC6298, June 2011,
<https://www.rfc-editor.org/info/rfc6298>. <https://www.rfc-editor.org/info/rfc6298>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
11.2. Informative References 9.2. Informative References
[I-D.ietf-lsr-dynamic-flooding] [DYNAMIC-FLOODING]
Li, T., Psenak, P., Chen, H., Jalil, L., and S. Dontula, Li, T., Psenak, P., Chen, H., Jalil, L., and S. Dontula,
"Dynamic Flooding on Dense Graphs", Work in Progress, "Dynamic Flooding on Dense Graphs", Work in Progress,
Internet-Draft, draft-ietf-lsr-dynamic-flooding-18, 5 Internet-Draft, draft-ietf-lsr-dynamic-flooding-18, 5
April 2024, <https://datatracker.ietf.org/doc/html/draft- April 2024, <https://datatracker.ietf.org/doc/html/draft-
ietf-lsr-dynamic-flooding-18>. ietf-lsr-dynamic-flooding-18>.
[RFC2973] Balay, R., Katz, D., and J. Parker, "IS-IS Mesh Groups", [RFC2973] Balay, R., Katz, D., and J. Parker, "IS-IS Mesh Groups",
RFC 2973, DOI 10.17487/RFC2973, October 2000, RFC 2973, DOI 10.17487/RFC2973, October 2000,
<https://www.rfc-editor.org/info/rfc2973>. <https://www.rfc-editor.org/info/rfc2973>.
[RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
Control", RFC 5681, DOI 10.17487/RFC5681, September 2009, Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
<https://www.rfc-editor.org/info/rfc5681>. <https://www.rfc-editor.org/info/rfc5681>.
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for
Writing an IANA Considerations Section in RFCs", BCP 26,
RFC 8126, DOI 10.17487/RFC8126, June 2017,
<https://www.rfc-editor.org/info/rfc8126>.
[RFC9002] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection [RFC9002] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection
and Congestion Control", RFC 9002, DOI 10.17487/RFC9002, and Congestion Control", RFC 9002, DOI 10.17487/RFC9002,
May 2021, <https://www.rfc-editor.org/info/rfc9002>. May 2021, <https://www.rfc-editor.org/info/rfc9002>.
[RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)",
STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022,
<https://www.rfc-editor.org/info/rfc9293>. <https://www.rfc-editor.org/info/rfc9293>.
Appendix A. Changes / Author Notes Acknowledgments
[RFC Editor: Please remove this section before publication]
IND 00: Initial version.
WG 00: No change.
WG 01: IANA allocated code point.
WG 02: No change.
WG 03: The authors would like to thank Henk Smit, Sarah Chen, Xuesong Geng,
Pierre Francois, Hannes Gredler, Acee Lindem, Mirja Kuehlewind,
Zaheduzzaman Sarker, and John Scudder for their reviews, comments,
and suggestions.
* Pacing section added (taken from RFC 9002). The authors would like to thank David Jacquet, Sarah Chen, and
Qiangzhou Gao for the tests performed on commercial implementations
and for their identification of some limiting factors.
* Some text borrowed from RFC 9002 (QUIC Loss Detection and Contributors
Congestion Control).
* Considerations on the special role of the DIS. The following people gave substantial contributions to the content of
this document and should be considered as coauthors:
* Editorial changes. Jayesh J
Ciena
Email: jayesh.ietf@gmail.com
WG 04: Update IANA section as per IANA editor comments (2023-03-23). Chris Bowers
Juniper Networks
Email: cbowers@juniper.net
WG 06: AD review. Peter Psenak
Cisco Systems
Email: ppsenak@cisco.com
Authors' Addresses Authors' Addresses
Bruno Decraene Bruno Decraene
Orange Orange
Email: bruno.decraene@orange.com Email: bruno.decraene@orange.com
Les Ginsberg Les Ginsberg
Cisco Systems Cisco Systems
821 Alder Drive 821 Alder Drive
skipping to change at page 27, line 4 skipping to change at line 1181
Guillaume Solignac Guillaume Solignac
Email: gsoligna@protonmail.com Email: gsoligna@protonmail.com
Marek Karasek Marek Karasek
Cisco Systems Cisco Systems
Pujmanove 1753/10a, Prague 4 - Nusle Pujmanove 1753/10a, Prague 4 - Nusle
10 14000 Prague 10 14000 Prague
Czech Republic Czech Republic
Email: mkarasek@cisco.com Email: mkarasek@cisco.com
Gunter Van de Velde Gunter Van de Velde
Nokia Nokia
Copernicuslaan 50 Copernicuslaan 50
2018 Antwerp 2018 Antwerp
Belgium Belgium
Email: gunter.van_de_velde@nokia.com Email: gunter.van_de_velde@nokia.com
Tony Przygienda Tony Przygienda
Juniper Juniper
1137 Innovation Way 1137 Innovation Way
Sunnyvale, Ca Sunnyvale, CA
United States of America United States of America
Email: prz@juniper.net Email: prz@juniper.net
 End of changes. 178 change blocks. 
535 lines changed or deleted 503 lines changed or added

This html diff was produced by rfcdiff 1.48.