Kappale 3, Siirto Taso. Osa 2 Käännös Mirja Hosionaho 100% Tietoverkot: ylhäältä alas lähestyminen

Samankaltaiset tiedostot
Chapter 3 Transport Layer. Kuljetuskerros

Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Chapter 3 Transport Layer. Kuljetuskerros

kynnysarvo (threshold)

kynnysarvo (threshold)

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

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

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

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

ELEC-C7241 Tietokoneverkot Kuljetuskerros

Tietoliikenteen perusteet

Tietoliikenteen perusteet

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

OSI ja Protokollapino

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Chapter 3: Transport Layer

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

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

Kappale 3, Siirto Taso. Luento-osuus 1 Käännös Mirja Hosionaho 100% Tietoverkot: ylhäältä alas lähestyminen

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

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

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

TCP:n vuonohjaus (flow control)

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

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

Tietoliikenne II Kurssikoe

100 % Kaisu Keskinen 3-1

Tietoliikenteen perusteet. Kuljetuskerros

Kappale 3 Kuljetustaso

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Verkkoliikennettä Java[ssa lla] Jouni Smed

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

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

Kuljetuskerros. Kirja sivut: ,

Chapter 3 Transport Layer. Kuljetuskerros

Kuljetuskerroksen protokollat

Monimutkaisempi stop and wait -protokolla

5. Ruuhkan valvonta. yleistä ruuhkan valvonnasta ruuhkan estäminen. ruuhkan säätely. liikenteen tasoittaminen. kuorman rajoittaminen

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

Kuljetuskerroksen protokollat

Yleistä ruuhkasta. 5. Ruuhkan valvonta. ruuhkan valvonta <=> vuon valvonta. open-loop control. closed-loop control

5. Ruuhkan valvonta. yleistä ruuhkan valvonnasta ruuhkan estäminen. vuotava ämpäri, vuoromerkkiämpäri liikennevirran määrittely

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

3. Kuljetuskerros 3.1. Kuljetuspalvelu

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/

11/20/ Siirron optimointi

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

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

Tietoliikenteen perusteet

Vuonohjaus: ikkunamekanismi

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

S Tietoliikennetekniikan perusteet. Pakettikytkentäiset verkot. Helsinki University of Technology Networking Laboratory

Monimutkaisempi stop and wait -protokolla

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

Monimutkaisempi stop and wait -protokolla

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

S Teletekniikan perusteet

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Kuljetuskerroksen protokollat

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

Tietoliikenne II (2 ov)

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

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Selektiiviset kuittaukset (RFC 2018, RFC 3517)

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

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

Siltojen haitat. Yleisesti edut selvästi suuremmat kuin haitat 2/19/ Kytkin (switch) Erittäin suorituskykyisiä, moniporttisia siltoja

7. Palvelun laatu (QoS) Internetissä

7. Palvelun laatu (QoS) Internetissä

Tehtävä 2: Tietoliikenneprotokolla

1. Tietokoneverkot ja Internet Tietokoneesta tietoverkkoon. Keskuskone ja päätteet (=>-80-luvun alku) Keskuskone ja oheislaitteet

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

Kiertokysely. Sulautetut järjestelmät Luku 2 Sivu 1 (??)

ZYXEL 645R MODEEMIN ASENTAMINEN SILLATTUUN SAUNALAHDEN ADSL- LIITTYMÄÄN

Sähköpostitilin käyttöönotto

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

3. Kuljetuskerros 3.1.

LYTH-CONS CONSISTENCY TRANSMITTER

Siltojen haitat Yleisesti edut selvästi suuremmat kuin haitat

ITKP104 Tietoverkot - Teoria 3

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

Nopea uudelleenlähetys (Fast retransmit)

Nopea uudelleenlähetys (Fast retransmit)

Ongelma 1: Ei saada kolmea toistokuittausta

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

ESPOO VANTAA INSTITUTE OF TECHNOLOGY. ser 0/0. Right WS-3 WS-4. Ennen QoS-määrittelyjä tehdään normaalit reititinmäärittelyt ja testataan IP-yhteys:

Tekninen kuvaus Aineistosiirrot Interaktiiviset yhteydet iftp-yhteydet

