Successfully reported this slideshow.
Feb 23, 2012
The SPDY protocol has been developed by Google since 2009. It is intended as an evolution of HTTP with better performance and network utilization.
Andreas Bjärlestam 2012-02-23
SPDY quick overview• An evolution of HTTP• Developed by Google since 2009• Openly available spec
Why the hell would you want to replace HTTP?
HTTP is fantasticit has totally changed the world
HTTP is over 20 years oldHTTP 1.1 is 12 years old
Webpages in 1999
Webpages in 2012
Mobile internet usagesource: svenskarnaoch internet 2011 https://www.iis.se/docs/SOI2011.pdf
This is how more and more of us consume the web…
Often it feels a lot like…
People no longer have patience to wait for slow pages
Web pages February 2012• www.facebook.com - ca 100 http requests• www.bostonglobe.com - ca 100 http requests• www.svtplay.se - ca 90 http requests• www.aftonbladet.se - ca 350 http requests source: http://httparchive.org/
What does it look like over thenetwork fetching 100 resources?
Can you spot the problem?
Its all synchronous
How come an advanced page like facebook.com loads in under 4seconds when its all synchronous?
6 x HTTP connections HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP
What is the problem with this? Why not even more?
TCP Congestion control
2 connections per host recommended by HTTP 1.1 spec 6 connections in most browsers
Domain sharding• www.bostonglobe.com - 59 connections• www.svtplay.se - 22 connections• www.aftonbladet.se - 118 connections source: http://www.webpagetest.org
We kind of abuse TCPwhen we open more connections
New TCP connections are slow
3 way handshake
On my macbook Ping 20ms ≈ 30ms to set up a connection On my mobile (3G)Ping 300ms ≈ 450ms to set up a connection
TCP Slow start HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP HTTP/TCP
It turns out that page load time for a moderately complex site is almost no faster over 20mbits/sec than over 2mbits/sec
So… we need to utilize our TCP connections better
Don’t we break the web if we replace HTTP?
The semantics of HTTP is kept
or in simpler words…SPDY implements the HTTP API
HTTP -> SPDY GET GET PUT PUT HEADERS HEADERS POST POST … …Use of URLs Use of TCP Use of URLs Use of TCP
You can switch to SPDY with nochanges to your web application
SPDY runs over TCP and will not require upgraded network equipment
HTTP -> SPDY HTTP HTTP SPDYTLS/SSL TLS/SSLTCP/IP TCP/IP
Designed with speed as primary goal
1 TCP connection HTTP/TCP
But it will be on fire! HTTP/TCP
SPDY is multiplexed
This is a typical HTTP session GET 200 OK GET 200 OK GET 200 OK
Multiplexing GET 1 GET 2 GET 3 200 OK 2 200 OK 3 200 OK 1
SPDY is binary
Will be difficult to just fire up telnet and hack away
Every decent site will be encrypted and gzipped anyways
TLS/SSL is mandatory
Communication should be secure by defaultUsers should not have to care
Using SSL ensures thatcommunication over existing proxies is not broken
..but you will not be able to use proxies for caching etc
Headers are compressed
How will the client know that it can use SPDY towards a server?
NPNTLS Next Protocol Negotiation
So is it worth it?
Google tested 25 of the “top 100” sites
Average speedup 39% - 55%
SPDY could make your life easierLess need for hacky optimizations like CSS sprites, fileconcatenations, domain sharding etc
Should I add SPDY support to my servers on Monday?
Implementations• Apache mod_spdy• Nginx – in roadmap• node_spdy – requires node.js 0.7• netty• more…
Browsers• Chrome (since version 6)• Firefox 11 (turned off by default)• (Amazon silk)
CDNs• Strangeloop• Contendo
CDNs SPDY Your webBrowser Gateway server
Google• Support SPDY on most of their services• 90% of their SSL traffic is over SPDY
Amazon silk Silk SPDY SPDY HTTP TheBrowser Gateway Internet
The spec• Draft spec, version 3• Plan is to submit it to IETF as input to HTTP2.0• IETF HTTPbis WG chair recently proposed to start work on HTTP2.0
HTTP Pipelining• Not as effective as multiplexing• Hard to implement in browser• Opera is the only desktop browser that has a full implementation enabled by default• Android, IOS5 and Opera mobile browsers do some amount of pipelining• Not used by most proxies
Synchronous Pipelining Multiplexing GET GET 1 GET 1 GET 2 GET 2 200 OK GET 3 GET 3 GET 200 OK 200 OK 1 200 OK 2 GET 200 OK 2 200 OK 3 200 OK 3 200 OK 1 200 OK
Alternative transport protocols• SCTP• BEEP
Roundup• ~ 50% Faster page loads than HTTP• Backwards compatible with HTTP• Better utilization of TCP• Secured by default• Binary + compressed• Will likely be the base for HTTP2.0
Attributions• http://en.wikipedia.org/wiki/File:US_Robotics_56K_M odem_Front.JPG• https://www.iis.se/docs/SOI2011.pdf• http://www.flickr.com/photos/howi/6366423373/• http://www.flickr.com/photos/wwarby/5110037138/• http://www.flickr.com/photos/alicetragedy/497729529 8/• http://www.flickr.com/photos/koltregaskes/624914973 /in/photostream/