COMPUTERWORLD
Specializovan² t²denφk o v²poΦetnφ technice
o Internetu
(CW 43/96)

Proxy cache

Ji°φ T. Pelech

ProblΘmy v pavuΦin∞

Celosv∞tovß pavuΦina (World--Wide Web) se stala nejoblφben∞jÜφ a nejsnadn∞ji ovladatelnou slu₧bou Internetu. Ka₧d²m dnem p°ib²vajφ po celΘm sv∞t∞ tisφce nov²ch strßnek zapojen²ch do WWW. V poslednφ dob∞ se tento zda°il² systΘm zaΦφnß prosazovat i ve vnitropodnikovΘm informaΦnφm systΘmu -- Intranetu. ╚lov∞k brouzdajφcφ PavuΦinou m∙₧e narazit na dva zßkladnφ problΘmy, kterΘ jsou s nφ v souΦasnosti spjaty. Tφm prvnφm a v²znamn∞jÜφm je rozloha a topologie Internetu. Pokud si chceme prohlΘdnout n∞jakou strßnku nebo zkopφrovat n∞jak² soubor, m∙₧e se nßm za nep°φzniv²ch okolnostφ stßt, ₧e budeme muset Φekat n∞kolik minut (n∞kdy i vφce ne₧ Φtvrt hodiny). S druh²m problΘmem se setkajφ pouze cestovatelΘ Internetem, kte°φ jsou p°ipojeni do sφt∞ ve svΘ organizaci, odd∞lenΘ od vn∞jÜφho sv∞ta jak²msi zßtarasem (tzv. po₧ßrnφ zdφ). Oba tyto problΘmy je mo₧no pom∞rn∞ jednoduÜe zmφrnit.

Proxy

Proxy znamenß v angliΦtin∞ zmocn∞nec nebo zßstupce. Prozatφm jsem neslyÜel, ₧e by existoval oficißlnφ Φesk² nßzev, ale t°eba Φasem n∞kdo vymyslφ n∞co vtipnΘho, co se ujme.

V²raz se v sφtφch pou₧φvß pro rozhranφ, kterΘ vykonßvß urΦitΘ akce v sφti ve jmΘnu n∞koho jinΘho. Vyu₧φvß se zejmΘna v Intranetu ve spojenφ s po₧ßrnφ zdφ (firewall), kdy umo₧≥uje ·Φastnφk∙m vnit°nφ podnikovΘ sφt∞ vyu₧φvat urΦit²ch slu₧eb sφt∞ vn∞jÜφ. Obecn∞ vzato -- vy ze svΘho poΦφtaΦe mßte p°φstup do Internetu, ale ·Φastnφci zapojenφ mimo vßÜ podnik nemajφ p°φstup k vaÜemu poΦφtaΦi. Server typu proxy m∙₧e b²t samoz°ejm∞ nastaven tak, ₧e vßm umo₧nφ p°φstup jen k n∞kter²m slu₧bßm vn∞jÜφ sφt∞ nebo dokonce jen k urΦitΘ Φßsti jednΘ slu₧by. Tento server ₧ßdnß p°enßÜenß data neuchovßvß, pouze si o nich m∙₧e vΘst zßznamy. Bez prost°ednφka v podob∞ serveru proxy se z uzav°enΘ sφt∞ nikam nedostanete.

Proxy cache

Cache znamenß v angliΦtin∞ skladiÜt∞ nebo ·kryt, tak₧e proxy cache bychom mohli p°elo₧it jako zmocn∞nΘ skladiÜt∞ nebo snad jednoduÜeji mezisklad. Ani zde vÜak prozatφm neexistuje Φesk² v²raz.

Jak ji₧ nßzev napovφdß, pracuje proxy cache jako vßÜ zßstupce ve v∞ci p°enosu dat v Internetu. Jeho zßb∞r vÜak nenφ tak Üirok² jako u proxy, proto₧e se zam∞°uje pouze na "datov∞ orientovanΘ" slu₧by -- World Wide Web, Gopher a FTP-slu₧by, kterΘ zvlßdajφ vÜechny znßmΘ prohlφ₧eΦe WWW.