1. Tietokoneverkot ja Internet

TW-LTE 4G/3G. USB-modeemi (USB 2.0)

Transkriptio:

Kappale 3 Siirto Taso Kappale 3, Osa 2 Käännös Mirja Hosionaho 100% Tietoverkot: ylhäältä alas lähestyminen 6 painos Jim Kurose, Keith Ross Addison-Wesley Maaliskuu 2012 Transport Layer 3-1

Kappale 3 sisältö 3.1 siirtokerroksen palvelut 3.2 yhdestä moneen ja monesta yhteen 3.3 yhteysvapaa siirto: UDP 3.4 luotettavan siirron periaatteet 3.5 yhteyskeskeinen siirto: TCP segmenttirakenne luotettava data:n siirto vuon hallinta yhteyden hallinta 3.6 ruuhkan hallinnan periaatteet 3.7 TCP ruuhkanhallinta Transport Layer 3-2

TCP: Katsaus RFCs: 793,1122,1323, 2018, 2581 pisteestä-pisteelle: yksi lähettäjä, yksi vastaanottaja luotettava, järjestyksessä bittihöyry: ei viestirajoja putkitettu: TCP ruuhka- ja virtaohjaus asettaa ikkunan koon täysi duplex data: kaksi-suuntainen data virta samassa yhteydessä MSS: maksimi segmentti koko yhteys-orientoitu: kättely (ohjausviestien vaihto) aktivoi lähettäjän, vastaanottajan tila ennen datavaihtoa virtaohjattu: lähettäjä ei tule hukuttamaan Transport Layer 3-3

TCP segmentin rakenne URG: kiireellinen tieto (tyypillisesti ei ACK: käytössä) ACK # pätevä PSH: puskutieto nyt (yleisesti ei käytössä) RST, SYN, FIN: yhteyden luonti (asennus,purka miskomennot) Internet checksum (UDP: na) 32 bittiä lähde portti # määränpää sekvenssi numero portti # pää ei käyt össä checksum kuittausnumero UAP R S F sovellustieto (vaihteleva pituus) vastaanotto ikkuna kiireellisen tiedon osoitin asetukset (vaihteleva pituus) lasketaan tiedon bitit (ei segmentit!) # bitit rcvr valmis hyväksym ään Transport Layer 3-4

TCP sekv. numerot, ACK: t sekvenssinumerot: bittivirta ensimmäisen bitin numero segmentin tiedoissa kuittaukset: sekv # seuravan bitin odotetaan toiselta puolelta kertyvä ACK kysymys: miten vastaanottaja käsittelee epäjärjestyksessä olevat segmentit vastaus: TCP spec ei sano, - toteuttajan vastuulla lähtevä segmentti lähettäjältä lähdeportti # määränpä äportti # sekvenssinumero kuittausnumero rwnd checksum lähete tty kuitatt u kiir osoitin lähetetty, ei vielä kuitattu ( lennossa ) ikkunan koko N lähettäjän sekvenssinumeron tila lähtöportti# dest port # sekvenssinumerot kuittausnumero A rwnd checksum käyettäviss ei ä, mutta ei käytettä lähetetty vissä tuleva segmentti kähettäjältä urg pointer Transport Layer 3-5

TCP sekv. numerot, ACK: t isäntä A isäntä B käyttäj ä kirjoitt aa C isäntä ACK: t kuitti kaikunees ta C Sekv=42, ACK=79, tieto = C Sekv=79, ACK=43, tieto= C Sekv=43, ACK=80 yksinkertainen telnet skenaario isännän ACK: t kuitti C, kaikuu takaisin C Transport Layer 3-6

TCP round trip time, timeout Q: how to set TCP timeout value? longer than RTT but RTT varies too short: premature timeout, unnecessary retransmissions too long: slow reaction to segment loss Q: how to estimate RTT? SampleRTT: measured time from segment transmission until ACK receipt ignore retransmissions SampleRTT will vary, want estimated RTT smoother average several recent measurements, not just current SampleRTT Transport Layer 3-7

