Mahimahi: ¡ ¡ Accurate ¡Record-‑and-‑Replay ¡for ¡HTTP ¡ Ravi ¡Netravali * , ¡Anirudh ¡Sivaraman * , ¡Somak ¡Das * , ¡Ameesh ¡ Goyal * , ¡Keith ¡Winstein † , ¡James ¡Mickens ‡ , ¡and ¡Hari ¡Balakrishnan * ¡ ¡ * MIT ¡CSAIL, ¡ † Stanford ¡University, ¡ ‡ Harvard ¡University ¡
HTTP ¡is ¡Everywhere ¡ IniNally ¡developed ¡for ¡web ¡browsing ¡(browsers) ¡ Instant ¡messaging ¡ Video ¡streaming ¡ Mobile ¡applica7ons ¡
HTTP ¡Performance ¡MaTers ¡ • HTTP ¡Client ¡Apps ¡ updated ¡frequently ¡ ¡ ¡ Browsers ¡built ¡every ¡6 ¡weeks ¡ Mobile ¡apps ¡updated ¡monthly ¡ ¡ • New ¡Mul7plexing ¡Protocols : ¡ HTTP/2.0, ¡SPDY, ¡QUIC ¡ ¡ • Modifica7ons ¡to ¡HTTP : ¡Pipelining, ¡Persistent ¡ConnecNons ¡ ¡ • New ¡Conges7on ¡Control : ¡ TCP ¡Fast ¡Open, ¡IW10, ¡PRECONNECT ¡
Problem ¡ ¡ ¡Difficult ¡to ¡evaluate ¡changes ¡in ¡controlled ¡seangs ¡ Current ¡Approaches ¡ Shortcomings ¡ • Not ¡scalable ¡ Test ¡with ¡Live ¡Users ¡ • Difficult ¡in ¡early ¡development ¡ • Hard ¡to ¡understand ¡ why ¡ Record-‑and-‑Replay ¡Tools ¡ • Not ¡accurate ¡ • No ¡isolaNon ¡ • Google’s ¡web-‑page-‑replay ¡ ¡ • Telerik’s ¡Fiddler ¡ browser1 ¡ HTTP ¡ ¡ Proxy ¡ browser2 ¡
Mahimahi: ¡Accurate ¡Record-‑and-‑ Replay ¡for ¡HTTP ¡ 3 ¡Goals ¡ ¡ – Accuracy ¡ MulN-‑server ¡emulaNon ¡ ¡ – Isola7on ¡ Use ¡private ¡network ¡namespaces ¡ ¡ ¡ ¡ ¡ – Composability ¡ Structure ¡components ¡as ¡UNIX ¡shells ¡ ¡ ¡ ¡
Rest ¡of ¡This ¡Talk ¡ • Mahimahi ¡ – Design ¡ – Goals ¡ • Case ¡Studies ¡ – EvaluaNng ¡Web ¡mulNplexing ¡protocols ¡ • SPDY ¡1.15-‑4.93x ¡worse ¡than ¡OpNmal ¡ ¡ – Improving ¡Web ¡performance ¡with ¡Cumulus ¡ • Cumulus ¡outperforms ¡SPDY ¡by ¡1.07-‑3.60x ¡
Design ¡ ¡ 5 ¡main ¡tools ¡ ¡ DelayShell ¡ RecordShell ¡ Record ¡and ¡ Network ¡ ¡ ¡ LinkShell ¡ Replay ¡ EmulaNon ¡ ReplayShell ¡ ¡ LossShell ¡ ¡ ¡ ¡ Ferry ¡ Ferry ¡can ¡implement ¡arbitrary ¡ egress-‑1 ¡ policies ¡to ¡handle ¡packets: ¡ ingress-‑1 ¡ Browser ¡ • Record ¡traffic ¡ … ¡ … ¡ • Serve ¡recorded ¡content ¡ • Delay ¡packets ¡ egress-‑n ¡ ingress-‑n ¡ ¡ private ¡network ¡namespace ¡ ¡
ReplayShell ¡ Replay ¡recorded ¡traffic ¡locally ¡ ¡ • Mirror ¡server ¡side ¡of ¡ Apache ¡ app ¡locally ¡ Server ¡ egress-‑1 ¡ ingress-‑1 ¡ – Preserve ¡recorded ¡ Browser ¡ … … server ¡distribuNon ¡ Apache ¡ Server ¡ – Transparent ¡ egress-‑n ¡ ingress-‑n ¡ Apache ¡ Server ¡ private ¡network ¡namespace ¡ ¡
DelayShell/LinkShell ¡ Emulate ¡fixed ¡propagaNon ¡delay ¡or ¡fixed/variable-‑rate ¡links ¡ ¡ • DelayShell ¡(min ¡RTT) ¡ – Release ¡packets ¡ Uplink ¡ aker ¡specified ¡delay ¡ Queue ¡ egress-‑1 ¡ ingress-‑1 ¡ ¡ Browser ¡ Internet ¡ … … • LinkShell ¡(link ¡rates) ¡ Downlink ¡ – Release ¡packets ¡ Queue ¡ based ¡on ¡traces ¡ egress-‑n ¡ ingress-‑n ¡ – Live ¡graphing ¡of ¡ network ¡usage/ queuing ¡delay ¡ private ¡network ¡namespace ¡ ¡
Accuracy ¡ More ¡accurate ¡ ReplayShell ¡correctly ¡ measurements ¡ emulates ¡mulN-‑server ¡apps ¡ ¡ 1 ReplayShell, ¡mulN-‑server: ¡12.4% ¡ ¡ 0.75 Cumulative Proportion ¡ web-‑page-‑replay: ¡36.7% ¡ 0.5 0.25 ReplayShell, multi-server web-page-replay 0 0 30 60 90 120 150 Absolute Value of Relative Percent Error
IsolaNon ¡ Each ¡shell ¡creates ¡a ¡new ¡network ¡namespace ¡ ¡ Mul7ple ¡instances ¡in ¡parallel ¡ Low ¡overhead ¡ 1 Browser ¡3 ¡ 0.75 DelayShell ¡50 ¡ms ¡ Cumulative Proportion DelayShell: ¡0.33% ¡ Browser ¡2 ¡ X ¡ ¡+ ¡10 ¡ms ¡ 0.5 LinkShell: ¡0.31% ¡ DelayShell ¡10 ¡ms ¡ 0.25 Browser ¡1 ¡ DelayShell 0 ms LinkShell 1000 Mbits/s 0 0 1 2 3 RTT ¡= ¡X ¡ User ¡Computer ¡ Relative Percent Error milliseconds ¡
Composability ¡ Each ¡tool ¡is ¡structured ¡as ¡a ¡UNIX ¡shell ¡ – Unmodified ¡apps ¡can ¡run ¡within ¡each ¡shell ¡ – Shells ¡can ¡be ¡arbitrarily ¡nested ¡within ¡one ¡another ¡
Case ¡Studies ¡ • EvaluaNng ¡web ¡mulNplexing ¡protocols ¡ – SPDY ¡ • MulNplexed ¡streams ¡ • Header ¡compression ¡ • Server ¡push ¡ – QUIC ¡ • MulNplexing ¡without ¡head ¡of ¡line ¡blocking ¡ • 0-‑1 ¡round ¡trips ¡to ¡establish ¡secure ¡connecNon ¡(uses ¡UDP) ¡ ¡ • Reducing ¡page ¡load ¡Nmes ¡with ¡Cumulus ¡
MulNplexing ¡Protocol ¡Setup ¡ • HTTP ¡ à ¡default ¡Apache ¡servers ¡ ¡ • SPDY ¡ à ¡Apache ¡servers ¡+ ¡mod_spdy ¡module ¡ ¡ • QUIC ¡ à ¡replace ¡Apache ¡with ¡QUIC ¡test ¡servers ¡ ¡ • OpNmal ¡ minimumRTT ¡+ ¡(siteSize/linkRate) ¡+ ¡browserTime ¡ ¡ Time ¡between ¡first ¡ Time ¡to ¡transfer ¡all ¡ Time ¡for ¡browser ¡to ¡ client ¡request ¡and ¡first ¡ bytes ¡for ¡web ¡page ¡over ¡ process ¡all ¡responses ¡ byte ¡of ¡response ¡ link ¡with ¡rate ¡‘linkRate’ ¡ and ¡render ¡page ¡
EvaluaNng ¡MulNplexing ¡Protocols ¡ 25 Mbits/s link with minimum RTT of 30 ms 25 Mbits/s link with minimum RTT of 120 ms 25 Mbits/s link with minimum RTT of 300 ms 1 1 1 0.75 0.75 0.75 Cumulative Proportion Cumulative Proportion Cumulative Proportion 0.5 0.5 0.5 SPDY: 1.15x Optimal SPDY: 2.39x Optimal SPDY: 4.93x Optimal 0.25 0.25 0.25 Optimal Optimal Optimal SPDY SPDY SPDY QUIC-toy QUIC-toy QUIC-toy HTTP/1.1 HTTP/1.1 HTTP/1.1 0 0 0 0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25 Page Load Time (s) Page Load Time (s) Page Load Time (s) MulNplexing ¡protocols ¡are ¡subopNmal ¡ – SubopNmality ¡increases ¡as ¡RTT ¡increases ¡
Understanding ¡SubopNmality ¡ HTTP ¡Request ¡ HTTP ¡Response ¡ Web ¡ Servers ¡ Client ¡ Browser ¡ Long-‑delay ¡Link ¡ HTTP ¡requests ¡become ¡serialized ¡ à à ¡link ¡not ¡fully ¡u7lized ¡
Cumulus ¡ Transparent ¡HTTP ¡ caching ¡proxy ¡running ¡ Reduces ¡the ¡effec7ve ¡RTT ¡ on ¡user’s ¡machine ¡ Local ¡ Implemented ¡ Proxy ¡ HTTP ¡ Using ¡RecordShell ¡ Request ¡ Headless ¡browser ¡ running ¡on ¡well-‑ provisioned ¡server ¡ Bulk ¡ Response ¡ Remote ¡ Web ¡ Proxy ¡ Servers ¡ Client ¡ Browser ¡ Short-‑delay ¡ Long-‑delay ¡Link ¡ Link ¡
EvaluaNng ¡Cumulus ¡ 14 Mbits/s link 5 Cumulus SPDY QUIC-toy 4 Performance ¡stays ¡close ¡to ¡ HTTP/1.1 Ratio with Optimal OpNmal ¡as ¡RTTs ¡increase ¡ 3 Cumulus ¡incurs ¡only ¡one ¡ • RTT ¡on ¡the ¡long-‑delay ¡link ¡ 2 ¡(reduces ¡effecNve ¡RTT) ¡ 1 0 0 60 120 180 240 300 Minimum RTT (ms)
Other ¡Uses ¡ • Measuring ¡speed ¡index ¡ ¡ • EvaluaNng ¡mobile ¡apps ¡over ¡wireless ¡networks ¡ ¡ – Shuo ¡Deng ¡ ¡ • EmulaNng ¡mobile ¡mulN-‑homing ¡(MPTCP) ¡ – Shuo ¡Deng ¡ • Replaying ¡streamed ¡video ¡ – Devasia ¡Manuel, ¡Victor ¡Vasiliev, ¡Saunders ¡Hayes ¡ ¡ ¡
Conclusion ¡ • Mahimahi ¡records ¡HTTP ¡traffic ¡and ¡replays ¡it ¡over ¡emulated ¡networks ¡ • Accuracy -‑ ¡mulN-‑server ¡emulaNon ¡ • Isola7on -‑ ¡ private ¡network ¡namespaces ¡ • Composability -‑ ¡UNIX ¡shells ¡ • Case ¡studies ¡using ¡Mahimahi ¡ • Web ¡mulNplexing ¡protocols ¡are ¡subopNmal ¡ • Cumulus ¡reduces ¡effecNve ¡RTT ¡to ¡lower ¡page ¡load ¡Nmes ¡ ¡ hOp://mahimahi.mit.edu ¡ ¡mahimahi@mit.edu ¡ ¡
Recommend
More recommend