Jeho princip je pom∞rn∞ jednoduch² - po₧ßdßte-li jej o obstarßnφ n∞jakΘho souboru, pokusφ se o to jak nejrychleji dovede. Nejd°φve se podφvß do seznam∙ objekt∙, kterΘ mß prßv∞ v operaΦnφ pam∞ti. Kdy₧ tam vßmi po₧adovan² objekt nenalezne, poohlΘdne se po svΘm diskovΘm prostoru. Pokud ani tam neusp∞je, bu∩ o tento soubor po₧ßdß okolnφ servery poskytujφcφ stejnou slu₧bu (v p°φpad∞ hierarchickΘ struktury, o kterΘ si povφme za chvφli), nebo se obrßtφ p°φmo na p∙vodnφ zdroj dat. V tom p°φpad∞ pak tento soubor jednak posφlß vßm a zßrove≥ naΦφtß do svΘ zßsobßrny pro dalÜφ zßjemce.

Rychlost dodßvky tedy zßvisφ na tom, jestli u₧ si tent²₧ soubor vy₧ßdal n∞kdo p°ed vßmi nebo ne. Obecn∞ platφ, ₧e mßte Üanci v pr∙m∞ru jedna ku t°em, ₧e vßmi po₧adovan² soubor mß proxy cache ve svΘm zßsobnφku.

Tak₧e Φφm blφ₧ v topologii sφt∞ je vßmi po₧adovan² soubor, tφm rychleji byste ho m∞li dostat. Pak nemusφte Φekat desφtky minut, ale t°eba jen desφtky vte°in.

Jak je vid∞t, je za pomoci proxy cache mo₧no °eÜit oba problΘmy zmφn∞nΘ na zaΦßtku tohoto Φlßnku. Proxy cache m∙₧e plnit ·lohu meziΦlßnku p°i propojenφ vnit°nφ sφt∞ s okolnφm sv∞tem, kdy nejen umo₧≥uje zßjemc∙m uvnit° p°istupovat k soubor∙m venku, ale zßrove≥ i Üet°it Φas a p°enosovΘ pßsmo, proto₧e p°i dalÜφm p°φstupu k tΘmu₧ souboru nemusφ b²t p°enßÜen z p∙vodnφho mφsta, ale m∙₧e se pou₧φt jeho kopie z mφstnφ zßsobßrny. Podobnou cestu mohou (v tomto p°φpad∞ dobrovoln∞) zvolit i b∞₧nφ ·Φastnφci Internetu. Pokud si ve svΘm prohlφ₧eΦi nastavφ topologicky nejbli₧Üφ server proxy cache, mohou zφskßvat po₧adovanΘ soubory mnohem rychleji ne₧ p°φmo od zdroje.

Co se t²Φe doby uchovßvßnφ, ta zßvisφ na n∞kolika faktorech. Jednφm z nejv²znamn∞jÜφch je velikost diskovΘho prostoru proxy cache vymezenΘho pro uklßdßnφ soubor∙. Pokud se disk p°iblφ₧φ napln∞nφ, je spuÜt∞n proces, kter² vyma₧e nejstarÜφ, nejmΘn∞ pou₧φvanΘ a nejv∞tÜφ soubory. Druh²m kritΘriem je nastavenφ pro jednotlivΘ typy soubor∙. Sprßvce proxy cache m∙₧e urΦit, jak dlouho se mß uchovßvat soubor urΦitΘho typu. V nov∞jÜφch verzφch server∙ a prohlφ₧eΦ∙ WWW je takΘ mo₧no nastavit, jak Φasto se mß kontrolovat aktußlnost p°enßÜenΘho souboru nebo za jak dlouho vyprÜφ jeho platnost. Po tΘto dob∞ je soubor pova₧ovßn za neaktußlnφ a p°i nejbli₧Üφ p°φle₧itosti je nahrazen novou verzφ (je-li to t°eba) nebo vymazßn.

Prav∞k

MyÜlenka proxy cache se zrodila ve stejn²ch mφstech (a pravd∞podobn∞ i ve stejn²ch hlavßch) jako myÜlenka World Wide Web -- v proslulΘm Üv²carskΘm v²zkumnΘm ·stavu CERN (Evropskß laborato° pro fyziku Φßstic). Prvnφm v²znamn∞ji rozÜφ°en²m serverem nabφzejφcφm proxy cache byl CERN httpd (hypertext transfer protocol daemon), jeho₧ primßrnφm ·kolem bylo pracovat jako server WWW, ale kter² krom∞ toho zvlßdne i ·lohu serveru proxy cache. Za to, ₧e se v souΦasnosti u₧ tΘm∞° nepou₧φvß, mohou dv∞ okolnosti. Tou prvnφ je jeho p°φliÜnß univerzßlnost -- pokud mß n∞jak² program plnit dv∞ r∙znΘ (i kdy₧ v lecΦem podobnΘ) ·lohy, b²vß to zpravidla na Ükodu obou. V tomto p°φpad∞ je CERN httpd ve srovnßnφ se svou konkurencφ pomalejÜφ, a to v obou oblastech. A svΘ sehrßla i skuteΦnost, ₧e v²voj tohoto programu se zastavil ji₧ p°ed zhruba dvaceti m∞sφci. To sice nenφ v lidskΘm ₧ivot∞ p°φliÜ dlouhß doba, v Internetu to vÜak znamenß n∞kolik generacφ.