RTT (milliseconds) TCP round trip time, timeout EstimatedRTT = (1- α)*estimatedrtt + α*samplertt exponential weighted moving average influence of past sample decreases exponentially fast typical value: α = 0.125 RTT: gaia.cs.umass.edu to fantasia.eurecom.fr samplertt EstimatedRTT time (seconds) Transport Layer 3-8

TCP round trip time, timeout timeout interval: EstimatedRTT plus safety margin large variation in EstimatedRTT -> larger safety margin estimate SampleRTT deviation from EstimatedRTT: DevRTT = (1-β)*DevRTT + β* SampleRTT-EstimatedRTT (typically, β = 0.25) TimeoutInterval = EstimatedRTT + 4*DevRTT estimated RTT safety margin Transport Layer 3-9

Chapter 3 outline 3.1 transport-layer services 3.2 multiplexing and demultiplexing 3.3 connectionless transport: UDP 3.4 principles of reliable data transfer 3.5 connection-oriented transport: TCP segment structure reliable data transfer flow control connection management 3.6 principles of congestion control 3.7 TCP congestion control Transport Layer 3-10

TCP reliable data transfer TCP creates rdt service on top of IP s unreliable service pipelined segments cumulative acks single retransmission timer retransmissions triggered by: timeout events duplicate acks let s initially consider simplified TCP sender: ignore duplicate acks ignore flow control, congestion control Transport Layer 3-11

TCP sender events: data rcvd from app: create segment with seq # seq # is byte-stream number of first data byte in segment start timer if not already running think of timer as for oldest unacked segment expiration interval: TimeOutInterval timeout: retransmit segment that caused timeout restart timer ack rcvd: if ack acknowledges previously unacked segments update what is known to be ACKed start timer if there are still unacked segments Transport Layer 3-12

TCP sender (simplified) Λ NextSeqNum = InitialSeqNum SendBase = InitialSeqNum wait for event ACK received, with ACK field value y data received from application above create segment, seq. #: NextSeqNum pass segment to IP (i.e., send ) NextSeqNum = NextSeqNum + length(data) if (timer currently not running) start timer timeout retransmit not-yet-acked segment with smallest seq. # start timer if (y > SendBase) { SendBase = y /* SendBase 1: last cumulatively ACKed byte */ if (there are currently not-yet-acked segments) start timer else stop timer } Transport Layer 3-13

timeo ut timeo ut TCP: retransmission scenarios Host A Host B Host A Host B SendBase=92 Seq=92, 8 bytes of data X ACK=100 Seq=92, 8 bytes of data Seq=100, 20 bytes of data ACK=100 ACK=120 Seq=92, 8 bytes of data SendBase=100 Seq=92, 8 bytes of data ACK=100 SendBase=120 ACK=120 SendBase=120 lost ACK scenario premature timeout Transport Layer 3-14

timeo ut TCP: retransmission scenarios Host A Host B Seq=92, 8 bytes of data Seq=100, 20 bytes of data X ACK=100 ACK=120 Seq=120, 15 bytes of data cumulative ACK Transport Layer 3-15

TCP ACK generation [RFC 1122, RFC 2581] event at receiver arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed arrival of in-order segment with expected seq #. One other segment has ACK pending arrival of out-of-order segment higher-than-expect seq. #. Gap detected arrival of segment that partially or completely fills gap TCP receiver action delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK immediately send single cumulative ACK, ACKing both in-order segments immediately send duplicate ACK, indicating seq. # of next expected byte immediate send ACK, provided that segment starts at lower end of gap Transport Layer 3-16

TCP fast retransmit time-out period often relatively long: long delay before resending lost packet detect lost segments via duplicate ACKs. sender often sends many segments back-to-back if segment is lost, there will likely be many duplicate ACKs. TCP fast retransmit if sender receives 3 ACKs for same data ( triple duplicate ACKs ), ACKs ), resend unacked segment with smallest seq # likely that unacked segment lost, so don t wait for timeout Transport Layer 3-17

timeo ut TCP fast retransmit Host A Host B Seq=92, 8 bytes of Seq=100, data 20 bytes of data X ACK=100 ACK=100 ACK=100 ACK=100 Seq=100, 20 bytes of data fast retransmit after sender receipt of triple duplicate ACK Transport Layer 3-18

