A HUNGARNET WWW cache rendszer

Máray Tamás

Folyamatszabályozási Tanszék,
Budapesti Műszaki Egyetem,
Műegyetem rakpart 9, 1111, Budapest

e-mail: maray@fsz.bme.hu

Absztrakt

LASSÚÚÚ!!!! Hányszor kiáltunk fel így, bosszankodva amikor a WWW böngészônkkel egy-egy távoli szerveren kalandozunk és alig gyôzzük kivárni amíg a kért oldal megjelenik a képernyônkön. Persze hogy lassú, miért is lenne gyors amikor - szerencsére - olyan sokan, egyre többen használjuk a hálózatot, de sajnos a távközlési vonalak kapacitása igen korlátos. A kedvenc WWW pedig sokat fogyaszt, egy-egy szép (vagy csúnya) színes oldal letöltése igen nagy mennyiségű adat átvitelét igényli. Hogyan lehet segíteni ezen a problémán? Hogyan lehet a "nagy fogyasztású" alkalmazásokat úgy használni hogy a hálózatot ne terheljük agyon? Természetesen kézenfekvô megoldás lenne a távközlési vonalak kapacitásának megfelelô bôvítése. Csakhogy ez elsôsorban pénzkérdés, mivel az ilyen vonalak ma Magyarországon hihetetlenül drágák. Másik megoldás a hatékonyság növelése, és ezzel együtt a takarékoskodás. Mivel a legnagyobb fogyasztó a WWW, a legjobb eredményt a WWW forgalom hatékonyságának javításával érhetjük el. Ennek egyik kitűnô módja a WWW cache-ek alkalmazása. Világszerte elôtérbe kerültek az ilyen rendszerek, még azon országokban is ahol lényegesen nagyobb sávszélességű Internet kapcsolatok szolgálják a felhasználókat. Magyarországon sincs semmi akadálya annak hogy minél többen igénybe vegyék ezt a korszerű eszközt és ezáltal még jobban használhassuk a Hálózatot.

Tartalom

  1. Mi az a cache?
  2. Hogyan működik a WWW cache?
  3. Hogyan használjuk?
  4. Elônyök, hátrányok
  5. A HUNGARNET cache hierarchiája
  6. Cache szerver felállítása
  7. Tapasztalatok és tervek
  8. Kapcsolódó dokumentumok


1. Mi az a cache?

A "cache" fogalommal gyakran találkozunk a korszerű számítástechnikai rendszerek leírásánál. A szó eredeti jelentése "rejtekhely", és ez némileg utal a cache funkciójára is. A cache egy olyan nagyon gyors működésű tároló, amelyben a gyakran használni kívánt adatokat átmenetileg tároljuk ("rejtjük") azért mert így azokhoz sokkal gyorsabban hozzáférhetünk mintha mindig az eredeti, lassabb elérésű forráshoz kellene nyúlnunk.

Manapság leggyakrabban a korszerű mikroprocesszor architektúrák leírásánál találkozunk a cache fogalommal. A processzor és a memória között elhelyezkedô gyorsítótárba bekerült utasítás- és adatbyte-ok hozzáférési ideje nagyságrenddel kisebb mint a normál memóriában levôké, és a hozzáférés a rendszerbuszt sem terheli. (1. ábra)


1. ábra - Cache a számítógép architektúrában

Nem csak a memória működését szokták cache-el gyorsítani. Gyakran találkozunk egyéb, pl. szoftver segítségével megvalósított cache-ekkel is. Legjellemzôbb példa erre a UNIX operációs rendszer kernelének ún. buffer-cache mechanizmusa, amely az operációs rendszer diszk kezelését gyorsítja meg. (2. ábra) Szoftver cache-eket alkalmaznak többek között a TCP/IP protokollcsomaghoz tartozó ARP (Address Resolution Protocol) és a DNS (Domain Name Service) protokollokban is.


2. ábra - Cache az operációs rendszer architektúrában

