1 / 26

TCP protokoll

TCP protokoll. Torlódáskezelés. 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.

sal
Download Presentation

TCP protokoll

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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énCWND é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. Host A Host B one segment RTT two segments four segments time Példa 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, azSSTHRESH változóta 2. egyenlőség által megadott értéknél nem nagyobb értékre állítja. • Az elveszett szegmenst ujraküldi majdCWND értékétSSTHRESH +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).

More Related