Jak popsat strukturu site klfree?

Milan Krčmář milan.krcmar na seznam.cz
Úterý Září 2 00:09:01 CEST 2003


Ahoj,

toto je mail urceny "technicke" nebo "vyvojove" skupine, bezni uzivatele to
nemusi ani cist.

Cetl jsem, ze u Radka vznika nejaky popis site. Pred casem jsem premyslel, jak
v databazi namodelovat nasi sit, aby se z toho daly generovat konfigurace,
statistiky, seznam majetku atd atd. Zkousel jsem si ten ukol zjednodusit,
modelovat jen neco, ale podle mne to nejde, proste je potreba postihnout uplne
kazdy detail site, adresy, zatizeni, vnitrni funkce routeru, kabely, anteny.
Toto je potreba mit v databazi nejen pro spolecne casti site, ale je nutne
takto detailne zaznamenat i stav u "klientu".

Vlastni popis dat v databazi je dost slozity problem a chtel bych o nem dale
diskutovat. Je to stezejni vec a musime tim zacit. Jeden z vystupu, ktere by
se mely dat z databaze generovat, je nejake graficke schema site. O tom bude
nasledujici text.

Grafickym schematem se zabyvam umyslne, protoze se na nem da dobre ukazat
slozitost celeho problemu. Cilem je, aby se z databaze vygeneroval nejaky
klikaci obrazek, schema cele site - jak co je k cemu pripojene, jake to ma
adresy, kanaly a pod. Schema, ktere se zabyva vlastnimi spoji a ne tim, kde
ktere zarizeni lezi (na to je mapa, coz je jiny vystup).

Schema by slo jiste nakreslit ve forme nejakeho grafu. O grafech je cela
matematicka teorie (kdo to neznate): pojmem graf se mysli sada objektu
propojenych carami, objektum se rika uzly nebo vrcholy, spojovacim caram se
rika hrany. Pokud na kazde hrane udelam na jedne jeji strane sipku (dam ji
smer), jde o orientovany graf, pokud sipky nedelam, jde o neorientovany graf.
Mam program, ktery z popisu grafu dokaze nakreslit jeho obrazek tak, ze si
uzly sam vhodne rozmisti. Vstupem je textovy soubor popisujici strukturu
grafu, vystupem je obrazek. Program se jmenuje dot.

V programu dot lze nastavit u kazdeho uzlu tvar (obdelnik, kruznice, elipsa
atd.), barvu, vypln a textovy popis. Kazde hrane muzeme priradit tloustku,
barvu, a take textovy popis. Toho jsem vyuzil na prvni nastrel schematu.
Hrany znamenaji spoje, to je ja
1000
sne. Pro vrcholy jsem ale vymyslel pouziti
nekolika tvaru:

elipsa - ethernetove rozhrani
obdelik - bezdratove rozhrani na strane klienta
sestiuhelnik - bezdratove rozhrani na strane AP
kosoctverec - routovani mezi ruznymi IP sitemi
lichobeznik - bridge (vlastne switch s IP adresou)
tecka - bridge nebo hub

Tento velky pocet tvaru je proto, abych mohl popsat sit detailne. V priloze
je soubor net.png, k dalsimu popisu se na nej podivejte:

Hned nahore je velky obdelnik "linksys". Velky obdelnik ohranicuje jedno
fyzicke zarizeni. Teorie grafu nic takoveho nema, lze chapat jako podgraf a
program dot to umi. Linksys je hardwarove APcko na Vodojemu. Ma ethernetovy
port (oval nahore), Wi-Fi port (obdelnik dole) a mezi nimi jakysi switch nebo
chcete-li bridge s vlastni IP adresou 192.168.30.2, coz je ten lichobeznik
uprostred.

Prejdeme k mrskovi. Mrsk je router, vnitrek operacniho systemu, ktery routuje,
je znazornen tim kosoctvercem. Wlan2 je Wi-Fi rozhrani s adresou 192.168.30.60,
ktere je napojene na linksys, tento spoj je klient-to-klient, proto jsou na
obou stranach obdelniky. Dale je na Mrskovi interface wlan1, ktery jede jako
klient na Iris a ma adres 192.168.133.17. Potom tu mame ethernetovy port eth1,
ktery ma adresu 192.168.134.1 a pro jednoduchost na nem neni nic pripojeno (ve
skutecnosti je na nem pripojen DLink na Bustehrad). A dale tu mame komplikaci.
Mrsk ma na severni strane plechovku v rezimu AP, ktera je napojen na WiFi kartu
wlan0, sestiuhelnik je AP. Dale ethernet rozhrani eth0. Mezi wlan0 a eth0 je
uvnitr v mrskovi udelan most neboli switch. Ten se v linuxu tvari jako
interface br0 a ma adresu 192.168.129.1.

Iris je router u mne doma, ma WiFi kartu wlan0 v rezimu AP s adresou 192.168.133.1 a dale ethernet kartu eth0 s adresou 192.168.130.1. Mezi obema normalne routuje. Karta eth0 je napojena do switche, to je ten velky obdelnik dole, pro nazornost je nakreslen ctyrportovy switch, i kdyz ve skutecnosti je portu 8.

Jeste tu mame klienta Chlebika, ktery ma PC a v nem WiFi kartu. V nasem
podrobnem schematu je to obdelnik eth0 - klient na AP Iris a routovaci jadro.

