Soustavy keší bojují proti zahlcení Internetu

1. 11. 1998

Sdílet

Požadavky na objem dat, která má Internet přepravit, rostou daleko rychleji než skutečné přepravní schopnosti Interne...

Požadavky na objem dat, která má Internet přepravit, rostou daleko rychleji než

skutečné přepravní schopnosti Internetu. Budování nové infrastruktury není

přitom jedinou možností. Cílem tohoto článku je seznámit s principy činnosti a

se zásadami používání vyrovnávacích serverů pro WWW, tedy zařízení, které se

snaží nepříznivý trend zvrátit lepším využitím stávajících možností Internetu.

Dříve než se ponoříme do vlastího popisu si však uděláme krátkou jazykovou

odbočku. Poměrně nemotorný český termín „vyrovnávací server pro WWW“ totiž

neoznačuje nic jiného než systém, který se v angličtině nazývá proxy-cache, v

české počítačové hantýrce pak cache-server nebo proxy-server. Můj bývalý kolega

Pavel Satrapa též razil termín WWW–silo, který sice výstižně zachycuje princip

činnosti, ale bohužel se neujal. V textu budou dále použity všechny uvedené

termíny (s výjimkou „sila“) jako synonyma.

Kde je problém?

Největší bolestí současného Internetu je (a vždy bylo) zahlcení komunikačních

tras, zejména mezinárodních linek. Zatímco počet WWW serverů, WWW klientů a

objem přepravovaných dat exponenciálně roste, síť, která by měla zajistit

provoz mezi nimi, roste navzdory úsilí poskytovatelů Internetu daleko pomaleji.

S tím, jak se Internet více a více zahlcuje, stoupá nespokojenost a zklamání

uživatelů z neefektivity a nespolehlivosti síťové technologie.

Zásadním problémem je však to, že stávající sítě nejsou optimálně využity. V

současnosti drtivá většina WWW spojení prochází přes pomalé mezinárodní spoje.

Pokud bychom dokázali udržet komunikaci v rámci rychlých lokálních či národních

sítí, bylo by možné dosáhnout daleko lepších výsledků. WWW model, ve kterém je

jeden jediný zdroj informace (server) a mnoho čtenářů rozptýlených po celé

síti, proto není z hlediska využití přenosového pásma vůbec optimální. Kdyby se

dokumenty přiblížily čtenářům, nebylo by nutné je přenášet přímo ze vzdálených

serverů, ale stačilo by je přenést z nějakého bližšího „meziskladu“. Takový

systém lze vytvořit použitím různě realizovaných vyrovnávacích pamětí,

proxy-cache serverů.

Princip činnosti

Vyrovnávací server pro WWW je tedy zařízení, které se snaží zmenšit objem dat

přenášených po Internetu službou WWW. Místo toho, aby WWW prohlížeče uživatelů

navazovaly přímá spojení se vzdálenými servery, předávají své dotazy blízkému

vyrovnávacímu serveru, který je za ně vyřídí a získané dokumenty jim předá

zpět. Současně s tím se získané dokumenty ukládají do vyrovnávací paměti

serveru; pokud se některá žádost o dokument (či obrázek nebo zvukovou stopu)

bude opakovat častěji, může vyrovnávací server použít lokální kopii a vyřídit

tak žádost rychleji, bez potřeby přenášet data ze vzdáleného WWW serveru.

Praktické zkušenosti ukazují, že s takovouto základní konfigurací není problém

ušetřit přibližně 40 % objemu provozu.

Hiearachie vztahů

V předchozím odstavci jsme hovořili o vyrovnávacím serveru bez vazeb na okolí

nenajde-li server ve své vyrovnávací paměti platnou kopii dokumentu, obrátí se

přímo na původní WWW server a použije tak pro získání dokumentu stejné

komunikační trasy, jakou by použil klient. Doba získání dokumentu je v takovém

