SELECTIVE ACKNOWLEDGEMENT SACK - PowerPoint PPT Presentation

1 / 17
About This Presentation
Title:

SELECTIVE ACKNOWLEDGEMENT SACK

Description:

Using SACK, a data receiver can inform the sender about all segments that have ... unacknowledged (cumulatively) data even if the data has been previously SACKed. ... – PowerPoint PPT presentation

Number of Views:324
Avg rating:3.0/5.0
Slides: 18
Provided by: brucen150
Category:

less

Transcript and Presenter's Notes

Title: SELECTIVE ACKNOWLEDGEMENT SACK


1
SELECTIVE ACKNOWLEDGEMENT (SACK)
  • Presented by
  • David R. Cook
  • Bruce N. Phan

2
Overview
  • Introduction to SACK
  • How SACK Works
  • Duplicate SACK An extension of SACK
  • A Conservative SACK-based Loss Recovery Algorithm
    for TCP
  • References

3
Motivation for SACK
  • Cumulative acknowledgments give the data sender
    limited information
  • Unnecessary retransmissions can reduce network
    throughput
  • A SACK mechanism can help overcome this problem
  • Using SACK, a data receiver can inform the sender
    about all segments that have arrived successfully

4
How SACK Works
  • 2-byte Sack-Permitted Option
  • must be sent in a SYN segment to enable the SACK
    option.
  • SACK Option
  • conveys extended acknowledgement information.

Kind4
Length2
Length2
Kind5
Left Edge of 1st Block
Right Edge of 1st Block
. . .
Left Edge of nth Block
Right Edge of nth Block
5
How SACK Works (continued)
  • Normally, a maximum of 3 blocks can be used for
    the TCP SACK Option
  • If SACK-Permitted option has not been received,
    the data receiver MUST NOT send SACK options
  • If the data receiver SHOULD only use the SACK
    option if it is to be used under all
    circumstances
  • The first SACK block indicates the most recent
    contiguous segment that was received successfully
    which has not been acknowledged.
  • Data receiver SHOULD include as many distinct
    SACK blocks as possible.

6
Examples
  • Assumptions
  • Left window edge 5000
  • Number of transmitted segments 8
  • Segment size 500 bytes
  • Case 1 The first 4 segments are received, but
    the last 4 are dropped.
  • The data receiver will return a normal TCP ACK
    segment acknowledging sequence number 7000, with
    no SACK option.

7
Examples (continued)
  • Case 2 The first segment is dropped but the
    remaining 7 are received.
  • Upon receiving each of the last seven
    packets, the data
  • receiver will return a TCP ACK segment
    that acknowledges
  • sequence number 5000 and contains a SACK
    option specifying
  • one block of queued data
  • Triggering ACK Left Edge
    Right Edge
  • Segment
  • 5000 (lost)
  • 5500 5000 5500
    6000
  • 6000 5000 5500
    6500
  • 6500 5000 5500
    7000
  • 7000 5000 5500
    7500
  • 7500 5000 5500
    8000
  • 8000 5000 5500
    8500
  • 8500 5000 5500
    9000

8
Examples (continued)
  • Case 3 The 2nd, 4th, 6th, and 8th (last)
    segments are dropped.
  • The data receiver ACKs the first packet
    normally. The third,
  • fifth, and seventh packets trigger SACK options
    as follows
  • Triggering ACK First Block 2nd
    Block 3rd Block
  • Segment Left Right
    Left Right Left Right
  • Edge Edge
    Edge Edge Edge Edge
  • 5000 5500
  • 5500 (lost)
  • 6000 5500 6000 6500
  • 6500 (lost)
  • 7000 5500 7000 7500
    6000 6500
  • 7500 (lost)
  • 8000 5500 8000 8500
    7000 7500 6000 6500
  • 8500 (lost)

9
Examples (continued)
  • At this point, if 4th packet is received, data
    receiver replies with this SACK
  • Triggering ACK First Block 2nd
    Block 3rd Block
  • Segment Left Right
    Left Right Left Right
  • Edge Edge
    Edge Edge Edge Edge
  • 6500 5500 6000 7500
    8000 8500
  • At this point, if 2nd packet is received, data
    receiver replies with this SACK
  • Triggering ACK First Block 2nd
    Block 3rd Block
  • Segment Left Right
    Left Right Left Right
  • Edge Edge
    Edge Edge Edge Edge
  • 5500 7500 8000 8500