A cache mechanizmus igen hatékonyan használható az Internet információs rendszerek működésének gyorsítására és a nagy távolságú hálózati összeköttetések sávszélességével való takarékoskodásra is. Az ilyen Internet cache-ek felállítása különösen a World Wide Web rohamos elterjedésével került elôtérbe. A WWW igen nagy sávszélesség igényű alkalmazás, és a forgalom cache-elésével a működés gyorsítható, a hálózat terhelése csökkenthetô. A HTTP protokoll alkalmas arra hogy a WWW szerverek és kliensek közé ún. WWW cache-eket iktassunk. (3. ábra)

2. Hogyan működik a WWW cache?

A HTTP cache szerver használata esetén a WWW kliens (böngészô) nem közvetlenül az eredeti forráshoz fordul amikor egy objektumot le akar tölteni, hanem egy ún cache szerverhez (HTTP cache, proxy szerver). A cache szerver ellenôrzi hogy a kívánt objektum megtalálható-e a saját lokális tárolójában (a cache-ben) és ha igen, akkor azt innen adja és nem a forrás WWW szerverrôl tölti le. Ezáltal nem kell a sokszor igen leterhelt és ezért lassú működésű nemzetközi vagy belföldi nagy távolságú összeköttetéseket igénybe venni és ezzel tovább terhelni. Mivel egy cache szervert sok felhasználó használ, ezért jó esélye van annak hogy a kívánt objektumot nem sokkal elôttünk valaki már lekérte és így az bekerült a cache-be és ott megtalálható. Egyetlen független cache szerver használata esetén is a találati arány általában >20%, azaz legalább minden ötödik lekérdezni kívánt objektum a cache-ben megtalálható.

Ha az objektum mégsincs a cache-ben, akkor a cache szerver vagy más közeli cache szerverektôl próbálja meg azt letölteni (hierarchikus cache rendszer) és továbbítani a kérdezô WWW böngészô programnak, vagy az eredeti forráshoz (WWW szerverhez) fordul.


4. ábra. Független, intézményi cache szerver

Az együttműködô cache szerverekbôl nagy hatékonyságú hierarchikus cache rendszer építhetô ahol a találati arány még nagyobb mint a független cache szervereknél (gyakran 30% fölé emelkedik). A hierarchikus cache rendszerbe kapcsolt cache szerverek együttműködnek, egymással szomszéd vagy szülô-gyerek viszony alapján kommunikálnak. A párbeszédre egy külön erre a célra kifejlesztett Internet protokollt, az ICP-t (Internet Cache Protocol) használják.

A felhasználók WWW kliens programjaiban konfigurálható az hogy melyik cache szervert vegyék igénybe.

Nem csak a HTTP, hanem az FTP és gopher forgalom is cache-elhetô, és a legtöbb cache szerver és WWW kliens erre lehetôséget ad. Mindazonáltal a leghatékonyabb működés - épp a forgalom volumene miatt - a HTTP cache-eléssel érhetô el.

3. Hogyan használjuk?

A WWW cache használata igen egyszerű. A legtöbb elterjedt WWW böngészô (kliens) programot (Netscape, Mosaic, Lynx, Internet Explorer) könnyű úgy konfigurálni hogy cache szervert (proxy-t) vegyen igénybe. Figyelem: most nem az adott böngészô lokális cache-érôl van szó (amely sokkal kisebb hatékonyságú), hanem az igazi, külsô cache szerverrôl (proxy szerver)!

Az egyetlen adat amire szükségünk van az a legközelebbi, általunk is használható cache szerver domain neve és a cache szolgáltatás számára felhasznált TCP port száma. (A port szám leggyakrabban - de facto szabványként - a 3128.) A hálózati értelemben (hálózati összeköttetés szempontjából) vett legközelebbi cache szerverrôl van szó, elôfordulhat hogy földrajzi értelemben nem ez a legözelebbi. Általában egy-egy intézmény, cég üzemeltet cache szervert a saját felhasználóinak a kiszolgálására. Rendszerint egy cache szervert csak egy meghatározott, a szerver üzemeltetôje által megszabott felhasználói kör vehet igénybe. (Ennek fôként gazdasági okai vannak.) Ezért nem minden cache szervert használhat mindenki.