Myslφm, ₧e CERN httpd svou ·lohu splnil a v²znamn∞ pohnul v²vojem Internetu v dnes nejpopulßrn∞jÜφ oblasti -- Celosv∞tovΘ pavuΦin∞. I kdy₧ je stßle pou₧φvßn, jeho podφl na celkovΘm poΦtu server∙ ka₧d²m dnem klesß.

Harvest, Squid...

ZaΦßtkem 90. let vznikl na KolorßdskΘ univerzit∞ (za podpory ARPA -- Agentura pro pokroΦilΘ v²vojovΘ projekty) projekt Harvest, kter² si kladl za cφl zmapovat a zindexovat co nejvφce dat v Internetu. V rßmci tohoto projektu vznikl jak²si vedlejÜφ produkt, kter² dostal prostΘ jmΘno cached (cache daemon) a kter² fungoval jako proxy cache. S postupem doby se ukßzalo, ₧e v²sledek projektu nestaΦil v²voji Internetu, byl p°φliÜ d∙kladn² a p°φliÜ univerzßlnφ, a tφm i t∞₧kopßdn². V souΦasnΘ dob∞ se pou₧φvß jen okrajov∞, na menÜφch rozlohßch. Nedokßzal Φelit konkurenci v podob∞ indexovacφch robot∙, jak²mi jsou nap°φklad Lycos, Alta Vista Φi Infoseek.

A tak se cached paradoxn∞ stal s tisφci instalacφ po celΘm sv∞t∞ nej·sp∞Ün∞jÜφm modulem Harvestu. Krom∞ ·zkΘ specializace a povedenΘho jßdra dostal do vφnku i jednu ze zßkladnφch myÜlenek projektu -- mo₧nost vytvß°et hierarchickou strukturu s r∙zn²mi vzßjemn²mi vztahy jednotliv²ch Φlen∙. A navφc -- jeho nespornou konkurenΦnφ v²hodou byla cena -- m∙₧e jej toti₧ pou₧φvat kdokoli k jak²mkoli ·Φel∙m zcela zdarma (na zßklad∞ licence GNU -- Libovoln² u₧ivatel sφt∞).

Proto₧e podpora projektu Harvest ze strany ARPA zaΦßtkem letoÜnφho skonΦila, rozhodli se jeho auto°i, ₧e se zam∞°φ na nej·sp∞Ün∞jÜφ Φßst -- cached -- kterou upravφ a zaΦnou ji nabφzet za penφze. Aby vÜak nep°iÜli zkrßtka vÜichni u₧ivatelΘ, kte°φ si nemohou dovolit za toto programovΘ vybavenφ platit, ujal se jeden z Φlen∙ p∙vodnφho t²mu ·dr₧by a koordinace dalÜφho rozvoje cached, kter² bude i nadßle poskytovßn vÜem zßjemc∙m bezplatn∞. Jeliko₧ p∙vodnφ nßzev z∙stal komerΦnφ v²vojovΘ v∞tvi, bylo pot°eba vymyslet novΘ jmΘno. A tak vznikl Squid (olihe≥, krakatice). V letoÜnφm roce sφdlφ v jednom ze st°edisek NLANR (Nßrodnφ laborato° pro aplikovan² v²zkum sφtφ) a je finanΦn∞ podporovßn NSF (Nßrodnφ v∞deckß nadace).

... a ti druzφ

Poznatek, ₧e proxy cache mß budoucnost, vedl i dalÜφ t²my a firmy k v²voji tohoto programu. A tak jej nynφ nabφzφ nejen komerΦnφ firmy jako Netscape Communications (Netscape Proxy Server) nebo Microsoft (Catapult), ale stal se i souΦßstφ nejrozÜφ°en∞jÜφho nekomerΦnφho serveru WWW -- Apache.

