Reti - disi.unitn.itdisi.unitn.it/locigno/teaching-duties/reti/04_Transport-Layer.pdf · Reti...

Post on 12-Apr-2018

221 views 1 download

Transcript of Reti - disi.unitn.itdisi.unitn.it/locigno/teaching-duties/reti/04_Transport-Layer.pdf · Reti...

Reti(già “Reti diCalcolatori”)

Illivello Trasporto:UDPeTCP

RenatoLoCigno

http://disi.unitn.it/locigno/teaching-duties/reti

Copyright

Reti- locigno@disi.unitn.it- LivelloTrasporto 2

Quest’operaèprotettadallalicenza:

CreativeCommonsAttribuzione-Noncommerciale-Nonoperederivate2.5ItaliaLicense

Peridettagli,consultarehttp://creativecommons.org/licenses/by-nc-nd/2.5/it/

Servizi e protocolli di trasporto

r Fornisconolacomunicazionelogicatraprocessiapplicatividihost differenti

r Eseguononeisistemiterminalimlatoinvio:organizzaimessaggiinsegmenti elipassaallivellodirete

mlatoricezione:riassembla isegmentiinmessaggielipassaallivellodiapplicazione

Applicazione

trasportoretecollegamentofisico

Applicazione

trasportoretecollegamentofisico

Reti- locigno@disi.unitn.it- LivelloTrasporto 3

Livello trasporto in Internet

• Dueprotocolliditrasportodibasealternativi:TCPeUDP• Modellidiserviziodiversi

o TCPorientatoallaconnessione,affidabile,controllodiflussoecongestione,mantienelostatodellaconnessione

o UDPnonconnesso,non-affidabile,senzastato• Caratteristichecomuni:

o multiplazioneedemultiplazione medianteleporteo rilevazione(noncorrezione)errorisuheader

• Altriprotocollisonoinfasedidefinizione/deployment:o SCTP(Stream ControlTransmission Protocol)o DCCP(Datagram Congestion ControlProtocol)o ...

Reti- locigno@disi.unitn.it- LivelloTrasporto 4

Posizionamento e visione

• Illivellotrasporto,comequellodiapplicazione,nonhavisibilità dei dettagli della rete

• Lasemantica delprotocollo è end-to-endelaretevienetrattata comeuna scatola nera

• Loscopo “generale”delprotocollo è fornire unaastrazione dicomunicazione ai protocolli dilivelloapplicativo– attraversoserviziastrattidedicati(SAP– ServiceAccessPoint)– chiamatisocket ingergoInternet(trattatiaretiavanzate)

Reti- locigno@disi.unitn.it- LivelloTrasporto 5

Reti - locigno@disi.unitn.it - Livello Trasporto 6

Visioned’insieme

Applicaz.

TCP/UDP

IP

L1

L2

IP

L1

L2

L1

L2

IP

L1

L2

L1

L2

Applicaz.

TCP/UDP

IP

L1

L2

datiapplicaz. datiapplicaz.gestioneend-to-enddellaconnessione

datiapplicaz.TCP

dati.TCPIP

L2 datiTCPIPL2 datiTCPIPL2 datiTCPIP

datiapplicaz.TCP

datiTCPIP datiTCPIP

datiTCPIP

UD

PTC

P

Livelloditrasporto

• Fornisceuncanaleditrasportoend-to-end“astratto”tradueutenti,indipendentementedallarete

• Percompierequestoobiettivo,cometuttiilivelli,illivelloditrasportooffre,attraversodelleprimitive,deiserviziallivellosuperioreesvolgeunaseriedifunzioni

• Servizioffertiallivelloapplicativo:– connection-oriented affidabile

• periltrasferimentodeidativieneattivataunaconnessione• ognipacchetto(à segmento) inviatoviene“riscontrato”inmodoindividuale

– connectionless nonaffidabile• nonvieneattivatanessunaconnessione• inviodelletramesenzaattenderealcunfeedbackdalladestinazionesullacorrettaricezione

– seunatramavienepersanoncisonotentativiperrecuperarla

Reti- locigno@disi.unitn.it- LivelloTrasporto 7

Funzioni svolte dal livello di trasporto

• Indirizzamentoalivelloapplicativo/multiplazione/demultiplazione– multiplazioneeindirizamento alivelloapplicativo– scartoPDUmalformateoconerrorinell’header

• Instaurazione,gestioneerilasciodelleconnessioni– sipreoccupadigestirelaconnessione,ovveroloscambiodi

informazioninecessarieperconcordarel’attivazionediuncanaledicomunicazione

• Recuperodeglierrori(suidati)– politicheimplementateeazionidasvolgereincasodierroreo

perditadisegmenti• Consegnaordinatadeisegmenti• Controllodiflusso

– azionepreventivafinalizzataalimitarel’immissionedidatiinreteasecondadellacapacitàend-to-enddiquesta

• Controllodellacongestione– azionidaintraprenderecomereazioneallacongestionedirete

TCP

UDP

Reti- locigno@disi.unitn.it- LivelloTrasporto 8

Generalità

• GliindirizzidilivelloIPvengonoutilizzatiperl’instradamentodeipacchettiall’internodellareteeidentificanounivocamenteglihost sorgenteedestinazione

• Quandoilpacchettogiungealladestinazioneevienepassatoallivelloditrasportonasceunulterioreproblema:– poichésullivelloditrasportosi

appoggianopiùapplicazioni,com’èpossibiledistinguerel’unadall’altra?

• Siintroduceilconcettodiporta,chenonèaltrocheuncodicecheidentifical’applicazione

Livello 1

Livello 2

IP

Trasporto: TCP - UDP

Appl.1 Appl.2 Appl.3

Reti- locigno@disi.unitn.it- LivelloTrasporto 9

Indirizzamento: mux/demux

• Ildestinatariofinaledeidatinonèunhost maunprocessoinesecuzionesull’host

• L’interfacciatraprocessiapplicativiestratotrasportoèrappresentatadauna“porta”o numerointerosu16bito associazionetraporteeprocessio processiserverstandarde“pubblici”sonoassociatiaporta“bennota”,inferiorea1024(es:80perWWW,25peremail)

o processiclienteservernonstandardo“nascosti”usanounaportasuperiorea1024,nelcasodeiclient assegnatadinamicamentedalsistemaoperativo

Reti- locigno@disi.unitn.it- LivelloTrasporto 10

• Ilnumerodiportapuòessere– statico(well known port)

• identificativiassociatiadapplicazionistandard(postaelettronica,web,ftp,dns,...)

– dinamico(emphemeral)• identificativiassegnatidirettamentedalsistemaoperativoalmomentodell’aperturadellaconnessione

• Laportasorgenteelaportadestinazionenonsonouguali• L’utilizzodelleporte,insiemeagliindirizziIPsorgentee

destinazione servonoperilmux/demx deidati• Flussooconnessione

– datidiunasingolacomunicazionelogica– unaapplicazionepuò usare più flussi

Indirizzamento: mux/demux

Reti- locigno@disi.unitn.it- LivelloTrasporto 11

Reti - locigno@disi.unitn.it - Livello Trasporto 12

Indentificareunflusso

TCP/UDPIP

Destination portSource port

dati applicaz.

Vers IHL Total lengthFrag. Identification Flags Frag. Offset

Source address

TOS

TTL Protocol Header Checksum

Destination address

Options & Padding:

5-uplacheidentificala

connessione(eilconseguenteflusso)tradue

applicazioni

La5-upla{S-IP,D-IP,PROT,S-Port,D-Port}identificainmodo univocounflussoinqualsiasipuntodellarete...equindiancheall’interfacciatraprotocolloapplicativoeprotocollodi

trasportoinunhost

Formato dei segmenti UDP