Tételezzük fel hogy az általunk használni kívánt cache szerver neve: cache.SLD.hu (ez fiktív név, ilyen nevű cache a valóságban nem létezik!) Ebben az esetben a cache használatának konfigurálása a népszerűbb WWW kliensek esetében a következô:

Netscape 2.*, 3.*:
Menübôl kiválasztható konfigurációs ablak:
Options -> Network Preferences -> Proxies -> Manual Proxy Configuration (View)

Az "FTP Proxy, Gopher Proxy és HTTP Proxy" mezôkbe rendre be kell írni azt hogy "cache.SLD.hu", a "Port" mezôkbe pedig azt hogy 3128.

Mosaic 2.7:
Menübôl kiválasztható konfigurációs ablak:
Preferences -> Proxy

A "HTTP Proxy Server, FTP Proxy Server, Gopher Proxy Server" mezôkbe rendre be kell írni azt hogy "http://cache.SLD.hu:3128/"

Lynx 2.4:
Állítsuk be a "http_proxy, ftp_proxy és gopher_proxy" környezeti változókat a következô értékre: http://cache.SLD.hu:3128/

MS Internet Explorer 2.10:
Menübôl kiválasztható konfigurációs ablak:
View -> Options -> Proxy

A "HTTP, Gopher és FTP" ablakokba be kell írni azt hogy "cache.SLD.hu", a kis ablakokba pedig azt hogy 3128.

A legtöbb browser esetében még megadható az is hogy mit NEM akarunk a cache-en keresztül lekérdezni (pl. a saját WWW szerverünket).

Ezt követôen böngészônk már használja is a cache-t. Ez valószinűleg meg fog nyilvánulni abban is hogy sok dokumentum gyorsabban töltôdik le mint korábban. Ha valamilyen ok miatt szeretnénk kikényszeríteni azt hogy ne a cache-be már korábban letöltött, hanem biztosan az eredeti forrásból származó legfrissebb dokumentumot kapjuk, akkor használjuk a böngészô "reload" funkcióját. Ekkor a cache újra letölti az eredeti objektumot. A cache szerverek rendszerint max. 24 órán át tárolnak egy objektumot, azt követôen - ha az megváltozott - igény esetén újra letöltik. Így semmiképpen sem fordulhat elô az hogy egy napnál régebbi dokumentumot kapjunk.

4. Elônyök, hátrányok

Minden éremnek két oldala van. Ennek is, de az egyik szerencsére sokkal fényesebb. Vizsgájuk meg tehát a cache használatából származó elônyöket és hátrányokat is.

Elônyök

  1. A WWW dokumentumok elérése gyorsabbá válik. Mivel a statisztika szerint legalább minden ötödik letöltendô dokumentum a cache-ben már megtalálható, ezek - ha az eredeti forrás nagy távolságra van, vidéki vagy nemzetközi vonalakon érhetô csak el - sokkal gyorsabban érkeznek. A többi objektum esetében a letöltés sebessége ugyanakkora mint cache használata nélkül. (A cache szerverek által hozzáadott késleltetés olyan kicsi hogy nem érzékelhetô.)

  2. A belföldi és nemzetközi Internet vonalak túlterheltségének csökkenése. Nagyon sok dokumentum ugyanis ahelyett hogy sokszor - minden hozzáféréskor - áthaladna ezeken a vonalakon, csak egyszer okoz forgalmat. A vonalak terheltségének csökkenése egyébként azt is jelenti hogy minden egyéb forgalom - az is amelyik nem cache-elhetô - gyorsulni fog!

  3. Költségmegtakarítás. Az információtovábbítás - különösen nagy távolságra - igen költséges dolog. A megtakarított forgalommal tehát jelentôs költségmegtakarítás is elérhetô.

