190 likes | 200 Views
Trickles :A stateless network stack for improved Scalability, Resilience, and Flexibility. Alan Shieh ,Andrew C.Myers ,Emin Gun Sirer Dept. of Computer Science ,Cornell University USENIX NSDI 2005. Outline . Introduction Stateless Transport Protocol About “Continuation”
E N D
Trickles :A stateless network stack for improved Scalability, Resilience, and Flexibility Alan Shieh ,Andrew C.Myers ,Emin Gun Sirer Dept. of Computer Science ,Cornell University USENIX NSDI 2005
Outline • Introduction • Stateless Transport Protocol • About “Continuation” • Abstraction of Trickle • Trickles’s congestion control • Server API • Client processing • Evaluation
Introduction • A new network protocol stack which system state can be kept entirely on one side of a connection.
Stateless Network Protocol • Continuation: • Transport continuation • For shipping Kernel-level state (TCP control block,TCB): • Packet number, RTT, ssthresh … • User continuation • For supportting stateless user-level server applications.
Trickle abstraction • Packets are decomposed into disjoint trickles. • One packet is exactly a member of one trickle. • Each line pattern corresponds to a trickle.
3 actions when receiving a request packet : • Continuing • Trickles permits the srver application to send response. • Terminate • Trickles stops sending one response when packet loss. • Split • Trickles starts one new response to trigger a new trickle. • Using SACK.
Congestion control of Trickles • Request number ‘k’ • Trickles associates each request packet arrived with a request number ‘ k ’. • new Cwnd = TCPCwnd (K) • Trickle updated when each packet ‘k’ received: • TrickleUpdate = TCPCwnd(k) – TCPCwnd(k-1) • Generate ‘ TrickleUpdate + 1 ‘ responses.
Fast retransmit / recovery • First packet ‘k’ after losses, retransmitting the lost packets. • If cwndAtLoss – lossoffset < newCwnd • Continue the trickle. • For fast recovery : ssthresh = startCwnd = newCwnd firstLoss = number of first loss cwndAtLoss = TCPCwnd (firstloss-1) newCwnd = numInFlight / 2
Retransmit timeout • ssthresh = TCPCwnd ( firstloss -1) / 2 • newCwnd = InitialCwnd
Server API • an ‘event’ queue • Every response generated to client , a event passed to the application. • An event includes data of a request that needed for application. • Minisocket • Each minisocket is associated with one client. • Created and destroyed with one event. • For optimizations , minisockets caching is used.
Client processing • A Trickles client stack implements a Berkeley sockets interface using Trickles transport protocol. • Input continuations: • To help server application to resume accepting client input. • Output continuations: • To help server application to resume generate output to the client.
Evaluation • Trickles protocol stack is implemented in Linux 2.4.26. • Environment • Gigabit Ethernet • P4 1.7G • 512 Mb RAM • Intel e1000 gigabit NIC
Throughput • Point to point topology, server 100 Mb/sec bottleneck link.
Conclusion • Stateless side has good performance with small memory usage. • Trickles’s scalability is good. • Transparent connection migration. • Trickles is backward compatible with TCP.