Tajná zbraň TCP: riadenie toku siete a riadenie preťaženia siete

TCP Spoľahlivosť prepravy
Všetci poznáme protokol TCP ako spoľahlivý transportný protokol, ale ako zabezpečuje spoľahlivosť dopravy?

Na dosiahnutie spoľahlivého prenosu je potrebné zvážiť mnoho faktorov, ako napríklad korupcia údajov, strata, duplikácia a črepy mimo objednávky. Ak tieto problémy nie je možné vyriešiť, nie je možné dosiahnuť spoľahlivý prenos.

Preto TCP využíva mechanizmy, ako je sekvenčné číslo, potvrdenie odpovede, opätovné riadenie, riadenie pripojení a riadenie okna na dosiahnutie spoľahlivého prenosu.

V tomto článku sa zameriame na posuvné okno, riadenie toku a kontrolu preťaženia TCP. Mechanizmus opakovaného prenosu je pokrytý osobitne v nasledujúcej časti.

Riadenie toku siete
Kontrola toku siete alebo poznať ako riadenie sieťovej prevádzky je v skutočnosti prejavom jemného vzťahu medzi výrobcami a spotrebiteľmi. Pravdepodobne ste na tento scenár narazili veľa v práci alebo v rozhovoroch. Ak kapacita výrobcu produkovať výrazne prekračuje schopnosť spotrebiteľa konzumovať, spôsobí to, že front bude neurčitý rásť. V závažnejšom prípade možno viete, že keď sa správy RabbitMQ príliš hromadia, môže to spôsobiť zhoršenie výkonu celého servera MQ. To isté platí pre TCP; Ak zostane nekontrolované, do siete sa vloží príliš veľa správ a spotrebitelia budú prekročiť svoju kapacitu, zatiaľ čo výrobcovia budú naďalej odosielať duplicitné správy, ktoré výrazne ovplyvnia výkon siete.

Na vyriešenie tohto javu poskytuje TCP mechanizmus pre odosielateľa na kontrolu množstva údajov zaslaných na základe skutočnej príjmu kapacity prijímača, ktorý je známy ako riadenie toku. Prijímač udržiava okno prijímania, zatiaľ čo odosielateľ udržiava odosielanie okna. Je potrebné poznamenať, že tieto okná sú iba pre jedno pripojenie TCP a nie všetky pripojenia zdieľajú okno.

TCP poskytuje riadenie toku pomocou premennej pre prijímacie okno. Okno prijímania dáva odosielateľovi indikáciu toho, koľko priestoru vyrovnávacej pamäte je stále k dispozícii. Odosielateľ riadi množstvo údajov zaslaných podľa skutočnej akceptačnej kapacity prijímača.

Hostiteľ prijímača upozorňuje odosielateľ veľkosti údajov, ktoré môže prijímať, a odosielateľ odošle na tento limit. Tento limit je veľkosť okna, pamätáte si hlavičku TCP? Existuje pole prijíma, ktoré sa používa na označenie počtu bajtov, ktoré je prijímač schopný alebo ochotný prijímať.

Hostiteľ odosielateľa pravidelne odosiela paket sond sond, ktorý sa používa na zistenie, či hostiteľ prijímača je stále schopný prijať údaje. Ak je vyrovnávacia pamäť prijímača v nebezpečenstve pretečenia, veľkosť okna je nastavená na menšiu hodnotu, aby nariadil odosielateľovi, aby riadil množstvo odoslaných údajov.

Tu je diagram riadenia toku siete:

Riadenie dopravy

Riadenie preťaženia siete
Pred zavedením kontroly preťaženia musíme pochopiť, že okrem okna prijímania a okna odoslania je tiež okno preťaženia, ktoré sa používa hlavne na vyriešenie problému v akej miere odosielateľ začne odosielať údaje do okna prijímania. Preto je okno preťaženia zachované aj odosielateľom TCP. Potrebujeme algoritmus, aby sme rozhodli, koľko údajov je vhodné na odoslanie, pretože odosielanie príliš málo alebo príliš veľa údajov nie je ideálne, a preto koncept okna preťaženia.

V predchádzajúcom riadení toku siete sme sa vyhli tomu, čo sme sa vyhli, bolo odosielateľ, ktorý vyplnil vyrovnávaciu pamäť prijímača údajmi, ale nevedeli sme, čo sa deje v sieti. Počítačové siete sú zvyčajne v zdieľanom prostredí. V dôsledku toho môže dôjsť k preťaženiu siete v dôsledku komunikácie medzi ostatnými hostiteľmi.

Ak je sieť preťažená, ak sa odosielajú veľké množstvo paketov, môže to spôsobiť problémy, ako sú oneskorenie a strata paketov. V tomto bode TCP prehodnotí údaje, ale opakovanie zvýši záťaž v sieti, čo viedlo k väčším oneskoreniam a väčším stratám paketov. To sa môže dostať do začarovaného cyklu a naďalej sa zväčšovať.