Hátrányok

  1. Ritkán ugyan, de megtörténhet hogy egy-egy WWW oldalnak nem a legfrissebb verzióját kapjuk, hanem legfeljebb egy nappal régebbi változatát. Ez akkor fordulhat elô ha az eredeti dokumentumot megváltoztatták azóta amióta azt a cache tárolja. Mivel a cache-ek általában legfeljebb egy napig tárolják a HTML szövegeket majd szükség szerint újra frissítik, a napi gyakorisággal változó oldalak esetén okozhat ez leginkább problémát. A WWW adatbázisok dokumentumainak túlnyomó többsége azonban "statikus", azaz nagyságrendekkel ritkábban változik.

    A dinamikusan (az oldalra való hivatkozás pillanatában) generálódó dokumentumokkal nincsen probléma mert ezeket a cache-ek amúgy sem tárolják, tehát mindig az eredeti példányt töltjük le!

    Ha gyanús hogy esetleg nem a legfrissebb dokumentumot lájuk és ki akarjuk kényszeríteni az eredeti letöltését, a böngészô "reload" funkciójával ezt bármikor megtehetjük.

  2. Vannak olyan esetek amikor egy-egy dokumentum letöltése során a böngészôvel nem lehet a "reload" funkciót elôidézni. Pl. olyankor amikor nem HTML dokumentumot töltünk le hanem valami mást, rendszerint a diszkre vagy egy külsô megjelenítô program számára. (pl. amikor FTP helyett használjuk a WWW böngészônket és olyasféle file-okra hivatkozunk hogy: cikk.ps, MS-CSODA.EXE, szoftver.tar.gz, stb.) Ilyen esetekben ha újra kellene tölteni, nem használhatjuk a "reload" funkciót (mert a böngészôkben nem implementálták) és ezért mindig a cache-bôl kapjuk az esetleg elavult vagy hibás file-t. Ilyenkor az a megoldás hogy az adott file letöltése idejére ki kell kapcsolni a böngészônkben a cache használatát.

5. A HUNGARNET cache hierarchiája

A magyar kutatói IP hálózat, az NIIF által üzemeltetett HUNGARNET bekapcsolódhatnak a HUNGARNET hierarchikus WWW cache rendszerébe.


5. ábra.

Ez a cache rendszer jelenleg max. három szintű. A felsô szinten található az NIIF parent cache szerver, a cache.iif.hu> (a helka.iif.hu gépen) amelyen pillanatnyilag a Squid 1.1. verziója fut és 5 Gbyte diszket valamint 200 Mbyte operatív memóriát használ az objektumok tárolására. A cache.iif.hu szolgálja ki a nagyobb vidéki és budapesti tagintézményekben már működô lokális cache szerverek kéréseit. Egyes nagy sávszélességű összeköttetéssel rendelkezô budapesti cache szerverek egymást szomszédokként is használják.

A cache.iif.hu elegendô erôforrással és teljesítménnyel valamint jó hálózati kapcsolatokkal rendelkezik ahhoz hogy a központi cache szerepét ellássa. A fenti struktúra alkalmas arra hogy mind a külföldi, mind a belföldi vidéki vonalakon jelentôs sávszélesség megtakarítást érjünk el.

Az NIIF részt vesz a TERENA által koordinált CHOICE projektben, melynek célja a cache rendszerek építésének összehangolása, és a jövôbeli összekapcsolásuk egy nagy európai cache rendszerré.

A HUNGARNET cache hierarchiáját, az abba kapcsolódó cache szervereket a tagintézmények felhasználói vehetik igénybe, sôt, kell hogy igénybe vegyék, mivel ez a saját érdekük és a közös érdek egyaránt.

6. Cache szerver felállítása

Kinek és hol érdemes cache szervert felállítani?

Cache szerverek felállítása elsôsorban ott célszerű ahol a kisebb vagy nagyobb helyi hálózaton (LAN) többen is használják a WWW-t és a hálózatot a külvilággal (Internettel) összekötô vonal kapacitása idônként vagy rendszeresen szűknek bizonyul. Tipikusan tehát intézményekben, cégeknél, Internet szolgáltatóknál. A cache szervert a hálózat olyan pontján kell felállítani amely jó (gyors) összeköttetéssel rendelkezik a külvilág felé.

A magyarországi akadémiai hálózatot üzemeltetô ill. koordináló NIIF Műszaki Tanácsa erôteljesen szorgalmazza a tagintézményekben a lokális cache szerverek felállítását.

Mi kell egy cache szerver felállításához?

