is the web http 2 yet
play

Is the Web HTTP/2 yet? Jeremy Blackburn and Ma<eo - PowerPoint PPT Presentation

Is the Web HTTP/2 yet? Jeremy Blackburn and Ma<eo Varvello K. Schomp, D. Naylor, A. Finamore, K. Papagiannaki Outline HTTP History


  1. Is ¡the ¡Web ¡HTTP/2 ¡yet? ¡ Jeremy ¡Blackburn ¡and ¡Ma<eo ¡Varvello ¡ K. ¡Schomp, ¡D. ¡Naylor, ¡A. ¡Finamore, ¡K. ¡Papagiannaki ¡ ¡ ¡ ¡ ¡

  2. Outline ¡ • HTTP ¡History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡why ¡and ¡how? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡

  3. History ¡ ¡ • Hypertext, ¡HTTP, ¡World ¡Wide ¡Web ¡ • HTTP ¡funcMons ¡as ¡a ¡request–response ¡ protocol ¡in ¡the ¡client–server ¡compuMng ¡ model ¡ ¡ 1965 ¡

  4. History ¡ ¡ • TCP ¡connecMon ¡on ¡port ¡80 ¡ ¡ • ASCII ¡protocol ¡ ¡ – Simply ¡telnet ¡(1969) ¡for ¡debugging ¡ ¡ • Only ¡one ¡method: ¡GET ¡ – GET ¡an ¡HTML ¡page ¡from ¡a ¡server ¡ 1965 ¡

  5. History ¡ ¡ • RFC1945 ¡describes ¡the ¡“common ¡usage’” ¡of ¡HTTP/1.0, ¡ not ¡a ¡formal ¡standard ¡ ¡ • Introduce ¡POST ¡and ¡HEAD ¡ ¡ • Content-Encoding header ¡ – end-­‑to-­‑end ¡content-­‑coding(s) ¡used ¡for ¡a ¡message ¡ • Simple ¡caching ¡ ¡ – server ¡may ¡mark ¡a ¡response ¡using ¡the ¡ Expires ¡header ¡ – cache ¡can ¡include ¡ If-Modified-Since header ¡to ¡ check ¡cache ¡validity ¡ ¡ 1965 ¡

  6. History ¡ ¡ • IETF ¡Drae ¡Standard ¡ • Add ¡methods: ¡OPTIONS, ¡PUT, ¡DELETE, ¡TRACE ¡and ¡ CONNECT ¡ – HTTPS ¡ through ¡HTTP ¡proxy ¡ • Pipelining ¡ – MulMple ¡request ¡over ¡a ¡single ¡(TCP) ¡connecMon ¡ ¡ • New ¡header ¡opMons ¡ – Range ¡requests ¡ – Hop-­‑by-­‑hop ¡headers ¡ • Clarify ¡and ¡add ¡flexibility ¡to ¡caching ¡operaMons ¡ • Upgrade ¡request ¡header ¡ – Ease ¡deployment ¡of ¡future ¡protocols ¡ 2000 ¡ 1965 ¡

  7. History ¡ ¡ Breakdown by Protocol Version (Announced Support) Click and drag in the plot area to zoom in 80k 60k Number of Domains 40k 20k 0k Jan '15 May '15 Sep '15 Jan '16 H2 Draft 14 Highcharts.com 2000 ¡ 2014-­‑2015 ¡ 1965 ¡

  8. History ¡ ¡ Breakdown by Protocol Version (Announced Support) Click and drag in the plot area to zoom in 80k 60k Number of Domains 40k 20k 0k Jan '15 May '15 Sep '15 Jan '16 H2 Draft 14 H2 Draft 15 H2 Draft 16 H2 Draft 17 Highcharts.com 2000 ¡ 2014-­‑2015 ¡ 1965 ¡

  9. History ¡ ¡ Breakdown by Protocol Version (Announced Support) Click and drag in the plot area to zoom in 200k 150k Number of Domains 100k 50k 0k Jan '15 May '15 Sep '15 Jan '16 H2 Draft 14 H2 Draft 15 H2 Draft 16 H2 Draft 17 H2 Highcharts.com 2000 ¡ 2014-­‑2015 ¡ 1965 ¡

  10. Outline ¡ • HTTP ¡History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡why ¡and ¡how? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡

  11. Binary ¡Protocol ¡ ¡ • H2 ¡is ¡binary ¡rather ¡than ¡ASCII ¡ ¡ • Pros: ¡ – efficient ¡parsing ¡ – lighter ¡network ¡footprint ¡ – less ¡prune ¡to ¡security ¡issues ¡due ¡to ¡unsaniMzed ¡ input ¡strings ¡

  12. Header ¡Compression ¡ ¡ • HTTP ¡is ¡state-­‑less, ¡thus ¡repeMMve ¡ – Each ¡object ¡needs ¡to ¡carry ¡header ¡informaMon ¡ ¡ – HTTP/2 ¡is ¡state-­‑less ¡as ¡well ¡ • HTTP/2 ¡reduces ¡redundant ¡informaMon ¡ shared ¡between ¡objects ¡using ¡compression ¡ ¡ – HPACK7: ¡solve ¡BREACH ¡and ¡CRIME ¡ vulnerabiliMes ¡with ¡SPDY ¡(gzip) ¡

  13. MulMplexing ¡ • Head ¡of ¡line ¡blocking ¡– ¡Any ¡early ¡ request ¡for ¡a ¡large ¡object ¡can ¡ ¡ delay ¡all ¡subsequent ¡pipelined ¡ ¡ requests ¡ – Clients ¡open ¡several ¡TCP ¡connecMons ¡in ¡parallel ¡(6 ¡in ¡ Chrome ¡and ¡15 ¡in ¡Firefox) ¡ ¡ – Overhead ¡of ¡mulMple ¡TCP ¡connecMons ¡(TCP ¡state, ¡TLS ¡ handshake ¡and ¡setup) ¡ ¡ • H2 ¡opens ¡a ¡single ¡TCP ¡connecMon ¡to ¡a ¡domain ¡where ¡ it ¡ mul%plexes ¡ requests ¡and ¡responses ¡(streams) ¡ ¡

  14. Priority ¡ ¡ • A ¡client ¡can ¡specify ¡which ¡streams ¡are ¡most ¡ important ¡ ¡ • It ¡allows ¡the ¡client ¡to ¡load ¡important ¡objects ¡ (e.g., ¡CSS ¡and ¡JavaScript) ¡earlier ¡

  15. Push ¡ ¡ • It ¡allows ¡the ¡server ¡to ¡push ¡objects ¡before ¡the ¡ client ¡requests ¡them ¡ – Server ¡knows ¡what ¡the ¡client ¡will ¡ask ¡in ¡the ¡future ¡ ¡

  16. HTTP/2 ¡Background ¡– ¡Summary ¡ ¡ • Binary ¡protocol ¡– ¡efficient ¡parsing, ¡light ¡network ¡ footprint, ¡less ¡prune ¡to ¡security ¡issues ¡due ¡to ¡ unsaniMzed ¡input ¡strings ¡ • Header ¡compression ¡– ¡reduces ¡redundant ¡informaMon ¡ shared ¡between ¡objects ¡ • Mul%plexing ¡– ¡opens ¡a ¡single ¡TCP ¡connecMon ¡to ¡a ¡ domain ¡where ¡it ¡ mul%plexes ¡ requests ¡and ¡responses ¡ ¡ • Priority ¡– ¡allows ¡the ¡client ¡to ¡load ¡important ¡objects ¡ (e.g., ¡CSS ¡and ¡JavaScript) ¡earlier ¡ • Server ¡push ¡– ¡allows ¡the ¡server ¡to ¡push ¡objects ¡before ¡ the ¡client ¡requests ¡them ¡

  17. Outline ¡ • History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡Why ¡and ¡How? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡

  18. What? ¡ • Monitored ¡HTTP/2 ¡(H2) ¡adopMon ¡ ¡ – Alexa ¡top ¡1 ¡million* ¡websites ¡on ¡a ¡daily ¡basis ¡ ¡ • Content ¡and ¡performance ¡analysis ¡ ¡ – Subset ¡of ¡website ¡“truly” ¡supporMng ¡H2 ¡ • Built ¡a ¡website ¡ ¡ – h<p://isthewebh<p2yet.com/ ¡

  19. Why? ¡ • Who ¡is ¡behind ¡H2? ¡ ¡ – Unique ¡chance ¡to ¡understand ¡how ¡a ¡new ¡protocol ¡ is ¡adopted ¡in ¡the ¡modern ¡Web ¡ • Is ¡H2 ¡bringing ¡any ¡performance ¡benefit? ¡ ¡ • Did ¡web ¡content ¡change ¡with ¡H2 ¡adopMon? ¡ ¡ – Are ¡H1 ¡hack ¡(e.g., ¡inlining ¡and ¡domain ¡sharding) ¡sMll ¡ used? ¡ • Is ¡there ¡any ¡interest ¡in ¡H2-­‑in-­‑the-­‑clear ¡(H2C)? ¡ ¡

  20. How? ¡ ¡

  21. Phase ¡1 ¡ • Challenges ¡are ¡scale ¡and ¡speed ¡ ¡ – Alexa’s ¡top ¡1M, ¡daily ¡ • We ¡build ¡ prober ¡ – ¡Bash ¡tool ¡for ¡ALPN/ ¡ NPN ¡negoMaMons ¡ – ¡Run ¡on ¡ PlanetLab ¡ instrumented ¡by ¡a ¡ “tracker” ¡

  22. Phase ¡2 ¡ • Small(er) ¡scale ¡(for ¡now) ¡ ¡ – FracMon ¡of ¡sites ¡announcing ¡H2 ¡support ¡ ¡ • We ¡build ¡ h2-­‑lite ¡ – a ¡Mny ¡H2 ¡client ¡that ¡a<empts ¡to ¡download ¡the ¡ root ¡object ¡of ¡a ¡website ¡using ¡H2 ¡ – H2 ¡library ¡implemented ¡in ¡Node.js ¡ • Run ¡from ¡Telefonica ¡(Spain) ¡and ¡CMU ¡(USA) ¡ ¡ ¡

  23. Phase ¡3 ¡ • Small ¡scale ¡(for ¡now) ¡ ¡ – FracMon ¡of ¡sites ¡with ¡cerMfied ¡H2 ¡support ¡ • Require ¡full ¡machine ¡control: ¡result ¡ reproducibility, ¡3/4g ¡dongle, ¡etc. ¡ ¡ • We ¡build ¡ chrome-­‑loader ¡ ¡ – Loads ¡pages ¡using ¡Chrome ¡and ¡H1/H2 ¡alternaMvely ¡ for ¡N ¡repeMMons ¡ – HAR ¡retrieval ¡via ¡Chrome ¡developer ¡interface ¡ – Error/crash ¡management ¡ ¡ • It ¡runs ¡from ¡Telefonica ¡(Barcelona, ¡Spain), ¡Case ¡ (Cleveland, ¡USA) ¡and ¡CMU ¡(Pi<sburgh, ¡USA) ¡ ¡

  24. LimitaMons ¡ • Loca:on ¡– ¡H2 ¡adopMon ¡can ¡be ¡impacted ¡by ¡locaMon, ¡ e.g., ¡Facebook ¡ ¡ – Phase ¡1 ¡tasks ¡are ¡randomly ¡assigned ¡by ¡locaMon ¡(for ¡ scalability) ¡ ¡ • Limited ¡vantage ¡points ¡ – ¡Phase-­‑3 ¡only ¡runs ¡from ¡a ¡ handful ¡of ¡locaMons ¡ • Scalability ¡– ¡already ¡facing ¡this ¡issue ¡with ¡phase ¡3 ¡ – Increase ¡vantage ¡points ¡ ¡ – Rethink/opMmize ¡(see ¡lazy ¡strategy ¡in ¡the ¡paper) ¡ ¡ • PLT ¡ ¡== ¡onLoad() ¡ – ¡though ¡this ¡metric ¡is ¡well-­‑known ¡ and ¡largely ¡used, ¡it ¡is ¡quesMonable ¡in ¡the ¡modern ¡web ¡

Recommend


More recommend