Kappale 3: viritys 3.1 Siirtokerros palvelut 3.2 Yhdestä moneen ja monesta yhteen 3.3 Yhteydetön siirto: UDP 3.4 Luotettavan data: siirron periaatteet 3.5 Yhteyskeskeinen siirto: TCP segmenttirakenne luotettava data:n siirto tietovirran hallinta yhteyden hallinta 3.6 Ruuhkan hallinnan periaatteet 3.7 TCP ruuhkan hallinta Transport Layer 3-19

TCP virran hallinta sovellus ehkä lukee (poistaa) dataa TCP socket:in tulosbufferista. hitaammin kuinn TCP vastaanottaja sitä tuottaa (lähettäjä lähettää) sovellus prosessi TCP socket tulobufferit TCP ohje lma sovellus OS Virran vastaanottaja antaa palautetta hallinta lähettäjälle, siten, että lähettäjä lähettää vain käsiteltävissä olevan määrän dataa lähettäjältä IP ohje lma vastaanottajan protokollapino Transport Layer 3-20

TCP virran hallinta vastaanottaja mainostaa vapaata vo-tilaa lisäämällä rwnd-arvon TCP otsikkoalueen vo:lta lähettäjälle segmenttiin RcvBuffer koko asetettu socket-optiona (tyypillisesti oletus on 4096 tavua) monet käyttöjärjestelmät säätävät automaattisesti RcvBuffer-arvoa lähettäjä rajoittaa vahvistamattomien ( matkalla ) olevien lähetysten määrää rwndarvon avulla takaa, että vo:bufferit ei RcvBuffer rwnd sovellukseen prosessi bufferoitu data vapaa bufferitila TCP segmentin siirrettävä data vo-puolen bufferointi Transport Layer 3-21

Kappale 3 pääkohdat 3.1 siirtokerroksen palvelut 3.2 yhdestä moneen ja monesta yhteen 3.3 yhteysvapaa siirto: UDP 3.4 luotettavan siirron periaatteet 3.5 yhteyskeskeinen siirto: TCP segmenttirakenne luotettava data:n siirto vuon hallinta yhteyden hallinta 3.6 ruuhkan hallinnan periaatteet 3.7 TCP ruuhkanhallinta Transport Layer

Yhteyden hallinta ennen datan vaihtoa, lähettäjä/vo kättelevät : myöntää liittymän (jokainen tietää toisen haluavan yhteyden muodoststamista) yhteisymmärrysliittymän parametreistä sovellus liittymän tila: ESTAB liittymän muuttujat: seq # asiakas>palvelin palvelin<asiakas rcvbuffer koko palvelimella, asiakkaalla verkko sovellus liittymän tila: ESTAB Liittymän muuttujat: seq # asiakas>palvelin palvelin<asiakas rcvbuffer koko palvelimella, asiakkaalla verkko Socket clientsocket = newsocket("hostname","port number"); Socket connectionsocket = welcomesocket.accept(); Transport Layer 3-23

Myöntyy yhteyden muodostamiseen Kaksisuuntainen kättely: ESTAB valitse x ESTAB Puhutaa n OK req_conn(x) acc_conn(x) ESTAB ESTAB Q: toimiiko 2- suuntainen kättely aina verkossa? vaihtelevia viiveitä uudelleenlähetetyt viestit (e.g. req_conn(x)) viestin katoamisen seurauksena viestien uudelleenjärjestäminen ei tiedä toisen tilannetta Transport Layer 3-24

Myöntyy yhteyden muodostamiseen 2-suuntaisen kättelyn epäonnistumistilanteita: choose x retransmit req_conn(x) req_conn(x) acc_conn(x) ESTAB choose x retransmit req_conn(x) req_conn(x) acc_conn(x) ESTAB ESTAB asiakas päättää yhteyden req_conn(x) yhteys x valmistuu palvelin unohtaa yhteyden x ESTAB retransmit data(x+1) client terminates data(x+1) connection x completes req_conn(x) accept data(x+1) server forgets x puoliavoin yhteys! (ei asiakasta!) ESTAB data(x+1) ESTAB accept data(x+1) Transport Layer 3-25

