270 likes | 523 Views
PR-SCTP ( P artially R eliable). Ethan M Giordano CISC865 TCP/IP & Upper Layer Protocols University of Delaware November 22, 2005. Some slides/graphics courtesy of: Dr. Paul Amer, Jana Iyengar. Some quick background…. RFC 3758 May 2004 Implemented technology
E N D
PR-SCTP (Partially Reliable) Ethan M Giordano CISC865 TCP/IP & Upper Layer Protocols University of Delaware November 22, 2005 Some slides/graphics courtesy of: Dr. Paul Amer, Jana Iyengar
Some quick background… • RFC 3758 • May 2004 • Implemented technology • Designed in part by Dr. Philip Conrad of our department
Overview • Motivation for PR Service • SCTP Extensions – How? • PR-SCTP Extension • Some Examples • Summary
Shades of Reliability • Reliable (TCP/SCTP) • No-loss • In-order • No duplicates • Data integrity • “Unreliable” (UDP) • Maybe loss • Maybe unordered • Maybe duplicates • Data integrity (optional) • Partial Reliability (PR-SCTP) • Controlled-loss • In-order • No duplicates • Data integrity
The anatomy of a loss event Received & buffered Free buffer Received & delivered Lost Chunk!! • What happens to blue chunks while red one is missing? • Waiting! • What if blue chunks are time sensitive? • Application is waiting on information that is already available!
Partial Reliability • Application defined controlled loss • Sender can give up on a message • We will call this “abandonment”
“Undo” or “Expire” Application GPS Not PR-SCTP!! transport transport
50 10 9 8 7 6 5 4 3 2 1 … 10 9 8 50 5 3 1 acceptable 3 frames/sec … 9 7 1 50 10 5 3 … unacceptable < 3 frames/sec retransmissions Controlled loss / partial reliability 10 second video 5 frames/sec Not PR-SCTP!!
Association Setup • First part of using an extension is to negotiate it during association setup (similar to TCP SACK) INIT w/ Fwd TSN Supported Forward TSN Supported is Param Type 49152 Assigned by ICANN INIT-ACK w/ Fwd TSN Supported
FWD TSN 3 FWD TSN 5 FWD TSN 4 An Example – Actual PR-SCTP Delivery 1 2 1 3 4 2 5 6 7 8 2 9 2 10 2 2 2 Lifetimes 3 4 3 5 3 3 4 6-10 10
PR-SCTP • Sender can artificially advance the expected TSN value of the receiver • Accomplished by sending a Forward-TSN • Receiver then makes available all received data up to this new point and then continues on
Message Abandonment • An “abandoned” chunk is one which the sender has marked as such for various possible reasons • Expired lifetime without being ACK'd • Explicit decision from upper layer • Once abandoned: • Treated as ACK'd and not outstanding • Does not count toward expanding cwnd! • Need to notify the receiver...
Notifying the Receiver • The heart of the PR extension • Send a Forward Cumulative TSN • Otherwise receiver would forever be expecting this chunk which is not coming! • But a Fwd-TSN could be lost!! • SACK's from the receiver generate Fwd-TSN's
FWD TSN 3 FWD TSN 5 FWD TSN 4 An Example – Actual PR-SCTP Delivery 1 2 1 3 4 2 5 6 7 8 2 9 2 10 2 2 2 Lifetimes 3 4 3 5 3 3 4 6-10 10
An Example Adv.Ack.Pt = new variable for PR that tracks where we want the receiver to be expecting. On arrival of a SACK, if Sack.CumAck < Adv.Ack.Pt then Adv.Ack.Pt = Sack.CumAck 2 acked Adv.Ack.Pt -> 3 abandoned 4 abandoned 5 6 2 acked 3 abandoned Adv.Ack.Pt -> 4 abandoned 5 6
FWD TSN 3 FWD TSN 5 FWD TSN 4 An Example – Actual PR-SCTP Delivery 1 2 1 3 4 2 5 6 7 8 2 9 2 10 2 2 2 Lifetimes 3 4 3 5 3 3 4 6-10 10
An Example 2 acked 3 abandoned Adv.Ack.Pt -> 4 abandoned 5 abandoned 6 2 acked 3 abandoned 4 abandoned Adv.Ack.Pt -> 5 abandoned 6
RULE • If after moving Adv.Ack.Pt it is greater than the SACK.CumAck the sender must send a Fwd-TSN How is the Fwd-TSN constructed??
Type Flags Length Chunk Data How does one extend a protocol? • Designers allowed 8 bits for the chunk type • 256 chunk types!! • Base protocol uses 13 types • That's 243 types for extensions!!
Introducing: Forward Cumulative TSN Type = 192 Flags = 0x00 Length New Cumulative TSN Stream-1 Stream Sequence-1 ... Stream-n Stream Sequence-n • Chunk Type of 192 assigned by ICANN • Sender-only chunk type!
FWD-TSN Construction • The basic piece of information is the new CUMULATIVE TSN for the receiver to use • Plus an entry for each affected stream • Stream data waits in a reorder buffer at the receiver • This information in the Fwd-TSN makes it simple for the receiver to know which chunks to now deliver
Streams in Detail • TCP Receive Buffer 0 1 2 3 Sequential Sequence (Byte) Numbers • SCTP Receive/Reorder Buffers 0 1 2 11 12 Stream 1 Stream 2 3 6 8 9 4 5 7 Stream 3 10 Sequential Stream Sequence (Chunk) Numbers
TSN Used to ensure reliability Stream Seq. # Used to provide ordering TSN vs Stream Seq. #
FWD TSN 4 FWD TSN 3 FWD TSN 5 FDW-TSN Illustrated Delivery Stream 1 1 3 8 1 2 1 3 4 2 5 6 7 8 7 2 9 2 10 2 9 2 10 2 Lifetimes Stream 2 2 9 7 10 3 4 3,8 5 3 4 3 Stream 3 6 4 5 6 10
Why stream info? Type = 192 Flags = 0x00 Length New Cumulative TSN = z Stream-1 Stream Sequence = x Stream-2 Stream Sequence = y Since each chunk is reviewed at sender to create Fwd-TSN, we pass that work to the receiver!
RFC – What it defines… • “Timed reliability” • All of the examples with lifetime used this • Can we think of others?? • Of course…. • RFC gives guidelines for their creation!