TCP for today’s Web

advertisement
TCP for today’s Web
Connections today
• Web-page > 300KB
• but objects are small 7.5KB -2.4KB [25]
• lots of small objects in a page.
Implication:
TCP Handshake == 10%-30% penalty
Add data into Handshake
SYN-Flag
SYN/ACK-Flag
ACK-Flag+Data
Let’s talk
How about HTTP1.1
• What is HTTP1.1
– Persistent keep alive
– Re-use old connections so no more TCP handshakes
• But …
– browser tries to be fast opens multiple TCP connections
(limits reuse)
– Domain sharding -- place resource on different domains to
further increases parallelism (so forced to use diff
connections).
– MB terminate idle conns to reduce state --> so persis con
no longer persistent.
– mobile devs shut down conns to conserve power
Status of HTTP1.1
• 92% conn use HTTP1.1
– But still Handshake has 5-7% overhead in general
– For first use of connect, overhead is 8-27%
• Chrome always uses HTTP1.1
– But 33% of conn use new TCP
New Security Attacks
SYN-Flag+ Data
SYN/ACK-Flag+ Data
ACK-Flag+Data
New Attacks: SYN Flood
Make up a false ip address
Send a bunch of SYN pks with data
Server does a lot processing
And gets overloaded
SYN-Flag+ Data
Note: Since you used a fake address, the response from the server don’t come
to you, so you don’t maintain state or devote resources
New Attacks: Reflection
Use host B’s IP as source
Send a bunch of SYN pks with data
SYN-Flag+ Data
Note: Every server responds to host B with a flood of packet. Host B gets
attacked. Once against you don’t devote any resources on your machine to do
attack. And since response is larger than syn-flag+data it is better than you
attack direction
Attack Model
• Attacks work because:
– Attacker can spoof SRC IPs.
• To prevent this:
– TFO adds a cookie to the protocol
– Client must include cookie in the handshake
– The cookie is an encrypted version of source IP
• Source IP encrypted with the server’s private key
• Server unencrypts cookie and compares
System Assumptions
Acceptable Changes:
• 1. symmetric crypto
– (can be done in fast path) but no asymmetric.
• 2. soft state
– (can't keep permanent state-- scale issues)
• 3. minor App changes
– Don’t want to prevent adoption
Add Cookie to the First Handshake
Let’s use
TFO
Here’s a
cookie for
next time
SYN-Flag+TFO-Option
SYN/ACK-Flag+ Cookie
ACK-Flag+Data
Second Connection to Same server
benefits
We are
using FTO:
here’s a
cookie for
proof.
SYN-Flag+Cookie+Data
SYN/ACK-Flag+ Data
ACK-Flag+Data
Second Connection to Same server
benefits
SYN-Flag+Cookie+Data
SYN/ACK-Flag
ACK-Flag+Data
Attacks Revisited
• Reflection
– To get cookie must compromise host or network
• If you can then you don’t need reflection
• SYN Flood
– We limit the number TFO connections
– So server is still always willing to accept regular
TCP connections
Deployment Issues
• Middleboxes are HORRIBLE
– They drop new TCP options
– NAT changes IP addresses so cookies can’t work
Deployment Issues: Load Balancers
LoadBalancer
Deployment Issues: Load Balancers
LoadBalancer
All servers need to share the same key so
TFO can work. So, you may need to also
change the keys more frequently
Lessons
• A webpage === lots of small objects
– Harder to ameliorate overheads
• TCP Handshake overhead
• 2 RTT  Loss detection
• Most common loss pattern in WAN
– Last packet in small connection
– Use redundancy (FEC) to overcome this.
• Eliminate Handshake overhead
– Send packet during the handshake
– Insert secret cookie in handshake to eliminate attacks
Download