Transportlaget. Transporttjenester og protokoll. Overblikk: Mål: nettlaget: dataoverføring mellom endesystemer

Like dokumenter
TCP: Overblikk RFCs: 793, 1122, 1323, 2018,

Linklaget. Olav Lysne. (med bidrag fra Stein Gjessing og Frank Eliassen) Oppsummering 1

ITF20205 Datakommunikasjon - høsten 2011

Løsningsforslag Gruppeoppgaver, 28. april 2. mai. 1. Metningskontroll ( Congestion control ) og ressursallokering.

KTN1 - Design av forbindelsesorientert protokoll

Transport - laget (ende-til-ende protokoller) Internett Best-effort overføring. Best-effort nett kvaliteter

Kapittel 4: Transportlaget

Forelesning 1. Introduksjon til (eller repetisjon av) TCP/IP Datasikkerhet

Alle enheter som skal sende datapakker fra forskjellige strømmer inn på samme link må forholde seg til hvordan strømmene skal prioriteres.

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

Praktisk informasjon. Forelesning 1. Forelesningsform. Lærebok. Lærebok forts. Eksamen. Forelesninger. ØvingerØvinger

Detaljerte funksjoner i datanett

Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/9/2005 1

+ % + % #% % ) % 6 % % 1& % 1& 7 7 % % * % % * % + %%,- %%, %*%..% % 8%% #% % 7 % + %*% # %+ 90: 3 # 1 #% + & 2%%, %%, %*% %+ /0 #.%%,. ;*#..< 0 4 0%.

Løsningsforslag. Datakommunikasjon

Hva består Internett av?

Løsningsforslag Gruppeoppgaver mars 2003

in270 Datakommunikasjon, vår 03 forelesningsnotater, kap. 4

Forelesning Oppsummering

IT Grunnkurs Nettverk 3 av 4

Flere detaljerte funksjoner i datanett

1990 første prognoser og varsler om at det ikke vil være nok IPv4 adresser til alle som ønsker det 1994 første dokumenter som beskriver NAT en

Oppsummering: Linjesvitsjing kapasiteten er reservert, og svitsjing skjer etter et fast mønster. Linjesvitsj

Lagene spiller sammen

6107 Operativsystemer og nettverk

Obligatorisk oppgave nr 2 i datakommunikasjon. Høsten Innleveringsfrist: 04. november 2002 Gjennomgås: 7. november 2002

Nettverkslaget. Fragmentering/framsending Internetworking IP

Linklaget - avslutning

6105 Windows Server og datanett

6107 Operativsystemer og nettverk

TDT4110 IT Grunnkurs: Kommunikasjon og Nettverk. Læringsmål og pensum. Hva er et nettverk? Mål. Pensum

6107 Operativsystemer og nettverk

Sentrale deler av pensum i INF

Computer Networks A. Tanenbaum

Gjennomgang av kap Kommunikasjonsformer Typer av nettverk Adressering og routing Ytelse Protokoller

Linklaget. Feildeteksjon/feilretting - pålitelig overføring. Foreleser: Kjell Åge Bringsrud kjellb 2/17/2004 1

LØSNINGSFORSLAG; INF-240 Våren 2002

Løsningsforslag Gruppeoppgaver mars 2003

Linklaget. Stop-and-Wait. Hvis vi ikke fyller opp røret. Fyll opp røret. Feildeteksjon/feilretting - pålitelig overføring

6105 Windows Server og datanett

Sentrale deler av pensum i INF240. Hensikt. Pål Spilling og Kjell Åge Bringsrud

Hva er en protokoll? INF1060 Introduksjon 2

Brannmurer. fire wall (noun): A fireproof wall used as a barrier to prevent spread of fire.

INF3190 DATAKOMMUNIKASJON

Utvikling av TCP og RED-moduler i en Javabasert Nettverkssimulator

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

Detaljerte Funksjoner i Datanett

Foreleser: Kjell Åge Bringsrud

2EOLJDWRULVNRSSJDYHQU L GDWDNRPPXQLNDVMRQ + VWHQ.,QQOHYHULQJVIULVWRNWREHU *MHQQRPJnVWRUVGDJRNWREHU

MAT1030 Forelesning 30

Datateknikk TELE1005-A 15H HiST-FT-IEFE

Detaljerte Funksjoner i Datanett

KTN1. Gruppe 502. Håkon Sandsmark, Torbjørn Kvåle, Kristoffer Eckhoff, Daniel Børseth og Steffen Amundsen

