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

Especificaciones técnicas llactas huayranca
Especificaciones técnicas llactas huayrancaEspecificaciones técnicas llactas huayranca
Especificaciones técnicas llactas huayranca
Diner Huaman
 

What's hot (20)

01 memoria de calculo hidraulico sap colcabamba
01 memoria de calculo hidraulico sap  colcabamba01 memoria de calculo hidraulico sap  colcabamba
01 memoria de calculo hidraulico sap colcabamba
 
Memoria de calculo sistema sanitario
Memoria de calculo   sistema sanitarioMemoria de calculo   sistema sanitario
Memoria de calculo sistema sanitario
 
INSTRUCTIVO ELABORACION EETT Y TDR versión PDF.pdf
INSTRUCTIVO ELABORACION EETT Y TDR versión PDF.pdfINSTRUCTIVO ELABORACION EETT Y TDR versión PDF.pdf
INSTRUCTIVO ELABORACION EETT Y TDR versión PDF.pdf
 
Tasación ejemplo lecilop
Tasación ejemplo lecilopTasación ejemplo lecilop
Tasación ejemplo lecilop
 
proyectista agua potable/ alcantarillado El Quisco
proyectista agua potable/ alcantarillado El Quiscoproyectista agua potable/ alcantarillado El Quisco
proyectista agua potable/ alcantarillado El Quisco
 
1.15 acta de recepcion de obra
1.15 acta de recepcion de obra1.15 acta de recepcion de obra
1.15 acta de recepcion de obra
 
ESPECIFICACIONES TECNICAS 1º ETAPA.docx
ESPECIFICACIONES TECNICAS 1º ETAPA.docxESPECIFICACIONES TECNICAS 1º ETAPA.docx
ESPECIFICACIONES TECNICAS 1º ETAPA.docx
 
Ampliacion de plazo
Ampliacion de plazo Ampliacion de plazo
Ampliacion de plazo
 
PROYECTO DE IRRIGACIONES EN EL DEPARTAMENTO DE APURIMAC
PROYECTO DE IRRIGACIONES EN EL DEPARTAMENTO DE APURIMACPROYECTO DE IRRIGACIONES EN EL DEPARTAMENTO DE APURIMAC
PROYECTO DE IRRIGACIONES EN EL DEPARTAMENTO DE APURIMAC
 
Normas y tablas para calculo de flete
Normas y tablas para calculo de fleteNormas y tablas para calculo de flete
Normas y tablas para calculo de flete
 
Apu sardineles
Apu sardinelesApu sardineles
Apu sardineles
 
Manual de instalacion de agua y alcantarillado
Manual de instalacion de agua y alcantarilladoManual de instalacion de agua y alcantarillado
Manual de instalacion de agua y alcantarillado
 
Apu iiss
Apu iissApu iiss
Apu iiss
 
Rvm 063 2021-vmpcic-mc - anexo.pdf.pdf
Rvm 063 2021-vmpcic-mc - anexo.pdf.pdfRvm 063 2021-vmpcic-mc - anexo.pdf.pdf
Rvm 063 2021-vmpcic-mc - anexo.pdf.pdf
 
Instructivo alcantarillado 2019
Instructivo alcantarillado 2019Instructivo alcantarillado 2019
Instructivo alcantarillado 2019
 
TESIS FINAL DE MAESTRÍA - PUCP
TESIS FINAL DE MAESTRÍA - PUCPTESIS FINAL DE MAESTRÍA - PUCP
TESIS FINAL DE MAESTRÍA - PUCP
 
Presupuesto yackson lara
Presupuesto yackson laraPresupuesto yackson lara
Presupuesto yackson lara
 
COMPONENTES DE INSTALACIONES SANITARIAS.pptx
COMPONENTES DE INSTALACIONES SANITARIAS.pptxCOMPONENTES DE INSTALACIONES SANITARIAS.pptx
COMPONENTES DE INSTALACIONES SANITARIAS.pptx
 
Especificaciones técnicas llactas huayranca
Especificaciones técnicas llactas huayrancaEspecificaciones técnicas llactas huayranca
Especificaciones técnicas llactas huayranca
 
Planos georeferenciados
Planos georeferenciadosPlanos georeferenciados
Planos georeferenciados
 

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)

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
 
From Fast To SPDY
From Fast To SPDYFrom Fast To SPDY
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

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Recently uploaded (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

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” ?