Generator pakietów w systemie Linux

Dlaczego Linux?

Rozwój sieci komputerowych zawsze miał odwzorowanie w elementach obsługi sieci w systemie Linux. System Linux wspiera właściwie każdą nową specyfikację sieciową, często wyznaczając reguły wdrożeń danej technologii. Trudno dziś nawet zliczyć sieciowe serwery usługowe, wdrożenia routerów, a nawet sprzętowych rozwiązań sieciowych opartych na jądrze systemu Linux. Pokonywanie kolejnych barier w rozwoju sieci komputerowych zawsze wiązało się z koniecznością pomiaru efektywności nowej technologii. W rozwiązaniach sieciowych pomiary zazwyczaj dokonywane są przy zastosowaniu sprzętowych generatorów pakietów. Standardowe systemy operacyjne nie są na tyle wydajne, aby przetestować prędkość łącza GbE, nie wspominając już o łączach 10GbE.

System Linux oferuje wiele narzędzi pozwalających na generowanie ruchu w sieciach. Szczególnie popularnych i znanych jest kilka rozwiązań. Istnieje wiele opcji generowania ruchu z wykorzystaniem darmowych aplikacji. Ogólnie możemy je podzielić na aplikacje wykorzystujące ogólnodostępne biblioteki programistyczne do generowania i analizy ruchu oraz aplikacje bezpośrednio odwołujące się do jądra systemu. Aplikacje pracujące z wykorzystaniem bibliotek są zazwyczaj łatwe do użycia, ale nie pracują zbyt wydajnie. Głównym problemem jest duży narzut wynikający z wykorzystania całego stosu sieciowego. Z kolei narzędzia wykorzystujące właściwości jądra pracują bardzo szybko, ale są dość zaawansowane w instalacji i użyciu.

Jedną z popularniejszych bibliotek jest libpcap. Oryginalnie biblioteka była rozwijana jako część projektu tcpdump. Z czasem została uniezależniona od rozwoju tcpdump i skierowana na własne tory. Biblioteka libpcap istnieje także w wersji przeznaczonej dla systemu Windows o nazwie WinPcap. Biblioteka jest wykorzystywana przez różnego typu aplikacje, analizujące i monitorujące ruch, ale także generatory i testery ruchu. Przykładem aplikacji generatora korzystającego z tej biblioteki jest Mausezahn.

Generator pakietów w systemie Linux

Ixia IxNetworks – generator ruchu sieciowego

nCap jest biblioteką pozwalającą aplikacjom wysyłać i odbierać pakiety z bardzo wysoką prędkością. Ideą nCap jest wykorzystanie jądra systemu do instruowania karty sieciowej, że będzie od tej pory dostępna bezpośrednio z poziomu użytkownika. Oznacza to, że aplikacja wykorzystująca nCap przejmuje kontrolę nad kartą sieciową i od tej pory jądro systemu nie ma do niej dostępu. Biblioteka jest podzielona na moduł sterownika oraz bibliotekę przeznaczoną dla użytkownika. Aplikacje wykorzystujące bibliotekę łączą się bezpośrednio do oprogramowania karty sieciowej, redukując narzut wprowadzany przez jądro systemu. Tylko jedna aplikacja może korzystać z karty sieciowej w momencie kontroli przez nCap. Jeżeli biblioteka nie jest używana, jądro systemu przejmuje kontrolę nad kartą. Sterownik nCap jest odpowiedzialny za kontrolowanie urządzenia sieciowego i stworzenie dwóch buforów na przychodzące i wychodzące pakiety. Bufory są tworzone w momencie inicjalizacji karty. Karta sieciowa otrzymuje informację, że bufory są dostępne bezpośrednio bez konieczności interwencji jądra systemu. Z punktu widzenia generatorów pakietów interesujący jest proces wysyłania pakietu z wykorzystaniem tej biblioteki. W tym przypadku pakiet jest kopiowany do niezajętego bufora, a następnie aktualizowany jest indeks bufora. Kolejne elementy indeksu bufora są zestawem rejestrów karty sieciowej. W ten sposób karta sieciowa bezpośrednio bez zbędnych opóźnień uzyskuje informację, czy istnieją pakiety, które należy wysłać. Są dwa bufory, więc jest możliwość niezależnej pracy w trybie pełnego dupleksu.

Dashcap jest biblioteką, która wspiera szybką generację pakietów z środowisku wieloprocesorowym. Biblioteka pracuje na podstawie modułu jądra oraz biblioteki użytkownika. Wykorzystując Dashcap możemy uruchomić wiele aplikacji na karcie sieciowej w tym samym czasie. Liczne aplikacje mają problem właśnie ze zdolnością do współdzielenia karty sieciowej pomiędzy kilkoma procesami czy procesorami.

Narzędzia dla systemu Linux

W systemie Linux mamy do czynienia z dwoma typami aplikacji. Pierwsza grupa wykorzystuje opisane wcześniej gotowe biblioteki, co powoduje, że może wykazywać problemy z wydajnością, ale jest zazwyczaj łatwa w obsłudze i instalacji. Bardzo popularnym narzędziem z tej jest IPerf. IPerf mierzy maksymalną wydajność transmisji TCP lub UDP, umożliwiając ustawienie różnych parametrów danej transmisji. Realizuje zadania serwera oraz klienta. Dokonuje także modyfikacji w buforach systemowych, w celu zwiększenia możliwej do przetestowania wydajności. Aplikacja do pełnego działania musi zostać uruchomiona w postaci serwera po jednej stronie testu, natomiast klienta po drugiej stronie testu. Serwer nasłuchuje przychodzących połączeń, natomiast klient tworzy połączenia i mierzy przepustowość w jedną stronę. Statystyki dostarczane przez IPerf wskazują ilość danych przesłanych w danym interwale czasu, średnią przepustowość, zmienność opóźnień i straty. Oprogramowanie potrafi przedstawić wyniki dotyczące zmierzonej przepustowości, zmienności opóźnień oraz strat pakietów. Narzędzie konfiguruje się z poziomu linii poleceń. Możliwe jest uruchomienie aplikacji na systemie Windows. To bardzo dobre i łatwe w użyciu narzędzie, jeżeli testujemy łącza mniejsze niż kilkaset megabitów na sekundę. Narzędzia te pracują na bazie wywołań systemowych, w celu wykorzystania zasobów systemu.


TOP 200