6105 Operativsystem og nettverk

Ennå litt mer detaljer: Flere detaljerte funksjoner i datanett

UNIVERSITETET I OSLO

SensorGraph Hurtig brukerguide

INF Hjemmeeksamen 2

Gruppe KTN2 innlevering. Endringer gjort siden KTN1:

Nettlaget. Nettlagets oppgaver

Høgskolen i Telemark EKSAMEN Operativsystem og nettverk inkludert denne forsiden og vedlegg. Merknader:

in270 Datakommunikasjon, vår 03 forelesningsnotater kap og 7.1/7.2

Oppsett av brannmur / router 1.0. Innholdsfortegnelse

Kapittel 10 Tema for videre studier

Høgskoleni Østfold EKSAMEN. Emnekode: Emne: ITF20205 Datakommunikasjon. Dato: 04. Des 2015 Eksamenstid: kl. 9:00 til kl. 13:00

MTU i nettverk Ei lita innføring i generelt nettverk. Av Yngve Solås Nesse Bildeseksjonen/MTA/Haukeland universitetssjukehus

EKSAMEN. Emne: Datakommunikasjon

Forelesning 9 mandag den 15. september

Internettets Overlay Arkitektur

Matematikk Øvingsoppgaver i numerikk leksjon 7 Numerisk derivasjon

Kommunikasjonsnett. Et kommunikasjonsnett er utstyr (maskinvare og programvare) for utveksling av informasjon

IP Internet. Tjenestemodell. Sammensetning av nettverk. Protokollstack

Linklaget - direkte. forbindelser mellom noder. Foreleser: Kjell Åge Bringsrud kjellb 2/8/2005 1

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Vekst av planteplankton - Skeletonema Costatum

6105 Operativsystem og nettverk

Kapittel 5 Nettverkslaget

EKSAMEN. Emne: Datakommunikasjon. Dato: 30. Nov 2016 Eksamenstid: kl. 9:00 til kl. 13:00

Emnenavn: Datakommunikasjon. Eksamenstid: Kl: 9:00 til kl: 13:00. Faglærere: Erling Strand

Operativsystemer og nettverk Løsningsforslag til eksamen Oppgave 1. a) Linux-kommando: java Beregn & b) Shellprogram:

Temaer: r Nettlagets oppgaver r Rutingprinsipp: veivalg r Hierarkisk ruting r IP r Internettets ruting protokoller. m intra-domain.

Dypere forståelse av Linklaget Egenskaper ved Ethernet CSMA/CD

Hva er en protokoll? Hva er Internet?

Løsningsforslag til EKSAMEN

What is a protocol? Network protocols: Machine instead of people All communication activity in the Internet is controlled by protocols

Linklaget. Feildeteksjon/feilretting. Feil-deteksjon. Feildeteksjon/feilretting - pålitelig overføring. Oppgaver: 1. Finne feil 2.

What is the Internet?

Flere detaljerte funksjoner i datanett

Litt mer detaljer om: Detaljerte funksjoner i datanett. Fysisk Lag. Multipleksing

6105 Operativsystem og nettverk

6107 Operativsystemer og nettverk

Læringsmål og pensum. Utvikling av informasjonssystemer. Oversikt. Systemutvikling Systemutvikling i seks faser Femstegs prosedyre for programmering

TwidoSuite kommunikasjon

BIPAC 7100SG/7100G g ADSL Router. Hurtigstartguide

Computer Networks A. Tanenbaum

6105 Operativsystem og nettverk

Guide for tilkobling til HIKT s Citrix løsning

Kommunikasjonsteknologi, Tjenester og Nett Kompendie 2016 Av Mats Jørgen Skaslien

MAT1030 Diskret matematikk. Kompleksitetsteori. Forelesning 29: Kompleksitetsteori. Dag Normann KAPITTEL 13: Kompleksitetsteori. 7.

DDS-CAD 7 INSTALLASJON AV NETTVERKSLÅS. DATA DESIGN SYSTEM ASA Øksnevad Næringspark, 4353 Klepp st., fax , tel.: , e-post: dds@dds.

Transkript:

