TCP -jevo skrivno orožje: nadzor nad pretokom in nadzor zastojev omrežja

TCP Prevoz zanesljivosti
Vsi smo seznanjeni s protokolom TCP kot zanesljiv prometni protokol, toda kako zagotavlja zanesljivost prevoza?

Za dosego zanesljivega prenosa je treba upoštevati številne dejavnike, kot so korupcija podatkov, izguba, podvajanje in drobci. Če teh težav ni mogoče rešiti, zanesljivega prenosa ni mogoče doseči.

Zato TCP uporablja mehanizme, kot so zaporedna številka, potrditev odgovora, ponovni nadzor, upravljanje povezav in nadzor oken, da doseže zanesljiv prenos.

V tem prispevku se bomo osredotočili na drsno okno, nadzor pretoka in nadzor zastojev TCP. Mehanizem ponovne oddaje je v naslednjem razdelku zajet ločeno.

Omrežni nadzor pretoka
Nadzor omrežnega pretoka ali znanje kot nadzor omrežnega prometa je pravzaprav manifestacija subtilnega odnosa med proizvajalci in potrošniki. Verjetno ste ta scenarij naleteli na veliko v službi ali v intervjujih. Če zmogljivost proizvajalca za proizvodnjo močno presega zmogljivost potrošnika za uživanje, bo to povzročila, da bo čakalna vrsta za nedoločen čas. V resnejšem primeru morda veste, da lahko, ko se sporočila RabbitMQ preveč naberejo, povzroči degradacijo zmogljivosti celotnega strežnika MQ. Enako velja za TCP; Če ostanemo brez nadzora, bo v omrežje postavljeno preveč sporočil, potrošniki pa bodo presegli svojo zmogljivost, medtem ko bodo proizvajalci še naprej pošiljali podvojena sporočila, kar bo močno vplivalo na uspešnost omrežja.

Za reševanje tega pojava TCP ponuja mehanizem za nadzor nad količino poslanih podatkov na podlagi dejanske sprejemne zmogljivosti sprejemnika, ki je znana kot nadzor pretoka. Sprejemnik vzdržuje sprejemno okno, medtem ko pošiljatelj vzdržuje okno za pošiljanje. Treba je opozoriti, da so ta okna samo za eno samo povezavo TCP in ne vse povezave delijo okno.

TCP zagotavlja nadzor pretoka z uporabo spremenljivke za sprejemno okno. Okno s sprejemom daje pošiljatelju kaže, koliko prostora za predpomnilnika je še na voljo. Pošiljatelj nadzoruje količino podatkov, poslanih v skladu z dejansko sprejemajočo se zmogljivosti sprejemnika.

Gostitelj sprejemnika obvesti pošiljatelja o velikosti podatkov, ki jih lahko prejme, pošiljatelj pa do te meje pošlje. Ta meja je velikost okna, se spomnite glave TCP? Obstaja polje za sprejemno okno, ki se uporablja za označevanje števila bajtov, ki jih sprejemnik lahko ali pripravljen sprejeti.

Gostitelj pošiljatelja bo občasno poslal paket okenske sonde, ki se uporablja za zaznavanje, ali gostitelj sprejemnika še vedno lahko sprejme podatke. Ko je sprejemni medpomnilnik v nevarnosti preplavljenega, je velikost okna nastavljena na manjšo vrednost, da pošiljatelju naročitelja, da nadzira količino poslanih podatkov.

Tu je diagram nadzora omrežja:

Nadzor prometa

Nadzor omrežnih zastojev
Preden uvedemo nadzor nad zastoji, moramo razumeti, da je poleg okna za sprejem in okno za pošiljanje tudi okno zastojev, ki se uporablja predvsem za reševanje problema s tem, s katero hitrostjo pošiljatelj začne pošiljanje podatkov v okno za sprejem. Zato okno zastojev vzdržuje tudi pošiljatelj TCP. Potrebujemo algoritem, da se odločimo, koliko podatkov je primerno poslati, saj pošiljanje premalo ali preveč podatkov ni idealno, od tod tudi koncept okna zastojev.

V prejšnjem nadzoru omrežnega pretoka smo se izognili pošiljatelju, ki je napolnil predpomnilnik sprejemnika s podatki, vendar nismo vedeli, kaj se dogaja v omrežju. Običajno so računalniška omrežja v skupnem okolju. Posledično lahko pride do omrežnih zastojev zaradi komunikacije med drugimi gostitelji.

Ko je omrežje preobremenjeno, če se še naprej pošilja veliko število paketov, lahko povzroči težave, kot so zamuda in izguba paketov. Na tej točki bo TCP podatke ponovno poslal, vendar bo ponovna oddaja povečala breme v omrežju, kar bo povzročilo večje zamude in več izgub paketov. To lahko pride v začaran krog in se še naprej povečuje.