případě stejná, odstraní se ale duplicitní dotazy. Hovoříme o ploché struktuře

cache-serverů.

Zajímavější situace však nastává v případě, kdy se vyrovnávací server v

situaci, kdy sám nemá platnou kopii dokumentu,

obrací na okolní vyrovnávací servery. Tím lze výrazně zvýšit pravděpodobnost,

že požadovaný dokument bude nalezen na některém blízkém vyrovnávacím serveru,

což zkrátí dobu přenosu dokumentu po síti.

Nejjednodušším případem je hierarchie cache-serverů: každý vyrovnávací server

je nastaven tak, aby se v případě nenalezení platné kopie dokumentu obrátil na

nadřazený cache-server. Ten může být rovněž nastaven tak, aby se obracel na

svého nadřízeného, atd. Dotaz od klienta, který do hierarchie vstoupí v

některém ze spodních pater, tak putuje stromem vztahů vzhůru tak dlouho, dokud

některý z cache-serverů nenalezne platnou kopii dokumentu, a nebo dokud dotaz

nedorazí až k vrcholu hierarchie tam již nelze vyřídit dotaz jinak než dotazem

na původní webový server.

Řetězení proxy-serverů do hierarchie má však několik vážných vad na kráse,

zejména co se týče spolehlivosti a efektivity. Z obrázku je zřejmé, že v

případě selhání některého cache-serveru dojde k odříznutí všech podřízených

cache-serverů a jejich uživatelů. Výpadek jednoho serveru tak může ohrozit

funkčnost velké části systému; výpadek serveru na vrcholu pak znemožní činnost

celé soustavy.

K nevýhodám patří též to, že klasická hierarchie předává požadavky pouze směrem

vzhůru, ale nikdy vodorovně či dolů. Pokud použijeme situaci znázorněnou na

obrázku, v případě, že platná kopie dokumentu požadovaného uživatelem

prostřednictvím serveru Cache-12 je uložena např. v Cache-21, nebude pro

vyřízení dotazu využita. Důvod je zřejmý dotaz putuje pouze směrem vzhůru a

tudíž neprojde přes cache-server, který má platnou kopii dokumentu.

K výhodám hierarchie naopak patří to, že neklade na zúčastněné cache-servery

žádné dodatečné komunikační nároky. Hierarchii je tak možné sestavit i z

prostých cache-serverů, které nepodporují možnost vytvořit sofistikovanější

strukturu, či ze serverů od různých dodavatelů, které spolu neumí jinak

komunikovat. Dvojúrovňovou hierarchii lze též využít tehdy, pokud existuje

pouze jediná rozumná cesta do Internetu (například komutovaná linka) a

realizace složitějších struktur by byla zbytečným luxusem.

Složitější struktura

cache-serverů

Složitější struktura vzájemně provázaných cache-serverů se nazývá cache-mesh.

Tvoří ji vyrovnávací servery s definovanými vzájemnými sousedskými vztahy.

Sousedící cache-servery se podle míry spolupráce dělí na dvě kategorie: na

rodiče a sourozence. Od sourozenců je možné získat pouze dokumenty, které již

mají ve vyrovnávacích pamětech. Rodič může též fungovat jako nadřazený server v

hierarchii vede přes něj cesta k nenalezeným dokumentům.

Vyrovnávací server, který obdrží žádost o dokument, jehož platná kopie není

uložena ve vyrovnávací paměti, se tedy nejprve zeptá svých sousedících

cache–serverů, zda ho náhodou nemají. Pokud od některého souseda obdrží

kladnou odpověď, získá dokument od něj (respektive od souseda, který jako první

kladně odpověděl). Pokud žádný soused požadovaný dokument nemá, obrátí se

server na některého z rodičů. Výběr rodičů je ovlivněn rychlostí jejich odezvy,

předkonfigurovanou důležitostí a dodatečnými pravidly, beroucími v potaz např.

