Kuljetuskerros. Tietokoneverkot. Matti Siekkinen Pasi Sarolahti

Samankaltaiset tiedostot
ELEC-C7241 Tietokoneverkot Kuljetuskerros

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

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

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

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

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

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

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

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

kynnysarvo (threshold)

kynnysarvo (threshold)

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

TCP:n vuonohjaus (flow control)

Tietoliikenne II Kurssikoe

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietoliikenteen perusteet

Chapter 3 Transport Layer. Kuljetuskerros

Monimutkaisempi stop and wait -protokolla

3. Kuljetuskerros 3.1.

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Monimutkaisempi stop and wait -protokolla

Monimutkaisempi stop and wait -protokolla

Kuljetuskerroksen protokollat

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

Kuljetuskerroksen protokollat

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

Kuljetuskerros. Kirja sivut: ,

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/

Chapter 3 Transport Layer. Kuljetuskerros

11/20/ Siirron optimointi

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

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Kuljetuskerroksen protokollat

Nopea uudelleenlähetys (Fast retransmit)

Nopea uudelleenlähetys (Fast retransmit)

Ongelma 1: Ei saada kolmea toistokuittausta

Tietoliikenne II (2 ov)

Tietoliikenne II (2 ov)

Selektiiviset kuittaukset (RFC 2018, RFC 3517)

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

Siirron optimointi. Optimointi on usein tarpeen: Silly window syndrome

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

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

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

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

Ruuhkanvalvonta on hankalaa!

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

S Teletekniikan perusteet

Chapter 3 Transport Layer. Kuljetuskerros

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

S Tietoliikenneverkot S Luento 6: Liikenteenhallinta

Tietoliikenne II (2 ov)

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

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

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

ITKP104 Tietoverkot - Teoria 3

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

Tehtävä 2: Tietoliikenneprotokolla

1.4. Tietoliikenneohjelmistot eli protokollat

1.4. Tietoliikenneohjelmistot eli protokollat

1.4. Tietoliikenneohjelmistot eli protokollat. Protokollien kerrosrakenne. Mitä monimutkaisuutta?

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

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

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

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

Luento 6: Kuljetuskerros UDP & TCP TCP:n ruuhkanhallinta

Tietoliikenteen perusteet. Kuljetuskerros

Tietoliikenteen perusteet. Kuljetuskerros

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

Tietoliikenteen perusteet

Tietoliikenteen perusteet

Tietoliikenteen perusteet. Kuljetuskerros

OSI ja Protokollapino

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

Luento 5: Kuljetuskerros

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

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

Verkkoliikennettä Java[ssa lla] Jouni Smed

3. Kuljetuskerros 3.1. Kuljetuspalvelu

Tietoliikenteen perusteet. Kuljetuskerros

ABTEKNILLINEN KORKEAKOULU Tietoverkkolaboratorio

AB TEKNILLINEN KORKEAKOULU

Yhteenveto. CSE-C2400 Tietokoneverkot Matti Siekkinen

6. Kuljetuskerros 6.1. Kuljetuspalvelu End- to- end

6. Kuljetuskerros 6.1. Kuljetuspalvelu

3. Kuljetuskerros 3.1. Kuljetuspalvelu

peittää verkkokerroksen puutteet

3. Kuljetuskerros 3.1. Kuljetuspalvelu End- to- end

Transkriptio:

Kuljetuskerros Tietokoneverkot Matti Siekkinen Pasi Sarolahti Osa sisällöstä adaptoitu seuraavista lähteistä: J.F. Kurose and K.W. Ross: Computer Networking: A Top-Down Approach 6th ed. -kirjan lisämateriaali

Palautetta Datan saaminen oikeaan muotoon tarkkaa hommaa HTTP:n parsiminen C:llä työlästä Host headerin unohtaminen pyynnössä aiheutti ongelmia C-kieli aiheutti ongelmia Aloittakaa hyvissä ajoin! Muistakaa laskarit! 2

Sisältö Kuljetuskerroksen tehtävä ja ominaisuudet UDP (User Datagram Protocol) Luotettava tiedonsiirto Virheenkorjaus Putkitus TCP (Transmission Control Protocol) Yhteydenhallinta Virheenkorjaus Vuonhallinta Ruuhkanhallinta Perusteet TCP:n ruuhkanhallinta 6

Kuljetuskerroksen tehtävä Kuljetuskerros yhdistää sovelluksia Viestejä päätelaitteen sovelluksesta toiseen (end-to-end) Aktiivisia sovelluksia voi olla monia yhtäaikaa yhdessä päätelaitteessa Kuljetuskerros tarjoaa sovelluksille erilaisia palveluita Luotettava/epäluotettava tiedonsiirto Viestinvälitys (datagrammi) tai tavuvirta Kuljetuskerros toteutetaan eri protokollilla, jotka ovat vaihtoehtoisia TCP tarjoaa luotettavan tavuvirran palveluna sovellukselle UDP tarjoaa epäluotettavan viestinvälityksen palveluna Myös muita, ei käsitellä tällä kurssilla 7

