Virtlab:Řídící server/Mapovací algoritmus

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Verze z 17:08, 22. 2. 2007
Vav166 (Diskuse | příspěvky)

← Předchozí porovnání
Verze z 22:51, 22. 2. 2007
Vav166 (Diskuse | příspěvky)

Následující porovnání →
Řádka 1: Řádka 1:
 +== Popis ==
Celkový postup mapovacího algoritmu: Celkový postup mapovacího algoritmu:
# '''rychlé ověřění jednoduchých podmínek''', jestli má mapování šanci na úspěch # '''rychlé ověřění jednoduchých podmínek''', jestli má mapování šanci na úspěch
Řádka 7: Řádka 8:
## '''srovnání ''speciálních'' vlastností jednotlivých linek''' a rozhraní zařízení ve vybavení. Pokud je v topologii po některé lince požadována speciální vlastnost, musí tuto vlastnost mít obě rozhraní, které tvoří konce této linky. Takže na každou vlastnost linky musí připadat alespoň dvě vlastnosti rozhraní. ## '''srovnání ''speciálních'' vlastností jednotlivých linek''' a rozhraní zařízení ve vybavení. Pokud je v topologii po některé lince požadována speciální vlastnost, musí tuto vlastnost mít obě rozhraní, které tvoří konce této linky. Takže na každou vlastnost linky musí připadat alespoň dvě vlastnosti rozhraní.
##* použije se funkce <tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getEdgesFeatures()</tt>, jejíž výstupní seznam se zdvojí funkcí <tt>[[Virtlab:SupportFunctions.php.inc|DoubleArrayItems]]</tt>. Teto seznam se poravná funkcí <tt>[[Virtlab:SupportFunctions.php.inc|array_porovnej]]</tt> (kvůli duplicitním hodnotám nejde použít <tt>[http://www.php.net/array_diff array_diff]</tt>) s výstupem funkce <tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesInterfacesFeatures()</tt>. array_diff] ##* použije se funkce <tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getEdgesFeatures()</tt>, jejíž výstupní seznam se zdvojí funkcí <tt>[[Virtlab:SupportFunctions.php.inc|DoubleArrayItems]]</tt>. Teto seznam se poravná funkcí <tt>[[Virtlab:SupportFunctions.php.inc|array_porovnej]]</tt> (kvůli duplicitním hodnotám nejde použít <tt>[http://www.php.net/array_diff array_diff]</tt>) s výstupem funkce <tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesInterfacesFeatures()</tt>. array_diff]
 +# '''vlastní mapovací část'''
 +## ze seznamu zařízení (<tt>[[Virtlab:ParserEquipment.php.inc|virtlabParserEquipment]]::getDevicesList()</tt>) a vrcholů linek virtuální topologie (<tt>[[Virtlab:ParserTopology.php.inc|virtlabParserTopology]]::getVertexesList()</tt>) se vytvoří dvojrozměrné pole (indexováno prvky ze získaných seznamů), jehož hodnoty jsou <tt>0</tt> pokud příslušný prvek nemůže být daným vrcholem. Nebo pole, určující na kterých linkách může být které rozhraní - zajištěno funkcí <tt>[[Virtlab:Mapping.php.inc|virtlabMapping]]::Availability($device, $vertex)</tt> (viz ukázka1):
 +##*
-...+== Ukázky ==
 +'''ukázka 1:'''
 + Array
 + (
 + [ra] => Array
 + (
 + [swa] => 0
 + [r7] => Array
 + (
 + [Kacena] => Array
 + (
 + [2] => s0/2/2
 + )
 + [Kocour] => Array
 + (
 + [4] => s0/2/4
 + [3] => s0/2/3
 + [2] => s0/2/2
 + [1] => s0/2/1
 + [0] => s0/2/0
 + )
 + )
 + [r5] => 0
 + [r3] => 0
 + [r1] => 0
 + )
 + [rb] => Array
 + (
 + [swa] => 0
 + [r7] => Array
 + (
 + [Kocour] => Array
 + (
 + [4] => s0/2/4
 + [3] => s0/2/3
 + [2] => s0/2/2
 + [1] => s0/2/1
 + [0] => s0/2/0
 + )
 + )
 + [r5] => Array
 + (
 + [Kocour] => Array
 + (
 + [0] => s0/0
 + )
 + )
 + [r3] => Array
 + (
 + [Kocour] => Array
 + (
 + [0] => s0
 + )
 + )
 + [r1] => Array
 + (
 + [Kocour] => Array
 + (
 + [2] => s0/1/1
 + [1] => s0/2/1
 + [0] => s0/1/0
 + )
 + )
 + )
 + [rc] => Array
 + (
 + [swa] => 0
 + [r7] => 0
 + [r5] => Array
 + (
 + [Krokodyl] => Array
 + (
 + [1] => gi0
 + )
 + )
 + [r3] => Array
 + (
 + [Krokodyl] => Array
 + (
 + [2] => fa0/1
 + [1] => fa0/0
 + )
 + )
 + [r1] => 0
 + )
 + [rd] => Array
 + (
 + [swa] => 0
 + [r7] => 0
 + [r5] => Array
 + (
 + [Kacena] => Array
 + (
 + [0] => s0/0
 + )
 + [Krokodyl] => Array
 + (
 + [1] => gi0
 + )
 + )
 + [r3] => 0
 + [r1] => 0
 + )
 + )
 + 
 +== Zdrojové XML soubory ==
 +=== Topologie ===
 +=== Vybavení ===