TCP 3-kertainen kättely asiakastil kuunte lee SYNSENT ESTAB valitsee alkup. järj. num, x lähettää TCP SYN viestin vastaanottaa SYNACK(x) kertoo palvelin Ok; lähettää ACK:in SYNACK:ista; tämä segmentti ehkä sisältää asikkaalta palvelimelle dataa SYNbit=1, Seq=x SYNbit=1, Seq=y ACKbit=1; ACKnum=x+1 ACKbit=1, ACKnum=y+1 choose init seq num, y send TCP SYNACK msg, acking SYN vastaanottaa ACK(y) kertoo asiakas Ok. palvelin tila kuunte lee SYN RCVD ESTAB Transport Layer 3-26

TCP 3-kertainen kättely: rajallinen tilakone (FSM) closed Socket connectionsocket = welcomesocket.accept(); SYN(x) SYNACK(seq=y,ACKnum=x+1) create new socket for communication back to client Λ listen Socket clientsocket = newsocket("hostname","port number"); SYN(seq=x) SYN rcvd SYN sent ACK(ACKnum=y+1) Λ ESTAB SYNACK(seq=y,ACKnum=x+1) ACK(ACKnum=y+1) Transport Layer 3-27

TCP: sulkemassa yhteyttä asiakas, palvelin molemmat sulkevat oman puolen yhteydestä lähettää TCP segmentin, jossa FIN bit = 1 vastaa saatuun FIN:iin ACK:in avulla luettaessa FIN, ACK:iin voidaan liittää oma FIN yhtäaikainen FIN:in vaihto voidaan käsitellä Transport Layer 3-28

TCP: sulkemassa yhteyttä asiakkaan tila ESTAB palvelimen tila ESTAB clientsocket.close() FIN_WAIT_1 FIN_WAIT_2 TIMED_WAIT ei voi enää lähettää mutta voi vastaanottaa odottaa palvelimen close-viestiä ajoitettu wait 2*segmentin elinaika FINbit=1, seq=x ACKbit=1; ACKnum=x+1 FINbit=1, seq=y ACKbit=1; ACKnum=y+1 voi vielä lähettää data ei voi enää lähettää dataa CLOSE_WAIT LAST_ACK CLOSED CLOSED Transport Layer 3-29

Kappale 3 pääkohdat 3.1 siirtokerrospalvelut 3.2 yhdestä moneen ja monesta yhteen 3.3 yhteydetön siirto: UDP 3.4 luotettavan data:n siirron periaatteet 3.5 yhteyskeskeinen siirto: TCP segmenttirakenne luotettava data:n siirto virtauksen hallinta liittymän hallinta 3.6 ruuhkan hallinnan periaatteet 3.7 TCP ruuhkan hallinta Transport Layer 3-30

Ruuhkan hallinnan periaateet Ruuhka: Teknillisesti: liian moni lähde lähettää liikka dataa liian nopeasti että verkko voisi kestää sitä eri juttu kuin liikenteen hallinta! oireet: hävitetyt paketit (buffer täyttyminen routterissa) pitkät viiveet (jonot routerin buferissa) Yksi suurimmista ongelmista! Transport Layer 3-31

ruuhkan syyt ja hinnat: scenaario 1 kaksi lähettäjää ja kaksi vastaanottajaa yksi routteri loputon muisti linkin kaistanleveys: R ei uudelleen lähetyksiä Host B originaali data: λ in Host A unlimited shared output link buffers kaistanleveys: λ out R/2 λ out viive λ in R/2 λ in R/2 maksimi yhteyden kaistanleveyttä: R/2 viive pitenee kun λ in, lähestyy kapasiteettia Transport Layer 3-32

ruuhkan syyt ja hinnat: scenaario 2 yksi routteri, rajalline bufferi lähettäjä lähettää timeouttaavan paketin aplikaatio tason sisääntulo = aplikaatio tason ulostulo: λ in = λ out lähetys tason ulostulo sisältää uudelleen lähetykset : λ in λ in λ in : originaali data λ' in : originaali data, ja uudelleen lähetetty data λ out Host A Host B finite shared output link buffers Transport Layer 3-33

