Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

TCP protokoll Torlódáskezelés.

Hasonló előadás


Az előadások a következő témára: "TCP protokoll Torlódáskezelés."— Előadás másolata:

1 TCP protokoll Torlódáskezelés

2 A szállítási protokoll (TCP)
Feladata: hibamentes kommunikáció (end-to-end) Funkciók: fragmentálás/defragmentálás (bitfolyam tördelése csomagokra) sorrendhelyesség adatvesztés nélkül hibajavítás (ismétlés) torlódásvezérlés és torlódásvédelem

3 TCP csomag szerkezete

4 A torlódás megközelítése
End-to-end: hálozati visszajelzés nélkül A kapcsolat két végén levő rendszer figyeli a veszteségeket, késéseket (TCP) Network assisted: A routerek visszajeleznek a végrendszereknek (egy küldési sebességet is ajánlanak)

5 A TCP torlódásvezérlése
Megnyílvánulások: Csomagvesztés Hosszú késések (felsorakozás a routerek buffereiben) A TCP torlódásvezérlést az 1980-as évek végén Van Jacobson vezette be az internetbe, kb 8 évre miután a TCP/IP protokollcsomag megjelent. Nem volt sikere, rögtön a megjelenése után az egész internet a nagy torlódásoktól szemvedett. A felhasználók által a hálózatba szúrt adatok felgyorsultak, ezzel túlterhelve a routereket Lényege az hogy a vonal végein levő rendszerek kiprobálják a hálózat kapacitását annak érdekében hogy pontosan annyi adatot tudjanak egyszerre küldeni a hálózaton keresztül amennyit az megbir.

6 Fogalmak Szegmens – egy TCP/IP csomag amely adatot, nyugtát vagy mindkettot tartalmaz Küldőfél maximális szegmens mérete: (SENDER MAXIMUM SEGMENT SIZE (SMSS) ) a legnagyobb szegmens mérete amit a küldő elkuldhet. Ez a méret függhet a hálozattól, az MTU útkereső algoritmustol, az RMSS-től, stb. A mérethez nem számoljuk hozzá a TCP/IP headerjeinek és opcióinak méretét.

7 Fogalmak Fogadófél maximális szegmens mérete: (RECEIVER MAXIMUM SEGMENT SIZE (RMSS)) a legnagyobb szegmens mérete amit a fogadófél elfogad. Ezt az értéket a küldő fél a kapcsolat felállításánál kapja meg a fogadótol egy ugynevezett MSS opció segítségével. Ha ez az opció nincs meghatározva, akkor a méret 536 byte lesz. A mérethez nem számoljuk hozzá a TCP/IP headerjeinek és opcióinak méretét.

8 Fogalmak Teljes méretű szegmens: MSS amely a megengedett legnagyobb mennyiségű adatbyteot tartalmazza (pl. az a szegmens, amely SMSS byte adatot tartalmaz.) Fogadó ablakméret: (RWND) a fogadó által utoljára hírdetett ablakméret.

9 Fogalmak Torlódási ablakméret (CWND): egy TCP státusváltozó, amely meghatározza azt az adatmennyiséget amelyet a TCP elkuldhet. A protokoll nem küldhet olyan adatot, amelynek a sorszáma nagyobb mint a legnagyobb lenyugtázott csomag sorszámának valamint a CWND és az RWND minimumának az összege.

10 Fogalmak Kezdeti ablakméret (IW): a küldő torlodási ablakmérete miután a kapcsolatteremtés megtörtént. Veszteség ablakméret (LW): a torlódási ablakméret abban a pillanatban mikor a küldő veszteséget érzékel az újraküldési timer által.

11 Fogalmak Ujraküldési ablakméret (RW): a torlódási ablakméret abban a pillanatban mikor a küldő elkezdi újraküldeni az adatokat. Csak a SLOW-START algoritmus használatánál alkalmas. Flight size: az az adatméret amelyre a küldő még nem kapott nyugtát.

12 Torlódásvezérlő algoritmusok
SLOW START CONGESTION AVOIDANCE FAST RETRANSMIT FAST RECOVERY

