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

Samankaltaiset tiedostot
Ongelma 1: Ei saada kolmea toistokuittausta

Nopea uudelleenlähetys (Fast retransmit)

Nopea uudelleenlähetys (Fast retransmit)

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

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

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

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

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

Tietoliikenne II (2 ov) Syksy 2004 Liisa Marttinen

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

Selektiiviset kuittaukset (RFC 2018, RFC 3517)

Tietoliikenne II (2 ov) Syksy 2003 Liisa Marttinen

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

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

Monimutkaisempi stop and wait -protokolla

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

kynnysarvo (threshold)

kynnysarvo (threshold)

Tietoliikenne II Kurssikoe

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

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

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

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)

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

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

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

TCP:n vuonohjaus (flow control)

ELEC-C7241 Tietokoneverkot Kuljetuskerros

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/

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1.

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tehtävä 2: Tietoliikenneprotokolla

Tietoliikenteen perusteet

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

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

hteitä 2005 Markku Kojo Detailed algorithm for a RED router

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

3. Kuljetuskerros 3.1.

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

6. Kuljetuskerros 6.1. Kuljetuspalvelu End- to- end

6. Kuljetuskerros 6.1. Kuljetuspalvelu

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

peittää verkkokerroksen puutteet

S Tietoliikenneverkot S Luento 6: Liikenteenhallinta

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

3. Kuljetuskerros 3.1. Kuljetuspalvelu

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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

Page1. hteitä. ECN (Explicit Congestion Notification) Muutokset TCP:hen. IP-arkkitehtuuriin. Detailed algorithm for a RED router

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

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

Kuljetuskerroksen protokollat

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

Kuljetuskerroksen protokollat

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

OSI ja Protokollapino

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

Tietoliikenteen perusteet. Kuljetuskerros

ICMP-sanomia. 3. IP-kerroksen muita protokollia ja mekanismeja ICMP (Internet Control Message Protocol)

3. IP-kerroksen muita protokollia ja

Tietoliikenteen perusteet

Tietoliikenteen perusteet

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

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

Kuljetuskerros. Kirja sivut: ,

Vuonohjaus: ikkunamekanismi

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

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

Kuljetuskerroksen protokollat

S Tietoliikenneverkot

Salausmenetelmät (ei käsitellä tällä kurssilla)

Luento 5: Kuljetuskerros

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

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Luento 5: Kuljetuskerros luotettavan tiedonsiirron periaatteet. Syksy 2014, Tiina Niklander

ITKP104 Tietoverkot - Teoria 3

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

Transkriptio:

Limited Transmit RFC 3042: Enhansing TCP s Loss Recovery Using Limited Transmit. M. Allman, H. Balakrishnan, S. Floyd. January 2001 (Status: PROPOSED STANDARD) Lähettäjä ei saa kolmea toistokuittausta => odotettava aina ajastimen laukeamista ja suoritettava hidas aloitus => hidastaa usein turhaan lähettämistä 17.09.02 1 Ratkaisu: Lähettäjä saa lähettää yhden uuden paketin verkkoon vastaanotettuaan 1. ja 2. toistokuittauksen.» kuittaus kertoo, että verkosta poistettu paketti, joten verkkoon siis mahtuu!» Tilapäisesti ruuhkaikkunan koko ylitetään kahdella MSS:llä Kun saman paketin toistokuittauksia tulee kolme, niin suoritetaan nopea uudelleenlähetys ja nopea toipuminen (fast recovery) 17.09.02 2 Vaikka ruuhkaikkuna on pieni, niin rajoitetulla lähetyksellä saadaan tarvittaessa syntymään kolme toistokuittausta paketti 0 paketti 1 paketti 2 paketti 3 ensikuittaus 1. toistok. paketti 4 2. toistok. 3. toistok. 17.09.02 3 Miksi lähetetään uusi paketti? Miksi ei heti ensimmäisen toistokuittauksen jälkeen lähetä uudestaan sitä jo lähetettyä kuittaamatonta pakettia? Koska ei vielä olla varmoja siitä, että paketti on todella kadonnut. Se voi olla vain viivästynyt tai paketit ovat matkalla joutuneet väärään järjestykseen => näin vältetään turhia uudelleenlähetyksiä 17.09.02 4 SACK (Selective Acknowledgement) RFC 2018 TCP Selective Acknowledgement Options. M. Mathis, J. Mahdavi, S.Floyd, A. Romanow. October 1996. (Status: PROPOSED STANDARD) INTERNET DRAFT Mark Allman, Ethan Blanton. "A Conservative SACK-based Loss Recovery Algorithm for TCP". (draft-allman-tcp-sack-02.txt), January, 2001 Valikoivien kuittauksien lisääminen TCP:hen TCP käyttää Go Back N -tyyppistä algoritmia ja kumulatiivistä ACK-kuittausta väärässä järjestyksessä saapuneet yleensä talletetaan 17.09.02 5 Nopea toipuminen ei onnistu! ACK 0 ACK 1 Seq 1 Segmentit häviävät Joka kierroksella pystytään uudelleenlähettämään vain yksi kadonnut segmentti, koska kuittaus paljastaa vain seuraavan puuttuvan. * jos lähetetään monta uudelleen => voi aiheutua turhia uudelleenlähetyksiä 17.09.02 6

