on yksi keskeisimpiä toimintoja Internetin toiminnan varmistamiseksi Internetin ruuhkanhallinta pitkälti

Samankaltaiset tiedostot
Selektiiviset kuittaukset (RFC 2018, RFC 3517)

Tietoliikenne II Kurssikoe

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

kynnysarvo (threshold) varoitusarvo = tästä lähtien syytä varoa ruuhkaa aluksi 64 K RTT

kynnysarvo (threshold)

kynnysarvo (threshold)

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

TCP:n vuonohjaus (flow control)

Tietoliikenne II (2 ov) Tietoliikenne II. Sisällysluettelo jatkuu. Alustava sisällysluettelo. Suoritus. Täydennystä Tietoliikenne I -kurssin asioihin

Ongelma 1: Ei saada kolmea toistokuittausta

Nopea uudelleenlähetys (Fast retransmit)

Nopea uudelleenlähetys (Fast retransmit)

Tietoliikenne II (2 ov)

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Tietoliikenne II (2 ov) Sisällysluettelo jatkuu. Tietoliikenne II. Alustava sisällysluettelo. Suoritus

TCP. TCP:n peruspiirteiden toiminta tarkemmin. TCP:n uusia piirteitä. osin vain harjoitustehtävissä

TCP:n peruspiirteiden toiminta tarkemmin. osin vain harjoitustehtävissä. TCP:n uusia piirteitä

TCP. TCP-optiot. Erilaisia suorituskykyongelmia. Aikaleima (timestamp) TCP:n peruspiirteiden toiminta tarkemmin. TCP:n uusia piirteitä.

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

ELEC-C7241 Tietokoneverkot Kuljetuskerros

Ratkaisu: Miksi lähetetään uusi paketti? SACK (Selective Acknowledgement) Nopea toipuminen ei onnistu! Limited Transmit

M. Allman, H. Balakrishnan, S. Floyd. January (Status: PROPOSED STANDARD) Lähettäjä ei saa kolmea toistokuittausta =>

M. Allman, H. Balakrishnan, S. Floyd. January Lähettäjä ei saa kolmea toistokuittausta =>

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome. Esimerkki jatkuu

Esimerkki jatkuu. <seq = 6, data = m6> <ack = 4, buf = 0> <ack = 4, buf = 1> <ack = 4, buf = 2> <ack = 6, buf = 0> <ack = 6, buf = 4> 1/31/

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

11/20/ Siirron optimointi

Kuittaukset ACK. NAK-kuittaus. kumulatiivinen ACK. yksittäinen ACK. sanoma virheellinen tai puuttuu. tähän saakka kaikki ok!

Kuittaukset. Miksi? Miksi? Negatiiviset kuittaukset NAK-kuittauksilla voidaan nopeuttaa uudelleenlähettämistä. Ikkunankoko ACK

Kuittaukset. tähän saakka kaikki ok! Go-Back N. sanoma virheellinen tai puuttuu

Tietoliikenne II (2 ov) Syksy 2004 Liisa Marttinen

Esimerkki jatkuu. ajastin laukeaa, uudelleen sanoma 2. <seq = 6, data = m6>

Tietoliikenne II. Tietoliikenne II (2 ov) Alustava sisällysluettelo. Sisällysluettelo jatkuu. Suoritus. Syksy 2003 Liisa Marttinen

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov) Syksy 2003 Liisa Marttinen

TCP. TCP-optiot. Erilaisia suorituskykyongelmia. Aikaleima (timestamp) TCP:n peruspiirteiden toiminta tarkemmin. TCP:n uusia piirteitä.

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

Miksi? Miksi? Kaksisuuntainen liikenne TCP-protokolla. Ikkunankoko. Valikoiva toisto: ikkuna 5, numeroavaruus 8

Ikkunankoko. Kun käytetty numeroavaruus on 0, 1,.. n ja eri numeroita siis käytettävissä n+1

Ikkunankoko. Kun käytetty numeroavaruus on 0, 1,.. n ja eri numeroita siis käytettävissä n+1

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta. Syksy 2014, Tiina Niklander Kurose&Ross: Ch3

Tietoliikenteen perusteet

Tietoliikenteen perusteet

Kuljetuskerroksen protokollat. Luotettava vai epäluotettava? Kuljetuskerroksen tarkoitus. Tietosähkeen kapselointi. Portit ja (de)multipleksaus

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Kuljetuspalvelu. Tietoliikenteen perusteet. Sisältöä. Kuljetuskerros. Kuljetuskerros. Kuljetuskerros. Internetin kuljetusprotokollat

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2016

