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
Is ¡the ¡Web ¡HTTP/2 ¡yet? ¡ Jeremy ¡Blackburn ¡and ¡Ma<eo ¡Varvello ¡ K. ¡Schomp, ¡D. ¡Naylor, ¡A. ¡Finamore, ¡K. ¡Papagiannaki ¡ ¡ ¡ ¡ ¡
Outline ¡ • HTTP ¡History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡why ¡and ¡how? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡
History ¡ ¡ • Hypertext, ¡HTTP, ¡World ¡Wide ¡Web ¡ • HTTP ¡funcMons ¡as ¡a ¡request–response ¡ protocol ¡in ¡the ¡client–server ¡compuMng ¡ model ¡ ¡ 1965 ¡
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 ¡
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 ¡
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 ¡
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 ¡
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 ¡
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 ¡
Outline ¡ • HTTP ¡History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡why ¡and ¡how? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡
Binary ¡Protocol ¡ ¡ • H2 ¡is ¡binary ¡rather ¡than ¡ASCII ¡ ¡ • Pros: ¡ – efficient ¡parsing ¡ – lighter ¡network ¡footprint ¡ – less ¡prune ¡to ¡security ¡issues ¡due ¡to ¡unsaniMzed ¡ input ¡strings ¡
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) ¡
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) ¡ ¡
Priority ¡ ¡ • A ¡client ¡can ¡specify ¡which ¡streams ¡are ¡most ¡ important ¡ ¡ • It ¡allows ¡the ¡client ¡to ¡load ¡important ¡objects ¡ (e.g., ¡CSS ¡and ¡JavaScript) ¡earlier ¡
Push ¡ ¡ • It ¡allows ¡the ¡server ¡to ¡push ¡objects ¡before ¡the ¡ client ¡requests ¡them ¡ – Server ¡knows ¡what ¡the ¡client ¡will ¡ask ¡in ¡the ¡future ¡ ¡
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 ¡
Outline ¡ • History ¡ • HTTP/2 ¡Background ¡ ¡ • What, ¡Why ¡and ¡How? ¡ ¡ • HTTP/2 ¡AdopMon ¡ ¡ • HTTP/2 ¡Content ¡Analysis ¡ • HTTP/2 ¡Performance ¡Analysis ¡ ¡
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/ ¡
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)? ¡ ¡
How? ¡ ¡
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” ¡
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) ¡ ¡ ¡
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) ¡ ¡
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
Explore More Topics
Stay informed with curated content and fresh updates.