OPTIMERA STHLM! Daniel Stenberg

1,988 views

Published on

Published in: Technology, Self Improvement
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,988
On SlideShare
0
From Embeds
0
Number of Embeds
1,090
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×