Arma sekrete e TCP-së: Kontrolli i rrjedhës së rrjetit dhe Kontrolli i bllokimit të rrjetit

Transporti i Besueshmërisë TCP
Ne të gjithë jemi të njohur me protokollin TCP si një protokoll transporti të besueshëm, por si e siguron ai besueshmërinë e transportit?

Për të arritur një transmetim të besueshëm, duhet të merren në konsideratë shumë faktorë, siç janë korruptimi i të dhënave, humbja, dyfishimi dhe copëzat e çrregullta të të dhënave. Nëse këto probleme nuk mund të zgjidhen, nuk mund të arrihet një transmetim i besueshëm.

Prandaj, TCP përdor mekanizma të tillë si numri i sekuencës, përgjigja e konfirmimit, kontrolli i ridërgimit, menaxhimi i lidhjes dhe kontrolli i dritares për të arritur një transmetim të besueshëm.

Në këtë punim, do të përqendrohemi në dritaren rrëshqitëse, kontrollin e rrjedhës dhe kontrollin e mbingarkesës së TCP-së. Mekanizmi i ritransmetimit trajtohet veçmas në seksionin tjetër.

Kontrolli i rrjedhës së rrjetit
Kontrolli i Fluksit të Rrjetit ose i njohur si Kontrolli i Trafikut të Rrjetit është në fakt një manifestim i marrëdhënies delikate midis prodhuesve dhe konsumatorëve. Me shumë mundësi e keni hasur këtë skenar shumë herë në punë ose në intervista. Nëse kapaciteti i prodhuesit për të prodhuar tejkalon shumë kapacitetin e konsumatorit për të konsumuar, kjo do të shkaktojë që radha të rritet pafundësisht. Në një rast më serioz, mund ta dini se kur mesazhet RabbitMQ grumbullohen shumë, kjo mund të shkaktojë degradim të performancës së të gjithë serverit MQ. E njëjta gjë vlen edhe për TCP; nëse lihet pa u kontrolluar, shumë mesazhe do të futen në rrjet dhe konsumatorët do të kenë tejkaluar kapacitetin e tyre, ndërsa prodhuesit do të vazhdojnë të dërgojnë mesazhe të dyfishta, gjë që do të ndikojë shumë në performancën e rrjetit.

Për të adresuar këtë fenomen, TCP ofron një mekanizëm që dërguesi të kontrollojë sasinë e të dhënave të dërguara bazuar në kapacitetin aktual të pranimit të marrësit, i cili njihet si kontroll i rrjedhës. Marrësi mirëmban një dritare pranimi, ndërsa dërguesi mirëmban një dritare dërgimi. Duhet theksuar se këto Dritare janë vetëm për një lidhje të vetme TCP dhe jo të gjitha lidhjet ndajnë një dritare.

TCP siguron kontrollin e rrjedhës duke përdorur një variabël për një dritare marrjeje. Dritarja e marrjes i jep dërguesit një tregues se sa hapësirë ​​​​e memories cache është ende e disponueshme. Dërguesi kontrollon sasinë e të dhënave të dërguara sipas kapacitetit aktual të pranimit të marrësit.

Pritësi marrës njofton dërguesin për madhësinë e të dhënave që mund të marrë dhe dërguesi dërgon deri në këtë limit. Ky limit është madhësia e dritares, a e mbani mend kokën TCP? Ekziston një fushë e dritares së marrjes, e cila përdoret për të treguar numrin e bajteve që marrësi është në gjendje ose dëshiron të marrë.

Hosti dërgues do të dërgojë periodikisht një paketë probe dritareje, e cila përdoret për të zbuluar nëse hosti marrës është ende në gjendje të pranojë të dhëna. Kur memoria e marrësit është në rrezik të mbingarkohet, madhësia e dritares caktohet në një vlerë më të vogël për t'i udhëzuar dërguesit të kontrollojë sasinë e të dhënave të dërguara.

Ja një diagram i Kontrollit të Fluksit të Rrjetit:

Kontroll Trafiku