• SourcePorteDestination Port[16bit]:identificanoiprocessisorgenteedestinazionedeidati

• Length [16bit]:lunghezzatotale(espressainbyte)deldatagramma,compresol’headerUDP

• Checksum [16bit]:campodicontrollocheservepersapereseildatagrammacorrentecontieneerrori

Destination portSource port

0 8 15 16 24 31

ChecksumLength

DATA

Reti- locigno@disi.unitn.it- LivelloTrasporto 13

UserDatagramProtocol

• Protocolloditrasportoconnectionless nonaffidabile• Svolgesolofunzionediindirizzamentodelleapplicazioni(porte)• NONgestisce:

– connessioni;controllodiflusso– recuperodeglierrori(solorilevamento)– controllodellacongestione;riordinodeipacchetti

• Supportoditransazionisemplicitraapplicativieapplicazionireal-timechetolleranoperdite

• Un’applicazione che usa UDPdeve risolvere problemi diaffidabilità,perdita dipacchetti,duplicazione,controllo disequenza,controllodiflusso,controllo dicongestione

• StandardizzatoinRFC768

Reti- locigno@disi.unitn.it- LivelloTrasporto 14

Tecniche ARQ e protocolli a finestra

• Perottenereaffidabilitàsiusanotecnichediritrasmissioneautomaticadelleinformazionicorrotteoperse– ARQ– Automatic Retransmission reQuest

• Ladecisione(automatica)seritrasmetterel’informazionevienepresainbaseaprotocollichesfruttanofinestreditrasmissioneericezione– stopandwait (finestrapariaunaunitàdati– PDU)– finestredidimensionefissa– finestrecondimensionevariabile

• Servonotecnicheper– rilevarelePDUerrate– rilevarelePDUmancanti

Reti- locigno@disi.unitn.it- LivelloTrasporto 15

Checksum

Mittente:r Trattailcontenutodel

segmentocomeunasequenzadiinteridan bit

r checksum:somma(complementoa1)icontenutidelsegmento

r Ilmittenteponeilvaloredellachecksum nelcampochecksumdelsegmento

Ricevente:r calcolalachecksumdelsegmento

ricevutor controllaselachecksumcalcolata

èugualealvaloredelcampochecksum:mNo- errorerilevatom Sì- nessunerrorerilevatom Particolaripatterndierrori

possonosfuggire

Obiettivo: rilevaregli“errori”(bitalterati)nelsegmentotrasmesso

Reti- locigno@disi.unitn.it- LivelloTrasporto 16

Protezione dagli errori

• bitdiparità(riconosceerroriinnumerodispari)

• codicearipetizione(decisioneamaggioranza:permettedicorreggereerrori)

0 1 1 0 1 0 1 0 00 1 0 0 1 0 1 0 1

0 1 1 0 1 0 1 00 1 1 0 1 0 1 00 1 1 0 1 0 1 0

Reti- locigno@disi.unitn.it- LivelloTrasporto 17

• paritàdirigaecolonna(consentelacorrezionedierrorisingoli)

0 1 1 0 1 0 1 00 1 0 0 1 0 0 00 0 0 1 0 1 0 11 1 0 0 0 0 0 11 1 1 0 1 1 0 10 0 0 0 1 1 0 00 1 1 0 0 1 0 10 1 0 0 0 0 0 00 0 1 1 0 1 1 0

Protezione dagli errori

Reti- locigno@disi.unitn.it- LivelloTrasporto 18

Stop and wait

• Iltrasmettitore:– inviaunaPDUdopoavernefattaunacopia– attivaunorologio(tempoditimeout)– siponeinattesadellaconfermadiricezione(acknowledgment- ACK)

– sescadeiltimeout primadell’arrivodellaconferma,ripetelatrasmissione

– quandoriceveunACK:• controllalacorrettezzadell’ACK• controllailnumerodisequenza• sel’ACKèrelativoall’ultimaPDUtrasmessaabilitalatrasmissionedellaprossimaPDU

Reti- locigno@disi.unitn.it- LivelloTrasporto 19

Stop and wait

• Ilricevitore,quandoriceveunaPDU:– controllalacorrettezzadellaPDU– controllailnumerodisequenza– selaPDUècorrettaeinordineinvialaconfermadiricezione(ACK)elaconsegnaailivellisuperiori

– selaPDUèerrataofuorisequenzascartalaPDUenonfanulla(oinviaNACKsepossibile)

Reti- locigno@disi.unitn.it- LivelloTrasporto 20

Stop and wait

Primobitdelpacchettotrasmesso,t=0Mittente Ricevitore

RTT

Ultimobitdelpacchettotrasmesso,t=L/R

ArrivailprimobitArrival’ultimobit,inviaACK

ArrivaACK,invia il prossimopacchetto,t=RTT+L/R

efficienza=L/R

RTT+L/RL=lunghezza delpacchetto (bit)R=capacità della rete(bit/s)

Reti- locigno@disi.unitn.it- LivelloTrasporto 21

Finestre multi-PDU

• IlprotocolloStopandWait èpocoefficienteperchédopolatrasmissionediognisingolopacchettobisognaattenderelasuaconferma

• PermetterelatrasmissionedipiùdiunaPDUprimadifermarsiinattesadelleconfermemiglioraleprestazioni– TrasmissioneericezioneACKavvengonoin“pipeline”

• DevopoterriconoscerelePDUtrasmesse

Reti- locigno@disi.unitn.it- LivelloTrasporto 22

Finestra di trasmissione

• LafinestraditrasmissioneWT è“laquantitàmassimadiPDUinsequenzacheiltrasmettitoreèautorizzatoadinviareinretesenzaavernericevutoriscontro(ACK)”

• Ladimensionedellafinestraèlimitatadallaquantitàdimemoriaallocataintrasmissione

• WT rappresentaancheilmassimonumerodiPDUcontemporaneamentepresentisulcanaleoinrete

Reti- locigno@disi.unitn.it- LivelloTrasporto 23

Finestra di ricezione

• LafinestradiricezioneWR è“laquantitàdiPDUcheilricevitoreèdispostoadaccettareememorizzare”

• Ladimensionedellafinestraèlimitatadallaquantitàdimemoriaallocatainricezione

Reti - locigno@disi.unitn.it - Livello Trasporto 24

Finestra di trasmissione

n

pacchetticonfermati

pacchettitx einattesadiconferma

pacchettichepossono

esseretrasmessi

pacchettichenonpossonoancoraesseretrasmessi

WT

Reti- locigno@disi.unitn.it- LivelloTrasporto 25

Finestradiricezioneunitaria

n

pacchetticonfermati

pacchettoatteso I pacchettifuorisequenza

nonpossonoessereaccettatiSesiperdeunpacchettosideveritrasmetterel’interasequenzadiN=WT pacchetti

inviati(GoBackN)

WR

Reti- locigno@disi.unitn.it- LivelloTrasporto 26

pacchettichenonpossonoessereaccettatianchesecorretti

Finestradiricezionemaggiorediuno

n

pacchetticonfermati

pacchettoatteso

I pacchettifuorisequenzapossonoessereaccettatiinattesadiriceverequelloatteso.

Sesiperdeunpacchettosipuòritrasmetteresoloquellopersopurché

WR >=WT(Selective Repeat)

WR

Reti- locigno@disi.unitn.it- LivelloTrasporto 27

pacchettichepossonoesserememorizzatialricevitore

Semanticadeipacchettidiriscontro

• Lasemanticaassociataalpacchettodiriscontropuòessere:

– ACKindividuale(oselettivo):sinotificalacorrettaricezionediunpacchettoparticolare.ACK(n)significa“horicevutoilpacchetton”

– ACKcumulativo:sinotificalacorrettaricezionedituttiipacchetticonnumerodisequenzainferioreaquellospecificatonell’ACK.ACK(n)significa“horicevutotuttofinoadn escluso”

– ACKnegativo(NAK):sinotificalarichiestadiritrasmissionediunsingolopacchetto.NAK(n)significa“ritrasmettiilpacchetton”

• TrasmettitoreeRicevitoresidevonoaccordarepreventivamentesullasemanticadegliACK

Reti- locigno@disi.unitn.it- LivelloTrasporto 28

Piggybacking

• Nelcasodiflussidiinformazionebidirezionali,èsoventepossibilescriverel’informazionediriscontro(ACK)nellaintestazionediPDUdiinformazionecheviaggianonelladirezioneopposta

• Sirisparmialatrasmissionediunpacchettoalivellorete

Reti- locigno@disi.unitn.it- LivelloTrasporto 29

Finestra di ricezione > di 1

nPDU

confermateeconsegnate

allivellosuperiore PDUattese

PDUfuorisequenzachenonpossonoessereaccettate

WR

PDUdaconsegnare

allivellosuperiore

Reti- locigno@disi.unitn.it- LivelloTrasporto 30

NumerazionePDU

• LanumerazionedellePDUèciclica:– kbitdinumerazione– numerazionemodulo2k

– WT +WR <2k

0

1

2

34

5

6

7WT

WR

3bitdinumerazione

W

WR

T

=

=

1

3Reti- locigno@disi.unitn.it- LivelloTrasporto 31

Selective Repeat

• Iltrasmettitore:– trasmettefinoadN =WT PDUsenzaricevereACK– perciascunainizializzauntimeout– quandoriceveunACKrelativoadunaPDUlatogliedallafinestraditrasmissioneetrasmetteunanuovaPDU

– sescadeuntimeout ritrasmetteselettivamentelaPDUrelativaall’ACK(ere-inizializzailtimeout)

– quandoritrasmetteunaPDUpuò• fermarsifinoaquandoharicevutol’ACKdiquestaPDU• continuareatrasmetterePDUnuoveseladinamicadellafinestraedegliACKrelativiallealtrePDUloconsente

Reti- locigno@disi.unitn.it- LivelloTrasporto 32

Selective Repeat

• Ilricevitore:– riceveunaPDU– controllalacorrettezzadellaPDU– controllailnumerodisequenza– selaPDUècorrettaedinsequenzalaconsegnaallivellosuperiore

– selaPDUècorrettamanoninsequenza:• seèentrolafinestradiricezionelamemorizza• seèfuoridallafinestradiricezionelascarta

– inviaunACK• relativoallaPDUricevuta(ACKselettivi)• relativoall’ultimaPDUricevutainsequenza(ACKcumulativi)

Reti- locigno@disi.unitn.it- LivelloTrasporto 33

Prestazioni protocolli a finestra

esempio:collegamentoda1Gbps,ritardodipropagazione15ms,pacchettida1kbyte:

Ttrasm= 8 kb/pacc109 b/sec = 8 microsec

Ø Umitt :utilizzo èlafrazioneditempoincuiilmittenteèoccupatonell’inviodibit

Ø Unpacchettoda1KBogni~30msecàthroughput di~33kB/secinuncollegamentoda1Gbps

Ø Ilprotocolloditrasportolimital’usodellerisorsefisiche!

Umitt =

0,008

30,008= 0,00027

L / RRTT + L / R

=

L (lunghezza del pacchetto in bit)R (tasso trasmissivo, bps) =

Reti- locigno@disi.unitn.it- LivelloTrasporto 34

stop-and-wait

Primo bit del pacchetto trasmesso, t = 0

Mittente Ricevente

RTT

Ultimo bit delpacchetto trasmesso, t = L / R

Arriva il primo bitArriva l’ultimo bit, invia ACK

Arriva ACK, invia il prossimo pacchetto, t = RTT + L / R

Umitt =

0,008

30,008= 0,00027

L / RRTT + L / R

=

Reti- locigno@disi.unitn.it- LivelloTrasporto 35

Finestra > 1 à Pipelining

Pipelining: ilmittenteammettepiùpacchettiintransito,ancoradanotificarem buffering deipacchettipressoilmittenteericeventeper

ritrasmissioni

Reti- locigno@disi.unitn.it- LivelloTrasporto 36

Pipelining: aumento dell’utilizzo

Mittente Ricevente

RTT

Ultimo bit del primopacchetto trasmesso, t = L / R

Arriva il primo bit del primo pacchetto

Arriva l’ultimo bit del primo pacchetto,invia ACK

Arriva ACK, invia il prossimo pacchetto, t = RTT + L / R

Arriva l’ultimo bit del secondo pacchetto,invia ACKArriva l’ultimo bit del terzo pacchetto,invia ACK

Umitt =0,024

30,008= 0,0008

3 * L / RRTT + L / R

=

Aumento l’utilizzodiunfattore WT

Primo bit del primopacchetto trasmesso, t = 0

WT =3;

WT >3trasmetto3pacchetti primadifermarmi

Reti- locigno@disi.unitn.it- LivelloTrasporto 37

TCP...finalmente

• Il“Transmission ControlProtocol”èunprotocolloafinestraconACKcumulativieritrasmissioniselettive

• Lafinestradiricezioneetrasmissionepossonoesserevariatedinamicamentedurantelacomunicazione– versioniepatchsuccessivelohannoresounodeiprotocollipiùcomplessidellasuitediInternet

• TCPèorientatoallaconnessione• Affidabile• Implementacontrollodiflusso• Cercadicontrollareiltrafficoiniettatoinfunzionedella

congestionenellarete

Reti- locigno@disi.unitn.it- LivelloTrasporto 38

TCP: riferimenti bibliografici

• RichardStevens:TCPIllustrated,vol.1-2-3• RFC793(1981) :Transmission ControlProtocol• RFC1122/1123 (1989) :Requirements forInternetHosts• RFC1323(1992) :TCPExtensionsforHighPerformance• RFC2018(1996) TCPSelective Acknowledgment Options • RFC2581:TCPCongestion Control• RFC2582:TheNewReno Modification toTCP's FastRecovery

Algorithm• RFC2883:AnExtensiontotheSelectiveAcknowledgement(SACK)

OptionforTCP• RFC2988: ComputingTCP's Retransmission Timer• ...• ...

Reti- locigno@disi.unitn.it- LivelloTrasporto 39

TCP: compiti

• Fornisceporteper(de)multiplazione• UnaentitàTCPdiunhost,quandodevecomunicareconun’entità

TCPdiunaltrohost,creaunaconnessionefornendounserviziosimileaduncircuitovirtualeo bidirezionale(fullduplex) o concontrollodierroreedisequenza

• Mantieneinformazionidistatoneglihost perogniconnessione• TCPsegmentaeriassembla idatisecondolesuenecessità:

• trattastream didati(byte)nonstrutturatidailivellisuperiori• nongarantiscenessunarelazionetrailnumerodiread equellodiwrite (buffertraTCPelivelloapplicazione)

Reti- locigno@disi.unitn.it- LivelloTrasporto 40

Identificazione di connessioni

• UnaconnessioneTCPtradueprocessièdefinitadaisuoiendpoints(puntiterminali),univocamenteidentificatidaunsocket:o IndirizziIPhost sorgenteehostdestinazione

o NumeridiportaTCPhostsorgenteehost destinazione

• Nota:TCPoUDPusanoporteindipendenti

• Esempio:connessioneTCPtraporta15320host 130.192.24.5eporta80host 193.45.3.10

Destination portSource port

Vers IHL Total length

Frag. Identification Flags Frag. Offset

Source address

TOS

TTL Protocol Header Checksum

Destination address

Options & Padding:

Reti- locigno@disi.unitn.it- LivelloTrasporto 41

Trasmettitore TCP

• Suddivideidatidell’applicazioneinsegmenti• UsaprotocolloafinestradinamicaconWT ≥ 1• Attivatimerquandoinviaisegmenti:

o segmentinonconfermatialloscaderedeltimer(Retransmission TimeOut - RTO)provocanoritrasmissioni

• StimaRTTperimpostareRTO• Calcolaetrasmettechecksum obbligatoriosuheader edati• Regolavelocitàcondimensionefinestra

o controllodiflussoecongestione

Reti- locigno@disi.unitn.it- LivelloTrasporto 42

Ricevitore TCP

• Riordinasegmentifuorisequenzaescartasegmentierratio consegnastream ordinatoecorrettoalprocessoapplicativo

• InviaACKcumulativi• AnnuncianegliACKlospazioliberonelbufferdiricezioneper

controllarevelocitàtrasmettitore(controllodiflusso)

Reti- locigno@disi.unitn.it- LivelloTrasporto 43

Ricevitore TCP

• Segmentocorrettoedinsequenza• Memorizza(edeventualmenteconsegnaallivellosuperiore)edinviaACKcumulativo

• Segmentoduplicato• ScartaedinviaACKrelativoall’ultimosegmentoricevutoinsequenza

• Segmentoconchecksum errato• ScartasenzainviareACK

• Segmentofuorisequenza• MemorizzaedinviaACKrelativoall’ultimosegmentoricevutoinsequenza(ACKduplicato)

Reti- locigno@disi.unitn.it- LivelloTrasporto 44

TCP: generazione ACK

Eventi

arrivo segmento in ordine, inviato ACK correttamente per tutti segmenti precedenti

arrivo segmento fuori sequenzacon numero maggiore di quello atteso: vuoto rilevato

arrivo di segmento che riempie vuoti parzialmente o completamente

Azioni ricevitore TCP

invia ACK

invia ACK duplicato, indicando come numero di sequenza il prossimo byte che si attende di ricevere

ACK immediato, indicando come numero di sequenza il prossimo byte che si attende di ricevere

Reti- locigno@disi.unitn.it- LivelloTrasporto 45

Throughput ottenibile

• Generico protocollo afinestra:lavelocità ditrasmissione inassenza dierrori è

o Connessioni “corte”ottengono banda maggiore aparità difinestra

• Perregolare velocità ditrasmissione posso agire suo roundtriptimeo dimensione finestra

time tripRoundione trasmissdi Finestra

Reti- locigno@disi.unitn.it- LivelloTrasporto 46

Controllo di flusso

• TCPimpiegauncontrolloend-to-endbasatosucontrollodelladimensionedellafinestradeltrasmettitore:o evita che unhostveloce saturi unricevitore lentoo ilricevitoreimponeladimensionemassimadellafinestradeltrasmettitore,indicandonegliACKlafinestradiricezionedisponibile

o valoredinamicochedipendedall’allocazionedelsistemaoperativoedallaquantità didati ricevuti enonancora lettidall’applicazione

Reti- locigno@disi.unitn.it- LivelloTrasporto 47

Controllo di congestione

• Deveevitarecheglihost nelloroinsiemesianotroppoaggressivisaturandolarete

• Nonpossotrasmetteresempreallavelocitàmassimaconsentitadalricevitore

• Selafinestraditrasmissioneè maggiore del valorepercuiilbitrateintrasmissionesuperacapacitàdelcollodibottigliao simemorizzanodatineibufferlungoilpercorso,ecresceroundtriptime

o siperdonodatineibufferdeinodiintermedi

Reti- locigno@disi.unitn.it- LivelloTrasporto 48

LaPDUTCP

• LaPDUdiTCPèdettasegmento• Ladimensionedeisegmentipuòvariaredalsoloheader

(ACK,20byte)finoadunvaloremassimoMSS dipendentedallaMTUIP

• Ladimensionedelsingolosegmentodipendedallostreamdeilivellisuperiori

HEADER 20 B

VARIABLEDATA

LENGTH (0 - MSS)

Reti- locigno@disi.unitn.it- LivelloTrasporto 49

0 4 8 16 19 24 32

Source Port Destination Port

Sequence Number

Acknowledgment Number

Checksum

Options

Window

Urgent Pointer

HLEN Resv Control flag

Padding

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 50

TCP header

Sequence Number

Acknowledgment Number

0 15 31

HLEN Resv. Receiver window

checksum Urgent Pointer

flags

Source Port Number Dest Port Number

Identificanol’applicazionechestainviandoericevendodati.CombinaticonirispettiviindirizziIP,identificanoinmodounivocounaconnessione

Reti- locigno@disi.unitn.it- LivelloTrasporto 51

TCP header

• Identifica,nellostream didati,laposizionedelprimobytedelpayload delsegmento

• Numerazioneciclicasu32bit• Ognidirezionedella

connessioneprocedeconnumeridisequenzadiversieindipendenti

Acknowledgment Number

0 15 31

HLEN Resv. Receiver window

checksum Urgent Pointer

flags

Source Port Number Dest Port Number

Sequence Number

Reti- locigno@disi.unitn.it- LivelloTrasporto 52

0 15 31

HLEN Resv. Receiver window

checksum Urgent Pointer

Source Port Number Dest Port Number

Sequence Number

Acknowledgment Number

flags

Numero di sequenza più 1 dell’ultimo byte di dati ricevuto correttamente e in sequenza

Ovvero il prossimo byte che il ricevitore si aspetta di ricevere

Valido solo con ACK flagsettato

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 53

Numeri di sequenza e di ack

Host A Host B

Utente preme tasto

‘C’

host confermaricezionedell’eco

‘C’

hostconferma ricezionedi ‘C’, ed invia echo

tempoEsempio di sessione telnet

Reti- locigno@disi.unitn.it- LivelloTrasporto 54

0 15 31

checksum Urgent Pointer

flags

Source Port Number Dest Port Number

Sequence Number Lunghezza dell’header in parole di 32 bit

Acknowledgment Number

HLEN Resv. Receiver window

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 55

0 15 31

checksum Urgent Pointer

flags

Source Port Number Dest Port Number

Sequence Number

RiservatI per usi futuri(es. ECN – ExplicitCongestion Notification)

Acknowledgment Number

HLEN Resv. Receiver window

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 56

Gestioneconnessione • Seibitdiflag,unoopiùpossonoesseresettatiinsieme:o URG:urgentpointervalidoo ACK:numerodiackvalidoo PSH:forzapassaggiodatiapplicazione

o RST:resetconnessioneo SYN:synchronizeseq.No.Aperturaconnessione

o FIN:chiusuraconnessione

0 15 31

checksum Urgent Pointer

Source Port Number Dest Port Number

Sequence Number

Acknowledgment Number

HLEN Resv. Receiver windowflags

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 57

0 15 31

checksum Urgent Pointer

flags

Source Port Number Dest Port Number

Sequence Number

Numero di byte, a partire da quello nel campo di ACK, che il ricevitore è disposto ad accettare per controllo di flussoValore massimo rwnd65535 byte se non si usa l’opzione “window scale”

Acknowledgment Number

HLEN Resv. Receiver window

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 58

Finestra e Throughput

• MassimaquantitàdidatiintransitoperRTT:o 16-bitrwnd = 64KBmax

• RTT=100msProdotto banda xritardo dato

BandaT1 (1.5Mbps) Ethernet (10Mbps) T3 (45Mbps) FastEthernet (100Mbps) STS-3 (155Mbps) STS-12 (622Mbps) STS-48 (2.5Gbps)

banda x ritardo18KB

122KB549KB1.2MB1.8MB7.4MB

29.6MB

Reti- locigno@disi.unitn.it- LivelloTrasporto 59

