A TCP titkos fegyvere: hálózati áramlásvezérlés és hálózati torlódásvezérlés

TCP megbízhatóság szállítás
Mindannyian ismerjük a TCP protokollt, mint megbízható szállítási protokollt, de hogyan biztosítja a szállítás megbízhatóságát?

A megbízható átvitel elérése érdekében számos tényezőt figyelembe kell venni, mint például az adatok korrupciója, vesztesége, másolása és a rendelésen kívüli szilánkok. Ha ezeket a problémákat nem lehet megoldani, akkor a megbízható átvitelt nem lehet elérni.

Ezért a TCP olyan mechanizmusokat alkalmaz, mint például a sorszám, a nyugtázási válasz, a vezérlés, a kapcsolatkezelés és az ablakvezérlés a megbízható átvitel elérése érdekében.

Ebben a cikkben a csúszó ablakra, az áramlásvezérlésre és a TCP torlódási szabályozására összpontosítunk. Az újrahasznosítási mechanizmust a következő szakasz külön -külön fedi le.

Hálózati áramlásvezérlés
A hálózati folyamatvezérlés vagy a hálózati forgalomirányítás néven ismeri a termelők és a fogyasztók közötti finom kapcsolat megnyilvánulása. Valószínűleg sokat találkozott ezzel a forgatókönyvvel a munkahelyen vagy az interjúk során. Ha a termelő képessége nagymértékben meghaladja a fogyasztó fogyasztási képességét, akkor a sor határozatlan időre növekszik. Egy komolyabb esetben tudhatja, hogy amikor a RabbitMQ üzenetek túl sokat halmoznak fel, akkor a teljes MQ szerver teljesítmény lebomlását okozhatja. Ugyanez vonatkozik a TCP -re; Ha nem hagyják ellenőrizetlenül, akkor túl sok üzenet kerül a hálózatba, és a fogyasztók túllépik kapacitásukat, míg a gyártók továbbra is másolatot küldenek, ami nagymértékben befolyásolja a hálózat teljesítményét.

Ennek a jelenségnek a kezelése érdekében a TCP mechanizmust biztosít a feladó számára, hogy ellenőrizze a küldött adatok mennyiségét a vevő tényleges fogadási kapacitása alapján, amelyet áramlásvezérlőnek hívnak. A vevő tartja fenn a vételi ablakot, míg a feladó egy küldési ablakot tart fenn. Meg kell jegyezni, hogy ezek a ablakok csak egyetlen TCP -kapcsolathoz készültek, és nem minden csatlakozás osztja meg az ablakot.

A TCP az áramlásvezérlést biztosítja a vételi ablak változójának használatával. A fogadóablak megmutatja a feladónak, hogy mekkora gyorsítótár még mindig rendelkezésre áll. A feladó szabályozza az elküldött adatok mennyiségét a vevő tényleges elfogadási kapacitása alapján.

A vevő gazdagép értesíti a feladót a kapott adatok méretéről, és a feladó elküldi ezt a korlátot. Ez a határ az ablakméret, emlékszel a TCP fejlécre? Van egy fogadóablak mező, amelyet arra használnak, hogy jelezzék, hogy a vevő által képes vagy hajlandó bájtok száma.

A Senter Host rendszeresen elküldi egy ablakos szondacsomagot, amelyet annak felismerésére használnak, hogy a vevő gazdagép továbbra is képes -e elfogadni az adatokat. Amikor a vevő pufferje túlcsordul, az ablakméret kisebb értékre van állítva, hogy a feladó utasítsa a küldött adatok mennyiségét.

Itt van egy hálózati folyamatvezérlő diagram:

Forgalomirányítás

Hálózati torlódásvezérlés
Mielőtt bemutatnánk a torlódásvezérlést, meg kell értenünk, hogy a vételi ablakon és a küldési ablakon kívül van egy torlódási ablak is, amelyet elsősorban arra használnak, hogy megoldják annak problémáját, hogy a feladó milyen sebességgel kezdi el az adatokat a fogadó ablakba. Ezért a torlódási ablakot a TCP feladó is fenntartja. Szükségünk van egy algoritmusra, hogy eldöntsük, hogy mekkora adatot kell küldeni, mivel a túl kevés vagy túl sok adat küldése nem ideális, ennélfogva a torlódási ablak fogalma.

Az előző hálózati áramlásvezérlésben az volt, amit elkerültünk, hogy a feladó kitöltötte a vevő gyorsítótárát az adatokkal, de nem tudtuk, mi történik a hálózatban. A számítógépes hálózatok általában megosztott környezetben vannak. Ennek eredményeként a többi gazdagép közötti kommunikáció miatt hálózati torlódások merülhetnek fel.