Transportlaget Mål: Forstå prinsippene bak tjenestene på transportlaget: multiplexing/demultiplex ing Pålitelig overføring flytkontroll metningskontroll Implementasjon på Internett Overblikk: Tjenester på transportlaget multiplexing/demultiplexing Forbindelsesløs transport: UDP Prinsipper for pålitelig overføring forbindelsesorientert transport: TCP Pålitelig overføring flytkontroll forbindelseshåndtering Prinsipper for metningskontroll TCP metningskontroll Transportlaget 1 Transporttjenester og protokoll Støtter logisk kommunikasjon mellom applikasjonsprosesser som kjører på forskjellige maskiner Transportprotokoller kjører i endesystemene Transport kontra nettlagstjenester: nettlaget: dataoverføring mellom endesystemer transportlaget: dataoverføring mellom prosesser Hviler på og forbedrer nettlagets tjenester Applikasjon Transport Logisk ende til ende forb Applikasjon Transport Transportlaget 2

Transportlagsprotokoller Internett transporttjenester: Pålitelig, ordnet unicast levering (TCP) metning flytkontroll Oppsett av forbindelse Upålitelig ( best-effort ), uordnet unicast eller multicast levering: UDP Tjenester som foreløpig ikke finnes: sanntid båndbreddegarantier Pålitelig multicast Applikasjon Transport Logisk ende til ende forb Applikasjon Transport Transportlaget 3 Multiplexing/demultiplexing Husk: segment dataenhet utvekslet mellom enheter på transportlaget TPDU: transport protocol data unit segment header segment applikasjonslag data Ht M Hn segment P1 M Applikasjon Transport P3 Demultiplexing: levere mottatte segmenter til den riktige applikasjonsprosessen mottaker M M Applikasjon Transport P4 M P2 Applikasjon Transport Transportlaget 4

Multiplexing/demultiplexing Multiplexing: Samle data fra flere applikasjons- Prosesser, pakke dem sammen med headere som kan benyttes til demultiplexing multiplexing/demultiplexing: Basert på sender, mottaker port nummer, IP addresser sender, mottaker portnummer i hvert segment Kjente portnummere for spesielle applikasjoner 32 bits source port # dest port # Andre headerfelt applikasjons data (melding) TCP/UDP segment format Transportlaget 5 Multiplexing/demultiplexing: eksempler maskin A source port: x dest. port: 23 server B Web klient maskin C source port:23 dest. port: x port bruk: enkel telnet Source IP: C Dest IP: B source port: y dest. port: 80 Source IP: C Dest IP: B source port: x dest. port: 80 Web klient maskin A Source IP: A Dest IP: B source port: x dest. port: 80 Web server B port bruk: Web server Transportlaget 6

UDP: User Datagram Protocol [RFC 768] Enkel Internet transport protokoll best effort tjeneste, UDP segmenter kan: forsvinne leveres i feil rekkefølge forbindelsesløs: ingen handshaking mellom UDP sender, mottaker hvert UDP segment håndtert uavhengig av andre Hvorfor finnes UDP? Ingen opprettelse av forbindelse (som kan øke forsinkelse) enkel: ingen forbindelsestilstand hos sender og mottaker Liten segmentheader Ingen metningskontroll: UDP sender så fort den ønsker Transportlaget 7 UDP: mer Ofte brukt til å streame multimediaapplikasjoner tapstolerant ratesensitiv annen UDP bruk (hvorfor?): DNS SNMP Pålitelig overføring over UDP: legg til pålitelighet i applikasjonslaget Applikasjonsspesifik feilhåndtering! Lengde, i byte til UDP segment, Header inkludert 32 bits source port # dest port # length Applikasjons data (melding) checksum UDP segment format Transportlaget 8

UDP sjekksum Mål: oppdage feil (f.eks bitfeil) i overført segment Sender: Håndterer segment som sekvenser av 16- bit integere sjekksum: addisjon av innholdet i segmentet Sender legger summen inn i UDP sjekksum feltet Mottaker: Regner ut sjekksummen til mottatt segment Sjekker om den beregnede sjekksummen er den samme som den som er i segmentet. : NEI feil påvist JA ingen feil påvist, men det kan jo være feil likevel Transportlaget 9 TCP: Overblikk RFCs: 793, 1122, 1323, 2018, 2581 socket dør Punkt-til-punkt: En sender, en mottaker Pålitelig ordnet byte strøm: Ingen meldingsgrenser Sliding window: TCP metnings og flytkontroll gir vindusstørrelse send & receive buffere applikasjon skriver data TCP send buffer segment apapplikasjon leser data TCP receive buffer socket dør full duplex data: Bidireksjonal dataflyt i samme forbindelse MSS: maximum segment size forbindelsesorientert: handshaking (utveksling av kontrollmeldinger) initialiserer tilstanden i begge endene før data sendes flytkontroll: Sender ikke mer data enn mottakeren kan akseptere Transportlaget 10