0 15 31

flags

Source Port Number Dest Port Number

Sequence Number

Checksum obbligatorio su header e dati, più pseudo-header che include indirizzi IP e tipo di protocollo (violazione del principio di stratificazione OSI)

Acknowledgment Number

HLEN Resv. Receiver window

checksum Urgent Pointer

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 60

• Algoritmodichecksumo allineamentodiheader,datie

pseudo-header su16bito sommaincomplementoa1di

ognirigao siottienenumeroa32bit,che

sidivideinduepartidi16bito sommaincomplementoa1

delledueparti,inclusoilriporto

o inserisconell’header i16bitrisultanti

0 15 31

flags

Source Port Number Dest Port Number

Sequence Number

Acknowledgment Number

HLEN Resv. Receiver window

checksum Urgent Pointer

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 61

0 15 31

flags

Source Port Number Dest Port Number

Sequence Number

Acknowledgment Number

HLEN Resv. Receiver window

checksum Urgent Pointer

Puntatore a “dati urgenti” nelcampo dati (es. ctrl-C in unasessione telnet).Offset rispetto al num. di seq.

Valido solo se flag URG èsettato

TCP header

Reti- locigno@disi.unitn.it- LivelloTrasporto 62

Instraurazione della connessione

• L’instaurazionedellaconnessioneavvienesecondolaproceduradettadi“three-wayhandshake”

• lastazionecherichiedelaconnessione(A)inviaunsegmentodiSYN

• parametrispecificati:numerodiportadell’applicazionecuisiintendeaccedereeInitial Sequence Number (ISN-A)

• lastazionechericevelarichiesta(B)rispondeconunsegmentoSYN

• parametrispecificati:ISN-Beriscontro(ACK)ISN-A

• lastazioneAriscontrailsegmentoSYNdellastazioneB(ISN-B)

Reti- locigno@disi.unitn.it- LivelloTrasporto 63

time

A B

SYN(PortA,PortB,ISN-A)=x

SYNACK(PortB,PortA,ISN-B=Y,ACK=x+1)

