Różne określenia prędkości transferu danych
W sieciach komputerowych spotkamy się z kilkoma miarami prędkości przesyłania danych:
– bandwidth
– throughput
– goodput
1. bandwidth
Jest to określenie na fizyczną, teoretyczną i maksymalną przepustowość danego medium czy kanału. Można też użyć pojęcia pojemność. Jeśli mowa o kanale to trzeba pamiętać, że składa się z wielu elementów takich jak urządzenia, złącza, media transmisyjne, zakłócenia, oprogramowanie itp. Jest to zatem teoretyczna i „fabryczna” pojemność w idealnych warunkach bez zakłóceń. Coś jak rura rura wodociągu, którą o danej średnicy. Jeśli 1m długości rury mieści 1m3 wody to to jest jej pojemność. Ile tak naprawdę wody można „przepchnąć” przez tą rurę zależy od wielu czynników np. od wydajności źródła (pompy), zaworów leżących na drodze itp. Jedno jest pewne: rura (jak i łącze IT) ma określoną maksymalną pojemność (przepustowość). Jeśli rurą (z pewnych fizycznych powodów) można przepychać wodę z prędkością 1mb/s to większej prędkości nie osiągniemy. W świeci sieci LAN Ethernet mamy wiele standardów połączeń. Jednym z nich jest Ethernet 1Gbps, ful duplex. Podobnie jak w rurze z wodą, mamy tu wiele czynników wpływających na maksymalną przepustowość:
– zakłócenia
– szumy
– szybkość elektroniki
– szybkość rozchodzenia się sygnału elektrycznego w danym nośniku (np. 250 000 km/s)
– narzut samej technologii połączenia
Ten ostatni punkt zawiera w sobie narzut różnych protokołów sygnalizacyjnych działających na poziomie elektroniki w danym łączu. Przykładem może być autonegocjacja, ramki PASUE, odstępy międzyramkowe i inna sygnalizacja. Jest o minimalny ruch ale zawsze coś.

Jeśli dana technologia oferuje nam 1Gbps to nie uzyskamy szybszego transferu. Co gorsza, ta prędkość jest prędkością netto ponieważ danych nie transmitujemy w sieci LAN/WLAN i innych ot tak sobie tylko za pomocą protokołów. Protokołu posiadają pewne dane administracyjne (np. nagłówki) co, przy stałej pojemności łącza, daje na mniej miejsca na nasze dane!
Pojęcie bandwidth czasem jest także określane w Hz a nie w bitach/sek. Przykładem jest Ethernet bandwidth o wielkości 125 MHz. Tu pojawia się kwestia kodowania sygnału więc 125 MHz != 125 Mbps. Ale o tym raczej mówimy na telekomunikacji.

To jeszcze nie wszystko. Może się okazać, że natywna przepustowość jest mniejsza niż podaje „producent” ponieważ jej część zawsze jest konsumowana na sprawy organizacyjne samej technologii. Generalnie kiedy mamy informację, że to łącze daje nam przepustowość 1Gbps, to do dyspozycji będziemy mieć nieco mniej. Producenci często podają parametry okablowania. Tutaj inny opis.
2. throughput
Jest to realna prędkość jaką uzyskamy w danym łączu czy kanale. Jest ona zazwyczaj mierzona eksperymentalnie i mocno zależy od wielu czynników takich jak obciążenie procesora/układu generującego ruch. Jest zawsze mniejsza od przepustowości kanału.

Poniżej widok ramki Ethernet – ona jako pierwsza wprowadza narzut w postaci miejsca na preambułę, pola adresów, typu, CRC i inne.

3. goodput
To określenie na maksymalną prędkość transferu naszych danych roboczych. Wpływa na nią narzut administracyjny protokołów komunikacyjnych oraz proces enkapsulacji. Każdy protokół do porcji przenoszonych danych dodaje nagłówek, co ogranicza możliwą do przesłania ilość danych roboczych.

Cały proces można czytelnie pokazać na bazie enkapasulacji. Ramka daje nam 1500 bajtów ale odpada pole Typ/Długość dwa bajty czyli zostaje 1498. Z tego (przy protokole IPv4) odpada 20 bajtów nagłówka IP i kolejno, jeśli używamy UDP, 8 bajtów jego nagłówka. Zatem mamy do dyspozycja w każdej ramce: 1500-2-20-8 = 1470 bajtów. Teraz jeszcze nagłówek ramki Ethernet.

Przykład testu prędkości transferu danych PC – RouterBoard RB49G na łączu 1 Gbps

Z niewiadomych przyczyn mamy około 36% oferowanej przez połączenie prędkości.

