190 likes | 370 Views
NR-SACKs ( N on- R enegable S elective Ack nowledgments ) . I-D.natarajan-tsvwg-sctp-nrsack-00 (work in progress). CISC 856 TCP/IP & UPPER LAYER PROTOCOLS. Ertuğrul Yılmaz. November 29, 2007. Thanks To: Dr. Paul Amer. Data Acknowledgment.
E N D
NR-SACKs(Non-Renegable SelectiveAcknowledgments ) I-D.natarajan-tsvwg-sctp-nrsack-00 (work in progress) CISC 856 TCP/IP & UPPER LAYER PROTOCOLS Ertuğrul Yılmaz November 29, 2007 Thanks To: Dr. Paul Amer
Data Acknowledgment • Cumulative Acknowledgment (ACK)Cum-Ackn: -all data up to but not including byte n (TCP) -all TSNs up to and including TSN n (SCTP) • Selective Acknowledgment (SACK)Informs data sender of data received out-of-order • Duplicate SACK (D-SACK)Informs data sender of duplicate data • In SCTP, these three types of acknowledgment information are carried in a SACK chunk • I will refer to these Acks as:cum-acks, gap-acks, dup-TSNs
Reneging Example TSN = 10 10 cum-ack 10 TSN = 11&12 13 10 TSN = 13 cum-ack 10; gap-ack 3-3 receiver sender Window decreases TSN = 14 Window increases TSN = 15 cum-ack 10; gap-ack 5-5 15 :Loss :rwnd -receive buffer
Reneging • reneging - receiver gap-acks data and later discards it • Reneging is discouraged, but permitted (Receiver might run out of buffer space) • Sender’s responsibility to recover from reneging: • keep gap-acked data chunks in retransmission queue until the data chunks are cum-acked • if the receiver reneges on a data chunk, then reconsider that chunk for retransmission • Retransmission queue contains the data chunks that have been transmitted but NOT yet cum-acked
SCTP multistreaming revisited 5 6 7 8 9 sent from application delivered to application objects in send buffer receive buffer cum-ack 1 retransmission loss cum-ack 8 cum-ack 9 cum-ack 1 ; Gap-ack 2-3 cum-ack 1 ; Gap-ack 2-7 cum-ack 1 ; Gap-ack 2-4 cum-ack 1 ; Gap-ack 2-2 cum-ack 1 ; Gap-ack 2-5 cum-ack 1 ; Gap-ack 2-6 stream 1 stream 2 stream 3 SCTP association Web client Web server
NR-SACK • Cumulative Ack– cum-ackCum-Ackn: ACKs all TSNs up to and including TSN n • Selective Ack (SACK) – gap-ackInforms data sender of data received out-of-order • Duplicate Selective Ack (D-SACK) – dup-TSNInforms the data sender of the duplicate data • Non-Renegable Selective Ack (NR-SACK) –nr-gap-ackInforms data sender of out-of-order TSNs that are NOT renegable • cum-ack, gap-ack, dup-TSN, and nr-gap-ack info are carried in NR-SACK chunk
Now with NR-SACKs 5 6 7 8 9 sent from application delivered to application objects in send buffer receive buffer cum-ack 1 retransmission loss cum-ack 1;gap-ack 2-4 nr-gap-ack 4-4 cum-ack 1 ; Gap-ack 2-3 cum-ack 1 ; Gap-ack 2-2 cum-ack 9 cum-ack 8 cum-ack 1;gap-ack 2-5 nr-gap-ack 4-5 cum-ack 1;gap-ack 2-7 nr-gap-ack 4-7 cum-ack 1;gap-ack 2-6 nr-gap-ack 4-6 stream 1 stream 2 stream 3 SCTP association Web client Web server
With NR-SACK • The receiver takes the responsibility for the nr-gap-acked data chunks • The sender isreleased from the responsibility of keeping those data chunks in its RQ • Benefits: send buffer is utilized better • Remove nr-gap-acked data chunks from RQ • New data chunks can be put into the send buffer in place of the removed nr-gap-acked data chunks • More data can be transmitted within the same amount of time, improved throughput RQ : Retransmission Queue
What data can be nr-gap-acked • With multistreamed SCTP • Any out-of-order data that is in-sequence within its stream can be delivered to the application • SCTP allows for unordered data transfer • Any data tagged as unordered –U flag in data chunk, can be delivered to the application • data delivered to the application should be nr-gap-acked –impossible to be reneged • Any other data that the receiver guarantees never to renege can also be nr-gap-acked
Web client never reneges 5 6 7 8 9 sent from application delivered to application objects in send buffer receive buffer cum-ack 1 retransmission loss cum-ack 1 ; nr-gap-ack 2-2 cum-ack 1 nr-gap-ack 2-4 cum-ack 1 ; nr-gap-ack 2-3 cum-ack 9 cum-ack 8 cum-ack 1 nr-gap-ack 2-5 cum-ack 1 nr-gap-ack 2-6 cum-ack 1 nr-gap-ack 2-7 stream 1 stream 2 stream 3 SCTP association Web client Web server
SACK CHUNK cum-ack Chunk Flags Type = 0x03 Chunk Length gap-acks Cumulative TSN Ack Advertised Receiver Window Credit Number of Gap-Ack Blocks = N Number of Duplicate TSNs = X dup-TSNs Gap Ack Block #1 End Gap Ack Block #1 Start ……………………………………… Gap Ack Block #N Start Gap Ack Block #N End Duplicate TSN 1 ……………………………………… Duplicate TSN X
NR-SACK CHUNK cum-ack Chunk Flags Type = 0x10 Chunk Length gap-acks Cumulative TSN Ack Advertised Receiver Window Credit Number of Gap-Ack Blocks = N Number of NR-Gap-Ack Blocks = M dup-TSNs Number of Duplicate TSNs = X U N U S E D Gap Ack Block #1 End Gap Ack Block #1 Start ……………………………………… Gap Ack Block #N Start Gap Ack Block #N End NR-Gap Ack Block #1 End NR-Gap Ack Block #1 Start nr-gap-acks ……………………………………… NR-Gap Ack Block #M Start NR-Gap Ack Block #M End Duplicate TSN 1 ……………………………………… Duplicate TSN X
SCTP With SACKs INIT SCTP Association Startup INIT-ACK SCTP Association Startup COOKIE-ECHO COOKIE-ACK DATA SCTP Data Transfer SACKs(cum-ack,gap-ack,dup-TSNs)
NR-SACK Negotiation INIT – NR-SACKs Supported SCTP Association Startup INIT-ACK – NR-SACKs Supported SCTP Association Startup COOKIE-ECHO COOKIE-ACK DATA SCTP Data Transfer NR-SACKs(cum-ack,gap-ack,dup-TSN,nr-gap-ack)
Send Buffer Blocking • Send window = min (cwnd, rwnd, send buffer) • Assume cwnd is large enough to transmit new data chunks • Assume rwnd is large enough to transmit new data chunks • The send buffer is relatively small Send Buffer Retransmission Queue TSNs sent but not yet cum-acked TSNs not yet transmitted ► Application cannot pass new T-SDUs to the transport sctp ► SCTP transport sender cannot transmit new T-PDUs min (cwnd, rwnd)
RQ Utilization With SACKs cum-ack and gap-acks With NR-SACKs cum-ack and gap-acks and nr-gap-acks Retransmission Queue Retransmission Queue TSNs sent but not yet cum-acked not yet nr-gap-acked or cum-acked RQ : Retransmission Queue, : Freed up buffer space
64K Send Buffer (RTT=90ms) Throughput(bits/s) error rate
16K Send Buffer (RTT=90ms) Throughput(bits/s) error rate