Virtlab:Společná část diplomové práce

Z VirtlabWiki

Verze z 19:13, 18. 10. 2007; zobrazit aktuální verzi
← Starší verze | Novější verze →
Přejít na: navigace, hledání

Obsah

Nová koncepce Virtlabu

Projekt s názvem Virtuální síťová laboratoř (Virtlab) byl iniciován potřebou vzdáleně zpřístupnit specializovaná zařízení, která se nacházejí ve školních laboratořích, pro výuku předmětů zabývajících se počítačovými sítěmi, zejména pro potřeby studentů, kteří nemají možnost osobně navštěvovat zmíněné laboratoře, a tak zajistit možnost dálkové práce s těmito zařízeními z Internetu.

Původní návrh a realizaci po softwarové stránce vytvořil Ing. Pavel Němec v rámci své diplomové práce Virtuální síťová laboratoř, kterou obhájil v roce 2005. Zařízení umožňující vzdálené propojování vytvořil Ing. David Seidl jako součást své diplomové práce Automatizovaný systém správy síťových konfigurací, která byla rovněž obhájena v roce 2005. V průběhu provozu Virtlabu se ukázala potřeba systém více zabezpečit a doplnit některé funkce. Proto byla virtuální laboratoř o tyto prvky vylepšena Ing. Romanem Kubínem v rámci diplomové práce Zajištění bezpečnosti a implementace nových prvků řídícího systému virtuální laboratoře obhájené roku 2006.

Virtuální síťová laboratoř umožňuje jednoduché vzdálenou konfiguraci a vzájemné propojení síťových prvků (změny síťové topologie) z libovolného počítače připojeného k Internetu a to i více uživatelům připojeným současně.

Původní architektura
Zvětšit
Původní architektura

Distribuovaná virtuální síťová laboratoř, vytvořená v rámci této diplomové práce, umožňuje propojení více vzdálených lokalit (vzdálené propojení původních virtuálních laboratoří) tak, aby bylo možno vytvářet virtuální síťové topologie s použitím síťových prvků v zúčastněných lokalitách prostřednictvím tunelů vytvořených skrze Internet. Navíc umožňuje tvorbu více topologií najednou, takže může několik uživatelů, z lokalit takřka z celého světa, naráz vytvářet a používat virtuální různé síťové topologie s využitím libovolných dostupných síťových prvků, aniž by je muselo zajímat, je-li tento prvek v jejich místní laboratoři nebo v cizí laboratoři na vzdáleném místě. A to vše navíc ovládají jednoduše prostřednictvím webového prohlížeče třeba z domu či ze zaměstnání.

Omezení původní verze Virtlabu

Omezením nejstarší verze Virtlabu byla pevná fyzická topologie. Jestliže bylo potřeba změnit fyzickou topologii, musel zodpovědný člověk jednotlivé prvky lokality ručně propojit do nově požadované topologie. Tento výrazně omezující faktor se podařilo překonat pomocí ASSSK-1. Toto zařízení dokáže propojovat sériové linky na základě příkazů, které jsou mu předávány. Zapojení určené fyzické topologie, lze tedy jednoduše automatizovat. I když ASSSK-1 dokáže propojovat sériové linky i ethernet, byla pro propojování ethernetu časem použita jiná technika, aby se množství propojitelných linek nesnižovalo – když pro propojování sériové linky i ethernet, byla pro propojování ethernetu časem použita jiná technika, aby se množství propojitelných linek nesnižovalo – když pro propojování seriových linek nemáme žádné jiné řešení.

Zmíněné propojování ethernetu bylo časem realizováno technikou zvanou Q-in-Q na Cisco přepínačích řady 3500. Tato technika, jak už zkratka napovídá, je založena na technologii 802.1q, která umožňuje použití VLAN. Přidáním dvou bajtů dat do hlavičky ethernetového rámce lze na takzvané trunk lince identifikovat jednotlivé VLAN. V našem případě se ono přidání provádí ve skutečnosti dvakrát. Jedno označení mohou provádět propojovaná zařízení (musíme jim umožnit se propojovat ethernetovou trunk linkou), druhé označení provede zařízení, které propojuje jednotlivé prvky (vytvoří tunel simulující trunk linku), aby odlišilo jednotlivé toky dat, které odpovídají logickým spojům mezi propojovanými zařízeními.