Tako TCP ne more prezreti, kaj se dogaja v omrežju. Ko je omrežje preobremenjeno, se TCP žrtvuje z zmanjšanjem količine podatkov, ki jih pošlje.

Zato je predlagan nadzor preobremenjenosti, katerega cilj je preprečiti polnjenje celotnega omrežja s podatki od pošiljatelja. Za urejanje količine podatkov, ki ga mora poslati pošiljatelj, TCP definira koncept, imenovan okno zastojev. Algoritem nadzora nad zastoji bo prilagodil velikost okna zastojev glede na stopnjo zastojev omrežja, tako da bo nadzoroval količino podatkov, ki jih pošilja pošiljatelj.

Kaj je okno zastojev? Kaj ima to veze z oknom Send?

Okno zastojev je spremenljivka stanja, ki jo vzdržuje pošiljatelj, ki določa količino podatkov, ki jih lahko pošlje pošiljatelj. Okno zastojev se dinamično spreminja glede na stopnjo zastojev omrežja.

Okno za pošiljanje je dogovorjeno velikosti okna med pošiljateljem in sprejemnikom, ki označuje količino podatkov, ki jih lahko prejme sprejemnik. Okno zastojev in okno za pošiljanje sta povezana; Okno za pošiljanje je običajno enako minimumu zastojev in sprejemanja oken, to je SWND = min (CWND, RWND).

Okno zastojev CWND se spremeni na naslednji način:

Če v omrežju ni zastojev, tj. Ne pride do časovne omejitve ponovne oddaje, se okno zastojev poveča.

Če je v omrežju zastoji, se okno zastojev zmanjša.

Pošiljatelj določi, ali je omrežje preobremenjeno z opazovanjem, ali je paket potrditve ACK sprejet v določenem času. Če pošiljatelj v določenem času ne prejme paketa ACK potrditve, se šteje, da je omrežje preobremenjeno.

Poleg okna zastojev je čas, da razpravljamo o algoritmu nadzora zastojev TCP. Algoritem za nadzor preobremenjenosti TCP je sestavljen iz treh glavnih delov:

Počasen začetek:Na začetku je okno za zastoje CWND razmeroma majhno, pošiljatelj pa eksponentno poveča zastoje, da se hitro prilagodi zmogljivosti omrežja.
Izogibanje zastojev:Ko okno zastojev presega določen prag, pošiljatelj linearno poveča okno zastojev, da upočasni hitrost rasti okna zastojev in se izogne ​​preobremenitvi omrežja.
Hitro okrevanje:Če pride do zastojev, pošiljatelj prepolovi okno zastojev in vstopi v stanje hitrega obnovitve, da določi lokacijo obnovitve omrežja s pomočjo prejetih podvojenih ACK -jev in nato še naprej povečuje okno zastojev.

Počasen začetek
Ko je vzpostavljena povezava TCP, je okno CWND zastojev sprva nastavljeno na minimalno vrednost MSS (največja velikost segmenta). Tako je začetna stopnja pošiljanja o bajtih MSS/RTT/sekunde. Dejanska razpoložljiva pasovna širina je običajno veliko večja od MSS/RTT, zato želi TCP najti optimalno hitrost pošiljanja, ki jo je mogoče doseči s počasnim zagonom.

V postopku počasnega zagona bo vrednost CWND zastojev CWND inicializirana na 1 MSS in vsakič, ko je priznan odmevni paketni segment, se bo vrednost CWND povečala za en MSS, torej bo vrednost CWND postala 2 MSS. Po tem se vrednost CWND podvoji za vsak uspešen prenos paketnega segmenta in tako naprej. Specifični proces rasti je prikazan na naslednji sliki.

 Nadzor omrežnih zastojev

Vendar stopnja pošiljanja ne more vedno rasti; Rast se mora končati kdaj. Kdaj se torej konča stopnja pošiljanja? Počasi zagon običajno konča povečanje hitrosti pošiljanja na enega od več načinov:

Prvi način je primer izgube paketov med postopkom pošiljanja počasnega zagona. Ko pride do izgube paketa, TCP nastavi okno za zastoje pošiljatelja CWND na 1 in znova zažene postopek počasnega zagona. Na tej točki je predstavljen koncept počasnega začetnega praga SSTRESH, katerega začetna vrednost je polovica vrednosti CWND, ki ustvarja izgubo paketov. To pomeni, da je vrednost SSTRESHER, ko je zaznana zastoja, polovica okenske vrednosti.

