Data Plane Development Kit (DPDK) w zastosowaniach sieciowych, czyli Linux na sterydach

30 Maja 2022

Systemy Linux-like zdominowały świat i dziś nikt już nie ma co do tego żadnych wątpliwości. Każdy producent próbuje uszczknąć kawałek tortu zachwalając swoje urządzenie jako inteligentne czy też samowystarczalne. Niezliczoną ilość smartfonów (Android działa na jądrze Linux), telewizorów, urządzeń sieciowych (serwery, zapory sieciowe, routery) napędza linuxowy TUX. Z hobbistycznego eksperymentu pewnego fińskiego studenta (Linus Torvalds) Linux stał się jednym z wiodących systemów biznesowych. Wszechstronność i skalowalność jądra gwarantuje, że równie dobrze będzie działał zarówno na superkomputerze (każdy z TOP500) jak i małym domowym ruterze. Licencja GNU na jakiej dystrybuowane jest jądro powoduje, że wszystkie feature’ry dostępne są zarówno dla światowych gigantów jak i domowych hobbystów w tym samym momencie. I choć wydaje się, że projekt GNU/Linux to ubranie szyte na każdą miarę, to są takie miejsca gdzie jądro Linuxa ma ograniczenia które sprawiają, że jest zbyt… wolne. Jednym z takich obszarów niewątpliwie jest telekomunikacja. Urządzenia telekomunikacyjne są fundamentem sieci. Mają za zadanie przetworzenie ogromnej ilości pakietów w jak najkrótszym czasie.

W standardowej konfiguracji, system operacyjny jest pośrednikiem między sprzętem a oprogramowaniem. W tym aspekcie robi dwie rzeczy, komunikuje się z innymi programami za pomocą „wirtualnych urządzeń” widocznych w  /dev/* głównego systemu plików (/dev/* jest specjalnym rodzajem pliku) i rozmawia z urządzeniem po jednej z specjalistycznych magistrali komunikacyjnych.

Ta rozmowa wymusza coś nazywa się przełączaniem przestrzeni (user/kernel space), a to kosztuje czas którego, jak już wspomniano wcześniej, za wiele nie ma. Remedium na to  było użycie specjalistycznego sprzętu, co jak się można domyśleć nie było ani tanie, ani uniwersalne, a już na pewno ogólnodostępne. Zastanawiano się więc czy jest sposób na ominięcie wąskiego gardła jakim okazało się samo jądro Linuxa. Skoro przełączanie przestrzeni „kosztuje” to szukano sposobu, by oprogramowanie użytkowe rozmawiało ze sprzętem (w tej historii: kartą sieciową) bezpośrednio, bez pośrednictwa samego kernela.

Rozwiązaniem okazał się projekt o nazwie Data Plane Development Kit (DPDK), aktualnie rozwijany przez Linux Fundation, a wymyślony przez inżyniera Intela – Venky Venkatesa. DPDK jest zestawem bibliotek działających w przestrzeni użytkownika (user space) i sterowników działających na zasadzie odpytywania kontrolera interfejsu sieciowego (karty sieciowej) w celu odciążenia jądra, z zadania przetwarzania pakietów sieciowych, do procesów działających w przestrzeni użytkownika. Dzięki pracy Linux Fundation rozwiązanie to znaleźć można dla właściwie każdej architektury: x86, ARM, amd, PowerPC (https://en.wikipedia.org/wiki/Data_Plane_Development_Kit). Framework umożliwia wyeliminowanie przełączania przestrzeni przy kopiowaniu danych i dzięki mechanizmowy odpytywania sprzętu (pooling) eliminuje konieczność obsługi przerwań – co również standardowo wiąże się z koniecznością przełączania przestrzeni.

Wyłączenie sprzętu z „nadzoru” jądra niesie ze sobą również pewne konsekwencje: przykładowo interfejs przypisany do DPDK nie jest widoczny z poziomu standardowych narzędzi do zarządzania, typu: ip czy ifconfig.
Projekt jest już na takim etapie rozwoju, że używany jest w środowiskach produkcyjnych i jest systematycznie rozwijany. Wykorzystywany jest między innymi przez:

  • Open vSwitch – wirtualny switch kompatybilny z linuxowymi bridge’ami,
  • Trex – generator ruchu stworzony przez CISCO,
  • Butterfly – zarządzanie ruchem maszyn wirtualnych,

i wielu innych (https://www.dpdk.org/ecosystem).

I teraz okazuje się, że wcale nie nie trzeba mieć dużych pieniędzy by zbudować urządzenie telekomunikacyjne w trochę mniejszej skali. Urządzenie wbudowane, czyli: „system komputerowy specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu” (Wikipedia) są dostępne za relatywnie małe pieniądze. Przy odpowiedniej konfiguracji, bardzo popularny Raspberry Pi 4 może stać się:

  • bramą,
  • routerem,
  • zaporą,
  • serwerem VPN,
  • czy też generatorem ruchu.

Otwarte źródła, społeczność i zapaleni entuzjaści umożliwiają każdemu zdobywanie wiedzy i poszerzanie swoich kwalifikacji.

Godnym polecenia jest otwarty projekt P4Pi (https://github.com/p4lang/p4pi) którego celem jest dostarczenie platformy sprzętowej i programowej do nauki technologii sieciowych, ale o rewolucji jaką niesie za sobą P4 to może przy innej okazji…

 

Opublikowane przez: Katarzyna Chojecka

Inne artykuły_