geografické umístění cílového WWW serveru.

Výhodou uspořádání vyrovnávacích serverů do „propletence“ je vysoká flexibilita

konfigurace. S pomocí sousedských vazeb je možné požadované dokumenty hledat na

blízkých vyrovnávacích serverech dříve, než dojde k jejich získání od zdroje.

Rodičovské vazby umožňují předávat neuspokojené požadavky dále strukturou

serverů; v případě selhání rodiče však nedojde k „odstřižení“ všech jeho

podřízených, protože výpadek rodiče lze detekovat tím, že přestane odpovídat na

dotazy. V takovém případě podřízený server použije jiného rodiče (s nižší

preferencí), nebo získá dokument sám přímo od zdroje uživatel tedy selhání

nadřízeného serveru vůbec nezaznamená. Pravidla výběru rodičů umožňují

rozkládat dotazy na několik nadřízených serverů, což snižuje jejich zatížení a

zlepšuje odezvu.

Nevýhodou struktury cache-mesh, vyplývající z probíhající komunikace mezi

sousedícími servery, je nepatrné zvýšení počáteční prodlevy před získáním

dokumentu. Zatímco celková doba čekání na dokument je při použití této

struktury v průměru kratší než při jeho získání z WWW serveru, díky úvodní

komunikaci mezi cache-servery se před očima uživatele chvíli „nic neděje“, což

subjektivně působí jako zpomalení přístupu k Webu. Některé vyrovnávací servery

(jmenovitě poslední verze populárního programu Squid) tomu předchází tím, že

spolupracující vyrovnávací servery si v předstihu vymění seznamy lokálně

uložených dokumentů. Tím se odbourá nutnost počátečního zjišťování, kteří že

sousedi mají kopii požadovaného dokumentu, a je možné se obrátit přímo na

souseda, v jehož seznamu tento dokument figuruje.

Stárnutí dokumentů

Každý cache-server, dříve než předloží klientovi nalezenou lokální kopii

dokumentu, musí nejprve zvážit, zda je tato kopie čerstvá. Ani uživatelé, ani

správci WWW serverů nemají zájem na tom, aby vyrovnávací servery stohovaly

dokumenty nekonečně dlouho chcete-li si k ranní kávě přečíst poslední novinky

ze světa, tři týdny stará titulní stránka vašeho oblíbeného internetového

deníku vás jistě příliš nepotěší. Musí tedy existovat nástroje, jimiž lze

stanovit dobu platnosti kopie.

V ideálním případě by měl určit životnost dokumentu sám jeho autor, protože je

nejvíce fundovaný o ní rozhodnout. Stačí, aby do záhlaví dokumentu uvedl

(pomocí HTTP hlavičky Expires), do kdy může být tento dokument ukládán ve

vyrovnávacích pamětech. Cache-servery pak mohou po celou dobu životnosti

používat bez obav lokální kopie; očekává se, že po vypršení platnosti bude

dokument vystřídán novějším. Toto schema se výborně hodí na pravidelně

publikované zprávy, bulletiny, internetové noviny a časopisy.

Jiný způsob, jakým mohou autoři ovlivnit ukládání dokumentů ve vyrovnávacích

pamětech, je stanovit maximální dobu, po kterou je povoleno ponechat dokument

na cache-serveru (HHTP hlavička Cache-Control: max-age). Po uplynutí této doby

je třeba znovu přenést dokument ze serveru. Použitím tohoto způsobu se odstraní

opakované přenosy dokumentu z WWW serveru a současně je zaručeno, že klienti

budou moci vidět změny provedené v dokumentu maximálně do doby specifikované

tímto parametrem.

Ve většině případů však autoři bohužel životnost svého dokumentu neuvádějí.

Vyrovnávací servery si proto s ověřením čerstvosti musí poradit po svém. Často

používanou metodou (a nutno říci, že rozumnou), je určení morálního stáří

