Forgalom igény tudatos hálózat tervezés

Készítette:

Szecsődi Imre

Programtervező informatikus
MSc

Budapest, 2020

Témavezető:

Dr. Lukovszki Tamás

Egyetemi docens, PhD

Megjegyzés

  • A diplomamunka a C. Avin, K. Mondal, and S. Schmid. Demand-aware network design with minimal
    congestion and route lengths cikket ([4]) vette alapjául.

Motiváció

  • A technika előrehaladásával egyre nagyobb lett a feldolgozandó adatok mennyisége
  • Adattárházakban a szerverek közötti kommunikáció is megnövekedett ezáltal
  • A jelenlegi hálózatok a legrosszabb esetre vannak tervezve, azaz, hogy majdnem teljes sávszélességű, kétirányú kapcsolat álljon fent bármelyik két szerver között
  • A valós kommunikáció nem ezt a sémát követi, hanem túlnyomó részt megadott párok között történik a legtöbb kommunikáció

Valós forgalmi adatok ([5])

  • Microsoft Research ProjecToR adatai, Microsoft adattárházában  250 ezer szervert 5 production klaszterben elosztva

Hálózat tervezési stratégiák

  • A technika fejlődésével elérhetővé váltak eszközök arra, hogy egy adott hálózatot újra konfiguráljunk, attól függően milyen terhelés éri
    • pl, korábbi kommunikációs minták alapján
  • Két fő optimalizációs lehetőség van, legyen rövid az út (a) vagy legyen minimális a torlódás (b)
  • A cikk bemutat egy módszert arra, hogy lehet mindkettőre majdnem optimális megoldást adni egyszerre (c)

Újrakonfigurálás megvalósítása

  • Átlag hálózatok statikusan vannak konfigurálva, nem  sok lehetőséget adva annak, hogy változtassunk
    • pl. Ethernet switch

Újrakonfigurálás megvalósítása

  • Optikai switchek már újra tudják konfigurálni magukat, de ezek "lassúak"

Újrakonfigurálás megvalósítása ([5])

  • Microsoft Research - ProjecToR, lézer segítségével kiváltani az optikai swticheket
    • 12 µs váltás idő ( 2500x gyorsabb mint egy optikai hálózati switch)

Forgalom igény tudatos hálózat tervezés probléma

  • Vegyünk egy hálózatot meghatározott számú csomóponttal
  • A hálózathoz tartozik egy demand mátrix, ami leírja a valószínűségét annak, hogy \(i\) forrásból mekkora eséllyel lesz adat küldve \(j\) célba
  • A cél, hogy ezen adatból egy olyan hálózati séma készítése, ami kis torlódást és rövid utakat eredményez, ez mellett még skálázható is

Példa ([4])

Formális felírás

  • Adott N darab csúcspont  V = {1, ..., N}, és egy kommunikációs séma \( M_D \), ami egy N×N mátrix
  • A mátrix \((i, j)\) eleméhez tartozik egy \(p(i, j)\) valószínűség, ahol \(i\) a forrás csomópont és \(j\) a cél
  • A bemeneti mátrix ábrázolható egy irányított \(G_D\) gráfban, ahol az élsúlyok a két pont közötti kommunikációs valószínűségek
  • Az algoritmus feltétele, hogy a mátrix ritka legyen

Formális felírás

  • Egy N hálózatra a torlódást és az úthosszt útválasztási sémával fogjuk definiálni
  • Egy útválasztási séma az N hálózatra \(\Gamma(N)\), ami a \(\Gamma_{uv}\) utak halmaza, ahol \((u, v)\) párok különböző utakat jelölnek

Torlódás

  • (Definíció 1) A torlódást egy \(\Gamma(N)\) útválasztási sémán a \(D\) demand mátrix segítségével írjuk fel: \[C(D, \Gamma(N)) = \max_{e \in \Gamma(N)}  \sum_{e \in \Gamma(uv)} p(u,v) \]

Úthossz

  • (Definíció 2) Az átlag súlyozott úthosszt egy \(\Gamma(N)\) útválasztási sémán a \(D\) demand mátrix segítségével írjuk fel: \[L(D, \Gamma(N)) = \sum_{(u,v) \in D}  p(u,v)  \cdot d_{\Gamma(N)}(u, v) \] ahol a \(d_{\Gamma(N)}(u, v)\) az útvonal hosszát jelöli

Skálázhatóság

  • A hálózatot skálázhatóra kell tervezni, ezért meghatározunk egy \(\Delta\) konstans fokszámot, ami a maximális csatlakozások számát fogja meghatározni egy adott csomóponthoz

EgoTree - EgoFák

  • Az Egofa egy torlódásra és úthosszra optimalizált fa hálózat egy csomópontra nézve
  • Az Egotree-t definiáljuk a következő módon, \[EgoTree(s, \bar{p}, \Delta) \]
    • \(s\) a forrás csomópont
    • \(\bar{p}\) a szomszédainak eloszlásai
    • \(\Delta\) fokszám
  • Ez közel optimális megoldást ad torlódásra és úthosszra

