Alex C. Snoeren,
Hari Balakrishnan, M. Frans Kaashoek
MIT Laboratory for Computer Science
• Hosts change attachment point
Move from home, to office, to …
Use multiple physical technologies
• Mobility events are rare
When compared with packet RTTs
• Long Running Applications
SSH Tunnels
Streaming apps
• Locate the mobile host or service
• Preserve communication
Support changes in network attachment
• Expect and support disconnection
Gracefully detect lack of connectivity
Conserve resources during disconnection
Reconnect quickly and efficiently
Keep the application informed!
• Naming can abstract location details
E.g., Mobile IP uses “home IP address”
But specifies both timing and granularity
• Mobility is more than a naming problem
Apps need different semantics (IP, DNS)
Handle resolution failures (disconnection)
Lookup granularity is application specific
Don’t prescribe a naming scheme!
Proxies provide transparency
Applications oblivious to changes
Must highly engineer and place well
End host support more flexible
Can integrate with other resources
Simplifies trust model
Can be equally transparent
WAP Proxy
Location Query
(DNS Lookup)
Naming Service
(Dynamic DNS)
Session Initiation
Session Migration
Correspondent
Host
Location Update
(DNS Update)
Mobile Host foo.bar.edu
Generality
User space
Application
Session Layer
Transport Protocol
Network Layer
Link Layer
Kernel
Transparency
• Provide services in a Session Layer
Applications define what a “session” is:
• A single RPC-like packet exchange
• A bundle of semantically-related streams
• Or any combination in between
• Manage sessions as a group
• Resources can be associated with network activity, and allocated accordingly
• Support is strictly optional
• Provide robust communication across changes of end-point addresses
Resynchronize transport protocols
• Detect and handle disconnectivity
Buffer, discard, or distill connections
• Manage related system resources
Memory, timers, files, devices
• Marshall and store session state
User space Kernel vic vat wb
Application
Resources
Distill
Discard
Buffer
System Resources
Session Creation
Application
Session Callbacks
Connectivity
Monitor
Session Layer
Connectivity Updates
Transport Protocol
Network Layer
Link Layer
Policy
Engine
Policy Decisions
• Handle disconnection
Block or buffer sockets of reliable connections
Proactively discard unreliable datagrams
• Restart transport layers?
Rebind network endpoints
Replay buffered data
Application
Session Layer
TCP TCP
• Monitor network connectivity
Exploit transport/network layer signals
Support application hints
Interface with network monitoring agents
• Support application-dependent behavior
Default handlers can spool to disk
Virtualize remote services
Invoke application-specific handlers
• Notify application to hibernate
Blocked apps can be swapped out
Shared files and devices can be released
• System resources can be reallocated
Similar to Resource Containers
Timers, locks, semaphores released
Buffer space drained/paged
• Enable state migration
Associate application and system state
Transfer from kernel to app, host to host
• Context management
State may depend on path characteristics
Support transcoding, different transport protocol, etc.
• Mobility services are session oriented
Often several related network activities
• Naming neither necessary nor sufficient
Applications have different needs
• Resource management is key
Especially with large numbers of hibernated sessions
• Sessions enable state management