150 likes | 235 Views
Structured Streams: a New Transport Abstraction. Sigcomm 2007 By Bryan Ford Presented by Kyungbaek Kim ( kyungbak@uci.edu ). Introduction. Streams Extended Lifetime In-order delivery Datagrams Ephemeral Lifetime Independent delivery
E N D
Structured Streams: a New Transport Abstraction Sigcomm 2007 By Bryan Ford Presented by Kyungbaek Kim ( kyungbak@uci.edu )
Introduction • Streams • Extended Lifetime • In-order delivery • Datagrams • Ephemeral Lifetime • Independent delivery • An application with a mixture of many small and a few large transactions faces awkward tradeoffs • Efficiency of UDP for small transactions • Reliability of TCP for the occasional large ones
Problems of TCP streams • High network cost • Setup cost : 3way handshake and slow start per stream, • Shutdown cost : 4 minute TIME WAIT period • Head-of-line blocking • One loss delay everything behind • TCP unusable for real-time video/voice conferencing • HTTP/1.1 made web browsers slower! [Nielsen/W3C] • Unnecessary serialization • no parallelism between application data units (ADUs)
Goals • Make streams cheap • Let application use one stream per ADU, efficiently • Make streams independent • Preserve natural parallelism between ADUs • Make streams easy to manage • Don't have to bind, pass IP address & port number, separately authenticate each new stream
Channel Protocol : Sequencing Every transmission gets new packet sequence # – Including acks, retransmissions [DCCP]
Channel Protocol : Acknowledgement • All acknowledgments are selective [DCCP] • Each packet acknowledges a sequence range • Successive ACKs usually overlap : redundancy against lost ACKs • No variable-length SACK headers needed : all info in fixed header ASN = 1, AckCt = 1 ASN = 1, AckCt = 2 ASN = 1, AckCt = 3 ASN = 5, AckCt = 1 ASN = 5, AckCt = 2 ASN = 5, AckCt = 3
Stream Protocol : Creating Streams • All segments during 1st round-trip carry “create” info • (special segment type, parent & child stream IDs) • Child borrows from parent stream's receive window • (“create” packets belong to parent stream for flow control) Init packet
Stream Protocol : Data Transfer • Regular data transfer (after 1st round-trip): • 32-bit wraparound byte sequence numbers (BSNs) • Unlimited stream lifetime Data packet
Stream Protocols : Best-effort Datagrams • When datagram is small: • Stateless best-effort delivery optimization • (avoids need to assign stream identifier to child) • When datagram is large: • Fall back to delivery using regular child stream Datagram packet
Web Browsing Workloads • Performance of transactional HTTP/1.0 on SST: • Much faster than HTTP/1.0 on TCP • Faster than persistent HTTP/1.1 on TCP • As fast as pipelined HTTP/1.1 on TCP
Critique • Channel ID can limit the number of connected hosts • Channel ID is limited to 8 bits • It is not proper to any server program • Why is the lifetime of channel limited? • 64 bit sequence number space limit the lifetime • For security? • Unclear channel migration mechanism • What is the threshold of the best-effort datagram? • The stream layer checks that the datagram is small enough to ensure a reasonable chance of successful delivery