Popis |
Koncept aktivních/programovatelných sítí umožňuje uživatelem řízené zpracování procházejících dat na specializovaných síťových prvcích. Uživatelé do těchto prvků nahrávají své tzv. aktivní programy, které jsou pak nad procházejícími daty aktivním prvkem prováděny. Tento koncept byl představen jako reakce na určité ustrnutí tradičních počítačových sítí, které sice představují jednoduchou a velmi rychlou infrastrukturu pro přenos dat, avšak které nejsou schopny rychlých a dynamických rekonfigurací či zavádění nových služeb. Příkladem aplikací, které mohou s výhodou využít takovéto zpracování dat uvnitř sítě, jsou aplikace pro přenosy či zpracování multimediálních dat (videokonferenční aplikace, zpracování a distribuce videa, atp.), bezpečný a spolehlivý multicast, atp.), systémy detekující a řešící útoky na prvky počítačové sítě či dynamicky se adaptující intranetové firewally. Díky obrovské škále možných poskytovaných služeb se tento koncept stal velmi rychle populárním -- byla navržena celá řada softwarových a hardwarových aktivních/programovatelných architektur, od tzv. integrovaných, které jsou založeny na aktivních paketech přímo obsahujících nad nimi prováděný aktivní program, až po tzv. diskrétní, ve kterých zavedení aktivního programu předchází vlastnímu zpracování dat. Základní otázky, které musí být v rámci návrhu kteréhokoliv aktivního/programovatelného prvku řešeny, jsou: Flexibilita výpočetního prostředí -- každý aktivní prvek musí poskytovat nějaké výpočetní prostředí, ve kterém jsou uživatelem nahrané programy zpracovávány. V ideálním případě lze toto prostředí dynamicky přizpůsobovat tak, aby byl daný prvek schopen přijmout a provádět uživatelské aktivní programy určené pro libovolné výpočetní prostředí. Tato schopnost je však v existujících architekturách výrazně potlačena, neboť tyto uživatele obvykle omezují na jediné prostředí, pro které musí své programy vytvářet (většinou Unix/Linux OS, Java Runtime Environment či nějaké jiné proprietální řešení). Izolace zdrojů a bezpečnost -- běžící aktivní programy musí být zabezpečeny a vzájemně izolovány tak, aby se nemohly vzájemně ovlivňovat či kompromitovat. Doposud navržené architektury však mechanismy spojené s izolací a bezpečností aktivních programů buď zcela postrádají, anebo poskytují složitá proprietální řešení, která se snaží tyto politiky vynutit, avšak která neřeší vlastní podstatu problému. V této disertační práci dokazujeme, že místo návrhů nových proprietálních mechanismů lze podstatu těchto problémů řešit s využitím virtualizace, která se v posledních letech těší velké oblibě. Mimo mechanismů pro řešení zmíněných problémů však virtualizace aktivním prvkům přináší i další zajímavé a užitečné možnosti, které v této práci rovněž diskutujeme. Hlavním cílem této práce tak je prozkoumat a představit výhody využití virtualizace v oblasti aktivních/programovatelných síťových prvků. Pro jejich demonstraci navrhujeme nový programovatelný síťový prvek, nazývaný DiProNN (Distributed Programmable Network Node), který diskutované principy virtualizace využívá, a který za pomoci jejich vhodné kombinace s dalšími užitečnými koncepty představuje velmi silný a flexibilní programovatelný prvek umožňující vytvářet aktivní programy pro libovolná výpočetní prostředí. Tyto aktivní programy pak umožňuje pohodlně seskupovat do komplexních výpočetních aplikací, přičemž jim poskytuje vysoké možnosti zabezpečení a izolace, které mohou být navíc doplněny o rezervace a garance poskytovaných zdrojů.
|