Enabling Internet “Suspend/Resume” with Session Continuations Alex C. Snoeren MIT Laboratory for Computer Science (with Hari Balakrishnan, Frans Kaashoek, and Jon Salz)
Challenges of “Suspend/Resume” What happens to the “other” end? How does the session resume? It’s a state management problem.
Suspend/Resume Tasks Intelligent disconnection handling Buffer otherwise lost communications Emulate remote services locally Release resources while disconnected Graceful resumption handling Reallocate resources and restore state Adapt to new network conditions Indicate how to resume processing
Motivating Continuations Observation: complete context inappropriate Some previous state irrelevant, or, even worse, Invalidated due to change in conditions Similar problem in programming languages Block when state and context is complex Pass continuation if state and context is small Continuations can request blocking behavior
Using Continuations User level App Kernel SL Expand session notion Align with application Annotate state, resources, associated computation Include system state Provide synchronization and preservation assistance Shared attribute/value store Persist local system IPC, file descriptors System invokes continuation at session resumption Generated in response to disconnection notification
An Example: SSH Session Remote log in / port forwarding Provides secure remote communication Data compressed and encrypted as a stream SSHd shell emacs X app server client ssh
Conserving Session Resources SSHd emacs Socket Buffers Network Ports Open Files Kernel Resources dedicated to active session >> Resources dedicated to suspended session Release system resources as well Continuation generation is recursive!
SSH Continuation Don’t suspend until it’s convenient Process pending data, deliver to app or network Only a minimum of state to preserve Auth, crypto, and compression state Preserve IPC to child processes Notify child processes of disconnection Tunneled apps share connectivity fate Added ~250 LOC in an afternoon
Continuation Efficiency Anecdotal evidence of size and speed SSHdFTPd Memory Usage (KB) Restart Latency (msec) SSHdFTPd System Resources Shared Pages Non-Shared Pages Startup Latency Session Overhead Session Continuation
Conclusion & Future Directions Continuations enable “suspend/resume” Integrates well with session model Support intelligent application adaptation Enable system resource conservation Useful for mobility across hosts? Continuations eliminate dependencies An area for future exploration…