Transzport protokollok funkciói Tarján Péter BME-TMIT 2005. ápr. 27.
A transzport protokoll helye ISO/OSI rétegek TCP/IP alkalmazási megjelenítési viszony szállítási transzport hálózati IP (internet) adatkapcsolati „bármi” fizikai
Transzport protokoll megvalósítás Funkció UDP TCP Vn. TCP Nagy ssz. TCP UDT Alkalmazás azonosítása portok UDP portok Kapcsolat felépítés - 3utas kéz-fogás 3utas kézfogás Adat ellenőrzése checksum UDP szinten Sorrend-helyesség és minden adat pontosan 1x seq/ack bytealapú csomag szintű és ACK al-szekven-ciák
A TCP/IP protokollcsalád FTP SNMP BOOTP DHCP ASN.1 SMTP TELNET DNS TCP UDP IP (+ICMP és IGMP) ARP RARP Hardware meghajtók és közeghozzáférés
A szállítási réteg Feladata: végfelhasználók közötti megbízható és költséghatékony adatátvitel IP cím (hálózati réteg) a csomópontot azonosítja, felhasználót és folyamatot nem (IP fejlécben forrás- és célcím, valamint protokoll) Azonosítani kell a datagram címzettjét (alkalmazás szinten)
Megbízható adatátvitel Transzport protokoll lehet összeköttetés alapú (pl. TCP) vagy összeköttetés-mentes (pl. UDP) Biztonságos információ-továbbítás összeköttetés felépítése/lebontása átvitt adat ellenőrzése (pl. checksum alapján) adatvesztés megakadályozása duplikálás elkerülése folyam- és torlódásszabályozás
Transzport protokollok IP felett port okat használnak alkalmazás azonosítására UDP (User Datagram Protocol): összeköttetésmentes szolgáltatás TCP: összeköttetés-alapú szolgáltatás Process 1 Process 2 Port a Port b UDP, TCP IP
Az UDP jellemzői IP csomagba információ + ellenőrzőösszeg Nem-garantált átvitel, de hiba detektálása TCP-től független portok, bizonyos portok szolgáltatásra lefoglalt (pl. 53: DNS) Alkalmazásnak kell biztosítania átvitel megbízhatóságát Szabványos alkalmazás: TFTP, RPC, LDAP, DNS, SNMP
A TCP jellemzői Összeköttetés-alapú, byte-folyam jellegű (struktúra nélküli adat), megbízható protokoll Sorrendhelyes, duplikáció- és veszteség-mentes full-duplex kommunikáció Kapcsolat felépítéséért, elbontásáért felel Csomagvesztés vagy –sérülés esetén újraadás Folyamszabályozás és torlódásvédelem Folyamok azonosítása (portszám alapján)
Átvitel megbízhatósága Általában: Csomagok sorszámmal ellátása Fogadó nyugtát küld Adott időn belül nincs nyugta => újraküldés Nagy körbefordulási idő (RTT) mellett nem hatékony TCP esetén Nyugta byte-ok számát tartalmazza Több nyugtázatlan csomag lehet egy időben Csúszóablak alkalmazása
Csúszóablak Az „ablak” a kiküldött, de még nyugtázatlan csomagokból áll Ablak mérete szabályozza az átvitelt A „baloldalt” a nyugták csúsztatják TCP esetén az ablak byteszámmal adott 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 nyugtázva elküldve engedélyezve
Átvitel-szabályozás Csúszóablak mérete változik Nyugtával együtt maximális ablakméret, ha 0, fel kell függeszteni adást, amíg nem küld pozitív ablakméretet, kiv. sürgős bit deadlock elkerülése (elveszett nyugta esetén): küldő ellenőrzi időnként ablakot
Nyugtázás és ismétlés TCP szegmens kötetlen méretű Nyugta: meddig kapta meg összes byteot (köv. várt byte sorszáma) Csak első hiányzó szegmens újraküldése, nyugta megvárása RTT becslése adaptív módon, ennek többszöröse timeout, nagy ingadozásra szórás becslése is
Az újraküldési algoritmus javítása Probléma: csak utolsó jól megkapott csomagról tudunk, lehetőségek: RTT-ként csak egy csomag újraküldése már jól megérkezett csomagok újraküldése „timeout esetén újraküldés” javítása: Fast Retransmit: duplikált ACK-ok figyelembevétele Fast Recovery: duplikált ACK-ok jól megkapott csomagoknak megfeleltetése, nem ürül ki csatorna további javítás többszörös csomagvesztés esetére Selective Acknowledgements (SACK): küldőnek nem-folytonos megkapott blokkokról értesítés
Torlódás-szabályozás Cél: torlódási összeomlás elkerülése (time-out -> újraadás, sorok telítődése) Source Quench router-üzenet: ICMP része (nem a TCP-hez tartozik) Additive Increase Multiplicative Decrease Slow Start: additív növelés, advertised window felénél további lassítás
TCP kapcsolat felépítés/lebontás Funkciói: kapcsolat kialakítása (szerver megtudja, ki a kliens) szekvenciaszám szinkronizálás paraméterek cseréje Felépítés: 3-utas kézfogás SYN SYN, ACK ACK Összeköttetés bontása FIN ACK FIN ACK
TCP megvalósítás Linuxban kernel szinten, paraméterei hangolhatók sysctl ill. /proc filerendszer segítségével kernel-source-x/net/ipv4/ könyvtár alatt 2.4.24 –es kernelben file-ok sorainak száma: 2668 tcp.c 609 tcp_diag.c 4058 tcp_input.c 2374 tcp_ipv4.c 1023 tcp_minisocks.c 1454 tcp_output.c 655 tcp_timer.c
UDT: applikációs szintű transzport protokoll UDP based Data Transfer Protocol Felhasználási terület: intenzív adatforgalom Nagy sávszélesség-késleltetés szorzat (mint új TCP variánsok) pl. számító GRID rendszerek
Az UDT jellemzői a működést egy 2005 februárban lejárt internet draft adja meg külön jelzés- és adatcsomagok (utóbbi fix méretű) vevő foglalkozik a szabályozási információkkal ablak és küldési ráta alapú szabályozás sávszélességbecslés alapján 4 timert használ (mind a fogadóban) csomagszintű- és ACK al-nyugtázás
Az UDT működése I. Csomagszintű nyugtázás: Pozitív nyugta konstans időnként (ACK timer) Negatív nyugta csomagvesztés detekciójakor (NAK timer) ha csomagvesztés küszöb alatti, az egy SYN (konstans 10 ms) alatt küldendő csomagok számát növeli legalább 1/MTU-val, de ha a küldési ráta sokkal kisebb a becsült sávszélességnél, jobban negatív nyugta kapása és bizonyos feltételek teljesülése esetén küldési ráta csökkentése 1/9-nyivel a sávszélességbecslés UDT csomag párok mintavételezéséből adódik
Az UDT működése II. Nyugtázatlan csomagok számán alapuló forgalomszabályozás UDT vevő a nyugtával együtt visszaküldi a medián szűrővel számolt csomagérkezési rátát (AS ) ha ez az érték>0, küldő az ablakméretet módosítja 3-utas kézfogás használata
Összefoglalás Transzport funkciók megbízható, összeköttetés-alapú protokoll esetén alkalmazás azonosítása kapcsolat felépítése, lebontása küldött adat ellenőrzése sorrend megtartása duplikáció nélkül garantált átvitel adatvesztés detektálása újraküldés folyam- és torlódásszabályozás
Transzport protokoll megvalósítás Funkció UDP TCP Vn. TCP Nagy ssz. TCP UDT Alkalmazás azonosítása portok UDP portok Kapcsolat felépítés - 3utas kéz-fogás 3utas kézfogás Adat ellenőrzése checksum UDP szinten Sorrend-helyesség és minden adat pontosan 1x seq/ack bytealapú csomag szintű és ACK al-szekven-ciák
Táblázat értékelés Használt rövidítések: vn. TCP: vezetéknélküli TCP, pl. Eifel, Westwood nagy ssz. TCP: nagy sávszélességre kifejlesztett TCP-k, pl. HS-TCP, Fast TCP, Scalable TCP Különbség protokollokban a torlódásszabályozásnál