Számítógépes Hálózatok és Internet Eszközök 2008 20. Hálózati réteg Congestion Control Szállítói réteg szolgáltatások, multiplexálás, TCP 1 Torlódás felügyelet (Congestion Control) Minden hálózatnak korlátos az átviteli sávszélessége Ha több adatot vezetünk a hálózatba, akkor az torlódáshoz (congestion) vezet, vagy akár a hálózat összeomlásához (congestive collapse) Source 1 Source 2 10-Mbps Ethernet 100-Mbps FDDI Router 1.5-Mbps T1 link Destination Következmény: adatcsomagok nem érkeznek meg 2
Lavina jelenség Congestion control feladata a lavina jelenség elkerülése A hálózat túlterhelése csomagok elvesztését okozza (puffer túlcsordulás,...) Csomagvesztés a csomag újraküldését eredményezi Az újraküldés tovább növeli a hálózat terhelését Még több csomagvesztés Még több újraküldött csomag... 3 Követelmények a Congestion Control-lal szemben Hatékonyság Késés (delay) kicsi Az átvitel (throughput) nagy Fairness Minden folyam egy fair részt kap a sávszélességből Priorizálás lehetséges felhasználástól és szükséglettől függően 4
A Congestion Control eszközei A kapacitás megnövelése Új kapcsolatok aktiválása Időt vesz igénybe és rendszerint a rendszer adminisztrátorok beavatkozását Erőforrás foglalás és hozzáférés szabályzás (connection admission control CAC) Új forgalom megtiltása a kapacitáskorlát közelében Tipikus (virtual) circuit switching esetén A terhelés csökkentése és szabályzása A meglévő kapcsolatok által okozott terhelés (decentrális) csökkentése Szükség van visszacsatolásra a hálózatból Tipikus Packet Switching esetén TCP-ben felhasználja 5 Helye és mértéke Router vagy Host orientált Mérési pont (hol észleljük a torlódást) Szabályozás (hol történik a döntéshozás) Akció (hol történik beavatkozás) Ablak-alapú vagy ráta-alapú Ráta: x byte pro sec. Ablak: lásd az adatkapcsolati réteg ablak mechanizmusait az Interneten használják 6
Router akciója: csomag törlés A routerben puffertúlcsordulás esetén (legalább) egy csomagot törölni kell Az utoljára érkezett csomagot törli (drop-tail queue) Intuició: régi csomagok fontosabbak mint az újak Pl. go-back-n strategiánál Egy régebbi csomagot töröl a pufferből Intuició: Multimedia forgalom esetén az új csomagok fontosabbak mint a régiek 7 Csomagvesztés implicit visszajelzést ad Csomagvesztés a router pufferének túlcsordulása miatt visszajelzést ad a küldőnek (kimaradó nyugta a szállítói rétegben) Internet Feltesszük: csomagvesztés főleg torlódás miatt történik Vezetékes hálózatokban ez feltehető Vigyázat: ez nem igaz vezeték nélküli hálózatokra Következmény: A transzport protokoll hozzáigazítja a küldési rátát az új szituációhoz 8
Proaktív módszerek Puffer túlcsordulás a hálózat túlterhelését jelzi Ötlet: Proaktív visszajelzés = torlódás elkerülés (Congestion avoidance) Akció már a kritikus értékeknél pl. egy adott pufferhossz túllépése esetén pl. ha folyamatosan több forgalom érkezik, mint amit ki tud a hálózat szállítani... A router vészkészültségi állapotba kerül MaxThreshold MinThreshold AvgLen 9 Proaktív akció: lefojtó csomagok (Choke packets) Ha a router vészkészültségi állapotban van: Choke-csomagokat (lefojtó csomagokat) küld a forráshoz Choke-csomag a forrást a küldési ráta csökkentésére szólítja fel Probléma: Kritikus állapotban még több csomagot hoz létre A forrás reakciójáig csak nő a probléma 10
Proaktív akció: figyelmeztető bitek Ha a router vészkészültségi állapotban van: Figyelmeztető biteket küld minden csomagban a cél-állomásnak A cél-állomás ezeket a figyelmeztető biteket a nyugta csomagokban továbbküldi a forrásnak A forrás megkapja a figyelmeztetést és csökkenti a küldési rátát 11 Proaktív akció: Random early detection (RED) Elveszett csomagokat a túlterhelés indikátorának tekinti Routerek önkényesen csomagokat törölnek a vészkészültségi állapotban Az eldobási ráta növekedhet a puffer méretének növekedésével MaxThreshold MinThreshold P(drop) 1.0 MaxP AvgLen MinTh MaxTh AvgLen 12
A küldő reakciója Ráta-alapú protokollok A küldési ráta csökkentése Kérdés: mennyivel? Ablak-alapú protokollok: A congestion-ablak csökkentése pl. AIMD 13 Circuit Switching vagy Packet Switching Circuit Switching (vonal kapcsolás) Egy kapcsolat létrehozása felhasználók között kapcsoló állomások által vonalak explicit hozzárendelésével vagy erőforrások explicit hozzárendelésével, pl. idő slots Quality of Service egyszerű, kivéve a kapcsolatfelépítés Probléma statikus hozzárendelés a kommunikációs médium inefficiens kihasználása dinamikus terhelés esetén Felhasználás Telefon, telegráf, mobil telefon 14
Circuit Switching vagy Packet Switching Packet Switching (csomag kapcsolás) Az IP alapelve Az adatokat csomagokra osztja és a csomagokat küldő/fogadó információval ellátva egymástól függetlenül küldi Probléma: Quality of Service A kapcsolat minősége az egyes csomagoktól függ A csomagok puffereződnek vagy el is veszhetnek Előny: Összefoglalva A médium hatékony kihasználása dinamikus terhelés esetén Packet Switching gyakorlatilag minden felhasználási területen felváltotta a Circuit Switching-et Ennek oka: a médium hatékony kihasználása 15 Szállítói réteg 16
A szállítói réteg (transport layer) szolgáltatásai Kapcsolat nélküli vagy kapcsolat orientált (connectionless/connection oriented) Gondoljunk az ISO/OSI ülés rétegére Megbízható vagy nem megbízható (reliable/unreliable) Best effort vagy Quality of Service Hibafelügyelet Torlódás felügyelet (congestion control) vagy torlódás felügyelet nélkül Lehetőség több végpontra egy végrendszeren (host) Demultiplexálás Több interakciós modell támogatása Byte-áram, üzenetek, Remote Procedure Call 17 Multiplexálás a szállítói rétegben A hálózati réteg az adatokat kontroll nélkül továbbítja a szállítói rétegnek A szállítói rétegnek az adatokat különböző felhasználásokhoz kell hozzárendelni: pl. Web, Mail, FTP, ssh,... TCP/UDP ezt port-szám alapján teszi pl. port 80 a Web-szerverhez 18
Szállítói réteg (transport layer) TCP (transmission control protocol) Megbízható adatfolyamot hoz létre két végpont között A felhasználói réteg adatáramát csomagokra osztja A másik oldal a csomagok fogadásától nyugtákat küld (Acknowledgment) UDP (user datagram protocol) Egyszerű nem megbízható szolgáltatás csomagok küldésére Az inputot egy datagrammá alakítja A felhasználói réteg határozza meg a csomag méretét A csomagokat a hálózati réteg által küldi Routing nincs: végpont-végpont protokollok 19 Adatok burkolása 20
TCP-fejléc (I) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Source Port Destination Port Sequence Number Acknowledgment Number Data U A P R S F Offset Reserved R C S S Y I Window G K H T N N Checksum Urgent Pointer Options Padding Checksum Fejléchez és adatokhoz Fejléchossz (data offset) A változó hosszúságú opciómező miatt Küldő-Port + Cél-Port-Nr. Megenged több TCPkapcsolatot IP-címenként Sorszám Minden adatbyte meg van számozva modulo 2 32 = a szegmens első bytejának a száma Nyugta szám Az ACK-Flag által aktivivált Az első még nem feldolgozott adatbyte száma = utolsó sorozatszám + utolsó adatmennyiség 21 TCP-Fejléc (II) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Source Port Destination Port Sequence Number Acknowledgment Number Data U A P R S F Offset Reserved R C S S Y I Window G K H T N N Checksum Urgent Pointer Options Padding Opció-mező pl. MSS (maximum segement size): A fogadó megadja a kívánt csomagméretet Tekintet nélkül az IP MTU-ra (max. transmission unit) Fragmentálás lehetséges az IP által FLAGS (függetlenül felhasználhatók) URG: sürgős (urgent) ACK: nyugta (acknowledgment) Aktiviálja a nyugta számot PSH: Push Gyors adattovábbítás a felhasználói rétegnek RST: Reset A válasz hiba esetén: connection reset by peer SYN:Synchronize Kapcsolatfelépítés és a kezdő sorszám megadása FIN: Finished (Egy) adatfolyam befejezése 22
TCP (I) TCP (Transmission Control Protocol) egy kapcsolatorientált megbízható szolgáltatás bidirekcionális byte-folyamokhoz TCP Kapcsolatorientált Két résztvevő. Egy egy résztvevő socket által azonosított: socket: IP-cím és port TCP-kapcsolat egyértelműen azonosított egy socketpár által Nincs broadcast sem multicast Kapcsolatfelépítés és lezárás szükséges Amíg egy kapcsolat nincs (rendesen) lezárva, addig aktív 23 TCP (II) TCP egy kapcsolatorientált megbízható szolgáltatás bidirekcionális bytefolyamokhoz TCP megbízható Minden adatcsomag megérkezését nyugtázza (acknowledgment) A nem nyugtázott adatcsomagokat újraküldi Checksum a fejléchez és csomaghoz TCP számozza a csomagokat és sorbarendezi a fogadónál Törli a duplikált csomagokat 24
TCP (III) TCP egy kapcsolatorientált megbízható szolgáltatás bidirekcionális bytefolyamokhoz TCP egy szolgáltatás bidirekcionális byte-folyamokhoz Az adatok két egymással ellentétes irányú byte-sorozatként (=8 bit) kerülnek átvitelre A tartalom nem interpretálódik Az adatcsomagok időbeli viselkedése megváltozhat: átvitel sebessége növekedhet, csökkenhet, más késés, más sorrendben is megérkezhetnek Megpróbálja az adatcsomagokat időben egymáshoz közel kiszállítani Megpróbálja az átviteli közeget hatékonyan használni = kevés csomag 25 Kapcsolatfelépítés Rendszerint Client-Server-kapcsolat Ekkor felépítés 3 TCP-csomaggal (=3 szegmens) Az első SYN-szegmensben az MSS (maximum segment size) is átvitelre kerül client SYN: seq.nr.: j server SYN: seq.nr.: k ACK: ack.nr.: j+1 ACK: ack.nr.: k+1 26