trickles :a stateless network stack for improved scalability, resilience, and flexibility alan...
DESCRIPTION
Introduction A new network protocol stack which system state can be kept entirely on one side of a connection.TRANSCRIPT
Trickles :A stateless network stack for improved Scalability, Resilience, and Flexibility
Alan Shieh ,Andrew C.Myers ,Emin Gun SirerDept. of Computer Science ,Cornell UniversityUSENIX 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.
Slow start and congestion avoidance
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 losscwndAtLoss = 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 pass
ed to the application. An event includes data of a request that needed f
or 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.
Memory utilization
CPU utilization
Failover : disconnection occurs at t = 10.
Conclusion
Stateless side has good performance with small memory usage.
Trickles’s scalability is good. Transparent connection migration. Trickles is backward compatible with TCP.