SlideShare a Scribd company logo
1 of 54
Download to read offline
What HTTP/2.0 will*
        TO
      __
    do for you
      Mark Nottingham
    http://www.mnot.net/
          or, @mnot
*
forward-looking statement
            ___ statement based on
           TECHNICA
                    L
A projected financial
management expectations. A forward-
looking statement involves risks with
regard to the accuracy of assumptions
underlying the projections.
Discussions of these statements typically
include words such as estimate,
anticipate, project, and believe.
1. Some recent history
IETF HTTPbis WG
WHAT? to clarify RFC2616 and improve interop
WHO? Roy Fielding, Julian Reschke
WHO (2)? Apache, Mozilla, Chrome, IIS, Varnish,
Squid, F5, Curl, ATS, IE, HAProxy...
WHEN: Almost finished!
WHEN (2): ... after FIVE YEARS :(
IETF HTTPbis WG (2)
STRICTLY chartered to avoid making a new
version of the protocol.


Because EVERYBODY knows that’s not going
to happen.
MEANWHILE
November 2009: Mike Belshe and Roberto Peon announce SPDY

March 2011: Mike talks about SPDY to the HTTPbis WG at IETF80

~April 2011: Chrome, Google start using SPDY

March 2012: HTTPbis solicits proposals for new protocol work

March 2012: Firefox 11 ships with SPDY (off by default)

May 2012: Netcraft finds 339 servers that support SPDY

June 2012: Nginx announces SPDY implementation

July 2012: Akamai announces SPDY implementation

Tuesday: HTTPbis re-chartered to work on HTTP/2.0, based on SPDY
2. What is it?
NO change to HTTP semantics; it’s
 about how it gets onto the wire
Nothing new
 to see here
Not magic
1.multiplexing

2.header compression

3.server push (?)

4.TLS (?)
2.1 multiplexing
connection setup

                                     vanilla



                            server
client




             GE
                T   /foo
                                     HTTP/1.0
                                     One request
                      K
              200
                  O
                                     per TCP connection

         connection close




         OMG ITS SO SLOW
GE
   T   /foo




     O   K
 200
               HTTP/1.0
               (with Keep-Alive)
GE
   T   /ba
           r


               able to reuse
               connections, avoid
               connection setup
     O   K
 200




GE
   T   /ba
           z
GE
   T   /foo




     O   K
 200
               BUT
               it still blocks
GE
   T   /ba
           r




               one outstanding
               request at a time
     O   K
 200




GE
   T   /ba
           z
GE
   T   /foo
GE
   T   /ba
           r
GE
   T   /ba
           z

     O   K
 200

 200
     O   K
               HTTP/1.1
       OK
 200           (with pipelining)


               multiple, ordered
               requests
GE
   T   /foo
GE
   T   /ba
           r




               head-of-line
               blocking

       OK
 200           Still serialised!
          K
 2 00
      O
               Large downloads /
               long “think” time can
               block other requests
The State of the Art
• Use persistent connections (“keep-alives”)
• Pipelining is getting a little deployment
• Use multiple connections for parallelism
  • RFC2616 said “2”; HTTPbis says “reasonable”
  • Browsers use 4-8; bad people use more
• Build lots of heuristics into browsers for
  connection reuse
• Hope that it all works out
What’s so bad about that?
• TCP is built for long-lived flows
  • More connections = shorter flows
  • Congestion control doesn’t have time to ramp up
  • Makes Buffer Bloat worse
• Fairness (user to user, app to app)
• How many connections is the best?
four at a time




cascading waterfalls
GE
   T   /foo



GE
   T   /ba
           r
          K
 2
GE
   00

   T
      O


       /ba
                   SPDY
 2 00
      O   K
           z
                   multiplexing
 GE
    T  /a
               •   one connection
 20   0O
         K
               •   many requests
               •   prioritisation
 GE
    T   /b
               •   out of order
        OK
 20   0
               •   interleaved

 GE
    T   /c
                   NO* QUEUING
      0 OK
 20
2.2 header compression
GET / HTTP/1.1
Host: www.etsy.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14
(KHTML, like Gecko) Version/6.0.1 Safari/536.26.14
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DNT: 1
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: uaid=uaid%3DVdhk5W6sexG-_Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt
%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac
%3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.;
user_prefs=1&2596706699&q0tPzMlJLaoEAA==
Connection: keep-alive




                                525 bytes
GET /assets/dist/js/etsy.recent-searches.20121001205006.js HTTP/1.1
Host: www.etsy.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14
(KHTML, like Gecko) Version/6.0.1 Safari/536.26.14
Accept: */*
DNT: 1
Referer: http://www.etsy.com/
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: autosuggest_split=1;
etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0;
etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG-
_Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac
%3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.;
user_prefs=1&2596706699&q0tPzMlJLaoEAA==
Connection: keep-alive




                   226 new bytes; 690 total
GET /assets/dist/js/jquery.appear.20121001205006.js HTTP/1.1
Host: www.etsy.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14
(KHTML, like Gecko) Version/6.0.1 Safari/536.26.14
Accept: */*
DNT: 1
Referer: http://www.etsy.com/
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: autosuggest_split=1;
etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0;
etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG-
_Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac
%3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.;
user_prefs=1&2596706699&q0tPzMlJLaoEAA==
Connection: keep-alive




                    14 new bytes; 683 total
GET /assets/dist/js/bootstrap/username-suggester.20121001205006.js HTTP/1.1
Host: www.etsy.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14
(KHTML, like Gecko) Version/6.0.1 Safari/536.26.14
Accept: */*
DNT: 1
Referer: http://www.etsy.com/
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Cookie: autosuggest_split=1;
etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0;
etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG-
_Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac
%3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.;
user_prefs=1&2596706699&q0tPzMlJLaoEAA==
Connection: keep-alive




                    28 new bytes; 698 total
• Four requests

• 2,596 bytes total

• Minimum three packets in most places

 • One for the HTML, two+ for assets

• 1,797 redundant bytes
HTTP headers on a
 connection are
  highly similar
Request URI

User-Agent

Cookies

Referer
Big req * many reqs / small IW = SLOW
  • Patrick’s test:
    • 83 asset requests
    • IW = 3
    • ~1400 bytes of headers
  • Uncompressed: 7-8RT
  • Compressed (zlib): 1RT
2.3 server push (?)
2.4 TLS?
3. What does it all mean?
HTTP/2.0 is going to
change Web Engineering...
... but not change
HTTP APIs. Much.
Leaky Abstractions
Reduce Requests
• Image spriting - not necessary

• CSS / JS can be in multiple files

• HTTP APIs can be finer-grained without
  sacrificing performance

• Third party content is an even bigger
  problem
Domain Sharding
• Multiplexing SHOULD make multiple
  connections unnecessary

• Key is to get the TCP connection
  “warm” as quickly as possible, and
  keep it there
Header Optimisation
• Now, adding new headers is easy

 • Very small performance / latency /
   bandwidth impact

• What should be in headers can be in
  headers

• Content Negotiation might become
  interesting again
Predictability
Better Error
 Handling
Debugging will
  need Tools
Lots of tweaking
   • Prioritisation
   • When to Push
   • Flow Control
Transition Decisions
• De-sharding
• De-combining scripts
• De-spriting
• etc.
Guess
 what,
Steve?
         Absurdly Fast
         Web Sites. Fast.
4. What’s still wrong
4.1 Security is hard
4.2 TCP is awkward
• In-order delivery = head-of-line blocking
• Initial congestion window is small
• Packet loss isn’t handled well
HTTP as the
“Everything Protocol”
          ?
Some Links

http://bit.ly/httpbis-home

http://www.chromium.org/spdy

http://www.mnot.net/

More Related Content

What's hot

What's hot (9)

Đề tài: Bảo hộ sáng chế cho dược phẩm theo Hiệp định TRIPS
Đề tài: Bảo hộ sáng chế cho dược phẩm theo Hiệp định TRIPSĐề tài: Bảo hộ sáng chế cho dược phẩm theo Hiệp định TRIPS
Đề tài: Bảo hộ sáng chế cho dược phẩm theo Hiệp định TRIPS
 
Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2Gabarito ad1 web_2012_2
Gabarito ad1 web_2012_2
 
Quyền tác giả đối với tác phẩm kiến trúc theo pháp luật, HAY
Quyền tác giả đối với tác phẩm kiến trúc theo pháp luật, HAYQuyền tác giả đối với tác phẩm kiến trúc theo pháp luật, HAY
Quyền tác giả đối với tác phẩm kiến trúc theo pháp luật, HAY
 
Luận văn: Thẩm quyền xét xử sơ thẩm của Tòa án theo luật, HOT
Luận văn: Thẩm quyền xét xử sơ thẩm của Tòa án theo luật, HOTLuận văn: Thẩm quyền xét xử sơ thẩm của Tòa án theo luật, HOT
Luận văn: Thẩm quyền xét xử sơ thẩm của Tòa án theo luật, HOT
 
Hushang Gaikwad
Hushang GaikwadHushang Gaikwad
Hushang Gaikwad
 
BÀI MẪU Khóa luận: Pháp luật về bảo vệ môi trường biển,9 ĐIỂM
BÀI MẪU Khóa luận: Pháp luật về bảo vệ môi trường biển,9 ĐIỂMBÀI MẪU Khóa luận: Pháp luật về bảo vệ môi trường biển,9 ĐIỂM
BÀI MẪU Khóa luận: Pháp luật về bảo vệ môi trường biển,9 ĐIỂM
 
Basics in echocardiography - an initiative in evaluation of valvular heart di...
Basics in echocardiography - an initiative in evaluation of valvular heart di...Basics in echocardiography - an initiative in evaluation of valvular heart di...
Basics in echocardiography - an initiative in evaluation of valvular heart di...
 
Luận văn: Ủy thác thi hành án dân sự theo Pháp luậthi h tành án dân sự
Luận văn: Ủy thác thi hành án dân sự theo Pháp luậthi h tành án dân sựLuận văn: Ủy thác thi hành án dân sự theo Pháp luậthi h tành án dân sự
Luận văn: Ủy thác thi hành án dân sự theo Pháp luậthi h tành án dân sự
 
Bash Introduction
Bash IntroductionBash Introduction
Bash Introduction
 

Viewers also liked

Better Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design ThinkingBetter Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design Thinking
Jeff Gothelf
 

Viewers also liked (20)

Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
How can your applications benefit from Java 9?
How can your applications benefit from Java 9?How can your applications benefit from Java 9?
How can your applications benefit from Java 9?
 
Introducing HTTP/2
Introducing HTTP/2Introducing HTTP/2
Introducing HTTP/2
 
JAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) BridgeJAX-RS and CDI Bike the (Reactive) Bridge
JAX-RS and CDI Bike the (Reactive) Bridge
 
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
UX STRAT USA: Leah Buley, "The Role of UX / CX in Business"
 
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelleAgile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
Agile Wake Up #1 du 01/12/2015 : L'agilité à grande échelle
 
WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013WTF - What's The Fold - Bordeaux JUG 2013
WTF - What's The Fold - Bordeaux JUG 2013
 
Open Data v0.3
Open Data v0.3Open Data v0.3
Open Data v0.3
 
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoiPerf ug   comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
Perf ug comment ne plus rajouter de ram a vos jvm sans savoir pourquoi
 
Conference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partieConference MicroServices101 - 1ere partie
Conference MicroServices101 - 1ere partie
 
So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?So, you wanna migrate to Java 9?
So, you wanna migrate to Java 9?
 
JAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridgeJAX RS and CDI bike the reactive bridge
JAX RS and CDI bike the reactive bridge
 
Better Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design ThinkingBetter Product Definition with Lean UX and Design Thinking
Better Product Definition with Lean UX and Design Thinking
 
Company_Profile_Digital_1
Company_Profile_Digital_1Company_Profile_Digital_1
Company_Profile_Digital_1
 
Business intelligence v0.3
Business intelligence v0.3Business intelligence v0.3
Business intelligence v0.3
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
Optimisez la performance de votre service client tout en maîtrisant votre b...
Optimisez la performance  de votre service client  tout en maîtrisant votre b...Optimisez la performance  de votre service client  tout en maîtrisant votre b...
Optimisez la performance de votre service client tout en maîtrisant votre b...
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / Docker
 
Microbox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien RoyMicrobox : Ma toolbox microservices - Julien Roy
Microbox : Ma toolbox microservices - Julien Roy
 
HTTP/2 Changes Everything
HTTP/2 Changes EverythingHTTP/2 Changes Everything
HTTP/2 Changes Everything
 

Similar to What HTTP/2.0 Will Do For You

HTTP at your local BigCo
HTTP at your local BigCoHTTP at your local BigCo
HTTP at your local BigCo
pgriess
 

Similar to What HTTP/2.0 Will Do For You (20)

From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
From Fast To SPDY
 
Improving performance by changing the rules from fast to SPDY
Improving performance by changing the rules   from fast to SPDYImproving performance by changing the rules   from fast to SPDY
Improving performance by changing the rules from fast to SPDY
 
Http2
Http2Http2
Http2
 
HTTP/2: What no one is telling you
HTTP/2: What no one is telling youHTTP/2: What no one is telling you
HTTP/2: What no one is telling you
 
HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1HTML5, HTTP2, and You 1.1
HTML5, HTTP2, and You 1.1
 
Next generation web protocols
Next generation web protocolsNext generation web protocols
Next generation web protocols
 
HTTP/2 Introduction
HTTP/2 IntroductionHTTP/2 Introduction
HTTP/2 Introduction
 
API Design Workshop
API Design WorkshopAPI Design Workshop
API Design Workshop
 
SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0
 
HTTP at your local BigCo
HTTP at your local BigCoHTTP at your local BigCo
HTTP at your local BigCo
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 eraHTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
HTTP/2 and QUICK protocols. Optimizing the Web stack for HTTP/2 era
 
Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)Basic IT 2 (General IT Knowledge-2)
Basic IT 2 (General IT Knowledge-2)
 
Ws
WsWs
Ws
 
Websocket
WebsocketWebsocket
Websocket
 
netty_qcon_v4
netty_qcon_v4netty_qcon_v4
netty_qcon_v4
 
So that was HTTP/2, what's next?
So that was HTTP/2, what's next?So that was HTTP/2, what's next?
So that was HTTP/2, what's next?
 
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
Проксирование HTTP-запросов web-акселератором / Александр Крижановский (Tempe...
 
SPDY
SPDYSPDY
SPDY
 
Introduction to HTTP/2
Introduction to HTTP/2Introduction to HTTP/2
Introduction to HTTP/2
 

More from Mark Nottingham

More from Mark Nottingham (8)

Browser Caching and You: A Love Story
Browser Caching and You: A Love StoryBrowser Caching and You: A Love Story
Browser Caching and You: A Love Story
 
Stupid Web Caching Tricks
Stupid Web Caching TricksStupid Web Caching Tricks
Stupid Web Caching Tricks
 
Shiny New HTTP Shit
Shiny New HTTP ShitShiny New HTTP Shit
Shiny New HTTP Shit
 
Global Taxation Arbitrage
Global Taxation ArbitrageGlobal Taxation Arbitrage
Global Taxation Arbitrage
 
Introducing REDbot
Introducing REDbotIntroducing REDbot
Introducing REDbot
 
Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!Leveraging the Web for Services at Yahoo!
Leveraging the Web for Services at Yahoo!
 
Web 2.0 on Speed
Web 2.0 on SpeedWeb 2.0 on Speed
Web 2.0 on Speed
 
What's up with HTTP?
What's up with HTTP?What's up with HTTP?
What's up with HTTP?
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya HalderCustom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
Custom Approval Process: A New Perspective, Pavel Hrbacek & Anindya Halder
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
Strategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering TeamsStrategic AI Integration in Engineering Teams
Strategic AI Integration in Engineering Teams
 
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptxWSO2CONMay2024OpenSourceConferenceDebrief.pptx
WSO2CONMay2024OpenSourceConferenceDebrief.pptx
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Buy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptxBuy Epson EcoTank L3210 Colour Printer Online.pptx
Buy Epson EcoTank L3210 Colour Printer Online.pptx
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 

What HTTP/2.0 Will Do For You

  • 1. What HTTP/2.0 will* TO __ do for you Mark Nottingham http://www.mnot.net/ or, @mnot
  • 2. * forward-looking statement ___ statement based on TECHNICA L A projected financial management expectations. A forward- looking statement involves risks with regard to the accuracy of assumptions underlying the projections. Discussions of these statements typically include words such as estimate, anticipate, project, and believe.
  • 3. 1. Some recent history
  • 4. IETF HTTPbis WG WHAT? to clarify RFC2616 and improve interop WHO? Roy Fielding, Julian Reschke WHO (2)? Apache, Mozilla, Chrome, IIS, Varnish, Squid, F5, Curl, ATS, IE, HAProxy... WHEN: Almost finished! WHEN (2): ... after FIVE YEARS :(
  • 5. IETF HTTPbis WG (2) STRICTLY chartered to avoid making a new version of the protocol. Because EVERYBODY knows that’s not going to happen.
  • 7. November 2009: Mike Belshe and Roberto Peon announce SPDY March 2011: Mike talks about SPDY to the HTTPbis WG at IETF80 ~April 2011: Chrome, Google start using SPDY March 2012: HTTPbis solicits proposals for new protocol work March 2012: Firefox 11 ships with SPDY (off by default) May 2012: Netcraft finds 339 servers that support SPDY June 2012: Nginx announces SPDY implementation July 2012: Akamai announces SPDY implementation Tuesday: HTTPbis re-chartered to work on HTTP/2.0, based on SPDY
  • 9. NO change to HTTP semantics; it’s about how it gets onto the wire
  • 10. Nothing new to see here
  • 14. connection setup vanilla server client GE T /foo HTTP/1.0 One request K 200 O per TCP connection connection close OMG ITS SO SLOW
  • 15. GE T /foo O K 200 HTTP/1.0 (with Keep-Alive) GE T /ba r able to reuse connections, avoid connection setup O K 200 GE T /ba z
  • 16. GE T /foo O K 200 BUT it still blocks GE T /ba r one outstanding request at a time O K 200 GE T /ba z
  • 17. GE T /foo GE T /ba r GE T /ba z O K 200 200 O K HTTP/1.1 OK 200 (with pipelining) multiple, ordered requests
  • 18. GE T /foo GE T /ba r head-of-line blocking OK 200 Still serialised! K 2 00 O Large downloads / long “think” time can block other requests
  • 19. The State of the Art • Use persistent connections (“keep-alives”) • Pipelining is getting a little deployment • Use multiple connections for parallelism • RFC2616 said “2”; HTTPbis says “reasonable” • Browsers use 4-8; bad people use more • Build lots of heuristics into browsers for connection reuse • Hope that it all works out
  • 20. What’s so bad about that? • TCP is built for long-lived flows • More connections = shorter flows • Congestion control doesn’t have time to ramp up • Makes Buffer Bloat worse • Fairness (user to user, app to app) • How many connections is the best?
  • 21. four at a time cascading waterfalls
  • 22. GE T /foo GE T /ba r K 2 GE 00 T O /ba SPDY 2 00 O K z multiplexing GE T /a • one connection 20 0O K • many requests • prioritisation GE T /b • out of order OK 20 0 • interleaved GE T /c NO* QUEUING 0 OK 20
  • 24. GET / HTTP/1.1 Host: www.etsy.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 DNT: 1 Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: uaid=uaid%3DVdhk5W6sexG-_Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt %3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac %3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.; user_prefs=1&2596706699&q0tPzMlJLaoEAA== Connection: keep-alive 525 bytes
  • 25. GET /assets/dist/js/etsy.recent-searches.20121001205006.js HTTP/1.1 Host: www.etsy.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14 Accept: */* DNT: 1 Referer: http://www.etsy.com/ Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: autosuggest_split=1; etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0; etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG- _Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac %3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.; user_prefs=1&2596706699&q0tPzMlJLaoEAA== Connection: keep-alive 226 new bytes; 690 total
  • 26. GET /assets/dist/js/jquery.appear.20121001205006.js HTTP/1.1 Host: www.etsy.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14 Accept: */* DNT: 1 Referer: http://www.etsy.com/ Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: autosuggest_split=1; etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0; etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG- _Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac %3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.; user_prefs=1&2596706699&q0tPzMlJLaoEAA== Connection: keep-alive 14 new bytes; 683 total
  • 27. GET /assets/dist/js/bootstrap/username-suggester.20121001205006.js HTTP/1.1 Host: www.etsy.com User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14 Accept: */* DNT: 1 Referer: http://www.etsy.com/ Accept-Language: en-us Accept-Encoding: gzip, deflate Cookie: autosuggest_split=1; etala=111461200.1476767743.1349274889.1349274889.1349274889.1.0; etalb=111461200.1.10.1349274889; last_browse_page=%2F; uaid=uaid%3DVdhk5W6sexG- _Y7ZBeQFa3cq7yMQ%26_now%3D1325204464%26_slt%3Ds_LCLVpU%26_kid%3D1%26_ver%3D1%26_mac %3DlVnlM3hMdb3Cs3hqMVuk_dQEixsqQzUlNYCs9H_Kj8c.; user_prefs=1&2596706699&q0tPzMlJLaoEAA== Connection: keep-alive 28 new bytes; 698 total
  • 28. • Four requests • 2,596 bytes total • Minimum three packets in most places • One for the HTML, two+ for assets • 1,797 redundant bytes
  • 29. HTTP headers on a connection are highly similar
  • 31. Big req * many reqs / small IW = SLOW • Patrick’s test: • 83 asset requests • IW = 3 • ~1400 bytes of headers • Uncompressed: 7-8RT • Compressed (zlib): 1RT
  • 34. 3. What does it all mean?
  • 35. HTTP/2.0 is going to change Web Engineering...
  • 36. ... but not change HTTP APIs. Much.
  • 39. • Image spriting - not necessary • CSS / JS can be in multiple files • HTTP APIs can be finer-grained without sacrificing performance • Third party content is an even bigger problem
  • 41. • Multiplexing SHOULD make multiple connections unnecessary • Key is to get the TCP connection “warm” as quickly as possible, and keep it there
  • 43. • Now, adding new headers is easy • Very small performance / latency / bandwidth impact • What should be in headers can be in headers • Content Negotiation might become interesting again
  • 46. Debugging will need Tools
  • 47. Lots of tweaking • Prioritisation • When to Push • Flow Control
  • 48. Transition Decisions • De-sharding • De-combining scripts • De-spriting • etc.
  • 49. Guess what, Steve? Absurdly Fast Web Sites. Fast.
  • 52. 4.2 TCP is awkward • In-order delivery = head-of-line blocking • Initial congestion window is small • Packet loss isn’t handled well
  • 53. HTTP as the “Everything Protocol” ?