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.

OPTIMERA STHLM! Daniel Stenberg

2,026 views

Published on

Published in: Technology, Self Improvement
  • Be the first to comment

  • Be the first to like this

OPTIMERA STHLM! Daniel Stenberg

  1. 1. Mer data på kortare tid, tack! Daniel Stenberg
  2. 2. Daniel Stenberg Haxx och Fossgruppen curl libssh2 IETF http://daniel.haxx.se/ Daniel Stenberg 31:a maj 2010 2
  3. 3. Agenda Transport API Framtid Daniel Stenberg 31:a maj 2010 3
  4. 4. Protokoll-lager Innehåll som HTML och annat Application Transport Internet Link Daniel Stenberg 31:a maj 2010 4
  5. 5. Link- och Internet-lagren Bild från www.useit.com 50 % mer bandbredd varje år Daniel Stenberg 31:a maj 2010 5
  6. 6. 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: 40-50 ms ● Kabel: 60 ms ● Uppringt modem: 120-150 ms ● (MTUs...) Daniel Stenberg 31:a maj 2010 6
  7. 7. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 7
  8. 8. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 8
  9. 9. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 9
  10. 10. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 10
  11. 11. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 11
  12. 12. TCP Transport: fördröjningar ● DNS resolve Undvik, cacha ● Handshake – 3 way Pool, återanvänd ● Nagle – vänta för att fylla på mer Kan stängas av ● Slow start Var medveten ● Delayed ACKs Nä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 31:a maj 2010 12
  13. 13. 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 31:a maj 2010 13
  14. 14. 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 31:a maj 2010 14
  15. 15. 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 31:a maj 2010 15
  16. 16. 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 31:a maj 2010 16
  17. 17. 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 31:a maj 2010 17
  18. 18. 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 31:a maj 2010 18
  19. 19. HTTP i webbläsare ● Många koppel. Var 2. Numera 6 eller 8. Snart... ● Ingen Pipelining ● AJAX ● “long polling” Daniel Stenberg 31:a maj 2010 19
  20. 20. HTTP i handhållet ● Wifi ● GSM/3g ● High latency, low bandwidth Daniel Stenberg 31:a maj 2010 20
  21. 21. API ● Hur man gör saker har betydelse Daniel Stenberg 31:a maj 2010 21
  22. 22. 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 31:a maj 2010 22
  23. 23. 10000 koppel ändrar reglerna ● select och poll blir exponentiellt sämre med antalet koppel Daniel Stenberg 31:a maj 2010 23
  24. 24. event-based ● Agera vid händelse på socketen det händer på ● Inte leta, veta Bild från http://www.monkey.org/~provos/libevent/ Bild från http://developers.sun.com Daniel Stenberg 31:a maj 2010 24
  25. 25. event-klient Function call_on_event { Hantera trafik på socketen } event_wait( &call_on_event) Libevent, libev, epoll, kqueue, Daniel Stenberg 31:a maj 2010 25
  26. 26. 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 31:a maj 2010 26
  27. 27. libcurl ● DNS cache ● Återanvänder TCP-koppel ● API: select-stil ● API: event-stil, upp tille mycket snabbare ● C10K, upp till C70K Daniel Stenberg 31:a maj 2010 27
  28. 28. Framtiden ● WebSockets ● SPDY ● SCTP ● MPTCP ● ... Daniel Stenberg 31:a maj 2010 28
  29. 29. 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 31:a maj 2010 29
  30. 30. 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:a maj 2010 30
  31. 31. 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 31:a maj 2010 31
  32. 32. 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 31:a maj 2010 32
  33. 33. MPTCP Daniel Stenberg 31:a maj 2010 33
  34. 34. MPTCP ett koppel Daniel Stenberg 31:a maj 2010 34
  35. 35. MPTCP två koppel Daniel Stenberg 31:a maj 2010 35
  36. 36. 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 Daniel Stenberg 31:a maj 2010 36

×