Breaking Up the Transport Logjam
Bryan Ford
Max Planck Institute for Software Systems
baford@mpi-sws.org
Janardhan Iyengar
Franklin & Marshall College
jiyengar@fandm.edu
HotNets-VII, October 6-7, 2008
Breaking Up the Transport Logjam Bryan Ford Janardhan Iyengar Max - - PowerPoint PPT Presentation
Breaking Up the Transport Logjam Bryan Ford Janardhan Iyengar Max Planck Institute Franklin & Marshall for Software Systems College baford@mpi-sws.org jiyengar@fandm.edu HotNets-VII, October 6-7, 2008 Evolutionary Pressures on
Bryan Ford
Max Planck Institute for Software Systems
baford@mpi-sws.org
Janardhan Iyengar
Franklin & Marshall College
jiyengar@fandm.edu
HotNets-VII, October 6-7, 2008
— better datagrams [DCCP], streams [SCTP, Ford07]
— high-speed [Floyd03], wireless links [Lochert07], ...
— dispersion [Gustafsson97], multihoming [SCTP],
logistics [Swany05], concurrent multipath [Iyengar06]…
— Performance Enhancing Proxies [RFC3135],
NATs and Firewalls [RFC3022], traffc shapers
— NATs & frewalls — which comes frst: App-demand or OS kernel support?
— impassable “TCP-friendliness” barrier — must work end-to-end, on all network types in path
— “You want how many fows? Not on my network!” — TCP-unfriendly?
Traditional transports confate 3 function areas... T
Transport Protocol
Endpoint Identification (port numbers) Transport Abstraction Congestion Control Semantics, Reliability Concerns (applications care) Performance Concerns (users, opers care) Naming, Routing Concerns (NATs, firewalls care)
Physical Layer Data Link Layer Network Layer Session Layer Application Layer Presentation Layer Physical Layer Data Link Layer Network Layer Session Layer Application Layer Presentation Layer Endpoint Layer Flow Regulation Layer Transport Layer Transport Layer
Break up the Transport according to these functions:
TCP Header UDP Header DCCP Header
Current transports have separate port spaces
IP Header
Source Port Dest Port Source Port Dest Port Source Port Dest Port Source IP Address Dest IP Address
TCP Port Space UDP Port Space DCCP Port Space Network Layer IP Address Space
— IP address ⇒ Inter-Host Routing — port numbers ⇒ Intra-Host Routing
— Care about application endpoints, not just hosts — Therefore, must understand transport headers
Factor endpoint info into uniform Endpoint Layer
Transport Header Transport Header IP Header
Source IP Address Dest IP Address
Endpoint Layer Port Space Network Layer IP Address Space Endpoint Header
Source Port Dest Port
Workable starting point exists — UDP!
Transport Header Transport Header IP Header
Source IP Address Dest IP Address
Endpoint Layer Port Space Network Layer IP Address Space UDP Header
Source Port Dest Port
Can now evolve separately:
— New transports get through NATs, frewalls — Easily deploy new user-space transports,
interoperable with kernel transports
— Application controls negotiation among transports
— Better cooperation with NATs [UPnP, NAT
— identity/locator split, port/service names [Touch06],
security and authentication info ...?
Transport includes end-to-end congestion control
— to regulate fow transmission rate
But one E2E path may cross many...
— … different network technologies
— … different administrative domains
Factor fow regulation into underlying Flow Layer
Transport Layer Network Layer Endpoint Layer Flow Layer
Transport Semantics, Reliability Flow Performance Regulation Endpoint Naming
Can split E2E fow into separate CC segments
— Specialize CC algorithm to network technology — Specialize CC algorithm within admin domain
… without interfering with E2E transport semantics!
Endpoint Flow
Host A Host B
Network Transport Application Endpoint Flow Network Transport Application Endpoint Flow Network Endpoint Flow Network
Flow Middlebox Flow Middlebox Segment 2 Satellite Segment 1 WiFi LAN Segment 3 Internet Core
Incrementally deploy performance enhancements
— multihoming, multipath, dispersion, aggregation...
… without affecting E2E transport semantics!
Endpoint Protocol
Host A Host B
Transport Protocol Application Protocol Endpoint Protocol Transport Protocol Application Protocol Endpoint Protocol
Flow Middlebox
end-to-end multipath
Endpoint Protocol Flow Protocol Flow Protocol Flow Protocol Flow Protocol
per-segment multipath
Flow Middlebox
Endpoint Protocol
Host A2
Transport Protocol Application Protocol Endpoint Protocol
Flow Middlebox
Endpoint Protocol Flow Protocol Flow Protocol Flow Protocol
Flow Middlebox
Endpoint Protocol
Host A1
Transport Protocol Application Protocol Flow Protocol Endpoint Protocol
Host B2
Transport Protocol Application Protocol Flow Protocol Endpoint Protocol
Host B1
Transport Protocol Application Protocol Flow Protocol
Aggregate Flow
Shared Access Network
— Effcient traffc measurement, management — Fairness at “macro-fow” granularity
wo likely “starting points” already exist:
— Congestion Manager [Balakrishnan99] — DCCP [Kohler06]
(just stop thinking of it as a “transport”)
— Support for fow middleboxes, path segmenting — Interfaces between (new) higher & lower layers
Contains “what's left”:
— Datagrams, streams, multi-streams, …
— “Hard” acknowledgment, retransmission
— Receiver-directed fow control — Stream prioritization — ...
— Can traverse NATs & frewalls — Can deploy in kernels or applications
— Can specialize to different network types — Can deploy/manage within administrative domains
— Can deploy/manage within administrative domains
Promising architecture (we think), but lots of details to work out
— Functionality within each layer — Interfaces between each layer — Application-visible API changes
Big, open-ended design space
— We are starting to explore, but
would love to collaborate with others!
— If you know of spaces where you could use this
framework, we'd love to know!
— Endpoint naming/routing into separate Endpoint Layer — Flow regulation into separate Flow Layer
=> increase
=> decrease
focus on communication performance
— Precisely the role for which the e2e principle
justifes in-network mechanisms
related soft state
— End-to-end fate-sharing is thus preserved
Network Protocol Kernel-space Transport Application Network Protocol User-space Transport UDP Application Kernel User Kernel User
Host A Host B
Network Protocol Kernel-space Transport Application Network Protocol User-space Transport Application Kernel User Kernel User Endpoint Protocol Endpoint Protocol
Host A Host B
Host A
Transport Negotiation “Meta-SYN” Transport 1 SYN Transport 2 SYN Transport 3 SYN Transport 2 SYN/ACK
Host B
time time
B chooses Transport 2