optimera sthlm! daniel stenberg

36
Daniel Stenberg Mer data på kortare tid, tack!

Upload: se-stiftelsen-foer-internetinfrastruktur

Post on 21-Dec-2014

1.768 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: OPTIMERA STHLM! Daniel Stenberg

Daniel Stenberg

Mer data på kortare tid, tack!

Page 2: OPTIMERA STHLM! Daniel Stenberg

2Daniel Stenberg 31:a maj 2010

Daniel Stenberg

Haxx och Fossgruppencurl

libssh2IETF

http://daniel.haxx.se/

Page 3: OPTIMERA STHLM! Daniel Stenberg

3Daniel Stenberg 31:a maj 2010

Agenda

Transport

Framtid

API

Page 4: OPTIMERA STHLM! Daniel Stenberg

4Daniel Stenberg 31:a maj 2010

Protokoll-lager

Link

Internet

Transport

Application

Innehåll som HTML och annat

Page 5: OPTIMERA STHLM! Daniel Stenberg

5Daniel Stenberg 31:a maj 2010

Link- och Internet-lagren

Bild från www.useit.com

50 % mer bandbredd varje år

Page 6: OPTIMERA STHLM! Daniel Stenberg

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...)

Page 7: OPTIMERA STHLM! Daniel Stenberg

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

Page 8: OPTIMERA STHLM! Daniel Stenberg

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

Page 9: OPTIMERA STHLM! Daniel Stenberg

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

Page 10: OPTIMERA STHLM! Daniel Stenberg

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

Page 11: OPTIMERA STHLM! Daniel Stenberg

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

Page 12: OPTIMERA STHLM! Daniel Stenberg

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

Page 13: OPTIMERA STHLM! Daniel Stenberg

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

Page 14: OPTIMERA STHLM! Daniel Stenberg

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

Page 15: OPTIMERA STHLM! Daniel Stenberg

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

Page 16: OPTIMERA STHLM! Daniel Stenberg

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

Page 17: OPTIMERA STHLM! Daniel Stenberg

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

Page 18: OPTIMERA STHLM! Daniel Stenberg

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

Page 19: OPTIMERA STHLM! Daniel Stenberg

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”

Page 20: OPTIMERA STHLM! Daniel Stenberg

20Daniel Stenberg 31:a maj 2010

HTTP i handhållet

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

Page 21: OPTIMERA STHLM! Daniel Stenberg

21Daniel Stenberg 31:a maj 2010

API

●Hur man gör saker har betydelse

Page 22: OPTIMERA STHLM! Daniel Stenberg

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()

Page 23: OPTIMERA STHLM! Daniel Stenberg

23Daniel Stenberg 31:a maj 2010

10000 koppel ändrar reglerna

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

Page 24: OPTIMERA STHLM! Daniel Stenberg

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

Page 25: OPTIMERA STHLM! Daniel Stenberg

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,

Page 26: OPTIMERA STHLM! Daniel Stenberg

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

Page 27: OPTIMERA STHLM! Daniel Stenberg

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

Page 28: OPTIMERA STHLM! Daniel Stenberg

28Daniel Stenberg 31:a maj 2010

Framtiden

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

Page 29: OPTIMERA STHLM! Daniel Stenberg

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

Page 30: OPTIMERA STHLM! Daniel Stenberg

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

Page 31: OPTIMERA STHLM! Daniel Stenberg

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

Page 32: OPTIMERA STHLM! Daniel Stenberg

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

Page 33: OPTIMERA STHLM! Daniel Stenberg

33Daniel Stenberg 31:a maj 2010

MPTCP

Page 34: OPTIMERA STHLM! Daniel Stenberg

34Daniel Stenberg 31:a maj 2010

MPTCP ett koppel

Page 35: OPTIMERA STHLM! Daniel Stenberg

35Daniel Stenberg 31:a maj 2010

MPTCP två koppel

Page 36: OPTIMERA STHLM! Daniel Stenberg

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