spdy
DESCRIPTION
The SPDY protocol has been developed by Google since 2009. It is intended as an evolution of HTTP with better performance and network utilization.TRANSCRIPT
![Page 1: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/1.jpg)
Or maybe HTTP2.0
[SPeeDY]
Andreas Bjärlestam 2012-05-30
![Page 2: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/2.jpg)
SPDY quick overview
• An evolution of HTTP• Developed by Google since 2009• Openly available spec
![Page 3: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/3.jpg)
Why the hell would you want to replace HTTP?
![Page 4: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/4.jpg)
HTTP is fantastic
it has totally changed the world
![Page 5: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/5.jpg)
but…
![Page 6: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/6.jpg)
HTTP is over 20 years old
HTTP 1.1 is 12 years old
![Page 7: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/7.jpg)
Webpages in 1999
![Page 8: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/8.jpg)
![Page 9: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/9.jpg)
Webpages in 2012
![Page 10: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/10.jpg)
![Page 11: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/11.jpg)
Mobile internet usage
source: svenskarna och internet 2011 https://www.iis.se/docs/SOI2011.pdf
![Page 12: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/12.jpg)
This is how more and more of us consume the web…
![Page 13: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/13.jpg)
Often it feels a lot like…
![Page 14: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/14.jpg)
People no longer have patience to wait for slow pages
![Page 15: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/15.jpg)
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/
![Page 16: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/16.jpg)
What does it look like over the network fetching 100 resources?
![Page 17: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/17.jpg)
![Page 18: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/18.jpg)
Can you spot the problem?
![Page 19: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/19.jpg)
Its all synchronous
![Page 20: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/20.jpg)
How come an advanced page like facebook.com loads in under 4
seconds when its all synchronous?
![Page 21: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/21.jpg)
Hacky optimizations
CSS spritesbase64 images in data-urls
CSS concatenationJavaScript concatenation
![Page 22: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/22.jpg)
HTTP/TCP
HTTP/TCP
HTTP/TCP
HTTP/TCP
HTTP/TCP
HTTP/TCP
6 x HTTP connections
![Page 23: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/23.jpg)
Domain sharding
• www.bostonglobe.com - 59 connections• www.svtplay.se - 22 connections• www.aftonbladet.se - 118 connections
source: http://www.webpagetest.org
![Page 24: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/24.jpg)
What is the problem with this? Why not even more?
![Page 25: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/25.jpg)
We kind of abuse TCP when we open more
connections
![Page 26: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/26.jpg)
2 connections per host recommended by HTTP 1.1 spec
6 connections in most browsers
![Page 27: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/27.jpg)
and…
![Page 28: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/28.jpg)
New TCP connections are slow
![Page 29: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/29.jpg)
3 way handshake
![Page 30: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/30.jpg)
On my macbookPing 20ms ≈ 30ms to set up a
connection
On my mobile (3G)Ping 300ms ≈ 450ms to set up a
connection
![Page 31: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/31.jpg)
HTTP/TCP
HTTP/TCP
HTTP/TCP
HTTP/TCP
HTTP/TCP
TCP Slow start
HTTP/TCP
![Page 32: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/32.jpg)
Bandwidth doesn’t matter much anymore
Latency does
![Page 33: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/33.jpg)
So… we need to utilize our TCP connections better
![Page 34: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/34.jpg)
Enter
SPDY
![Page 35: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/35.jpg)
Don’t we break the web if we replace HTTP?
![Page 36: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/36.jpg)
Nope
![Page 37: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/37.jpg)
The semantics of HTTP is kept
![Page 38: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/38.jpg)
HTTP -> SPDY
GETPUT
POST…
HEADERS
Use of URLs Use of TCP
GETPUT
POST…
HEADERS
Use of URLs Use of TCP
![Page 39: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/39.jpg)
You can switch to SPDY with no changes to your web application
![Page 40: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/40.jpg)
SPDY runs over TCP and will not require upgraded network
equipment
![Page 41: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/41.jpg)
Example…
![Page 42: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/42.jpg)
Designed with speed as
primary goal
![Page 43: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/43.jpg)
1 TCP connection
HTTP/TCP
![Page 44: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/44.jpg)
HTTP/TCP
But it will be on fire!
![Page 45: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/45.jpg)
SPDY is multiplexed
![Page 46: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/46.jpg)
This is a typical HTTP sessionGET
GET
GET
200 OK
200 OK
200 OK
![Page 47: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/47.jpg)
MultiplexingGET 1
GET 2GET 3
200 OK 2
200 OK 3
200 OK 1
![Page 48: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/48.jpg)
Stream priorities
![Page 49: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/49.jpg)
SPDY is binary
![Page 50: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/50.jpg)
Will be difficult to just fire up telnet and hack away
![Page 51: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/51.jpg)
Every decent site will be encrypted and gzipped anyways
![Page 52: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/52.jpg)
TLS/SSL is mandatory✗was
![Page 53: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/53.jpg)
Communication should be secure by default
Users should not have to care
![Page 54: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/54.jpg)
Headers are compressed
![Page 55: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/55.jpg)
Server Push
![Page 56: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/56.jpg)
Server Push
![Page 57: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/57.jpg)
So is it worth it?
![Page 58: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/58.jpg)
Google tested 25 of the “top 100” sites
![Page 59: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/59.jpg)
Average speedup
39% - 55%
![Page 60: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/60.jpg)
SPDY could make your life easier
Less need for hacky optimizations like CSS sprites, file concatenations,
domain sharding etc
![Page 61: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/61.jpg)
Should I add SPDY support to my servers on Monday?
![Page 62: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/62.jpg)
Probably not…
![Page 63: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/63.jpg)
Implementations
• Apache mod_spdy• Nginx – in roadmap• node_spdy – requires node.js 0.7• Netty• Jetty• more…
![Page 64: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/64.jpg)
Browsers
• Chrome (since version 6)• Firefox (since version 11, turned off by default)• Amazon silk
![Page 65: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/65.jpg)
Others
• Strangeloop• Akamai (Contendo)• F5 BIG-IP
![Page 66: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/66.jpg)
• Support SPDY on most of their services• 90% of their SSL traffic is over SPDY
![Page 67: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/67.jpg)
Amazon silk
SilkBrowser
SPDYGateway
TheInternet
SPDY HTTP
![Page 68: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/68.jpg)
The spec
• Draft spec, version 4• IETF HTTPbis WG has started to work on
HTTP2.0• SPDY has been submitted as input to HTTP2.0
![Page 69: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/69.jpg)
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
![Page 70: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/70.jpg)
Attributions
• http://en.wikipedia.org/wiki/File:US_Robotics_56K_Modem_Front.JPG
• https://www.iis.se/docs/SOI2011.pdf• http://www.flickr.com/photos/howi/6366423
373/• http://www.flickr.com/photos/wwarby/51100
37138/• http://www.flickr.com/photos/alicetragedy/4
977295298/• http://www.flickr.com/photos/koltregaskes/6
24914973/in/photostream/
![Page 71: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/71.jpg)
Backup slides
![Page 72: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/72.jpg)
Alternatives
![Page 73: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/73.jpg)
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
![Page 74: SPDY](https://reader033.vdocuments.net/reader033/viewer/2022060109/5555a71cd8b42a52568b4749/html5/thumbnails/74.jpg)
Pipelining
GET 1
GET 2GET 3
200 OK 1
200 OK 2
200 OK 3
GET 1
GET 2GET 3
200 OK 2
200 OK 3
200 OK 1
Multiplexing
GET
GET
GET
200 OK
200 OK
200 OK
Synchronous