Szolgáltatási háló minőségének emulációja [elkészült]

Leírás: A legtöbb dolog amit ma az interneten elérhetünk, valamilyen szolgáltatás orientált architektúrában áll a rendelkezésünkre. Egy népszerű szolgáltatási háló (service mesh) implementáció a Kubernetes, amit elterjedten használnak az ipar vezető szereplői. A Kubernetes nem tartalmaz beépített hálózatkezelést, azt külső megoldások CNI (Container Network Infrastructure) moduljaival valósítja meg. Több CNI modul is a rendelkezéünkre áll (Calico, Canal, Cilium, Flannel, WeaweNet, stb.) ezek közül tetszés szerint választhatunk. Ezek képességei viszont eltérőek, konfigurációjuk sem egységes. Egyik hiányosságuk, hogy nem nyújtanak lehetőséget a szolgáltatási háló speciális teszteléséhez, például limitált sávszélesség, vagy magas csomagveszteség körülményei között. A szakdolgozat célja egy olyan Kubernetes beépülő elkészítése, mely alkalmas Service vagy Pod szinten csomagvesztési arány vagy sávszélesség limitáció definiálására. A modul figyeli az újonnan induló konténereket vagy konténercsoportokat és alkalmazza a hálózati forgalmukra a definiált sávszélességet és csomagvesztési arányt.

Ajánlott kompetenciák:

  • C valamint Python vagy Go programnyelvek ismerete
  • GNU/Linux környezet alapos ismerete
  • Kísérletezőkedv, önálló proaktív feladatmegoldás

A munka menete és várható eredménye:

A modul a Linuxban elérhető eBPF és CGroup v2 technológiákat felhasználva a sávszélesség limitációs és csomagvesztés arányos funkciókat CNI független módon valósítja meg, így felhasználható bármilyen Kubernetes környezetben. A Kubernetes szabályos módon bővíthető, de rendelkezésre áll egy kliens API (Python verzió például) ami lehetőséget ad események figyelésére (pl. új podok indultak el, stb.). A pod leírók metadata mezőjében eltárholható a modulnak szánt infromáció (pl. bandwidth: 10Mbps, loss 2%) amit alkalmazni fog a forgalomra. A podkat az azonosítójuk alapján megkeresi (vagy ha API-n ez lekérdezhető, akkor onnan) a CGroup v2 hierarchiában, majd eBPF-ben előre megírt programot alkalmaz az adott CGroup forgalmára. Az eBPF programban látjuk az összes kimenő (és/vagy bejövő) forgalmat és szabadon dobhatunk el csomagokat az eBPF programban lévő általunk programozott logika szerint.

A munka várható eredménye egy nyílt forráskódú (lehetőleg Githubon elérhető) projekt, ami megvalósítja a leírásban foglaltakat. Az eredmény nagy eséllyel bemutatható Linuxal vagy Kubernetessel foglalkozó nemzetközi szakmai konferenciákon is (szerencsés esetben netdev, KubeCon).

Related