Generator pakietów w systemie Linux

Druga grupa rozwiązań pracująca w ramach bezpośrednich odwołań do jądra systemu jest znacznie mniej reprezentatywna. Jednym z przykładów takiego narzędzia jest szerzej opisywany w dalszej części tekstu PKTGEN. PKTGEN jest generatorem pakietów, który potrafi osiągać maksymalną możliwą wydajność każdego połączenia sieciowego. Narzędzie PKTGEN zostało stworzone dla systemu Linux i realizuje zadania bardzo szybkiego generatora pakietów. Narzut na przetwarzanie pakietów jest stosunkowo niewielki, ponieważ narzędzie pracuje na podstawie jadra systemu Linux, bardzo blisko sprzętu. Narzędzie jest implementowane jako moduł jądra systemu Linux i zostało bezpośrednio włączone do szkieletu podsystemu sieciowego dystrybucji jądra Linux.

Z kolei narzędzie trafgen to generator pakietów o bardzo wysokiej wydajności, który stanowi część pakietu netsniff-ng. Trafgen operuje na plikach konfiguracyjnych, które definiują charakterystykę generowanych pakietów. Podstawą pracy aplikacji trafgen jest mechanizm „zero-copy”. Mechanizm ten zapobiega kopiowaniu pakietów z przestrzeni jądra do przestrzeni użytkownika i odwrotnie.

PKTGEN – blisko jądra systemu Linux

Generator pakietów w systemie Linux

Jak korzystać z IPerf?

PKTGEN stanowi kompletną implementację wydajnego narzędzia analizy sieci. Mamy do czynienia z generatorem pakietów w czasie rzeczywistym, który pozwala zmierzyć liczbę pakietów, przepustowość, opóźnienia, zmienność opóźnień. Oprogramowanie może korzystać z zaawansowania systemów SMP i nowych funkcjonalności kart sieciowych, wspierając architektury wieloprocesorowe. Pozwala to na wykorzystanie kilku CPU do równoległej pracy generatora pakietów, zwiększając ogólną wydajność analizatora. Zaletą jest możliwość przypisania określonych procesów PKTGEN do specyficznych procesorów CPU, które mogą obsługiwać jedną lub kilka kart sieciowych NIC. PKTGEN oferuje bardzo efektywny system dostępu do układów TX karty sieciowej, pozwalający ominąć większość narzutów stosu sieciowego systemu Linux. Z tego powodu PKTGEN wymaga uprawnień na poziomie administratora systemu, użytkownika „root”. PKTGEN może stanowić generator danych dla innych systemów sieciowych. Szczególnie ma to znaczenie przy analizie pakietów odbieranych. Może także testować wydajność pamięci alokacji pakietów oraz szyn I/O. PKTGEN generuje pakiety z modyfikowanymi poprzez interfejs użytkownika parametrami odnoszącymi się do rozmiaru pakietu, adresu MAC oraz IP, numerów portów, opóźnień pomiędzy pakietami i innymi. To wszystko pozwala na pełne testy danej platformy sprzętowej oraz połączeń sieciowych.

W większości dystrybucji systemu Linux moduł PKTGEN jest dostępny w formie modułu. Przykładowo w przypadku dystrybucji Debian wystarczy wydać polecenie: modprobe pktgen. Jeżeli nie istnieje przygotowana wersja modułu w systemie, pozostaje pobranie odpowiedniego kodu źródłowego, kompilacja i instalacja. Ważne, że możemy skompilować PKTGEN jak moduł lub część jądra systemu Linux. Uruchomienie PKTGEN w wersji wkompilowanej w jądro systemu wymaga modyfikacji wpisu CONFIG_NET_PKTGEN w pliku konfiguracji jądra, dołożenia patcha do jądra, skompilowania.

Jeżeli posiadamy w danej dystrybucji moduł PKTGEN, uruchomienie narzędzia sprowadza się do wydania polecenia:

Linux# modprobe pktgen

Aby sprawdzić, czy moduł poprawnie funkcjonuje w systemie, wystarczy wydać polecenie:

Linux# lsmod | grep pktgen

pktgen 27374 0

PKTGEN jest kontrolowany i monitorowany poprzez system plików /proc. Wersję PKTGEN możemy sprawdzić poprzez komendę dmesg lub w pliku /proc/net/pktgen/pgctrl.

web:~# cat /proc/net/pktgen/pgctrl

pktgen v2.69: Packet Generator for packet performance testing.

web:~# dmesg | grep pktgen

[12202278.373470] pktgen v2.69: Packet Generator for packet performance testing.

Po uruchomieniu PKTGEN tworzy procesy, które zostają przypisane do określonego procesora CPU. Na tym etapie ujawnia się właśnie zaawansowanie narzędzia. Jeżeli uruchomimy PKTGEN na maszynie wieloprocesorowej, zobaczymy przykładowo dwa procesy związane z PKTGEN – [pktgen/0] oraz [pktgen/1]. Z kolei nowoczesne platformy sprzętowe pozwalają na przypisanie przerwań do określonych CPU. Ma to szczególne znaczenie w przypadku maszyn wieloprocesorowych, gdzie możemy przypisać obsługę konkretnych kart sieciowych określonym procesorom. Podsumowując, karta sieciowa może być obsługiwana przez określone CPU, do którego to procesora przypiszemy określony proces PKTGEN.


TOP 200