Daniel Stenberg, May 6th
2015
Daniel Stenberg, May 6th
2015
HTTP Today
HTTP/2 basics
Status
Future
Q&A
Daniel Stenberg, May 6th
2015
Daniel Stenberg
Email: daniel@haxx.se
Twitter: @bagder
Web: daniel.haxx.se
Blog: daniel.haxx.se/blog
network hacker at
Daniel Stenberg, May 6th
2015
Please ask!
… just maybe everything isn't crystal clear at once.
Daniel Stenberg, May 6th
2015
Internet Today
HTTP for everything
The web has changed significantly since 1996
Daniel Stenberg, May 6th
2015
Request and payload growth
in 4 years...
7777
100100
725K725K
1900K1900K
httparchive.org
Daniel Stenberg, May 6th
2015
Roundtrip Bonanza
Daniel Stenberg, May 6th
2015
connections per page
38
httparchive.org
Daniel Stenberg, May 6th
2015
Latency adds up
4,000 ms
750 ms
Page
load
time
Round
trip
time0 ms 240 ms
MikeBelshe
Daniel Stenberg, May 6th
2015
Head of line blocking
Daniel Stenberg, May 6th
2015
HTTP 1.1
workarounds
Daniel Stenberg, May 6th
2015
SpritingSpriting
Daniel Stenberg, May 6th
2015
Inlining
.icon1 {
background: url(data:image/png;base64,<data>) no-repeat;
}
.icon2 {
background: url(data:image/png;base64,<data>) no-repeat;
}
Daniel Stenberg, May 6th
2015
Concatenation
$ cat *.js > single-monster.js
Daniel Stenberg, May 6th
2015
Sharding
Daniel Stenberg, May 6th
2015
Quirky
Annoying for developers
Adds layers of tools
Hampers caching
Downloads too much
Daniel Stenberg, May 6th
2015
Daniel Stenberg, May 6th
2015
HTTP/2
Daniel Stenberg, May 6th
2015
“Just a new framing layer”
maintains HTTP paradigms
http:// and https:// URLs cannot be changed
HTTP/1.1 servers and clients will be around for
decades
Proxies must be able to convert 1:1
Less optional parts
No more minor version!
Daniel Stenberg, May 6th
2015
Binary
•No more telnet tricks
•Easier framing
•TLS and compression anyway...
•Wireshark inspector
•A handful set frame types, like HEADERS and DATA
Daniel Stenberg, May 6th
2015
Multiplexed (1/2)
•Multiple streams over a single physical connection
•Max number of parallel streams set by peer
Daniel Stenberg, May 6th
2015
Multiplexed (2/2)
Daniel Stenberg, May 6th
2015
Better utilization of bandwidth
Daniel Stenberg, May 6th
2015
Header compression
•HTTP headers are big and are growing
•HTTP 1 had no header compression
•TCP slow start and initial window size
•Headers are notoriously repetitive
•Cookies
•HPACK
•Not a CRIME victim
•Padding
Daniel Stenberg, May 6th
2015
Streams
Dynamic priority
Flow control
AA
BB CC
Dependencies
Daniel Stenberg, May 6th
2015
Server push
Give me HTML please!
Here's HTML for you
Here's CSS for you
Daniel Stenberg, May 6th
2015
Stricter TLS
TLS version 1.2+ only
Stricter cipher suite requirements
No renegotiations
Daniel Stenberg, May 6th
2015
HTTP/2 is not
Mandatory TLS
Changing HTTP headers
Daniel Stenberg, May 6th
2015
How will HTTP/2 affect users?
Faster page loads
More responsive loading
More HTTPS
Daniel Stenberg, May 6th
2015
How will HTTP/2 affect web development?
HTTP/1 work-arounds hurt HTTP/2 perf
Need to do separate tweaks
Optimal HTTP/2 usage will need some time
Daniel Stenberg, May 6th
2015
Implementations
Nghttp2
Http2-katana
Node-http2
Firefox
Http2-perl
Iij-http2
Akamai
Chrome
OpenLiteSpeed
Twitter
Wireshark
Ericsson MSP
Http2 (Go)
Http2-go
OkHttp
Trusterd
Haskell http lib
SteelApp ADC
Google GFE
Deuterium
Hyper
Undertow
F5
Sasazka
Lucid
H2O
Warp
curl
Cl-http2
Netty
Jetty
Microsoft
Http-2
Protocol::HTTP2
mod_h2
Nginx
wget
https://github.com/http2/http2-spec/wiki/Implementations
Daniel Stenberg, May 6th
2015
Will HTTP/2 get widely deployed?
“Look at IPv6”
SPDY proved fast growth can happen
Major browsers are on the train
Many sites already did SPDY - likely to go
HTTP/2
Daniel Stenberg, May 6th
2015
Schedule
Firefox 35 – enabled by default January 13th
Chrome 40 – enabled by default January 21st
IESG approved on February 18th
HTTP/2 final RFC in Q2 2015 ?
Daniel Stenberg, May 6th
2015
HTTP/2 – May 6th
2015
All browser support seen so far only over HTTPS
Firefox: HTTP/2 in 10%of all HTTP responses1
HTTP/2 is used 10 times more than HTTP/1.0
Google: HTTP/2 used in 18% of global traffic2
HTTP/2 is supported by 44% of browsers in use right now
IPv6: 6.6% today, almost 20 years after first RFC3
1. Rough and not statistically sound numbers from Mozilla Telemetry data for Firefox 36.
2. Rough and rapidly changing numbers in an evolving climate. Graciously provided by Google.
3. https://www.google.com/intl/en/ipv6/statistics.html
Daniel Stenberg, May 6th
2015
Browser support
http://caniuse.com/#feat=http2
Daniel Stenberg, May 6th
2015
My tealeaves tell me...
http://daniel.haxx.se/blog/2015/03/31/the-state-and-rate-of-http2-adoption/
10% at end of 2015
Daniel Stenberg, May 6th
2015
Future
HTTP/2 lays the foundation for the future
Time to drop legacy HTTP “mistakes”?
HTTP/3 can happen faster
QUIC
The HTTP Workshop (Münster, 27-30 July 2015)
https://httpworkshop.github.io/
Daniel Stenberg, May 6th
2015
Final recap
Binary and multiplexed
Primarily over TLS
Users won't see a 2 anywhere
It's already here
Daniel Stenberg, May 6th
2015
Thank you!
See also http2 explained
http://daniel.haxx.se/http2
Daniel Stenberg, May 6th
2015
Doing good is part of our code
Daniel Stenberg, May 6th
2015
Credits
✗
HTTP and TCP trend numbers from
http://httparchive.org
✗
RTT / page load data from Mike Belshe
✗
HTTP/2 usage numbers by Google and Firefox
Telemetry
✗
Lego pieces borrowed from my kids
Daniel Stenberg, May 6th
2015
License
This presentation and its contents are licensed under
the Creative Commons Attribution 4.0 license:
http://creativecommons.org/licenses/by/4.0/