Pro úplnost je třeba dodat, že musíme tunelovat i protokoly druhé vrstvy ISO modelu (STP, CDP, VTP), aby propojovaná zařízení nepoznala, že jsou propojena pomocí přepínače.

I když byl vyřešen problém automatického zapojování topologií, stále bylo třeba vyřešit několik věcí. Jedním z omezujících faktorů je skutečnost, že v jeden okamžik může ve Virtlabu běžet daná úloha jen v jedné instanci, i kdyby byl dostatek prostředků pro více stejných úloh současně. Odpovědnost za toto nese popis úlohy, ve které jsou definovány fyzické prvky, které se musejí použít. V popisech úloh se nemluví o logických směrovačích s daným počtem rozhraní, ale o konkretním fyzickém prvku. Proto bylo potřeba definovat způsob popisu topologií na logické úrovni, popsat fyzické prvky každé lokality, při rezervaci úlohy zpracovat informace z těchto dokumentů a následně realizovat namapování jednotlivých logických prvků na prvky fyzické tak, aby byly splněny všechny požadavky topologie.[1]

Dalším omezením současné verze je nemožnost sdílení prvků mezi několika Virtlab lokalitami. V realitě se objevují situace, kdy jedna z Virtlab lokalit zakoupí nějaké nákladné zařízení, ale toto zařízení nebude uživateli této lokality plně využíváno. V čase, kdy není používáno v lokalitě, v níž je nainstalováno, by jej ale plně mohla využít lokalita jiná, která si zakoupení stejného zařízení dovolit nemůže. Tento stav vyústil v nový návrh Virtlabu - přesněji v návrh distribuovaného Virtlabu. Tento nápad s sebou přinesl řadu problémů, které bylo třeba vyřešit. Týkají se způsobu provádění rezervací, kdy je potřeba, aby o určité úloze v daný čas věděly všechny zúčastněné lokality, dále bylo třeba nalézt způsob propojení několika síťových prvků v různých lokalitách, jak provádět automatizované zapojování topologií napříč distribuovaným systémem, jak je automatizovaně konfigurovat či vzdáleně zpřísupnit uživatelům jejich ovládací konzole.[2]

Základní principy distribuovaného sytému

Lokality

Jelikož cílem distribuovaného řešení je zpřístupnění síťových zařízení různých síťových laboratoří ve světě, je systém rozdělen na základní jednotky, které jsou nazvány lokality, a které reprezentují právě tyto jednotlivé síťové laboratoře. Tedy lokalita je místo, kde jsou fyzicky umístěna síťová zařízení, která se zpřístupňují uživatelům místním i z ostatních lokalit. Každá lokalita má svá pravidla, jež definují, která zařízení a ve kterém čase jsou k dispozici vybraným vzdáleným lokalitám. V každé lokalitě proto běží Rezervační server, který obhospodařuje práva uživatelů a lokalit a zabezpečuje zapůjčování prvků. Dále je zde spuštěn Konzolový server, Konfigurační server a webový server, který je určen vždy pro místní uživatele.


Distribuovaná architektura
Zvětšit
Distribuovaná architektura

Logické topologie

Jestliže uživatel chce vytvořit jistou úlohu, musí vytvořit návrh žádané síťové topologie. Ten neobsahuje přímo fyzická zařízení, ale určuje pouze typy síťových zařízení a způsob jejich propojení, proto jej nazýváme logická topologie. Teprve až je vytvořena tato logická topologie, zjišťuje se, je-li ji v daném čase možno realizovat, vyberou se vhodná síťová zařízení - a to jak lokální, tak i vzdálená, a prostřednictvím Rezervačních serverů se tyto prvky pro danou topologii vyhradí.

