TCP:n vuonohjaus (flow control)

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

Tietoliikenne II Kurssikoe

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

kynnysarvo (threshold)

kynnysarvo (threshold)

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

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

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

Tietoliikenne II (2 ov)

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)

ELEC-C7241 Tietokoneverkot Kuljetuskerros

Selektiiviset kuittaukset (RFC 2018, RFC 3517)

11/20/ Siirron optimointi

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/

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

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ä

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

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

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

S ATM JA MULTIMEDIA SEMINAARI, KEVÄT -97

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

Kuljetuskerroksen protokollat

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

Kuljetuskerroksen protokollat

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 =>

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

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

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

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

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

Kuljetuskerroksen protokollat

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

S Tietoliikenneverkot S Luento 6: Liikenteenhallinta

Vuonohjaus: ikkunamekanismi

Monimutkaisempi stop and wait -protokolla

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

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

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

ABTEKNILLINEN KORKEAKOULU Tietoverkkolaboratorio

AB TEKNILLINEN KORKEAKOULU

Tietoliikenne II (2 ov) Syksy 2004 Liisa Marttinen

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

Tietoliikenne II (2 ov)

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

Tietoliikenne II (2 ov) Syksy 2003 Liisa Marttinen

Tietoliikenne II (2 ov)

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

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

Kuljetuskerros. Kirja sivut: ,

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

Tietoliikenteen perusteet

ITKP104 Tietoverkot - Teoria 3

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

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

Chapter 3 Transport Layer. Kuljetuskerros

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

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

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet

Tietoliikenteen perusteet

Kuljetuskerroksen tehtävä. Kuljetuskerros UDP. UDP-kaappaus (DNS) DNS-haku, Ethernet-kehys <#>

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

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

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Liikenneteorian tehtävä

Tehtävä 2: Tietoliikenneprotokolla

Tietoliikenteen perusteet. Kuljetuskerros

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1.

6. Kuljetuskerros 6.1. Kuljetuspalvelu End- to- end

6. Kuljetuskerros 6.1. Kuljetuspalvelu

S Tietoliikenneverkot

3. Kuljetuskerros 3.1.

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Protokollien yleiset toiminnot

Jaetun muistin muuntaminen viestin välitykseksi. 15. lokakuuta 2007

Tietoliikenteen perusteet: Kokeeseen tulevista asioista

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietoliikenteen ruuhkanhallinta datakeskuksissa