HTTP/2 - for TCP/IP Geeks Stockholm

  • 1.
  • 2.
    Daniel Stenberg, May6th 2015 HTTP Today HTTP/2 basics Status Future Q&A
  • 3.
    Daniel Stenberg, May6th 2015 Daniel Stenberg Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog network hacker at
  • 4.
    Daniel Stenberg, May6th 2015 Please ask! … just maybe everything isn't crystal clear at once.
  • 5.
    Daniel Stenberg, May6th 2015 Internet Today HTTP for everything The web has changed significantly since 1996
  • 6.
    Daniel Stenberg, May6th 2015 Request and payload growth in 4 years... 7777 100100 725K725K 1900K1900K httparchive.org
  • 7.
    Daniel Stenberg, May6th 2015 Roundtrip Bonanza
  • 8.
    Daniel Stenberg, May6th 2015 connections per page 38 httparchive.org
  • 9.
    Daniel Stenberg, May6th 2015 Latency adds up 4,000 ms 750 ms Page load time Round trip time0 ms 240 ms MikeBelshe
  • 10.
    Daniel Stenberg, May6th 2015 Head of line blocking
  • 11.
    Daniel Stenberg, May6th 2015 HTTP 1.1 workarounds
  • 12.
    Daniel Stenberg, May6th 2015 SpritingSpriting
  • 13.
    Daniel Stenberg, May6th 2015 Inlining .icon1 { background: url(data:image/png;base64,<data>) no-repeat; } .icon2 { background: url(data:image/png;base64,<data>) no-repeat; }
  • 14.
    Daniel Stenberg, May6th 2015 Concatenation $ cat *.js > single-monster.js
  • 15.
    Daniel Stenberg, May6th 2015 Sharding
  • 16.
    Daniel Stenberg, May6th 2015 Quirky Annoying for developers Adds layers of tools Hampers caching Downloads too much
  • 17.
  • 18.
    Daniel Stenberg, May6th 2015 HTTP/2
  • 19.
    Daniel Stenberg, May6th 2015 “Just a new framing layer” maintains HTTP paradigms http:// and https:// URLs cannot be changed HTTP/1.1 servers and clients will be around for decades Proxies must be able to convert 1:1 Less optional parts No more minor version!
  • 20.
    Daniel Stenberg, May6th 2015 Binary •No more telnet tricks •Easier framing •TLS and compression anyway... •Wireshark inspector •A handful set frame types, like HEADERS and DATA
  • 21.
    Daniel Stenberg, May6th 2015 Multiplexed (1/2) •Multiple streams over a single physical connection •Max number of parallel streams set by peer
  • 22.
    Daniel Stenberg, May6th 2015 Multiplexed (2/2)
  • 23.
    Daniel Stenberg, May6th 2015 Better utilization of bandwidth
  • 24.
    Daniel Stenberg, May6th 2015 Header compression •HTTP headers are big and are growing •HTTP 1 had no header compression •TCP slow start and initial window size •Headers are notoriously repetitive •Cookies •HPACK •Not a CRIME victim •Padding
  • 25.
    Daniel Stenberg, May6th 2015 Streams Dynamic priority Flow control AA BB CC Dependencies
  • 26.
    Daniel Stenberg, May6th 2015 Server push Give me HTML please! Here's HTML for you Here's CSS for you
  • 27.
    Daniel Stenberg, May6th 2015 Stricter TLS TLS version 1.2+ only Stricter cipher suite requirements No renegotiations
  • 28.
    Daniel Stenberg, May6th 2015 HTTP/2 is not Mandatory TLS Changing HTTP headers
  • 29.
    Daniel Stenberg, May6th 2015 How will HTTP/2 affect users? Faster page loads More responsive loading More HTTPS
  • 30.
    Daniel Stenberg, May6th 2015 How will HTTP/2 affect web development? HTTP/1 work-arounds hurt HTTP/2 perf Need to do separate tweaks Optimal HTTP/2 usage will need some time
  • 31.
    Daniel Stenberg, May6th 2015 Implementations Nghttp2 Http2-katana Node-http2 Firefox Http2-perl Iij-http2 Akamai Chrome OpenLiteSpeed Twitter Wireshark Ericsson MSP Http2 (Go) Http2-go OkHttp Trusterd Haskell http lib SteelApp ADC Google GFE Deuterium Hyper Undertow F5 Sasazka Lucid H2O Warp curl Cl-http2 Netty Jetty Microsoft Http-2 Protocol::HTTP2 mod_h2 Nginx wget https://github.com/http2/http2-spec/wiki/Implementations
  • 32.
    Daniel Stenberg, May6th 2015 Will HTTP/2 get widely deployed? “Look at IPv6” SPDY proved fast growth can happen Major browsers are on the train Many sites already did SPDY - likely to go HTTP/2
  • 33.
    Daniel Stenberg, May6th 2015 Schedule Firefox 35 – enabled by default January 13th Chrome 40 – enabled by default January 21st IESG approved on February 18th HTTP/2 final RFC in Q2 2015 ?
  • 34.
    Daniel Stenberg, May6th 2015 HTTP/2 – May 6th 2015 All browser support seen so far only over HTTPS Firefox: HTTP/2 in 10%of all HTTP responses1 HTTP/2 is used 10 times more than HTTP/1.0 Google: HTTP/2 used in 18% of global traffic2 HTTP/2 is supported by 44% of browsers in use right now IPv6: 6.6% today, almost 20 years after first RFC3 1. Rough and not statistically sound numbers from Mozilla Telemetry data for Firefox 36. 2. Rough and rapidly changing numbers in an evolving climate. Graciously provided by Google. 3. https://www.google.com/intl/en/ipv6/statistics.html
  • 35.
    Daniel Stenberg, May6th 2015 Browser support http://caniuse.com/#feat=http2
  • 36.
    Daniel Stenberg, May6th 2015 My tealeaves tell me... http://daniel.haxx.se/blog/2015/03/31/the-state-and-rate-of-http2-adoption/ 10% at end of 2015
  • 37.
    Daniel Stenberg, May6th 2015 Future HTTP/2 lays the foundation for the future Time to drop legacy HTTP “mistakes”? HTTP/3 can happen faster QUIC The HTTP Workshop (Münster, 27-30 July 2015) https://httpworkshop.github.io/
  • 38.
    Daniel Stenberg, May6th 2015 Final recap Binary and multiplexed Primarily over TLS Users won't see a 2 anywhere It's already here
  • 39.
    Daniel Stenberg, May6th 2015 Thank you! See also http2 explained http://daniel.haxx.se/http2
  • 40.
    Daniel Stenberg, May6th 2015 Doing good is part of our code
  • 41.
    Daniel Stenberg, May6th 2015 Credits ✗ HTTP and TCP trend numbers from http://httparchive.org ✗ RTT / page load data from Mike Belshe ✗ HTTP/2 usage numbers by Google and Firefox Telemetry ✗ Lego pieces borrowed from my kids
  • 42.
    Daniel Stenberg, May6th 2015 License This presentation and its contents are licensed under the Creative Commons Attribution 4.0 license: http://creativecommons.org/licenses/by/4.0/