rfc9681v2.txt | rfc9681.txt | |||
---|---|---|---|---|
skipping to change at line 127 ¶ | skipping to change at line 127 ¶ | |||
today (33 LSPs per second), it would take more than 30 seconds simply | today (33 LSPs per second), it would take more than 30 seconds simply | |||
to send the updated LSPs to a given neighbor. Depending on the | to send the updated LSPs to a given neighbor. Depending on the | |||
diameter of the network, achieving a consistent LSDB on all nodes in | diameter of the network, achieving a consistent LSDB on all nodes in | |||
the network could easily take a minute or more. | the network could easily take a minute or more. | |||
Therefore, increasing the LSP flooding rate 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 [RFC9667]. | |||
[DYNAMIC-FLOODING]. Reduction of the flooding topology does not | Reduction of the flooding topology does not alter the number of LSPs | |||
alter the number of LSPs required to be exchanged between two nodes, | required to be exchanged between two nodes, so increasing the overall | |||
so increasing the overall flooding speed is still beneficial when | flooding speed is still beneficial when such extensions are in use. | |||
such extensions are in use. It is also possible that the flooding | It is also possible that the flooding topology can be reduced in ways | |||
topology can be reduced in ways that prefer the use of neighbors that | that prefer the use of neighbors that support improved flooding | |||
support improved flooding performance. | 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) | specifies some performance improvements on the receiver (Section 5) | |||
and 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 | |||
skipping to change at line 156 ¶ | skipping to change at line 156 ¶ | |||
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 regenerating one of | | system shall wait at least this long before regenerating one of | |||
its own Link State PDUs. | | its own Link State PDUs. [...] | |||
| | ||||
The recommended value is 30 seconds. | | A reasonable value is 30 s. | |||
| | ||||
minimumLSPTransmissionInterval - This is the amount of time an | | minimumLSPTransmissionInterval - This is the amount of time an | |||
Intermediate system shall wait before further propagating another | | Intermediate system shall wait before further propagating | |||
Link State PDU from the same source system. | | another Link State PDU from the same source system. [...] | |||
| | ||||
The recommended value is 5 seconds. | | A reasonable value is 5 s. | |||
| | ||||
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. It shall | | action for transmission of Partial Sequence Number PDUs. It | |||
be less than minimumLSPTransmissionInterval. | | shall be less than minimumLSPTransmissionInterval. [...] | |||
| | ||||
The recommended value is 2 seconds. | | A reasonable value is 2 s. | |||
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] states: | |||
| minimumBroadcastLSPTransmissionInterval - the minimum interval | | minimumBroadcastLSPTransmissionInterval indicates the minimum | |||
| between PDU arrivals which can be processed by the slowest | | interval between PDU arrivals which can be processed by the | |||
| Intermediate System on the LAN. | | slowest 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 of [ISO10589] states: | Section 12.1.2.4.3 of [ISO10589] states: | |||
skipping to change at line 645 ¶ | skipping to change at line 645 ¶ | |||
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. | |||
1. Delay: When receiving acknowledgments, a sender estimates the | 1. Delay: When receiving acknowledgments, a sender estimates the | |||
acknowledgment time of the receiver. Based on this estimation, | acknowledgment time of the receiver. Based on this estimation, | |||
it can infer that a packet was lost and that congestion is on the | it can infer that a packet was lost and that the path is | |||
path. | congested. | |||
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 | implementations. It is possible to use only a single timer t1 | |||
for all LSPs: during t1, sent LSPs are recorded in a list list_1. | for all LSPs: during t1, sent LSPs are recorded in a list list_1. | |||
Once the RTT is over, list_1 is kept and another list, list_2, is | Once the RTT is over, list_1 is kept and another list, list_2, is | |||
used to store the next LSPs. LSPs are removed from the lists | used to store the next LSPs. LSPs are removed from the lists | |||
when acked. At the end of the second t1 period, every LSP in | when acked. At the end of the second t1 period, every LSP in | |||
list_1 should have been acked, so list_1 is checked to be empty. | list_1 should have been acked, so list_1 is checked to be empty. | |||
list_1 can then be reused for the next RTT. | list_1 can then be reused for the next RTT. | |||
skipping to change at line 846 ¶ | skipping to change at line 846 ¶ | |||
6.2.4.2. Dynamic Values | 6.2.4.2. Dynamic Values | |||
To reflect the relative change of load on the receiver, the values | To reflect the relative change of load on the receiver, the values | |||
may be updated dynamically by improving the values when the receiver | may be updated dynamically by improving the values when the receiver | |||
load is getting lower and by degrading the values when the receiver | load is getting lower and by degrading the values when the receiver | |||
load is getting higher. For example, if LSPs are regularly dropped, | load is getting higher. For example, if LSPs are regularly dropped, | |||
or if the queue regularly comes close to being filled, then the | or if the queue regularly comes close to being filled, then the | |||
values may be too high. On the other hand, if the queue is barely | values may be too high. On the other hand, if the queue is barely | |||
used (by IS-IS), then the values may be too low. | used (by IS-IS), then the values may be too low. | |||
Alternatively, the values may be specified as absolute values that | Alternatively, the values may be computed to reflect the relevant | |||
reflect the relevant average hardware resources, e.g., the amount of | average hardware resources, e.g., the amount of buffer space used by | |||
buffer space used by incoming LSPs. In this case, care must be taken | incoming LSPs. In this case, care must be taken when choosing the | |||
when choosing the parameters influencing the values in order to avoid | parameters influencing the values in order to avoid undesirable or | |||
undesirable or unstable feedback loops. For example, it would be | unstable feedback loops. For example, it would be undesirable to use | |||
undesirable to use a formula that depends on an active measurement of | a formula that depends on an active measurement of the instantaneous | |||
the instantaneous CPU load to modify the values advertised in the | CPU load to modify the values advertised in the Flooding Parameters | |||
Flooding Parameters TLV. This could introduce feedback into the IGP | TLV. This could introduce feedback into the IGP flooding process | |||
flooding process that could produce unexpected behavior. | that could produce unexpected behavior. | |||
6.2.5. Operational Considerations | 6.2.5. Operational 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 | |||
skipping to change at line 1099 ¶ | skipping to change at line 1099 ¶ | |||
"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>. | |||
9.2. Informative References | 9.2. Informative References | |||
[DYNAMIC-FLOODING] | ||||
Li, T., Psenak, P., Chen, H., Jalil, L., and S. Dontula, | ||||
"Dynamic Flooding on Dense Graphs", Work in Progress, | ||||
Internet-Draft, draft-ietf-lsr-dynamic-flooding-18, 5 | ||||
April 2024, <https://datatracker.ietf.org/doc/html/draft- | ||||
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>. | |||
[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>. | |||
[RFC9667] Li, T., Ed., Psenak, P., Ed., Chen, H., Jalil, L., and S. | ||||
Dontula, "Dynamic Flooding on Dense Graphs", RFC 9667, | ||||
DOI 10.17487/RFC9667, October 2024, | ||||
<https://www.rfc-editor.org/info/rfc9667>. | ||||
Acknowledgments | Acknowledgments | |||
The authors would like to thank Henk Smit, Sarah Chen, Xuesong Geng, | The authors would like to thank Henk Smit, Sarah Chen, Xuesong Geng, | |||
Pierre Francois, Hannes Gredler, Acee Lindem, Mirja Kuehlewind, | Pierre Francois, Hannes Gredler, Acee Lindem, Mirja KΓΌhlewind, | |||
Zaheduzzaman Sarker, and John Scudder for their reviews, comments, | Zaheduzzaman Sarker, and John Scudder for their reviews, comments, | |||
and suggestions. | and suggestions. | |||
The authors would like to thank David Jacquet, Sarah Chen, and | The authors would like to thank David Jacquet, Sarah Chen, and | |||
Qiangzhou Gao for the tests performed on commercial implementations | Qiangzhou Gao for the tests performed on commercial implementations | |||
and for their identification of some limiting factors. | and for their identification of some limiting factors. | |||
Contributors | Contributors | |||
The following people gave substantial contributions to the content of | The following people gave substantial contributions to the content of | |||
End of changes. 9 change blocks. | ||||
48 lines changed or deleted | 46 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |