TCP's Secret Weapon: Network Flow Control and Network Congestion Control

TCP -pålidelighedstransport
Vi er alle fortrolige med TCP -protokol som en pålidelig transportprotokol, men hvordan sikrer den pålideligheden af ​​transporten?

For at opnå pålidelig transmission skal mange faktorer overvejes, såsom datakorruption, tab, duplikering og skår uden for orden. Hvis disse problemer ikke kan løses, kan pålidelig transmission ikke opnås.

Derfor anvender TCP mekanismer såsom sekvensnummer, anerkendelse, svar, resend kontrol, forbindelsesstyring og vinduesstyring for at opnå pålidelig transmission.

I dette papir vil vi fokusere på skydevinduet, flowkontrol og overbelastningskontrol af TCP. Genuddannelsesmekanismen er dækket separat i det næste afsnit.

Netværksstrømstyring
Netværksstrømstyring eller kendt som netværkstrafikstyring er faktisk en manifestation af det subtile forhold mellem producenter og forbrugere. Du har sandsynligvis stødt på dette scenarie meget på arbejde eller i interviews. Hvis producentens kapacitet til at producere i høj grad overstiger forbrugerens kapacitet til at forbruge, vil det få køen til at vokse på ubestemt tid. I et mere alvorligt tilfælde ved du måske, at når RabbitMQ -beskeder hænger for meget op, kan det forårsage ydelsesnedbrydning af hele MQ -serveren. Det samme gælder for TCP; Hvis de ikke er kontrolleret, vil for mange meddelelser blive sat i netværket, og forbrugerne vil have overskredet deres kapacitet, mens producenterne fortsat vil sende duplikatmeddelelser, hvilket i høj grad vil påvirke netværkets ydelse.

For at tackle dette fænomen giver TCP en mekanisme for afsenderen til at kontrollere mængden af ​​data, der er sendt baseret på den faktiske modtagelseskapacitet for modtageren, der er kendt som flowkontrol. Modtageren opretholder et modtagelsesvindue, mens afsenderen opretholder et sendevindue. Det skal bemærkes, at disse vinduer kun er til en enkelt TCP -forbindelse, og ikke alle forbindelser deler et vindue.

TCP leverer flowkontrol ved hjælp af en variabel til et modtagelsesvindue. Modtagelsesvinduet giver afsenderen en indikation af, hvor meget cache -plads der stadig er tilgængelig. Afsenderen styrer mængden af ​​data, der er sendt i henhold til modtagerens faktiske acceptkapacitet.

Modtagerværten underretter afsenderen om størrelsen på de data, den kan modtage, og afsenderen sender op til denne grænse. Denne grænse er vinduesstørrelsen, kan du huske TCP -overskriften? Der er et modtagelsesvinduefelt, der bruges til at indikere antallet af byte, modtageren er i stand til eller villig til at modtage.

Afsenderværten sender med jævne mellemrum en vinduesprobepakke, der bruges til at registrere, om modtagerværten stadig er i stand til at acceptere data. Når modtagerens buffer er i fare for overfyldt, indstilles vinduesstørrelsen til en mindre værdi for at instruere afsenderen til at kontrollere mængden af ​​data, der er sendt.

Her er et netværksstrømstyringsdiagram:

Trafikstyring

Netværksoverbelastningskontrol
Før vi introducerer overbelastningskontrol, er vi nødt til at forstå, at der ud over modtagelsesvinduet og Send -vinduet også er et overbelastningsvindue, der hovedsageligt bruges til at løse problemet med, hvilken hastighed afsenderen begynder at sende data til modtagelsesvinduet. Derfor opretholdes overbelastningsvinduet også af TCP -afsenderen. Vi har brug for en algoritme til at beslutte, hvor meget data der er passende at sende, da det ikke er ideelt at sende for lidt eller for meget data, og derfor er begrebet et overbelastningsvindue.

I den forrige netværksstrømstyring var det, vi undgik, afsenderen, der udfyldte modtagerens cache med data, men vi vidste ikke, hvad der skete i netværket. Typisk er computernetværk i et delt miljø. Som et resultat kan der være netværksoverbelastning på grund af kommunikation mellem andre værter.

Når netværket er overbelastet, hvis et stort antal pakker fortsat sendes, kan det forårsage problemer såsom forsinkelse og tab af pakker. På dette tidspunkt vil TCP videresende dataene, men videresendelsen vil øge byrden på netværket, hvilket resulterer i større forsinkelser og flere pakketab. Dette kan komme ind i en ond cirkel og blive større.

Således kan TCP ikke ignorere, hvad der sker på netværket. Når netværket er overbelastet, ofrer TCP sig selv ved at reducere mængden af ​​data, det sender.

Derfor foreslås overbelastningskontrol, der sigter mod at undgå at udfylde hele netværket med data fra afsenderen. For at regulere mængden af ​​data, som afsenderen skal sende, definerer TCP et koncept kaldet overbelastningsvinduet. Overbelastningskontrolalgoritmen justerer størrelsen på overbelastningsvinduet i henhold til netværkets overbelastningsgrad for at kontrollere mængden af ​​data, der er sendt af afsenderen.

Hvad er et overbelastningsvindue? Hvad har dette at gøre med sendvinduet?

Overbelastningsvinduet er en tilstandsvariabel, der vedligeholdes af afsenderen, der bestemmer mængden af ​​data, som afsenderen kan sende. Overbelastningsvinduet ændres dynamisk i henhold til netværkets overbelastningsniveau.

Sendingsvinduet er en aftalt vinduesstørrelse mellem afsenderen og modtageren, der angiver mængden af ​​data, som modtageren kan modtage. Overbelastningsvinduet og afsendelsesvinduet er relateret; Sendingsvinduet er normalt lig med minimum af overbelastning og modtagelse af vinduer, det vil sige SWND = min (CWND, RWND).

Overbelastningsvinduet cwnd ændrer sig som følger:

Hvis der ikke er nogen overbelastning i netværket, dvs. der ikke opstår nogen efterspørgsel -timeout, øges overbelastningsvinduet.

Hvis der er overbelastning i netværket, falder overbelastningsvinduet.

Afsenderen bestemmer, om netværket er overbelastet ved at observere, om ACK -anerkendelsespakken modtages inden for det specificerede tidspunkt. Hvis afsenderen ikke modtager ACK -anerkendelsespakken inden for det specificerede tidspunkt, anses det for, at netværket er overbelastet.

Ud over overbelastningsvinduet er det tid til at diskutere TCP -overbelastningskontrolalgoritmen. TCP -overbelastningskontrolalgoritme består af tre hoveddele:

Langsom start:Oprindeligt er CWND -overbelastningsvinduet relativt lille, og afsenderen øger overbelastningsvinduet eksponentielt for hurtigt at tilpasse sig netværkets kapacitet.
Undgåelse af overbelastning:Når overbelastningsvinduet overstiger en bestemt tærskel, øger afsenderen overbelastningsvinduet på en lineær måde for at bremse vækstraten i overbelastningsvinduet og undgå overbelastning af netværket.
Hurtig bedring:Hvis overbelastning opstår, halvdeler afsenderen overbelastningsvinduet og går ind i den hurtige gendannelsestilstand for at bestemme placeringen af ​​netværkets gendannelse gennem de modtagne duplikat ACK'er og fortsætter derefter med at øge overbelastningsvinduet.

Langsom start
Når en TCP -forbindelse er etableret, indstilles overbelastningsvinduet CWND oprindeligt til en minimum MSS (maksimal segmentstørrelse) værdi. På denne måde handler den indledende afsendelseshastighed omkring MSS/RTT -bytes/sekund. Den faktiske tilgængelige båndbredde er normalt meget større end MSS/RTT, så TCP ønsker at finde den optimale afsendelseshastighed, som kan opnås ved hjælp af langsom start.

I den langsomme startproces initialiseres værdien af ​​overbelastningsvinduet CWND til 1 MSS, og hver gang det transmitterede pakkesegment anerkendes, øges værdien af ​​CWND med en MSS, det vil sige, at værdien af ​​CWND bliver 2 MSS. Derefter fordobles værdien af ​​CWND for hver vellykket transmission af et pakkesegment osv. Den specifikke vækstproces er vist i følgende figur.

 Netværksoverbelastningskontrol

Sendingshastigheden kan dog ikke altid vokse; Væksten skal slutte engang. Så hvornår øges afsendelsesrenten ender? Slow-start afslutter typisk stigningen i afsendelseshastigheden på en af ​​flere måder:

Den første måde er tilfældet med pakketab under afsendelsesprocessen med langsom start. Når der opstår et pakketab, indstiller TCP afsenderens overbelastningsvindue cwnd til 1 og genstarter langsom startprocessen. På dette tidspunkt introduceres et koncept med langsom startgrænse ssthresh, hvis oprindelige værdi er halvdelen af ​​værdien af ​​CWND, der genererer pakketab. Det vil sige, når overbelastning påvises, er værdien af ​​SSthresh halvdelen af ​​vinduesværdien.

Den anden måde er at direkte korrelere med værdien af ​​den langsomme start tærskel SSthresh. Da værdien af ​​SSthresh er halvdelen af ​​vinduesværdien, når overbelastning detekteres, kan der forekomme pakketab, når hver fordobling er, når CWND er større end SSthresh. Derfor er det bedst at indstille CWND til SSthresh, hvilket vil få TCP til at skifte til overbelastningskontroltilstand og afslutte langsom start.

Den sidste måde, hvorpå langsom start kan ende, er, hvis tre overflødige ACK'er registreres, TCP udfører en hurtig videresendelse og går ind i gendannelsestilstanden. (Hvis det ikke er klart, hvorfor der er tre ACK -pakker, vil det blive forklaret separat i videresendelsesmekanismen.)

Undgåelse af overbelastning
Når TCP går ind i statens overbelastningskontrol, er CWND indstillet til halvdelen af ​​overbelastningstærsklen Ssthresh. Dette betyder, at værdien af ​​CWND ikke kan fordobles, hver gang der modtages et pakkesegment. I stedet vedtages en relativt konservativ tilgang, hvor værdien af ​​CWND øges med kun en MSS (maksimal pakkesegmentlængde), efter at hver transmission er afsluttet. Selv hvis 10 pakkesegmenter anerkendes, vil værdien af ​​CWND for eksempel kun stige med en MSS. Dette er en lineær vækstmodel, og den har også en øvre grænse for vækst. Når pakketab opstår, ændres værdien af ​​CWND til en MSS, og værdien af ​​SSthresh er indstillet til halvdelen af ​​CWND. Eller det vil også stoppe væksten af ​​MSS, når der modtages 3 overflødige ACK -svar. Hvis der stadig modtages tre overflødige ACK'er efter halvering af værdien af ​​CWND, registreres værdien af ​​SSthresh som halvdelen af ​​værdien af ​​CWND, og ​​den hurtige gendannelsestilstand indtastes.

Hurtig bedring
I den hurtige gendannelsestilstand øges værdien af ​​overbelastningsvinduet CWND med en MSS for hver modtaget overflødig ACK, dvs. ACK, der ikke ankommer i rækkefølge. Dette er for at gøre brug af de pakkesegmenter, der er blevet overført med succes i netværket for at forbedre transmissionseffektiviteten så meget som muligt.

Når en ACK af det mistede pakkesegment ankommer, reducerer TCP værdien af ​​CWND og går derefter ind i status for undgåelse af overbelastning. Dette er for at kontrollere størrelsen på overbelastningsvinduet og undgå yderligere at øge netværksoverbelastningen.

Hvis der opstår en timeout efter status for overbelastningskontrol, bliver netværkstilstanden mere alvorlig, og TCP migrerer fra overbelastningsundgåelsesstaten til den langsomme starttilstand. I dette tilfælde er værdien af ​​overbelastningsvinduet CWND indstillet til 1 MSS, den maksimale pakkesegmentlængde og værdien af ​​den langsomme start-tærskel SSthresh er indstillet til halvdelen af ​​CWND. Formålet med dette er at gradvist øge størrelsen på overbelastningsvinduet, efter at netværket gendannes for at afbalancere transmissionshastigheden og graden af ​​netværksoverbelastning.

Oversigt
Som en pålidelig transportprotokol implementerer TCP pålidelig transport efter sekvensnummer, anerkendelse, genanvendelse af genindvinding, forbindelsesstyring og vinduesstyring. Blandt dem kontrollerer flowkontrolmekanismen mængden af ​​data, der er sendt af afsenderen i henhold til den faktiske modtagelseskapacitet for modtageren, som undgår problemerne med netværksoverbelastning og ydelsesnedbrydning. Overbelastningskontrolmekanismen undgår forekomsten af ​​netværksoverbelastning ved at justere mængden af ​​data, der er sendt af afsenderen. Begreberne med overbelastningsvindue og afsendelse af vindue er relateret til hinanden, og mængden af ​​data hos afsenderen styres ved dynamisk at justere størrelsen på overbelastningsvinduet. Langsom start, undgåelse af overbelastning og hurtig gendannelse er de tre hoveddele af TCP -overbelastningskontrolalgoritme, der justerer størrelsen på overbelastningsvinduet gennem forskellige strategier for at tilpasse sig netværkets kapacitet og overbelastningsgrad.

I det næste afsnit vil vi undersøge TCP's videresendelsesmekanisme i detaljer. Genuddannelsesmekanisme er en vigtig del af TCP for at opnå pålidelig transmission. Det sikrer den pålidelige transmission af data ved at videresende mistede, ødelagte eller forsinkede data. Implementeringsprincippet og strategien for videresendelsesmekanismen introduceres og analyseres detaljeret i det næste afsnit. Hold øje med!


Posttid: Feb-24-2025