TCP tak nemôže ignorovať, čo sa deje v sieti. Keď je sieť preťažená, TCP sa obetuje znížením množstva údajov, ktoré odosiela.

Navrhuje sa preto kontrola preťaženia, ktorej cieľom je vyhnúť sa vyplneniu celej siete údajmi od odosielateľa. Na reguláciu množstva údajov, ktoré by mal odosielateľ odoslať, TCP definuje koncept nazývaný okno preťaženia. Algoritmus riadenia preťaženia upraví veľkosť okna preťaženia podľa stupňa preťaženia siete, aby sa riadila množstvo údajov odosielateľa.

Čo je okno preťaženia? Čo to má spoločné s oknom odoslania?

Okno preťaženia je stavová premenná udržiavaná odosielateľom, ktorá určuje množstvo údajov, ktoré môže odosielateľ odoslať. Okno preťaženia sa dynamicky mení podľa úrovne preťaženia siete.

Okno odosielania je dohodnuté na veľkosti okna medzi odosielateľom a prijímačom, ktoré označuje množstvo údajov, ktoré môže prijímač prijímať. Okno preťaženia a odosielanie sú spojené; Okno odosielania sa zvyčajne rovná minimálnemu preťaženiu a prijímajúcim oknám, tj SWND = min (CWND, RWND).

Okno preťaženia sa zmení takto:

Ak v sieti nedošlo k preťaženiu, tj., Nejde o časový limit opakovania, zvyšuje sa okno preťaženia.

Ak je v sieti preťaženie, okno preťaženia klesá.

Odosielateľ určuje, či je sieť preťažená pozorovaním, či je paket potvrdenia ACK prijatý v stanovenom čase. Ak odosielateľ nedostane paket ACK Potvrdenie v stanovenom čase, predpokladá sa, že sieť je preťažená.

Okrem okna preťaženia je čas diskutovať o algoritme kontroly preťaženia TCP. Algoritmus riadenia preťaženia TCP pozostáva z troch hlavných častí:

Pomalý štart:Okno preťaženia CWND je spočiatku relatívne malé a odosielateľ exponenciálne zvyšuje okno preťaženia, aby sa rýchlo prispôsobil kapacite siete.
Vyhýbanie sa preťažením:Po tom, čo okno preťaženia prekročí určitú prahovú hodnotu, odosielateľ zvyšuje lineárne okno preťaženia, aby sa spomalilo rýchlosť rastu okna preťaženia a predišlo preťaženiu siete.
Rýchle zotavenie:Ak dôjde k preťaženiu, odosielateľ na polovicu preťaženého okna a vstúpi do stavu rýchleho regenerácie, aby sa určilo umiestnenie obnovy siete prostredníctvom prijatých duplikátov ACK, a potom naďalej zvyšuje okno preťaženia.

Pomalý štart
Ak je vytvorené pripojenie TCP, okno preťaženia je spočiatku nastavená na minimálnu hodnotu MSS (maximálna veľkosť segmentu). Týmto spôsobom je počiatočná rýchlosť odosielania o bajtoch/rtt mss/rtt/sekunda. Skutočná dostupná šírka pásma je zvyčajne oveľa väčšia ako MSS/RTT, takže TCP chce nájsť optimálnu mieru odosielania, ktorú je možné dosiahnuť pomocou pomalého štartu.

V procese pomalého štartu bude hodnota preťaženého okna CWND inicializovaná na 1 mss a zakaždým, keď sa potvrdí segment prenášaného paketov, hodnota CWND sa zvýši o jeden MSS, to znamená, že hodnota CWND sa stane 2 mss. Potom sa hodnota CWND zdvojnásobí pre každý úspešný prenos segmentu paketov atď. Špecifický proces rastu je znázornený na nasledujúcom obrázku.

 Riadenie preťaženia siete

Miera odosielania však nemôže vždy rásť; Rast musí niekedy skončiť. Kedy sa teda zvyšuje miera odosielania? Pomalý štart zvyčajne končí zvýšenie miery odosielania jedným z niekoľkých spôsobov:

Prvým spôsobom je prípad straty paketov počas procesu odosielania pomalého štartu. Ak dôjde k strate paketov, TCP nastavuje okno preťaženia odosielateľa CWND na 1 a reštartuje proces pomalého štartu. V tomto okamihu sa zavádza koncept prahu pomalého štartu SSTHRESH, ktorého počiatočná hodnota je polovicou hodnoty CWND, ktorá generuje stratu paketov. To znamená, že keď sa zistí preťaženie, hodnota SSThresh je polovicou hodnoty okna.