TCP segment struktur URG: urgent data (sjelden i bruk) ACK: ACK # PSH: push data nå (sjelden i bruk) RST, SYN, FIN: Forbindelses håndtering (setup, teardown kommandoer) Internett sjekksum (som i UDP) 32 bits source port # dest port # head len sequence number acknowledgement number not used UA P R S F checksum rcvr window size ptr urgent data Options (variable length) application data (variable length) Brukes av sliding window Brukes av sliding window Transportlaget 11 TCP sekvensnummer og ACKer Sekvensnummer byte strøm tallet til første byte i segmentets data ACKer: Sekvensnummer til neste byte som er ventet fra andre siden kumulativ ACK Q: hvordan håndterer mottaker data i feil rekkefølge TCP spec overlater dette til implementasjonen Bruker skriver C A ACKer Mottaket av C som ekko Maskin A Maskin B Seq=42, ACK=79, data = C Seq=79, ACK=43, data = C Seq=43, ACK=80 Et enkelt telnet scenario B ACKer Mottaket av C, sender C tilbake som ekko tid Transportlaget 12

TCP: pålitelig overføring event: data mottatt fra applikasjonen over Skap og send segment Forenklet sender under antakelse av Vent på event event: timeout for segment med seq # y Send segment på nytt Enveis dataflyt Ingen flyt- eller metningskontroll event: ACK mottatt, med ACK # y ACK prosessering Transportlaget 13 TCP: pålitelig data overføring Forenklet TCP sender 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 03 loop (forever) { 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compute new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y > sendbase) { /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers < y 17 sendbase = y 18 } 19 else { /* a duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 26 } /* end of loop forever */ Transportlaget 14

TCP ACK generering [RFC 1122, RFC 2581] Event Ordnet segmentmottak, Ingen hull, Alt annet er allerede ACKet Ordnet segmentmottak, Ingen hull, en ACK på etterskudd Uordnet segmentmottak Høyere seq. # enn ventet Hull påvist Mottak av segment som delvis Eller helt fyller hullet TCP Mottaker aksjon forskinket ACK. Vent opp til 500ms På neste segment. Hvis intet kommer, send ACK Send en enkelt kumulativ ACK umiddelbart send duplikat ACK som indikerer seq. # Til neste ventede byte send ACK umiddelbart dersom segmentet starter i nedre ende av hullet Transportlaget 15 TCP: retransmisjons-scenarier Maskin A Maskin B Maskin A Maskin B timeout Seq=92, 8 bytes data X tap ACK=100 Seq=92, 8 bytes data Seq=100 timeout Seq=92 timeout Seq=92, 8 bytes data Seq=100, 20 bytes data ACK=100 ACK=120 Seq=92, 8 bytes data ACK=100 ACK=120 tid tapt ACK scenario tid For tidlig timeout, kumulative ACKer Transportlaget 16

TCP Flytkontroll flytkontroll sender sender ikke raskere enn at mottaker klarer å svelge unna RcvBuffer = størrelse på TCP Receive Buffer RcvWindow = størrelse på ledig plass i Buffer mottaker: informerer sender eksplisitt om hvor mye bufferplass han har ledig RcvWindow felt i TCP segment sender: holder mengden av sendte uackede data mindre enn det siste RcvWindow han mottok mottaker buffering Transportlaget 17 TCP Round Trip Time og Timeout Q: hvordan setter man TCP timeout verdien? Lenger enn RTT merk: RTT vil variere For kort: prematur timeout unødvendige retransmisjoner For lang: langsom reaksjon på tap av segment. Q: hvordan estimere RTT? SampleRTT: målt tid fra segmentsending til mottak av ACK Ignorer retransmisjoner og kumulativt ACKede segmenter SampleRTT vil variere, ønsker beregnet RTT som er mer stabil Bruk flere målinger, ikke bare siste SampleRTT Transportlaget 18

