Generator pakietów w systemie Linux
- Kamil Folga,
- 14.10.2013
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.
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.