[[Kategorie:Diplomová práce]] [[Kategorie:Diplomová práce]]
[[Kategorie:Jan Vavříček]] [[Kategorie:Jan Vavříček]]

Verze z 22:51, 22. 2. 2007

Obsah

Popis

Celkový postup mapovacího algoritmu:

  1. rychlé ověřění jednoduchých podmínek, jestli má mapování šanci na úspěch
    1. srovnání typů zařízení ve vybavení a virtuální topologii. Pokud je třeba mít v topologii typ zařízení, které nemáme mezi vybavením, tak není třeba s mapováním pokračovat - nepovede se.
    2. srovnání speciálních vlastností zařízení v topologii a vybavení. Pokud v topologii požaduji po zařízení určitou speciální vlastnost, která se v celém vybavení vůbec nevyskytuje - mapování se nepovede.
    3. srovnání speciálních vlastností jednotlivých linek a rozhraní zařízení ve vybavení. Pokud je v topologii po některé lince požadována speciální vlastnost, musí tuto vlastnost mít obě rozhraní, které tvoří konce této linky. Takže na každou vlastnost linky musí připadat alespoň dvě vlastnosti rozhraní.
  2. vlastní mapovací část
    1. ze seznamu zařízení (virtlabParserEquipment::getDevicesList()) a vrcholů linek virtuální topologie (virtlabParserTopology::getVertexesList()) se vytvoří dvojrozměrné pole (indexováno prvky ze získaných seznamů), jehož hodnoty jsou 0 pokud příslušný prvek nemůže být daným vrcholem. Nebo pole, určující na kterých linkách může být které rozhraní - zajištěno funkcí virtlabMapping::Availability($device, $vertex) (viz ukázka1):

Ukázky

ukázka 1:

Array
(
   [ra] => Array
       (
           [swa] => 0
           [r7] => Array
               (
                   [Kacena] => Array
                       (
                           [2] => s0/2/2
                       )
                   [Kocour] => Array
                       (
                           [4] => s0/2/4
                           [3] => s0/2/3
                           [2] => s0/2/2
                           [1] => s0/2/1
                           [0] => s0/2/0
                       )
               )
           [r5] => 0
           [r3] => 0
           [r1] => 0
       )
   [rb] => Array
       (
           [swa] => 0
           [r7] => Array
               (
                   [Kocour] => Array
                       (
                           [4] => s0/2/4
                           [3] => s0/2/3
                           [2] => s0/2/2
                           [1] => s0/2/1
                           [0] => s0/2/0
                       )
               )
           [r5] => Array
               (
                   [Kocour] => Array
                       (
                           [0] => s0/0
                       )
               )
           [r3] => Array
               (
                   [Kocour] => Array
                       (
                           [0] => s0
                       )
               )
           [r1] => Array
               (
                   [Kocour] => Array
                       (
                           [2] => s0/1/1
                           [1] => s0/2/1
                           [0] => s0/1/0
                       )
               )
       )
   [rc] => Array
       (
           [swa] => 0
           [r7] => 0
           [r5] => Array
               (
                   [Krokodyl] => Array
                       (
                           [1] => gi0
                       )
               )
           [r3] => Array
               (
                   [Krokodyl] => Array
                       (
                           [2] => fa0/1
                           [1] => fa0/0
                       )
               )
           [r1] => 0
       )
   [rd] => Array
       (
           [swa] => 0
           [r7] => 0
           [r5] => Array
               (
                   [Kacena] => Array
                       (
                           [0] => s0/0
                       )
                   [Krokodyl] => Array
                       (
                           [1] => gi0
                       )
               )
           [r3] => 0
           [r1] => 0
       )
)

Zdrojové XML soubory

Topologie

Vybavení