TCP Round Trip Time og Timeout EstimatedRTT = (1-x)*EstimatedRTT + x*samplertt Eksponensielt vektet flytende gjennomsnitt. Innflytelsen til en måling synker eksponensielt Typisk verdi for x: 0.1 Setting av timeout EstimtedRTT pluss sikkerhetsmargin Stor variasjon i EstimatedRTT -> større sikkerhetsmargin Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x* SampleRTT-EstimatedRTT Transportlaget 19 TCP Forbindelseshåndtering Husk: TCP sender, mottaker etablerer forbindelse før de sender datasegmenter initialiserer TCP variable: seq. # buffere, flyt-kontroll info (f.eks RcvWindow) klient: initierer forbindelse Socket clientsocket = new Socket("hostname","port number"); tjener: kontaktet av klient Socket connectionsocket = welcomesocket.accept(); Treveis håndtrykk: Skritt 1: klient sender TCP SYN kontroll segment til tjener Spesifiserer initielt seq # Skritt 2: tjener mottar SYN, svarer med SYNACK kontroll segment ACKer mottatt SYN Allokerer buffere Spesifiserer tjener-> klient initielt seq. # Transportlaget 20

TCP forbindelseshåndtering (forts) Å koble ned en forbindelse: Klienten lukker forbindelsen: clientsocket.close(); Skritt 1: klient sender TCP FIN kontroll segment til tjener close klient FIN ACK FIN tjener close Skritt 2: tjener mottar FIN, svarer med ACK. Stenger forbindelsen, sender FIN. timed wait closed ACK Transportlaget 21 TCP forbindelseshåndtering (forts) Skritt 3: klient mottar FIN, svarer med ACK. Går inn i timed wait vil svare med ACK på mottatte FINs Skritt 4: tjener, mottar ACK. Forbindelsen stengt. closing klient FIN ACK FIN tjener closing Merk: med små modifikasjoner kan denne metoden håndtere simultane FINs. timed wait closed ACK closed Transportlaget 22

TCP forbindelseshåndtering (forts) TCP tjener livssykel TCP klient livssykel Transportlaget 23 Prinsipper for metningskontroll Metning: uformelt: for mange kilder sender data for fort til at nettverket klarer å håndtere det Ikke det samme som flytkontroll! Manifestasjoner av metning: pakketap (buffer overflow) long delays (køing i rutere) Et av de virkelig store problemene! Transportlaget 24

Årsaker til/kostnader ved metning: scenario 1 To sendere to mottakere En ruter, uendelige bufre Ingen retransmisjon Lange forsinkelser ved metning Maksimum gjennomstrømning Transportlaget 25 Årsaker til/kostnader ved metning: scenario 2 En ruter, endelige bufre sender retransmiterer tapte pakker Transportlaget 26

Årsaker til/kostnader ved metning: scenario 2 alltid: λ = λ in out perfekt retransmisjon bare ved tap: λ > λ in out Retransmisjon av forsinkede (ikke tapte) pakker gjør λ større in (enn det perfekte tilfelle) for samme λ out kostnader ved metning : Mer arbeid (retransmisjoner) for gitt gjennomstrømning Unødvendige retransmisjoner: link videresender flere kopier av samme pakke Transportlaget 27 Årsaker til/kostnader ved metning: scenario 3 Fire sendere Stier med flere hopp timeout/retransmisjon Q: hva skjer når og øker? λ in λ in Transportlaget 28

Årsaker til/kostnader ved metning: scenario 3 En annen kostnad ved metning: Nårpakkerblirkasteterall transmisjonskapasitet brukt for å få pakken så langt bortkastet. Transportlaget 29 Tilnærminger til metningskontroll To vanlige tilnærminger: Ende-ende metningskontroll: Ingen eksplisitt feedback fra nettverket Metning detekteres ved observert tap og forsinkelse Denne tilnærmingen tas av TCP sassistert metningskontroll: Rutere gir feedback til endesystemer Ett bit indikerer metning (SNA, DECbit, TCP/IP ECN, ATM) Eksplisitt senderate Transportlaget 30

Eksempel: ATM ABR metningskontroll ABR: available bit rate: elastisk tjeneste Dersom senderens sti er underbelastet : Sender bør bruke tilgjengelig båndbredde Om senderens sti er mettet Sender strupes til minimum garantert rate RM (resource management) celler: Sendt av sender innimellom datacellene Bit i RM cellen satt av svitsjene ( network-assisted ) NI bit: ingen økning i raten (mild metning) CI bit: metningsindikasjon RM cellene returnert til sender med bits intakt. Transportlaget 31 Eksempel: ATM ABR metningskontroll to-byte ER (explicit rate) felt i RM celle Mettet svitsj kan senke ER verdi i cellen Senders sende rate blir minste tilgjengelige rate i stien. EFCI bit i data celler: satt til 1 i mettet svitsj Dersom datacellen før RM har EFCI satt, setter senderen CI bit i returnert RM celle. Transportlaget 32