Transkriptio:

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 1 TCP:n vuonohjaus (flow control) W. Stallings, High-Speed Networks, TCP/IP and ATM Design Principles, Prentice-Hall, 1998, Sections 10.1-10.2 Ikkunointipohjainen vuonohjausmekanismi Pyrkii jakamaan kaistan tasan eri lähteiden kesken Timeout ja uudelleenlähetys kiertoajan (RTT) mittaus RTT:n varianssin arviointi (Jacobsonin algoritmi) eksponentiaalinen RTO:n vetäytyminen Karnin algoritmi Hidas aloitus (slow start) Dynaaminen ikkunan säätö Nopea uudelleenlähetys (fast retransmit) Nopea toipuminen (fast recovery) Selektiivinen kuittaus (selective acknowledgement), SACK (optionaalinen lisäys)

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 2 Mekanismien toteutus TCP:n eri versioissa Mekanismi RTT varianssin estimointi Eksponentiaalinen RTO:n vetäytyminen Karnin algoritmi Hidas aloitus Dynaaminen ikkunan säätö Nopea uudelleenlähetys Nopea toipuminen RFC 1122 TCP Tahoe TCP Reno NewReno NewReno (RFC 2582, April 1999) on nykyisin yleisimmin käytetty TCP:n versio Sisältää parannetun nopean uudelleenlähetyksen useiden paketinmenetysten tapauksessa

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 3 Timeout ja uudelleenlähetys Jokaista lähetettyä segmenttiä kohti pidetään yllä uudelleenlähetysajastinta RTO (retransmission timeout) Ajastimen pyrkimyksenä on erotella tapaukset, joissa kuittaus viipyy satunnaisten kulkuaikaviiveiden vuoksi verkossa on ruuhkaa ja lähetetty segmentti on kadonnut RTO = SRTT + f SDEV RTO = retransmission timeout SRTT = smoothed roundtrip estimate SDEV = smoothed roundtrip standard deviation estimate kertoimelle f käytetään tavallisesti arvoa f = 4 (alkuperäinen suositus f = 2)

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 4 Kiertoajan ja sen vaihtelun arviointi (Jacobsonin algoritmi) Jokaista lähetettyä segmenttiä kohti mitataan aika RTT kuittauksen saapumiseen Lasketaan mitatun kiertoajan erotus nykyiseen tasoitettuun estimaattiin SRTT SERR = RTT SRTT Päivitetään kiertoajan estimaattia SRTT liukuvasti (eksponentiaalinen tasoitus) SRTT (1 g) SRTT + g RTT Samoin päivitetään kiertoajan vaihtelun SDEV estimaattia liukuvasti SDEV (1 h) SDEV + h SERR kertoimille g ja h suositellaan arvoja g = 1/8 = 0.125 h = 1/4 = 0.25 keskiarvo 8 viimeisestä mittauksesta keskiarvo 4 viimeisestä mittauksesta

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 5 Esimerkki estimaattien kehittymisestä 1 1 from W. Stallings High Speed Networks: TCP/IP and ATM Design Principles, Prentice Hall, 1997.

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 6 Eksponentiaalinen RTO:n vetäytyminen (exponential RTO backoff) Ajastimen RTO lauettua segmentti lähetetään uudelleen merkki siitä, että verkossa on ruuhkaa saman RTO:n käyttäminen uudelle segmentille ei olisi kovin järkevää, koska se saattasi helposti johtaa ajastimen laukeamiseen uudelleen RTO-arvoa kasvatetaan tekijällä q RTO q RTO Jos ajastin edelleen laukeaa, jatketaan samalla tavalla (jolloin RTO kasvaa eksponentiaalisesti johonkin ylärajaan (esim. 64 s) asti Kertoimelle q käytetään useimmiten arvoa q = 2 kyseessä on tällöin binäärinen eksponentiaalinen vetäytyminen samanlainen kuin Ethernetin CSMA/CD-protokollassa Uudelleenlähetyksiä yritetään uudelleen asetettuun katkaisuaikaan (esim. 9 min) asti

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 7 Karnin algoritmi Kun uudelleenlähetyksen jälkeen saadaan segmentistä kuittaus, ei voida tietää liittyykö kuittaus alkuperäiseen lähetykseen vai uudelleenlähetykseen Kiertoajasta RTT ei saada tällöin luotettavaa mittausta Karnin algoritmi määrittelee menettelytavan tässä tapauksessa: 1. SRTT- ja SDEV-arvoja ei päivitetä 2. Uudellenlähetyksen tapauksessa RTO-arvoa kasvatetaan tekijällä q 3. Seuraaville segmenteille käytetään samaa RTO-arvoa 4. Vasta, kun on saatu kuittaus ei-uudelleenlähetettyyn pakettiin, siirrytään normaaliin päiväjärjestykseen

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 8 Hidas käynnistys (slow start) Lähetysikkunan awnd koko määritellään segmentteinä (ei oktetteina) Sitä säätelee kaksi tekijää: awnd = min(credit, cwnd) awnd = sallittu lähetysikkunan koko segmenteissä cwnd = TCP:n vuonohjauksen ylläpitämä ruuhkaikkuna (congestion window) credit = vastaanottajan ilmoittama sallittu lähetysikkuna; lasketaan vastaanottajalta saadun TCP-segmentin window-kentän arvosta muuntamalla segmenteiksi: credit = window / segment size TCP-yhteyden käynnistyessä asetetaan cwnd = 1 Jokaista saatua kuittausta kohti cwnd-arvoa kasvatetaan yhdellä aina johonkin maksimiin asti cwnd cwnd + 1 Itse asiassa käynnistyminen ei ole lainkaan hidas vaan eksponentiaalinen jokaista kuitattua täyttä ikkunallista kohti ikkunan koko kaksinkertaistuu ahneen lähteen tapauksessa kaksinkertaistuminen tapahtuu RTT:n välein

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 9 Dynaaminen ikkunan säätö ruuhkatilanteessa Kun segmenttiin liittyvä timeout RTO laukeaa, tämä on merkki verkossa olevasta ruuhkasta segmentti on joko kadonnut kokonaan tai ainakin pahasti viivästynyt matkallaan Tällöin siirrytään hitaan käynnistyksen mukaiseen alkutilaan asetetaan cwnd = 1 kasvatetaan ikkunaa yhdellä jokaista kuittausta kohti Ikkunan eksponentiaalinen kasvu on ruuhkatilanteessa liian agressiivista Varoivasempi menettely (congestion avoidance) on seuraava: 1. Aseta kynnysraja ssthresh puoleen nykyisestä ikkunasta ssthresh = cwnd/2 2. Aseta cwnd = 1 ja jatka hitaan käynnistyksen mukaisesti kunnes cwnd = ssthresh 3. Tästä eteenpäin (kun cwnd ssthresh) cwnd-arvoa kasvatetaan yhdellä jokaista kiertoaikaa kohti (täyttä ikkunallista kohti). Tämä voidaan toteuttaa esim. päivittämällä cwnd-arvoa jokaista kuittausta kohti seuraavasti: cwnd cwnd + 1/cwnd.

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 10 Hidas käynnistyminen ja dynaaminen ikkunan säätö 2 2 from W. Stallings High Speed Networks: TCP/IP and ATM Design Principles, Prentice Hall, 1997.

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 11 Nopea uudelleenlähetys (fast retransmission) Uudelleenlähetysajastimen RTO arvo on käytännössä selvästi suurempi kuin todellinen kiertoaika RTT Tämä on hyvin perusteltua, koska kiertoajan luotettava mittaaminen on useista eri syistä vaikeaa Seuraus tästä kuitenkin on, että pelkästään ajastimen laukeamiseen perustuvat uudelleenlähetykset voivat tapahtua hitaasti Nopeassa uudelleenlähetyksessä käytetään hyväksi sitä, että TCP lähettää aina kuittauksen viimeisestä oikeassa järjestyksessä saadusta segmentistä Toistuvat saman segmentin kuittaukset ovat merkkinä puuttuvasta, mahdollisesti kokonaan kadonneesta segmentistä Sen poissulkemiseksi, että kyseessä olisi vain jonkin verran viivästynyt segmentti, odotetaan että saadaan kolme kuittausta samasta segmentistä Nopeassa uudellenlähetyksessä tämä tulkitaan merkiksi paketin todellisesta katoamisesta ja sitä käytetään laukaisemaan uudelleenlähetys

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 12 Nopea toipuminen (fast recovery) Myös nopean uudelleenlähetyksen tapauksessa ruuhkaikkunan kokoa tulee pienentää ruuhkan poistamiseksi Saadut kuittaukset ovat kuitenkin merkkinä siitä, että jotain menee verkosta läpi, eikä ruuhka ole ehkä niin paha kuin ajastimen lauetessa Tämän vuoksi ikkunan kokoa ei pienenennetäkään 1:een, vaan nopean toipumisen menetelmän mukaisesti toimitaan seuraavasti (kolmannen kuittauksen saapuessa samasta segmentistä): 1. Aseta ssthresh = cwnd/2 2. Lähetä puuttuva segmentti uudelleen 3. Aseta cwnd = ssthresh + 3 (koska kolme segmenttiä on kuitenkin mennyt perille) 4. Aina, kun samasta segmentistä tulee vielä lisäkuittauksia, kasvata cwnd-arvoa yhdellä 5. Kun lopulta tulee kuittaus uudelleenlähettämättömästä segmentistä (joka kuittaa kerralla kaikki puuttuvat ja myöhemmät segmentit), asetetaan cwnd = ssthresh

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 13 Selektiivinen kuittaus, SACK Valinnainen mekanismi (RFC 2018, lokakuu 1996) Vastaanottaja voi kuitata myös väärässä järjestyksessä saapuneita paketteja Vaatii, että TCP-yhteyden molemmat päät tukevat sitä yhteys toimii ilman SACK:ia, jos vain toinen pää tukee sitä TCP Vegas Uusi kokeellinen TCP:n versio Käyttää kolmea eri tekniikkaa läpäisyn lisäämiseksi ja häviöiden pienentämiseksi ensimmäinen tekniikka johtaa hävinneiden segmenttien nopeampaan uudelleenlähetykseen toinen tekniikka antaa TCP:lle kyvyn ennakoida ruuhkaa ja säätää lähetysnopeutta vastaavasti kolmas tekniikka modifioi hitaan käynnistyksen mekanismia paketinmenetysten välttämiseksi etsittäessä käytettävissä olevaa kaistaa

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 14 TCP:n läpäisy Yksinketainen Floydin ja Fallin 3 malli stationaarinen malli (pitkät vuot) TCP:lle, joka toimii ruuhkanvälttämismoodissa keskimääräinen paketinmenetystodennäköisyys p ja RTT määräävät läpäisyn naiivi jaksollisuusoletus: joka 1/p :s paketti menetetään window (pkts) packet loss W * * * * 1 W/2 T 1 RTT T 2 T 3 time 3 S. Floyd and K. Fall, Promoting the use of end-to-end congestion control in the Internet, IEEE/ACM Trans. on Networking, 1999.

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 15 TCP:n läpäisy (jatkoa) Hävinneiden pakettien välillä (esim. aikaväli T 1 and T 2 ) siirrettyjen pakettien määrä W 2 + (W 2 + 1) + + W 3 8 W 2 Yksi hävinnyt paketti (3/8)W 2 lähetettyä pakettia kohti. Siis p = 8 3W 2 W = 8 Pakettihäviöiden väliaika on W/2 kiertoaikaa. Saamme läpäisyn T T = (3/8)W 2 B (W/2)RTT = 3 4 missä B on yhden segmentin koko W B RTT = 3p 3/2 B RTT p 1.22 B RTT p

J. Virtamo 38.3141 Teleliikenneteoria / TCP:n vuonohjaus 16 TCP:n läpäisy (jatkoa) Tarkemman mallin ovat esittäneet Padhye et al. 4 Ottaa huomioon uudellenlähetyksen ajastimen (RTO) laukeamisen sekä viivästetyt kuittaukset W m B T min RTT, B RTT 2bp 3 + T 0 min{1, 3 3bp 8 } p (1 +, 32p2 ) missä W m on vastaanottajan asettama ruuhkaikkunan suurin arvo b on yhdellä vastaanotetulla ACK:illa kuitattujen pakettien lukumäärä T 0 on RTO:n ensimmäinen arvo 4 J. Padhye, V. Firoiu, D. Towsley and J. Kurose, Modeling TCP throughput: a simple model and its empirical validation, in Proc. of ACM SIGCOMM, 1998.