Dale si vsimnete IP adres. Nektera zarizeni adresy maji, jina ne. Mezi routery
je vzdy jedna adresni podsit, z toho obrazku je to velmi dobre citelne, protoze
to je vzdy obast mezi kosoctverci. V ramci jedne podsite je vzdy nejaka
brana, u te jedine je udaj o masce podsite (to je to cislo za lomitkem).

Vsimnete si, jak je ten obrazek (bohuzel) ruznorody. Napriklad u linksysu nemam
nazvy portu, jen IP adresu prostredniho, u Mrska nazvy mam, ale u nekterych
nemam IP adresy, u switche nemam zadne jmedno ani IP, ale zase mam pojmenovane
vsechny porty atd atd.

V te podobe, jak je udelany obrazek, je to nejpodrobnejsi schema. Pokud dokazu
vygenerovat takovou podrobnou verzi, dokazu vygenerovat i verzi jednodussi, ve
ktere sloucim nektere veci dohromady: napriklad linksys muze byt jen jako jeden
obdelnik, podobne switch jako jediny oval, vnitrni struktura irisu a mrska se
zjednodusi.

Mohu take generovat pri klikani z WWW ruzne jine varianty, napriklad vybravit
cervene konkretni sit nebo routovaci cestu, zobrazit jen cast site, po kliknuti
na AP ukazat dalsi udaje jako kanal, MAC a pod., po kliknuti na interface
routeru zobrazit aktualni vytizeni.

Jeste jedna poznamka. Pro popis siti se pouzivaji neorientovane grafy, tj.
grafy bez sipek. Program dot je umi taky, ale nedokaze v nich udelat to
seskupovani (3 uzly v Irisu jsou sdruzeny dohromady vetsim obdelnikem a tvori
Iris). Kdyz chci seskupeni, musim orientovat, aspon vnitrne (lze vypnout
zobrazeni hrotu sipek, ale dot bude mit interne porad uchovano, ze tam sipka s
danou orientaci je). Nakonec to ale vubec nevadi, nasi sit je mozne orientovat,
a to presne tak, jak jsem to udelal: pripojeni do Internetu je na vrcholu site
a vsechny sipky vedou smerem z Internetu dovnitr, z toho je take krasne videt,
kolik preskoku je mezi danym mistem site a Internetem, coz je velice zajimavy
udaj. Nesnese se to s cykly v grafu, ale to se da resit.

---

Shrnuti:

Chtel jsem ukazat moznost grafickeho modelovani nasi 
1000
site, ktere by fungovalo
zcela automaticky nad nejakou databazi. Sledoval jsem tim dve veci: jednak si
udelate predstavu o tom, jak detailni musi byt model v databazi, jednak si
muzete predstavit, jak bude udelano prave toto generovani schematu. Prilozeny
obrazek jsem vygeneroval pomoci programu dot, zdrojak, ktery jsem predlozil
dotovi ke zpracovani, je rovnez v priloze, jmenem net.dot. Jeho format je asi
zhruba jasny.

Milan
------------- další část ---------------
Netextová příloha byla odstraněna...
Jméno: net.png
Typ: image/png
Velikost: 9017 bytes
Popis: [žádný popis není k dispozici]
Url : http://sluzby.klfree.net/pipermail/kladno/attachments/20030902/0a5081eb/net.png
------------- další část ---------------
digraph G {
    subgraph cluster_linksys {
        label=linksys;
        linksys_eth0 [label=""];
        linksys_br0 [label="30.2" shape=trapezium];
        linksys_wlan0 [label="" shape=box];
        linksys_eth0->linksys_br0->linksys_wlan0;
    }
    subgraph cluster_mrsk {
        label=mrsk;
        mrsk_wlan2 [label="wlan2\n30.60" shape=box];
        mrsk_router [shape=diamond label=""];
        mrsk_wlan2->mrsk_router;
        mrsk_wlan1 [label="wlan1\n133.17" shape=box];
        mrsk_router->mrsk_wlan1;
        mrsk_eth1 [label="eth1\n134.1"];
        mrsk_router->mrsk_eth1;
        mrsk_br0 [label="br0\n129.1/24" shape=trapezium];
        mrsk_router->mrsk_br0;
        mrsk_wlan0 [label="wlan0" shape=hexagon];
        mrsk_br0->mrsk_wlan0;
        mrsk_eth0 [label="eth0"];
        mrsk_br0->mrsk_eth0;
    }
    linksys_wlan0->mrsk_wlan2;
    subgraph cluster_iris {
        label=iris;
        iris_wlan0 [label="wlan0\n133.1/24" shape=hexagon];
        iris_router [shape=diamond label=""];
        iris_wlan0->iris_router;
        iris_eth0 [label="eth0\n130.1"];
        iris_router->iris_eth0;
    }
    mrsk_wlan1->iris_wlan0;
    subgraph cluster_chlebik {
        label=chlebik;
        chlebik_eth0 [label="eth0\n133.6" shape=box];
        chlebik_router [shape=diamond label=""];
        chlebik_eth0->chlebik_router;
    }
    iris_wlan0->chlebik_eth0;
    subgraph cluster_sw1 {
        label="";
        sw1_switch [label="" shape=point];
        sw1_port0 [label="port0"];
        sw1_port0->sw1_switch;
        sw1_port1 [label="port1"];
        sw1_switch->sw1_port1;
        sw1_port2 [label="port2"];
        sw1_switch->sw1_port2;
        sw1_port3 [label="port3"];
        sw1_switch->sw1_port3;
    }
    iris_eth0->sw1_port0;
}


Další informace o konferenci Kladno