Post on 12-Apr-2018
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