Kontrolli i Mbingarkesës së Rrjetit
Para se të prezantojmë kontrollin e mbingarkesës, duhet të kuptojmë se përveç dritares së marrjes dhe dritares së dërgimit, ekziston edhe një dritare mbingarkese, e cila përdoret kryesisht për të zgjidhur problemin se me çfarë ritmi dërguesi fillon të dërgojë të dhëna në dritaren e marrjes. Prandaj, dritarja e mbingarkesës mirëmbahet edhe nga dërguesi TCP. Na duhet një algoritëm për të vendosur se sa të dhëna janë të përshtatshme për t'u dërguar, pasi dërgimi i shumë pak ose shumë të dhënave nuk është ideal, prandaj koncepti i një dritareje mbingarkese.

Në kontrollin e mëparshëm të rrjedhës së rrjetit, ajo që shmangnim ishte mbushja e memorjes së përkohshme të marrësit me të dhëna nga dërguesi, por nuk e dinim se çfarë po ndodhte në rrjet. Zakonisht, rrjetet kompjuterike janë në një mjedis të përbashkët. Si rezultat, mund të ketë mbingarkesë të rrjetit për shkak të komunikimit midis hosteve të tjerë.

Kur rrjeti është i mbingarkuar, nëse një numër i madh paketash vazhdon të dërgohet, kjo mund të shkaktojë probleme të tilla si vonesa dhe humbja e paketave. Në këtë pikë, TCP do të ritransmetojë të dhënat, por ritransmetimi do të rrisë ngarkesën në rrjet, duke rezultuar në vonesa më të mëdha dhe më shumë humbje paketash. Kjo mund të krijojë një rreth vicioz dhe të vazhdojë të rritet.

Kështu, TCP nuk mund të injorojë atë që po ndodh në rrjet. Kur rrjeti është i mbingarkuar, TCP sakrifikon veten duke zvogëluar sasinë e të dhënave që dërgon.

Prandaj, propozohet kontrolli i mbingarkesës, i cili synon të shmangë mbushjen e të gjithë rrjetit me të dhëna nga dërguesi. Për të rregulluar sasinë e të dhënave që dërguesi duhet të dërgojë, TCP përcakton një koncept të quajtur dritarja e mbingarkesës. Algoritmi i kontrollit të mbingarkesës do të rregullojë madhësinë e dritares së mbingarkesës sipas shkallës së mbingarkesës së rrjetit, në mënyrë që të kontrollojë sasinë e të dhënave të dërguara nga dërguesi.

Çfarë është një dritare e mbingarkesës? Çfarë lidhje ka kjo me dritaren e dërgimit?

Dritarja e kongjestionit është një variabël gjendjeje që mirëmbahet nga dërguesi dhe që përcakton sasinë e të dhënave që dërguesi mund të dërgojë. Dritarja e kongjestionit ndryshon në mënyrë dinamike sipas nivelit të kongjestionit të rrjetit.

Dritarja e Dërgimit është një madhësi dritareje e rënë dakord midis dërguesit dhe marrësit që tregon sasinë e të dhënave që mund të marrë marrësi. Dritarja e mbingarkesës dhe dritarja e dërgimit janë të lidhura; dritarja e dërgimit zakonisht është e barabartë me minimumin e dritares së mbingarkesës dhe dritares marrëse, domethënë, swnd = min(cwnd, rwnd).

Dritarja e mbingarkesës cwnd ndryshon si më poshtë:

Nëse nuk ka mbingarkesë në rrjet, d.m.th., nuk ndodh skadimi i kohës së ritransmetimit, dritarja e mbingarkesës rritet.

Nëse ka mbingarkesë në rrjet, dritarja e mbingarkesës zvogëlohet.

Dërguesi përcakton nëse rrjeti është i mbingarkuar duke vëzhguar nëse paketa e konfirmimit ACK është marrë brenda kohës së caktuar. Nëse dërguesi nuk e merr paketën e konfirmimit ACK brenda kohës së caktuar, konsiderohet se rrjeti është i mbingarkuar.

Përveç dritares së mbingarkesës, është koha të diskutojmë algoritmin e kontrollit të mbingarkesës TCP. Algoritmi i kontrollit të mbingarkesës TCP përbëhet nga tre pjesë kryesore:

Fillimi i ngadaltë:Fillimisht, dritarja e mbingarkesës së cwnd është relativisht e vogël, dhe dërguesi e rrit dritaren e mbingarkesës në mënyrë eksponenciale për t'u përshtatur shpejt me kapacitetin e rrjetit.
Shmangia e trafikut:Pasi dritarja e mbingarkesës tejkalon një prag të caktuar, dërguesi e rrit atë në mënyrë lineare për të ngadalësuar shkallën e rritjes së dritares së mbingarkesës dhe për të shmangur mbingarkesën e rrjetit.
Shërim i shpejtë:Nëse ndodh mbingarkesë, dërguesi e përgjysmon dritaren e mbingarkesës dhe hyn në gjendjen e rikuperimit të shpejtë për të përcaktuar vendndodhjen e rikuperimit të rrjetit përmes konfirmimeve të dyfishta të marra, dhe më pas vazhdon të rrisë dritaren e mbingarkesës.

Nisje e ngadaltë
Kur vendoset një lidhje TCP, dritarja e mbingarkesës cwnd fillimisht vendoset në një vlerë minimale MSS (madhësia maksimale e segmentit). Në këtë mënyrë, shpejtësia fillestare e dërgimit është rreth MSS/RTT bajt/sekondë. Gjerësia e brezit të disponueshëm është zakonisht shumë më e madhe se MSS/RTT, kështu që TCP dëshiron të gjejë shpejtësinë optimale të dërgimit, e cila mund të arrihet me anë të nisjes së ngadaltë.

Në procesin me nisje të ngadaltë, vlera e dritares së mbingarkesës cwnd do të inicializohet në 1 MSS, dhe çdo herë që segmenti i paketës së transmetuar pranohet, vlera e cwnd do të rritet me një MSS, domethënë, vlera e cwnd do të bëhet 2 MSS. Pas kësaj, vlera e cwnd dyfishohet për çdo transmetim të suksesshëm të një segmenti pakete, e kështu me radhë. Procesi specifik i rritjes tregohet në figurën e mëposhtme.

 Kontroll i mbingarkesës së rrjetit

Megjithatë, shkalla e dërgimit nuk mund të rritet gjithmonë; rritja duhet të mbarojë diku. Pra, kur mbaron rritja e shkallës së dërgimit? Fillimi i ngadaltë zakonisht e përfundon rritjen e shkallës së dërgimit në njërën nga disa mënyrat:

Mënyra e parë është rasti i humbjes së paketave gjatë procesit të dërgimit me fillim të ngadaltë. Kur ndodh një humbje pakete, TCP e vendos dritaren e mbingarkesës cwnd të dërguesit në 1 dhe e rinis procesin e fillimit të ngadaltë. Në këtë pikë, prezantohet koncepti i pragut të fillimit të ngadaltë ssthresh, vlera fillestare e të cilit është gjysma e vlerës së cwnd që gjeneron humbjen e paketave. Kjo do të thotë, kur zbulohet mbingarkesa, vlera e ssthresh është gjysma e vlerës së dritares.

Mënyra e dytë është të lidhet drejtpërdrejt me vlerën e pragut të nisjes së ngadaltë ssthresh. Meqenëse vlera e ssthresh është gjysma e vlerës së dritares kur zbulohet mbingarkesë, humbja e paketave mund të ndodhë me çdo dyfishim kur cwnd është më i madh se ssthresh. Prandaj, është më mirë të vendosni cwnd në ssthresh, gjë që do të bëjë që TCP të kalojë në modalitetin e kontrollit të mbingarkesës dhe të përfundojë nisjen e ngadaltë.

Mënyra e fundit se si mund të përfundojë një nisje e ngadaltë është nëse zbulohen tre konfirmime të tepërta, TCP kryen një ritransmetim të shpejtë dhe hyn në gjendjen e rikuperimit. (Nëse nuk është e qartë pse ka tre paketa ACK, kjo do të shpjegohet veçmas në mekanizmin e ritransmetimit.)