TCP Metningskontroll ende-ende kontroll (ingen støtte fra nettverket) Senderaten begrenset av metnings-vindusstørrelse, Congwin, over segmenter: Congwin w segmenter, hvert med MSS byte sent i en RTT: throughput = w * MSS RTT Bytes/sek Transportlaget 33 TCP metningskontroll: testing for tilgjengelig båndbredde: ideellt: send så fort som mulig (Congwin så stor som mulig) uten tap øk Congwin til du får tap (metning) tap: senk Congwin, så start testing (økning) igjen to faser slow start unngå metning viktige variable: Congwin threshold: definerer terskel mellom to slow start fasermetningskontroll faser Transportlaget 34

TCP Slowstart Slowstart algoritmen initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR CongWin > threshold) RTT Maskin A Maskin B ett segment to segment fire segment Eksponensiell økning (per RTT) i vindusstørrelse (not so slow!) Ved tap: timeout (Tahoe TCP) og/eller tre duplikate ACKer (Reno TCP) time Transportlaget 35 TCP metningsunngåelse Metningsunngåelse /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 1 perform slowstart 1: TCP Reno dropper slowstart (fast recovery) etter tre duplikate ACKer Transportlaget 36

AIMD TCP metningsunngåelse: AIMD: additive increase, multiplicative decrease Øk vinduet med 1 per RTT Reduser vindu med faktor 2 ved tap TCP Fairness Fairness mål: om N TCP sesjoner deler den samme flaskehalslinken, bør hver av dem få 1/N av linkkapasiteten TCP forbindelse 1 TCP forbindelse 2 Flaskehalsrouter Kapasitet R Transportlaget 37 Hvorfor er TCP fair? To konkurrerende sesjoner: Additive increase derivert lik 1, så lenge throughput øker multiplicative decrease senker throughput proporsjonalt R Lik andel av båndbredden Forbindelse 2 throughput Forbindelse 1 throughput tap: senk vindusstørrelsen med faktor 2 metningsunngåelse: additive increase tap: senk vindusstørrelsen med faktor 2 metningsunngåelse: additive increase R Transportlaget 38

TCP modellering av forsinkelse Q: Hvor lang tid tar det å motta et objekt fra en Web server etter at forespørselen er sendt? Oppretting av TCP forbidelse dataoverføringsforsinkelse Notasjon, antakelser: Anta en link mellom klient og tjener med rate R Anta: fast metningsvindu, W segmenter S: MSS (bits) O: object size (bits) Ingen retrasmisjoner To tilfeller må vurderes: WS/R > RTT + S/R: ACK for første segment i vindu kommer tilbake før data tilsvarende hele viduet er sendt. WS/R < RTT + S/R: vent på ACK etter å ha sendt de data som vinduet tillater Transportlaget 39 TCP forsinkelsesmodellering K:= O/WS Tilfelle 1: latency = 2RTT + O/R Tilfelle 2: latency = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] Transportlaget 40

TCP forsinkelsesmodellering: Slow Start Anta så at vindusstørrelsen øker som i Slow Start. Forsinkelsen til et objekt av størrelse O er: Latency O S P = 2RTT + + P RTT (2 1) R + R S R hvor P er antallet ganger TCP stopper hos tjeneren P = min{ Q, K 1} - hvor Q er antallet ganger tjeneren ville stoppe om O var uendelig stort - og K er antallet vinduer som trengs for å dekke objektet Transportlaget 41 Metoder for å unngå metning Transportlaget 42

TCP sin strategi kontroller metning når det skjer å øke belastningen helt til metning detekteres, trekke seg tilbake igjen, for så å øke på nytt Alternativ strategi å forutsi når nettet holder på å gå i metning, og så redusere senderaten akkurat før pakker går tapt dette blir altså å unngå metningsproblemer i stedet for metningskontroll To muligheter ruter-sentrisk: DECbit og RED Gateways endemaskin-sentrisk: TCP Vegas Transportlaget 43 DECbit Legg til et metningsbit i hver pakkeheader Ruter følger gj.snittlig kølengde over siste busy+idle sykel + nåværende busysykel. sett metningsbit dersom gjenomsnittet er større enn 1 når pakken mottas forsøker å balansere gjennomstrømning mot forsinkelse Queue length Current time Previous cycle Averaging interval Current cycle Time Transportlaget 44