Princip propojení fyzických zařízení

Ke spojení zařízení v rámci jedné lokality jsou určena automatická spojovací zařízení - virtuální spojovací pole, která dokáží samočinně spojit libovolná sériová rozhraní i ethernetové porty. V současně době je používáno zařízení ASSSK-1, které umožňuje přímé propojení signálových vodičů sériových a ethernetových 10BaseT portů, a přepínač Cisco 3550, kterým se vytvářejí virtuální ethernetové segmenty pomocí technologie VLAN. Vzdálené propojení dvou segmentů distribuovaného virtuálního spojovacího pole má na starosti Tunelovací server, který ze dvou těchto různých segmentů v různých VLAN udělá jeden logický ethernetový segment. Takto můžeme propojit například jeden ethernetový port na přepínači v jedné lokalitě s ethernetovým portem směrovače v jiné lokalitě, přičemž tato zařízení pracují, jakoby byla spojena přímo přes ethernetový bridge, jehož existence je, pro protokoly přes něj běžící, utajena.

Propojení fyzických zařízení
Zvětšit
Propojení fyzických zařízení

Aktivace topologií

Při započetí definované rezervace vyvolá Rezervační server prostřednictvím Aktivačního skriptu generování konfigurací topologie, příslušné k dané rezervaci, pro spojovací pole a tunelovací servery. Poté odešle soubory s vygenerovanou konfigurací všem konfiguračním serverům v definovaných lokalitách. Tyto pak zajistí jejich nahrání na fyzické prvky, respektive Tunelovací server, v dané lokalitě.

Systém distribuovaných topologií

Definice pojmů [3]

Lokalita 
Lokalita je jedna lokální, autonomní instance Virtlabu schopná samostatného provozu i spolupráce s jinými lokalitami prostřednictvím připojení k volnému Internetu. Spolupráce spočívá jednak v nabízení svých laboratorních prvků pro fyzické topologie požadované uživateli z jiných lokalit (tím vznikají distribuované topologie pomocí propojovacích tunelů) a jednak v používání laboratorních prvků nabízených jinými lokalitami pro fyzické topologie požadované uživateli vlastní lokality. Lokality jsou pojmenovávány textovými řetězci[4].
Lokalita obsahuje:
  • laboratorní prvky lokality
    • mohou volitelně zahrnovat jeden či více serverů simulujících stanice (XEN[5]) a Cisco 7200 (Dynamips[6])
  • řídící server lokality (Virtlab server)
  • konzolový server
  • segment virtuálního spojovacího pole
  • konfigurační server spojovacího pole
  • rezervační server
  • server pro mazání konfigurací síťových prvků
  • tunelovací server
