Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PAC 2019 virtual Scott Moore

559 views

Published on

Performance testing http3 - quic- final

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

PAC 2019 virtual Scott Moore

  1. 1. Performance Testing HTTP/3 (QUIC) by SCOTT MOORE
  2. 2. Agenda •HTTP/3 (QUIC) Timeline •HTTP/3 Technical Breakdown •HTTP/3 Challenges •Demo •Test Results and Findings •Q&A 2
  3. 3. HTTP/3 TIMELINE
  4. 4. HTTP/2 AdptionRate Source: HTTP/2 Adoption Dashboard (maintained by Telefónica Research, Case Western Reserve University, and Carnegie Mellon University
  5. 5. HTTP/3 Timeline • 2014 - Google deploys HTTP/2 over UDP. Calls it “QUIC”. • November 2016 - Google takes QUIC to IETF. QUIC working group forms. Turned into a Transport protocol. • June 2018 - Google implements custom QUIC. • November 2018 • Litespeed and Facebook test first functional HTTP/3 web server • IETF changes the name for HTTP-over-QUIC to be HTTP/3 • April 2019 - Cloudflare releases Warp VPN based on QUIC draft • July 2019 - HTTP/3 Draft expires at IETF • August 2019 - Chromium fork released. Initial support for end-to-end iQUIC + HTTP/3 • September 2019 - cURL, NGINX, Google Chrome show early HTTP/3 support 6
  6. 6. HTTP/2 Connection Versus HTTP 1.1 7 Image Source: Cloudflare
  7. 7. HTTP/3 ConnectionVersus HTTP/2 8 Image Source: Medium
  8. 8. WAIT.... Wasn't HTTP/2 multiplexing supposed to solve Head of Line Blocking? HTTP level = YES. TCP level = NO. Latency and Dropped Packets Expose This Problem. QUIC is an attempt to fix it all once and for all...
  9. 9. HTTP/3 Stack 10 Image Source: Kinsta TLS 1.3 1.2+
  10. 10. QLOG 11 • Log for QUIC and HTTP/3 events • JSON Format • Allows for debugging and visualization for QUIC streams • Still being stanndardized Image Source: Robin Marx
  11. 11. HTTP/3 Challenges
  12. 12. Challenges To Testing •Lack of Support •Draft code still has debugging (slower) •Few Web Server Choices: •LiteSpeed Enterprise (-not- OpenLiteSpeed) •Caddy Server (VERY NEW) •Cloudfare does not support it (yet) 13
  13. 13. Challenges forHTTP/3 •+/- 5% QUIC connections fail •CPU Intensive - Requires 2X or more servers •UDP on port 443 is blocked •UDP is not as optimized as TCP •No standard API for QUIC (yet) 14
  14. 14. HTTP/3 Tools “Tools? Where we're going, we don't need tools.” 15
  15. 15. Tools • cURL (after September 11, 2019) • HTTP3 Check (http3check.net) • QLog visualization tool (quicvis.edm.uhasselt.be/#/files) • Browser Dev Tools • Apposite Netropy • Node JS and Puppeteer (??) • Neotys Neoload 16
  16. 16. Current IETF QUIC Implementations •AIOQUIC - Python •lsquic - C - LiteSpeed •ngtcp2 - C - open source effort •QUICHE - RUST - Cloudflare •Quiche - Google (because naming is hard) •mvfst - C++ - Facebook https://github.com/quicwg/base-drafts/wiki/Implementations 17
  17. 17. Demo - Test Results
  18. 18. The Mission • Using a realistic web site, compare: • HTTP 1.1 • HTTP/2 • HTTP/3 (QUIC) • Cloudflare/No Cloudflare • Netropy Proxy Determine: • Is Head of Line Blocking gone? 20 https://loadtesthttp3.com
  19. 19. “I apologizefor the crudityofthis model...” • Set up and configure cloud server instance (Ubuntu 18.04) • Seperate Database (MySQL 8 on AWS RDS service) • Litespeed web server with PHP 7.3 • Wordpress with custom theme • Setup Domain, Email, and Cloudflare DNS/Caching • Set up Network Emulation (Netropy Proxy) • Baseline with GTMetrix, Web Page Test, Chrome DevTools • Run up to 50 virtual users with NeoLoad 21
  20. 20. Chrome Waterfalls 22 HTTP 1.1 - 4.6 sec HTTP 2 - 0.5 sec H2 QUIC - 2.5 sec
  21. 21. Test Results - HTTP 1.1- No Network Emulation 23
  22. 22. Test Results - HTTP 2- No Network Emulation 24
  23. 23. Test Results - QUIC - No Network Emulationor Cloudflare 25
  24. 24. AddNetwork Emulation- LTE 26
  25. 25. AddNetwork Emulation- Satellite 27
  26. 26. Test Results - HTTP 1 -WITH Network Emulation LTE 28
  27. 27. Test Results - HTTP 1 -WITH Network Emulation - Satellite 29
  28. 28. Test Results - HTTP 2- WITH Network Emulation- LTE 30
  29. 29. Test Results - HTTP 2- WITH Network Emulation- Satellite 31
  30. 30. Test Results - QUIC - WITH Network Emulation- LTE 32
  31. 31. Test Results - QUIC - WITH Network Emulation- Satellite 33
  32. 32. Summary • It SEEMS to remove HTTP HOL - but... • Requires more server CPU/Memory • Low Bandwidth situations benefit the most • Will need to be tested as the spec evolves • Test Cases Should include Network Emulation • TCP transition to UPD will be slow • UDP will need to be optimized • Additional protocols will come (i.e. DNS) 34
  33. 33. Who To Follow • Robin Marx - @programmingart • Daniel Stenberg (cURL) - @bagder • Lucas Pardue - @SimmerVigor • Barry Pollard - @tunetheweb • Cloudflare • LiteSpeed • IETF • Scott Moore - @loadtester • Apposite Technologies - @Apposite_Tech 35
  34. 34. References • CURL HTTP/3 library - https://github.com/curl/curl/blob/master/docs/HTTP3.md • AIOQUIC - Python implementation. https://github.com/aiortc/aioquic. • Cloudflare QUIC site: https://cloudflare-quic.com/ • QUIC Working group (IETF): https://quicwg.org/ • QLog visualization tool: https://quicvis.edm.uhasselt.be/#/files • QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations • HTTP/3 Verification Check (from LiteSpeed) - https://http3check.net/ 36
  35. 35. http://scottmoore.consulting help@scottmoore.consulting Questionsand Contact

×