Kuljetuskerroksen ominaisuuksia Portti Jokaisella päätelaitteella on osoite (IP) Portti (16-bittinen numero) identifioi sovelluksen päätelaitteessa Monta aktiivista yhtäaikaisesti Well-known port numbers: 0-1023 Varattuja, esim. 80=HTTP, 53=DNS Internet Assigned Numbers Authority: www.iana.org Applications DNS IRC xyz 53 6667 65000 Transport (TCP/UDP) IP 8

Kuljetuskerroksen ominaisuuksia Socket rajapinta Sovelluksen ja kuljetuskerroksen protokollan välissä Porttinumero määräytyy sokettia luodessa Data välitetään segmentteinä UDP viesti, TCP tavuvirran osa Kapseloidaan pakettiin alemmalla kerroksella (IP) 9

Putkitus Useita segmenttejä matkalla yhtäaikaisesti Tarvitaan riittävä numeroavaruus sekvenssinumeroille Liukuva ikkuna (sliding window) Suurin vastaanotettu kuittaus Lähettäjä Seuraavaksi lähetettävä Vastaanottaja Seuraavaksi odotettu Suurin hyväksyttävissä Lähettäjän ikkuna Vastaanottajan ikkuna Lähetetty & kuitattu Lähetetty & kuittaamaton Vastaanotettu & kuitattu Hyväksyttävissä Voidaan lähettää Ei käytettävissä Ei käytettävissä 32

Putkitus Useita segmenttejä matkalla yhtäaikaisesti Tarvitaan riittävä numeroavaruus sekvenssinumeroille Liukuva ikkuna (sliding window) Suurin vastaanotettu kuittaus Lähettäjä Seuraavaksi lähetettävä Vastaanottaja Seuraavaksi odotettu Suurin hyväksyttävissä Lähettäjän ikkuna Vastaanottajan ikkuna Lähetetty & kuitattu Lähetetty & kuittaamaton Vastaanotettu & kuitattu Hyväksyttävissä Voidaan lähettää Ei käytettävissä Ei käytettävissä 33

Selective Repeat 38

TCP:n uudelleenlähetysajastin 53

Nopea uudelleenlähetys (Fast Retransmit) Van Jacobson 1988 Kuittaus kertoo aina seuraavan puuttuvan paketin sekvenssinron à Duplikaattikuittaukset merkitsee kadonnutta tai virheellistä pakettia! FR: Ei odoteta ajastinta vaan uudelleenlähetetään heti 3 duplikaattikuittauksen jälkeen Miksi odottaa kolme duplikaattia? Joskus verkko uudelleenjärjestää paketteja à vältetään turhia uudelleenlähetyksiä seq # x1 seq # x2 seq # x3 seq # x4 seq # x5 kolme duplikaattikuittausta Host A time timeout X Host B ACK x1 ACK x1 ACK x1 ACK x1

TCP vuonhallinta Eli flow control Vastaanottava sovellus kuluttaa dataa tietyllä nopeudella TCP yhteyden yli voidaan joskus lähettää tätä nopeammin Vuonhallinta varmistaa ettei näin tapahdu Menetelmä perustuu liukuvan ikkunan koon vaihteluun lähettäjä vastaanottaja sovellus puskurit sovellus TCP verkko TCP 56

Lähettäjä Sovellus kirjoittaa 2K sokettiin TCP Vuonhallinta 2K SEQ=0 Vastaanottaja 0 4K Tyhjä 2K Lähettävä sovellus lähettää 2K, vastaanottajan puskuri on nyt puolitäynnä. 57

Lähettäjä Sovellus kirjoittaa 2K sokettiin TCP Vuonhallinta 2K SEQ=0 ACK=2048 WIN=2048 Vastaanottaja 0 4K Tyhjä 2K Vastaanottaja kuittaa ensimmäiset 2048 tavua ja ilmoittaa lähettäjälle että mahtuu vielä 2048 tavua. 58

Lähettäjä Sovellus kirjoittaa 2K sokettiin Sovellus kirjoittaa 2K sokettiin TCP Vuonhallinta 2K SEQ=0 ACK=2048 WIN=2048 2K SEQ=2048 Vastaanottaja 0 4K Tyhjä 2K Täysi Lähettävä sovellus lähettää toiset 2K. Vastaanottajan puskuri on nyt täynnä ja uuden datan lähetys estetään. 59

Lähettäjä Sovellus kirjoittaa 2K sokettiin Sovellus kirjoittaa 2K sokettiin Lähetys estetty TCP Vuonhallinta 2K SEQ=0 ACK=2048 WIN=2048 2K SEQ=2048 ACK=4096 WIN=0 Vastaanottaja 0 4K Tyhjä 2K Täysi Vastaanottaja kuittaa seuraavat 2048 (yht. 4096) tavua ja ilmoittaa lähettäjälle ettei mahdu enempää. Uuden datan lähetys on estetty. 60

