Prijenosni sloj na Internetu Stjepan Groš 1
Sadržaj Bespojna usluga Interneta Napomene za 3. laboratorijsku vježbu Spojna usluga Interneta Upravljanje zakrčivanjem u protokolu TCP 2
Bespojna usluga (1) Bespojna usluga ostvarena protokolom UDP User Datagram Protocol Sve popularniji zbog VoIP-a Tanak sloj funkcionalnosti iznad IP-a Isključivo multipleksiranje između različitih aplikacija APP1 APP2 1200 27000 UDP TCP IP Sučelje 3
Bespojna usluga (2) Zaglavlje paketa UDP 0 15 31 Source Port Length Destination Port Checksum Primjer izlaza naredbe tcpdump # tcpdump -s0 -vni eth0 udp 17:28:27.448103 IP (tos 0x80, ttl 104, id 52097, offset 0, flags [none], proto UDP (17), length 42) 58.24.83.213.17976 > 161.53.65.157.50253: UDP, length 14 Ukupna duljina IP paketa je 42 okteta Izvorište: 58.24.83.213:17976 Odredište: 161.53.65.157:50253 Duljina podataka u UDP paketu je 14 okteta 4
Protokol TFTP Karakteristike TFTP je jednostavan protokol s čekanjem Nema autentifikacije i autorizacije Isključivo slanje i primanje datoteka Upotreba Usmjernici za pohranu konfiguracijskih podataka "Boot-anje" računala preko mreže 5
Primjeri razmjene protokola TFTP C S C S C S RRQ( ime ) WRQ( ime ) RRQ( ime ) DATA(1, 512) ACK(0) ERROR(N) ACK(1) DATA(1, 512) DATA(2, 510) ACK(1) ACK(2) DATA(2, 510) ACK(2) Uspješan prijenos datoteke veličine 1022 okteta na klijenta Uspješan prijenos datoteke veličine 1022 okteta na poslužitelj Pokušaj čitanja nepostojeće datoteke 6
Napomene za implementaciju Retransmisiju obavlja klijent Poslužitelj, ako ne stigne novi zahtijev/potvrda, zaboravlja tog klijenta (oslobađa sve resurse) Poslužitelj nakon obavljenog prijenosa mora nastaviti čekati druge zahtijeve Poslužitelj bi se morao pomaknuti na neki visoki pristup nakon prvog zahtijeva klijenta To se obavlja otvaranjem novog socket-a i zvanjem funkcije bind Dekodiranje prometa naredbom tcpdump Koristiti opciju -T tftp 7
Spojna usluga (1) Spojnu uslugu na Internetu implementira protokol TCP Standardiziran cca. 1981 godine Vrlo složen i dosta proučavan protokol Temeljna specifikacija RFC793 Mnoštvo dodatnih specifikacija Čini glavninu prometa na Internetu! TCP obavlja multipleksiranje na više Pristupi TCP-a i UDP-a su međusobno nezavisni! 8
Spojna usluga (2) TSAP u Internetu čini (IP adresa, pristup) Konekcija je potpuno određena s dva TSAP-a Dvije konekcije na slici APP1 -> Web (IP1, 32100, IP2, 80) APP2 -> Web (IP1, 37100, IP2, 80) Klijent Poslužitelj APP1 APP2 Web 32100 37100 80 TCP IP IP1 IP2 TCP IP Ethernet Ethernet 9
Spojna usluga (3) Korištenje spojne usluge u tri faze Uspostava spoja Prijenos podataka Prekid spoja Vrlo bitan problem (prisutan i u UDP-u) Jedna od aplikacija mora prva pokrenuti uspostavu spoja Kako zna gdje se nalazi odredišna aplikacija!? To je riješeno tako da su poznati pristupi na kojima čekaju aplikacije (well known ports) Datoteka /etc/services 10
TCP PDU TCP PDU se naziva segment Struktura zaglavlja segmenta Služi u svim fazama protokola, zato je složen 0 15 31 Source Port Source Port Sequence Number Acknowledge Number HDR LENGTH U A P R S F Window Checksum Urgent Pointer Options + Padding 11
Uspostava spoja (1) Spoj se uspostavlja razmjenom tri segmenta C IP :C PORT S IP :S PORT CLOSED CLOSED connect() SYN_SENT ESTABLISHED SYN J, MSS MSS C SYN K, ACK J + 1, MSS MSS S LISTEN SYN_RCVD accept() listen() ACK K+1 ESTABLISHED 12
Uspostava spoja (2) Primjer izlaza programa tcpdump IP 127.0.0.1.40711 > 127.0.0.1.20000: S 2273499978:2273499978(0) win 32792 <mss 16396,sackOK,timestamp 30766407 0,nop,wscale 7> IP 127.0.0.1.20000 > 127.0.0.1.40711: S 2284546909:2284546909(0) ack 2273499979 win 32768 <mss 16396,sackOK,timestamp 30766407 30766407,nop,wscale 7> IP 127.0.0.1.40711 > 127.0.0.1.20000:. ack 1 win 257 <nop,nop,timestamp 30766407 30766407> Primjer ispisa naredbe 'netstat -tn' tcp 0 1 127.0.0.1:48134 127.0.0.1:10000 SYN_SENT 13
Uspostava spoja (3) Neuspješna uspostava spoja Nema poslužitelja koji osluškuje C IP :C PORT CLOSED SYN_SENT SYN J, MSS MSS C S IP :S PORT CLOSED RST J CLOSED Primjer u komandnoj liniji # telnet 161.53.65.1 20000 Trying 161.53.65.1... telnet: connect to address 161.53.65.1: Connection refused 14
Prijenos podataka (1) Razdvojena potvrda primitka od dozvole za slanje TCP omogućava dvosmjerni prijenos podataka U primjerima ćemo promatrati isključivo jedan smjer Najčešće od klijenta do poslužitelja C IP :C PORT S IP :S PORT (A, B, C) (E, F, G) SN A, O ACK K, W PRVI KOJI NE SMIJE POSLATI PRVI IDUĆI KOJI SE ŠALJE PRVI POSLANI I NEPOTVRĐENI PRVI PRIHVAĆEN I NEPOTVRĐEN PRVI IDUĆI KOJI SE OČEKUJE PRVI KOJI NEĆE BITI PRIHVAĆEN 15
Prijenos podataka (2) Primjer slanja 800 okteta, ISN=1000, MSS=200, WIN=1400 C IP :C PORT (1001, 1001, 2401) (1001, 1201, 2401) (1001, 1401, 2401) (1001, 1601, 2401) (1001, 1801, 2401) (1601, 1801, 2101) SN 1001, 200 SN 1201, 200 SN 1401, 200 SN 1601, 200 ACK 1601, 500 S IP :S PORT (1001, 1001, 2401) (1001, 1201, 2401) (1001, 1401, 2401) (1001, 1601, 2401) (1601, 1601, 2101) (1601, 1801, 2101) 16
Prijenos podataka (3) Primjer izlaza programa tcpdump Prijenos 4 okteta 17:21:11.811375 IP (tos 0x0, ttl 64, id 51522, offset 0, flags [DF], proto TCP (6), length 56) 127.0.0.1.46383 > 127.0.0.1.10000: P, cksum 0xfe2c (incorrect (-> 0x5626), 1:5(4) ack 1 win 257 <nop,nop,timestamp 24272344 24262449> 17:21:11.811428 IP (tos 0x0, ttl 64, id 18402, offset 0, flags [DF], proto TCP (6), length 52) 127.0.0.1.10000 > 127.0.0.1.46383:., cksum 0xf3f3 (correct), ack 5 win 256 <nop,nop,timestamp 24272345 24272344> 17
Prekid spoja (1) Svaka strana zasebno treba prekinuti spoj C IP :C PORT S IP :S PORT ESTABLISHED FIN_WAIT_1 FIN m ESTABLISHED close() FIN_WAIT_2 ACK k+1 CLOSE_WAIT FIN n LAST_ACK TIME_WAIT ACK n+1 close() CLOSED CLOSED 18
Prekid spoja (2) Moguće je spojiti dva srednja segmenta u jedan Strana koja prva šalje FIN obavlja aktivan prekid spoja Druga strana obavlja pasivan prekid Primjer prometa razmjenjenog na mreži IP 127.0.0.1.40711 > 127.0.0.1.20000: F 1:1(0) ack 1 win 257 <nop,nop,timestamp 31827352 31824981> 19:50:42.866731 IP 127.0.0.1.20000 > 127.0.0.1.40711: F 1:1(0) ack 2 win 256 <nop,nop,timestamp 31827352 31827352> 19:50:42.866762 IP 127.0.0.1.40711 > 127.0.0.1.20000:. ack 2 win 257 <nop,nop,timestamp 31827352 31827352> 19
Vremenska ograničenja (1) TCP koristi nepouzdanu mrežu Za svaki poslani segment nije sigurno da li će biti isporučen Vremenska ograničenja otkrivaju neisporučene segmente Vrlo bitan parametar Premala vrijednost Generira previše nepotrebnog prometa Prevelika vrijednost "Spor" odziv na pogreške Teško ga je precizno odrediti zbog dinamičkih uvijeta na Internetu 20
Vremenska ograničenja (2) Računanje vremenskog ograničenja (RFC2988) RTTVAR = (1 β) * RTTVAR + β * SRTT R' SRTT = (1 α) * SRTT + α * R' RTO = SRTT + max(g, K * RTTVAR) R' je zadnji izmjeren RTT (ne mjeri se za svaki segment) RTO je vremensko ograničenje Inicijalno se RTO postavlja na 3 sekunde Nakon prvog mjerenja je SRTT = R, RTTVAR = R/2 21
Upravljanje potvrdama Za povrde postoje određene preporuke Maksimalna odgoda slanja potvrde je 500ms Potvrdu slati za barem svaki drugi segment (pune veličine) Za slanje podataka preporuka nema Treba pripaziti na Nagleov algoritam Može se isključiti! 22
Sigurnost protokola TCP Napadi SYN flood DoS napad koji onemogućava spajanje legitimnih klijenata RST napad Slijepo slanje RST segmenata kako bi se prekinula TCP veza Vrlo bitan odabir početnog slijednog broja Predvidivost olakšava ometanja veze 23
Problem zakrčenja na Internetu (1) Zakrčenje Zahtijevi na mrežu veći od njenog kapaciteta! Zakrčenje nastaje i prije, kako se približavamo kapacitetu! Veliki problem (i prijetnja) stabilnosti Interneta Internet nije imao predviđene metode zaštite ICMP Source Quench nikada nije zaživio Prvi kolaps uzrokovan zakrčenjem 1986 Pad brzine za nekoliko redova veličine 24
Problem zakrčenja na Internetu (2) Problem je identificiran u protokolu TCP Rad koji je pokrenuo niz promjena Jacobson, V. Congestion Avoidance and control, Proceedings of SIGCOMM '88, Stanford, CA, August 1988, ACM. Problemi su Slanje maksimalne dozvoljene količine podataka (cijelog prozora) pri otvaranju veze Loša procjena vremenskog ograničenja Loše ponašanje u trenutku kada istekne vremensko ograničenje 25
Pretpostavke i ograničenja IP nema mehanizama za upravljanje zakrčenjem Implementacija protokola TCP nema direktnog mehanizma za uvid u stanje mreže TCP veze nisu međusobno koordinirane Gubitak segmenta ili potvrde znači zakrčenje Vjerojatnost greške je izuzetno mala Putevi imaju simetričnu brzinu Kada se postigne ravnoteža sustav je stabilan Koliko podataka iziđe iz mreže toliko ih se šalje nazad u mrežu 26
Samo-sinkronizirajući mehanizam u TCP-u Korištenje potvrda kako bi se upravljalo količinom podataka u mreži P b P r Predajnik Prijemnik A s A b A r 27
Polagani start (1) Cilj je doći do stanja ravnoteže bez preopterećenja mreže Ispitujemo raspoloživ kapacitet mreže Postupak je Uvodimo varijablu cwnd (congestion window) Mjeri se u segmentima (MSS) Inicijalno postavljena na 1 (nakon uspostave spoja ili dugog mirovanja već uspostavljenog spoja) Za svaku primljenu potvrdu povećavamo cwnd za 1 Predajnik smije poslati minimum između cwnd i prijemnikovog prozora bez čekanja potvrde 28
Polagani start (2) Polagani start nije baš najpolaganiji(!) Eksponencijalan je cwnd 1 S R 2 3 4 5 6 29
Upravljanje vremenskim ograničenjem Vrlo bitna procjena vremenskog ograničenja Premale vrijednosti dovode do nepotrebnih retransmisija Opterećenje mreže i pogoršavanje situacije Uvedena poboljšanja Procijena varijacije nije postojala u RFC793 U slučaju gubitka eksponencijalno binarno odustajanje 30
Izbjegavanje zakrčenja (1) Gubitak potvrde ili segmenta Procjena vremenskog ograničenjam mora biti dobra Vjerojatnost oštećenog paketa je izuzetno mala na "modernim" mrežama (<< 1%) Signal vjerojatne pojave zakrčenja negdje na putu Postoji signal da je mreža zakrčena ali ne i da postoji više kapaciteta Treba polako ispitivati raspoloživi kapacitet 31
Izbjegavanje zakrčenja (2) Algoritam za izbjegavanje zakrčenja Odmah po (prvom) isteku vremenskog ograničenja cwnd = cwnd/2 za svaki primljeni ACK cwnd = cwnd + 1/cwnd Efektivno povećava se cwnd za 1 svakih RTT vremenskih jedinica 32
Polagani start i vremensko ograničenje Ta dva algoritma kombiniraju se na sljedeći način if (cwnd < sstresh) cwnd += 1 else cwnd += 1/cwnd Varijabla sstresh inicijalno postavljena na neku visoku (proizvoljnu) vrijednost kod isteka vremenskog ograničenja postavlja se na cwnd/2 33
Brza retransmisija i oporavak (1) Prijemnik mora na svaki, već primljeni, segment ponoviti ACK Iz predajnikove perspektive Jedan segment izgubljen ostali pristižu Dupli ACK Segmenti izvan redoslijeda Nakon četiri uzastopna ACK-a retransmisija samo nedostajućeg (brza retransmisija) S 1001 1201 1401 1601 1801 2001 2201 2401 1201 2601 1201 1201 1201 1201 1201 1201 1201 2601 R 34
Brza retransmisija i oporavak (1) Brzi oporavak (Fast Recovery) sstresh = cwnd / 2 (retransmisija izgubljenog segmenta) cwnd = sstresh + 3 za svaki dupli ACK povećati cwnd za 1 kada stigne kumulativni ACK staviti cwnd = sstresh 35
Problemi kontrole zakrčenja Neke pretpostavke više ne vrijede Gubitak segmenta ili potvrde znači zakrčenje Bežične mreže imaju veliku vjerojatnost pogreške Uvođenje zastupnika (proxy) na pristupne točke Putevi imaju simetričnu brzinu ADSL, UMTS i niz drugih pristupnih mreža Potrebno nekim mehanizmom osigurati ispravan protok potvrda Putevi s velikim umnoškom brzine i kašnjenja Modifikacije originalnog algoritma zakrčenja 36
Modifikacije kontrole zakrčenja Sve modifikacije se obavljaju na pošiljatelju Bitan zahtijev na sve modifikacije je da moraju biti "tcp friendly" Dosta neprecizna izjava Otprilike znači da kada dvije TCP veze (modificirana i nemodificirana) koriste neki put svaka mora koristiti 50%! 37
Primjeri predloženih modifikacija Scalable-TCP Ack :cwnd cwnd Gubitak :cwne cwnd HS-TCP Ack : cwnd cwnd f cwnd cwnd Gubitak :cwne g cwnd cwnd BIC-TCP, CUBIC-TCP, Westwood TCP,... 38
Problemi s TCP-om i UDP-om IP adresa je identifikator Identificira sugovornika Dodatno, na mrežnom sloju je lokator Definira gdje se nalazi Problemi s mobilnim stanicama Zbog promjene IP adrese "pucaju" TCP veze Mehanizmi koji čuvaju originalnu IP adresu (MIPv4) Višestruke IP adrese na računalu Također uzrokuju "pucanje" TCP veza Mora se koristiti isključivo jedna adresa 39
Protokol SCTP (1) 1998 godine osnovana radna grupa SIGTRAN Cilj je bio izraditi analogon SS7 protokola Protokol za upravljanje pozivima u telefoniji Razmjenjuje poruke Grupa je identificirala dva problema u protokolu TCP Blokiranje poruka zbog strogo slijedne isporuke protokola TCP Nema podrške za višepristupnost To je dovelo do razvoja novog protokola 40
Protokol SCTP (2) Temeljne karakteristike protokola SCTP je temeljen na prijenosu poruka (TCP na oktetima) Selektivne potvrde su standardno podržane Više tokova (streams) unutar jedne asocijacije Asocijacija je analogna vezi u TCP-u Redoslijed poruka očuvan unutar jednog toka Višepristupnost Oba kraja mogu registrirati više IP adresa Zaštita od DoS napada s lažiranim adresama Jača zaštita od pogrešaka (CRC) 41
Protokol DCCP Protokol UDP nema mehanizme kontrole zakrčenja Sve veća popularnost predstavlja opasnost za stabilnost Interneta Uvođenje kontrole zakrčenja u nepouzdanu uslugu Datagram Congestion Control Protocol 42