diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc3522.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc3522.txt')
-rw-r--r-- | doc/rfc/rfc3522.txt | 787 |
1 files changed, 787 insertions, 0 deletions
diff --git a/doc/rfc/rfc3522.txt b/doc/rfc/rfc3522.txt new file mode 100644 index 0000000..4f48546 --- /dev/null +++ b/doc/rfc/rfc3522.txt @@ -0,0 +1,787 @@ + + + + + + +Network Working Group R. Ludwig +Request for Comments: 3522 M. Meyer +Category: Experimental Ericsson Research + April 2003 + + + The Eifel Detection Algorithm for TCP + +Status of this Memo + + This memo defines an Experimental Protocol for the Internet + community. It does not specify an Internet standard of any kind. + Discussion and suggestions for improvement are requested. + Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2003). All Rights Reserved. + +Abstract + + The Eifel detection algorithm allows a TCP sender to detect a + posteriori whether it has entered loss recovery unnecessarily. It + requires that the TCP Timestamps option defined in RFC 1323 be + enabled for a connection. The Eifel detection algorithm makes use of + the fact that the TCP Timestamps option eliminates the retransmission + ambiguity in TCP. Based on the timestamp of the first acceptable ACK + that arrives during loss recovery, it decides whether loss recovery + was entered unnecessarily. The Eifel detection algorithm provides a + basis for future TCP enhancements. This includes response algorithms + to back out of loss recovery by restoring a TCP sender's congestion + control state. + +Terminology + + The keywords MUST, MUST NOT, REQUIRED, SHALL, SHALL NOT, SHOULD, + SHOULD NOT, RECOMMENDED, MAY, and OPTIONAL, when they appear in this + document, are to be interpreted as described in [RFC2119]. + + We refer to the first-time transmission of an octet as the 'original + transmit'. A subsequent transmission of the same octet is referred + to as a 'retransmit'. In most cases, this terminology can likewise + be applied to data segments as opposed to octets. However, with + repacketization, a segment can contain both first-time transmissions + and retransmissions of octets. In that case, this terminology is + only consistent when applied to octets. For the Eifel detection + algorithm, this makes no difference as it also operates correctly + when repacketization occurs. + + + +Ludwig & Meyer Experimental [Page 1] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + We use the term 'acceptable ACK' as defined in [RFC793]. That is an + ACK that acknowledges previously unacknowledged data. We use the + term 'duplicate ACK', and the variable 'dupacks' as defined in + [WS95]. The variable 'dupacks' is a counter of duplicate ACKs that + have already been received by a TCP sender before the fast retransmit + is sent. We use the variable 'DupThresh' to refer to the so-called + duplicate acknowledgement threshold, i.e., the number of duplicate + ACKs that need to arrive at a TCP sender to trigger a fast + retransmit. Currently, DupThresh is specified as a fixed value of + three [RFC2581]. Future TCPs might implement an adaptive DupThresh. + +1. Introduction + + The retransmission ambiguity problem [Zh86], [KP87] is a TCP sender's + inability to distinguish whether the first acceptable ACK that + arrives after a retransmit was sent in response to the original + transmit or the retransmit. This problem occurs after a timeout- + based retransmit and after a fast retransmit. The Eifel detection + algorithm uses the TCP Timestamps option defined in [RFC1323] to + eliminate the retransmission ambiguity. It thereby allows a TCP + sender to detect a posteriori whether it has entered loss recovery + unnecessarily. + + This added capability of a TCP sender is useful in environments where + TCP's loss recovery and congestion control algorithms may often get + falsely triggered. This can be caused by packet reordering, packet + duplication, or a sudden delay increase in the data or the ACK path + that results in a spurious timeout. For example, such sudden delay + increases can often occur in wide-area wireless access networks due + to handovers, resource preemption due to higher priority traffic + (e.g., voice), or because the mobile transmitter traverses through a + radio coverage hole (e.g., see [Gu01]). In such wireless networks, + the often unnecessary go-back-N retransmits that typically occur + after a spurious timeout create a serious problem. They decrease + end-to-end throughput, are useless load upon the network, and waste + transmission (battery) power. Note that across such networks the use + of timestamps is recommended anyway [RFC3481]. + + Based on the Eifel detection algorithm, a TCP sender may then choose + to implement dedicated response algorithms. One goal of such a + response algorithm would be to alleviate the consequences of a + falsely triggered loss recovery. This may include restoring the TCP + sender's congestion control state, and avoiding the mentioned + unnecessary go-back-N retransmits. Another goal would be to adapt + protocol parameters such as the duplicate acknowledgement threshold + [RFC2581], and the RTT estimators [RFC2988]. This is to reduce the + risk of falsely triggering TCP's loss recovery again as the + connection progresses. However, such response algorithms are outside + + + +Ludwig & Meyer Experimental [Page 2] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + the scope of this document. Note: The original proposal, the "Eifel + algorithm" [LK00], comprises both a detection and a response + algorithm. This document only defines the detection part. The + response part is defined in [LG03]. + + A key feature of the Eifel detection algorithm is that it already + detects, upon the first acceptable ACK that arrives during loss + recovery, whether a fast retransmit or a timeout was spurious. This + is crucial to be able to avoid the mentioned go-back-N retransmits. + Another feature is that the Eifel detection algorithm is fairly + robust against the loss of ACKs. + + Also the DSACK option [RFC2883] can be used to detect a posteriori + whether a TCP sender has entered loss recovery unnecessarily [BA02]. + However, the first ACK carrying a DSACK option usually arrives at a + TCP sender only after loss recovery has already terminated. Thus, + the DSACK option cannot be used to eliminate the retransmission + ambiguity. Consequently, it cannot be used to avoid the mentioned + unnecessary go-back-N retransmits. Moreover, a DSACK-based detection + algorithm is less robust against ACK losses. A recent proposal based + on neither the TCP timestamps nor the DSACK option does not have the + limitation of DSACK-based schemes, but only addresses the case of + spurious timeouts [SK03]. + +2. Events that Falsely Trigger TCP Loss Recovery + + The following events may falsely trigger a TCP sender's loss recovery + and congestion control algorithms. This causes a so-called spurious + retransmit, and an unnecessary reduction of the TCP sender's + congestion window and slow start threshold [RFC2581]. + + - Spurious timeout + + - Packet reordering + + - Packet duplication + + A spurious timeout is a timeout that would not have occurred had the + sender "waited longer". This may be caused by increased delay that + suddenly occurs in the data and/or the ACK path. That in turn might + cause an acceptable ACK to arrive too late, i.e., only after a TCP + sender's retransmission timer has expired. For the purpose of + specifying the algorithm in Section 3, we define this case as SPUR_TO + (equal 1). + + Note: There is another case where a timeout would not have + occurred had the sender "waited longer": the retransmission timer + expires, and afterwards the TCP sender receives the duplicate ACK + + + +Ludwig & Meyer Experimental [Page 3] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + that would have triggered a fast retransmit of the oldest + outstanding segment. We call this a 'fast timeout', since in + competition with the fast retransmit algorithm the timeout was + faster. However, a fast timeout is not spurious since apparently + a segment was in fact lost, i.e., loss recovery was initiated + rightfully. In this document, we do not consider fast timeouts. + + Packet reordering in the network may occur because IP [RFC791] does + not guarantee in-order delivery of packets. Additionally, a TCP + receiver generates a duplicate ACK for each segment that arrives + out-of-order. This results in a spurious fast retransmit if three or + more data segments arrive out-of-order at a TCP receiver, and at + least three of the resulting duplicate ACKs arrive at the TCP sender. + This assumes that the duplicate acknowledgement threshold is set to + three as defined in [RFC2581]. + + Packet duplication may occur because a receiving IP does not (cannot) + remove packets that have been duplicated in the network. A TCP + receiver in turn also generates a duplicate ACK for each duplicate + segment. As with packet reordering, this results in a spurious fast + retransmit if duplication of data segments or ACKs results in three + or more duplicate ACKs to arrive at a TCP sender. Again, this + assumes that the duplicate acknowledgement threshold is set to three. + + The negative impact on TCP performance caused by packet reordering + and packet duplication is commonly the same: a single spurious + retransmit (the fast retransmit), and the unnecessary halving of a + TCP sender's congestion window as a result of the subsequent fast + recovery phase [RFC2581]. + + The negative impact on TCP performance caused by a spurious timeout + is more severe. First, the timeout event itself causes a single + spurious retransmit, and unnecessarily forces a TCP sender into slow + start [RFC2581]. Then, as the connection progresses, a chain + reaction gets triggered that further decreases TCP's performance. + Since the timeout was spurious, at least some ACKs for original + transmits typically arrive at the TCP sender before the ACK for the + retransmit arrives. (This is unless severe packet reordering + coincided with the spurious timeout in such a way that the ACK for + the retransmit is the first acceptable ACK to arrive at the TCP + sender.) Those ACKs for original transmits then trigger an implicit + go-back-N loss recovery at the TCP sender [LK00]. Assuming that none + of the outstanding segments and none of the corresponding ACKs were + lost, all outstanding segments get retransmitted unnecessarily. In + fact, during this phase, a TCP sender violates the packet + conservation principle [Jac88]. This is because the unnecessary go- + back-N retransmits are sent during slow start. Thus, for each packet + that leaves the network and that belongs to the first half of the + + + +Ludwig & Meyer Experimental [Page 4] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + original flight, two useless retransmits are sent into the network. + In addition, some TCPs suffer from a spurious fast retransmit. This + is because the unnecessary go-back-N retransmits arrive as duplicates + at the TCP receiver, which in turn triggers a series of duplicate + ACKs. Note that this last spurious fast retransmit could be avoided + with the careful variant of 'bugfix' [RFC2582]. + + More detailed explanations, including TCP trace plots that visualize + the effects of spurious timeouts and packet reordering, can be found + in the original proposal [LK00]. + +3. The Eifel Detection Algorithm + +3.1 The Idea + + The goal of the Eifel detection algorithm is to allow a TCP sender to + detect a posteriori whether it has entered loss recovery + unnecessarily. Furthermore, the TCP sender should be able to make + this decision upon the first acceptable ACK that arrives after the + timeout-based retransmit or the fast retransmit has been sent. This + in turn requires extra information in ACKs by which the TCP sender + can unambiguously distinguish whether that first acceptable ACK was + sent in response to the original transmit or the retransmit. Such + extra information is provided by the TCP Timestamps option [RFC1323]. + Generally speaking, timestamps are monotonously increasing "serial + numbers" added into every segment that are then echoed within the + corresponding ACKs. This is exploited by the Eifel detection + algorithm in the following way. + + Given that timestamps are enabled for a connection, a TCP sender + always stores the timestamp of the retransmit sent in the beginning + of loss recovery, i.e., the timestamp of the timeout-based retransmit + or the fast retransmit. If the timestamp of the first acceptable + ACK, that arrives after the retransmit was sent, is smaller then the + stored timestamp of that retransmit, then that ACK must have been + sent in response to an original transmit. Hence, the TCP sender must + have entered loss recovery unnecessarily. + + The fact that the Eifel detection algorithm decides upon the first + acceptable ACK is crucial to allow future response algorithms to + avoid the unnecessary go-back-N retransmits that typically occur + after a spurious timeout. Also, if loss recovery was entered + unnecessarily, a window worth of ACKs are outstanding that all carry + a timestamp that is smaller than the stored timestamp of the + retransmit. The arrival of any one of those ACKs is sufficient for + the Eifel detection algorithm to work. Hence, the solution is fairly + + + + + +Ludwig & Meyer Experimental [Page 5] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + robust against ACK losses. Even the ACK sent in response to the + retransmit, i.e., the one that carries the stored timestamp, may get + lost without compromising the algorithm. + +3.2 The Algorithm + + Given that the TCP Timestamps option [RFC1323] is enabled for a + connection, a TCP sender MAY use the Eifel detection algorithm as + defined in this subsection. + + If the Eifel detection algorithm is used, the following steps MUST be + taken by a TCP sender, but only upon initiation of loss recovery, + i.e., when either the timeout-based retransmit or the fast retransmit + is sent. The Eifel detection algorithm MUST NOT be reinitiated after + loss recovery has already started. In particular, it must not be + reinitiated upon subsequent timeouts for the same segment, and not + upon retransmitting segments other than the oldest outstanding + segment, e.g., during selective loss recovery. + + (1) Set a "SpuriousRecovery" variable to FALSE (equal 0). + + (2) Set a "RetransmitTS" variable to the value of the + Timestamp Value field of the Timestamps option included in + the retransmit sent when loss recovery is initiated. A + TCP sender must ensure that RetransmitTS does not get + overwritten as loss recovery progresses, e.g., in case of + a second timeout and subsequent second retransmit of the + same octet. + + (3) Wait for the arrival of an acceptable ACK. When an + acceptable ACK has arrived, proceed to step (4). + + (4) If the value of the Timestamp Echo Reply field of the + acceptable ACK's Timestamps option is smaller than the + value of RetransmitTS, then proceed to step (5), + + else proceed to step (DONE). + + (5) If the acceptable ACK carries a DSACK option [RFC2883], + then proceed to step (DONE), + + else if during the lifetime of the TCP connection the TCP + sender has previously received an ACK with a DSACK option, + or the acceptable ACK does not acknowledge all outstanding + data, then proceed to step (6), + + else proceed to step (DONE). + + + + +Ludwig & Meyer Experimental [Page 6] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + (6) If the loss recovery has been initiated with a timeout- + based retransmit, then set + SpuriousRecovery <- SPUR_TO (equal 1), + + else set + SpuriousRecovery <- dupacks+1 + + (RESP) Do nothing (Placeholder for a response algorithm). + + (DONE) No further processing. + + The comparison "smaller than" in step (4) is conservative. In + theory, if the timestamp clock is slow or the network is fast, + RetransmitTS could at most be equal to the timestamp echoed by an ACK + sent in response to an original transmit. In that case, it is + assumed that the loss recovery was not falsely triggered. + + Note that the condition "if during the lifetime of the TCP connection + the TCP sender has previously received an ACK with a DSACK option" in + step (5) would be true in case the TCP receiver would signal in the + SYN that it is DSACK-enabled. But unfortunately, this is not + required by [RFC2883]. + +3.3 A Corner Case: "Timeout due to loss of all ACKs" (step 5) + + Even though the oldest outstanding segment arrived at a TCP receiver, + the TCP sender is forced into a timeout if all ACKs are lost. + Although the resulting retransmit is unnecessary, such a timeout is + unavoidable. It should therefore not be considered spurious. + Moreover, the subsequent reduction of the congestion window is an + appropriate response to the potentially heavy congestion in the ACK + path. The original proposal [LK00] does not handle this case well. + It effectively disables this implicit form of congestion control for + the ACK path, which otherwise does not exist in TCP. This problem is + fixed by step (5) of the Eifel detection algorithm as explained in + the remainder of this section. + + If all ACKs are lost while the oldest outstanding segment arrived at + the TCP receiver, the retransmit arrives as a duplicate. In response + to duplicates, RFC 1323 mandates that the timestamp of the last + segment that arrived in-sequence should be echoed. That timestamp is + carried by the first acceptable ACK that arrives at the TCP sender + after loss recovery was entered, and is commonly smaller than the + timestamp carried by the retransmit. Consequently, the Eifel + detection algorithm misinterprets such a timeout as being spurious, + unless the TCP receiver is DSACK-enabled [RFC2883]. In that case, + the acceptable ACK carries a DSACK option, and the Eifel algorithm is + terminated through the first part of step (5). + + + +Ludwig & Meyer Experimental [Page 7] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + Note: Not all TCP implementations strictly follow RFC 1323. In + response to a duplicate data segment, some TCP receivers echo the + timestamp of the duplicate. With such TCP receivers, the corner + case discussed in this section does not apply. The timestamp + carried by the retransmit would be echoed in the first acceptable + ACK, and the Eifel detection algorithm would be terminated through + step (4). Thus, even though all ACKs were lost and independent of + whether the DSACK option was enabled for a connection, the Eifel + detection algorithm would have no effect. + + With TCP receivers that are not DSACK-enabled, disabling the + mentioned implicit congestion control for the ACK path is not a + problem as long as data segments are lost, in addition to the entire + flight of ACKs. The Eifel detection algorithm misinterprets such a + timeout as being spurious, and the Eifel response algorithm would + reverse the congestion control state. Still, the TCP sender would + respond to congestion (in the data path) as soon as it finds out + about the first loss in the outstanding flight. I.e., the TCP sender + would still halve its congestion window for that flight of packets. + If no data segment is lost while the entire flight of ACKs is lost, + the first acceptable ACK that arrives at the TCP sender after loss + recovery was entered acknowledges all outstanding data. In that + case, the Eifel algorithm is terminated through the second part of + step (5). + + Note that there is little concern about violating the packet + conservation principle when entering slow start after an unavoidable + timeout caused by the loss of an entire flight of ACKs, i.e., when + the Eifel detection algorithm was terminated through step (5). This + is because in that case, the acceptable ACK corresponds to the + retransmit, which is a strong indication that the pipe has drained + entirely, i.e., that no more original transmits are in the network. + This is different with spurious timeouts as discussed in Section 2. + +3.4 Protecting Against Misbehaving TCP Receivers (the Safe Variant) + + A TCP receiver can easily make a genuine retransmit appear to the TCP + sender as a spurious retransmit by forging echoed timestamps. This + may pose a security concern. + + Fortunately, there is a way to modify the Eifel detection algorithm + in a way that makes it robust against lying TCP receivers. The idea + is to use timestamps as a segment's "secret" that a TCP receiver only + gets to know if it receives the segment. Conversely, a TCP receiver + will not know the timestamp of a segment that was lost. Hence, to + "prove" that it received the original transmit of a segment that a + TCP sender retransmitted, the TCP receiver would need to return the + timestamp of that original transmit. The Eifel detection algorithm + + + +Ludwig & Meyer Experimental [Page 8] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + could then be modified to only decide that loss recovery has been + unnecessarily entered if the first acceptable ACK echoes the + timestamp of the original transmit. + + Hence, implementers may choose to implement the algorithm with the + following modifications. + + Step (2) is replaced with step (2'): + + (2') Set a "RetransmitTS" variable to the value of the + Timestamp Value field of the Timestamps option that was + included in the original transmit corresponding to the + retransmit. Note: This step requires that the TCP sender + stores the timestamps of all outstanding original + transmits. + + Step (4) is replaced with step (4'): + + (4') If the value of the Timestamp Echo Reply field of the + acceptable ACK's Timestamps option is equal to the value + of the variable RetransmitTS, then proceed to step (5), + + else proceed to step (DONE). + + These modifications come at a cost: the modified algorithm is fairly + sensitive against ACK losses since it relies on the arrival of the + acceptable ACK that corresponds to the original transmit. + + Note: The first acceptable ACK that arrives after loss recovery + has been unnecessarily entered should echo the timestamp of the + original transmit. This assumes that the ACK corresponding to the + original transmit was not lost, that that ACK was not reordered in + the network, and that the TCP receiver does not forge timestamps + but complies with RFC 1323. In case of a spurious fast + retransmit, this is implied by the rules for generating ACKs for + data segments that fill in all or part of a gap in the sequence + space (see section 4.2 of [RFC2581]) and by the rules for echoing + timestamps in that case (see rule (C) in section 3.4 of + [RFC1323]). In case of a spurious timeout, it is likely that the + delay that has caused the spurious timeout has also caused the TCP + receiver's delayed ACK timer [RFC1122] to expire before the + original transmit arrives. Also, in this case the rules for + generating ACKs and the rules for echoing timestamps (see rule (A) + in section 3.4 of [RFC1323]) ensure that the original transmit's + timestamp is echoed. + + + + + + +Ludwig & Meyer Experimental [Page 9] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + A remaining problem is that a TCP receiver might guess a lost + segment's timestamp from observing the timestamps of recently + received segments. For example, if segment N was lost while segment + N-1 and N+1 have arrived, a TCP receiver could guess the timestamp + that lies in the middle of the timestamps of segments N-1 and N+1, + and echo it in the ACK sent in response to the retransmit of segment + N. Especially if the TCP sender implements timestamps with a coarse + granularity, a misbehaving TCP receiver is likely to be successful + with such an approach. In fact, with the 500 ms granularity + suggested in [WS95], it even becomes quite likely that the timestamps + of segments N-1, N, N+1 are identical. + + One way to reduce this risk is to implement fine grained timestamps. + Note that the granularity of the timestamps is independent of the + granularity of the retransmission timer. For example, some TCP + implementations run a timestamp clock that ticks every millisecond. + This should make it more difficult for a TCP receiver to guess the + timestamp of a lost segment. Alternatively, it might be possible to + combine the timestamps with a nonce, as is done for the Explicit + Congestion Notification (ECN) [RFC3168]. One would need to take + care, though, that the timestamps of consecutive segments remain + monotonously increasing and do not interfere with the RTT timing + defined in [RFC1323]. + +4. IPR Considerations + + The IETF has been notified of intellectual property rights claimed in + regard to some or all of the specification contained in this + document. For more information consult the online list of claimed + rights at http://www.ietf.org/ipr. + + The IETF takes no position regarding the validity or scope of any + intellectual property or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; neither does it represent that it + has made any effort to identify any such rights. Information on the + IETF's procedures with respect to rights in standards-track and + standards-related documentation can be found in BCP-11. Copies of + claims of rights made available for publication and any assurances of + licenses to be made available, or the result of an attempt made to + obtain a general license or permission for the use of such + proprietary rights by implementors or users of this specification can + be obtained from the IETF Secretariat. + + + + + + + +Ludwig & Meyer Experimental [Page 10] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + +5. Security Considerations + + There do not seem to be any security considerations associated with + the Eifel detection algorithm. This is because the Eifel detection + algorithm does not alter the existing protocol state at a TCP sender. + Note that the Eifel detection algorithm only requires changes to the + implementation of a TCP sender. + + Moreover, a variant of the Eifel detection algorithm has been + proposed in Section 3.4 that makes it robust against lying TCP + receivers. This may become relevant when the Eifel detection + algorithm is combined with a response algorithm such as the Eifel + response algorithm [LG03]. + +Acknowledgments + + Many thanks to Keith Sklower, Randy Katz, Stephan Baucke, Sally + Floyd, Vern Paxson, Mark Allman, Ethan Blanton, Andrei Gurtov, Pasi + Sarolahti, and Alexey Kuznetsov for useful discussions that + contributed to this work. + +Normative References + + [RFC2581] Allman, M., Paxson, V. and W. Stevens, "TCP Congestion + Control", RFC 2581, April 1999. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2883] Floyd, S., Mahdavi, J., Mathis, M., Podolsky, M. and A. + Romanow, "An Extension to the Selective Acknowledgement + (SACK) Option for TCP", RFC 2883, July 2000. + + [RFC1323] Jacobson, V., Braden, R. and D. Borman, "TCP Extensions for + High Performance", RFC 1323, May 1992. + + [RFC2018] Mathis, M., Mahdavi, J., Floyd, S. and A. Romanow, "TCP + Selective Acknowledgement Options", RFC 2018, October 1996. + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC + 793, September 1981. + + + + + + + + + + +Ludwig & Meyer Experimental [Page 11] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + +Informative References + + [BA02] Blanton, E. and M. Allman, "Using TCP DSACKs and SCTP + Duplicate TSNs to Detect Spurious Retransmissions", Work in + Progress. + + [RFC1122] Braden, R., "Requirements for Internet Hosts - + Communication Layers", STD 3, RFC 1122, October 1989. + + [RFC2582] Floyd, S. and T. Henderson, "The NewReno Modification to + TCP's Fast Recovery Algorithm", RFC 2582, April 1999. + + [Gu01] Gurtov, A., "Effect of Delays on TCP Performance", In + Proceedings of IFIP Personal Wireless Communications, + August 2001. + + [RFC3481] Inamura, H., Montenegro, G., Ludwig, R., Gurtov, A. and F. + Khafizov, "TCP over Second (2.5G) and Third (3G) Generation + Wireless Networks", RFC 3481, February 2003. + + [Jac88] Jacobson, V., "Congestion Avoidance and Control", In + Proceedings of ACM SIGCOMM 88. + + [KP87] Karn, P. and C. Partridge, "Improving Round-Trip Time + Estimates in Reliable Transport Protocols", In Proceedings + of ACM SIGCOMM 87. + + [LK00] Ludwig, R. and R. H. Katz, "The Eifel Algorithm: Making TCP + Robust Against Spurious Retransmissions", ACM Computer + Communication Review, Vol. 30, No. 1, January 2000. + + [LG03] Ludwig, R. and A. Gurtov, "The Eifel Response Algorithm for + TCP", Work in Progress. + + [RFC2988] Paxson, V. and M. Allman, "Computing TCP's Retransmission + Timer", RFC 2988, November 2000. + + [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September + 1981. + + [RFC3168] Ramakrishnan, K., Floyd, S. and D. Black, "The Addition of + Explicit Congestion Notification (ECN) to IP", RFC 3168, + September 2001. + + [SK03] Sarolahti, P. and M. Kojo, "F-RTO: A TCP RTO Recovery + Algorithm for Avoiding Unnecessary Retransmissions", Work + in Progress. + + + + +Ludwig & Meyer Experimental [Page 12] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + + [WS95] Wright, G. R. and W. R. Stevens, "TCP/IP Illustrated, + Volume 2 (The Implementation)", Addison Wesley, January + 1995. + + [Zh86] Zhang, L., "Why TCP Timers Don't Work Well", In Proceedings + of ACM SIGCOMM 86. + +Authors' Addresses + + Reiner Ludwig + Ericsson Research + Ericsson Allee 1 + 52134 Herzogenrath, Germany + + EMail: Reiner.Ludwig@eed.ericsson.se + + + Michael Meyer + Ericsson Research + Ericsson Allee 1 + 52134 Herzogenrath, Germany + + EMail: Michael.Meyer@eed.ericsson.se + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ludwig & Meyer Experimental [Page 13] + +RFC 3522 The Eifel Detection Algorithm for TCP April 2003 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2003). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Ludwig & Meyer Experimental [Page 14] + |