dokumentu. Morální stáří se počítá jako poměr mezi dobou, kterou dokument

strávil ve vyrovnávací paměti, a celkovým stářím dokumentu. Pokud je tento

poměr menší než hodnota určená v konfiguraci vyrovnávacího serveru, považuje se

dokument za čerstvý, v opačném případě za prošlý. Tím je zajištěno, že často se

obměňující dokumenty stráví ve vyrovnávací paměti jen chvilku, zatímco ty

neměnné mohou být uloženy podstatně déle (viz tabulka na následující straně).

Zjistí-li vyrovnávací server, že jeho kopie dokumentu není čerstvá, pokusí se

přímo na původním WWW serveru ještě ověřit, zda se originál dokumentu změnil od

doby jeho přenesení na vyrovnávací server (dotazem s hlavičkou

If-Modified-Since). Pokud se dokument od přenesení nezměnil, WWW server jen

krátce odpoví „dokument nezměněn“; vyrovnávací server tak může předložit

klientovi lokální kopii dokumentu, neboť její čerstvost právě ověřil u

autoritativního zdroje. Pokud je na webovém serveru vystavena nová verze

dokumentu, cache-server ji přenese, předloží klientovi a uloží si ji coby

čerstvou do své vyrovnávací paměti.

Jak na to?

Zřízení vlastního cache-serveru není složité volně dostupný je např. program

Squid, na trhu jsou též k dispozici komerční implementace. Zdálo by se tedy, že

masovému nasazení cache-serverů nestojí nic v cestě. Ale…

Problémy

Mají-li být vyrovnávací servery efektivní, je nutné, aby je využívalo co

nejvíce uživatelů. Konfigurace použití vyrovnávacích serverů v současných

prohlížečích je triviální, zisk z jejich používání nesporný; přesto řada

uživatelů nebude ochotna cache-servery používat možná to nedovedou, možná jsou

pohodlní, možná mají principiální výhrady proti tomu, aby jejich komunikace se

světem procházela více systémy, než je nutné.

Stejně tak poskytovatelé obsahu, tedy správci WWW serverů, nejsou vždy z

používání vyrovnávacích serverů nadšeni. Cache-servery sice snižují zátěž

jejich webových serverů, ale současně ovlivňují statistiky přístupů a reklam,

na nichž závisí život komerčně provozovaných serverů.

Uživatelé

Základním úkonem, který musí každý uživatel provést, je nastavit svůj WWW

prohlížeč tak, aby směroval své požadavky na vyrovnávací server. V optimálním

případě by měl být jeho prohlížeč přednastaven správcem sítě, či by se

nastavení mělo provést automaticky po instalaci programů pro připojení na

Internet. Někdy si však musí uživatel nastavit přístup k vyrovnávacímu serveru

ručně. Je to možné provést hned několika způsoby.

První, základní způsob, jak

nastavit WWW prohlížeč, je ručně ho nasměrovat na vyrovnávací server uvedením

jeho adresy a portu. V grafických prohlížečích je tato volba zpravidla pod

volbou „Připojení“; je třeba vyplnit položky obsahující adresu vyrovnávacího

serveru a port, na kterém server běží (zpravidla se používají čísla portů 3128,

8080 nebo 81) oba tyto údaje by měl dát uživatelům k dispozici správce sítě

nebo poskytovatel internetového připojení.

Webový prohlížeč se tak vlastně stává nejnižším uzlem hierarchie cache-serverů,

přičemž uvedený vyrovnávací server se stává jeho nadřízeným. Druhý, lepší

způsob, jak lze nakonfigurovat WWW prohlížeč, spočívá v takzvané

autokonfiguraci. Do nastavení WWW prohlížeče se zapíše lokátor URL, který

ukazuje na soubor s jednoduchým programem v JavaScriptu. Před tím, než začne

prohlížeč komunikovat s Internetem, si nejprve načte tento program z WWW

