diff options
Diffstat (limited to 'doc/rfc/rfc4015.txt')
-rw-r--r-- | doc/rfc/rfc4015.txt | 731 |
1 files changed, 731 insertions, 0 deletions
diff --git a/doc/rfc/rfc4015.txt b/doc/rfc/rfc4015.txt new file mode 100644 index 0000000..fd527a2 --- /dev/null +++ b/doc/rfc/rfc4015.txt @@ -0,0 +1,731 @@ + + + + + + +Network Working Group R. Ludwig +Request for Comments: 4015 Ericsson Research +Category: Standards Track A. Gurtov + HIIT + February 2005 + + + The Eifel Response Algorithm for TCP + +Status of This Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2005). + +Abstract + + Based on an appropriate detection algorithm, the Eifel response + algorithm provides a way for a TCP sender to respond to a detected + spurious timeout. It adapts the retransmission timer to avoid + further spurious timeouts and (depending on the detection algorithm) + can avoid the often unnecessary go-back-N retransmits that would + otherwise be sent. In addition, the Eifel response algorithm + restores the congestion control state in such a way that packet + bursts are avoided. + +1. Introduction + + The Eifel response algorithm relies on a detection algorithm such as + the Eifel detection algorithm, defined in [RFC3522]. That document + contains informative background and motivation context that may be + useful for implementers of the Eifel response algorithm, but it is + not necessary to read [RFC3522] in order to implement the Eifel + response algorithm. Note that alternative response algorithms have + been proposed [BA02] that could also rely on the Eifel detection + algorithm, and alternative detection algorithms have been proposed + [RFC3708], [SK04] that could work together with the Eifel response + algorithm. + + Based on an appropriate detection algorithm, the Eifel response + algorithm provides a way for a TCP sender to respond to a detected + spurious timeout. It adapts the retransmission timer to avoid + + + +Ludwig & Gurtov Standards Track [Page 1] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + further spurious timeouts and (depending on the detection algorithm) + can avoid the often unnecessary go-back-N retransmits that would + otherwise be sent. In addition, the Eifel response algorithm + restores the congestion control state in such a way that packet + bursts are avoided. + + Note: A previous version of the Eifel response algorithm also + included a response to a detected spurious fast retransmit. + However, as a consensus was not reached about how to adapt the + duplicate acknowledgement threshold in that case, that part of the + algorithm was removed for the time being. + +1.1. 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 also be + applied to data segments. However, when repacketization occurs, 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 and response algorithms, + this makes no difference, as they also operate correctly when + repacketization occurs. + + We use the term 'acceptable ACK' as defined in [RFC793]. That is an + ACK that acknowledges previously unacknowledged data. We use the + term 'bytes_acked' to refer to the amount (in terms of octets) of + previously unacknowledged data that is acknowledged by the most + recently received acceptable ACK. We use the TCP sender state + variables 'SND.UNA' and 'SND.NXT' as defined in [RFC793]. SND.UNA + holds the segment sequence number of the oldest outstanding segment. + SND.NXT holds the segment sequence number of the next segment the TCP + sender will (re-)transmit. In addition, we define as 'SND.MAX' the + segment sequence number of the next original transmit to be sent. + The definition of SND.MAX is equivalent to the definition of + 'snd_max' in [WS95]. + + We use the TCP sender state variables 'cwnd' (congestion window), and + 'ssthresh' (slow-start threshold), and the term 'FlightSize' as + defined in [RFC2581]. FlightSize is the amount (in terms of octets) + of outstanding data at a given point in time. We use the term + 'Initial Window' (IW) as defined in [RFC3390]. The IW is the size of + the sender's congestion window after the three-way handshake is + completed. We use the TCP sender state variables 'SRTT' and + + + +Ludwig & Gurtov Standards Track [Page 2] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + 'RTTVAR', and the terms 'RTO' and 'G' as defined in [RFC2988]. G is + the clock granularity of the retransmission timer. In addition, we + assume that the TCP sender maintains the value of the latest round- + trip time (RTT) measurement in the (local) variable 'RTT-SAMPLE'. + + We use the TCP sender state variable 'T_last', and the term 'tcpnow' + as used in [RFC2861]. T_last holds the system time when the TCP + sender sent the last data segment, whereas tcpnow is the TCP sender's + current system time. + +2. Appropriate Detection Algorithms + + If the Eifel response algorithm is implemented at the TCP sender, it + MUST be implemented together with a detection algorithm that is + specified in a standards track or experimental RFC. + + Designers of detection algorithms who want their algorithms to work + together with the Eifel response algorithm should reuse the variable + "SpuriousRecovery" with the semantics and defined values specified in + [RFC3522]. In addition, we define the constant LATE_SPUR_TO (set + equal to -1) as another possible value of the variable + SpuriousRecovery. Detection algorithms should set the value of + SpuriousRecovery to LATE_SPUR_TO if the detection of a spurious + retransmit is based on the ACK for the retransmit (as opposed to an + ACK for an original transmit). For example, this applies to + detection algorithms that are based on the DSACK option [RFC3708]. + +3. The Eifel Response Algorithm + + The complete algorithm is specified in section 3.1. In sections 3.2 + - 3.6, we discuss the different steps of the algorithm. + +3.1. The Algorithm + + Given that a TCP sender has enabled a detection algorithm that + complies with the requirements set in Section 2, a TCP sender MAY use + the Eifel response algorithm as defined in this subsection. + + If the Eifel response algorithm is used, the following steps MUST be + taken by the TCP sender, but only upon initiation of a timeout-based + loss recovery. That is when the first timeout-based retransmit is + sent. The algorithm MUST NOT be reinitiated after a timeout-based + loss recovery has already been started but not completed. In + particular, it may not be reinitiated upon subsequent timeouts for + the same segment, or upon retransmitting segments other than the + oldest outstanding segment. + + + + + +Ludwig & Gurtov Standards Track [Page 3] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + (0) Before the variables cwnd and ssthresh get updated when + loss recovery is initiated, set a "pipe_prev" variable as + follows: + pipe_prev <- max (FlightSize, ssthresh) + + Set a "SRTT_prev" variable and a "RTTVAR_prev" variable as + follows: + SRTT_prev <- SRTT + (2 * G) + RTTVAR_prev <- RTTVAR + + (DET) This is a placeholder for a detection algorithm that must + be executed at this point, and that sets the variable + SpuriousRecovery as outlined in Section 2. If + [RFC3522] is used as the detection algorithm, steps (1) - + (6) of that algorithm go here. + + (7) If SpuriousRecovery equals SPUR_TO, then + proceed to step (8); + + else if SpuriousRecovery equals LATE_SPUR_TO, then + proceed to step (9); + + else + proceed to step (DONE). + + (8) Resume the transmission with previously unsent data: + + Set + SND.NXT <- SND.MAX + + (9) Reverse the congestion control state: + + If the acceptable ACK has the ECN-Echo flag [RFC3168] set, + then + proceed to step (DONE); + + else set + cwnd <- FlightSize + min (bytes_acked, IW) + ssthresh <- pipe_prev + + Proceed to step (DONE). + + (10) Interworking with Congestion Window Validation: + + If congestion window validation is implemented according + to [RFC2861], then set + T_last <- tcpnow + + + + +Ludwig & Gurtov Standards Track [Page 4] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + (11) Adapt the conservativeness of the retransmission timer: + + Upon the first RTT-SAMPLE taken from new data; i.e., the + first RTT-SAMPLE that can be derived from an acceptable + ACK for data that was previously unsent when the spurious + timeout occurred, + + if the retransmission timer is implemented according + to [RFC2988], then set + SRTT <- max (SRTT_prev, RTT-SAMPLE) + RTTVAR <- max (RTTVAR_prev, RTT-SAMPLE/2) + RTO <- SRTT + max (G, 4*RTTVAR) + + Run the bounds check on the RTO (rules (2.4) and + (2.5) in [RFC2988]), and restart the + retransmission timer; + + else + appropriately adapt the conservativeness of the + retransmission timer that is implemented. + + (DONE) No further processing. + +3.2. Storing the Current Congestion Control State (Step 0) + + The TCP sender stores in pipe_prev what is considered a safe slow- + start threshold (ssthresh) before loss recovery is initiated; i.e., + before the loss indication is taken into account. This is either the + current FlightSize, if the TCP sender is in congestion avoidance, or + the current ssthresh, if the TCP sender is in slow-start. If the TCP + sender later detects that it has entered loss recovery unnecessarily, + then pipe_prev is used in step (9) to reverse the congestion control + state. Thus, until the loss recovery phase is terminated, pipe_prev + maintains a memory of the congestion control state of the time right + before the loss recovery phase was initiated. A similar approach is + proposed in [RFC2861], where this state is stored in ssthresh + directly after a TCP sender has become idle or application limited. + + There had been debates about whether the value of pipe_prev should be + decayed over time; e.g., upon subsequent timeouts for the same + outstanding segment. We do not require decaying pipe_prev for the + Eifel response algorithm and do not believe that such a conservative + approach should be in place. Instead, we follow the idea of + revalidating the congestion window through slow-start, as suggested + in [RFC2861]. That is, in step (9), the cwnd is reset to a value + that avoids large packet bursts, and ssthresh is reset to the value + of pipe_prev. Note that [RFC2581] and [RFC2861] also do not require + + + + +Ludwig & Gurtov Standards Track [Page 5] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + a decaying of ssthresh after it has been reset in response to a loss + indication, or after a TCP sender has become idle or application + limited. + +3.3. Suppressing the Unnecessary go-back-N Retransmits (Step 8) + + Without the use of the TCP timestamps option [RFC1323], the TCP + sender suffers from the retransmission ambiguity problem [Zh86], + [KP87]. Therefore, when the first acceptable ACK arrives after a + spurious timeout, the TCP sender must assume that this ACK was sent + in response to the retransmit when in fact it was sent in response to + an original transmit. Furthermore, the TCP sender must further + assume that all other segments that were outstanding at that point + were lost. + + Note: Except for certain cases where original ACKs were lost, the + first acceptable ACK cannot carry a DSACK option [RFC2883]. + + Consequently, once the TCP sender's state has been updated after the + first acceptable ACK has arrived, SND.NXT equals SND.UNA. This is + what causes the often unnecessary go-back-N retransmits. From that + point on every arriving acceptable ACK that was sent in response to + an original transmit will advance SND.NXT. But as long as SND.NXT is + smaller than the value that SND.MAX had when the timeout occurred, + those ACKs will clock out retransmits, whether or not the + corresponding original transmits were lost. + + In fact, during this phase the TCP sender breaks 'packet + conservation' [Jac88]. This is because the go-back-N retransmits are + sent during slow-start. For each original transmit leaving the + network, two retransmits are sent into the network as long as SND.NXT + does not equal SND.MAX (see [LK00] for more detail). + + Once a spurious timeout has been detected (upon receipt of an ACK for + an original transmit), it is safe to let the TCP sender resume the + transmission with previously unsent data. Thus, the Eifel response + algorithm changes the TCP sender's state by setting SND.NXT to + SND.MAX. Note that this step is only executed if the variable + SpuriousRecovery equals SPUR_TO, which in turn requires a detection + algorithm such as the Eifel detection algorithm [RFC3522] or the F- + RTO algorithm [SK04] that detects a spurious retransmit based upon + receiving an ACK for an original transmit (as opposed to the ACK for + the retransmit [RFC3708]). + + + + + + + + +Ludwig & Gurtov Standards Track [Page 6] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + +3.4. Reversing the Congestion Control State (Step 9) + + When a TCP sender enters loss recovery, it reduces cwnd and ssthresh. + However, once the TCP sender detects that the loss recovery has been + falsely triggered, this reduction proves unnecessary. We therefore + believe that it is safe to revert to the previous congestion control + state, following the approach of revalidating the congestion window + as outlined below. This is unless the acceptable ACK signals + congestion through the ECN-Echo flag [RFC3168]. In that case, the + TCP sender MUST refrain from reversing congestion control state. + + If the ECN-Echo flag is not set, cwnd is reset to the sum of the + current FlightSize and the minimum of bytes_acked and IW. In some + cases, this can mean that the first few acceptable ACKs that arrive + will not clock out any data segments. Recall that bytes_acked is the + number of bytes that have been acknowledged by the acceptable ACK. + Note that the value of cwnd must not be changed any further for that + ACK, and that the value of FlightSize at this point in time may be + different from the value of FlightSize in step (0). The value of IW + puts a limit on the size of the packet burst that the TCP sender may + send into the network after the Eifel response algorithm has + terminated. The value of IW is considered an acceptable burst size. + It is the amount of data that a TCP sender may send into a yet + "unprobed" network at the beginning of a connection. + + Then ssthresh is reset to the value of pipe_prev. As a result, the + TCP sender either immediately resumes probing the network for more + bandwidth in congestion avoidance, or it slow-starts to what is + considered a safe operating point for the congestion window. + +3.5. Interworking with the CWV Algorithm (Step 10) + + An implementation of the Congestion Window Validation (CWV) algorithm + [RFC2861] could potentially misinterpret a delay spike that caused a + spurious timeout as a phase where the TCP sender had been idle. + Therefore, T_last is reset to prevent the triggering of the CWV + algorithm in this case. + + Note: The term 'idle' implies that the TCP sender has no data + outstanding; i.e., all data sent has been acknowledged [Jac88]. + According to this definition, a TCP sender is not idle while it is + waiting for an acceptable ACK after a timeout. Unfortunately, the + pseudo-code in [RFC2861] does not include a check for the + condition "idle" (SND.UNA == SND.MAX). We therefore had to add + step (10) to the Eifel response algorithm. + + + + + + +Ludwig & Gurtov Standards Track [Page 7] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + +3.6. Adapting the Retransmission Timer (Step 11) + + There is currently only one retransmission timer standardized for TCP + [RFC2988]. We therefore only address that timer explicitly. Future + standards that might define alternatives to [RFC2988] should propose + similar measures to adapt the conservativeness of the retransmission + timer. + + A spurious timeout often results from a delay spike, which is a + sudden increase of the RTT that usually cannot be predicted. After a + delay spike, the RTT may have changed permanently; e.g., due to a + path change, or because the available bandwidth on a bandwidth- + dominated path has decreased. This may often occur with wide-area + wireless access links. In this case, the RTT estimators (SRTT and + RTTVAR) should be reinitialized from the first RTT-SAMPLE taken from + new data according to rule (2.2) of [RFC2988]. That is, from the + first RTT-SAMPLE that can be derived from an acceptable ACK for data + that was previously unsent when the spurious timeout occurred. + + However, a delay spike may only indicate a transient phase, after + which the RTT returns to its previous range of values, or even to + smaller values. Also, a spurious timeout may occur because the TCP + sender's RTT estimators were only inaccurate enough that the + retransmission timer expires "a tad too early". We believe that two + times the clock granularity of the retransmission timer (2 * G) is a + reasonable upper bound on "a tad too early". Thus, when the new RTO + is calculated in step (11), we ensure that it is at least (2 * G) + greater (see also step (0)) than the RTO was before the spurious + timeout occurred. + + Note that other TCP sender processing will usually take place between + steps (10) and (11). During this phase (i.e., before step (11) has + been reached), the RTO is managed according to the rules of + [RFC2988]. We believe that this is sufficiently conservative for the + following reasons. First, the retransmission timer is restarted upon + the acceptable ACK that was used to detect the spurious timeout. As + a result, the delay spike is already implicitly factored in for + segments outstanding at that time. This is discussed in more detail + in [EL04], where this effect is called the "RTO offset". + Furthermore, if timestamps are enabled, a new and valid RTT-SAMPLE + can be derived from that acceptable ACK. This RTT-SAMPLE must be + relatively large, as it includes the delay spike that caused the + spurious timeout. Consequently, the RTT estimators will be updated + rather conservatively. Without timestamps the RTO will stay + conservatively backed-off due to Karn's algorithm [RFC2988] until the + first RTT-SAMPLE can be derived from an acceptable ACK for data that + was previously unsent when the spurious timeout occurred. + + + + +Ludwig & Gurtov Standards Track [Page 8] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + For the new RTO to become effective, the retransmission timer has to + be restarted. This is consistent with [RFC2988], which recommends + restarting the retransmission timer with the arrival of an acceptable + ACK. + +4. Advanced Loss Recovery is Crucial for the Eifel Response Algorithm + + We have studied environments where spurious timeouts and multiple + losses from the same flight of packets often coincide [GL02], [GL03]. + In such a case, the oldest outstanding segment arrives at the TCP + receiver, but one or more packets from the remaining outstanding + flight are lost. In those environments, end-to-end performance + suffers if the Eifel response algorithm is operated without an + advanced loss recovery scheme such as a SACK-based scheme [RFC3517] + or NewReno [RFC3782]. The reason is TCP-Reno's aggressiveness after + a spurious timeout. Even though TCP-Reno breaks 'packet + conservation' (see Section 3.3) when blindly retransmitting all + outstanding segments, it usually recovers all packets lost from that + flight within a single round-trip time. On the contrary, the more + conservative TCP-Reno-with-Eifel is often forced into another + timeout. Thus, we recommend that the Eifel response algorithm always + be operated in combination with [RFC3517] or [RFC3782]. Additional + robustness is achieved with the Limited Transmit and Early Retransmit + algorithms [RFC3042], [AAAB04]. + + Note: The SACK-based scheme we used for our simulations in [GL02] + and [GL03] is different from the SACK-based scheme that later got + standardized [RFC3517]. The key difference is that [RFC3517] is + more robust to multiple losses from the same flight. It is less + conservative in declaring that a packet has left the network, and + is therefore less dependent on timeouts to recover genuine packet + losses. + + If the NewReno algorithm [RFC3782] is used in combination with the + Eifel response algorithm, step (1) of the NewReno algorithm SHOULD be + modified as follows, but only if SpuriousRecovery equals SPUR_TO: + + (1) Three duplicate ACKs: + When the third duplicate ACK is received and the sender is + not already in the Fast Recovery procedure, go to step 1A. + + That is, the entire step 1B of the NewReno algorithm is obsolete + because step (8) of the Eifel response algorithm avoids the case + where three duplicate ACKs result from unnecessary go-back-N + retransmits after a timeout. Step (8) of the Eifel response + algorithm avoids such unnecessary go-back-N retransmits in the first + place. However, recall that step (8) is only executed if the + variable SpuriousRecovery equals SPUR_TO, which in turn requires a + + + +Ludwig & Gurtov Standards Track [Page 9] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + detection algorithm, such as the Eifel detection algorithm [RFC3522] + or the F-RTO algorithm [SK04], that detects a spurious retransmit + based upon receiving an ACK for an original transmit (as opposed to + the ACK for the retransmit [RFC3708]). + +5. Security Considerations + + There is a risk that a detection algorithm is fooled by spoofed ACKs + that make genuine retransmits appear to the TCP sender as spurious + retransmits. When such a detection algorithm is run together with + the Eifel response algorithm, this could effectively disable + congestion control at the TCP sender. Should this become a concern, + the Eifel response algorithm SHOULD only be run together with + detection algorithms that are known to be safe against such "ACK + spoofing attacks". + + For example, the safe variant of the Eifel detection algorithm + [RFC3522], is a reliable method to protect against this risk. + +6. Acknowledgements + + Many thanks to Keith Sklower, Randy Katz, Michael Meyer, Stephan + Baucke, Sally Floyd, Vern Paxson, Mark Allman, Ethan Blanton, Pasi + Sarolahti, Alexey Kuznetsov, and Yogesh Swami for many discussions + that contributed to this work. + +7. References + +7.1. Normative References + + [RFC2581] Allman, M., Paxson, V., and W. Stevens, "TCP Congestion + Control", RFC 2581, April 1999. + + [RFC3390] Allman, M., Floyd, S., and C. Partridge, "Increasing TCP's + Initial Window", RFC 3390, October 2002. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3782] Floyd, S., Henderson, T., and A. Gurtov, "The NewReno + Modification to TCP's Fast Recovery Algorithm", RFC 3782, + April 2004. + + [RFC2861] Handley, M., Padhye, J., and S. Floyd, "TCP Congestion + Window Validation", RFC 2861, June 2000. + + [RFC3522] Ludwig, R. and M. Meyer, "The Eifel Detection Algorithm for + TCP", RFC 3522, April 2003. + + + +Ludwig & Gurtov Standards Track [Page 10] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + [RFC2988] Paxson, V. and M. Allman, "Computing TCP's Retransmission + Timer", RFC 2988, November 2000. + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC + 793, September 1981. + + [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of + Explicit Congestion Notification (ECN) to IP", RFC 3168, + September 2001. + +7.2. Informative References + + [RFC3042] Allman, M., Balakrishnan, H., and S. Floyd, "Enhancing + TCP's Loss Recovery Using Limited Transmit", RFC 3042, + January 2001. + + [AAAB04] Allman, M., Avrachenkov, K., Ayesta, U., and J. Blanton, + Early Retransmit for TCP and SCTP, Work in Progress, July + 2004. + + [BA02] Blanton, E. and M. Allman, On Making TCP More Robust to + Packet Reordering, ACM Computer Communication Review, Vol. + 32, No. 1, January 2002. + + [RFC3708] Blanton, E. and M. Allman, "Using TCP Duplicate Selective + Acknowledgement (DSACKs) and Stream Control Transmission + Protocol (SCTP) Duplicate Transmission Sequence Numbers + (TSNs) to Detect Spurious Retransmissions", RFC 3708, + February 2004. + + [RFC3517] Blanton, E., Allman, M., Fall, K., and L. Wang, "A + Conservative Selective Acknowledgment (SACK)-based Loss + Recovery Algorithm for TCP", RFC 3517, April 2003. + + [EL04] Ekstrom, H. and R. Ludwig, The Peak-Hopper: A New End-to- + End Retransmission Timer for Reliable Unicast Transport, In + Proceedings of IEEE INFOCOM 04, March 2004. + + [RFC2883] Floyd, S., Mahdavi, J., Mathis, M., and M. Podolsky, "An + Extension to the Selective Acknowledgement (SACK) Option + for TCP", RFC 2883, July 2000. + + [GL02] Gurtov, A. and R. Ludwig, Evaluating the Eifel Algorithm + for TCP in a GPRS Network, In Proceedings of the European + Wireless Conference, February 2002. + + [GL03] Gurtov, A. and R. Ludwig, Responding to Spurious Timeouts + in TCP, In Proceedings of IEEE INFOCOM 03, April 2003. + + + +Ludwig & Gurtov Standards Track [Page 11] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + + [Jac88] Jacobson, V., Congestion Avoidance and Control, In + Proceedings of ACM SIGCOMM 88. + + [RFC1323] Jacobson, V., Braden, R., and D. Borman, "TCP Extensions + for High Performance", RFC 1323, May 1992. + + [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. + + [SK04] Sarolahti, P. and M. Kojo, F-RTO: An Algorithm for + Detecting Spurious Retransmission Timeouts with TCP and + SCTP, Work in Progress, November 2004. + + [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 88. + +Authors' Addresses + + Reiner Ludwig + Ericsson Research (EDD) + Ericsson Allee 1 + 52134 Herzogenrath, Germany + + EMail: Reiner.Ludwig@ericsson.com + + + Andrei Gurtov + Helsinki Institute for Information Technology (HIIT) + P.O. Box 9800, FIN-02015 + HUT, Finland + + EMail: andrei.gurtov@cs.helsinki.fi + Homepage: http://www.cs.helsinki.fi/u/gurtov + + + + + + + + + + +Ludwig & Gurtov Standards Track [Page 12] + +RFC 4015 The Eifel Response Algorithm for TCP February 2005 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2005). + + This document is subject to the rights, licenses and restrictions + contained in BCP 78, and except as set forth therein, the authors + retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM 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. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights 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; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the IETF's procedures with respect to rights in IETF Documents can + be found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat 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 implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + +Ludwig & Gurtov Standards Track [Page 13] + |