Kumulatiivinen kuittaus paljastaa aina vain yhden puuttuvan kerrallaan SACK paljastaa kaikki puuttuvat» ilmoittamalla, mitkä segmenttivälit on jo vastaanotettu Esim. Segmentin koko 1000 tavua 1. segmentti katoaa ja muut tulevat perille segmentin 2 kuittaus: ACK 0, 1000: 1999 segmentin 10 kuittaus: ACK 0, 1000: 9999 1.ja3.segmentti katoavat segmentin 10 kuittaus: ACK 0, 1000:1999 3000:9999 17.09.02 7 SACK-optiot SACK- permitted yhteyden muodostuksessa eli vain SYN-segmentissä ilmoittamaan, että yhteydellä voidaan käyttää SACK-kuittauksia (type = 4, length = 2) SACK-optio kuljettaa lisäinformaatiota saapuneista segmenteistä eli kertoo, mitkä tavupätkät ovat jo valmiina vastaanottajan puskurissa kuljetetaan TCP-segmentin optio-osassa 17.09.02 8 TCP:n SACK-optio 1. Lohkon alku 1. Lohkon loppu 2. Lohkon alku 2. Lohkon loppu 3. Lohkon alku 3.lohkon loppu Optiotyyppi 5 pituus 4 lohkoa mahtuu yhteen TCP-segmenttiin, jossa optiolle on varattu 40 tavua, jos ei käytetä muita optioita kuten aikaleimaa (timestamp). 17.09.02 9 Vain neuvoa-antava! Ohjeellista tietoa lähettäjälle vastaanottaja voi tarvittaessa poistaa SACKoptiossa ilmoittamiaan tavuja puskureistaan Jos vastaanottaja käyttää SACK-optiota, niin sitä on käytettävä aina kun vastaanottajalla on puskureissaan epäjärjestyksessä olevaa dataa tällöin kaikissa ACK:ssa on oltava ajantasalla oleva tieto siitä, mitkä tavut on jo puskureissa 17.09.02 10, seq 1 Toipuminen SACK:n avulla 0 1 2 3 4 5 6 7 S S S S ACK 0, SACK 400-499 ACK 0, SACK 400-599 ACK 0, SACK 400-699 ACK 0, SACK 400-799 ACK 1, SACK 0-99, 400-799 ACK 2, SACK 0-199, 400-799 ACK 3, SACK 0-299, 400-799 ACK 8, SACK 0-799 17.09.02 11 Ruuhkanhallinta SACK:ia käytettäessä Noudatettava käytettyä ruuhkanhallintaalgoritmia ei uudelleenlähetystä heti 1. puuttuvan jälkeen rajoitettu lähetys puuttuvan jälkeen» toimitaan ruuhkatilanteen mukaan hidas aloitus: 1 tai 2 segmenttiä ensin, kun niihin kuittaus sitten kaksinkertaistetaan lähetys jne nopea toipuminen: yksi segmentti, jokaisesta kuittauksesta ja ruuhkaikkunan puolitus jos ajastin laukeaa, niin kerätty SACK-tieto ei ole enää voimassa 17.09.02 12

