OPTIMERA STHLM! Daniel Stenberg

Post on 21-Dec-2014

1.764 views 2 download

description

 

Transcript of OPTIMERA STHLM! Daniel Stenberg

Daniel Stenberg

Mer data på kortare tid, tack!

2Daniel Stenberg 31:a maj 2010

Daniel Stenberg

Haxx och Fossgruppencurl

libssh2IETF

http://daniel.haxx.se/

3Daniel Stenberg 31:a maj 2010

Agenda

Transport

Framtid

API

4Daniel Stenberg 31:a maj 2010

Protokoll-lager

Link

Internet

Transport

Application

Innehåll som HTML och annat

5Daniel Stenberg 31:a maj 2010

Link- och Internet-lagren

Bild från www.useit.com

50 % mer bandbredd varje år

6Daniel Stenberg 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: 40-50 ms● Kabel: 60 ms● Uppringt modem: 120-150 ms● (MTUs...)

7Daniel Stenberg 31:a maj 2010

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

8Daniel Stenberg 31:a maj 2010

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

9Daniel Stenberg 31:a maj 2010

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

10Daniel Stenberg 31:a maj 2010

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

11Daniel Stenberg 31:a maj 2010

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

12Daniel Stenberg 31:a maj 2010

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

13Daniel Stenberg 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

14Daniel Stenberg 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

15Daniel Stenberg 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

16Daniel Stenberg 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

17Daniel Stenberg 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

18Daniel Stenberg 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

19Daniel Stenberg 31:a maj 2010

HTTP i webbläsare

● Många koppel. Var 2. Numera 6 eller 8. Snart...● Ingen Pipelining● AJAX● “long polling”

20Daniel Stenberg 31:a maj 2010

HTTP i handhållet

● Wifi● GSM/3g● High latency, low bandwidth

21Daniel Stenberg 31:a maj 2010

API

●Hur man gör saker har betydelse

22Daniel Stenberg 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()

23Daniel Stenberg 31:a maj 2010

10000 koppel ändrar reglerna

● select och poll blir exponentiellt sämre med antalet koppel

24Daniel Stenberg 31:a maj 2010

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

25Daniel Stenberg 31:a maj 2010

event-klient

Function call_on_event {

Hantera trafik på socketen

}

event_wait( &call_on_event)

Libevent, libev, epoll, kqueue,

26Daniel Stenberg 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

27Daniel Stenberg 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

28Daniel Stenberg 31:a maj 2010

Framtiden

● WebSockets● SPDY● SCTP● MPTCP● ...

29Daniel Stenberg 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

30Daniel Stenberg 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

31Daniel Stenberg 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

32Daniel Stenberg 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

33Daniel Stenberg 31:a maj 2010

MPTCP

34Daniel Stenberg 31:a maj 2010

MPTCP ett koppel

35Daniel Stenberg 31:a maj 2010

MPTCP två koppel

36Daniel Stenberg 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