Drugi način je neposredno povezati z vrednostjo praga počasnega zagona SSTRESH. Ker je vrednost sstresh -a polovica okenske vrednosti, ko je zaznana zastoja, se lahko izguba paketov zgodi pri vsakem podvojitvi, ko je CWND večji od SSTRESH. Zato je najbolje, da nastavite CWND na SSTRESH, zaradi česar bo TCP preklopil na način nadzora preobremenjenosti in končal počasen zagon.

Zadnji način, da se počasni zagon lahko konča, je, če zaznajo tri odvečne ACK, TCP izvede hitro ponovno oddajo in vstopi v stanje obnovitve. (Če ni jasno, zakaj obstajajo trije paketi ACK, bo v mehanizmu ponovnega prenosa razloženo ločeno.)

Izogibanje zastojem
Ko TCP vstopi v stanje nadzora nad zastoji, je CWND nastavljen na polovico praga zastojev sstresh. To pomeni, da vrednosti CWND ni mogoče podvojiti vsakič, ko je prejet paketni segment. Namesto tega je sprejet relativno konzervativni pristop, v katerem se vrednost CWND po zaključku vsakega prenosa poveča za samo en MSS (največja dolžina paketnega segmenta). Na primer, tudi če je priznanih 10 paketnih segmentov, se bo vrednost CWND povečala le za en MSS. To je linearni model rasti in ima tudi zgornjo mejo rasti. Ko pride do izgube paketov, se vrednost CWND spremeni v MSS, vrednost SSTRESH pa je nastavljena na polovico CWND. Ali pa bo tudi ustavila rast MSS, ko bodo prejeli 3 odvečni odzivi ACK. Če se po prepolovitvi vrednosti CWND še vedno prejmejo trije odvečni ACK, se vrednost SSTRESH zabeleži kot polovica vrednosti CWND in v vneseno stanje hitrega obnovitve.

Hitro okrevanje
V stanju hitrega obnovitve se vrednost CWND zastojev poveča za en MSS za vsak prejeti odvečni ACK, torej ACK, ki ne pride v zaporedje. To je, da uporabite paketne segmente, ki so bili uspešno prenašani v omrežju, da čim bolj izboljšajo učinkovitost prenosa.

Ko pride ACK segmenta izgubljenega paketa, TCP zmanjša vrednost CWND in nato vstopi v stanje izogibanja zastojem. To je nadzorovati velikost okna zastojev in se izogniti nadaljnjemu povečanju omrežnih zastojev.

Če pride do časovne omejitve po stanju nadzora nad zastoji, postane omrežno stanje resnejše in TCP se preseli iz stanja izogibanja zastojem v stanje počasnega zagona. V tem primeru je vrednost zastoja CWND nastavljena na 1 MSS, največja dolžina segmenta paketov in vrednost počasnega praga SSThesh je nastavljena na polovico CWND. Namen tega je, da ponovno povečate velikost okna zastojev, potem ko se omrežje okreva, da uravnoteži hitrost prenosa in stopnjo zastojev omrežja.

Povzetek
Kot zanesljiv prometni protokol TCP izvaja zanesljiv prevoz po zaporedni številki, potrditvi, nadzoru ponovne oddaje, upravljanju povezav in nadzoru oken. Med njimi mehanizem za nadzor pretoka nadzoruje količino podatkov, ki jih pošilja pošiljatelj, v skladu z dejansko sprejemajočo se zmogljivostjo sprejemnika, ki se izogne ​​težavam o omrežnih zastojih in degradaciji uspešnosti. Mehanizem nadzora nad zastoji se izogne ​​pojavu omrežnih zastojev s prilagoditvijo količine podatkov, ki jih pošilja pošiljatelj. Koncepti okna zastojev in okna za pošiljanje so med seboj povezani, količina podatkov pri pošiljatelju pa se nadzira z dinamično prilagajanjem velikosti okna zastojev. Počasni zagon, izogibanje zastojem in hitro okrevanje so trije glavni deli algoritma za nadzor zastojev TCP, ki prilagodijo velikost okna zastojev z različnimi strategijami, da se prilagodijo stopnji zmogljivosti in zastojev omrežja.

V naslednjem razdelku bomo podrobno preučili mehanizem ponovnega prenosa TCP. Mehanizem ponovne oddaje je pomemben del TCP za doseganje zanesljivega prenosa. Zagotavlja zanesljiv prenos podatkov s ponovnim prenosom izgubljenih, poškodovanih ali zakasnjenih podatkov. Načelo izvajanja in strategija mehanizma za ponovno oddajanje bo v naslednjem razdelku podrobno uvedeno in analizirano. Spremljajte!


Čas objave: februar-24-2025