RED (Random Early Detection) Globaalin tahdistuksen ongelma (Global Synchronization) Aktiivinen, ennaltaehkäisevä puskurijonon hallinta parantaa TCP:n suorituskykyä Samanaikaisesti usean TCP-lähetyksen uudelleenlähetysajastin laukeaa ja useat proaktiivinen <=> reaktiivinen TCP:t vähentävät hyvin voimakkaasti Ongelma: lähettämistään hitaan aloituksen takia. Kun ruuhka on syntymässä, puskurien jonot => verkon vajaakäyttöisyys kasvavat ja lopulta puskurit täyttyvät ja paketteja joudutaan hävittämään lähettäjät kasvattavat lähettämistään» yleensä pudotetaan viimeksi saapuvat paketit hitaassa ajoituksessa melko nopeasti ja tail-drop jossain määrin samassa tahdissa tässä vaiheessa usein poistetaan paljon paketteja => ruuhka verkossa 17.09.02 monelta lähettäjältä 13 17.09.02 14 Verkon suorituskyky on huono! ruuhka Paketteja pudotaan jonoista Hidas aloitus vähentää liikennettä Hidas aloitus kasvattaa kuormaa melko nopeasti vajaakäyttö Oskilloidaan koko ajan ruuhkan ja vajaakäytön välillä eikä yhteyksillä saavuteta tasaista kuittauksien RED tahdistamaa lähetysputkea. 17.09.02 16 17.09.02 15 Tehokkaampi puskurijonojen hallinta Puskureiden koon kasvattaminen ei ratkaise ongelmaa. Miksi ei? Pitää ennakoida ruuhkatilanteen kehittyminen ja reagoida siihen ennenkuin tilanne tulee niin pahaksi, että joudutaan poistamaan paljon paketteja samalla kertaa. => Aktiivinen puskurijonon hallinta => Miten RED toimii? Jonon pituutta tarkkaillaan koko ajan aina kun jonoon tulee paketti, niin» jos jonon pituus < minimi kynnyspituus, paketti laitetaan jonoon» jos jononpituus >= maksimi kynnyspituus, paketti hävitetään» jos jonon pituus minimi ja maksimi kynnysarvojen välissä, niin todennäköisyydellä P paketti hävitetään ja todennäköisyydellä 1-P laitetaan jonoon» hävittämistodennäköisyys kasvaa, kun jononpituus kasvaa 17.09.02 17 Jonon pituuden vaikutus Aina hävitetään THmax RED-puskuri Kasvavalla todennäköisyydella P hävitetään THmin Ei koskaan hävitetä 17.09.02 18 0

