1 / 67

Eifel Detection Algorithm*

Eifel Detection Algorithm*. Presented by : Maitreya Natu CISC 856, Fall 2004 natu@cis.udel.edu. *Reiner Ludwig, M. Meyer, Ericsson Research, April 2003, Request for Comments: 3522. What is Eifel algorithm?. Enhancement to TCP’s error recovery scheme

cael
Download Presentation

Eifel Detection Algorithm*

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Eifel Detection Algorithm* Presented by : Maitreya Natu CISC 856, Fall 2004 natu@cis.udel.edu *Reiner Ludwig, M. Meyer, Ericsson Research, April 2003, Request for Comments: 3522

  2. What is Eifel algorithm? • Enhancement to TCP’s error recovery scheme • Eliminates retransmission ambiguity, there by solving problems caused by spurious timeouts and spurious retransmits • Can improve end-to-end performance by several tens of percent • Makes TCP truly wireless compatible

  3. Timeout based retransmission ssthresh = 16 cwnd = 8 ssthresh = 8/2 = 4 cwnd = 1 Timeout Slow start cwnd = 2 . . . cwnd = 4 cwnd = 16 … Congestion avoidance … cwnd = 17

  4. Fast retransmit ssthresh = 16 A1 cwnd = 8 D1 … D8 A1 A1 3 Dup-ACKs A1 D1 Swnd= 4+3=7 ssthresh = 8/2 = 4 cwnd = 4 Fast retransmit & fast recovery A9 Di cwnd = 4 Dj … Congestion avoidance Ai+1 Aj+1 cwnd = 5

  5. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 Timeout

  6. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start

  7. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start

  8. Q1 When does a spurious timeout occur? Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start Spurious timeout & spurious retransmission

  9. Q1 When does a spurious timeout occur? When RTT suddenly increases, to the extent that it exceeds the retransmission time out value that had been determined a prior Q2 What can cause RTT to increase suddenly? Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start

  10. Q1 When does a spurious timeout occur? When RTT suddenly increases, to the extent that it exceeds the retransmission time out value that had been determined a prior Q2 What can cause RTT to increase suddenly? Route changes Rapid increase in congestion Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start

  11. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start

  12. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 D2 cwnd = 2 D3 Slow start

  13. Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 A3 A4 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 D2 cwnd = 2 D3 Slow start

  14. Q3 How does it affect TCP performance Sender unnecessarily reduces the load Sender if forced into a go-back-N retransmission mode Can lead to real packet losses due to congestion caused by aggressive sender behavior Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 A3 A4 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 D2 cwnd = 2 D3 cwnd = 4 Slow start

  15. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 3 Dup-ACKs

  16. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 Fast retransmit & fast recovery

  17. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery

  18. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery Spurious fast retransmit

  19. Q1 When does a spurious fast retransmit occur? Occur due to reordering of packets beyond the DUP-ACK threshold Frequency of occurrence depends on path properties E.g.: due to load-balancing on a routers inter-connected via multiple links Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery Spurious fast retransmit

  20. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery

  21. Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery cwnd = 4 … … Congestion avoidance cwnd = 5

  22. Q2 How does it affect TCP performance Causes the sender to unnecessarily reduce its load Causes the sender to unnecessarily retransmit Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery cwnd = 4 … … Congestion avoidance cwnd = 5

  23. Problem Sender’s inability to distinguish an ACK for original transmission from that of retransmission Spurious Timeout ssthresh = 16 D1 cwnd = 8 D8 A2 ssthresh = 8/2 = 4 D1 Timeout cwnd = 1 Slow start Spurious timeout & spurious retransmission

  24. Problem Sender’s inability to distinguish an ACK for original transmission from that of retransmission Spurious fast retransmit ssthresh = 16 A1 D1 cwnd = 8 D8 … A1 A1 A1 ssthresh = 4 3 Dup-ACKs D1 cwnd = 4 swnd = 7 A9 Fast retransmit & fast recovery Spurious fast retransmit

  25. Problem & Solution • Problem • Retransmission ambiguity • Sender’s inability to distinguish an ACK for original transmission from the ACK for retransmission • Solution • Eliminate retransmission ambiguity • Use extra information in the ACKs to distinguish an ACK for original transmission from an ACK for retransmission

  26. Review of TCP timestamp option[RFC 1323] Time at receiver Time at sender 100 100 200 200, 100 300 300, 200 301 301, 200 400 Timestamp of the most recent data segment that advanced the window is echoed (here 301) 400, 301 4.4BSD increments the timestamp clock once every 500ms and this timestamp clock is reset to 0 on a reboot - TCP/IP ILLUS v1, p349

  27. Eliminating retransmission ambiguity A, 500, xxx 500 100 D4, 100, 500 … D11, 100, 500 Time-out 400 ts_first_rexmit = 400 D4, 400, 500

  28. Eliminating retransmission ambiguity A, 500, xxx 500 100 D4, 100, 500 … D11, 100, 500 Time-out 501 A5, 501, 100 400 ts_first_rexmit = 400 D4, 400, 500

  29. Eliminating retransmission ambiguity A, 500, xxx 500 100 D4, 100, 500 … D11, 100, 500 Time-out 501 A5, 501, 100 400 ts_first_rexmit = 400 D4, 400, 500 (100 < 400) spurious retransmission

  30. Sender’s Response without Eifel cwnd=16 ssthresh=32 D1 … D16 Time-out D1 cwnd=1 ssthresh=8

  31. Sender’s Response without Eifel cwnd=16 ssthresh=32 D1 … D16 Time-out A2 D1 cwnd=1 ssthresh=8

  32. Sender’s Response without Eifel cwnd=16 ssthresh=32 D1 … D16 Time-out A2 D1 cwnd=1 ssthresh=8 D2 cwnd=2 ssthresh=8 D3

  33. Sender’s Response with Eifel cwnd=16 ssthresh=32 100 D1, 100, 500 … D16, 100, 500 Time-out ts_first_rexmit = 400, cwnd = 16, ssthresh=32 400 D1, 400, 500 cwnd=1 ssthresh=8

  34. Sender’s Response with Eifel cwnd=16 ssthresh=32 100 D1, 100, 500 … D16, 100, 500 Time-out ts_first_rexmit = 400, cwnd = 16, ssthresh=32 501 A2, 501, 100 400 D1, 400, 500 cwnd=1 ssthresh=8 401

  35. Sender’s Response with Eifel cwnd=16 ssthresh=32 100 D1, 100, 500 … D16, 100, 500 Time-out ts_first_rexmit = 400, cwnd = 16, ssthresh=32 501 A2, 501, 100 400 D1, 400, 500 cwnd=1 ssthresh=8 (100 < 400) spurious retransmission detected 401 Restore cwnd = 16, ssthresh=32

  36. Sender’s Response with Eifel cwnd=16 ssthresh=32 100 D1, 100, 500 … D16, 100, 500 Time-out ts_first_rexmit = 400, cwnd = 16, ssthresh=32 501 A2, 501, 100 400 D1, 400, 500 cwnd=1 ssthresh=8 (100 < 400) spurious retransmission detected 401 cwnd=16 ssthresh=32 D17, 401, 500 Restore cwnd = 16, ssthresh=32

  37. Sender’s Response without Eifel A1 D1 cwnd=16, ssthresh=32 D2 A1 … D16 A1 A1 3 Dup-ACKs

  38. Sender’s Response without Eifel A1 D1 cwnd=16, ssthresh=32 D2 A1 … D16 A1 A1 3 Dup-ACKs cwnd=8, ssthresh=8 swnd=11 D1

  39. Sender’s Response without Eifel A1 D1 cwnd=16, ssthresh=32 D2 A1 … D16 A1 A1 A5 3 Dup-ACKs cwnd=8, ssthresh=8 swnd=11 D1 cwnd=8, ssthresh=8

  40. Sender’s Response with Eifel A1, 500, 100 cwnd=16, ssthresh=32 D1, 100, 500 D2, 100, 500 … A1, 501, 100 D16, 100, 500 A1, 501, 100 A1, 501, 100 3 Dup-ACKs

  41. Sender’s Response with Eifel A1, 500, 100 cwnd=16, ssthresh=32 D1, 100, 500 D2, 100, 500 … A1, 501, 100 D16, 100, 500 A1, 501, 100 A1, 501, 100 3 Dup-ACKs ts_first_rexmit = 400, cwnd=16,ssthresh=32 cwnd=11,ssthresh=8 D1, 400, 500

  42. Sender’s Response with Eifel A1, 500, 100 cwnd=16, ssthresh=32 D1, 100, 500 D2, 100, 500 … A1, 501, 100 D16, 100, 500 A1, 501, 100 A1, 501, 100 A5, 501, 100 3 Dup-ACKs ts_first_rexmit = 400, cwnd=16,ssthresh=32 cwnd=11,ssthresh=8 D1, 400, 500 100 < 400, Spurious ReXmit, Restore

  43. Sender’s Response with Eifel A1, 500, 100 cwnd=16, ssthresh=32 D1, 100, 500 D2, 100, 500 … A1, 501, 100 D16, 100, 500 A1, 501, 100 A1, 501, 100 A5, 501, 100 3 Dup-ACKs ts_first_rexmit = 400, cwnd=16,ssthresh=32 cwnd=11,ssthresh=8 D1, 400, 500 100 < 400, Spurious ReXmit, Restore cwnd=16,ssthresh=32 D17, 401, 501 … D20, 401, 501

  44. Summary • Spurious time-out • Without Eifel: ssthresh = cwnd/2, cwnd = 1 • Enter slow start • With Eifel: Restore old cwnd and ssthresh • Restore previous state • Spurious fast retransmit • Without Eifel: ssthresh = cwnd = cwnd/2 • Enter congestion avoidance • With Eifel: Restore old cwnd and ssthresh • Restore previous state • Thus Eifel prevents unnecessary reduction in load, and spurious retransmissions

  45. Some more details • On detecting a spurious retransmission • If a single retransmission done • ssthresh = old ssthresh; cwnd = old cwnd • If 2 retransmissions done • ssthresh = cwnd/2; cwnd = cwnd/2 • If > 2 retransmissions done • ssthresh = cwnd/2; cwnd = 1 • The more spurious retransmissions have occured, the more conservative the sender gets • In either case, sender resumes transmission with the next unsent PDU

  46. Thus, the Eifel algorithm.. • Enhancement to TCP’s error recovery scheme • Eliminates retransmission ambiguity, there by solving problems caused by spurious timeouts and spurious retransmits • Can improve end-to-end performance by several tens of percent • Makes TCP truly wireless compatible

  47. Other detection strategies • DSACK based detection • Forward-RTO

  48. DSACK based detection D1 … D16 Time-out A2 D1 ACK for D1 A16,A1 DSACK for D1, D1 spuriously retransmitted, Resume previous state RFC 3708, Using TCP Duplicate Selective Acknowledgement (DSACKs) and Stream Control Transmission Protocol (SCTP) Duplicate Transmission Sequence Numbers (TSNs) to Detect Spurious Retransmissions

  49. DSACK based detection D1 cwnd=16, ssthresh=32 … D16 Time-out D1 cwnd=1, ssthresh=8 Internet Draft: The Eifel Detection Algorithm for TCP <draft-ietf-tsvwg-tcp-eifel-alg-03.txt>, RFC 2883: DSACK

  50. DSACK based detection D1 cwnd=16, ssthresh=32 … D16 Time-out A2 D1 cwnd=1, ssthresh=8 cwnd=2, ssthresh=8 Internet Draft: The Eifel Detection Algorithm for TCP <draft-ietf-tsvwg-tcp-eifel-alg-03.txt>, RFC 2883: DSACK

More Related