• Nem Talált Eredményt

Cs˝ o szervezés˝ u megbízható adatátviteli protokollok

4.4 A megbízható átvitel alapjai

4.4.4 Cs˝ o szervezés˝ u megbízható adatátviteli protokollok

A korábbiakban kifejlesztett rdt3.0 protokoll funkcionalitását tekintve hibátlan, azonban komoly teljesítmény problémái vannak, különös tekintettel a mai nagy sebesség˝u hálózatokat szem el˝ott tartva.

A probléma gyökere a protokoll"állj és várj" stratégiája, azaz mindaddig nem kerül új adatot tartalmazó csomag kiküldésre, amíg az azt megel˝oz˝or˝ol nincs pozitív visszaigazolás adott várakozási id˝on belül. A teljesítmény probléma érzékeléséhez tekintsük az alábbi példát és számokat!

Vegyünk két rendszert, amelyek egymástól több ezer kilométer távolságra vannak, Európa két egymástól távoli pontján. Tegyük fel, hogy a két rendszer közötti adatátvitel fénysebességgel történik, így az adat útjának oda-vissza megtételéhez körül-belül 30 milliszekundum szükséges, ezt jelölje RTT (Round-Trip-Time). A két rendszer között egy 1 Gbps sebsség˝u vonal van (109 bit másodpercenként), ez az R értékünk. Ha 1000 bájt (8000 bit) méret˝u csomagokat (L) tekintünk, amely tartalmazza a fejléc mez˝oket és az adatot is, akkor egy csomag egy 1 Gbps sávszélesség˝u

küldő fogadó

(d) túl hamar időtúllépés/ késleltetett ACK időtúllépés pkt1

4.13: Az rdt3.0 protokoll m˝uködése1 vonalon történ˝o átviteléhez a szükséges id˝o:

dtrans= L

R = 8000 bit/csomag

109 bit/másodperc =8 mikroszekundum (4.1)

Ahogy a 4.14 és a 4.15 ábrákon látható, ha az "állj és várj" protokollt alkalmazzuk, akkor at=0 id˝opillanatban kiküldött csomag utolsó bitje at=L/R=8 mikroszekundumban kerül be csatornába a küld˝o oldalon. Ezt követ˝oen a csomag megteszi a 15 milliszekundumos útját a fogadó fél felé, így a fogadó félnél az utolsó bit at=RT T/2+L/R=15,008 milliszekundum id˝opillantban jelenik meg. Ha feltesszük, hogy a visszaigazolás (ACK) mérete olyan kicsi, hogy az átviteli id˝o figyelmen kívül hagyható, és az utolsó bit megérkeztével azonnal küldhet˝o, akkor a visszaigazolás at=RT T+L/R=30,008 milliszekundum id˝opillanatban érkezik meg a küld˝ohöz.

Ha a küld˝o (vagy a csatorna) kihasználtságát (Uküld˝o) a küld˝o tényleges foglaltságának és az oda-vissza úthoz szükséges id˝o hányadosaként írjuk fel, akkor az

Uküld˝o= L/R

RT T+L/R= 0,008

30,008=0,00027 milliszekundum (4.2)

értéket kapjuk, ami szerint a küld˝o nincs megfelel˝o módon kihasználva.

Az ilyen elven m˝uköd˝o protokollokat nevezzük cs˝o szervezés˝u protokolloknak. A következ˝okben két általános cs˝o szervezés˝u protokollt vizsgálunk meg: vissza N-nel és szelektív ismétlés.

az első bitet átküldtük, t = 0

az utolsó bit beérkezik, küldjük az ACK-ot

4.14: Az "állj és várj" m˝uvelet1

az első továbbítandó bit, t = 0 küldő

RTT az utolsó továbbítandó bit, t = L

/ R

ACK beérkezett, küldjük a következőt csomag, t = RTT + L / R

fogadó

az első bit beérkezik

az utolsó bit beérkezik, küldjük az ACK-ot a 2. csomag utolsó bitje beérkezik, ACK a 3. csomag utolsó bitje beérkezik, ACK

4.15: Cs˝o szervezés˝u adatküldés1

Vissza N-nel

