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
- Mi az a cache?
- Hogyan működik a WWW cache?
- Hogyan használjuk?
- Elônyök, hátrányok
- A HUNGARNET cache hierarchiája
- Cache szerver felállítása
- Tapasztalatok és tervek
- Kapcsolódó dokumentumok
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)
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.
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.
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
- 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ô.)
- 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!
- 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
- 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.
- 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.
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.
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:
- CERN httpd
- Apache httpd
- Harvest Cached 1.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ó.
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.
(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