Ha a hálózat zsúfolódik, ha nagyszámú csomagot továbbítanak, akkor problémákat okozhat, például késleltetést és a csomagok elvesztését. Ezen a ponton a TCP továbbítja az adatokat, de az újraküldés növeli a hálózat terheit, ami nagyobb késéseket és több csomagveszteséget eredményez. Ez bekerülhet egy ördögi körbe, és egyre nagyobb lesz.

Így a TCP nem hagyhatja figyelmen kívül a hálózaton zajló eseményeket. Amikor a hálózat zsúfolódik, a TCP feláldozza magát az általa küldött adatok mennyiségének csökkentésével.

Ezért javasoljuk a torlódásvezérlést, amelynek célja a teljes hálózat kitöltésének elkerülése a feladóból származó adatokkal. A feladó által elküldött adatok mennyiségének szabályozásához a TCP meghatározza a torlódási ablaknak nevezett koncepciót. A torlódásvezérlő algoritmus a torlódási ablak méretét a hálózat torlódási fokának megfelelően állítja be, hogy ellenőrizze a feladó által elküldött adatok mennyiségét.

Mi az a torlódási ablak? Mi köze ennek a küldési ablakhoz?

A torlódási ablak egy olyan állapotváltozó, amelyet a feladó tart fenn, amely meghatározza a feladó által elküldött adatok mennyiségét. A torlódási ablak a hálózat torlódási szintje szerint dinamikusan változik.

A küldő ablak egy elfogadott ablakméret a feladó és a vevő között, amely jelzi, hogy a vevő milyen adatmennyiséget kap. A torlódási ablak és a küldő ablak kapcsolódik; A küldő ablak általában megegyezik a torlódások és a fogadó ablakok minimumával, azaz swnd = min (CWND, RWND).

A torlódási ablak CWND a következőképpen változik:

Ha a hálózatban nincs torlódás, azaz nem történik visszautazási időtúllépés, akkor a torlódási ablak növekszik.

Ha a hálózatban torlódások vannak, akkor a torlódási ablak csökken.

A feladó meghatározza, hogy a hálózat zsúfolódik -e azzal, hogy megfigyeli -e, hogy az ACK nyugtázási csomagot a megadott időn belül fogadják -e. Ha a feladó a megadott időn belül nem kapja meg az ACK nyugtázási csomagot, akkor úgy véljük, hogy a hálózat torlódott.

A torlódási ablakon kívül ideje megvitatni a TCP torlódási vezérlő algoritmust. A TCP torlódásvezérlő algoritmus három fő részből áll:

Lassú indítás:Kezdetben a CWND torlódási ablak viszonylag kicsi, és a feladó exponenciálisan növeli a torlódási ablakot, hogy gyorsan alkalmazkodjon a hálózat kapacitásához.
Torlódás elkerülése:Miután a torlódási ablak meghaladja a bizonyos küszöböt, a feladó lineárisan növeli a torlódási ablakot, hogy lelassítsa a torlódási ablak növekedési ütemét, és elkerülje a hálózat túlterhelését.
Gyors helyreállítás:Ha torlódás történik, a feladó felére veszi a torlódási ablakot, és belép a gyors helyreállítási állapotba, hogy meghatározza a hálózat helyreállításának helyét a kapott másolatú ACK -kon keresztül, majd továbbra is növeli a torlódási ablakot.

Lassú indulás
A TCP -kapcsolat létrehozásakor a CWND torlódási ablakot kezdetben minimális MSS (maximális szegmens méret) értékre állítják. Ilyen módon a kezdeti küldő ráta az MSS/RTT bájt/másodpercről szól. A tényleges rendelkezésre álló sávszélesség általában sokkal nagyobb, mint az MSS/RTT, tehát a TCP meg akarja találni az optimális küldő sebességet, amelyet lassú indítással lehet elérni.

A lassú elindítás során a CWND torlódási ablak értékét 1 ms-ra inicializálják, és minden alkalommal, amikor az átadott csomag szegmenst elismerik, a CWND értékét egy MSS-vel növelik, azaz a CWND értéke 2 MSS lesz. Ezt követően a CWND értéke megduplázódik a csomagszegmens minden sikeres továbbításához, és így tovább. A specifikus növekedési folyamatot a következő ábra mutatja.

 Hálózati torlódásvezérlés

A küldési arány azonban nem mindig növekedhet; A növekedésnek valamikor véget kell érnie. Tehát mikor ér véget a küldő arány? A lassú indítás általában a küldés növekedésének növekedését végzi többféle módon:

Az első út a csomagvesztés esetén a lassú indulás küldési folyamatában. A csomagvesztés esetén a TCP beállítja a küldő torlódási ablakot, a CWND-t 1-ig, és újraindítja a lassú elindítást. Ezen a ponton bevezetik az SSTHRESH lassú kezdési küszöb fogalmát, amelynek kezdeti értéke a CWND értékének fele, amely csomagvesztést generál. Vagyis amikor torlódást észlelnek, az SSTHRESH értéke az ablakérték fele.