Druhým spôsobom je priamo korelovať s hodnotou prahu pomalého štartu SSTHRESH. Pretože hodnota SSTHresh je polovicou hodnoty okna, keď sa zistí preťaženie, strata paketov sa môže vyskytnúť pri každom zdvojnásobení, keď je CWND väčšia ako SSTHRESH. Preto je najlepšie nastaviť CWND na SSThresh, ktorý spôsobí, že TCP prepne na režim kontroly preťaženia a končí pomalý štart.

Posledným spôsobom, ako môže Slow Start skončiť, je, ak sú zistené tri redundantné ACK, TCP vykonáva rýchly opakovaný prenos a zadá sa do stavu obnovy. (Ak nie je jasné, prečo existujú tri pakety ACK, bude to vysvetlené osobitne v mechanizme opakovania.)

Vyhýbanie sa preťažením
Keď TCP vstúpi do stavu kontroly preťaženia, CWND je nastavená na polovicu prahovej hodnoty preťaženia SSTHRESH. To znamená, že hodnotu CWND sa nedá zdvojnásobiť pri každom prijatí segmentu paketov. Namiesto toho sa prijíma relatívne konzervatívny prístup, v ktorom sa hodnota CWND zvyšuje iba o jeden MSS (maximálna dĺžka segmentu paketov) po dokončení každého prenosu. Napríklad, aj keď sa uznáva 10 segmentov paketov, hodnota CWND sa zvýši iba o jednu MSS. Je to model lineárneho rastu a má tiež hornú hranicu rastu. Ak dôjde k strate paketov, hodnota CWND sa zmení na MSS a hodnota SSTHRESH je nastavená na polovicu CWND. Alebo tiež zastaví rast MSS, keď sa prijímajú 3 redundantné reakcie ACK. Ak sa po polovici hodnoty CWND stále prijímajú tri redundantné ACK, hodnota SSTHresh sa zaznamená ako polovica hodnoty CWND a zadáva sa rýchly stav obnovy.

Rýchle uzdravenie
V stave rýchleho regenerácie sa hodnota okna preťaženia CWND zvyšuje o jednu MSS pre každý prijatý redundantný ACK, to znamená, ACK, ktorý neprichádza postupne. Týmto spôsobom využíva segmenty paketov, ktoré boli úspešne prenosné v sieti, aby sa čo najviac zlepšila účinnosť prenosu.

Keď príde ACK zo strateného segmentu paketov, TCP zníži hodnotu CWND a potom vstúpi do stavu vyhýbania sa preťažením. Ide o kontrolu veľkosti okna preťaženia a zabránenie ďalšiemu zvýšeniu preťaženia siete.

Ak nastane časový limit po stave kontroly preťaženia, stav siete sa stáva vážnejším a TCP migruje zo stavu vyhýbania sa preťažením do stavu pomalého štartu. V tomto prípade je hodnota okna preťaženia CWND nastavená na 1 mss, maximálnu dĺžku segmentu paketov a hodnota prahu pomalého štartu SSThresh je nastavená na polovicu CWND. Účelom je respektívne zväčšiť veľkosť okna preťaženia po tom, čo sa sieť obnoví, aby sa vyvážila rýchlosť prenosu a stupeň preťaženia siete.

Zhrnutie
Ako spoľahlivý transportný protokol spoločnosť TCP implementuje spoľahlivý transport pomocou sekvencie, potvrdenie, riadenie opakovaného prenosu, správu pripojenia a riadenie okien. Medzi nimi mechanizmus riadenia toku riadi množstvo údajov zaslaných odosielateľom podľa skutočnej prijímajúcej kapacity prijímača, ktorá sa vyhýba problémom s preťažením siete a degradácie výkonu. Mechanizmus riadenia preťaženia sa vyhýba výskytu preťaženia siete úpravou množstva údajov zaslaných odosielateľom. Koncepty okna preťaženia a odosielacie okno sú navzájom spojené a množstvo údajov u odosielateľa sa riadi dynamickým nastavením veľkosti okna preťaženia. Pomalý štart, vyhýbanie sa preťaženiu a rýchle zotavenie sú tri hlavné časti algoritmu kontroly preťaženia TCP, ktoré upravujú veľkosť okna preťaženia rôznymi stratégiami, aby sa prispôsobili stupne kapacity a preťaženia siete.

V nasledujúcej časti podrobne preskúmame mechanizmus opakovaného prenosu TCP. Mechanizmus opakovania je dôležitou súčasťou TCP na dosiahnutie spoľahlivého prenosu. Zabezpečuje spoľahlivý prenos údajov opakovaním stratených, poškodených alebo oneskorených údajov. V nasledujúcej časti sa zavedie a analyzuje zásada implementácie a stratégia mechanizmu prenosu. Zostaňte naladení!


Čas príspevku: február-24-2025