Kun paketti saapuu FIFO-tyyppiseen ulostulojonoon: Pyritään pitämään jonon pituus koko ajan annetuissa rajoissa hävittämällä paketteja kun jonon pituus kasvaa eli voi tulla ruuhka Hävittämistodennäköisyys kasvaa, kun jono kasvaa. Hävittämistodennäköisyys kasvaa, kun paketteja ei ole hävitetty 17.09.02 19 Lasketaan keskimääräinen jononpituus painotettuna keskiarvona aikaisemmista jononpituuksista avg <- (1-wq)*avg + wq* q jos jonon pituus q = 0 m<- f(time - q_time) avg<- (1-wq)**m * avg arvioidaan, kuinka monta pikkupakettia (= m) olisi voitu siirtää sinä aikana, jonka jono on ollut tyhjänä wq ~ 0.002 => avq reagoi hitaasti jonon pituuden muutoksiin 17.09.02 20 Hävittämistodennäköisyyden laskeminen Jos jononpituus avq on välillä Thmin ja Thmax, on laskettava hävittämistodennäköisyys P mitä pitempi jono, sitä suurempi P Pb = Pmax (avq-thmin)/(thmax-thmin) THmax avg THmin Suositus Pmax = 0.02=> kun agv=1/2(thmax-thmin), niin 2 pakettia sadasta hävitetään. 17.09.02 21 Lisäksi pyritään tekemään hylkäämiset tasavälein estämään hylkäysryöpyt mitä pitempään ei ole hylätty yhtään, sitä suurempi hylkäystodennäköisyys avg:n ollessa Thminin ja Thmaxin välissä muuttuja count laskee peräkkäisiä hylkäämättömiä paketteja Pa <- Pb /(1-count*Pb) Pa = hylkäämiskriteerinä käytetty todennäköisyys (P) 17.09.02 22 ECN (Explicit Congestion Notification) ruuhkan estämiseen erityisesti globaalin tahdistumisen estämiseen ryöppyisen liikenteen sorsiminen estämiseen» liikenneryöpyt usein ruuhkan syy» ryöppyisen liikenteen lähteet joutuvat kokemaan pakettien hylkäämistä tasaisen liikenteen lähteitä enemmän rajoittaa keskimääräistä jononpituutta => rajoittaa keskimääräistä viivettä The Addition of Explicit Congestion Notification (ECN) to IP, K. K. Ramakrishnan, Sally Floyd, D. Black. (draft-ietf-tsvwg-ecn-01.txt), January 2001. (STATUS: INTERNET DRAFT) TCP and Explicit Congestion Notification. ACM Computer S. Floyd., Communications Review, 24, October 1994 17.09.02 23 17.09.02 24

Lisäys IP-arkkitehtuuriin! Käyttöön 2 bittiä, joita käytetään ruuhkasta ilmoittamiseen CE-bitti (Congestion Experienced)» reititin asettaa, kun on havainnut ruuhkaa» esim. kun RED-algoritmin jononpituus indikoi ruuhkaa ECT-bitti (ECN Capable Transport)» kertoo, että kuljetuskerros kykenee käsittelemään ruuhkailmoituksia (Explixit Congestion Notification) IPv4: TOS-kentän bitit 7 ja 6 ehdotettu Muutoksia TCP-hen Sovittava vastapuolen kanssa ECN:n käytöstä osattava reagoida CE-bitin asetukseen vastaanottajan ilmoitettava lähettäjälle» ECN Echo -lippu lähettäjän vähennettävä lähetystään samalla tavalla kuin jos paketti olisi todella kadonnut lähettäjän ilmoittava vastaanottajalle, että on vähentynyt jo lähettämistään» Congestion Window Reduced (CWR) -lippu 17.09.02 IPv6: Traffic Class -kentän bitit 7 ja 6 ehdotettu 25 17.09.02 26 Yhteydenmuodostus Yhteyden muodostusvaiheessa sovitaan ECN:n käytöstä käyttäen ECN Echo - lippua (bitti 9 TCP-otsakkeen varattukentässä) SYN (ECN, CWR) SYN ACK (ECN) 17.09.02 27 Kun käytöstä on sovittu, lähetettyjen IPpakettien ECT-kenttä on asetettu» jos ei ole asetettu, ei vastaanottajan tule reagoida kun vastaanottaja saa ruuhkasta ilmoittavan IP-paketin, sen tulee kuittauksessa asettaa ECN Echo -bitti CE-bittejä asetetaan kuittauksiin niin kauan, kunnes saadaan paketti, jossa CWR-bitti on asetettu 17.09.02 28 NewReno Kun lähettäjä saa kuittauksen, jossa ECN Echo -bitti on asetettu, niin sen tulee puolittaa ruuhkaikkuna pienentää hitaan aloituksen lopettamisen kynnysarvoa toiminta sama kuin paketin kadotessa vähennys korkeintaan kerran yhden kiertoviiveen aikana RFC 2581: TCP Congestion Control M. Allman, V. Paxson, W. Stevens April 1999 (Obsoletes RFC 2001) (Status: PROPOSED STANDARD) RFC 2582: The NewReno Modification to TCP s Fast Recovery Algorithm S. Floyd, T. Henderson, April 1999 (Status: EXPERIMENTAL) 17.09.02 29 17.09.02 30

