Daniel Stenberg Mer data på kortare tid, tack!
Daniel Stenberg 2 31:a maj 2010 Daniel Stenberg Haxx och Fossgruppen curl libssh2 IETF
Daniel Stenberg 3 31:a maj 2010 Agenda Transport Framtid API
Daniel Stenberg 4 31:a maj 2010 Protokoll-lager Link Internet Transport Application Innehåll som HTML och annat
Daniel Stenberg 5 31:a maj 2010 Link- och Internet-lagren Bild från 50 % mer bandbredd varje år
Daniel Stenberg 6 31:a maj 2010 Link och Internet, RTT ● RTT, Round Trip (delay) Time står still eller backar ● Genomsnitt till Google inom USA: 90 ms, i världen 100 ms ● Telefoner GSM/3G upp till 6000 ms ● DSL: ms ● Kabel: 60 ms ● Uppringt modem: ms ● (MTUs...)
Daniel Stenberg 7 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 8 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 9 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 10 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 11 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 12 31:a maj 2010 TCP Transport: fördröjningar ● DNS resolveUndvik, cacha ● Handshake – 3 wayPool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow startVar medveten ● Delayed ACKsNär 2 är bättre än 1 Att optimera för mindre fördröjningar och kortare RTT kan leda till sämre throughput och bandbredd
Daniel Stenberg 13 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 14 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 15 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 16 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 17 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 18 31:a maj 2010 HTTP ● Ovanpå TCP så... ● Request size, pratigt protokoll ● Cookie sizes, cookies skickas alltid om de matchar ● Cache friendliness, skicka inte mer HTTP än nödvändigt ● Pipelining, besegra RTT men... ● Compression
Daniel Stenberg 19 31:a maj 2010 HTTP i webbläsare ● Många koppel. Var 2. Numera 6 eller 8. Snart... ● Ingen Pipelining ● AJAX ● “long polling”
Daniel Stenberg 20 31:a maj 2010 HTTP i handhållet ● Wifi ● GSM/3g ● High latency, low bandwidth
Daniel Stenberg 21 31:a maj 2010 API ● Hur man gör saker har betydelse
Daniel Stenberg 22 31:a maj 2010 Typisk TCP-klient Så länge klienten lever { vänta på socket-händelse Kolla vilken socket som det hände på Hantera socketen } Traditionellt med select() eller poll()
Daniel Stenberg 23 31:a maj koppel ändrar reglerna ● select och poll blir exponentiellt sämre med antalet koppel
Daniel Stenberg 24 31:a maj 2010 event-based ● Agera vid händelse på socketen det händer på ● Inte leta, veta Bild från Bild från
Daniel Stenberg 25 31:a maj 2010 event-klient Function call_on_event { Hantera trafik på socketen } event_wait( &call_on_event) Libevent, libev, epoll, kqueue,
Daniel Stenberg 26 31:a maj 2010 Exempel ● libcurl... ● är open source ● leds av Daniel ● kan FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3 och RTSP just nu ● det främsta dataöverförings-libraryt helt enkelt
Daniel Stenberg 27 31:a maj 2010 libcurl ● DNS cache ● Återanvänder TCP-koppel ● API: select-stil ● API: event-stil, upp tille mycket snabbare ● C10K, upp till C70K
Daniel Stenberg 28 31:a maj 2010 Framtiden ● WebSockets ● SPDY ● SCTP ● MPTCP ●...
Daniel Stenberg 29 31:a maj 2010 Framtid 1: WebSockets ● WHATWG startade ● IETF hybi working group ● Browser till server ● Lösning på HTTP long-polling problemet ● TCP-replacement över TCP ● Javascript-centric (kan inte skicka binärt!) ● HTTP upgrade ● Debatteras ivrigt just nu
Daniel Stenberg 30 31:a maj 2010 Framtid 2: SPDY ● Google ● HTTP replacement ● Multiplexade strömmar över ett koppel ● Pririterade strömmar ● Server-initierade strömmar ● Chrome har implementation ● Experiementellt
Daniel Stenberg 31 31:a maj 2010 Framtid 3: SCTP ● IETF (RFC 4960, 2007) ● Ersätter TCP som transport ● Meddelanden, inte byte-strömmar ● Flera samtidiga logiska meddelande-strömmar ● HTTP över SCTP ● Över UDP? ● Sannolikhet oklar
Daniel Stenberg 32 31:a maj 2010 Framtid 4: MPTCP ● Multi-Path TCP ● IETF ● Flera vägar mellan source och destination ● Kompatibelt API för applikationer ● “Snällt mot nätet” ● Som gjort för saker med flera interface ● Sannolikhet: trolig
Daniel Stenberg 33 31:a maj 2010 MPTCP
Daniel Stenberg 34 31:a maj 2010 MPTCP ett koppel
Daniel Stenberg 35 31:a maj 2010 MPTCP två koppel
Daniel Stenberg 36 31:a maj 2010 Summering ● RTT står still fast bandbredd ökar ● TCP har fördröjningar ● HTTP kör på TCP ● Använd rätt API:er ● WebSockets, SPDY, SCTP och MPTCP