Vyšlo na serveru ISDN, 22.1.2001
Vytištěno z adresy: http://www.earchiv.cz/b01/b0122001.php3

Content switching

Tradiční přepínač (switch) pracuje na úrovni 2. vrstvy ISO/OSI. Dnes již existuje přepínání na úrovni 3 a 4. vrstvy, a nastupuje dokonce i přepínání na úrovni 7. vrstvy ISO/OSI, označované nejčastěji jako "content switching". O co jde a jaký problém to řeší?

Tradiční způsob fungování počítačových sítí vycházel z toho, že identita dvou komunikujících stran (nejčastěji: klienta a serveru) je jednoznačně dána jejich adresami a nemění se. V důsledku toho pak bylo možné zajistit potřebný přenos dat mezi komunikujícími stranami na základě jejich adres: když příslušná data procházela přes nějaký přepojovací uzel sítě, tento se rozhodoval na základě adresy příjemce a odesilatele. V praxi se pak rozlišuje mezi směrovači alias routery, které se rozhodují na základě síťových adres (adres příslušejících síťové vrstvě, což jsou např. IP adres), a přepínači alias switchi, které se rozhodují na základě adres příslušejících linkové vrstvě (což jsou například Ethernetové adresy). Tradičním rozdílem mezi směrovači a přepínači přitom bylo a stále je to, že směrovače jsou optimalizovány spíše na inteligenci, tak aby dokázaly přijímat poměrně složitá rozhodnutí na základě údajů, které mají k dispozici (na základě síťových adres), zatímco přepínače jsou optimalizovány především na rychlost a nejsou naopak stavěny na přijímání složitějších rozhodnutí, která by jejich činnost zpomalovala.

Snaha dosáhnout co nejvyšší rychlosti i na úrovni směrovačů (při rozhodování podle údajů patřících k síťové vrstvě) časem vedla k zavedení tzv. "přepínačů na 3. úrovni" (Layer 3 switches), které v sobě kombinují mnohé prvky směrovačů a tradičních přepínačů na úrovni linkové vrstvy - z přepínačů přebírají především orientaci na rychlost a ze směrovačů charakter údajů, podle kterých se rozhodují (podle adres síťové vrstvy). Časem se dokonce objevily i přepínače fungující na úrovni 4. vrstvy, neboli na úrovni vrstvy transportní (Layer 4 switches). Opět jde o zařízení optimalizovaná na rychlost (proto: "přepínače"), ale při svém rozhodování tato zařízení berou v úvahu již i takové informace, které jsou dostupné na úrovni 4. vrstvy ISO/OSI. Fakticky to znamená, že takovýto přepínač musí "studovat" obsah bloku dat, který skrz něj prochází, ještě podstatně "hlouběji" a detailněji, než klasický přepínač na 2. vrstvě nebo přepínač na 3, vrstvě - tak aby se dobral informací příslušejících 4. vrstvě, a s jejich uvážením se pak rozhodoval. Přitom informacemi, které jsou dostupné na úrovni 4 vrstvy (transportní vrstvy) a nikoli na úrovní 3. vrstvy (vrstvy síťové), jsou především tzv. čísla portů (port numbers), která si lze představit jako relativní adresy v rámci koncového či počátečního uzlu (zatímco adresy na úrovni síťové vrstvy identifikují síťové uzly pouze jako celky).

Relativní adresy, resp. čísla portů, určují například to, že příjemcem určitých dat má být WWW server běžící na daném uzlu, či místní FTP server, poštovní server atd. Z toho pak lze usuzovat na povahu přenášených dat a na základě toho pak přijímat či aspoň ovlivňovat přijímaná rozhodnutí při průchodu dat přepínačem - a to je právě to, co přepínače na 4. vrstvě (Layer 4 switches dělají).

