| rfc9681v3.txt | rfc9681.txt | |||
|---|---|---|---|---|
| skipping to change at line 16 ¶ | skipping to change at line 16 ¶ | |||
| 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 | |||
| October 2024 | November 2024 | |||
| IS-IS Fast Flooding | IS-IS Fast Flooding | |||
| Abstract | Abstract | |||
| Current Link State PDU flooding rates are much slower than what | Current Link State PDU flooding rates are much slower than what | |||
| modern networks can support. The use of IS-IS at larger scale | modern networks can support. The use of IS-IS at larger scale | |||
| requires faster flooding rates to achieve desired convergence goals. | requires faster flooding rates to achieve desired convergence goals. | |||
| This document discusses the need for faster flooding, the issues | This document discusses the need for faster flooding, the issues | |||
| around faster flooding, and some example approaches to achieve faster | around faster flooding, and some example approaches to achieve faster | |||
| skipping to change at line 399 ¶ | skipping to change at line 399 ¶ | |||
| 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 more frequent PSNPs, giving faster feedback to the | LSPs, this allows more frequent PSNPs, giving faster feedback to the | |||
| sender. Outside of the burst case, the usual time-based PSNP | sender. Outside of the burst case, the usual timer-based PSNP | |||
| approach comes into effect. | approach comes into effect. | |||
| The smaller the LPP is, 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 acknowledgments. 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 give 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 timer-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 | |||
| can be sent on an interface. | can be sent on an interface. | |||
| 5.2. Packet Prioritization on Receive | 5.2. Packet Prioritization on Receive | |||
| 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 | * SNPs (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 | |||
| skipping to change at line 511 ¶ | skipping to change at line 511 ¶ | |||
| A flow control mechanism creates a control loop between a single | A flow control mechanism creates a control loop between a single | |||
| transmitter and a single receiver. This section uses a mechanism | transmitter and a single receiver. This section uses a mechanism | |||
| similar to the TCP receive window to allow the receiver to govern the | similar to the TCP receive window to allow the receiver to govern the | |||
| amount of data sent by the sender. This receive window (RWIN) | amount of data sent by the sender. This receive window (RWIN) | |||
| indicates an allowed number of LSPs that the sender may transmit | indicates an allowed number of LSPs that the sender may transmit | |||
| before waiting for an acknowledgment. The size of the receive | before waiting for an acknowledgment. The size of the receive | |||
| window, in units of LSPs, is initialized with the value advertised by | window, in units of LSPs, is initialized with the value advertised by | |||
| the receiver in the Receive Window sub-TLV. If no value is | the receiver in the Receive Window sub-TLV. If no value is | |||
| advertised, the transmitter should initialize RWIN with its locally | advertised, the transmitter should initialize RWIN with its locally | |||
| configured value for the associated neighbor. | configured value for this receiver. | |||
| 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 | for the throughput. In this case, the optimal size is the desired | |||
| LSP rate multiplied by the RTT. The RTT is 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. The values 50 or 100 may be reasonable | received LSP in its PSNP. The values 50 or 100 may be reasonable | |||
| default numbers for RTT. As an example, an RWIN of 100 requires a | default numbers for RWIN. As an example, an RWIN of 100 requires a | |||
| control plane input buffer of 150 kbytes per neighbor (assuming an | control plane input buffer of 150 kbytes per neighbor (assuming an | |||
| IS-IS MTU of 1500 octets) and limits the throughput to 10000 LSPs per | IS-IS MTU of 1500 octets) and limits the throughput to 10000 LSPs per | |||
| second and per neighbor for a link RTT of 10 ms. With the same RWIN, | second and per neighbor for a link RTT of 10 ms. With the same RWIN, | |||
| the throughput limitation is 2000 LSPs per second when the RTT is 50 | the throughput limitation is 2000 LSPs per second when the RTT is 50 | |||
| ms. That's the maximum throughput assuming no other limitations such | ms. That's the maximum throughput assuming no other limitations such | |||
| as CPU limitations. | as CPU 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 5 are | performance improvements on the receiver specified in Section 5 are | |||
| important to achieve good throughput. If the receiver does not | important to achieve good throughput. If the receiver does not | |||
| skipping to change at line 879 ¶ | skipping to change at line 879 ¶ | |||
| 6.3.1. Router Architecture Discussion | 6.3.1. Router Architecture Discussion | |||
| Note that the following description is an abstraction; implementation | Note that the following description is an abstraction; implementation | |||
| details 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 line cards, 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 in 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 | |||
| End of changes. 7 change blocks. | ||||
| 7 lines changed or deleted | 7 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||