@thisNatasha Solving HTTP Problems With Code and Protocols NATASHA ROONEY
@thisNatasha Web 7. Application Data HTTP / IMAP HTTP 6. Data Presentation , SSL / TLS Encryption 5. Session and connection - management TLS 4. Transport of packets and TCP / UDP streams 3. Routing and delivery of IP / IPSec TCP datagrams on the Network 2. Local Data Connection Ethernet 1. Physical data connection CAT5 IP (cables)
@thisNatasha Some fundamental limitations
@thisNatasha 300,000,000 m/s
@thisNatasha 300,000,000 m/s Speed of Light
300km, 1ms @thisNatasha
10ms @thisNatasha
10ms @thisNatasha 5G
@thisNatasha Only one way! And as the crow flies...
@thisNatasha @thisNatasha Hops
Not good enough! @thisNatasha
CDNs, Edge @thisNatasha
@thisNatasha Mobile Network (not wifi) The Internet
@thisNatasha Amount of data
@thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha @thisNatasha Speed & Distance Amount of Data Capped by Speed of Light >100 objects per site 800k to 2.5mb data >50 resources on same domain
@thisNatasha RTs are Evil Mostly because of physics. Not much you can do about that.
@thisNatasha HTTP/1
@thisNatasha HTTP/1 HTTP/1 Request TLS TLS TCP TCP IP
@thisNatasha HTTP/1 HTTP/1 Request Response TLS TLS TCP TCP IP
@thisNatasha HTTP/1 HTTP/1 Request Response TLS TLS Request TCP TCP IP
@thisNatasha
@thisNatasha
Urgh... @thisNatasha
@thisNatasha @thisNatasha Spriting
@thisNatasha @thisNatasha Inlining
@thisNatasha
@thisNatasha
@thisNatasha Image source: @jungkees
@thisNatasha Pipelining
@thisNatasha Home Supermarket Roads
@thisNatasha Home Supermarket Roads
@thisNatasha HTTP/1 HTTP/1 TCP Setup TLS TLS TLS Setup TCP TCP HTTP Request/Response IP
@thisNatasha HTTP/2
@thisNatasha SPDY
@thisNatasha Home Supermarket Roads
@thisNatasha Home Supermarket Roads
@thisNatasha @thisNatasha 2009 Header Compression Parallel Connections SPDY Multiplexing Priority Marking A Protocol by Google Server Push TLS (to work)
@thisNatasha @thisNatasha SPDY Header Compression A Protocol by Google
@thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha HTTP/2
@thisNatasha “Idea was to maintain HTTP semantics but change how it is transported.” Daniel Stenberg https://daniel.haxx.se/blog/
@thisNatasha Home Supermarket Roads
@thisNatasha Home Supermarket Roads
@thisNatasha HTTP/1 HTTP/1 Request Request TLS TLS Request Response TCP TCP IP
@thisNatasha @thisNatasha Binary Header Compression HTTP2 Multiplexing Server Push A Protocol by IETF (SDPY base) TLS...
@thisNatasha @thisNatasha HTTP2 A Protocol by IETF (SDPY base)
@thisNatasha
@thisNatasha @thisNatasha 35% Requests 70% HTTPS Connections Stats 13% Top 1,000,000 Sites 29% Top 1000 Sites Gimme gimme “90% your site”
@thisNatasha 2% packet loss HTTP1 is better.
@thisNatasha Head of line blocking
@thisNatasha Home Supermarket Roads
@thisNatasha Home Supermarket Roads
Not good enough! @thisNatasha Home Supermarket Roads
Not good enough! @thisNatasha Home Supermarket Roads
@thisNatasha TCP issue (Can happen on any protocol with in-order delivery)
@thisNatasha QUIC
@thisNatasha “Idea was to maintain HTTP semantics but change how it is transported.” Daniel Stenberg https://daniel.haxx.se/blog/
TCP @thisNatasha Home Supermarket Roads
Transport Layer @thisNatasha @thisNatasha TCP UDP Suffers from Can work...with help. Head of Line Blocking
@thisNatasha “We want QUIC to work on today’s internet” Jana Iyengar QUIC Editor, Google
@thisNatasha Ossification
@thisNatasha Why TCP or UDP only?
@thisNatasha Image source: http://itpro.nikkeibp.co.jp/
@thisNatasha Application HTTP/2 QUIC TLS 1.2+ Google Crypto Congestion Control TCP UDP IP
@thisNatasha Application HTTP/2 QUIC TLS 1.2+ Google Crypto Congestion Control TCP UDP IP
@thisNatasha @thisNatasha QUIC Goo A Protocol by Google
@thisNatasha HTTP over QUIC HTTP/2 QUIC TLS 1.2+ TLS 1.3 TCP UDP IP
@thisNatasha “A "stream" is an independent, bidirectional sequence of frames exchanged between the client and server within an HTTP/2 connection… A single HTTP/2 connection can contain multiple concurrently open streams…” Hypertext Transfer Protocol Version 2 (HTTP/2), RFC7540
@thisNatasha Image source: High Performance Browser Networking https://hpbn.co/http2/
@thisNatasha HTTP over QUIC HTTP over QUIC QUIC QUIC TLS 1.3 TLS 1.3 UDP UDP IP
@thisNatasha HTTP over QUIC HTTP over QUIC QUIC QUIC TLS 1.3 TLS 1.3 UDP UDP IP
@thisNatasha HTTP over QUIC HTTP over QUIC QUIC QUIC TLS 1.3 TLS 1.3 UDP UDP IP
Head of Line @thisNatasha HTTP over QUIC HTTP over QUIC Blocking! QUIC QUIC TLS 1.3 TLS 1.3 UDP UDP IP
@thisNatasha RTs are Evil Mostly because of physics. Not much you can do about that.
@thisNatasha HTTP over QUIC HTTP over QUIC 0RTT: Setup + Data QUIC QUIC 1RTT: New Crypto Keys TLS 1.3 TLS 1.3 2RTT: If QUIC version negotiation needed UDP UDP IP
Reduce the RTs! @thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha 7% Internet Traffic 35% Google Egress Traffic
@thisNatasha How does this affect me?
@thisNatasha Abstraction Is a computer scientist’s friend / fiend
@thisNatasha n o i t a l o i V r e y a L
@thisNatasha Web 7. Application Data HTTP / IMAP HTTP 6. Data Presentation , SSL / TLS Encryption 5. Session and connection - management TLS 4. Transport of packets and TCP / UDP streams 3. Routing and delivery of IP / IPSec TCP datagrams on the Network 2. Local Data Connection Ethernet 1. Physical data connection CAT5 IP (cables)
@thisNatasha @thisNatasha Manage your resources logically Some things Detect on upgrade header and adapt Measure If you have to do something... Remember Physics!
@thisNatasha @thisNatasha RTTs, Physics, Data SPDY, HTTP2, QUIC Recap Header compression Multiplexing & Streams We made it! Head of Line Blocking Make protocols for today’s internet
@thisNatasha 3
@thisNatasha
@thisNatasha
@thisNatasha
@thisNatasha Thank-you People: Martin Thomson, Mark Nottingham, Jana Iyengar, Mike Bishop, Eric Rescola, Ian Swett
@thisNatasha
@thisNatasha
@thisNatasha
Recommend
More recommend