Lähettäjä Sovellus kirjoittaa 2K sokettiin Sovellus kirjoittaa 2K sokettiin { Lähetys estetty Voi lähettää 2K TCP Vuonhallinta 2K SEQ=0 ACK=2048 WIN=2048 2K SEQ=2048 ACK=4096 WIN=0 ACK=4096 WIN=2048 Vastaanottaja 0 4K Tyhjä 2K Täysi 2K Vastaanottava sovellus lukee 2048 tavua soketista ja TCP ilmoittaa lähettäjälle että taas mahtuu. Lähettäjä voi nyt lähettää uudet 2K. 61

Lähettäjä Sovellus kirjoittaa 2K sokettiin Sovellus kirjoittaa 2K sokettiin Lähetys estetty { TCP Vuonhallinta 2K SEQ=0 ACK=2048 WIN=2048 2K SEQ=2048 ACK=4096 WIN=0 ACK=4096 WIN=2048 Vastaanottaja 0 4K Tyhjä 2K Täysi 2K Voi lähettää 2K 1K SEQ=4096 1K 2K Sovellus kirjoittaa 1K sokettiin Lähettävä sovellus kirjoittaa 1K sokettiin. Vastaanottavan TCP:n puskurissa on 1K tilaa. 62

Ruuhkanhallinta: Miksi? Verkon hetkellinen jäljellä oleva vapaa kaista vaihtelee Voi olla vähemmän kuin lähettävän ja vastaanottavan sovellusten kapasiteetti à pelkkä vuonhallinta ei riitä Monta lähettäjää jakaa samoja verkkoresursseja Verkko voi siis olla pullonkaula Ruuhkanhallinta varmistaa että verkkoa ei ylikuormiteta lähettäjä sovellus puskurit vastaanottaja sovellus TCP verkko TCP 70

Ruuhkan muodostuminen ja vaikutus neljä lähettäjää polut useamman reitittimen kautta ajastinpohjainen uudelleenlähetys Mitä tapahtuu kun kasvaa? l in ja l in Host A l in : original data l' in : original data, plus retransmitted data finite shared output link buffers l out Host B

Ruuhkan muodostuminen ja vaikutus H o s t A l o u t H o s t B Kun paketti pudotetaan, sen välittämiseen jo kulutettu verkon kapasiteetti menee haaskuun!

Ruuhkanhallintamenetelmät kaksi menetelmää: päästä-päähän (end-toend) ruuhkanhallinta: verkko ei raportoi ruuhkatilasta päätelaitteet päättelevät ruuhkatilan pakettihäviöstä tai viiveestä TCP:n perusmekanismi verkon avustama ruuhkanhallinta: reitittimet kertovat ruuhkasta päätelaitteille yleensä bittilippu otsakkeessa joka kertoo ruuhkan (esim. ECN)

TCP Ruuhkanhallinta Periaate: Kontrolloi jatkuvasti TCP lähetysnopeutta Kasvata nopeutta kun kaikki menee hyvin Pienennä nopeutta kun havaitaan ruuhkaa Segmenttejä katoaa Miten? Ruuhkaikkunan (eli congestion window=cwnd) avulla: lähetetysikkunan koko min(cwnd, rwnd) pitää ottaa vuonhallinta huomioon Lähetysnopeutta säädellään muuttamalla ruuhkaikkunan kokoa

Slow Start (SS) Aloitetaan hitaasti: lähetetään vain yksi segmentti (cwnd=1) Jokainen uusi kuittaus kasvattaa ruuhkaikkunaa yhdellä Ikkunan koko kasvaa exponentiaalisesti Ideana on uuden yhteyden lähetysnopeuden nopea kasvattaminen SS käytössä: Uuden TCP-yhteyden alussa RTO ajastimen laukeamisen jälkeen à ruuhkatilanne RTT Host A Host B aika

Congestion Avoidance (CA) Lähestytään verkon (polun) kapasiteettia varovaisemmin Kasvatetaan ruuhkaikkunaa yhdellä kun vastaanotettu ikkunan verran kuittauksia (eli +1 per RTT) RTT Host A Host B Periaate on välttää pahoja ruuhkatilanteita Verkon vaikea toipua (uudelleenlähetykset) time 80

SS ja CA yhteentoiminta Määritellään raja-arvo ikkunankoolle Slow start threshold (ssthresh) Timeout: ssthresh = 0.5 x cwnd cwnd = 1 segmentti Uusi kuittaus: cwnd < ssthresh à SS cwnd >= ssthresh à CA

TCP Tahoe: ruuhkaikkunan koon vaihtelu Timeouts Congestion avoidance kun ikkuna puolet edellisestä koosta cwnd Slow Start Aseta ssthresh puoleen ruuhkaikkunan kooosta t

TCP slow start ja timeout 83

TCP fast retransmit 84