Hardver: egy megbízhatóan üzemelô, UNIX operációs rendszerű gép. Bármilyen manapság elterjedt architektúra és UNIX verzió alkalmas. (LINUX is!) Nincs szükség túl nagy CPU kapacitásra (sebességre)! A fontos az hogy legyen elegendô memória ( >= 16 Mbyte a cache számára) és diszk (min. 50 Mbyte). A szükséges diszk kapacitás függ a cache-t használók számától is, de túlságosan túlméretezni nem érdemes a diszkterületet mert attól NEM lesz jobb a cache! Nem feltétlenül szükséges a cache szerver számára külön gépet dedikálni. A cache mellett a gépen egyéb alkalmazások is futtathatók.

Szoftver: több elterjedt, akadémiai környezetben ingyen használható cache szoftver van:

  1. CERN httpd
  2. Apache httpd
  3. Harvest Cached 1.4
  4. Squid
A fentiek közül a CERN httpd használatát nem ajánljuk mivel teljesítménye lényegesen elmarad a többitôl és hierarchiában is csak korlátozva használható. A Squid 1.1 a legújabb, és a Harvest Cached 1.4 továbbfejlesztéseként jött létre.

A HUNGARNET hálózaton a Squid cache szerverek üzemeltetését szorgalmazzuk és preferáljuk!

A BME Folyamatszabályozási Tanszék anonymous FTP szervere tükrözi a Harvest Cached 1.4 és a Squid cache szerver szoftvereket és dokumentációkat.

Hogyan kell cache szervert felállítani?

A cache szerverek felállítása és konfigurálása nem túl nehéz, de feltételezi a UNIX operációs rendszer és a TCP/IP hálózat rendszergazda szintű ismeretét. A dokumentációk és a minta konfigurációk tanulmányozása után a feladat gyorsan elvégezhetô.

Az esetleg felmerülô kérdések és problémák esetén szívesen állunk rendelkezésre a következô e-mail címeken: maray@fsz.bme.hu, mohacsi@fsz.bme.hu.

A HUNGARNET tagintézményekben üzemelô cache szerver rendszergazdák számára felállítottunk egy levelezési listát is, melyre feliratkozást az elôbbi címeken lehet kérni.

Hogyan lehet a HUNGARNET cache hierarchiához csatlakozni?

Ez a HUNGARNET tagintézményekben üzemelô cache szerverek számára lehetséges. További információ a maray@fsz.bme.hu címen kapható.

7. Tapasztalatok és tervek

A HUNGARNET cache hierarchia - fél év kísérletezés és tapasztalatszerzés után - 1996 január 10-étôl üzemszerűen működik.

A tapasztalatok igen kedvezôek! A hierarchiában több mint 20 szerver üzemel, Budapesten és 9 vidéki városban (Debrecen, Miskolc, Nyíregyháza, Pécs, Szeged, Veszprém, Gödöllô, Kaposvár, Gyôr). A hierarchia maximális mélysége 3. Az egyes szerverek hatásfoka 20 és 40 százalék között mozog, a terheléstôl, idôszaktól függôen.

A hierarchia csúcsán lévô cache.iif.hu szerver (mely a helka.iif.hu gépen fut) találati aránya szintén eléri ezeket az értékeket. A szerver óránként több mint több ezer cache kérést szolgál ki. Mindennek köszönhetôen a HUNGARNET vidéki és külföldi vonalain jelentôs forgalmat takarítunk meg.

A rendszerben mindazonáltal még nagy tartalékok vannak, és ezek kiaknázása úgy lehetséges ha minél több felhasználó tér át a cache rendszer használatára és minél több lokális cache-t kapcsolunk a hierarchiába.

A HUNGARNET cache hierarchia részt vesz a TERENA által koordinált CHOICE projektben és így - a tervek szerint - a felépülô európai cache hierarchia részévé fog válni.

8. Kapcsolódó dokumentumok

(Az alábbi dokumentumok kizárólag élô Internet kapcsolat esetén érhetôk el.)

Projektek, információk

Szoftverek, dokumentációk

Cikkek


© Máray T., 1997