13 SLOW START, CONGESTION AVOIDANCE
A küldő által használt algoritmusok, amellyel a hálozatba vitt adatok mennyiségét szabályozzák. E két algoritmus működését a CWND és a RWND változók minimumai határozzák meg. CWND az az adatmennyiség amelyet a küldő küldhet a nyugta megkapásáig. SSTHRESH státusváltozó, meghatározza hogy a küldő a SS illetve a CA algoritmust használja

14 Működés Mire jó a SS algoritmus?
Az adatok egy ismeretlen hálozaton való küldése előtt a protokoll ki kell próbálja az illető utvonal kapacitását, azért hogy a küldött adatsorozat ne legyen nagyobb mint amennyit a hálozat elbir. Miután veszteséget érzékel a küldő, a protokoll ujra el kell végezze a fenti műveletet.

15 Működés SSTHRESH: kezdetben relativ nagy (pl. egyenlő a hirdetett ablakmérettel.), csökken ha torlódás jön létre. SS alatt a protokoll növeli a CWND-t legtöbb SMSS-el (tht exponenciálisan) minden megkapott nyugtára amely új adat elérkezését jelzi. SS végét a CWND és SSTHRESH változók egyenlősége jelzi, illetve az, ha CWND nagyobb mint SSTHRESH.

16 Működés CA alatt minden nem duplikált nyugta érkezésekor a CWND a következő módon változik: CWND += SMSS*SMSS/CWND (1) Mikor a TCP küldő veszteséget érzékel: SSTHRESH = max (FlightSize / 2, 2*SMSS) (2) Timeout esetén CWND értékét kötelező módon LW értékénél kisebb vagy vele egyenlő értékre kell állítani. LW mérete mindig 1 teljes méretű szegmens függetlenül az IW értékétől. Tehát, miután ujraküldi az elveszett szegmenseket, a TCP küldő megint a SS algoritmust használja ahhoz hogy növelje az ablakot az aktuális méretéről az SSTHRESH értékéig, azután pedig áttér a CA algoritmusra.

17 Példa TCP Slow Start time Host A Host B one segment RTT two segments
four segments TCP Slow Start

18 Fast Retransmit/Fast Recovery
Egy TCP fogadónak rögtön jeleznie kell egy duplikált nyugta segítségével a TCP küldőnek ha egy szegmens sorszáma nem egyezik meg a várt szegmens sorszámával. A TCP küldőnek egy duplikált nyugta jelentheti: Elveszett szegmensek: ebben az esetben minden szegmens az elveszett szegmens után egy duplikált nyugtát idéz elő a fogadó részéről. A hálozat átrendezi a szegmenseket A hálozat duplikálja az adat illetve a nyugtákat tartalmazó szegmenseket

19 Működés 3 duplikált nyugta után (4 nyugta, amiből az utolsó 3 az első duplikáltja) a küldő újraküldi az elveszettnek bizonyult szegmenst. Nem várja meg a timeoutot Miután a Fast Retransmit algoritmus ujraküldi az elveszett szegmenst, a Fast Recovery algoritmus átveszi a feladatot addig, míg egy nem duplikált nyugta érkezik.

20 Működés A FR és FR algoritmusok általában a következő képpen vannak együtt implementálva: Mikor a harmadik duplikált nyugta megérkezett, az SSTHRESH változót a 2. egyenlőség által megadott értéknél nem nagyobb értékre állítja. Az elveszett szegmenst ujraküldi majd CWND értékét SSTHRESH +3*SMSS-re állítja. (megszorozza a torlódási ablak méretét a szegmensek számával, amelyek elhagyták a hálozatot és a fogadó bufferjébe kerültek)

21 Működés Minden duplikált nyugtára, megnöveli CWND-t SMSS-el. (megnöveli az ablakméretet egy szegmens méretével, szegmens amely elhagyta a hálozatot) Elküldi a szegmenst ha a CWND új értéke és a fogadó hírdetett ablakmérete megengedi. Mikor egy nem duplikált nyugta érkezik, a CWND értékét SSTHRESH-re állítja(SSTHRESH értéke az 1. lépésből). A fenti nyugta az a válasz kell legyen előzőleg elveszett és újraküldött szegmensre. Ugyanakkor ez a nyugta konfirmálja azokat a szegmenseket, amik az elveszett szegmens és a 3.ik duplikált nyugta között lettek elküldve.