serveru. Pro každý požadovaný dokument pak pomocí tohoto programu určí, na

který vyrovnávací server se má obrátit. Tato metoda je výhodná hned z několika

důvodů: především, uživatelé si budou pamatovat URL autokonfiguračního programu

lépe než jméno cache-serveru a číslo patřičného portu. Je též možno centrálně

měnit způsob používání cache-serveru: zatímco např. při změně cache-serveru by

u ručního způsobu nastavení bylo nutné změnit nastavení všech prohlížečů, u

autokonfigurace stačí změnit jediný soubor autokonfigurační program. Dále je

možné napsat autokonfigurační skript tak, aby v případě výpadku jednoho

cache-serveru začal automaticky používat jiný, a to zcela samočinně. Konečně,

je možné vytvořit i takový skript, který automaticky rozkládá zátěž na několik

vyrovnávacích serverů.

Třetí způsob, jak přesměrovat WWW dotazy na vyrovnávací server, se nazývá

transparentní přesměrování. To se odehrává bez aktivní účasti (a často i bez

vědomí) uživatele. Ve WWW prohlížečích není při tomto způsobu potřeba nic

zapínat ani dopisovat. Přesměrování totiž probíhá zcela samočinně na

směrovačích poskytovatele přístupu k Internetu. Tím je možné bez další

administrativní námahy zvýšit počet uživatelů využívajících cache-server;

výhodou i nevýhodou této metody je, že před ní není úniku.

Použití vyrovnávacích serverů může ale v některých případech komplikovat

uživatelům život. Nejtypičtějším příkladem je přístup na placené komerční WWW

servery. Některé si totiž kromě přístupového jména a hesla uživatele pamatují i

adresu počítače, ze kterého je povolen přístup při použití vyrovnávacího

serveru však bude se serverem komunikovat nikoliv počítač uživatele, ale

cache-server, což může způsobit odmítnutí přístupu. Ve většině případů se dají

tyto problému řešit buď dohodou se správcem WWW serveru, nebo změnou nastavení

prohlížeče tak, aby se provoz s takovým WWW serverem nesměroval přes

vyrovnávací server.

Vzácně též může dojít k tomu, že do vyrovnávací paměti cache–serveru se uloží

neúplná kopie dokumentu. To se může stát v situaci, kdy cache-server komunikuje

se serverem, který neumí před přenosem dat oznámit jejich celkovou délku, a

následně v průběhu přenosu dojde k rozpadu spojení. Zkrácená verze dokumentu

potom bude opakovaně předkládána uživatelům coby autentická lokální kopie. V

takové situaci obvykle stačí, aby kterýkoliv z uživatelů stiskl ve svém

prohlížeči Refresh/Reload; nově přenesená úplná kopie stránky se pak ve

vyrovnávací paměti uloží namísto té zkrácené, a vše zase bude fungovat správně.

Poskytovatelé obsahu

Autoři WWW stránek a správci webových serverů mají sami největší šanci ovlivnit

způsob ukládaní svých dokumentů ve vyrovnávacích serverech. Cache-servery

snižují zatížení populárních WWW serverů a přetížených komunikačních linek k

nim vedoucích, na druhou stranu však mohou zkreslovat statistické údaje, nutné

pro komerční provoz. K všeobecné spokojenosti čtenářů i správců ve většině

případů stačí vhodně nastavit údaje o povolení či zákazu ukládát dokumenty na

cache-serverech.

Nejtvrdším nástrojem, který mají poskytovatelé obsahu k dispozici, je úplný

zákaz ukládání dokumentu ve vyrovnávacích pamětech cache-serverů i WWW

prohlížečů: použití HTTP hlavičky Pragma: no-cache. Nejpřípadnějšími kandidáty

pro ni jsou výstupy z CGI nebo ASP skriptů, které se mění s každým dotazem,