Shmangia e trafikut
Kur TCP hyn në gjendjen e kontrollit të mbingarkesës, cwnd vendoset në gjysmën e pragut të mbingarkesës ssthresh. Kjo do të thotë që vlera e cwnd nuk mund të dyfishohet çdo herë që merret një segment pakete. Në vend të kësaj, miratohet një qasje relativisht konservatore në të cilën vlera e cwnd rritet vetëm me një MSS (gjatësia maksimale e segmentit të paketës) pasi të përfundojë çdo transmetim. Për shembull, edhe nëse pranohen 10 segmente pakete, vlera e cwnd do të rritet vetëm me një MSS. Ky është një model rritjeje lineare dhe gjithashtu ka një kufi të sipërm të rritjes. Kur ndodh humbja e paketës, vlera e cwnd ndryshohet në një MSS, dhe vlera e ssthresh vendoset në gjysmën e cwnd. Ose gjithashtu do të ndalojë rritjen e MSS kur të merren 3 përgjigje të tepërta ACK. Nëse ende merren tre ack të tepërta pas përgjysmimit të vlerës së cwnd, vlera e ssthresh regjistrohet si gjysma e vlerës së cwnd dhe hyhet në gjendjen e rikuperimit të shpejtë.

Shërim i shpejtë
Në gjendjen e Rimëkëmbjes së Shpejtë, vlera e cwnd-it të dritares së mbingarkesës rritet me një MSS për çdo ACK të tepërt të marrë, domethënë, ACK që nuk mbërrin në sekuencë. Kjo bëhet për të përdorur segmentet e paketave që janë transmetuar me sukses në rrjet për të përmirësuar efikasitetin e transmetimit sa më shumë që të jetë e mundur.

Kur mbërrin një ACK i segmentit të paketës së humbur, TCP ul vlerën e cwnd dhe më pas hyn në gjendjen e shmangies së mbingarkesës. Kjo bëhet për të kontrolluar madhësinë e dritares së mbingarkesës dhe për të shmangur rritjen e mëtejshme të mbingarkesës së rrjetit.

Nëse ndodh një skadim kohe pas gjendjes së kontrollit të mbingarkesës, gjendja e rrjetit bëhet më serioze dhe TCP migron nga gjendja e shmangies së mbingarkesës në gjendjen e fillimit të ngadaltë. Në këtë rast, vlera e dritares së mbingarkesës cwnd vendoset në 1 MSS, gjatësia maksimale e segmentit të paketës, dhe vlera e pragut të fillimit të ngadaltë ssthresh vendoset në gjysmën e cwnd. Qëllimi i kësaj është që të rritet gradualisht madhësia e dritares së mbingarkesës pasi rrjeti të rikuperohet për të balancuar shkallën e transmetimit dhe shkallën e mbingarkesës së rrjetit.

Përmbledhje
Si një protokoll transporti i besueshëm, TCP zbaton transport të besueshëm me anë të numrit të sekuencës, konfirmimit, kontrollit të ritransmetimit, menaxhimit të lidhjes dhe kontrollit të dritares. Midis tyre, mekanizmi i kontrollit të rrjedhës kontrollon sasinë e të dhënave të dërguara nga dërguesi sipas kapacitetit aktual të pranimit të marrësit, gjë që shmang problemet e mbingarkesës së rrjetit dhe degradimit të performancës. Mekanizmi i kontrollit të mbingarkesës shmang ndodhjen e mbingarkesës së rrjetit duke rregulluar sasinë e të dhënave të dërguara nga dërguesi. Konceptet e dritares së mbingarkesës dhe dritares së dërgimit janë të lidhura me njëra-tjetrën, dhe sasia e të dhënave te dërguesi kontrollohet duke rregulluar dinamikisht madhësinë e dritares së mbingarkesës. Fillimi i ngadaltë, shmangia e mbingarkesës dhe rikuperimi i shpejtë janë tre pjesët kryesore të algoritmit të kontrollit të mbingarkesës TCP, i cili rregullon madhësinë e dritares së mbingarkesës përmes strategjive të ndryshme për t'u përshtatur me kapacitetin dhe shkallën e mbingarkesës së rrjetit.

Në seksionin tjetër, do të shqyrtojmë në detaje mekanizmin e ritransmetimit të TCP-së. Mekanizmi i ritransmetimit është një pjesë e rëndësishme e TCP-së për të arritur transmetim të besueshëm. Ai siguron transmetim të besueshëm të të dhënave duke ritransmetuar të dhënat e humbura, të korruptuara ose të vonuara. Parimi i zbatimit dhe strategjia e mekanizmit të ritransmetimit do të prezantohen dhe analizohen në detaje në seksionin tjetër. Qëndroni në kontakt!


Koha e postimit: 24 shkurt 2025