22 Inaktív kapcsolatok újraindítása
Relatív hosszú idejű inaktivitás után a fent említett algoritmusok megengedik a hálózat kapacitásának nem megfelelő mennyiségű adatok elküldését. Egy inaktivitási periódus után a TCP nem használhatja fel az ACK időzítőt mivel nyugták már nincsenek a hálózatban. Ezért a TCP nem csinálhat mást mint küldjön egy CWND méretű szegmenssorozatot ami lehet nem felel meg a kapcsolat aktuális kapacitásához. Ajánlatos SS algoritmust használni a kapcsolat újraindítására egy inaktivitási periódus után. A SS újraindítja az ACK időzítőt pontosan úgy mint az adatok küldése elött. Mikor a TCP nem kapott egy szegmenst sem egynél több ujraküldési timeoutig, lecsökkenti a CWND értékét RW-re (újraküldési ablak) mielött megint küldeni kezd.

23 Nyugták generálása A késleltetett ACK algoritmus: TCP fogadó által használt. A fogadónak nem ajánlott túl sokat késleltetni a nyugták küldését. Pontosabban, legalább minden második teljes méretű szegmensre ajánlott egy nyugtát kuldeni méghozzá 500 ms-on belül az utolsó még nem nyugtázott csomag érkezésétől. Out-of-order szegmensek érkezésekor ezeket rögtön le kell nyugtázni, ezzel elősegítve a veszteségek gyors visszaállítását. Ha egy nagyobb indexű szegmens érkezik mint a RWND által megengedett, akkor rögtön duplikált nyugtát kell küldeni. Ugyanúgy mikor olyan indexű szegmens érkezik amely befedi részben vagy teljesen a RWND-t akkor ezt rögtön jelezni kell nyugtával.

24 Veszteségeket helyreállító mechanizmusok
A Fast Retransmit és a Fast Recovery algoritmusokat bővítik ki, ezeket melegen ajánlják a TCP kutatói. SACK-on (Selective ACK) alapuló algoritmusok (a küldő minden RTT alatt egyetlen elveszett szegmensről kap tudomást, így csak azokat a szegmenseket küldi újra, amik elvesztek). Ez a módszer akkor ad jelentős elönyt, mikor egy ablakból több szegmens is elveszlődik. Nem SACK-on alapuló algoritmusok: ezek nem tudják eldönteni, hogy a duplikált nyugtákat egy előzőleg elveszett csomag vagy a fölöslegesen újraküldött csomagok idézik elő.

25 Veszteségeket helyreállító mechanizmusok
Mikor a veszteség felfedeződik, SSTHRESH értékét a (2)-s kifejezés értékével egyenlő vagy kisebb értékre állítjuk Amíg mindegyik szegmens az illető ablakból a fogadónál a helyén nincs, minden RTT-ben elküldött szegmensek száma nem lehet nagyobb mint fele a még nem nyugtázott szegmenseknek abban a pillanatban mikor az elveszlődést észlelte a protokoll. Miután minden veszteség helyre van állítva egy adott ablakban, CWND értékét SSTHRESH értékével egyenlő vagy kisebb értékre kell állítsa a protokoll és a CA algoritmus segítségével kell tovább növelni a CWND értékét. Veszteség két egymás utáni ablakban vagy az újraküldött adatok elvesztése direkt jelei a torlódásnak, ennek következményeként CWND és SSTHRESH értékeit kétszeresen csökkenteni kell.

26 Biztonsági megfontolás
A TCP a küldőt arra kötelezi hogy csökkentse a küldési sebességet ujraküldési timeout illetve duplikált nyugta esetén. Ebből kifolyolag egy támadó lelassíthatja a kapcsolatot a csomagok és a nyugták elvesztésével illetve falcs duplikált nyugták generálásával. Ha ezt a két esemény egyszerre bekövetkezik, a SSTHRESH automatikusan minimális lesz (2*SMSS).


Letölteni ppt "TCP protokoll Torlódáskezelés."

Hasonló előadás


Google Hirdetések