Nopea toipuminen (Fast Recovery) Toteutettiin ensimmäisen kerran 1990 Reno-versioon Ei toimi hyvin, jos useita paketteja katoaa tarvitaan kiertoaika jokaista kadonnutta pakettia kohden eräs ratkaisu on SACK-optio kuittauksessa ilmoitetaan, mitkä saatu kunnolla ja mitkä vielä puuttuvat 17.09.02 31 Kun useita segmenttejä katoaa samasta ikkunasta Seq 1 ACK 0 ACK 1 Segmentit häviävät Joka kierroksella pystytään uudelleenlähettämään vain yksi kadonnut segmentti!! 17.09.02 32 NewReno -ratkaisu Kun saadaan kolmas toistokuittaus, niin Lähetetään segmentti asetetaan kynnysarvo ssthresh = max mikäli ruuhkaikkuna ja vastaanottajan ikkuna (FlightSize / 2, 2*MSS) tämän sallii ja talletetaan viimeksi lähetetty järjestysnumero Kun segmenttiin saadaan kuittaus, muuttujaan recover se joko kuittaa kaikki recover -.muuttujan Lähetetään puuttuva segmentti ja asetetaan ilmoittamaan arvoon asti => toipuminen ruuhkaikkunan arvoksi suoritettu loppuun cwnd to= ssthresh + 3*MSS tai kuittaus on johonkin aikaisempaan kaikki vielä tulevat toistokuittaukset järjestysnumeroon kasvattavat ruuhkaikkunaa yhdellä MSS:lla 17.09.02» osittainen kuittaus (partial ACK) 34 17.09.02 33 Kun tulee osittainen kuittaus Lähetetään uudelleen ensimmäinen kuittaamaton segmentti, kasvatetaan ruuhkaikkunaa kuitatuilla ja vähennetään siitä juuri lähetetty lähetetään uusia segmentteja, jos ruuhkaikkuna ja vastaanottajan ikkuna tämän sallii ja jatketaan toipumisvaihetta Eri versioita Pitäisikö kuitenkin uudelleenlähettää kerralla useampi kuin yksi? Miten ajastin tulisi parhaiten asettaa kun uudelleenlähetetään segmentti? Yms. Nyt ollaan jo melko kaukana itse standardista. Nämä ovat yhä avoimia tutkimuskysymyksiä! 17.09.02 35 17.09.02 36

Uudelleenlähetysajastin RFC 2988: Computing TCP s Retransmission Timer. V. Paxson, M. Allman. November 2000 (Status: PROPOSED STANDARD) Yhteyden muodostus perusmalli hyvin yksinkertainen ongelmana viivästetyneet kaksoiskappaleet» esim. yhteys pankkiin laskun maksamiseksi» lasku maksetaan useaan kertaan =>yksikäsitteisen yhteyden muodostaminen vaikeaa 17.09.02 37 17.09.02 38 Yhteydenmuodostus: perusmalli TL TL CR CONNECT Hyvin yksinkertaista! ACK SEND 17.09.02 39 CR CR ACK Yhteyden muodostus ruuhkaisessa verkossa Jokainen paketti lähetetään kahteen kertaan CLOSE Kun yhteys on purettu, CLOSE viivästyneet kaksoiskappaleet saapuvat ACK CR Ne tulkitaan uudeksi yhteydeksi, ja data otetaan vastaan kahteen kertaan! CLOSE 17.09.02 40 Ongelman ratkaisuehdotuksia: kertakäyttöiset kuljetusosoitteet» nimipalvelu? yhteystunnus jokaiselle yhteydelle yhteyden purkamisen jälkeen sen TPDU:t epäkelpoja» lista epäkelvoista yhteystunnuksista kuinka kauan historiatietoja säilytettävä? entä jos kone kaatuu ja unohtaa tietonsa? rajallinen elinikä paketeille» elinaikalaskuri, hyppylaskuri 17.09.02 41 Tomlinsonin menetelmä koneessa vikasietoinen kello» etenevä laskuri» vaikka kone kaatuu, laskuri toimii yhteyttä muodostettaessa» kellon bitit ilmoittavat numeroinnin aloituskohdan» bittejä riittävästi (32 bittiä) jotta uudelleen käyttöön vasta riittävän pitkän ajan päästä vanhoilla numeroilla varustetut segmentit ehtivät hävitä yhteydellä ei koskaan kahta saman numeroista segmenttiä 17.09.02 42