V poslední době však ani rozhodování podle údajů za 4. vrstvy (a nižších) nemusí vždy postačovat. Důvodů je celá řada, a v prvním přiblížení lze ty nejvýznamnější shrnout takto:

  • dochází k virtualizaci serverů - požadavek, směrovaný serveru na určité adrese (a čísle portu) může být fakticky vyřizován jedním z celé skupiny vzájemně zastupitelných serverů, které sdílí jednu společnou (virtuální) adresu a dělí se o zátěž zejména s cílem rovnoměrně ji rozložit mezi sebe. Z tohoto důvodů nepostačuje rozhodovat se pouze podle síťové adresy a druhu provozu (podle čísla portu příjemce), ale je třeba brát v úvahu i další faktory.
  • dochází k virtualizaci klientů - také na straně těch, kteří vznáší své požadavky, již nemusí platit původní jednoznačný vztah k adresám a číslům portů (zejména to, aby každý klient měl svou unikátní síťovou adresu). Dnes je naopak čím dál tím častějším, že uživatelé jsou i se svými klientskými programy schováni za nějaký firewall - což způsobuje, že požadavky od různých klientů jsou zasílány ze stejné síťové adresy (odpovídající proxy bráně v rámci firewallu).
  • dochází ke specializaci serverů: kromě toho, že servery se "replikují" v identické podobě, schopné poskytovat stejné služby stejným způsobem, dochází i k jejich specializaci - některé mohou být optimalizovány například pro poskytování statických objektů jako obrázků, zatímco jiné servery mohou být optimalizovány na provádění výkonných sekvencí (různých druhů serverových skriptů či jiných forem programů, prováděných na straně serveru).

Řešením je upravit rozhodovací možnosti přepínačů tak, aby mohly brát v úvahu i konkrétní charakter požadavku který je vznášen. To ale vyžaduje porozumět tomuto požadavku mnohem detailněji, než jak je možné na úrovni 4. vrstvy či dokonce ještě níže. Znamená to jít až na úroveň aplikační vrstvy, neboli 7. vrstvy ISO/OSI modelu, protože teprve zde jsou k dispozici všechny potřebné výchozí informace pro dostatečně kvalifikované rozhodnutí. Proto se také v souvislosti s tím hovoří o "přepínání na 7. vrstvě" (Layer 7 switching). Aplikační vrstva je přitom nejvyšší vrstvou jak v sedmivrstvém modelu ISO/OSI, tak i ve čtyřvrstvém modelu TCP/IP a na této úrovni se již fakticky jedná také o obsah (anglicky: content) poskytovaný nejrůznějšími službami. Proto se spíše než "Layer 7 switching" prosazuje spíše označení "content switching" - protože přepínače fungující tímto způsobem mohou vycházet z plného obsahu požadavků i odpovědí, a v zásadě přímo manipulují s tímto obsahem.

Naznačme si nyní alespoň orientačně, jak může "content switching" zajistit to, co nedokáže zajistit ani přepojování na 4 vrstvě. Na úrovni aplikační vrstvy jsou například "vidět" konkrétní URL adresy, obsažené v jednotlivých požadavcích, a lze tedy podle nich rozlišit například požadavek na statický obrázek nebo na načtení konkrétní stránky obsahují nějaký skript a oba požadavky následně směrovat k různým serverům, které se postarají o jejich vyřízení.

Nebo pokud jde o rozlišení různých uživatelů "schovaných" za společným firewallem - zde je možné s výhodou využít existenci tzv. cookies, které dokáží tyto uživatele rozlišit i v když jsou umístěni za firewallem (ale takovéto cookies jsou opět "viditelné" až na úrovni aplikační vrstvy, tj. lze je použít pro rozhodování až v rámci content switchingu).

Ještě dalším důležitým aspektem je persistentní charakter některých komunikací - například v rámci jedné relace zabezpečené protokolem SSL by konkrétní uživatel měl komunikovat vždy se stejným serverem, který si tak může pamatovat historii celé relace (podle tzv. Session ID SSL relace, které je opět "viditelné" až na úrovni aplikační vrstvě.

V neposlední řadě content switching umožňuje realizovat různé strategie rozkladu zátěže (load balancing) a optimalizovat využití cache pamětí či celých replikačních systémů.

Konkrétní produkty pro content switching jsou dnes již na trhu, například od firem Cisco, ArrowPoint (která odkoupená firnmou Cisco), CyberIQ, Alteon WebSystems, F5 Networks, Foundry Networks či Intel a další.