1) Popis programu
Jedná se o konzolovou aplikaci, která má k dispozici topologii sítě. Tato struktura je včetně různých nastavení uložená v souboru formátu XML (viz. kapitola Konfigurační soubor). Network Monitor (dále jen Netmon), načte tyto data do paměti a poté testuje dostupnost jednotlivých PC v síti pomocí funkce ping. Po dokončení této operace bude mít každé PC definovaný stav. Výstupem programu je HTML stránka s obrázkem PNG, kde je nakreslena síť v aktuálním stavu. Výsledná stránka se vytváří pomocí zadané šablony.
Co je nového ve verzi 0.7.0
- velikost výsledného obrázku je nyní dána počtem a velikostí buňek v horizontálním a vertikálním směru
- při prvním spuštění je vygenerován soubor s příponou .con, ve kterém jsou uloženy "spojení". Při příštím spuštění se čte z tohoto souboru. Pokud dojde ka jakékoliv změně daného konfinguračního souboru, je soubor .con generován nový (což chvilku trvá).
- linky jsou nyní vytvářeny zcela libovolně (přímé i několikanásobně lomené čáry apod.)
- pořadí textu na routerech je dáno pořadím vlastností "name", "ip" a "comment" v konfiguračním souboru
- nová grafika pro linky a routery (typ routeru má nyní styl "shadow" kterým lze zapnout stínování)
- linka má nový atribut "underconst" který linky označí jako ve výstabě čili modrou barvou
- pokud obsahuje router typ, který nebyl definován, je vypsána chyba a program se ukončí
- předělán systém paralelních linek
- sdružená zařízení, viz. část 8
- podpora znaku ampersand v xml souboru, viz. část 6
- změny v konfiguračním souboru jsou pospány v části Konfigurační soubor.
Změny jednotlivých verzí jsou zapsány v souboru changelog. Pokud budete mít probémy s instalací, kontaktujte mě na ICQ: 93289181.
Ke stáhnutí (aktuální verze 0.7.0)
Spustitelný program pod Windows - winbin_0.7.0.zip (1.2 MB s příkladem)
Zdrojové kódy zkompilovatelné pod VS.NET 2003 - winsrc_0.7.0.zip (2.2 MB s GD knihovnou)
Zdrojové kódy pro GCC (Linux) - netmon_0.7.0.tgz (300 kB)
Nutno podotknout, že zdrojové kdy jsou identické, jen jsou trochu jinak uspořádané. Pod Linuxem je třeba mít nainstalované knihovny Expat (XML Parser), GD (grafická knihovna) a Ping (program pinghost).
V balíčku najdete testovací konfigurační soubory config.xml. Náhled sítě:
Netmon je freeware. To znamená, že ho můžete šířit a dál upravovat pod licencí GNU General Public License.
Zpět |
3) Konfigurační soubor
Data sítě jsou uložena ve formátu XML. V tomto souboru jsou uloženy tyto informace:
- nastavení chování programu
- cesty k potřebným souborům
- grafická podoba různých typů zařízení na síti
- seznam zařízení
- seznam sdružených zařízení
- seznam linek mezi nimi
a) Nastavení chování programu
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| horizontal_cells |
Počet buňek mřížky ve vodorovném směru. |
ano |
| vertical_cells |
Počet buňek mřížky ve svislém směru. |
ano |
| cell_width |
Šířka jedné buňky v pixelech. |
ne, 110 |
| cell_height |
Výška jedné buňky v pixelech. |
ne, 70 |
| deffont |
Definuje plnou cestu k TT fontu, který je použit při generování výsledného obrázku. Pokud tento atribut není definován, použijí se nativní fonty knihovny GD (a to i v případě, že daný font není nalezen). |
ne, použije se výchozí fonty knihovny GD |
| maxpingattempts |
Počet pokusů při testování zařízení na síti. Doporučená hodnota tohoto atributu je 2. Nedostupné routery se tak zbytečně netestují 3x. |
ne, 3x |
| pingtimeout |
Maximální doba čekání na odpověď v milisekundách. Záleží na typu sítě. Na rychlé metalické síti může být hodnota nižší, druhý extrém je wifi, kde by hodnota neměla být menší než 2000 milisekund. |
ne, 1000 ms |
| mainrouter |
Jméno hlavního routeru. Z toho routeru se pak provádí monitoring a toto jméno je i uvedeno ve výsledném HTML dokumentu. V šabloně je vloženo místo tagu %%MAINROUTER%%. |
ne, musí být nastaven alespoň parametrem, jinak netmon skončí |
<configuration>
<!-- graphics options -->
<imagesize>770 530</imagesize>
<deffont>c:/windows/fonts/arial.ttf</deffont>
<!-- ping options -->
<maxpingattempts>2</maxpingattempts>
<pingtimeout>2000</pingtimeout>
<mainrouter>YOUR_MAIN_ROUTER</mainrouter>
...pokračuje dalším nastavením...
|
b) Cesty k potřebným souborům
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| reshtmlpath |
Cesta a název souboru výsledné HTML stránky. |
ne, "index.htm" |
| respngpath |
Cesta a název PNG obrázku se zobrazením stavu sítě. Tento odkaz je pak vložen do výsledného HTML dokumentu místo tagu %%SRCPIC%%. |
ne, "result.png" |
| sourcepath |
Cesta a název šablony HTML stránky. Datum, obrázek, mapa, hlavní router a verze používají speciální tagy: %%DATE%%, %%AREA_MAP%%, %%SRCPIC%%, %%MAINROUTER%% a %%VERSION%%. Tyto znaky jsou při generování nahrazeny správnými hodnotami. Hlavní router je definován v konfiguračním souboru. |
ano |
| loadfile |
Cesta souboru, ve kterém jsou uložena data zatížení linek, AP a ethernetového segmentu. Struktura tohoto souboru je popsána dále. |
ne, zobrazení zatížení bude ignorováno |
| appngpath |
Cesta k souboru antény u AP s jednou anténou. |
ano |
| appng2path |
Cesta k souboru antény u AP se dvěma sektory. |
ano |
| lanpngpath |
Cesta k souboru obrázku označující ethernetový segment. |
ano |
<paths>
<!-- result's paths -->
<reshtmlpath>result.html</reshtmlpath>
<respngpath>result.png</respngpath>
<!-- source's paths -->
<sourcepath>source.html</sourcepath>
<loadfile>load.xml</loadfile>
</paths>
</configuration> |
c) Sekce routertypes - typy zařízení na sítí
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| rid |
Unikátní ID typu, pomocí kterého se na typ odkazujete. |
ano |
| dimension |
Rozměr boxu zařízení na výsledné mapě. |
ne, 68x38 |
| color |
Barva boxu na výsledné mapě. Formát je RGB: R G B. |
ne, černá |
| information |
Další příznaky zařízení: ip, location, name. Pokud jsou tyto příznaky přítomny, na boxu se zobrazí příslušná informace. Kromě toho můžete definovat barvu a velikost popisku a to v následujícím formátu. Např: comment(R, G, B, S), kde R, G a B jsou barevné složky a S je velikost v bodech (parametr S není povinný). Pokud je S záporné, vybírají se nativní fonty knihovny GD v rozmezí 0 až -4. V kladných hodnotách se použije TT font pokud je definován, v opačném případě se opět vybere nativní font.
Příznak border zapne kolem boxu rámeček. Parametry mají následující formát: (W, R, G, B), kde W je šířka čáry rámečku a R, G a B jsou barevné složky. |
ne |
| shadow |
Pokud je tato hodnota true, nastaví pěkný stín u krabiček zařízení. |
ne, false |
| switch |
Pokud je tento příznak nastaven na true, bude tato třída zařízení brána jako switch na síti a není možná určit, zda-li takové zařízení žije, tudíž linky k takovému zařízení budou vždy zelené. |
ne, false |
<routertype>
<rid>0</rid>
<!-- dimensions of the router box -->
<dimension>70 40</dimension>
<!-- RGB format -->
<color>84 180 229</color>
<!-- text on the box -->
<information>ip location(128,100,50) name(0,0,0,5) border(1,0,0,0)</information>
</routertype> |
d) Sekce linetypes - typy linek na sítí
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| lid |
Unikátní ID typu, pomocí kterého se na typ odkazujete. |
ano |
| width |
Šířka čáry v pixelech. |
ne, 3 |
| linedesc |
Popisek, který se zobrazí jako tooltip na lince. |
ne, prázdný řetězec |
<linetype>
<lid>0</lid>
<width>2</width>
<linedesc>100Mbit</linedesc>
</linetype> |
e) Seznam zařízení na síti
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| name |
Název zařízení, které se zobrazí na boxu. |
ano |
| rtype |
ID typu routeru definované výše v souboru. |
ano |
| position |
Pozice na mapě v souřadnicích mřížky. |
ano |
| ip |
IP adresa, na kterou se zařízení testuje. Tímto tagem nadefinujete výchozí rozhraní. Tento tag můžete vynechat a výchozí rozhraní nastavit v sekci interfaces. Popis v části 5. |
ne |
| comment |
Dodatečná informace o zařízení primárně určená pro umístění. |
ne, prázdný řetězec |
| routerurl |
Odkaz, který bude umístěn na ploše boxu zařízení. |
ne, prázdný řetězec |
| lansegment |
Parametr určí, zda-li je zařízení obsahuje LAN rozhraní a nakreslí značku vedle boxu. Může nabývat true nebo false hodnot. |
ne, false |
| lanurl |
Odkaz, který bude umístěn na značku LAN rozhraní v případě, že předchozí parametr je true. |
ne, prázdný řetězec |
| accesspointtype |
Parametr určí, zda-li je zařízení je AP a nakreslí značku vedle boxu. Může nabývat 0 pro router bez AP, 1 pro AP s jednou anténou a 2 pro AP se dvěma sektory. |
ne, 0 |
| apurl |
Odkaz, který bude umístěn na značku AP rozhraní v případě, že předchozí parametr je true. |
ne, prázdný řetězec |
| underconst |
Tento tag nastavený na true způsobí, že daný router se bude pokládat explicitně za mimo provoz a všechny linky k němu vedoucí půjdou do modra. |
ne, false |
| essid |
ID sítě, tento řetězec bude umístěn na značku AP. |
ne, prázdný řetězec |
| ap2url |
Platí pouze u AP se dvěma sektory. Definuje odkaz na druhý sektor. |
ne, prázdný řetězec |
| essid2 |
Platí pouze u AP se dvěma sektory. Definuje ESSID druhého sektoru. |
ne, prázdný řetězec |
| interfaces |
umožňuje definovat více rozhraní, podrobný popis je v části 5 |
ne, prázdný řetězec |
Kromě těchto atributů má každé zařízení definováno unikátní ID v rámci konfiguračního souboru. Pomocí tohoto ID se na router můžeme odkazovat z definice linky (viz. dále). Toto ID je přímo v tagu router jako routerID.
<router routerID="JMENOZARIZENI">
<name>JMENOZARIZENI</name>
<rtype>2</rtype>
<ip>10.26.128.41</ip>
<location>LOKACE</location>
<routerurl>http://www.apweb.cz/</routerurl>
<position>35 117</position>
<lansegment>true</lansegment>
<lanurl></lanurl>
<accesspointtype>1</accesspoint>
<apurl></apurl>
<essid>ESSID AP</essid>
</router> |
f) Seznam linek mezi zařízeními
| Název tagu |
Význam |
Povinný a výchozí hodnota |
| ltype |
ID linky, linky se definují pomocí tagu linetype (viz. výše).
|
ano |
| lineurl |
Odkaz, který je umístěn na lince. Může odkazovat třeba na statistiky apod. |
ne, prázdný řetězec |
| ltitle |
Titulek, který je zobrazen na lince. Pokud není tento parametr zadán, nastaví se implicitní titulek (viz. tabulka výše). |
ne, prázdný řetězec |
| underconst |
Tento příznak (hodnota true) zaručí, že linka bude explicitně modrá. Může například vyjadřovat, stav trvale linky mimo provoz nebo ve výstavbě. |
ne, false |
Linka obsahuje atributy, kterými se odkazuje na zařízení, které spojuje. Tyto ID jsou definovány výše u zařízení. ID je přímo u tagu line jako connection ve formátu "ROUTER1_ID ROUTER2_ID".
<line connection="ROUTER1 ROUTER2">
<ltype>1</ltype>
<ltitle>1</ltitle>
<lineurl>http://router1/stats/wlan1.htm</lineurl>
<underconst>true</underconst>
</line> |
O tom jak linku připojit na konkrétní interface je pojednáno v části 5. Zpět |
5) Router s více rozhraními
Router může mít nyní více síťových rozhraní, které jsou použity u linek (viz. dále ). Obecně se rozhraní definuje takto:
<router routerID="JMENOZARIZENI">
...
<interfaces>
<interface>
<name>eth0</name>
<ip>48.2.1.8</ip>
</interface>
...dalsi rozhrani...
</interfaces>
...
</router> |
Takto jsme definovali rozhraní eth0 s požadovanou IP adresou. Aby konfigurační soubor byl zpětně kompatibilní, umožňuje nechat tag IP i vně tagu interfaces (prostě tak jak to bylo). V tomto případě se vytvoří default rozhraní (bezejmenné). Toto rozhraní se vytvoří i tak, že při definici nového rozhraní vynecháte jméno (čili tag name). Default rozhraní je důležité pokud nechcete explicitně vyjadřovat na které rozhraní je linka připojena. Z toho plyne, že starý konfigurační soubor bude fungovat beze změn tak, že každý router bude mít jedno default rozhraní a linky spojí právě tyto rozhraní.
Router, na který je linka připojena, nyní může mít více rozhraní. K těm se přistupuje přes operátor ":" (dvojtečka). Například:
<line connection="ROUTER1:eth0 ROUTER2:eth1">
<ltype>1</ltype>
<ltitle>1</ltitle>
<lineurl>http://router1/stats/wlan1.htm</lineurl>
</line> |
Předpoklad je, že router ROUTER1 má rozhraní eth0 a ROUTER2 rozhraní eth1. Pokud neuvedete žádné rozhraní, použije se default rozhraní. Díky tomu je konfigurační soubor zpětně kompatibilní a nemusíte všechny rozhraní explicitně pojmenovat.
Pro kontrolu je dobré použít parametr verbose (--v), zde je totiž vidět které rozhraní se testuje.
Zobrazení IP adresy na routeru
Pokud má router definovaný default rozhraní, zobrazí se jeho IP (samozřejmě pokud je povoleno), v opačném případě se zobrazí IP jeho prvního rozhraní.
Chybové stavy:
Pokud konfigurátor připojí linku na rozhraní, které není definované v tagu router, program vypíše chybu a skončí.
Pokud se pokusí připojit na default rozhraní a toto rozhraní daný router nemá (čili všechna jeho rozhraní mají jména a vnější tag ip není použit), program vypíše varování a linku připojí na první definované rozhraní (to pojmenované).
Zpět |