Tehtävä 2: Tietoliikenneprotokolla

Tietoliikenne II. Syksy 2005 Markku Kojo. Tietoliikenne II (2 ov,, 4 op) Page1. Markku Kojo Helsingin yliopisto Tietojenkäsittelytieteen laitos

Kuljetuskerroksen protokollat

Kuljetuskerros. Matti Siekkinen. T Johdatus tietoliikenteeseen kevät 2011

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Kuljetuskerroksen protokollat. Kuljetuskerroksen tarkoitus. Luotettava vai epäluotettava?

Kuljetuskerroksen protokollat

S Tietoliikenneverkot S Luento 6: Liikenteenhallinta

Kuljetuspalvelu. Tietoliikenteen perusteet. Sisältöä. Kuljetuskerros. Kuljetuskerros. Kuljetuskerros. Internetin kuljetusprotokollat

Tietoliikenteen perusteet. Kuljetuskerros

TCP/IP-protokollapino. Kuljetuskerros. Tämän luennon jälkeen. Sisältö. Matti Siekkinen. Ymmärrätte:

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Kuljetuskerroksen protokollat

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Kuljetuskerros. Matti Siekkinen. T Johdatus tietoliikenteeseen kevät 2013

Kuljetuskerros. CSE-C2400 Tietokoneverkot (osa 1) (osa 2) Matti Siekkinen. Tietokoneverkot 2014

Tietoliikenteen perusteet

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1.

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1. Kuljetuspalvelu

3. Kuljetuskerros 3.1.

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tiivistelmä Kunal Shahin Master of Science -työstä: Simulation Based Study of TCP Fairness in Multi-Hop Wireless Networks

3. Kuljetuskerros 3.1. Kuljetuspalvelu. Internetin kuljetuskerros. kuljetuspalvelut parantavat verkkopalveluja

peittää verkkokerroksen puutteet

Chapter 3 Transport Layer. Kuljetuskerros

3. Kuljetuskerros 3.1. Kuljetuspalvelu

S ATM JA MULTIMEDIA SEMINAARI, KEVÄT -97

3. Kuljetuskerros 3.1. Kuljetuspalvelu

6. Kuljetuskerros 6.1. Kuljetuspalvelu End- to- end

6. Kuljetuskerros 6.1. Kuljetuspalvelu

6. Kuljetuskerros 6.1. Kuljetuspalvelu End- to- end. kuljetuspalvelut parantavat verkkopalveluja Kuljetuskerroksen toiminta

Chapter 3 Transport Layer. Kuljetuskerros

Kuljetuskerros. Chapter 3 Transport Layer. Kuljetuspalvelut ja -protokollat. Kuljetuskerros. Kuljetuskerros vs. verkkokerros

Internet ja tietoverkot. 3 Kuljetusprotokollat Luotettava ja epäluotettava tiedonsiirto

ABTEKNILLINEN KORKEAKOULU Tietoverkkolaboratorio

AB TEKNILLINEN KORKEAKOULU

3. Kuljetuskerros 3.1. Kuljetuspalvelu

S Tietoliikenneverkot

hteitä 2005 Markku Kojo Detailed algorithm for a RED router

S Teletekniikan perusteet

Transkriptio:

TCP-ruuhkanvalvonta (RFC 2581) TCP-ruuhkanvalvonta on yksi keskeisimpiä toimintoja Internetin toiminnan varmistamiseksi Internetin ruuhkanhallinta pitkälti TCP:n varassa Pääsääntöisesti muut protokollat eivät t toistaiseksi tee ruuhkanvalvontaa Ilman ruuhkanvalvontaa Internet (tai sen osa) voi kaatua (Congestion Collapse) Ruuhkatilanteessa paketteja (segmenttejä) ) katoaa, joten ruuhkanvalvonta nivoutuu toipumiseen ja sitä kautta TCP:n suorituskykyyn Ruuhkanvalvonnan kannalta kaikki TCP data- segmenttien katoamiset tulkitaan ruuhkaksi TCP:n ruuhkanvalvonta-algoritmit: algoritmit: Slow Start ja Congestion Avoidance Fast Retransmit ja Fast Recovery 19 Ruuhkaikkuna ja vastaanottoikkuna Vastaanottoikkuna (receiver( window,rwnd) TCP-vastaanottaja ilmoittaa lähettl hettämiensä segmenttien (kuittausten) ikkunakentäss ssä (window) - paljonko saa vielä lähettää ko. segmentissä kuitatun järjestysnumeron jälkeenj TCP-vastaanottaja kasvattaa, kun sovellus vastaanottaa dataa ja pienentää ää,, kun saapuu dataa vuonvalvontaa varten Ruuhkaikkuna (congestion( window,cwnd) Kuinka paljon kuittaamatonta dataa (FlightSize)( ) saa olla lähetettynä verkkoon ruuhkanhallintaa varten: ruuhkanvalvonta-algoritmit algoritmit säätelevätcwnd:n kokoa min( min(rwnd,cwnd) ) rajoittaa lähettl hettämistä 20 Page1 1

Kuittauksen mukana ilmoitettava vastaanottoikkunan koko (rwnd( rwnd) Sovellukselle TCP-puskuriin saapunut data TCP-vastaanottopuskuri rwnd Vapaa tila Sijoita windowkentän arvoksi ACK Data IP-kerrokselta 21 TCP:n itsetahdistus (self-clocking, ack-clocking) clocking) Lähettäjä verkko vastaanottaja datasegmentit ACK Kuittaukset toimivat TCP-lähetyksen tahdistajana sekä ohjavat ruuhkaikkunan koon päivitystä Kuittaus saapuu verkosta poistunut dataa, joten voidaan lähettää sama määrä lisää 22 Page2 2

Hidas aloitus (Slow( Start) Hidasta aloitusta käytetk ytetään: Yhteyden alussa (Initial( Slow Start) Uudelleenlähetysajastimen lauettua (RTO Recovery) Jos ei ole ollut lähetettl hetettävääää vähään n aikaan (Restart( After Idle) Tarkoituksena Käynnistää TCP:n itsetahdistus Selvittää käytettävissä oleva verkkokapasiteetti Periaate Ruuhkaikkunaa kasvatetaan kunnes segmentti/segmenttejä katoaa = syntyy ruuhkaa 23 Initial Slow Start Aloitusikkunan koko 1 SMSS Nykyää ään n voi olla myös s isompi (mutta aina <= 4 SMSS) cwnd:tä kasvatetaan korkeintaan yhdellä SMSS:llä jokaista uutta dataa kuittaavaa ACKia kohden cwnd tuplaantuu per RTT Lähettäjä cwnd = 1 SMSS 1. RTT Vast.ottaja Datasegmentti = 2 SMSS 2. RTT Kuittaus = 3 SMSS = 4 SMSS 24 Page3 3

Ruuhkan välttv lttäminen (Congestion Avoidance) Kynnysarvo (Slow( Slow-StartStart Threshold, ssthresh) Aluksi iso (käyt ytännössä korkeintaan rwnd:n kokoinen) Kun cwnd ylittää ssthresh:n arvon siirrytää ään ruuhkanvältt lttämisvaiheeseen: cwnd:ta kasvatetaan jokaista uutta dataa kuittaavaa ACK:ia kohden: cwnd = cwnd + SMSS*SMSS/cwnd Additive Increase -cwnd kasvaa lineaarisesti suurin piirtein yhdellä SMSS:llä per RTT eli kun yksi ikkunallinen dataa tulee kuitatuksi 25 Nopea uudelleenlähetys (Fast Retransmit) Toistokuittaus (duplicate( ACK) Jos vastaanottaja saa vääv äärässä järjestyksessä tulevan segmentin, se kuittaa välittv littömästi samalla numerolla kuin se kuittasi viimeisen oikeassa järjestyksessj rjestyksessä saadun segmentin Ilmoittaa lähettl hettäjälle että segmetti saapui vääv äärässä järjestyksessä ja mikä on odotettu järjestysnumeroj Kun lähettl hettäjä saa 3 peräkk kkäistä toistokuittausta lähettää uudelleen ensimmäisen isen kuittaamattoman segmentin Nopean uudelleenlähetyksen jälkeen j jatketaan uudelleenlähetyst hetystä Slow-start start issa aivan kuin uudelleenlähetys hetys- ajastin olisi lauennut (TCP Tahoe) tai nopealla toipumisella (Fast( Recovery) ) (TCP Reno ja sitä uudemmat versiot) 26 Page4 4

Nopea Toipuminen (Fast Recovery) TCP Reno Usean toistokuittauksen saapuminen ilmaisee, että paketteja poistuu verkosta itse-kellotus toimii Fast Retransmit & Fast Recovery (Reno) 1. aseteta ssthresh = max (FlightSize / 2, 2*MSS) 2. Lähetä puuttuva segmentti (ensimmäinen inen kuittaamaton) ja aseta ruuhkaikkuna cwnd = ssthresh + 3*MSS 3. Kaikki vielä tulevat toistokuittaukset kasvattavat ruuhkaikkunaa yhdellä SMSS:llä 4. Lähetä (uusi) segmentti, jos cwnd:n uusi arvo (ja rwnd) sallii 5. Kun saapuu ACK, joka kuittaa uutta dataa, aseta cwnd = ssthresh 27 Fast Retransmit&Fast Recovery Sender Receiver cwnd = 6 ssthresh=3; cwnd = 6 cwnd = 7 cwnd = 8 cwnd = 3 ack = 8 ack = 9 Data, seq = 1 Data, seq = 2 Data, seq = 3 Data, seq = 4 Data, seq = 5 Data, seq = 6 Data, seq = 7 Rexmit Data, seq = 2 Data, seq = 8 Data, seq = 9 Data, seq = 10 Data, seq = 11 28 Page5 5

Uudellenlähetysajastin (RFC 2988) Ajastin käynnistetk ynnistetään, kun segmentti lähetetl hetetään Ajastimen asettaminen oikeaan arvoon on tärketätä: Liian pieni arvo: ennenaikainen ajastimen laukeaminen - Aiheuttaa turhia uudelleenlähetyksi hetyksiä,, pahimmillaan koko ikkuna! - Tarpeeton lähetysvauhdin l hidastus Liian suuri arvo: toipuminen alkaa turhan myöhää ään - Hidastaa toipumista Alkuarvo 3 s Tämän n jälkeen j estimoidaan dynaamisesti kiertoviiveen (Round-Trip, RTT) perusteella 29 Ajastimen arvon määm äärääminen Mitataan segmenttien kiertoviive (RTT( RTT) ) ja viiveen poikkeama estimaatista (DevRTT( DevRTT) Estimaattina eksponenttiaalisesti tasoitettu keskiarvo: EstimatedRTT EstimatedRTT=(1- )* EstimatedRTT + *RTT = 1/8 = 0.125 Poikkeama estimaatista: DevRTT DevRTT=(1- )* )*DevRTT + * RTT-EstimatedRTT = 0.25 Ajastimen arvo RTO = EstimatedRTT + 4* DevRTT 30 Page6 6

Ajastimen arvon määm äärääminen Miten uudelleenlähetykset pitäisi isi käsitellk sitellä? Mikä segmentti kuitattiin (alkuperäinen vai uudelleenlähetys)? Ratkaisu: Karnin algoritmi - uudelleenlähetetyille segmenteille ei mitata RTT:tä eikä niitä huomioida - ajastimen arvo kaksinkertaistetaan (Exponential( backoff) aina kun ajastin laukeaa, palautetaan kun on saatu onnistunut kuittaus Kuinka usein mitataan: Jotkut toteutukset mittaavat vain kerran RTT:ssä Toiset, esim. Linux, jokaiselle kelvolliselle segmentille Ajastin käynnistetk ynnistetään n aina uudelleen, kun saadaan uusi kuittaus todellinen arvo RTO + 1 RTT 31 Ajastimen laukeaminen ja toipuminen Jos kuittausta ei kuulu, niin uudelleenlähetysajastin laukeaa, jolloin cwnd = 1 ssthresh = max (FlightSize / 2, 2 2*SMSS) Lähetä uudelleen ensimmäinen inen kuittaamaton segmentti Jatka uudelleenlähetyst hetystä Slow Start algoritmilla kunnescwnd > ssthresh,, jolloin siirry ruuhkanvältt lttämisvaiheeseen - Kun ei enää uudelleenlähetett hetettävää,, niin jatka lähettämällä uutta dataa 32 Page7 7

RTO Recovery Sender Receiver Data, seq = 1 Data, seq = 2 Data, seq = 3 Ajastin laukeaa, jonka jälkeen hidas aloitus! cwnd = 3 RTO Data, seq = 4 Data, seq = 5 ack = 3 ack = 3 ssthresh= 2; cwnd = 1 cwnd = 2 ack = 6 Rexmit Data, seq = 3 Data, seq = 6 Data, seq = 7 33 NewReno (RFC 3782) Nopean toipumisen (Fast Recovery) perusversio (Reno) toteutettiin ensimmäisen isen kerran 1990. RFC 2581 kuvaa TCP Renon täsmt smällisen toiminnan Renon nopea toipuminen ei toimi, jos useita paketteja katoaa samasta ikkunasta nopean uudelleenlähetyksen jälkeen j joudutaan toipumisessa turvautumaan uudelleenlähetysajastimeen ja hitaaseen aloitukseen Eräs s ratkaisu on selektiiviset kuittaukset (SACK-optio) kuittauksessa ilmoitetaan, mitkä tavut saatu kunnolla (ja mitkä vielä puuttuvat välistv listä) 34 Page8 8

Nopea Toipuminen (NewReno( NewReno) Kuten Reno, mutta toipuminen voi jatkua, vaikka ikkunasta olisi kadonnut useita segmenttejä (vaihe 5) Tämän n selvittämiseksi talletetaan muuttujaan recover viimeksi lähetetty järjestysnumero, j kun siirrytää ään n nopeaan uudelleenlähetykseen (vaihe 1) Fast Retransmit & Fast Recovery (NewReno) 1.Aseteta ssthresh = max (FlightSize / 2, 2*MSS) ) ja aseta recover = suurimman tähän t n mennessä lähetetyn tavun järjestysnumeroj rjestysnumero 2.Lähet hetä puuttuva segmentti ja aseta ruuhkaikkuna cwnd = ssthresh + 3*MSS 3.Kaikki vielä tulevat toistokuittaukset kasvattavat cwnd:tä yhdellä SMSS:llä 4.Lähet hetä (uusi) segmentti, jos cwnd:n uusi arvo (ja rwnd) ) sallii 5.Kun saapuu ACK, joka kuittaa uutta dataa, Jos se kuittaa kaikki recover:in n ilmoittamaan arvoon asti => toipuminen valmis; aseta cwnd = min(ssthresh,flightsize+smss) muutoin kuittaus on johonkin aikaisempaan järjestysnumeroon j eli osittainen kuittaus (Partial ACK) 35 NewReno/Vaihe 5: Osittainen kuittaus Jos tulee osittainen kuittaus lähetetään n uudelleen ensimmäinen inen kuittaamaton segmentti, vähennetään n ruuhkaikkunaa (cwnd( cwnd) ) ACK:n kuittaamalla datamää äärällä ja lisätää ään n 1 SMSS lähetetään n uusi segmentti, jos ruuhkaikkuna ja vastaanottoikkuna tämän t n sallii jatketaan toipumisvaihetta - toistetaan vaiheet 3&4, jos saapuu toistokuittaus - toistetaan vaihe 5, jos saapuu uutta dataa kuittaava ACK 36 Page9 9

Fast Retransmit&Fast Recovery (NewReno) cwnd = 6 ssthresh=3; cwnd = 6 Sender Data, seq = 1 Data, seq = 2 Data, seq = 3 Data, seq = 4 Data, seq = 5 Data, seq = 6 Data, seq = 7 Rexmit Data, seq = 2 Receiver Partial Ack ack = 4 Rexmit Data, seq = 4 Partial Ack ack = 6 Data, seq = 6 37 NewReno: : tarpeettomien nopeiden uudelleenlähetysten välttv lttäminen Edellä esitetyn lisäksi aina aluksi (vaihe 1) tarkistetaan, etteivät t toistokuittaukset johdu aiemmista tarpeettomista uudelleenlähetyksist hetyksistä Jos johtuvat, niin Fast Retsransmit&Fast Recovery algoritmia ei suoriteta lainkaan Tarkistus perustuu Recover muuttujaan Jos toistokuittauksen numero kuittaa yli recover- muuttujaan talletetun numeron, toistokuittaukset ovat duplikaattien aiheuttamia Tätä varten myös s uudelleenlähetysajastimen lauetessa asetetaan recover -muuttuja kuten vaiheessa 1. 38 Page 10 10

Isompi aloitusikkuna (RFC 3390) TCP:n hidas aloitus aiheuttaa suorituskyky- ongelmia varsinkin yhteyksillä,, joilla on pitkä kiertoviive Myös s jos verkkokapasitteettia on runsaasti, niin ruuhkaikkunan kasvatus riittävän n isoksi kestää tarpeettoman kauan RFC 2581 sallii max 2 MSS:n kokoisen aloitusikkunan (IW) RFC 3390 päivittp ivittää aloitusikkunan (IW) koon max.. 4 MSS:ää ään IW = min(4*mss, max(2*mss, 4380 bytes)) 39 Page 11 11