Vyšlo v měsíčníku IT-NET, v únoru 2002
Vytištěno z adresy: http://www.earchiv.cz/b02/b0200007.php3

Load Balancing

Představme si jako příklad síť, ve které je provozován WWW server. Pokud intenzita požadavků na tento server dlouhodobě výrazně vzroste, je možné ji kompenzovat zvýšením výkonnosti samotného serveru. To ale často není možné dělat libovolně dlouho. V určitém okamžiku se stává výhodnějším použít jiné řešení - například zdvojit WWW server (nahradit jeden původní server dvěma či několika identickými zařízeními), a snažit se rozkládat mezi ně zátěž co nejrovnoměrněji, tak aby byly všechny servery vytíženy pokud možno stejně.

K vhodnému rozkladu zátěže je ale nutné správě rozpoznat, že se jedná o požadavek na WWW server na určité konkrétní adrese - což se pozná jednak ze síťové adresy uzlu a dále z toho, že příslušný požadavek je na úrovni transportní vrstvy adresován portu č. 80 (na kterém standardně čeká na svá data WWW server). K tomu je nutné již přepínání na 4. vrstvě.

Zajímavé je, že termín "přepínání na 4. vrstvě" (Layer 4 switching) vznikl právě pro označení takovéhoto způsobu fungování. Přišla s ním poprvé firma Alteon Networks, když zkonstruovala přepínač ACESwitch. Ten sice fungoval standardně na 2. vrstvě (jako klasický přepínač), ale dokázal modifikovat svá rozhodnutí i podle síťové adresy a dokonce i podle čísla portu, který používá transportní protokol TCP (či UDP) z rodiny protokolů TCP/IP).

Quality of Service

Přepínání na 4. vrstvě, neboli rozhodování o dalším směru beroucí v úvahu informace dostupné na úrovni transportní vrstvy, může být využito i pro potřeby zajištění tzv. kvality služeb. Jak jsme si již uvedli výše, tradiční způsob přepojování datových bloků v přepojovacích uzlech nebere v úvahu o jaký druh dat se jedná (které aplikaci patří) a se všemi nakládá stejně. Pokud ale přepojovací uzel dokáže rozpoznat, které aplikaci data patří, může z toho usuzovat na jejich specifické požadavky týkající se přenosu a snažit se jim vyhovět - podle možností dávat některým datům přednost či jinak je upřednostňovat před druhými. No a právě informace, dostupné na úrovni transportní vrstvy (při přepínání na 4. vrstvě), k takovémuto rozpoznávání postačují.

Jak konkrétně ale může přepínač na 4. vrstvě využít informaci o povaze dat, které právě skrz něj prochází, a "dát jim přednost"? Možností je více a tak si naznačme alespoň některé z nich.

Pokud má přepínač na výběr několik možných směrů, které všechny vedou k požadovanému cíli, může mezi nimi vybírat podle povahy dat (například data vyžadující malé přenosové zpoždění může předat dál ve směru rychlé a méně vytížené přenosové cesty, a ostatní provoz směrovat jinudy).

Pokud přepínač nemá na výběr mezi více cestami ke stejnému cíli, může se stále snažit o určitou prioritizaci, neboli o zvýšení priority některých dat oproti jiným datům na téže přenosové cestě. Může k tomu využít například příznak ToS (Type of Service) v hlavičce IP paketů na úrovni síťové vrstvy (který ale většina směrovačů ignoruje). Nebo na úrovni linkové vrstvy se může snažit využít prioritní mechanismy dle 802.1p (samozřejmě pokud jsou podporovány). Nebo může využít jiný mechanismus prioritizace, pokud jej přenosové cesty podporují.

V případě multimediálních dat, citlivých na přenosové zpoždění a pravidelnost doručování, připadá v úvahu celá škála technik řazených pod společnou hlavičku označovanou jako "traffic conditioning". Lze je chápat jako úpravy datového toku usilující o to, aby byly maximálně efektivně využity přenosové schopnosti dostupných přenosových cest. Jednou z možných technik je tzv. traffic shaping (doslova: tvarování provozu), který v případě potřeby dokáže pozdržet data před jejich odesláním (aby zátěž přenosové cesty byla rovnoměrná). Jinou technikou je traffic policing, který bez náhrady eliminuje taková data, která překračují určitou hranici za kterou by došlo k zahlcení přenosové cesty a k nerovnoměrnostem v přenosu.

Problém: replikace webových serverů - Layer 7 Switching alias content switching

Představa rozkladu zátěže (load balancingu), naznačená výše na příkladu několikanásobně replikovaného WWW serveru, má několik problematických míst. Rozkládání zátěže pouze podle informací dostupných na 4. vrstvě totiž znamená, že není možné rozlišit o jaký konkrétní požadavek na WWW server se jedná - zda jde např. o požadavek na načtení obrázku, statického HTML kódu či dynamického obsahu apod., a směrovat je ke specializovaným serverům, které by mohly být pro svou specifickou činnost optimalizovány a tudíž fungovat efektivněji. Místo toho musí být všechny instance serverů, použité pro rozklad zátěže, zcela identické a vzájemně zastupitelné.

Komplikace působí také skutečnost, že komunikace mezi WWW klientem a jeho serverem již dnes nemusí být zcela bezestavová (a může tudíž záviset na historii předchozí komunikace). Například v rámci protokolu http verze 1.1 dochází k zasílání více požadavků v rámci jedné relace. Nebo může určitá sekvence požadavků na WWW server tvořit logickou posloupnost (například při nákupu ve virtuálním obchodním domě). Jiným příkladem může být zabezpečená komunikace s WWW serverem prostřednictvím protokolu SSL - všechny tyto faktory je třeba brát v úvahu při snahách rozložit zátěž mezi více WWW serverů, více či méně specializovaných na různé činnosti. Například všechny požadavky kladené v rámci jedné SSL relace je nutné směřovat ke stejnému serveru.

Obecně jde o dosti složitou problematiku, jejíž řešení již přesahuje zaměření tohoto článku. Postačuje však k odůvodnění toho, proč může být zapotřebí "přepínání na 7. vrstvě" (Layer 7 Switching), beroucí v úvahu informace dostupné až na nejvyšší (aplikační) vrstvě: mají-li být korektně ošetřeny všechny okolnosti, které je nutné respektovat při rozdělování požadavků mezi více či méně specializované servery (tvořící různé serverové farmy, clustery či výrazněji distribuovaná řešení), je nutné dostatečně přesně rozumět těmto požadavkům a jejich podstatě. K tomu je nutné je analyzovat až na úrovni nejvyšší (aplikační) vrstvy. Proto také musí příslušný přepojovací uzel, který toto rozdělování zajišťuje, fungovat jako "přepínač na 7. vrstvě" (Layer 7 Switch).

Někdy se v této souvislosti používá i termín "content switching" (doslova: přepínání obsahu", resp. "přepínání podle obsahu", protože je v úvahu brán i obsah příslušných dat). Stejný termín se někdy používá i jako synonymum pro přepínání na 4 vrstvě (kde také v jistém smyslu jde o obsah dat, byť ne s takovou předností a detailností jako na 7. vrstvě).