• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
OPTIMERA STHLM! Daniel Stenberg
 

OPTIMERA STHLM! Daniel Stenberg

on

  • 2,059 views

 

Statistics

Views

Total Views
2,059
Views on SlideShare
1,187
Embed Views
872

Actions

Likes
0
Downloads
8
Comments
0

4 Embeds 872

http://daniel.haxx.se 834
http://www.slideshare.net 34
http://translate.googleusercontent.com 3
http://www.advogato.org 1

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    OPTIMERA STHLM! Daniel Stenberg OPTIMERA STHLM! Daniel Stenberg Presentation Transcript

    • Mer data på kortare tid, tack! Daniel Stenberg
    • Daniel Stenberg Haxx och Fossgruppen curl libssh2 IETF http://daniel.haxx.se/ Daniel Stenberg 31:a maj 2010 2
    • Agenda Transport API Framtid Daniel Stenberg 31:a maj 2010 3
    • Protokoll-lager Innehåll som HTML och annat Application Transport Internet Link Daniel Stenberg 31:a maj 2010 4
    • Link- och Internet-lagren Bild från www.useit.com 50 % mer bandbredd varje år Daniel Stenberg 31:a maj 2010 5
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • HTTP i handhållet ● Wifi ● GSM/3g ● High latency, low bandwidth Daniel Stenberg 31:a maj 2010 20
    • API ● Hur man gör saker har betydelse Daniel Stenberg 31:a maj 2010 21
    • 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
    • 10000 koppel ändrar reglerna ● select och poll blir exponentiellt sämre med antalet koppel Daniel Stenberg 31:a maj 2010 23
    • 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
    • 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
    • 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
    • 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
    • Framtiden ● WebSockets ● SPDY ● SCTP ● MPTCP ● ... Daniel Stenberg 31:a maj 2010 28
    • 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
    • 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
    • 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
    • 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
    • MPTCP Daniel Stenberg 31:a maj 2010 33
    • MPTCP ett koppel Daniel Stenberg 31:a maj 2010 34
    • MPTCP två koppel Daniel Stenberg 31:a maj 2010 35
    • 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