generátory odkazů pro reklamní proužky a další. Je vhodné podotknout, že

většina vyrovnávacích serverů i bez použití této hlavičky neukládá dokumenty, v

jejichž URL se buď vyskytuje řetězec „cgi-bin“ nebo znak „?“, nebo obsahují

cookies, což jsou typické příznaky dynamicky generovaných stránek.

O možnosti řídit dobu platnosti a maximální dobu ukládání pomocí HTTP hlaviček

jsem se již zmínil v souvislosti s určováním čerstvosti dokumentů. Právě v

uvážlivém používání těchto hlaviček leží skryt hlavní přínos vyrovnávacích

serverů: často měnící se dokumenty je možno uložit jen na krátkou dobu,

statické grafické prvky ale na mnohem delší, titulní stránka se nezmění do

zítřka, ceník je aktuální až do konce měsíce…

Spolu s aktivním úsilím autorů by WWW servery měly dodržovat několik dalších

pravidel usnadňujících spolupráci s vyrovnávacími servery. Jejich vyčerpávající

seznam je uveden na stránkách Cache Now!, které popularizují rozšíření této

technologie. Uvedu alespoň pár těch nejdůležitějších:

WWW servery by měly mít správně nastavené a se sítí synchronizované vnitřní

hodiny, aby bylo možné správně určit čas, kdy byl dokument vytvořen.

Dynamické dokumenty generované CGI nebo ASP skripty by měly být cache-friendly,

tj. vybavené platnými hlavičkami o životnosti dokumentu a o poslední modifikaci

údajů. Cesta k nim by neměla obsahovat řetězec cgi-bin, a měly by se vyvarovat

triků s obměnami obsahu v závislosti na typu WWW prohlížeče.

Pokud WWW server používá proužkovou reklamu nebo obměňující se grafické motivy,

je velmi vhodné povolit ukládání

ve vyrovnávacích pamětech pro všechny grafické prvky; ukládat se nebude pouze

dynamicky generovaný odkaz na grafiku.

WWW servery by měly omezit používání cookies.

Caching v tuzemsku

Vyrovnávací servery se v Čechách již několik let používají, a to v poměrně

širokém měřítku. Jejich nasazení však většinou neprovázela patřičná publicita

ze stran poskytovatelů. O existujících strukturách cache-serverů se toho proto

ví poměrně málo.

Asi největší soustava cache-serverů v ČR je realizována na akademické síti

TEN-34 CZ. Tvoří ji devět vyrovnávacích serverů umístěných v osmi velkých

univerzitních městech České republiky, propojených linkami o rychlosti 34 a 155

Mb/s. WWW komunikace univerzit, účastnících se na tomto projektu, je směrována

(často pomocí transparentního přesměrování) na jednotlivé vyrovnávací servery.

Díky vysokorychlostní síti se celá soustava chová jako jeden velký

distribuovaný server. Cílem vytvoření této soustavy bylo pozorovat její chování

pod reálnou zátěží, optimalizovat ji modifikací vztahů mezi jednotlivými

servery, a následné vypracování vědecké dokumentace, popisující provoz a

chování takovéto distribuované struktury. Technické parametry této struktury

serverů jsou poměrně úctyhodné celkový diskový prostor, vyhrazený pro

vyrovnávací paměti, překračuje 150 GB, přenesený objem dat se pohybuje v řádech

desítek gigabajtů za den. Dosažená úspěšnost úspory dat se pohybuje kolem 50 %.

I komerční poskytovatelé Internetu si uvědomují, jaký přínos pro ně vyrovnávací

servery znamenají, a proto téměř všichni vytvořili více či méně košaté

soustavy, přes které směrují provoz svůj i svých zákazníků. Možnost vzájemné

komunikace cache-serverů a sdílení dat ve vyrovnávacích pamětech otvírá nové

možnosti ve spolupráci jinak ostře konkurenčních společností.

8 2820 / pah