A második módszer az, hogy közvetlenül korrelálunk a lassú induló küszöbérték SSTHRESH értékével. Mivel az SSTHRESH értéke az ablak értékének fele, ha torlódást észlelnek, a csomagvesztés minden megduplázódás esetén előfordulhat, ha a CWND nagyobb, mint az SSTHRESH. Ezért a legjobb, ha a CWND-t az SSTHRESH-ra állítja, ami miatt a TCP a torlódásvezérlő módra vált, és lassú indulással végez.

A lassú indítás utolsó módja az, ha három redundáns ACK -t észlelnek, a TCP gyors továbbadást hajt végre és belép a helyreállítási állapotba. (Ha nem világos, miért van három ACK -csomag, akkor azt külön magyarázzák az újraküldési mechanizmusban.)

Torlódás elkerülése
Amikor a TCP belép a torlódásvezérlő állapotba, a CWND az SSTHRESH torlódási küszöbértékének felére van állítva. Ez azt jelenti, hogy a CWND értékét nem lehet megduplázni minden alkalommal, amikor egy csomag szegmenst fogadnak. Ehelyett egy viszonylag konzervatív megközelítést alkalmaznak, amelyben a CWND értékét csak egy MSS -rel (maximális csomagszegmens hossza) növeli az egyes sebességváltó befejezése után. Például, még ha 10 csomagszegmenst is elismernek, a CWND értéke csak egy MSS -rel növekszik. Ez egy lineáris növekedési modell, és a növekedés felső határa is van. Ha a csomagveszteség bekövetkezik, a CWND értékét MSS -re változtatják, és az SSTHRESH értéke a CWND felére van állítva. Vagy megállítja az MSS növekedését is, ha 3 redundáns ACK -válasz érkezik. Ha a CWND értékének felére csökkentése után még három redundáns ACK -t kapnak, akkor az SSTHRESH értékét a CWND értékének felére rögzítik, és a gyors helyreállítási állapotot beírják.

Gyors helyreállítás
Gyors helyreállítási állapotban a CWND torlódási ablak értéke egy MSS -rel növekszik minden egyes redundáns ACK -nál, azaz ACK, amely nem érkezik sorrendben. Ennek célja a hálózatban sikeresen továbbított csomagszegmensek felhasználása az átviteli hatékonyság amennyire a lehető legnagyobb mértékben javítása érdekében.

Amikor megérkezik az elveszett csomag szegmens ACK, a TCP csökkenti a CWND értékét, majd belép a torlódások elkerülési állapotába. Ennek célja a torlódási ablak méretének ellenőrzése és a hálózati torlódások további növelésének elkerülése.

Ha a torlódásvezérlés állapota után időkorlát történik, a hálózati állapot komolyabbá válik, és a TCP a torlódások elkerülési állapotából a lassú indulású állapotba vándorol. Ebben az esetben a CWND torlódási ablak értékét 1 MSS-re állítják, a maximális csomagszegmens hosszát és a lassú induló küszöbérték értékét a CWND felére állítják. Ennek célja az, hogy a torlódási ablak méretét újraduálisan növelje, miután a hálózat helyreáll, hogy kiegyensúlyozza az átviteli sebességet és a hálózati torlódások mértékét.

Összefoglalás
Megbízható közlekedési protokollként a TCP megbízható transzportot hajt végre sorszám, nyugtázás, újraküldési vezérlés, kapcsolatkezelés és ablakvezérlés szerint. Közülük az áramlásszabályozó mechanizmus szabályozza a feladó által elküldött adatok mennyiségét a vevő tényleges fogadó képessége szerint, ami elkerüli a hálózati torlódás és a teljesítmény lebomlásának problémáit. A torlódásvezérlő mechanizmus elkerüli a hálózati torlódások előfordulását azáltal, hogy beállítja a feladó által elküldött adatok mennyiségét. A torlódási ablak és a küldő ablak fogalmai egymáshoz kapcsolódnak, és a feladóban lévő adatok mennyiségét a torlódási ablak méretének dinamikus beállításával kell szabályozni. A lassú kezdés, a torlódások elkerülése és a gyors helyreállítás a TCP torlódásvezérlő algoritmus három fő része, amelyek a torlódási ablak méretét különböző stratégiákon keresztül igazítják, hogy alkalmazkodjanak a hálózat kapacitásához és torlódási fokához.

A következő szakaszban részletesen megvizsgáljuk a TCP továbbítási mechanizmusát. Az újraküldési mechanizmus a TCP fontos része a megbízható átvitel elérése érdekében. Biztosítja az adatok megbízható továbbítását az elveszett, sérült vagy késleltetett adatok továbbításával. Az újrahasznosítási mechanizmus végrehajtási alapelve és stratégiája a következő szakaszban részletesen bevezetik és elemezzük. Maradj velünk!


A postai idő: február-24-2025