Generator pakietów w systemie Linux
- Kamil Folga,
- 14.10.2013
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
Jak korzystać z IPerf?
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.