A Vissza N-nel protokoll esetében a küld˝o számára megengedett, hogy több csomagot is kiküldjön visszaigazolásra történ˝o várakozás nélkül. A megengedésnek természetesen van egy beállított N fels˝o korlátja, azaz legfeljebb N még nem visszaigazolt csomag lehet a cs˝ovezetékben egyidej˝uleg.

A 4.16 ábrán látható a küld˝o fél szemszögéb˝ol a szekvencia számok. Ha az els˝o visszaigazolatlan csomagot jelölibase, ésnextseqnuma következ˝o szabad szekvencia számot, akkor a szekvencia számok tartománya 4 részre osztható:

[0,base-1]: az elküldött és visszaigazolt csomagok

[base,nextseqnum-1]: az elküldött, de még vissza nem igazolt csomagok

[nextseqnum,base+N-1]: az azonnal küldhet˝o csomagok

[base+N,∞): nem használhatóak, amíg a cs˝ovezetékben lev˝o csomagok közül nincs újabb visszaigazolt

A maximálisan kiküldhet˝o nyugtázatlan csomagok számát (N) szoktákablaknak nevezni. A fogadó nyugtázása is ennek megfelel˝oen történik. A küld˝o fél egy ún. összesít˝o (kumulált) nyugtát fog kapni az n. csomagról. Az n. csomag nyugtáját a fogadó akkor küldi ki, ha az n. volt a sorban következ˝o csomag. Ha egy soron kívüli csomag érkezik, akkor azt elveti, és nyugtát küld az utoljára helyesen fogadott csomagról. Az n. csomag nyugtája természetesen azt is jelenti, hogy az n szekvencia számnál alacsonyabbal ellátott csomagok is helyesen megérkeztek.

A Vissza N-nel nevét a protokoll a küld˝o viselkedésér˝ol kapta. Ismét visszaköszön az id˝ozít˝o használata, amellyel az adatvesztés adta problémákat kezeljük. Egyetlen id˝ozít˝ot használva, alkalmazzuk azt a legrégebben kiküldött még nem visszaigazolt csomagra. Ha nem érkezik adott id˝on belül visszaigazolás, akkor a legrégebben vissza nem igazolt csomag újraküldésre és kerül, és

ablak méret

4.16: Szekvencia számok a küld˝o oldalon a Vissza N-nel protokollnál1

az összes ezt követ˝o is, hiszen a sorrendhelyesség fontos a fogadónál. A 4.17 ábra szemlélteti a Vissza N-nel protokoll m˝uködését.

pkt0 fogadása, ack0 küldése pkt1 fogadása, ack1 küldése pkt3 fogadása, kidob,

4.17: A Vissza N-nel m˝uködés közben1 Szelektív ismétlés

Ugyan a Vissza N-nel protokoll megnövelte küld˝o kihasználtságát az "állj és várj" stratégiához képest, azonban vannak olyan esetek, amikor itt is mutatkoznak teljesítmény problémák. Például, ha az ablak méret és a késleltetés is magas, akkor egyidej˝uleg rengeteg csomag lehet a cs˝ovezetékben.

Egyetlen csomaghiba nagy mennyiség˝u csomag újraküldését eredményezi, hiszen a hibás csomagtól kezdve minden csomagot újra kell küldeni.

A szelektív válasz protokoll pontosan ezeket a szükségtelen újraküldéseket hivatott elkerülni.

Csak azokat a csomagokat fogja újraküldeni, amelyek hibásan érkeztek meg a fogadóhoz vagy elvesztek. Az ablak méretet továbbra is alkalmazzuk az egyidej˝uleg a cs˝ovezetékben tartózkodó csomagok számának maximális korlátozásához. A szekvencia számok tere azonban változik, melyet a 4.18 ábrán szemléltetünk.

ablak méret

már visszaigazolt elküldött, de még nem visszaigazolt

4.18: Szekvencia számok a küld˝o és a fogadó oldalon a Szelektív ismétlés protokollnál1

A küld˝o és a fogadó az alábbi eseményeket és m˝uveleteket hajtja végre.

Küld˝o:

Adat fogadása fels˝obb rétegt˝ol:

megkeresi a sorban következ˝o szabad szekvencia számot, és ha az az ablakban van, akkor az adatot csomagolja és küldi. Más esetekben puffereli az adatot vagy visszaküldi a fels˝obb rétegnek.

Id˝otúllépés: minden csomaghoz rendel egy id˝ozít˝ot, ezzel minden csomag nyomonkövethet˝o, és detektálható, ha elveszett.

Visszaigazolás fogadása: a visszaigazolás alapján megjelöli az adott csomagot, hogy sikeresen megérkezett. Ha a csomag szekvencia száma az ablakban lév˝o els˝o volt, akkor az ablakot eggyel tovább mozgatja a még vissza nem igazolt csomagok szekvencia számának irányába. Ha az ablak pozíciója változik, és van elküldetlen szekvencia számmal rendelkez˝o csomag, akkor azt elküldi.

Fogadó:

Helyesen fogadott csomag az [rcv_base, rcv_base+N-1]

intervallumba es˝o szekvencia számmal:ebben az esetben a fogadott csomag a fogadó ablakába esik, és egy szelektív visszaigazolás kerül továbbításra a küld˝o felé. Ha a csomag még korábban nem volt fogadott, akkor a pufferbe kerül. Ha a csomag szekvencia száma az ablak szerinti els˝o szekvencia számmal (rcv_base)egyenl˝o, akkor a csomag és az ˝ot megel˝oz˝o pufferelt csomagok továbbításra kerülnek a fels˝obb réteg felé. Így az fogadó ablaka tovább mozgatható. akkor is, ha a csomag már korábban vissza lett igazolva.

Egyébként:figyelmen kívül hagyja a csomagot.

A fenti m˝uködés (4.19 ábra) f˝o problémája azonban az, hogy a küld˝o és a fogadó ablaka nincs szinkronban tartva, és nem látják egységesen, hogy mely csomagok lettek fogadva, melyek nem. Ennek komoly következményei lehetnek, ha a szekvencia számok véges tartományának problémájával szembesülünk.

Vegyük példaként a seq = 0,1,2,3 szekvencia számokat, és az ablak méret legyen 3. Tegyük fel, hogy a 0, 1 és 2 sorszámmal ellátott csomagok ki lettek küldve az ablak méretének megfelel˝oen, és

pkt0 küldése pkt3 fogadása, buffer, ack3 küldése Xelveszett

pkt4 fogadása, buffer, ack4 küldése pkt5 fogadása, buffer, ack5 küldése

pkt2 fogadása; pkt2, pkt3, pkt4, pkt5 kézbesítése; ack2 küldése

4.19: A Szelektív ismétlés protokoll m˝uködés közben1

helyesen fogadta és vissza is igazolta ˝oket a fogadó fél. Ezen a ponton a fogadó ablaka a 4., 5. és 6.

csomag fölött van, amelyek szekvencia számai rendre 3, 0 és 1.

Vizsgáljuk az alábbi két szituációt (4.20 ábra):

a) az els˝o három csomag (0, 1, 2) visszaigazolása elveszik, így a küld˝o ezeket újra fogja küldeni.

A fogadó következésképp egy 0-s sorszámmal ellátott csomagot fog kapni, ami az els˝o csomag másolata lesz.

b) az els˝o három csomag (0, 1, 2) visszaigazolása sikeresen megérkezik. A küld˝o tovább mozgatja ablakát, és elküldi a 4., 5. és 6. csomagot rendre a 3, 0 és 1 szekvencia számokkal.

A 3-as sorszámú csomag elveszik, de a 0-s sorszámú helyesen megérkezik, amely új adatot tartalmaz.

4.20: A Szelektív ismétlés protokoll m˝uködése túl nagy ablak méret esetén1

Ezek az esetek világítanak rá arra a problémára, ha a szekvencia számok halmazának méretéhez

képest 1-gyel kisebb az ablak mérete. Mivel a fogadó csak szekvencia számokat érzékel, így nem tudja megkülönböztetni az 1. csomag újraküldését az 5. csomag els˝o elküldését˝ol. Erre egy megoldást adhat, ha az ablak mérete legfeljebb a szekvencia számok halmazának méretének a fele.

A továbbiakban a TCP-t vizsgáljuk, amely megoldásokat nyújt a korábban említett problémákra.