ruuhkan syyt ja hinnat: scenaario 2 idealisaatio: täysi tieto lähetetään uudelleen vain jos tiedetään että paketti hävisi R/2 λ out λ in R/2 copy λ in : originaali data λ' in : originaali data, ja uudelleen lähetetty data λ out A free buffer space! Host B finite shared output link buffers Transport Layer 3-34

ruuhkan syyt ja hinnat: scenaario 2 Idealizaatio: tiedetty häviö paketit tippuvat täyden bufferin takia lähetetään uudelleen vain jos tiedetään että paketti hävisi copy λ in : originaali data λ' in : originaail data, ja uudelleen lähetetty data λ out A no buffer space! Host B Transport Layer 3-35

ruuhkan syyt ja hinnat: scenaario 2 Idealizaatio: tiedetty häviö paketit tippuvat täyden bufferin takia lähetetään uudelleen vain jos tiedetään että paketti hävisi R/2 λ out λ in R/2 läthettäessä R/2, joitain paketteja uudellenläheteään ja toimitetaan miksi R/2 huippu on edelleen λ in : originaali data λ' in : originaali data, ja uudelleen lähetetty λ out A free buffer space! Host B Transport Layer 3-36

todellisuus: duplikaatit ruuhkan syyt ja hinnat: scenaario 2 paketit tipuvat routereissa kun ne ovat täynnä lähettäjä timeouttaa liian aikaisin ja lähettää kaksi kopiota jotka molemmat toimitetaan R/2 λ out λ in R/2 lähettäessä R/2, joitain paketteja uudelleen lähetetään ja nämä toimitetaan copy timeout λ in λ' in λ out A free buffer space! Host B Transport Layer 3-37

ruuhkan syyt ja hinnat: scenaario 2 todellisuus: duplikaatit paketit tipuvat routereissa kun ne ovat täynnä lähettäjä timeouttaa liian aikaisin ja lähettää kaksi kopiota jotka molemmat toimitetaan λ out R/2 λ in R/2 läthettäessä R/2, joitain paketteja uudelleen lähetetään ja nämä toimitetaan ruuhkan hinta : lisää toimitettavaa useampia kopiota jotka syövät kaistaa vähemmä hyödynnettävää kaistaa Transport Layer 3-38

ruuhkan syyt ja hinnat: scenaario 3 Host A uudelleen lähettetty data finite shared output link buffers Q: mitä tapahtuu kun λ in ja λ in kasvaa? neljä lähettäjää usean hypyn reitit A: kun punainen λ timeout/uudelleen lähetykset in kasvaa, kaikki saapuvat siniset paketi ylemmässä jonossa tiputetaa λ in : originaali data λ' in : originaali data, ja λ out Host B Host D Host C Transport Layer 3-39

ruuhkan syyt ja hinnat: scenaario 3 C/2 λ out λ in C/2 yksi ruuhkan hinta: kun paketteja tippu, kaikki siihen käytetyt resurssit on menneet hukkaan Transport Layer 3-40

Lähestymistapoja ruuhkautumisen hallintaan 2 yleistä lähestymistapaa ruhkautumisen hallintaan: end-end ruuhkautumisen hallinta: ei eksplisiittistä palautetta verkolta ruuhka päätellään havaittavista viiveestä ja pakettien katoamisesta lähestymistapa TCP:stä verkko pohjainen ruuhkautumisen hallinta: routerit välittävät palautetta loppusysteemeille ruuhkaa kuvataan yhdellä bitillä (SNA, DECbit, TCP/IP ECN, ATM) eksplisiittinen raja jolla lähettäjä voi lähettää Transport Layer 3-41

ATM ABR ruuhkanhallinta ABR: available bit rate: joustava palevelu jos lähetyskaistaa : kaista tulee käyttää jos ruuhkaa: lähetetään maksimilla turvallisella/varmall a nopeudella RM (resource management) solut: lähettäjä lähettää, aikaajoin datasoluja RM solun biteissä kytkin ( verkko-lähtöinen ) NI bitti: ei lisää nopeutta (lievää ruuhkaa) CI bitti: ruuhkaa RM solut palaavat lähettäjälle bittin kanssa Transport Layer 3-42