\(EgoTree(s, \bar{p}, \Delta)\) algoritmus

  1. \(s\) a gyökér elem, \(\Delta\) fokszámmal, üres fa
  2. Rendezzük sorba \(\bar{p} = \{p1, p2, ..., p_k\}\) valószínűségeket csökkenő sorrendben
  3. Kezdjük rárakni a fára a csomópontokat, a gyökér elemre legfeljebb \(\Delta\) levél kerülhet
  4. Mikor elértük a \(\Delta\) levelet, a következő csomópontokat mindig a legkisebb összesített súlyú levélre kapcsoljuk rá, itt már legfeljebb két levele lehet minden fának

\( \{.24, .2, .1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

s

\( \{.2, .1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\( \{.1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\( \{.1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\( \{.1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\( \{.1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .20\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.10)\)

\( \{.07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .20\)

\(S_4 = .20\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\( \{.05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .20\)

\(S_4 = .20\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\( \{.02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .25\)

\(S_4 = .20\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\( \{.01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .25\)

\(S_4 = .22\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\( \{.01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .25\)

\(S_4 = .23\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\( \{\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .25\)

\(S_4 = .24\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((\alpha, \beta)\)-cl-DAN algortimus

  1. Felosztjuk a hálózat csúcsait két halmazra, \(H\) - magas és \(L\) - alacsony fokszámúakra fele-fele arányban
    • Az alacsony fokszámú csúcsok fokszáma legfeljebb \(2\rho\)
  2. Megkeressük az összes olyan \((u, v)\) élt, ahol \(u\) és \(v\) is a magas fokszámú halmazba tartozik
  3. Az ilyen éleket a gráfban kiegészítjük egy segítő csomóponttal, \(l \in L\), az eredeti csomópontok között megszüntetjük az élt, és felveszünk két új élt \((u, l)\) és \((v, l)\)
    • Minden segítő \(l\) csúcs választásakor egy még nem felhasználtat válasszunk az \(L\) halmazból

\((\alpha, \beta)\)-cl-DAN algortimus

  • 4. Meghatározunk egy mátrixot, ami első lépésben az eredeti
    • Ahol segítő csomópontot vettünk fel, ott az útvonal hosszához hozzá kell még adni az \(l\)-el való áthaladást is, és törölni kell az eredeti pontok közti élt
    • Ezután elkészítjük a magas halmaz csúcsaira a \(T_u\) fát, ahol a valószínűségeket a mátrixból kiolvassuk, \(\Delta = 12\rho\) fokszámmal, ez közel optimális megoldást ad mindkét megközelítésre

\((\alpha, \beta)\)-cl-DAN algortimus

  • 5. Mivel \(u\) és \(v\) pontok közt egy \(l\) segítő csomópont van használva, ezért \(T_u\) és \(T_v\) módosításra szorul. Alakítsuk át először \(T_u\)-t \(T'_u\)-ra
    • Ha \(l \notin T_u\), \((p(u, l) = 0)\), akkor \(l\) átveszi \(v\) helyét \(T'_u\)-ban
    • Ha \(l \in T_u\), \((p(u, l) \gt 0)\), akkor két lehetőségünk van:
      • Ha \((p(u, l) \gt (p(u, v))\), akkor töröljük \(v\)-t a fából
      • Ha \((p(u, l) \le (p(u, v))\), akkor \(l\) átveszi \(v\) helyét \(T'_u\)-ban
    • \(T'_v\) hasonlóan számítjuk ki, ezzel garantálva, hogy \(T'_u\) és \(T'_v\) közötti kommunikáció az \(l\) csomóponton keresztül fog áthaladni

5. lépés vizualizálása

\((\alpha, \beta)\)-cl-DAN algortimus

  • 6. Konstruáljuk meg az új N hálózatot, vegyük az előbb készített egofákat és vegyük az uniójukat, azaz húzzuk be az összes olyan élet amik szerepeltek a fákban
    • De mivel nem csak magas fokú csomópontok közt történhetett adatforgalom, ezért még vegyük hozzá az N hálózathoz azokat az éleket is, ahol mindkét csomópont alacsony fokszámú volt

\((\alpha, \beta)\)-cl-DAN algortimus példa

\((\alpha, \beta)\)-cl-DAN algortimus példa

\((\alpha, \beta)\)-cl-DAN algortimus példa

Véletlen gráfok

  1. Barabási-Albert modell, komplex hálózatok egy modellje ([1])
    • "preferential attachment", az újonnan becsatlakozó csomópontnak m már a hálózatban szereplő csomópontra kell kapcsolódnia

Véletlen gráfok

  • 2. Erdős-Rényi modell ([2])
    • az \(n\) csúcsú gráf éleit \(p\) valószínűséggel húzzuk be bármely két csúcs között, egymástól függetlenül.

Véletlen gráfok

  • 3. Csillaggráf ([3])
    • \(n\) csúcs esetén van egy központi csúcs a gráfban, amivel a maradék \(n-1\) csúcs kapcsolatban áll

Kiterjesztett modell

  • A diplomamunka alatt, több az Egófához hasonló fa építési startégia meg lett vizsgálva:
    • EgoBalance
    • Huffman fa
    • Sorfolytonos fa
    • Random fa
  • A cl-DAN algorimtus is kapott egy módosítást arra, hogy hogyan sorolja be a magas és alacsony halmazokat

EgoBalance

  • Az cl-DAN algoritmus csere lépésének módosítása
  • A cseréljük ki a szükséges csúcsokat, de mikor a szülő nélkül gyerekeket akarjuk visszacsatlakoztatni a gráfra, használjuk ki az EgoFa tulajdonságát, ami torlódásra nézve optimálisan szúrja be az elemeket

Huffman fa

  1. Vegyük a gyökérhez kapcsolódó csúcsok valószínűségét egy vektorba
  2. Rendezzük a vektort növekvő sorrendbe
  3. Vonjuk össze a vektor legelső két elemét, majd helyezzük vissza a vektorba és rendezzük újra növekvő sorrendbe
  4. Ezt addig csináljuk amíg az elemek száma nem éri el a maximális fokszámot - Elkészült a Huffman fa
  5. Köztes csomópontokat töltsük ki
    1. A gyökérre kapcsolódó ágakon gyűjtsük össze az összes levelet
    2. Rendezzük sorba a leveleket nehézség szerint csökkenő sorrendbe
    3. Építsünk teljes fát az ágon

\( \{.24, .2, .1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

s

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\((.16)\)

\((.20)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\((.16)\)

\((.20)\)

\((.20)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\((.16)\)

\((.20)\)

\((.20)\)

\((.36)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\((.16)\)

\((.20)\)

\((.20)\)

\((.36)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\((.02)\)

\((.04)\)

\((.09)\)

\((.16)\)

\((.20)\)

\((.20)\)

\((.36)\)

\( \{\}\)

s

\(p_1(.24)\)

\(p_2(.20)\)

\(p_3(.10)\)

\(p_4(.10)\)

\(p_5(.10)\)

\(p_6(.10)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

\(S_1 = .24\)

\(S_2 = .20\)

\(S_3 = .20\)

\(S_4 = .36\)

Sorfolytonos és Random fa

  1. Vegyük a gyökérhez kapcsolódó csúcsok valószínűségét egy vektorba
  2. Rendezzük a vektort csökkenő sorrendbe
    • Random fa esetén keverjük meg a vektor elemeit
  3. Építsünk teljes fát, ahol csomópont kapcsolódik a gyökér elemre

\( \{.24, .2, .1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

s

\( \{.2, .1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\( \{.1, .1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\( \{.1, .1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\( \{.1, .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .24\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\( \{ .1, .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .34\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\( \{ .07, .05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .20\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\( \{.05, .02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .27\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\(p_7(.07)\)

\( \{.02, .01, .01\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .32\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .10\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\(p_7(.07)\)

\(p_8(.05)\)

\( \{.01, .01\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .32\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .12\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\( \{.01\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .32\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .13\)

\(S_4 = .10\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\( \{\}\)

\(p_1(.24)\)

\(S_1 = .44\)

s

\(S_2 = .32\)

\(p_2(.20)\)

\(p_3(.10)\)

\(S_3 = .13\)

\(S_4 = .11\)

\(p_4(.10)\)

\(p_5(.1)\)

\(p_6(.1)\)

\(p_7(.07)\)

\(p_8(.05)\)

\(p_9(.02)\)

\(p_{10}(.01)\)

\(p_{11}(.01)\)

Módosított fa építés

  • Az első lépése a cl-DAN algoritmikusnak a csúcsok besorolása
  • A cikk szerint osszuk fel fele-fele arányban, de az alacsonyak ne haladják meg a \(2\rho\) fokszámot
  • A módosított változtat, hogy csak azok kerüljenek magas csúcsok közé, amik elérik a  \(2\rho\) fokszámot
  • Ezzel csökken a megépítendő fák mennyisége
  • Csillaggráf esetén jelentős a változás

Eredmények

Eredmények

Eredmények

Eredmények

Irodalomjegyzék

[1] Wikipédia - Barabási–Albert-modell
[2] Wikipédia - Csillaggráf
[3] Wikipédia - Erdős–Rényi modell

[4] C. Avin, K. Mondal, and S. Schmid. Demand-aware network design with minimal congestion and route lengths, April 2019

[5] M. Ghobadi, D. Kilper, R. Mahajan, A. Phanishayee, N. Devanur, J. Kulkarni, G. Ranade, P.-A. Blanche, H. Rastegarfar, and M. Glick. ProjecToR: Agile Reconfigurable Data Center Interconnect,  2016

Köszönöm a figyelmet!

Formagol igény tudatos hálózat tervezés

By Imre Secodi

Formagol igény tudatos hálózat tervezés

  • 91