Laboratorní prvky 
Laboratorní prvky jsou síťové prvky v jednotlivých lokalitách, připojené k lokálnímu segmentu virtuálního spojovacího pole, které jsou k dispozici pro práci studentů na jednotlivých úlohách. Může jít o fyzické síťové prvky nebo prvky simulované (XEN, Dynamips). Laboratorní prvky jsou globálně pojmenovávány ve tvaru jmeno@lokalita[4]. Vlastnosti jednotlivých laboratorních prvků jsou popsány v XML.
Uživatelé 
Uživatelé jsou zaváděni v jednotlivých lokalitách. Mají jména jednoznačná v rámci lokalit. Globálně jednoznačné jméno uživatele vznikne spojením se jménem domovské lokality a má tvar jmeno@lokalita[4]. Uživatelé se autentizují v lokalitě, do které náleží, kde jsou také definována jejich práva či role v systému. V rámci lokality mohou být definovány lokální skupiny uživatelů. Přiřazení uživatele požadujícího sestavení úlohy do skupiny uživatelů může ovlivnit práva na výběr prvků při mapování logické topologie úlohy na fyzickou (toto mapování sestavuje mapovací algoritmus běžící v lokalitě uživatele, takže má definice skupin uživatelů k dispozici).
Logická topologie úlohy 
Logická topologie úlohy je popis požadavků na laboratorní prvky žádaných pro řešení určité úlohy včetně popisu požadavků na jejich vzájemné propojení. Každý laboratorní prvek je v popisu zastoupen jedním logickým laboratorním prvkem. Logická topologie je popsána v XML. [7]
Fyzická topologie úlohy 
Fyzickou topologií úlohy rozumíme soubor laboratorních prvků-zařízení (i z různých lokalit) namapovaných algoritmem mapování logické topologie na fyzickou na jednotlivé logické prvky odpovídající logické topologii úlohy, včetně přiřazení fyzických rozhraní laboratorních prvků ke spojům logické topologie. Fyzická topologie může být distribuovaná, tedy obsahovat laboratorní prvky z různých lokalit a spoje mezi nimi realizovat prostřednictvím propojových tunelů.
Úloha 
Úlohou rozumíme definici zadání úkolu pro uživatele popisující mimo jiné logickou topologii úlohy. Úloha může dále obsahovat i vzorové řešení v podobě konfigurace jednotlivých zařízení.
Spuštění úlohy 
Spuštěním úlohy rozumíme v čase vymezené propojení laboratorních prvků pro práci studentů podle požadavků popsaných logickou topologií úlohy. Časový interval sestavení úlohy (timeslot) je chápán obecně a není vázán na žádný fixní časový rastr. Zdrojem logické topologie může být buďto tabulka předdefinovaných úloh nebo GUI (u topologie na přání studenta).
Timeslot 
Timeslotem je nazýván časový úsek rezervovaný studentem pro řešení určité úlohy. Začátek ani konec není vázán žádným pevným časovým rastrem. Prvních 5 minut timeslotu je vyhrazeno na vymazání předchozí konfigurace z laboratorních prvků použitých v úloze a spojení fyzické topologie, student během nich nemůže přistupovat na laboratorní prvky.
Virtuální spojovací pole 
Distribuovaný spojovací systém založený na technologii VLAN a tunelování VLAN (802.1q rámců) pomocí UDP (vlastní enkapsulační formát) přes volný Internet. Spojování laboratorních síťových prvků v lokalitách se děje jejich zařazováním do stejných VLAN (příp. VLAN tunelů QinQ při spojování trunků) na přepínačích Cisco 3550, tunely přes Internet jsou zajišťovány vlastním SW – tunelovacím démonem běžícím na tunelovacím serveru.
Řídící skripty virtuálního spojovacího pole 
Řídící skripty virtuálního spojovacího pole na základě konfiguračních souborů a textového popisu propojení požadované fyzické topologie vygenerují konfigurační příkazy pro všechny segmenty virtuálního spojovacího pole (včetně tunelovacích serverů) ve všech lokalitách. Textový popis propojení fyzické topologie obsahuje v jednotlivých řádcích dvojice jmen fyzických laboratorních prvků a jejich rozhraní, které mají být propojeny. Skripty spouští před zahájením úlohy Rezervační server lokality, jejíž uživatel rezervaci úlohy vyžádal. Vygenerované konfigurační příkazy jsou zaslány do segmentů virtuálních spojovacích poli všech lokalit zúčastněných v distribuované topologii dané úlohy prostřednictvím jejich Konfiguračních serverů.

Hlavní části architektury

Rezervační server [8]

Původní verze virtuální síťové laboratoře umožňovala jednotlivým uživatelům, aby si mohli zarezervovat určitý čas, kdy budou s Virtlabem exkluzivně pracovat a nemohlo tedy dojít ke konfliktu, kdy více uživatelů současně zde bude chtít najednou systém používat. Nevýhodou bylo, že rezervace mohly být uskutečněny pouze v rámci přesně daných timeslotů, což neumožňovalo přílišnou flexibilitu v čase. Dále virtuální laboratoř neumožňovala spouštění více logicky stejných úloh najednou a proto při návrhu distribuované varianty bylo třeba počítat s tím, že bude moci najednou pracovat i více uživatelů z více lokalit a to na obecně různých úlohách. Bylo proto nutné navrhnout nový rezervační systém, který bude umět nejen rezervovat uživateli nějaký čas, ale bude zprostředkovávat rezervaci fyzických síťových zařízení v libovolné lokalitě distribuované virtuální laboratoře.