ATM ABR ruuhkan hallinta RM solu data solu kahden tavun ER (explicit rate) kokoinen tila RM solussa Ruuhka kytkin saattaa pienentää ER arvoa solussa Täten lähettäjä lähettää suurimmalla nopeudella jota pystytään tukemaan EFCI bitti datasolussa: 1 ruuhka kytkimessä Jos RM edeltävässä datasolussa EFCI, vastaanottaja laittaa CI bitin palaavassa RM solussa Transport Layer 3-43

Kappale 3 3.1 kuljetuskerroksen palvelut 3.2 multiplexing ja demultiplexing 3.3 yhteydetön lähetys: UDP 3.4 luotettavan datasiirron käytäntöjä 3.5 yhteys-puhjainen tiedonsiirto: TCP segmenttirakenne luotettava tiedonsiirto virtauksen hallinta yhteyden hallinta 3.6 ruuhkanhallinann käytäntöjä 3.7 TCP ruuhkanhallinta Transport Layer 3-44

cwnd: TCP lähettäjän ruuhkautumis ikkuna koko TCP ruuhkanhallinta: additiivinen nousu multiplikatiivinen lasku lähestymis kulma: lähettäjä nostaa lähetysnopeutta, testaa onko käytettävää kaistaa, kunnes dataa häviää additiivinen nousu: cwnd kasvaa 1 MSS joka RTT kunnes dataa häviää multiplikatiivinen lasku: cwnd pudotetaan puoleen AIMD sahalaita aalto: yritetään saada lisää kaistaa additiivisesti kasvatetaan ikkunan kokoa. kunnes dataa häviää (ikkuna puolitetaan) aika Transport Layer 3-45

TCP ruuhkanhallinta: yksityiskohdat lähettäjän sekvenssi-numeron tila cwnd viimeine n tavu ACK ei vielä lähetetty ACK ( matkalla viimeinen lähetetty tavu lähettäjä ) rajoittaa nopeutta: viimeinen lähetetty bittiviimeinen < cwnd varmennettu bitti cwnd on dynaaminen, funktio havaitulle ruuhkalle TCP lähetysnopeus: yksinkertaisesti: lähetä cwnd tavut, odota RTT ACKS, sitten lähetä lisää tavuja nop eus ~~ cwnd RTT tavua/s Transport Layer 3-46

RTT TCP hidas lähtö kun yhteys alkaa, kasvatetaan nopeutta expotentiaalisesti kunnes häviö: alussa cwnd = 1 MSS kaksinkertainen cwnd joka RTT tehdään lisäämällä cwnd jokaista saatua ACK kohtaan yhteenveto: alussa nopeus hidas mutta kasvaa hyvin nopeasti ajan kanssa Host A Host B aika Transport Layer 3-47

TCP:, häviön havainnointi ja reagointi aika ilmaisee häviöt: cwnd laitettu 1 MSS; ikkuna kasvaa expotentiaalisesti (kuten hitaassa lähdössä) raja-arvoon, sitten kasvaa lineaarisesti kolme ACK indikoi häviötä: TCP RENO kaksi ACK viittaa verkon kyvykkyyteen toimittaa paketteja cwnd on puolikas ikkuna joka kasvaa lieaarisesti TCP Tahoe aina cwnd = 1 (aikaraja tai 3 duplikaattia ACK) Transport Layer 3-48

TCP: hitaasta lähdöstä CA:han siirtyminen Q: koska expotentiaalinen nousu vaihdetaan lineaariseen? A: kun cwnd saavuttaa puolet arvostaan ennen aikarajaa. Implementaatio: muuttuja ssthresh häviön kohdalla, ssthresh = 1/2 of cwnd juuri ennen häviötä Transport Layer 3-49