10
Data Receiver Reneging
  • The data receiver has the choice to discard
    unacknowledged (cumulatively) data even if the
    data has been previously SACKed.
  • This is discouraged, but may be used by the data
    receiver in case the receiver runs out of buffer
    space.
  • In this case, the first SACK block must report,
    at a minimum, the left and right edges of the
    newest segment.
  • Except for the newest segment, the receiver
    should not report any SACKed data that are no
    longer being held.
  • Because the receiver can discard previously
    SACKed data, the data sender MUST NOT discard any
    data that have not been cumulatively acknowledged.

11
Duplicate SACK (D-SACK) An Extension
  • This extension to SACK addresses the issue of
    duplicate segments.
  • The first SACK block will identify the duplicate
    packet.
  • This allows the sender to infer that it has sent
    a duplicate packet.
  • This extension does not make changes to TCP
    cumulative acknowledgement. It is compatible
    with other TCP nodes which have not implemented
    this extension.
  • Using this implementation does not require any
    additional negotiation between a TCP sender and
    receiver.

12
Guidelines for Reporting Duplicate Segments
  • The D-SACK block is only used to report a
    duplicate found in the most recently received
    packet.
  • Each duplicate is only reported once.
  • The D-SACK block follows the same format as a
    SACK block with left and right edges.
  • If a duplicate contiguous segment is found in
    data above cumulative ACK, then the D-SACK block
    will specify the duplicate segment and the 2nd
    SACK block will specify the contiguous segment
    within which the duplicate was detected.
  • The remaining SACK blocks can be used to report
    additional received data segments.

13
Examples
  • Example 1 Reporting a duplicate segment.
  • Because some ACKs were lost, the sender sent a
    duplicate segment, 3000-3499.
  • Transmitted Received ACK Sent
  • Segment Segment (Including SACK
    Blocks)
  • 3000-3499 3000-3499 3500 (ACK dropped)
  • 3500-3999 3500-3999 4000 (ACK dropped)
  • 3000-3499 3000-3499 4000, SACK3000-3500

14
Examples (continued)
  • Example 2 Reporting an out-of-order segment and
    a duplicate segment
  • Transmitted Received ACK Sent
  • Segment Segment (Including SACK
    Blocks)
  • 3000-3499 3000-3499 3500 (ACK dropped)
  • 3500-3999 3500-3999 4000 (ACK dropped)
  • 4000-4499 (data packet dropped)
  • 4500-4499 4500-4499 4000, SACK4500-5000
    (ACK dropped)
  • 3000-3499 3000-3499 4000,
    SACK3000-3500, 4500-5000

15
Examples (continued)
  • Example 3 Reporting a duplicate of an
    out-of-order segment
  • The receiver receives 2 out-of-order segments
    and then receives a duplicate of one of these.
  • Transmitted Received ACK Sent
  • Segment Segment (Including SACK
    Blocks)
  • 3000-3999 3000-3999 4000
  • 4000-4499 (data packet dropped)
  • 4500-4499 4500-4499 4000, SACK4500-5000
  • 5000-5499 5000-5499 4000, SACK4500-5500
  • (duplicated packet)
  • 5000-5499 4000,
    SACK5000-5500, 4500-5500

16
A Conservative SACK-based Loss Recovery Algorithm
for TCP
  • As of April 2003, there was evidence that TCP
    hosts were beginning to implement the SACK
    option however, they were not utilizing the SACK
    information when making retransmission and
    congestion control decisions.
  • To encourage TCP implementations to use SACK
    information to increase performance, the authors
    of RFC 3517 presents a conservative loss-recovery
    algorithm.
  • The algorithm helps TCP implementations make
    various retransmission decisions, such as
    determining which segments to send next.
  • This algorithm is considered to be conservative
    because it allows implementers to use a more
    careful RTO management variant that re-arms the
    RTO timer on each retransmission that is sent
    during recovery.

17
References
  • RFC2018 Mathis, M., Mahdavi, J., Floyd, S. and
    A. Romanow, TCP Selective Acknowledgement
    Options, RFC 2018, October 1996.
  • RFC2883 Floyd. S, Mahdavi J., Mathis, M.,
    Podolsky, M., An Extension to the Selective
    Acknowledgment (SACK) Option for TCP, RFC 2883,
    July 2000.
  • RFC3517 Blanton, E., Allman, M., Fall, K.,
    Wang, L., A Conservative Selective
    Acknowledgment (SACK)-based Loss Recovery
    Algorithm for TCP, RFC 3517, April 2003.
  • Fall, K., Floyd S, Comparisons of Tahoe, Reno,
    and Sack TCP, December 1995.
  • Floyd S., Issues of TCP with SACK, March 1996.
Write a Comment
User Comments (0)
About PowerShow.com