Endemaskinene destinasjonen gir ekko tilbake til kilden kilden merker seg hvor mange pakker som resulterer i et satt metningsbit hvis mindre enn 50% av siste vindus pakker hadde satt metningsbit, øk CongestionWindow med 1 pakke dersom 50% eller mer av siste vindus pakker hadde satt metningsbit, så multipliser CongestionWindow med 0.875 Transportlaget 45 Random Early Detection (RED) Gateways Informasjonsflyten er implisitt bare dropp en pakke (TCP vil gå i timeout) kan i prinsippet gjøres eksplisitt ved å merke pakken Tidlig tilfeldig dropping av pakker i stedet for å vente til køen blir full, dropp noen pakker i henhold til en sannsynlighet (drop probability) når kølengden er over et visst nivå (drop level) RED: detaljer regn ut gjennomsnittlig kølengde: AvgLen=(1-Weight)*AvgLen+Weight*SampleLen 0 < Weight < 1 (vanligvis 0.002) SampleLen er kølengden hver gang en pakke ankommer Transportlaget 46

To terskler for kølengde ifavglen MinThreshold then legg pakken i køen if MinThreshold < AvgLen < MaxThreshold regn ut sannsynligheten P dropp pakken med sannsynlighet P if MaxThreshold AvgLen dropp pakken MaxThreshold MinThreshold AvgLen Transportlaget 47 Sannsynlighet P flytende funksjon av AvgLen og hvor lenge siden forrige drop. Variabelen count holder rede på antallet nye pakker som er lagt inn i køen (ikke droppet) mens AvgLen lå mellom de to tersklene TempP = MaxP * (AvgLen - MinThreshold) /(MaxThreshold - MinThreshold) P = TempP/(1 - count * TempP) Transportlaget 48

Merk sannsynligheten for å droppe pakker fra en gitt flyt er grovt sett proporsjonal med størrelsen på flyten MaxP vil typisk være 0.02. Det betyr at når gjennomsnittlig kølengde er midt mellom terskelene vil omtrent 1 av 50 pakker bli kastet. Når trafikken er bursty bør MinThreshold være høy nok til at utnyttelsen av linkene er akseptabel. Differansen mellom tersklene bør være større enn den typiske økningen i beregnet gjennomsnittlig kølengde i en RTT. For dagens Internettrafikk er det rimelig å la MaxThreshold være MinThreshold multiplisert med 2. Transportlaget 49 TCP Vegas Ide: Kilden ser etter tegn til at en ruter nærmer seg metning -- f. eks ved at RTT vokser den opplevde senderaten flater ut Transportlaget 50

Ide: kilden ser etter tegn til at ruterens kø bygger segoppogmetningerpåvei, vedf. eksat RTT stiger Senderaten flater ut Kort strek er sendte KB 70 60 50 40 30 20 10 900 700 500 300 100 Sending KBps1100 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds) pakker Lang strek er når en retransmittert pakke ble sendt første gang Punkt markerer timeout hos sender Queue size in router 10 5 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 Time (seconds) Transportlaget 51 Algoritme la BaseRTT være minimum av alle målte RTTer (vanligvis RTT til den første pakken) dersom vi ikke overforbruker forbindelsen kan vi anta ExpectedRate = CongestionWindow / BaseRTT kilden regner ut den faktiske sendraten (ActualRate) en gang per RTT kilden sammenligner ActualRate med ExpectedRate: Diff = ExpectedRate - ActualRate if Diff < α increase CongestionWindow linearly else if Diff > β decrease CongestionWindow linearly else leave CongestionWindow unchanged Transportlaget 52

Parametre α: 1 pakke β: 3 pakker Eksempel på en trace Øverst: metningsvindu Under: ActualRate (svart) Expectedrate (blå) Intervall mellom α og β (skyggelagt) KB CAM KBps 70 60 50 40 30 20 10 240 200 160 120 80 40 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Time (seconds) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0 Time (seconds) Transportlaget 53 Oppsummering Prinsipper på transportlaget multiplexing/demultiplexing Pålitelig overførig flytkontroll metningskontroll Eksempler i Tnternett UDP TCP Transportlaget 54