4. latency
Jest to opóźnienie na trasie całego kanału wynikające z wielu czynników np. zwłoki w przetwarzaniu danych (sygnału) w układach elektronicznych. Zwłoka może jest i minimalna ale jest. Kiedy na drodze naszych danych leży wiele urządzeń, każde dodaje małą zwłokę. Zwłoka może tez wynikać z obciążenia procesorów, które realizują także inne zadania (choć to zależy od urządzenia, jego przeznaczenia, oprogramowani itp)
Pomiary prędkości
Przepustowość łącza możemy badać na wiele różnych sposobów:
– programem
– sprzętem
– protokołem TCP lub UDP
– w jedną stronę lub w obie jednocześnie
– generując określoną ilość pakietów na sekundę o podanej wielkości
Podstawowe opcje testowania:
a. Protokół
Jeśli użyjemy protokołu UDP otrzymamy znacznie mniejszy narzut administracyjny niż przy protokole TCP co przełoży się na większą ilość danych użytkowych jakie możemy przesłać w jednostce czasu.
b. Kierunek
Testować przepustowości możemy generując ruch w jedną stronę lub w obie jednocześnie. Wprawdzie nasze łącza są zazwyczaj typu full-duplex ale test w obei strony jednocześnie zawsze mocniej obciąża urządzenia jak i media.
c. Generowanie pojedynczych pakietów
Posiadając generator pakietów możemy wygenerować strumień pewnej ilość pakietów na sekundę (pps) a każdy o wybranej wielkości, co pozwala także wygenerować pewien ruch wynikający z iloczynu pps*rozmiar pakietu
Przykładowe programy
1. Tester przepustowości iperf
a. ipef
Program konsolowy dostępny jest dla różnych platform w postaci instalatora lub źródeł. Dla systemu Windows pobieramy spakowane archiwum i wypakujemy z niego katalog z gotowym programem. W systemie Linux można go pobrać z repozytoriów i zainstalować:
# apt install iperf
Uwaga: podczas testu należy po obu stronach połączenia zastosować tą samą wersję. Jeśli użyjemy innych połączenie nie zostanie nawiązane.
Program może pracować w trybie klienta generując ruch lub w trybie serwera przyjmując połączenie od klienta, w każdym razie otrzymamy bogate statystyki testu. Poniżej przykład testu Windows 11 — Linux (VM na tym samym komputerze). Maszyna Windows posiada adres 192.168.7.177 natomiast nasz „serwer” czyli Linux 192.168.7.151.
Na maszynie z Linux uruchamiamy iperf w trybie serwera, protokół UDP
# iperf -s -u
Na maszynie Windows przechodzimy do katalogu z iperf i uruchamiamy go z wiersza poleceń jako klienta (-c) a jako protokoł komunikacyjny do testów wybieramy UDP (domyślnie jest TCP):
> iperf -c -u 192.168.7.151
Test domyślnie trwa 10 sekund, w naszym wypadku testujemy po protokole UDP, który ma mniejszy narzut administracyjny. Po chwili pojawia się statystyka testu.

Jeśli chcemy testować TCP to uruchamiamy serwer:
# iperf -s
Oraz klienta
> iperf -c 192.168.7.151

b. jperf
Graficzna nakładka na iperf, wymaga Javy (JRE). Ważne aby nakładka była w wersji odpowiedniej dla posiadanego narzędzia iperf. Przykładowo dla iperf 2.0 mamy jperf 2.0. Ponieważ nakładka wymaga środowiska Java musimy je zainstalować.
# apt-get install default-jre
Kolejno pobieramy pakiet jperf, rozpakujemy a w nim mamy plik jperf.sh. Trzeba tylko teraz zmienić jego uprawnienia aby można było uruchamiać.
# chmod 755 jperf.sh
Teraz można już nakładkę uruchomić klikając w przycisk po prawej. Na drugiej maszynie inicjujemy test zgodny z ustawieniami serwera (tutaj TCP)

Nakładka jperf może także działać w trybie serwera pozwalając w czytelny sposób na ustawiania opcji protokołu TCP takich jak bufor, okno, segment co mocno rzutuje na osiągane przepustowości przy ruchu w protokole TCP.
2. MikroTik Bandwidth Test
Program jest wbudowany w system RouterOS, posiada serwer oraz klienta. Znajdziemy go w menu WinBox w pozycji /Tool
– Moduł serwera /Tool/BTestServer

– Moduł klienta /Tool/Bandwidth Test

a. Serwer
Aby udostępnić nasz system jako serwer testu klikamy na Enabled i tyle. Możemy także włączyć autentykacje, w tym celu wymagane będzie utworzenie dodatkowego użytkownika. Dwie opcje jaki widzimy pozwalają określić od którego portu UDP w górę będą one alokowane dla kolejnych sesji, których ilość ustalimy poniżej. Aby test był miarodajny w czasie jego trwania nie należ naszego RouterOS obciążać innymi zadaniami. Przycisk sessions pokaże nam aktywne sesje.

b. Klient
Znacznie więcej opcji mamy w sekcji klienta. Ustalimy tu adres docelowy (serwera), protokół komunikacyjny, ilość jednoczesnych strumieni, ograniczenia prędkości i rozmiaru pakietów. Opcja random data pozwala generować dane losowe, co dodatkowo obciąża generator.

3. MikroTik PacketGenerator
Przykład testu
Aplikacja także jest wbudowana w system RouterOS i osiągalna z menu WinBox /Tools/Traffic Generator

Za jego pomocą można ustalić budowę i zawartość pakietu oraz sposób wysyłania czyli ilość pakietów na sekundę lub oczekiwana prędkość. Aby wygenerować ruch musimy przygotować drogę pakietu (port), jego szablon czyli budowę (protokoły, adresy itp) oraz strumień określający port, rozmiar, ilość pakietów na sekundę.
4. Inne generatory pakietów
Mogą służyć do generowania pojedynczych pakietów celem testowania np. zapory ogniowej, a także do generowania większego ruchu i tym samym testowania przepustowości przy danej budowie pakietu.
– packEth
– Packet Sender
– Nping
















