Nagysebességű terheléselosztó tervezése csomagkapcsoláshoz

OData támogatás
Konzulens:
Dr. Szabó Róbert
Távközlési és Médiainformatikai Tanszék

Napjainkban a számítógépes szolgáltatásokat egyre szélesebb tömegek veszik igénybe.

A szolgáltatások nyújtásához egyetlen szerver rendszerint nem elegendő, minden, nagyobb felhasználószámot kiszolgáló infrastruktúra sok szervert igényel.

A felhasználók számára könnyebbség ha egy szolgáltatáshoz csak egy címet kell megjegyezni, ezért vezették be a terhelés-elosztót, ami egy nagyteljesítményű hálózati eszköz, a felhasználói oldalról egy szervernek látszik, a szolgáltatást pedig a mögötte elhelyezett szerverpark biztosítja.

A terhelés-elosztás feladatára több megoldás is napvilágot látott.

A legegyszerűbb megoldás a DNS alapú elosztás, léteznek szoftveres terhelés-elosztók mint például az LVS illetve a legnagyobb feladatok kiszolgálására hardveres megoldások kaphatók a piacon.

Mivel a terhelés-elosztás olyan igény ami az Internet elterjedésénél később merült fel ezért nem illeszthető bele könnyen valamelyik hálózati protokollba, szabványba vagy eszközbe, másként megfogalmazva több, rendszertechnikai szempontból egészen eltérő megoldás is létezik a problémára.

Ezeknek mind megvannak a maguk előnyei és hátrányai, amelyek a megoldásokat összepárosítják egy-egy specifikusabb problémával.

Nincs tehát egyetlen, generikus megoldás a terhelés-elosztásra, sok megoldás van amelyek mindegyike életképes egy megadott területen.

A hálózati switchek a számítógép hálózatok alapvető elemei, az elmúlt évtizedekben nagy változáson mentek keresztül.

Több gyártó is a piacon van termékeivel, melyekhez saját vezérlési protokollt hoztak létre.

A switchek vezérlési protokollját egységesítendő jött létre az OpenFlow kezdeményezés majd szabvány a Stanford Egyetemen 2008-ban.

A kezdeményezés gyorsan terjedt, a nagy switch gyártók kezdik implementálni az OpenFlow-t switcheikben.

A protokoll képes switching és routing szabályok definiálására.

Tartalmaz olyan szabályokat amelyek kiegészítésével bevezethető a terhelés-elosztás feladata.

Jelen munkámban egy meglévő, szoftver-alapú OpenFlow-switchet egészítettem ki a szabvánnyal összhangban terhelés-elosztó funkcióval.

Az általam alkalmazott OpenFlow-switch az Intel DPDK open-source függvénykönyvtárat használja aminek a segítségével nagysebességű hálózati eszközöket lehet megvalósítani általános célú Intel hardveren.

Több fajta terhelés-elosztó algoritmust is implementáltam, a legegyszerűbb a round-robin; a flow konzisztenciát nyújtó hash-alapú;

a széles körben elterjedt asszociatív tömb-implementáció -- a hash-tábla; illetve a friss kutatási területnek számító, ezen a területen még nem elterjedt Bloom-filter alapú algoritmust.

Ezeket a dolgozatomban mind részletesen ismertetem.

A terhelés-elosztással kiegészített OpenFlow-switchet megfelelő hardveren ki is próbálom, funkcionális és teljesítmény-teszteket végzek.

Az eszköz képes lesz algoritmustól és feladattól függően 100000-500000 csomag / másodperces forgalom feldolgozására illetve akár több millió flow egyidejű tárolására, ami a program többszálúsításával megtöbbszörözhető lesz.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.