yhteenveto: TCP ruuhkanhallinta Λ cwnd = 1 MSS ssthresh = 64 KB dupackcount = 0 timeout ssthresh = cwnd/2 cwnd = 1 MSS dupackcount = 0 lähetä puuttuvat segmentit dupackcount == 3 ssthresh= cwnd/2 cwnd = ssthresh + 3 lähetä puuttuva segmentti duplicate ACK dupackcount++ hida s lähtö Uusi ACK! timeout ssthresh = cwnd/2 cwnd = 1 dupackcount = 0 lähetä puuttuva segmentti new ACK cwnd = cwnd+mss dupackcount = 0 lähetä uudet segmentit kuten sallittu cwnd > ssthresh Λ timeout ssthresh = cwnd/2 cwnd = 1 MSS dupackcount = 0 lähetä segmentit uudestaan nopea palautum inen duplicate ACK new ACK cwnd = cwnd + MSS (MSS/cwnd) dupackcount = 0 lähetä uudet segmentit kuten sallittu Uusi ACK! New ACK cwnd = ssthresh dupackcount = 0 ruuhkan välttö cwnd = cwnd + MSS lähetä uudet segmentti kuten sallittu. Uusi ACK! duplicate ACK dupackcount++ dupackcount == 3 ssthresh= cwnd/2 cwnd = ssthresh + 3 lähetä puuttuvat segmentit Transport Layer 3-50

TCP läpimeno keskarvoinen. TCP läpimeno funktiona ikkunan koosta, RTT? ei huomioida hidata lähtöa, oletetaan että aina lähetettävää dataa W: ikkunan koko (tavuina) kun häviö tapahtuu keskiarvoinen ikkunan koko (# tavuina) on ¾ W keskiarvoinen läpmeno on 3/4W per RTT W W/2 keskiarvoinen TCP läpimeno = 3 4 W RTT bytes/sec Transport Layer 3-51

TCP tulevaisuus: TCP pitkän paksun linjan yli esim: 1500 tavua segmenteissä, 100ms RTT, halutaan 10 Gbps läpimeno vaaditaan W = 83,333 kulkevissa segmenteissä läpimeno hövikki huomioon ottaen, L [Mathis 1997]: TCP läpimeno = 1.22. MSS RTT L jotta saavutetaan 10 Gbps läoimeno, hävikkiration tulee olla L = 2 10-10 hyvin pieni! uusi TCP versio nopeammille yhteyksille Transport Layer 3-52

TCP Reiluus reiluus tavoitteena: jos K TCP istuntoa jakaa kaistaa R, jokaiselle tulee keskimäärin yhteysnopeus R/K TCP yhteys 1 TCP yhteys 2 pullonkaul a routerin kaista R Transport Layer 3-53

yhteys 2 läpimeno Miksi TCp on reilu? kaksi kilpailevaa sessiota: additiivinen nousu laittaa laskevan käyrän 1, kun läpimeno kasvaa multiplikatiivinen lasku laskee nopeutta tapauskohtaisesti R yhtä kuin jaettu kaista häviö: laskee ikkunan kokoa kertoimella 2 ruuhkan välttäminen: additiivinen nousu häviö: laskee ikkunan kokoa kertoimella 2 ruuhkan välttäminen: additiivinen nousu yhteys 1 läpimeno R Transport Layer 3-54

Reiluus (lisää) Reiluus ja UDP multimedia sovellukset eivät usein käytä TCP eivät halua että ruuhkanhallinta laskee yhteyttä käytetään UDP: lähettää äntä/videota vakionopeudella, sallitaan pieni häviikki Reiluus, rinnakaiset TCP yhteydet sovellus voi avata monia rinnakkaisia RCP yhteyksiä selaimet tekevät tätä esim Linkki R jossa 9 rinnakkaista yhteyttä: uusi sovellus pyytää 1 TCP, saa R/10 uusi sovellus pyytää 11 TCP, saa R/2 Transport Layer 3-55

Kappale 3: yhteenveto Kuljetuskerroksen palveluiden käytännöt: multiplexing, demultiplexing luotettava tiedonsiirto virtauksenhallinta ruuhkanhallinta asennus, käyttöönotto internetissä UDP TCP seuraavaksi: Verkon reunan jättäminen (sovellukset, kuljetuskerrokset) verkon ytimeen Transport Layer 3-56