Aby ovládací software (PHP skript) vědět, které síťové prvky z celého distribuovaného systému může uživateli nabídnout bylo třeba implementovat i funkci vyhledávání volných zařízení v systému. A v neposlední řadě vznikl požadavek na to, aby určité prvky lokalit byly zpřístupněny jiným lokalitám jen po určitý časový interval, nejlépe v týdenním časovém plánu.

Rezervační server je démon, který běží vždy na jednom serveru v každé lokalitě distribuovaného systému a tedy v celém systému běží tolik instancí, kolik je definováno lokalit. Tento server má vždy určeno jméno své lokality, jména vzdálených lokalit a IP adresy jejich rezervačních serverů. Dále má ke každé lokalitě uveden seznam síťových prvků místní lokality, které může vzdáleným lokalitám poskytnout k zarezervování a to podle daného týdenního rozvrhu.

Když ovládací software chce zarezervovat určité prvky, pošle rezervačnímu serveru dotaz, které prvky jsou globálně v celém distribuovaném systému pro něj v určeném čase k dispozici. Rezervační server žádost zpracuje a odešle i do vzdálených lokalit. Každá lokalita má definován XML soubor s popisem vybavení místní laboratoře. Z něj rezervační server vybere nezarezervované a povolené prvky a odešle výsledný XML soubor tazateli. Rezervační server, který rozdistribuovával dotaz ovládacího software, poskládá všechny přijaté XML popisy dostupného vybavení do jediného souboru, který vrátí tazateli. Není-li k dispozici žádný síťový prvek, je vrácen platný soubor, ovšem bez zařízení.

Ovládací software XML soubor od Rezervačního serveru zpracuje, vybere z něj vhodné prvky, a může dále žádat o zarezervování seznamu síťových prvků v daném časovém rozmezí. K tomu vygeneruje globálně unikátní rezervační id ve tvaru 'celé číslo @ název lokality'. Rezervační server žádost rozdělí a pošle každé vzdálené lokalitě v žádosti jen ty prvky, které jí patří. Aby se eliminovaly konflikty, řekne místní rezervační server vzdáleným kolegům, aby onu rezervaci považovali za dočasnou. Povede-li se dočasná rezervace u všech žádaných lokalit, je všem rezervace potvrzena trvale. Může ovšem dojít k tomu, že si někdo před námi již daný síťový prvek zarezervoval a není možné rezervaci u některých z rezervačních serverů provést. Pak k potvrzení samozřejmě nedojde, po dané časové prodlevě dočasné rezervace vyprší a žádost o rezervaci selže.

Konzolový server [8]

Konzolový server zprostředkovává přístup k sériovým nebo telnetovým konzolím síťových zařízení prostřednictvím jednocuchého protokolu nad TCP/IP. Je využíván Java Appletem, který běží ve webovém ovládacím rozhraní, což umožňuje uživateli jednoduchý přístup k síťovým zařízením. Zároveň slouží i jako proxy server, který zprostředkovává přístup k zařízením, která jsou připojena ke vzdáleným konzolovým serverům, kam nemá místní uživatel přímý přístup. Také prostřednictvím speciálního PHP skriptu ověřuje, jsou-li požadavky uživatele oprávněné a tím konzoly prvků zabezpečuje od neautorizovaného přístupu.

Tunelovací server [8]

Při návrhu distribuované varianty virtuální síťové laboratoře se ukázala potřeba propojovat dvě i více vzdálených zařízení do jednoho virtuálního ethernetového segmentu a to dynamicky, podle potřeby uživatele. Navíc bylo potřeba počítat s tím, že v každé lokalitě může být zařízení, které má být do virtuálního ethernetového segmentu, připojeno do jiné VLAN. Při zkoumání možných řešení nebyl nalezen žádný vhodný existující software pro tunelování VLAN, a proto bylo přistoupeno k implementaci vlastního řešení.