Vzhledem k vzßjemnΘ nekompatibilit∞ a nejasnosti ve standardech vÜak prozatφm mezi sebou nedokß₧ou konkurenΦnφ servery ·zce spolupracovat. Jedinou v²hodou m∙₧e b²t pou₧itelnost v operaΦnφm systΘmu Windows NT, kterou prozatφm nenabφzφ ani cached, ani Squid. Co se t²Φe Apache, podle mΘho nßzoru m∙₧e dopadnout obdobn∞ jako CERN httpd, proto₧e bude p°φliÜ univerzßlnφ na to, aby mohl b²t nejlepÜφ v obou oblastech zßrove≥.

Hierarchickß struktura

Velkou v²hodou cached i jeho nßsledovnφka Squid je mo₧nost vytvß°et sφ¥ t∞chto server∙ na nejr∙zn∞jÜφ ·rovni. Nejpropracovan∞jÜφ je z°ejm∞ sφ¥ pracoviÜ¥ NLANR ve Spojen²ch stßtech, kde jsou nap°φΦ kontinentem rozmφst∞ny servery, vzßjemn∞ propojenΘ vysokorychlostnφmi linkami a specializovanΘ v₧dy jen na urΦitou oblast.

JednotlivΘ servery zapojenΘ do struktury mohou mezi sebou mφt bu∩ vztah rodiΦ-potomek, nebo soused-soused, p°iΦem₧ je nejvhodn∞jÜφ rozmφstit jednotlivΘ servery v zßvislosti na topologii sφt∞. I zde platφ, ₧e mΘn∞ je n∞kdy vφce. Nenφ vhodnΘ zapojit do hierarchie p°φliÜ mnoho server∙ rozlo₧en²ch po celΘ sφti. NejlΘpe je komunikovat pouze s bezprost°ednφmi sousedy ve vaÜφ topologii.

Rozdφl mezi vztahem potomek-rodiΦ a soused-soused si vysv∞tlφme na nßsledujφcφm p°φkladu. Pokud vßÜ server nemß vßmi po₧adovan² soubor, poptßvß se po n∞m u vÜech soused∙ i rodiΦ∙, kterΘ mß pro danou oblast nastavenΘ (vztah potomek-rodiΦ je tedy pouze jednosm∞rn²). Jakmile dostane od kterΘhokoli prvnφ kladnou odpov∞∩, vy₧ßdß si data od n∞j. U ostatnφch si pouze poznamenß rychlost reakce. Pokud vÜak po₧adovan² soubor nemß k dispozici ₧ßdn² ze server∙ v okolφ, po₧ßdß o jeho obstarßnφ nejrychleji reagujφcφho rodiΦe. Pro r∙znΘ cφlovΘ adresy m∙₧ete mφt nastavenΘ r∙znΘ rodiΦe i sousedy. Zßrove≥ m∙₧ete mφt nastaveno vφce rodiΦ∙ i soused∙ pro jednu oblast.

Jak u₧ jsem se zmi≥oval d°φve, tuto strukturu je mo₧nΘ vytvo°it jen za pomoci server∙ odvozen²ch od cached, p°iΦem₧ plnΘho vyu₧itφ vÜech mo₧nostφ lze dosßhnout jen propojenφm jednoho typu (tedy bu∩ pouze komerΦnφch cached nebo pouze nekomerΦnφch Squid).

Proxy cache u nßs

V∞tÜina poskytovatel∙ Internetu v ╚eskΘ republice nabφzφ sv²m zßkaznφk∙m mo₧nost vyu₧φvat proxy cache, kterou lze nastavit v prohlφ₧eΦi WWW. Informovanost je vÜak prozatφm natolik nφzkß, ₧e se tato v²hodnß pom∙cka u nßs doposud p°φliÜ nepou₧φvß.

S ohledem na skuteΦnost, ₧e nejv∞tÜφ poskytovatelΘ Internetu u nßs (a₧ na malΘ v²jimky) stßle jeÜt∞ nejsou vzßjemn∞ propojeni na naÜem ·zemφ (v n∞kter²ch p°φpadech p°es Φßst Evropy, v t∞ch extremnφch a₧ p°es USA), je prozatφm p°edΦasnΘ navrhovat provßzßnφ server∙ proxy cache do nßrodnφ sφt∞.

Pokud se vßm nßhodou donese adresa n∞jakΘho serveru typu proxy cache, nejprve si rad∞ji zjist∞te, jak daleko od vßs (nikoli geograficky, ale internetov∞) je. Pokud by nebyl p°φmo ve vaÜem p°φpojnΘm bodu, nebude pro vßs asi p°φnosem, ale ztrßtou.


| <<< | CW o Internetu | COMPUTERWORLD | IDG CZ homepage |