Kello: k bittiä Kun kone kaatuu» se kadottaa tiedon viimeksi käytetystä järjestysnumerosta» uusi numero ei saa olla sama kuin jonkun vielä elossa olevan TPDU:n järjestysnumero: Eri yhteyksillä numerointi aloitetaan eri kohdasta 17.09.02 43 Miten selvitään tilanteesta? odotetaan T aikayksikköä» kaikki aikaisemmat TPDU:t varmasti kadonneet ja voidaan aloittaa, mistä numerosta tahansa» entä, jos T on pitkä kielletyn alueen (forbidden region) käyttö» ei oteta käyttöön numeroita, joiden duplikaatit voivat olla vielä elossa 17.09.02 44 Kolminkertainen kättely järjestysnumerot Kielletty alue aina ennen uuden paketin lähettämistä tarkistetaan, ettei järjestysnumero ole kielletyllä alueella aika 17.09.02 45 CR(nro=x) CA(nro=y, ack=x) DATA(nro=x,ack=y) yhteyspyynnössä pyytäjän nro x vahvistuksessa sekä pyytäjän että suostujan numero ensimmäisessä datalähetyksessä molemmat numerot 17.09.02 46 Kuittaukset TCP:ssä TCP käyttää kumulatiivista kuittausta kuittaus varmistaa lähettäjälle, että kaikki segmentit kuitattuun segmenttiin saakka ovat saapuneet kunnolla perille väärässä järjestyksessä saapuneita segmenttejä ei kuitata ei käytetä NAK-kuittausta duplicate ACK = virhetilanteissa lähetetään uudelleen kuittaus samasta jo kuitatusta segmentistä 17.09.02 47 Uudelleenlähettäminen timeout TCP lähettää segmentin uudestaan, kun ajastin laukeaa TCP ei automaattisesti lähetä kaikkia puuttuvan segmentin jälkeisiä segmenttejä uudelleen Seq=92, 8 B dataa Seq=100, 20 B dataa ACK= 120 Seq=92, 8 B dataa 17.09.02 48

Vain osin Go-Back -N -tyyppinen timeout Oletetaan, että segmentit 1-N tulevat oikein perille ja kuittaus esim. segmenttiin 1 katoaa. Jos muut kuittaukset tulevat perille, enintään yksi segmentti 1 uudelleenlähetetään. Eikä sitäkään tarvitse lähettää, jos seuraava kuittaus tulee ennen ajastimen laukeamista Seq=92, 8 B dataa Seq=100, 20 B dataa Kuittaukset voivat kadota Erilliset kuittaukset eli pelkät ACK:it eivät sisällä yhtään tavua dataa, joten niitä ei numeroida eikä kuitata. Kuittauksia voi helposti hävitä ACK =100 ACK= 120 17.09.02 49 Kumulatiivisissa kuittauksissa seuraava kuittaus paikkaa hävinneen informaation 17.09.02 50 17.09.02 51