Tunelovací server je démon běžící na zvláštním serveru, jež je součástí každého segmentu distribuovaného virtuálního spojovacího pole a jeho úkolem je zajistit propojení různých VLAN mezi jednotlivými lokálními virtuálními laboratořemi a také různých VLAN v rámci jednoho segmentu distribuovaného spojovacího pole. Takto lze zajistit, aby síťová zařízení, která jsou připojena na tunelované VLAN, byla zapojena jakoby v jediném zdánlivém ethernetovém segmentu, přestože je každé zařízení v jiné lokalitě a zde dokonce v jiné VLAN.

Konfigurační server [8]

Konfigurační server je jednoduchý síťový démon, jehož úkolem je příjem konfiguračních souborů, které vytvořil spojovací skript, pro spojovací pole síťových prvků, tunelovací servery a také nahrání těchto konfigurací do příslušných spojovacích zařízení. Tímto dochází k aktivaci žádané síťové topologie.

Aktivátor konfigurací [8]

Hlavním prvkem Aktivátoru konfigurací je Aktivační skript. Jeho je zajistit spuštění skriptu generujícího konfigurace pro spojovací pole, dále skriptu pro vytvoření konfigurace pro tunelovací servery a nakonec spuštění skriptu, který tyto konfigurace pošle určeným konfiguračním serverům. Aktivační skript je spuštěn před začátkem dané úlohy rezervačním serverem.

Webový server [9]

Webový server lokality (taky označován jako řídící server lokality) je fakticky jediným místem, kde běžný uživatel přichazí s Virtlabem do styku. Kromě řadových uživatelů jsou v systému rozlišování i administrátoři, správci úloh a tutoři. Webový server umožňuje uživatelům si na určitou dobu zarezervovat logickou topologii, kterou si vyberou. Server komunikuje s rezervačním serverem, který mu nabízí fyzická zařízení, která jsou k dispozici. Seznam dostupných zařízení a logická topologie, jsou vstupními argumenty mapovacího procesu, který pro jednotlivé vrcholy logické topologie, což jsou žádaná logická zařízení, vybere adekvátní fyzická zařízení a vygeneruje jejich fyzického propojení, které slouží dále k vygenerování konfigurací spojovacích prvků.

Konzolový applet [8]

Klíčovou součástí klientského webového rozhraní je applet, jehož úkolem je zajistit uživateli vzdálený přístup k sériovým, případně telnetovým konzolám síťových prvků. Konzolový applet čte vstup uživatele a posílá ho konzolovému serveru (CServer),který zpět mu odesílá výstupy ze zařízení. Konzolový applet se rovněž umí přípojit v módu tutora, což umožňuje tomuto speciálnímu uživateli sledovat práci obyčejných uživatelů, případně jim pomáhat s konfigurací.


  1. Celá tato problematika je částí diplomové práce Jana Vavříčka
  2. Celá tato problematika je částí diplomové práce Tomáše Hrabálka
  3. Terminologie je výsledkem dlouhodobé diskuze, celého vývojářského týmu, ale přesné ji definoval až Ing.Petr Grygárek Ph.D., jako hlavní vedoucí celého projektu Virtlab.
  4. 4,0 4,1 4,2 UTF-8 znaky
  5. XEN - simulace koncových počítačových stanic, ke kterým se student může vzdáleně připojit a konfigurovat je.
  6. emulátor procesoru MIPS. Pomocí něj lze na PC simulovat Cisco směrovač 7200.
  7. V rámci logické topologie mluvíme o vrcholech (logický prvek topologie) a hranách-linkách (propojení dvou logických prvků). Terminologie byla převzata z Teorie grafů.
  8. 8,0 8,1 8,2 8,3 8,4 8,5 O tomto zařízení pojednává část diplomové práce Tomáše Hrabálka.
  9. Toto zařízení je předmětem diplomové práce Jana Vavříčka.
Osobní nástroje