Virtlab:Společná část diplomové práce
Z VirtlabWiki
Obsah |
Počáteční informace
Abstrakt
Smyslem této práce je rozšíření virtuální laboratoře počítačových sítí o možnost propojení více lokalit s umožněním tvorby distribuovaných síťových topologií. Součástí této práce bylo vytvoření programů pro vlastní řešení virtuálního propojení síťových prvků, distribuovaný systém rezervací prostředků a s tím související úpravy a nové funkce ve webovém rozhraní.
Klíčová slova
virtuální síťová laboratoř, Virtlab, distribuovaný systém, uživatelské prostředí
Abstract
(Bude doplněno po schválení české verze.)
Keywords
(Bude doplněno po schválení české verze.)
Seznam použitých zkratek a symbolů
Je potřeba ještě doplnit!
- IP - Internet Protocol
- PHP - PHP Hypertext Preprocessor (Professional Home Pages)
- SQL - Structured Query Language
- TCP - Transmission Control Protocol
- UDP - User Datagram Protocol
- VLAN - Virtual Local Area Network
- WWW - World Wibe Web
- ASSSK - Automatizovaný systém správy síťových konfigurací
Úvod
Projekt s názvem Virtuální síťová laboratoř (Virtlab) byl iniciován potřebou zpřístupnit specializovaná zařízení, která se nacházejí ve školních laboratořích pro výuku předmětů zabývajících 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é správy těchto zařízení 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álené řízení, 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ě.
Nově vytvořená distribuovaná virtuální síťová laboratoř umožňuje propojení více vzdálených lokalit (jakoby 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 všech síťových prvků ve všech zúčastněných lokalitách. Navíc umožňuje tvorbu více topologií najednou, takže může několik uživatelů naráz z lokalit takřka z celého světa vytvářet a používat virtuální různé síťové topologie s využitím libovolných globálně 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 ostrově. 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í.
Popis původního systému
Způsob propojení zařízení
Webové rozhraní
CServer
Java Applet
Omezení původní verze Virtlabu
Nejstarším omezením 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 seriové 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 seriové 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áo technikou zvanou Q-in-Q na Cisco přepínačích řady 3550. Tato technika, jak už zkratka napovídá, je založena na technologii 802.1q, která zavádí VLANy. Přidáním 2B dat do hlavičky ethernetového rámce lze identifikovat jednotlivé VLANy. 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 802.1q ethernetem), druhá označení provede propojovací-tunelovací zařízení, 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í logických 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 pouze jedna úloha, i kdyby byl dostatek úloh pro úlohu jinou. 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 (např.: směrovač označený jako R15). Proto bylo potřeba vymyslet popis topologií na logické úrovni (byl použit formát XML), popsat fyzické prvky lokality (rovněž ve formátu XML), 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í prvku mezi několika Virtlab lokalitami. V realitě se objevují situace, kdy jedna z Virtlab lokalit zakoupí nějaké nákladné zařízení (konkrétně: VŠB zakoupila několik zařízení Cisco ASA pro výuku bezpečnosti v počítačových sítích), ale ono zařízení nebude plně využíváno. V dobách kdy není používáno v lokalitě, kde je nainstalováno, by jej ale plně využila lokalita jiná, která si vlastní 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.[2]
Cíle práce
Systém distribuovaných topologií
Použitá terminologie [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
- 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é (UML, 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 má tvar jmeno@lokalita[4]. Uživatelé se autentizují v lokalitě, do které náleží. 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), nebo další funkce Virtlabu.
- Logická topologie úlohy
- Logická topologie úlohy je popis požadavků na laboratorní prvky požadovaný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é topologie ú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.
- Řidící skripty virtuálního spojovacího pole
- Skripty, které na základě konfiguračních souborů a textového popisu propojení požadované fyzické topologie vygenerují konfigurační příkazy pro všechny prvky všech lokálních segmentů virtuálního spojovacího pole (vč. tunelovacích serverů) ve všech lokalitách. Textový popis propojení fyzické topologie obsahuje v jednotlivých řádcích dvojice jmen prvků a jejich rozhraní, které mají být propojeny. Skripty spouští před zahájením úlohy cron na virtlab serveru lokality, jejíž uživatel rezervaci úlohy vyžádal. Konfigurační příkazy budou 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ů spojovacího pole.
Hlavní části laboratoře
Rezervační server [8]
Obecný úvod
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 konfkliktu, 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 ú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ů a to dokonce z více lokalit. Bylo proto nutné navrhnout nový rezervační systém, který bude umět nejen rezervovat uživateli nějaký čas, ale bude přímo 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 byly zpřístupněny daným lokalitám jen po určitý čas, nejlépe v týdenním časovém plánu.
Obecný popis
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é lokalitě poskytnout k zarezervování a to podle daného týdenního rozvrhu.
Popis činnosti
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á přiložen 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 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 zpracuje a může dále žádat o zarezervování seznamu síťových prvků v daném čase. K tomu vygeneruje 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 a po dané časové prodlevě vyprší dočasné rezervace.
Konzolový server [8]
Konzolový server zprostředkovává přístup k sériovým konzolím síťových zařízení, případně telnetovým konzolím, prostřednictvím TCP/IP protokolu. Je využíván Java Appletem, který běží ve webovém ovládacím rozhraní, což umožňuje uživateli jednoduchou správu síťových zařízení. 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řístup.
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, kdy ještě 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, 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í Distribuované virtuální laboratoře a jeho úkolem je zajistit propojení (bridge) 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 ethernetového segmentu. 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.
Princip činnosti
Dané ethernetové rozhraní serveru je připojeno trunk linkou k příslušnému přepínači (Cisco 3550) nebo i jinému zařízení, které podporuje standard IEEE 802.1q. Tunelovacímu serveru je nakonfigurována tabulka (tabulka přesměrování), ve které je uvedeno vždy VLAN ID rámce z lokání sítě, tedy VLAN, která bude tunelována, nové VLAN ID kam bude rámec poslán a ip adresa vzdáleného (nebo i lokálního) tunelovacího serveru. Tunelovací server přepne rozhraní s trunk linkou do promiskuitního módu, což umožní přijímat veškerý provoz na trunk lince. Následně odchytává VLAN tagované ethernetové rámce a kontroluje, jestli jsou definovány v tabulce přesměrování. Pokud ano, je VLAN ID přečíslováno podle této tabulky a celý rámec je prostřednictvím UDP paketu odeslán na danou ip adresu. Zde jej tunelovací server příjme, vybalí a opět v syrové formě ethernetového rámce a odešle ven trunk linkou. Tímto způsobem dochází k virtuálnímu propojení ethernetu definovaných VLAN a to i vzdáleně (přes Internet), tedy vznikne ethernetový tunel.
Konfigurační server [8]
Konfigurační server je jednochý 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 zařízení. Tímto dochází k aktivaci žádané síťové topologie.
Webový server [9]
Webový server lokality (taky označován jako hlavní server) je vlatně jediným místem, kde běžný uživatel přichazí s Virtlabem do styku. Kromě řadových uživatelů, jsou v systému i ...
- ↑ Celá tato problematika je částí diplomové práce Jana Vavříčka
- ↑ Celá tato problematika je částí diplomové práce Tomáše Hrabálka
- ↑ 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,0 4,1 4,2 UTF-8 znaky
- ↑ User Mode Linux - simulace koncových počítačových stanic, ke kterým se student může vzdáleně připojit a konfigurovat je.
- ↑ emulátor procesoru MIPS. Pomocí něj lze na PC simulovat Cisco směrovač 7200.
- ↑ 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,0 8,1 8,2 8,3 O tomto zařízení pojednává část diplomové práce Tomáše Hrabálka.
- ↑ Toto zařízení je předmětem diplomové práce Jana Vavříčka.