ACK(PortA,PortB,ACK=y+1

Come si calcola MSS

• MSSdipendedallaMTU(MaximumTransferUnit)dellivelloIP,cheasuavoltadipendedallivelloData-LinkdelcollegamentoconMTUpiùpiccolalungoilpercorso

• PurtroppononesistonomeccanismidisegnalazionepercomunicareMSS

• TCPpuòcercaredistimarelaMTUminimaconunmeccanismodi“trialanderror”

• Provasegmentisemprepiùgrossifinoaquandounovienescartatoperdimensioneeccessivaeildispositivochel’hascartatomandaunmessaggioICMP(v.livellorete)almittente

• ...purtropponontuttiidispositivirispondono...• Default:MSS=1460(1500tramaethernet– 40bytes diheaders)• Default“minimo”:MSS=536

Reti- locigno@disi.unitn.it- LivelloTrasporto 64

TerminazionedellaConnessione

• Poichélaconnessioneèbidirezionale,laterminazionedeveavvenireinentrambeledirezioni

• Proceduraditerminazione“gentle”– lastazionechenonhapiùdatidatrasmettereedecidedichiuderelaconnessioneinviaunsegmentoFIN(segmentoconilcampoFINpostoa1eilcampodativuoto)

– lastazionechericeveilsegmentoFINinviaunACKeindicaall’applicazionechelacomunicazioneèstatachiusanelladirezioneentrante

• Sequestaproceduraavvienesoloinunadirezione(half close),nell’altrailtrasferimentodatipuòcontinuare(gliACKnonsonoconsideraticometrafficooriginato,macomerispostaaltraffico)

– perchiuderecompletamentelaconnessione,laproceduradihalf close deveavvenireanchenell’altradirezione

Reti- locigno@disi.unitn.it- LivelloTrasporto 65

TerminazionedellaConnessione

Reti- locigno@disi.unitn.it- LivelloTrasporto 66

time

A B

FIN(PortA,PortB)

FINACK(PortB,PortA)

DATA()

ACK()DATA()

ACK()

FIN(PortB,PortA)

FINACK(PortA,PortB)

TerminazioneconRST

• Laterminazione“gentle”è moltolenta ecomplessa,esi presta aattacchi DoS

• Lamaggior partedelle applicazioni moderne (soprattutto i grandiwebserver)terminano laconnessione conunsingolo RST

• RSTnasce come“disasterrecovery”perliberare lerisorse logicheincaso diimpossibilità dicomunicazione

• Sel’altroend-point dellaconnessionericeveRSTliberaancheluilerisorselogiche

Reti- locigno@disi.unitn.it- LivelloTrasporto 67

time

A B

RST(PortA,PortB)

Gestione del timeout

• Iltimeout (RTOà Retransimission TimeOut)indicailtempoentroilqualelasorgentesiaspettadiricevereilriscontro(ack)– nelcasoincuiilriscontrononarrivi,lasorgenteprocedeallaritrasmissione

• RTOnonpuòessereunvalorestaticopredefinito– iltempodipercorrenzasperimentatodaisegmentièvariabileedipende

• dalladistanzatrasorgenteedestinazione• dallecondizionidellarete• dalladisponibilitàdelladestinazione

– esempio:fattorinochedeveconsegnareunpaccoincittà• RTOdevedunqueesserecalcolatodinamicamentedivoltainvolta

– durantelafasediinstaurazionedellaconnessione– durantelatrasmissionedeidati

• IlcalcolodiRTOsibasasullamisuradelRTT(RoundTripTime)– RTT:intervalloditempotral’inviodiunsegmentoelaricezionedel

riscontrodiquelsegmento

Reti- locigno@disi.unitn.it- LivelloTrasporto 68

Stima del Round Trip Time

• PoichéRTTpuòvariareanchemoltoinbaseallecondizionidellarete,ilvalorediRTT(SRTT,Smoothed RTT)utilizzatoperilcalcolodiRTOrisultaunastimadelvalormediodiRTTsperimentatodaidiversisegmenti

• Ilparametroαèregolabilee,asecondadeivaloriassunti,rendeilpesodellamisuradiRTTistantaneopiùomenoincisivo– seαà 0ilSRTTstimatorisultaabbastanzastabileenonviene

influenzatodasingolisegmentichesperimentanoRTTmoltodiversi– seαà 1ilSRTTstimatodipendefortementedallamisurapuntualedei

singoliRTTistantanei– tipicamenteα=0.125=(1/8)

SRTT = (1- α) SRTT + α RTT

RTT = valore del campione attuale di RTT SRTT = stima smoothed di RTT

Reti- locigno@disi.unitn.it- LivelloTrasporto 69

Stima del Round Trip Time

• Tipicamenteb=0.25=(1/4)• LaRTTVARpuòancheesseremoltomaggiorediSRTT• Lasuastimausaunfiltromenostretto,percuilastimaèpiù

“reattiva”• ConosceremediaevarianzadiRTTserveaimpostare

correttamenteiltimeout diritrasmissione

RTTVAR = (1- b) RTTVAR + b |SRTT – RTT|

RTTVAR = stima smoothed della varianza di RTT

Reti- locigno@disi.unitn.it- LivelloTrasporto 70

Stima di RTO

• RTO=SRTT+4RTTVAR

• LasorgenteattendeilRTTmedio(SRTT)piùquattro voltelasua varianza (RTTVAR)primadiconsiderareilsegmentopersoeritrasmetterlo

• Incasodiritrasmissione,ilRTOperquelsegmentovienericalcolatoinbaseadunprocessodiexponential backoff– seèscadutoilRTO,probabilmentec’è

congestione,quindimeglioaumentareilRTOperquelsegmento

– RTO-retransmission =2*RTO• RTOvieneriportatoalsuovalore“calcolato”senza

backoff dopolatrasmissionecorrettadiunsegmentonuovo

A Bsegm. X

ACKRTT

RTO

RTO’

segm. X+1

segm. X+1

ACK

segm. X+3

RTO

segm. X+3ACK

segm. X+2

ACK

RTO

segm. X+4

segm. X+4

ACK

ACK

segm. X+3

Reti- locigno@disi.unitn.it- LivelloTrasporto 71

Esempio di stima di RTT:

RTT: gaia.cs.umass.edu e fantasia.eurecom.fr

100

150

200

250

300

350

1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106

tempo (secondi)

RTT

(milli

seco

ndi)

Campione RTT Stime di RTT

Reti- locigno@disi.unitn.it- LivelloTrasporto 72

Stima di RTT e RTO

• RTOhaunvaloreminimo(normalmenteintornoa200ms)eunomassimo(normalmente60seoltre)

• Implementazionimoderneusanol’opzione“timestamp”perilcalcolodiRTT,maiprincipibasediadattamentoallecondizionidellareterimanelostesso:– vienestimatounvaloremedioeunadeviazionemediadiRTT– RTOvienecalcolatoinbaseaquestivalorimedi

• Nelleimplementazioni,inoltre,sitienecontodialtrifattorichepossonoinfluenzareilcalcolodiRTTediRTO:– esempio:ilRTTdeisegmentiritrasmessidovrebbeinfluenzareilSRTTequindiilRTO?

Reti- locigno@disi.unitn.it- LivelloTrasporto 73

Congestione: generalità

• Incasodicongestionedellarete,acausadeibufferlimitatidegliapparatidirete,alcunisegmentipotrebberovenirepersi

• Laperditadeisegmentieilrelativoscaderedeltimeout diritrasmissioneèconsideratounsintomodicongestione– TCPnonhaaltrimezziperconoscerelostatodellarete

• Lasorgentedovrebbeessereingradodireagirediminuendoiltassodiimmissionedeinuovisegmenti

• Questareazionevienedetta“controllodellacongestione”– sidifferenziadalcontrollodiflussocheserveaevitareilsovraccaricodelricevitore

Reti- locigno@disi.unitn.it- LivelloTrasporto 74

Congestione:cause

• Leritrasmissioni rischiano diessere inutili nel caso incuiipacchetti vengono buttati viapermancanza dirisorse

• Cos’è lacongestione ecomesi genera?• Congestione:lostato diuna reteincuiil traffico offerto η è

maggiore della capacità delal reteC– normalizzando ρ =η/Callora ρ >=1significa congestione

• Esempio disingolo collo dibottiglia

100 Mbit/sS2

S3

S50

S1

...ricevitori

Reti- locigno@disi.unitn.it- LivelloTrasporto 75

Cause/costi della congestione:1

r duemittenti,duedestinatari

r unrouterconbufferillimitati

r nessunaritrasmissione

• throughputmassimo

• ritardo“infinito”

Reti- locigno@disi.unitn.it- LivelloTrasporto 76

Cause/costi della congestione: 2

r unrouter,bufferfinitir ilmittenteritrasmetteilpacchettoperduto

Buffer finiti e condivisi per i collegamenti in uscita

Host A lin : dati originari

Host B

lout

l'in : dati originaripiù dati ritrasmessi

Reti- locigno@disi.unitn.it- LivelloTrasporto 77

Cause/costi della congestione: 3

r Quattromittentir Percorsimultihopr timeout/ritrasmissione

lin

D: Che cosa accade quando e aumentano?l

in

Host Alin : dati originari

Host B

lout

l'in : dati originaripiù dati ritrasmessi

Buffer finiti e condivisi per i collegamenti in uscita

Reti- locigno@disi.unitn.it- LivelloTrasporto 78

Cause/costi della congestione: 3

Unaltro“costo”dellacongestione:r Quandoilpacchettovienescartato,lacapacitàtrasmissiva

utilizzatasuicollegamentiperinstradareilpacchettorisultasprecata!

Host A

Host B

lout

Reti- locigno@disi.unitn.it- LivelloTrasporto 79

Approcci al controllo della congestione

Controllodicongestioneend-to-end:r nessunsupportoesplicito

dallareter lacongestioneèdedotta

osservandoleperditeeiritardineisistemiterminali

r metodoadottatodaTCP

Controllodicongestioneassistitodallarete:r irouterfornisconoun

feedbackaisistemiterminalim unsingolobitperindicarela

congestione(SNA,DECbit,TCP/IPECN,ATM)

m comunicareinmodoesplicitoalmittentelafrequenzatrasmissiva

Reti- locigno@disi.unitn.it- LivelloTrasporto 80

Congestion Window

• Incasodicongestioneilcontrollodiflussorallentalasorgente– selareteècongestionata,arriverannomenoriscontriequindiiltassodiimmissionediminuisceautomaticamente

• Ladimensionedellafinestraè ottimale?No!

• Soluzioneperilcontrollodellacongestioneà variaredinamicamenteladimensionedellafinestraditrasmissione– ladimensionedellafinestranonèdecisaaprioriestatica,masiadattaallesituazioni(stimate)dicarico

– talefinestrascorrevoleevariabilevienedenominata“congestion window”(CWND)

Reti- locigno@disi.unitn.it- LivelloTrasporto 81

Esempio

A B56

789

10

111213141516

17

5 6 7 8 9 10 11 12 13 144 15 16 17 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18

1213

RTO

Reti- locigno@disi.unitn.it- LivelloTrasporto 82

Algoritmi di controllo della congestione

• Esistonodiversialgoritmicheregolanolacrescitadellafinestra(CWND)inassenzadiperdite

• Iduealgoritmibasesono:– SlowStart– Congestion Avoidance

• Esistonoduealgoritmi(eunaopzione)peraumentarel’efficienzadiTCPincasodiperdita(alpostodelRTO)– FastRetransmit– FastRecovery– SACK(opzione)

Reti- locigno@disi.unitn.it- LivelloTrasporto 83

Slow Start e Congestion Avoidance

• SlowStart– perciascunriscontroricevutolaCWNDaumentadiMSSàquandosiriceveunriscontro,sitrasmettonoduenuovisegmenti(seCWNDrimanefissasenetrasmette1solo)

– l’evoluzionedellaCWNDhaunandamentoesponenzialeconbaseRTT

• alprimoRTTlaCWND=1,ricevutoilriscontroCWND=2,ricevutiidueriscontriCWND=4,...

• Congestion avoidance– perciascunriscontroricevuto,lafinestraaumentadiMSS/CWND– questoimplicacheadogniRTT,incuisiricevonounnumerodiriscontripariallaCWND,laCWNDaumentadiunsegmento

– l’evoluzionedellaCWNDhaunandamentolineareneltempo

Reti- locigno@disi.unitn.it- LivelloTrasporto 84

Slow Start e Congestion Avoidance

• Durantelafase SSalla ricezione diogni ACKvalido enonduplicato

CWND=CWND+MSS

• Durantelafase CAalla ricezione diogni ACKvalido enonduplicato

CWND=CWND+MSS/CWND

Reti- locigno@disi.unitn.it- LivelloTrasporto 85

Esempio: Slow Start

CWND

tempoRTT

2

4

6

8

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

A B4

56

7...10

11......18

NOTA: per semplificare la rappresentazione grafica, si assume che i segmenti vengano generati e trasmessi tutti nello stesso istante e i corrispettivi riscontri vengano ricevuti di conseguenza tutti insieme dopo un tempo pari a RTT (supposto costante)

Reti- locigno@disi.unitn.it- LivelloTrasporto 86

Esempio: Congestion Avoidance

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

A B567

89

1011

1213141516

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

5 6 7 8 9 10 11 12 13 144 15 16 17 18 18

CWND

tempoRTT

2

4

6

8

Reti- locigno@disi.unitn.it- LivelloTrasporto 87

Evoluzione della CWND

• Congestion Window (CWND)– dimensionedellafinestra(espressainbyteoinnumerodisegmenti)di

trasmissione• Receiver Window (RECWND)

– dimensionedellafinestradiricezione(espressainbyteoinnumerodisegmenti)annunciatadalladestinazione;èillimitemassimochelaCWNDpuòassumere

• SlowStartThreshold (SSTHRESH)– dimensionedellafinestra(espressainbyteoinnumerodisegmenti)

raggiuntalaquale,invecediseguirel’algoritmodiSlowStart,siseguel’algoritmodiCongestion Avoidance

• RTT:tempotrascorsotral’inviodiunsegmentoelaricezionedelriscontro;incondizionidistabilitàdellareteedelcarico,RTTrimanepressochécostante

• RTO:tempochelasorgenteaspettaprimadiritrasmettereunsegmentononriscontrato

Reti- locigno@disi.unitn.it- LivelloTrasporto 88

Evoluzione della CWND

• L’algoritmocheregolaladimensionedellaCWNDèilseguente:– all’iniziodellatrasmissionesipone

• CWND=1segmento(ovverounnumerodibytepariaMSS)• SSTHRESH=RCVWNDoppureSSTHRESH=RCVWND/2(dipendedalleimplementazioni)

– laCWNDevolvesecondol’algoritmodiSlowStartfinoalraggiungimentodellaSSTHRESH

– raggiuntalasogliaSSTHRESH,ladimensionediCWNDèregolatadall’algoritmodiCongestion Avoidance

– lafinestracrescefinoalraggiungimentodiRCVWND

Reti- locigno@disi.unitn.it- LivelloTrasporto 89

Evoluzione CWND senza perdite

• SlowStart+CongestionAvoidance+RCWND

Reti- locigno@disi.unitn.it- LivelloTrasporto 90

t[RTT]

CWND[#se

g.]

2

4

8

RCWND=12

SSHRT=RCWND/2=6

Throughput

• Abbiamovistocheilthroughput diunprotocolloafinestra(fissa)èdatodallaformula

Thr [bit/s]=DF[byte]*8/T[s]• doveTèladuratadellatrasmissioneeDFladimensionedellafinestra

• Eperunprotocolloafinestravariabile?• Dipenderàdallafinestraistanteperistanteequindinellungoperiodo

dall’integraledellafinestraneltempo

Thr [bit/s]= ⎰DF(t)dt

Reti - locigno@disi.unitn.it - Livello Trasporto 91

T

Throughput

• PeraverebuoneprestazionièfondamentalecheTCPmantengalagiustadimensionedellafinestra

• SeRCVWNDètroppograndeipacchettisiaccumulanoneibufferdellareteaumentandoRTT...equindiladuratadellaconnessionepertrasferireunadataquantitàdidati

• Questaèunaformadicongestion control• Funzionamoltobenequandoilcollodibottigliaèillinkal

trasmettitore:ipacchettisiaccumulanonelSOdell’host cherappresentaunbuffermoltogrande

• Cosaaccadeincasodicongestioneeperdite?

Reti - locigno@disi.unitn.it - Livello Trasporto 92

Recupero delle perdite

• TCPrecuperaleperditeconduemeccanismi• ScadenzaRTO• Ricezionedi3ACKduplicati(4ACKuguali)-->FastRetransmit• InognicasoTCPritrasmetteilpacchettoperso(ilprimodellafinestra

percostruzione)egliACKcumulativigarantisconocheilmeccanismosiaditiposelective-repeat.

• SescadeRTOTCP“ricominciadacapo”(manonsicomportamaicomeGoBackN,perchéRCWND>=TXWND

• SesiusaFastRetransmit TCPloabbinaaunmeccanismochesichiamaFastRecovery ilcuiscopoè dimezzare lafinestra almomentodella perdita eentrare incongestionavoidance

• Vediamo i diversi casi indettaglio ...

Reti - locigno@disi.unitn.it - Livello Trasporto 93

Recupero con RTO

AllascadenzadiRTOTCP:1. RTO=RTO*2;SSHTHR=CNGWND/22. CNGWND=MSS(1segmento)3. Ritrasmetteilprimosegmentodellafinestra4. Attendediriceverel’ACK5. Quando(ese)riceveACK:WLow =(ACKNumber)6. Se(ACKNumber)>WUp

ricominciafunzionamentonormaleAltrimenti

ritrasmetteunsegmentoricominciandodalpunto37. SescadeRTOricominciadalpunto1.per10volte;eperulteriori

6voltesenzaincrementareRTO...poisiarrende

Reti - locigno@disi.unitn.it - Livello Trasporto 94

RecuperoconRTO

Reti- locigno@disi.unitn.it- LivelloTrasporto 95

A B1011121314

15

ignoreIgnoreignore

RagioniamoasegmentiWLow =10;CNGWND=5;WUp =14FaseCongestion AvoidanceSegmentopersoNo.11

XA11

A11 DupACKA11 DupACKA11 DupACK

A11 DupACK

ignore

LafinestraNONcresceperchénonsono stati ricevuti CNGWNDACK

~~ ~~RTO Expires Ret 11

RTO = RTO*2A16

Fine recupero 16

WLow =16;CNGWND=1;WUp =16SSTHR=5*MSS/2Riparteinslowstart

RecuperoconRTO

Reti- locigno@disi.unitn.it- LivelloTrasporto 96

Dinamicadellafinestra:RTT=20ms;RTO=200ms;RCWND=40segmenti(~64K)

LafinestrainquestasliderappresentailnumeroeffettivodisegmentiinviatinelRTT

t[RTT]

CWND[#se

g.]

2

4

8

SSHRT=2.5

121218

RTO=10RTT

Civogliono18RTTperché CNGWNDritorni alvalore di5segmentiSelafinestra è più grande eil rapporto RTO/RTTmaggiore ...lecose vanno ancora peggio

segmentoritrasmesso

RecuperoconRTOperditemultiple

Reti- locigno@disi.unitn.it- LivelloTrasporto 97

Dinamicadellafinestra:RTT=20ms;RTO=200ms;RCWND=40segmenti(~64K)SecondaperditaquantoCNGWNDharaggiunto8segmentiLafinestrainquestasliderappresentailnumeroeffettivodisegmentiinviatinelRTT

t[RTT]

CWND[#se

g.]

2

4

8

SSHRT=2.5

121218

RTO=10RTT

SSHRT=4

RTO=10RTT

Inpresenzadiperditeilfunzionamentoè una sequenzaditrasmissioni “burst”seguite dailunghi silenzi dell’RTO

Recupero con Fast Retransmit

Quandovengonoricevuti3ACKduplicati:1. SSHTHR=CNGWND/22. CNGWND=MSS(1segmento)3. Ritrasmetteilprimosegmentodellafinestra4. Attendeescarta(ignora)tuttiiDupACK successivi5. Quando(ese)riceveACKnonduplicato:WLow =(ACKNumber);

WUp =WLow +CNGWND6. Se(ACKNumber)>WUp

ricominciafunzionamentonormaleAltrimenti

ritrasmetteunsegmentoricominciandodalpunto37. SescadeRTO(es.perditasegmentoritrasmesso)sicomporta

comeconrecuperoconRTOReti - locigno@disi.unitn.it - Livello Trasporto 98

RecuperoconFastRetransmit

Reti- locigno@disi.unitn.it- LivelloTrasporto 99

A B1011121314

15

Dup ACK 1Dup ACK 2Dup ACK 3

RagioniamoasegmentiWLow =10;CNGWND=5;WUp =14FaseCongestion AvoidanceSegmentopersoNo.11

XA11

A11 DupACKA11 DupACKA11 DupACK

A11 DupACK

ignore

LafinestraNONcresceperchénonsono stati ricevuti CNGWNDACK

Ret 11

A16

Fine recupero16

WLow =16;CNGWND=1;WUp =16SSTHR=5*MSS/2Riparteinslowstart

RecuperoconFastRetransmit

Reti- locigno@disi.unitn.it- LivelloTrasporto 100

Dinamicadellafinestra:RTT=20ms;RTO=200ms;RCWND=40segmenti(~64K)

LafinestrainquestasliderappresentailnumeroeffettivodisegmentiinviatinelRTT

t[RTT]

CWND[#se

g.]

2

4

8

SSHRT=2.5

128

CNGWNDritorna alvalore di5segmenti in“soli”8RTT.Seleperdite sono casuali,comunque TCPnonriesce amantenere una finestra eunthroughputelevati

segmentoritrasmesso.I 3dupACKimpieganomeno diunRTT(perdefinizione)

Reti- locigno@disi.unitn.it- LivelloTrasporto 101

Dinamicadellafinestra:RTT=20ms;RTO=200ms;RCWND=40segmenti(~64K)SecondaperditaquantoCNGWNDharaggiunto8segmentiLafinestrainquestasliderappresentailnumeroeffettivodisegmentiinviatinelRTT

t[RTT]

CWND[#se

g.]

2

4

8

SSHRT=2.5

121015

SSHRT=4

Inpresenzadiperditeilfunzionamentoè una sequenzadifasi dicrescita della finestraseguite dauna caduta a“zero”

Recupero con Fast Retransmit / RTO

• UsandoisemplicimeccanismidiRTOeFastRetransmit TCPimplementaritrasmissioneselettiva

• PuòrecuperareunsegmentopersociascunRTT• RTOèmoltoinefficiente• FastRetransmit miglioraefficienza,mailfunzionamentocontinuaad

essere“asinghiozzo”• Idea:anziché“ricominciaredacapo”sipuòentraredirettamentein

congestion avoidance mettendoCNGWND=SSTHR• Peròsenzaaltriaccorgimentisirischiadiritrasmetteresegmentigià

ricevuti

Reti - locigno@disi.unitn.it - Livello Trasporto 102

Fast Recovery

• L’ideadibaseèquelladiottenereuna“oscillazione”diCNGWND“adentedisega”dimezzandolafinestraincasodiperditeeincrementandolalinearmentequandononcisonoperdite

Reti - locigno@disi.unitn.it - Livello Trasporto 103

• Bisognaevitareritrasmissioni• Bisognaevitaretimeout• Sarebbemeglioevitarel’attesadiunRTTsesicontinuanoaricevere

ACKduplicati

t[RTT]

CWND[#se

g.]

4

8

16

perdite

Recupero con Fast Recovery

Quandovengonoricevuti3ACKduplicati:1. SSHTHR=CNGWND/22. Ritrasmetteilprimosegmentodellafinestra3. CNGWND=SSHTHR+3MSS(3Dup ACKricevuti);selafinestralo

consenteinvianuovisegmenti4. PerogninuovoDup ACKCNGWND=CNGWND+MSSeinviaun

nuovosegmentoselafinestraloconsente5. Quando(ese)riceveACKnonduplicato:WLow =(ACKNumber)

Reti - locigno@disi.unitn.it - Livello Trasporto 104

Recupero con Fast Reovery

1. Se(ACKNumber)>WUpCNGWND=SSHTHRricominciafunzionamentonormaleincongestion avoidance

AltrimentiritrasmetteunsegmentorimaneinFastRecoveryriprendendodalpunto4,aquestopuntogliACKduplicatisiriferisconoalsecondosegmentoritrasmesso

2. SescadeRTO(es.perditasegmentoritrasmesso)sicomportacomeconrecuperoconRTO

Reti - locigno@disi.unitn.it - Livello Trasporto 105

RecuperoconFastRecovery

Reti- locigno@disi.unitn.it- LivelloTrasporto 106

A B1011121314

15

Dup ACK 1Dup ACK 2Dup ACK 3

RagioniamoasegmentiWLow =10;CNGWND=5;WUp =14FaseCongestion AvoidanceSegmentopersoNo.11

XA11

A11 DupACKA11 DupACKA11 DupACK

A11 DupACK

16

LafinestraNONcresceperchénonsono stati ricevuti CNGWNDACK

Ret 11

A16

CNGWND=CNGWND+1trasmettenuovosegmento

WLow =10;WUp =16SSTHR=5*MSS/2CNGWND=SSHTR+3Nonpuò trasmetterenuovi segmenti Fine recupero

CNGWND=SSTHRtrasmettenuovosegmentoCNGWND=CNGWND+MSS/2=3trasmette2nuovisegmenti

17

1819

2021

A17

A18

A19A20

A21A22

RecuperoconFastRecovery

Reti- locigno@disi.unitn.it- LivelloTrasporto 107

Dinamicadellafinestra:RTT=20ms;RTO=200ms;RCWND=40segmenti(~64K)

LafinestrainquestasliderappresentailnumeroeffettivodisegmentiinviatinelRTT

t[RTT]

CWND[#se

g.]

2

4

8

SSHRT=2.5

128

CNGWNDritorna alvalore di5segmentisempre in8RTT,maconFastRecoveryhatrasmesso 3segmenti inpiù nello stesso tempo

segmentoritrasmesso

CNGWND=SSTHR+3=5nonconsente diinviarenuovi segmenti

Nuovo DupACKricevutoCNGWND=CNGWND+1invia unnuovo segmento (17)

Recupero perdite: riassunto

• RTOimplementaritrasmissioniselettive,funzionasempre,masprecamoltissimerisorse(tempo)

• FastRetransmit abbatteiltempodirecupero,consentedirecuperareunsegmentoperRTT(anzichéRTO),maèancorapiuttostoinefficiente

• FastRecovery èmoltocomplessoecisonocasiincui...siinceppaàRTO

• QuandofunzionacorrettamenteFastRecovery sostienelatrasmissionedinuovipacchettimentrerecuperaquellipersi.

Reti - locigno@disi.unitn.it - Livello Trasporto 108

Crescita finestra

• LostandardprevedechelafinestrainCAcrescalinearmenteconRTT• Diverseimplementazioninonrispettanoquestaindicazione• Linuxà TCPCubic• Windowsà TCPCompound• Ilrisultatoè...unpo’dicaosinrete(ancora?!?!)

• TCPdovrebbecontrollarelacongestioneedessereancheequo• Abbiamogià visto che inrealtà dipende daRTT• Condiverse“logiche dicrescita della finestra è ancora peggio

Reti - locigno@disi.unitn.it - Livello Trasporto 109

Implementazioni nonstandard

• TCPCUBIC(Linux)

• TCPCompound(MSWindows)

3-111

Equità: seKsessioniTCPcondividonolostessocollegamentoconampiezzadibandaR,cheèuncollodibottigliaperilsistema,ognisessionedovràavereunafrequenzatrasmissivamediapariaR/K.

ConnessioneTCP 1

Capacità delrouter R,il collo di bottigliaConnessione

TCP 2

Equità diTCP

TCPè equo?Dueconnessioniinconcorrenzatraloro:r L’incrementoadditivodeterminaunapendenzaparia1,all’aumentaredel

throughoutr Ildecrementomoltiplicativoriduceilthroughput inmodoproporzionale

R

R

Condivisione della stessaampiezza di banda

Throughput della connessione 1

congestion avoidance: incremento additivoperdita: riduce la finestra di un fattore 2

congestion avoidance: incremento additivoperdita: riduce la finestra di un fattore 2