Jak mierzyć opóźnienia w sieci i gdzie giną pakiety?

0
35
4/5 - (2 votes)

Nawigacja:

Co to jest opóźnienie i gdzie faktycznie „giną” pakiety

Podstawowe pojęcia: latency, jitter, packet loss

Opóźnienie w sieci to czas, który upływa od wysłania pakietu do otrzymania odpowiedzi. Najprostszy przykład: wysyłasz ping do serwera i mierzysz, ile milisekund minęło, zanim wrócił echo reply. Ten czas nazywa się RTT (Round-Trip Time), czyli czas podróży w obie strony.

W praktyce występuje kilka rodzajów opóźnień:

  • Opóźnienie jednostronne (one-way) – czas, w którym pakiet dociera z punktu A do B. Trudniejsze do zmierzenia, bo wymaga synchronizacji zegarów po obu stronach.
  • RTT (Round-Trip Time) – łatwiejsze do pomiaru, dlatego najczęściej używane w narzędziach typu ping.
  • Jitter – zmienność opóźnienia. Nie chodzi o to, że RTT jest duże, tylko że raz wynosi 20 ms, za chwilę 120 ms, potem 35 ms. Taka niestabilność jest zabójcza dla VoIP i gier.
  • Utrata pakietów (packet loss) – procent pakietów, które w ogóle nie dotarły do celu lub odpowiedź na nie nie wróciła w zadanym czasie.

Samo wysokie RTT nie zawsze oznacza problem. Liczy się stabilność. Stałe 80 ms do serwera w innym kraju jest akceptowalne dla większości zastosowań. Dużo groźniejsze jest sytuacyjne 20 ms, nagle 300 ms, potem znowu 20 ms i tak co chwilę – użytkownik odczuwa to jako „lag” czy „przycinanie”.

Utrata pakietów może być minimalna (np. pojedyncze pakiety gubione sporadycznie) i nie wpływać istotnie na przeglądanie stron, ale w przypadku głosu lub strumieniowania wideo potrafi generować trzaski, zatrzymania obrazu i rwanie dźwięku. Dodatkowo, przy TCP, utrata pakietów powoduje retransmisje, a to przekłada się na większe opóźnienia i mniejszą prędkość.

Główne źródła opóźnień w sieci

Na opóźnienie składa się kilka czynników jednocześnie. W uproszczeniu można je podzielić na:

  • Opóźnienie propagacji – czas, który potrzebuje sygnał, aby przejść przez medium (światłowód, miedź, radio). Zależne głównie od odległości i fizyki, nie od obciążenia.
  • Opóźnienie transmisji – czas, w którym urządzenie „wypycha” pakiet na łącze, zależny od prędkości łącza i wielkości pakietu.
  • Opóźnienie przetwarzania – czas, który router, firewall czy przełącznik poświęca na analizę i przekazanie pakietu.
  • Opóźnienie kolejkowania – powstaje wtedy, gdy pakiety czekają w kolejce na wysłanie, bo łącze jest przeciążone lub źle zarządzane (bufferbloat).

W dobrze zaprojektowanej sieci lokalnej znaczącą część całkowitego RTT może stanowić sam czas odpowiedzi serwera, a nie sama sieć. W sieciach rozległych (WAN, Internet) najczęściej dominuje opóźnienie propagacji, a gdy łącza są przeciążone – kolejkowanie.

Warto myśleć o opóźnieniu jak o sumie małych opóźnień na każdym „przystanku” (hopie) trasy: karta sieciowa → switch → router → kolejne routery po drodze → sieć operatora → serwer docelowy. Każdy z nich dokłada swój ułamek milisekundy lub więcej.

Typowe miejsca „znikania” pakietów

Pakiet nie musi „zginąć” w sensie fizycznym. Często po prostu zostaje celowo wyrzucony (dropped) przez urządzenie sieciowe, bo nie mieści się w buforze, został odfiltrowany lub przekroczył limit. Najczęstsze miejsca problemów to:

  • Host źródłowy lub docelowy – przeciążony system, pełne kolejki w stosie TCP/IP, obciążona karta sieciowa, ograniczenia firewall na hoście.
  • Karta sieciowa – błędy na interfejsie, duże obciążenie przerwaniami, złe sterowniki, nieprawidłowe ustawienia offloadów.
  • Routery i przełączniki – przepełnione bufory, oversubscription (więcej ruchu niż faktyczna przepustowość), błędy konfiguracji QoS, tablice routingu.
  • Firewalle i systemy bezpieczeństwa – stateful inspection, filtrowanie, IPS/IDS, rate limiting ICMP, mechanizmy anty-DDoS – wszystko to może opóźniać lub odrzucać pakiety.
  • Łącza wąskopasmowe lub przeciążone – ostatnia mila, łącza radiowe, stare linie miedziane, współdzielone łącza w bloku.

Istotne jest też rozróżnienie między świadomą filtracją a „gubieniem z przeciążenia”. Część urządzeń obniża priorytet ICMP (na przykład pingi), aby chronić się przed atakami lub oszczędzać zasoby. W traceroute mogą wtedy pojawiać się gwiazdki lub wysoki RTT na konkretnym hopie, chociaż ruch TCP/UDP przechodzi poprawnie.

Różnica między problemem sieciowym a aplikacyjnym

Użytkownicy często zgłaszają „sieć działa wolno”, a problem leży po stronie aplikacji lub serwera. Klucz to odróżnienie dwóch sytuacji:

  • Sieć jest problemem – wysoki i niestabilny ping, traceroute wskazuje skoki RTT w połowie trasy, występuje packet loss. Testy z różnych hostów i do różnych celów pokazują podobne objawy.
  • Aplikacja jest problemem – ping do serwera (lub jego IP) jest stabilny i niski, ale HTTP/HTTPS/SQL odpowiada powoli. Zwykle świadczy to o przeciążeniu serwera, kiepskiej bazie danych, problemach z kodem aplikacji lub storage.

Prosty test diagnostyczny wygląda tak: mierzysz ping do serwera, jednocześnie mierzysz czas odpowiedzi aplikacji (np. curl z logowaniem czasu). Jeśli ping jest niski, a odpowiedzi aplikacji trwają dziesiątki sekund – problem nie jest sieciowy, choć użytkownik „czuje” go jak problem z siecią.

Dobry nawyk: zanim zaczniesz modyfikować routing, wymieniać kable i resetować routery, upewnij się, że nie brakuje CPU, RAM lub zasobów I/O na serwerze docelowym. Wiele „magicznych” problemów z opóźnieniami rozwiązuje się po stronie aplikacji, a nie routerów.

Rodzaje opóźnień: z czego składa się czas odpowiedzi

Opóźnienie propagacji – odległość i medium transmisyjne

Opóźnienie propagacji to czas, który sygnał potrzebuje, aby przejść z jednego końca łącza na drugi. Nie zależy od obciążenia – to czysta fizyka. Sygnał w światłowodzie porusza się z prędkością ok. 2/3 prędkości światła w próżni. Oznacza to mniej więcej, że:

  • Im dłuższa trasa, tym większy minimalny możliwy RTT.
  • Przy połączeniach międzykontynentalnych nie da się zejść poniżej pewnego progu, niezależnie od klasy łącza.

Medium ma duże znaczenie dla podstawowego opóźnienia:

  • Światłowód – najmniejsze opóźnienia, stabilne parametry, klasa operatorska.
  • Miedź (Ethernet, DSL) – większe opóźnienia niż światłowód, ale w praktyce akceptowalne w sieciach lokalnych.
  • Wi-Fi – opóźnienia zależne od poziomu zakłóceń, odległości, jakości sprzętu i konfiguracji. Występują dodatkowe mechanizmy retransmisji na warstwie łącza.
  • LTE/5G i inne sieci komórkowe – większe RTT, duży jitter, spora zmienność w zależności od obciążenia komórki i jakości sygnału.

Przy diagnozie problemów dobrze jest ustalić minimalny RTT, jaki jest fizycznie realistyczny między lokalizacjami. Jeśli ping do serwera w tej samej serwerowni wynosi 20 ms, a oba urządzenia stoją „szafa obok”, to sygnał, że coś jest nie tak z infrastrukturą logiczną lub urządzeniami pośrednimi.

Opóźnienie transmisji – rozmiar pakietu i przepustowość łącza

Opóźnienie transmisji to czas, w którym urządzenie nadające „wypycha” pakiet na łącze. Zależy od:

  • przepustowości łącza (np. 10 Mb/s, 100 Mb/s, 1 Gb/s, 10 Gb/s),
  • wielkości ramki/pakietu,
  • narzutu protokołów (Ethernet, IP, TCP/UDP, VLAN, PPPoE itp.).

Przy łączach gigabitowych samo opóźnienie transmisji pojedynczego pakietu jest bardzo małe, ale przy wąskich łączach radiowych lub DSL może już mieć znaczenie. Przykład: na łączu 10 Mb/s wysłanie dużego pliku zajmie stosunkowo długo, w tym czasie krótkie pakiety z gry czy VoIP mogą czekać w kolejce, powodując zauważalny jitter.

W praktyce opóźnienie transmisji czuć na:

  • wolnych uplinkach (np. łącze 10 Mb/s, ale ruch generowany jakby łączy było 100 Mb/s),
  • łączeniach asymetrycznych (np. szybki download, wolny upload),
  • scenariuszach, gdzie jednocześnie idzie dużo dużych pakietów (kopiowanie plików, backup) oraz małe pakiety interaktywne.

Jeśli na takim łączu nie ma dobrze skonfigurowanego QoS, małe pakiety mogą „utknąć” za dużymi w kolejce. Użytkownik odczuwa to jako ogromne skoki pingu podczas wysyłania plików lub podczas intensywnego pobierania.

Opóźnienie przetwarzania – routing, NAT i filtracja

Każdy router i firewall wykonuje szereg operacji na pakiecie:

  • sprawdzenie nagłówków (adresy źródłowe i docelowe, porty, flagi TCP),
  • sprawdzenie tablic routingu i translacji (NAT),
  • aplikacja reguł firewall, QoS, ewentualnie inspekcji aplikacyjnej (L7),
  • ewentualne zmiany nagłówków (TTL, DSCP, NAT, tagi VLAN).

Na szybkich urządzeniach z ASIC-ami większość ruchu jest forwardowana sprzętowo i opóźnienia są minimalne. Jednak przy złożonych regułach firewall, wielu tunelach VPN i intensywnej inspekcji, opóźnienia przetwarzania rosną. Na tanich routerach SOHO można to łatwo zobaczyć: przy małym ruchu opóźnienie jest niskie, przy większym – CPU dochodzi do 100%, a ping rośnie.

Dlatego w diagnostyce opóźnień trzeba brać pod uwagę:

  • obciążenie CPU i pamięci na routerach/firewallach,
  • liczbę aktywnych sesji (NAT, stateful firewall),
  • włączone funkcje dodatkowe (IDS/IPS, DPI, proxy, filtr treści),
  • aktualność firmware i znane błędy wpływające na performance.

Jeśli traceroute pokazuje, że RTT rośnie znacząco na konkretnym hopie i utrzymuje się wysokie na kolejnych, często oznacza to, że ten właśnie router lub firewall jest wąskim gardłem – czy to z powodu CPU, czy konfiguracji.

Opóźnienie kolejkowania – przeciążenie i bufferbloat

Najbardziej niedoceniany składnik opóźnienia to kolejkowanie. Jeżeli łącze wychodzące z routera jest wysycone, nowe pakiety nie mogą być od razu wysłane. Trafiają do kolejki w buforze. Jeśli bufor jest mały, część pakietów zostanie szybko wyrzucona (drop). Jeśli bufor jest bardzo duży – pojawi się bufferbloat.

Bufferbloat to zjawisko, w którym duże bufory w routerach maskują przeciążenie. Zamiast od razu wyrzucać pakiety i sygnalizować wyższej warstwie (TCP), że trzeba zmniejszyć prędkość, urządzenie zaczyna kumulować pakiety w buforze. Dla użytkownika oznacza to:

  • rosnące opóźnienia (setki, a nawet tysiące ms) przy dużym obciążeniu,
  • duży jitter dla ruchu czasu rzeczywistego,
  • teoretycznie dobra przepustowość, ale fatalna interaktywność.

Typowy objaw: podczas wysyłania pliku na chmurę lub w trakcie intensywnego pobierania nagle ping do dowolnego hosta rośnie z 20 ms do 500–1000 ms, a głos/gry stają się nieużywalne. Po zakończeniu transferu wszystko wraca do normy.

Rozwiązanie zwykle obejmuje:

  • usprawnione kolejki (Smart Queue Management – SQM, FQ-CoDel, CAKE),
  • właściwie skonfigurowany QoS i priorytety ruchu,
  • ograniczenie maksymalnej przepustowości na routerze do nieco poniżej tego, co dostarcza operator (aby móc skutecznie zarządzać kolejkami).

Jak szacować, który składnik dominuje

Bez specjalistycznych narzędzi można w przybliżeniu określić, co dominuje w opóźnieniu, stosując kilka prostych kroków:

  • Test 1: ping lokalny – zmierz RTT do bramy lokalnej (routera) z przewodowego komputera.
    • Jeśli pingi są stabilne i bardzo niskie (1–2 ms), lokalny segment LAN jest raczej OK.
    • Prosty schemat diagnozy w praktyce

    • Krok 1: ustal bazowy ping – wyłącz wszystkie obciążające transfer aplikacje (chmury, torrenty, backupy). Zmierz ping do:
      • bramy lokalnej (routera),
      • DNS operatora lub popularnego hosta (np. 1.1.1.1, 8.8.8.8),
      • konkretnego serwera aplikacji.
    • Krok 2: wprowadź obciążenie – włącz wysyłanie/pobieranie większego pliku. Równolegle obserwuj ping do tych samych adresów.
    • Krok 3: porównaj – jeśli ping do:
      • bramy rośnie mocno → problem w lokalnej sieci lub routerze,
      • bramy jest stabilny, a do Internetu rośnie → przeciążone łącze do operatora lub jego sieć,
      • wszystko poza konkretnym serwerem jest OK → problem po stronie tego serwera/aplikacji.

    Ten prosty schemat już na początku zawęża zakres poszukiwań. Zamiast „coś jest wolno”, masz konkretną hipotezę: „dławi się uplink do operatora” albo „router nie wyrabia na CPU”.

    Szafa serwerowa z migającymi diodami w niebieskim świetle
    Źródło: Pexels | Autor: panumas nikhomkhai

    Podstawowe techniki pomiaru opóźnień: ping, traceroute i ich odmiany

    Ping – szybki termometr sieci

    Ping wysyła pakiety ICMP Echo Request i mierzy czas do otrzymania Echo Reply. To najprostszy i najszybszy sposób sprawdzenia, czy host odpowiada i z jakim RTT.

    Typowe zastosowania w praktyce:

    • sprawdzenie, czy host jest osiągalny,
    • pomiar bazowego RTT do różnych punktów (brama, DNS, serwer aplikacji),
    • obserwacja stabilności opóźnień w czasie (jitter, sporadyczne skoki).

    Na systemach uniksowych i macOS ping domyślnie wysyła pakiety w pętli, aż go przerwiesz. Na Windows wymaga parametru -t, by zachowywał się podobnie.

    # Linux/macOS
    ping 8.8.8.8
    
    # Windows
    ping 8.8.8.8 -t
    

    Kilka praktycznych wariantów:

    • Zmiana rozmiaru pakietu – test, jak sieć reaguje na większe ramki:
      ping -s 1400 8.8.8.8     # Linux
      ping -l 1400 8.8.8.8 -t  # Windows

      Przy większych pakietach mogą wyjść na jaw problemy z MTU lub fragmentacją.

    • Limit czasu – wykrywanie sporadycznych „zamrożeń”:
      ping -W 1 8.8.8.8   # timeout 1 s na Linux

      Jeśli pojawiają się pojedyncze przekroczenia czasu, sieć ma problem z jitterem lub kolejkowaniem.

    Brak odpowiedzi na ping nie zawsze oznacza problem – część hostów go blokuje. Dlatego ping to narzędzie orientacyjne, a nie wyrocznia.

    Traceroute / tracert – gdzie rośnie RTT po drodze

    Traceroute (Linux/macOS) i tracert (Windows) pokazują kolejne przeskoki (hopy) między twoim hostem a celem. Bazują na stopniowym zwiększaniu TTL i obserwacji odpowiedzi urządzeń pośrednich.

    # Linux/macOS
    traceroute 8.8.8.8
    
    # Windows
    tracert 8.8.8.8
    

    Z traceroute korzysta się głównie do:

    • lokalizacji przybliżonego miejsca wzrostu opóźnienia,
    • wykrywania zmian tras (np. ruch idzie innym operatorem niż zwykle),
    • identyfikacji routerów, które filtrują ICMP lub mają problemy z obciążeniem.

    Interpretacja wymaga ostrożności. Jeśli jeden z hopów ma wysoki RTT, a kolejny znowu niski, najczęściej oznacza to tylko, że ten router nie priorytetyzuje odpowiedzi ICMP, ale ruch jest forwardowany normalnie. Problem jest dopiero wtedy, gdy wysoki RTT pojawi się na jakimś hopie i utrzyma lub pogorszy na wszystkich kolejnych.

    Przykład zmiany protokołu w traceroute na Linuxie (domyślnie UDP):

    traceroute -I 8.8.8.8   # użyj ICMP
    traceroute -T 8.8.8.8   # użyj TCP (np. gdy ICMP jest filtrowany)

    MTR / WinMTR – ping i traceroute w jednym

    MTR (Linux/macOS) i WinMTR (Windows) łączą funkcje pingu i traceroute. Narzędzie wysyła serię pakietów do każdego kolejnego hopu i pokazuje statystyki:

    • średnie RTT na każdym hopie,
    • minimum, maksimum, odchylenie,
    • procentowe straty pakietów.
    # Linux (Debian/Ubuntu)
    sudo apt install mtr-tiny
    mtr -rw 8.8.8.8
    
    # macOS (Homebrew)
    brew install mtr
    sudo mtr -rw 8.8.8.8
    

    MTR świetnie się sprawdza przy niestabilnych łączach. Zamiast jednorazowego traceroute, masz „film” z trasy w czasie. Szukasz miejsc, gdzie:

    • pojawiają się straty pakietów, które utrzymują się na kolejnych hopach,
    • RTT skacze w górę i w dół o dziesiątki ms, podczas gdy sąsiednie hopy są stabilne.

    Jeśli widzisz straty tylko na jednym hoście i nie powielają się dalej, zwykle to router limitujący odpowiedzi na ICMP, a nie realny drop w ruchu produkcyjnym.

    TCP ping i pomiary na poziomie aplikacji

    Gdy ICMP jest zablokowany, można mierzyć opóźnienia przy pomocy ruchu TCP, zbliżonego do tego, co używa aplikacja.

    Na Linuxie przydają się m.in.:

    • hping3 – generuje pakiety TCP/UDP/ICMP z kontrolą flag i portów:
      sudo hping3 -S -p 443 -c 10 example.com

      Flaga -S wysyła SYN na port 443; w odpowiedzi dostajesz SYN/ACK. RTT odzwierciedla opóźnienie zestawiania sesji TCP.

    • tcping na Windows i Linux:
      tcping example.com 443

      Mierzy czas nawiązania połączenia TCP do docelowego portu.

    Do pomiaru „prawdziwego” czasu odpowiedzi aplikacji użyj klienta protokołu, np.:

    curl -w "@curl-format.txt" -o /dev/null -s https://example.com

    Gdzie curl-format.txt może zawierać np.:

    time_namelookup:  %{time_namelookup}n
    time_connect:      %{time_connect}n
    time_starttransfer:%{time_starttransfer}n
    time_total:        %{time_total}n

    Wtedy jasno widzisz, ile trwał DNS, ile połączenie TCP/TLS, a ile odpowiedź serwera aplikacyjnego.

    Narzędzia do diagnozy na różnych systemach i poziomach

    Narzędzia wbudowane w system operacyjny

    Na większości systemów znajdziesz podstawowy zestaw narzędzi „z pudełka”. W codziennej pracy wystarczą zaskakująco często.

    Linux / Unix / macOS

    • ping – podstawowy pomiar RTT.
    • traceroute lub traceroute6 – śledzenie trasy (IPv4/IPv6).
    • mtr – łączony traceroute + ping (często trzeba doinstalować).
    • ss / netstat – obserwacja istniejących połączeń, kolejek TCP, lokalnych portów.
    • tcpdump – przechwytywanie pakietów do analizy.

    Prosty zestaw do szybkiej diagnozy z konsoli:

    ping -c 20 8.8.8.8
    mtr -rw 8.8.8.8
    ss -ntpi | head
    sudo tcpdump -n -i eth0 icmp

    Windows

    • ping – z parametrem -t do ciągłych testów.
    • tracert – śledzenie trasy.
    • pathping – rozszerzone narzędzie łączące ping i tracert z dłuższymi pomiarami.
    • PowerShell Test-NetConnection – test portu TCP i proste informacje o trasie.
    ping 1.1.1.1 -t
    tracert 1.1.1.1
    pathping 1.1.1.1
    
    Test-NetConnection example.com -Port 443 -InformationLevel Detailed

    Pathping jest wolniejszy, ale daje statystyki strat i opóźnień na poszczególnych hopach z dłuższego okresu. Przy problemach „raz działa, raz nie” lepszy niż jednorazowy traceroute.

    Narzędzia operatorskie i do długoterminowego monitoringu

    Gdy problem jest przewlekły lub dotyczy wielu lokalizacji, przydają się systemy monitorujące:

    • SmokePing – specjalizowane narzędzie do monitorowania opóźnień i jittera. Wysyła wiele probek w czasie, rysuje wykresy z widocznymi „dymkami” (rozrzut RTT). Świetnie pokazuje bufferbloat i typowe godziny szczytu.
    • Zabbix, Prometheus + Grafana, PRTG – systemy monitoringu z szablonami do pomiaru pingów, dostępności, RTT i strat pakietów.
    • NetFlow/sFlow/IPFIX – nie mierzą bezpośrednio opóźnień, ale pokazują, kto „zjada” przepustowość, co pozwala skorelować skoki pingu z ruchami backupów, replikacji, itp.

    Przykład praktyczny: ping rośnie drastycznie codziennie o 22:00. W NetFlow widać wtedy replikację backupu między serwerami. Można ją przesunąć lub ograniczyć, zamiast szukać „magicznego” błędu w sieci.

    Testy przepustowości a opóźnienia

    Narzędzia do testowania przepustowości łącza też pomagają przy diagnozie opóźnień, pod warunkiem, że są używane świadomie.

    • iperf3 – mierzy przepustowość TCP/UDP między dwoma hostami:
      # serwer
      iperf3 -s
      
      # klient
      iperf3 -c <IP_serwera>
      iperf3 -u -b 10M -c <IP_serwera>   # tryb UDP, 10 Mb/s

      W trybie UDP pokazuje też jitter i straty pakietów.

    • speedtest-cli – test do publicznych serwerów speedtest. Może potwierdzić, czy łącze ISP faktycznie ma deklarowane parametry.

    Podczas testów iperf dobrze jest równolegle mierzyć ping do tego samego hosta i do Internetu. Jeśli RTT skacze drastycznie w trakcie testu, a przepustowość jest bliska maksymalnej, to podręcznikowy obraz przeciążenia łącza lub bufferbloatu.

    Narzędzia do analizy pakietów

    Gdy podstawowe testy nie wystarczają, zostaje zajrzenie w same pakiety.

    • Wireshark – analizator protokołów z GUI. Umożliwia:
      • analizę czasu między pakietami (np. RTT TCP),
      • wykrywanie retransmisji i opóźnionych ACK,
      • filtering po IP, porcie, protokole, flagach TCP.
    • tcpdump – wersja konsolowa, świetna do zrzutów z serwerów bez GUI:
      sudo tcpdump -n -i eth0 host 1.2.3.4 and port 443 -w capture.pcap

      Potem plik .pcap można otworzyć w Wiresharku.

    Analiza sesji TCP w Wiresharku (np. „Follow TCP Stream”, „TCP Stream Graphs”) często pokazuje, że nie „sieć jest wolna”, tylko aplikacja odpowiada z kilkusekundowym opóźnieniem, mimo poprawnego RTT i braku retransmisji.

    Kolorowe płytki drukowane za metalową siatką w różowo‑fioletowym świetle
    Źródło: Pexels | Autor: Mikhail Nilov

    Jak czytać wyniki pomiarów: od surowych liczb do wniosków

    RTT: średnia, minimum, maksimum i jitter

    Sam pojedynczy wynik pingu niewiele mówi. Znaczenie mają dopiero statystyki z serii pomiarów.

    • Minimum RTT – zbliżone do fizycznego minimum trasy (propagacja + trochę przetwarzania). Jeśli minimum jest wysokie, a sieć lokalna sprawna, trasa jest po prostu długa lub egzotyczna.
    • Średnie RTT – realny poziom opóźnień dla większości pakietów. Duża różnica między średnią a minimum sugeruje, że często pojawia się kolejkowanie lub wolne przetwarzanie.
    • Maksimum RTT – pojedyncze „wyskoki” mogą być akceptowalne, ale jeśli maksima regularnie są kilkukrotnie większe od średniej, użytkownicy to zauważą w grach i VoIP.
    • Straty pakietów: kiedy są groźne, a kiedy to tylko „szum pomiarowy”

      W raportach z pingu, MTR czy pathpinga kluczowa jest interpretacja procentu utraconych pakietów. Sam fakt, że gdzieś pojawia się 1–2% „loss”, nie oznacza jeszcze problemu z łączem.

    • Straty pojedynczego hopu – jeśli MTR pokazuje np. 20% straty na jakimś routerze, ale kolejne hopy mają 0%, to zwykle jest to policja ruchu ICMP na tym routerze. Router nie ma obowiązku odpowiadać na każdy ping. Ruch produkcyjny przechodzi normalnie.
    • Straty propagujące się dalej – jeśli 10–20% strat pojawia się na którymś hopie i od tego miejsca wszystkie kolejne hopy mają podobny poziom loss, to wskazówka, że problem leży:
      • w łączu do tego routera,
      • w samym routerze (przeciążony CPU, błędy interfejsu),
      • w łączu za tym routerem, jeśli to on dropuje pakiety na wyjściu.
    • Losowe pojedyncze straty – pojedyncze zgubione pakiety w długiej serii (np. 1 na 1000) to codzienność. W sieciach bezprzewodowych (Wi‑Fi, LTE) nawet więcej. Dla TCP rzadko stanowi to kłopot, dla VoIP/gier – już bardziej.

    Spójny obraz daje dopiero porównanie:

    • czy strata pojawia się tylko do jednego hosta, czy do wielu różnych celów,
    • czy występuje o konkretnych godzinach, czy przez cały dzień,
    • czy dotyczy wyłącznie jednego medium (np. Wi‑Fi), czy także po kablu.

    Jeżeli do routera operatora na kablu masz 0% straty przez wiele minut, a do hosta w Internecie 5–10%, przyczyn szukaj raczej poza lokalną siecią – w łączu operatora lub dalej.

    Łączenie różnych pomiarów w jedną diagnozę

    Same wyniki pingu czy traceroute rzadko dają pełen obraz. Skuteczniejsze jest zestawienie kilku prostych testów w logiczną sekwencję.

    Przykładowy „flow” dla pojedynczej stacji roboczej:

    1. Ping do bramy lokalnej (router w sieci LAN) – stabilne RTT (1–2 ms) i 0% strat oznacza zwykle sprawne Wi‑Fi/kabel i brak przeciążenia routera domowego.
    2. Ping do adresu operatora / 8.8.8.8 – jeśli tu pojawiają się skoki, a do bramy jest dobrze, problem jest na łączu modem–operator lub dalej.
    3. Traceroute/MTR do problematycznego hosta – wskazuje, na którym odcinku trasy zaczynają rosnąć RTT/straty.
    4. Test przepustowości (iperf/speedtest) – zestaw RTT z czasem trwania testu i osiąganą szybkością, szukaj korelacji skoków pingu z obciążeniem.
    5. Pomiar na poziomie aplikacji (np. curl do konkretnego API) – odróżnia problem sieciowy od powolnej logiki po stronie serwera.

    Taka sekwencja pozwala odpowiedzieć, czy „winna” jest lokalna sieć, łącze do ISP, trasa w Internecie, czy w ogóle nie sieć, tylko aplikacja.

    Typowe wzorce na wykresach i w statystykach

    Przy dłuższych pomiarach (SmokePing, MTR uruchomiony godzinami) zaczynają być widoczne charakterystyczne wzorce.

    • „Grzebień” z okresowymi skokami RTT – regularne, powtarzalne skoki co kilka minut lub godzin. Często efekt:
      • zaplanowanych zadań (backup, synchronizacja plików, skanowanie antywirusem),
      • QoS skonfigurowanego tylko częściowo – ruch tła wpada w tę samą kolejkę co VoIP.
    • Szeroka „chmura” wartości wokół średniej – duży jitter, typowy dla Wi‑Fi obciążonego wieloma klientami, LTE, łączy satelitarnych. Średni RTT może być niski, ale widełki min–max rzędu dziesiątek ms rozwalają jakość rozmów i gier.
    • Wyraźne progi czasowe – np. RTT do routera operatora jest stałe, ale RTT do dalszych hopów wzrasta skokowo w jednym miejscu trasy. Wskazuje to na konkretny punkt, gdzie dołącza się dłuższy segment (np. tranzyt międzykontynentalny) albo mocno obciążony router.

    Jeżeli masz wykres z dłuższego okresu, szybko widać, czy problem jest jednorazowy, czy powtarzalny i czy dotyczy określonych godzin pracy użytkowników.

    Różnica między problemem lokalnym a zdalnym

    Przy skargach użytkowników, że „Internet muli”, pierwsze zadanie to oddzielenie problemów lokalnych od zdalnych. Najprostszy zestaw pytań:

    • czy wolno działa wszystko, czy tylko jedna aplikacja/strona,
    • czy problem występuje na jednym urządzeniu, czy na wielu równocześnie,
    • czy ping do bramy lokalnej też ma skoki, czy jest stabilny.

    Jeżeli:

    • ping do bramy jest czysty,
    • ping do 8.8.8.8 czasem skacze,
    • problematyczne są tylko niektóre serwisy,

    to najczęściej problem jest po stronie ISP lub dalej w Internecie. Gdy natomiast już ping do bramy skacze o dziesiątki ms, trzeba szukać w swoim podwórku: zakłócone Wi‑Fi, zły kabel, przeciążony router lub switch.

    Ruch TCP a ICMP: dlaczego wyniki się różnią

    Pomiar pingu (ICMP) i zachowanie sesji TCP często się nie pokrywają. Powody są proste:

    • wiele routerów i firewalli ma osobne limity dla ICMP – odpowiedzi są opóźniane lub dropowane przy dużym obciążeniu;
    • TCP ma własne mechanizmy kontroli przeciążenia, okna, retransmisje – potrafi „ucierpieć” nawet przy braku strat ICMP;
    • QoS może priorytetyzować ruch TCP/UDP aplikacji nad ICMP – ping będzie wyglądał gorzej niż realna praca aplikacji, albo odwrotnie.

    Dlatego przy krytycznych usługach warto zestawiać:

    • ping/MTR do hosta,
    • statystyki TCP (np. ss -ti, retransmisje, RTO),
    • rzeczywisty czas działania aplikacji (np. logi HTTP: request_time).

    Jeżeli ping jest czysty, a TCP notuje masę retransmisji, problem może być w konfiguracji ścieżki (MTU, asymetria, filtracja po drodze) albo w konkretnej kolejce QoS.

    Gdzie najczęściej giną pakiety: typowe wąskie gardła i scenariusze

    Ostatnia mila: Wi‑Fi, LTE i kiepskie okablowanie

    Najwięcej problemów rodzi się blisko użytkownika. Nawet najlepszy szkielet operatora nie pomoże, jeśli:

    • Wi‑Fi pracuje na zapchanym kanale,
    • router stoi obok mikrofalówki,
    • kabel jest zagięty, przezrośnięty wodą albo to stary, tani patchcord.

    Typowe objawy:

    • ping do bramy lokalnej ma zmienne RTT (od kilku do kilkudziesięciu ms),
    • pojawiają się okresowe time‑outy, mimo że sygnał Wi‑Fi wydaje się „mocny”,
    • w MTR pierwsze hopy już pokazują jitter i sporadyczne straty.

    Prosty test: podłącz to samo urządzenie po kablu do routera. Jeśli problemy znikają, winne jest medium bezprzewodowe. Jeżeli nie ma takiej możliwości, porównaj kilka urządzeń w tej samej sieci – jeśli tylko jedno ma problem, szukaj w jego sterownikach, konfiguracji, kablu lub karcie sieciowej.

    Router domowy jako wąskie gardło

    Tani router z marketu, na którym działa jednocześnie Wi‑Fi, NAT, firewall, VPN, serwer multimediów i jeszcze kilka innych usług, szybko staje się punktem zapalnym.

    Znaki ostrzegawcze:

    • wzrost RTT już do bramy (192.168.x.1) w godzinach szczytu,
    • resetujący się router przy dużym uploadzie,
    • skokowe pogorszenie jakości VoIP/gier, gdy ktoś zaczyna upload (np. wysyła zdjęcia do chmury).

    Często pomaga:

    • włączenie prostego QoS (priorytety dla VoIP/gier, ograniczenie uploadu dla pozostałych),
    • wyłączenie zbędnych „bajerów” w firmware, które pożerają CPU,
    • w skrajnych przypadkach – wymiana urządzenia na coś z mocniejszym procesorem.

    Jeśli ping do bramy lokalnej stabilizuje się po odłączeniu części urządzeń z sieci, to jasny sygnał, że router jest przeciążony.

    Łącze do operatora: upload, bufferbloat i plan taryfowy

    Kolejnym newralgicznym miejscem jest samo łącze wan‑owe: DSL, kablówka, światłowód czy LTE. Nawet przy sporej przepustowości downloadu, słaby upload lub ogromne bufory potrafią zniszczyć opóźnienia.

    Charakterystyczne sytuacje:

    • ktoś wysyła duży plik (upload prawie 100%),
    • ping do 8.8.8.8 skacze z kilku ms do kilkuset,
    • VoIP/gra zupełnie nieużywalne podczas wysyłki.

    To klasyczny obraz bufferbloatu. Router albo modem trzyma pakiety w długich kolejkach zamiast je odrzucać, przez co nowe pakiety (np. z VoIP) czekają w ogonku.

    Rozwiązania praktyczne:

    • ustawienie inteligentnego QoS/Smart Queue Management (SQM, fq_codel, cake) na routerze,
    • ograniczenie maksymalnego uploadu o kilka procent poniżej wartości z umowy – dzięki temu kolejki formują się na twoim sprzęcie, nie w modemie operatora,
    • uświadomienie użytkownikom, że jednoczesne streamy i uploady „na full” mają swoją cenę w opóźnieniach.

    Agregacja ruchu na przełącznikach i uplinkach

    W firmach często winne nie jest samo łącze do ISP, tylko wewnętrzny uplink między switchami. Jeden słabszy lub źle skonfigurowany link, przez który przepuszczany jest ruch całego piętra, robi różnicę.

    Typowe symptomy:

    • użytkownicy w jednej lokalizacji skarżą się na opóźnienia, inni – nie,
    • ping między serwerami w tej samej serwerowni jest idealny, ale z danego segmentu LAN do serwerowni – już nie,
    • na interfejsie uplink widać wysoki poziom output drops lub błędów CRC.

    W takiej sytuacji warto:

    • sprawdzić statystyki interfejsów (na switchach zarządzalnych: show interface),
    • zweryfikować, czy nie ma pętli lub zbyt wielu VLAN‑ów tagowanych na wolnym porcie,
    • rozważyć agregację łączy (LACP) lub podział ruchu na kilka uplinków.

    Jeżeli RTT do serwera w sieci lokalnej rośnie tylko dla użytkowników za konkretnym switchem, a inni mają stabilnie, problem najpewniej jest na tym jednym urządzeniu lub łączu do niego.

    Segmenty tranzytowe między operatorami

    W Internecie pakiety często przechodzą przez kilku operatorów tranzytowych. Wąskie gardło może być poza twoim bezpośrednim wpływem – na styku dwóch sieci (peering, wymiana ruchu).

    Na to wskazuje m.in.:

    • dobry RTT do sieci operatora (ostatni hop przed wyjściem z AS),
    • nagły skok RTT i/lub straty na pierwszym hopie w sieci innego operatora,
    • ten sam problem widoczny z wielu twoich lokalizacji (np. z różnych oddziałów firmy).

    W traceroute widać wtedy, że konkretny router w zewnętrznej sieci jest pierwszym miejscem, gdzie rośnie RTT. Jeśli kolejne hopy mają podobne czasy i straty, problem jest dalej po ich stronie.

    W takiej sytuacji, poza zgłoszeniem do swojego operatora z załączonymi traceroute/MTR, niewiele da się zrobić technicznie. Można natomiast poszukać obejścia (VPN inną trasą, alternatywny dostawca, CDN bliżej użytkowników).

    Serwer docelowy i jego firewall

    Często oskarżana jest „sieć”, a wąskim gardłem jest sam serwer lub filtr po drodze.

    Typowe oznaki:

    • ping do adresu IP serwera jest stabilny, ale czas odpowiedzi HTTP/HTTPS jest długi,
    • logi serwera aplikacyjnego pokazują długie czasy generowania odpowiedzi,
    • firewall przed serwerem ma limity dla nowych sesji, co wydłuża ustanawianie połączeń TCP.

    Przydaje się prosty rozdział pomiarów:

    • ping / MTR do serwera – obraz warstwy sieciowej,
    • pomiar czasu trwania samego handshake’u TCP/TLS (np. curl, hping3),
    • czas przetwarzania żądania po stronie aplikacji (logi, APM).

    Najczęściej zadawane pytania (FAQ)

    Jak zmierzyć opóźnienie (ping) w sieci i co oznacza RTT?

    Najprościej użyć polecenia ping. Na Windowsie: ping adres_lub_domena, na Linux/macOS to samo w terminalu. Narzędzie wysyła pakiety ICMP i pokazuje czas w milisekundach – to RTT (Round-Trip Time), czyli czas podróży pakietu w obie strony.

    Średnia wartość RTT mówi, jak „daleko” lub „wolno” jest do danego hosta, ale równie ważna jest stabilność – jeśli raz widzisz 20 ms, potem 150 ms, a potem znowu 20 ms, to masz problem z jitterem, a nie tylko z samym pingiem.

    Co to jest jitter i dlaczego gry online oraz VoIP tak na niego reagują?

    Jitter to zmienność opóźnień – nie chodzi o to, że ping jest wysoki, tylko o to, że skacze. W grach online i VoIP pakiety muszą przychodzić w miarę równym rytmem. Jeśli część z nich dociera z dużym opóźnieniem, pojawiają się „lagi”, teleportowanie postaci, ucinanie sylab i trzaski w dźwięku.

    Przy dużym jitterze pomaga:

    • ograniczenie innych obciążeń łącza (upload, torrent, backup w tle),
    • przejście z Wi‑Fi na kabel Ethernet,
    • konfiguracja QoS na routerze (priorytet dla VoIP/gier).

    Jak sprawdzić, gdzie giną pakiety po drodze w Internecie?

    Do zlokalizowania „miejsca problemu” użyj traceroute (Linux/macOS) lub tracert (Windows). Narzędzie pokazuje kolejne przystanki (hopy) między twoim komputerem a serwerem docelowym oraz czasy odpowiedzi z każdego z nich.

    Jeśli od konkretnego hopa RTT rośnie i jednocześnie pojawia się utrata pakietów na wszystkich dalszych etapach, problem najczęściej leży właśnie tam lub tuż za nim. Same gwiazdki przy pojedynczym hopie, przy normalnym RTT dalej, zwykle oznaczają tylko filtrację/priorytetyzację ICMP, a nie realne gubienie ruchu użytkownika.

    Jak odróżnić problem z siecią od problemu z samą aplikacją lub serwerem?

    Zrób dwa równoległe testy: mierz ping do adresu IP serwera i osobno czas odpowiedzi aplikacji (np. curl -w "%{time_total}n" https://adres). Jeśli ping jest niski i stabilny, a odpowiedź HTTP/SQL trwa długo, to wąskie gardło jest po stronie aplikacji, bazy danych lub dysków.

    Gdy jednocześnie rośnie ping, pojawia się jitter i packet loss – wtedy faktycznie szukaj przyczyny w sieci: przeciążone łącza, Wi‑Fi, router, trasa w Internecie. Dobra praktyka: zanim dotkniesz routerów i kabli, sprawdź obciążenie CPU/RAM i I/O na serwerze.

    Co najczęściej powoduje gubienie pakietów w sieci lokalnej i w Internecie?

    Pakiety „giną” głównie dlatego, że urządzenie pośrednie nie ma już miejsca w buforze albo celowo je odrzuca. Typowe źródła problemów to:

    • przeciążone łącza (upload zapchany backupem, łącza radiowe, „ostatnia mila”),
    • routery/przełączniki z przepełnionymi buforami lub złą konfiguracją QoS,
    • firewalle i systemy bezpieczeństwa filtrujące lub ograniczające ruch,
    • problemy z kartą sieciową (błędy na interfejsie, złe sterowniki, offload),
    • przeciążony host źródłowy lub docelowy (pełne kolejki TCP/IP).

    Przy powtarzalnym packet loss warto sprawdzić statystyki interfejsów (błędy, dropped), obciążenie CPU na routerze/serwerze oraz stopień zajęcia łącza (szczególnie upload).

    Jakie opóźnienia są „normalne” dla światłowodu, Wi‑Fi i LTE/5G?

    W tej samej lokalizacji światłowód zwykle daje najniższe i najbardziej stabilne RTT – do kilkunastu milisekund w kraju, pojedyncze ms w tej samej serwerowni. Ethernet po miedzi w LAN-ie to też zazwyczaj opóźnienia rzędu pojedynczych milisekund.

    Wi‑Fi i sieci komórkowe (LTE/5G) dodają więcej narzutu i zmienności. W praktyce w domu możesz widzieć:

    • Wi‑Fi: ping wyższy niż po kablu i bardziej „skaczący”,
    • LTE/5G: RTT większe, często z większym jitterem – zależne od zasięgu i obciążenia stacji.

    Czy wysoki ping zawsze oznacza problem z siecią?

    Nie. Wysoki, ale stabilny ping do odległego serwera (np. w innym kraju) jest po prostu efektem fizycznej odległości i liczby przeskoków po drodze. 60–80 ms do serwera w innym państwie jest czymś normalnym i trudno to „przyspieszyć”.

    Za poważniejszy problem uznaje się dopiero niestabilność: duże skoki RTT, okresowe skoki do setek milisekund oraz packet loss. To właśnie te zjawiska rozbijają gry online, VoIP i inne aplikacje czasu rzeczywistego, nawet jeśli średni ping nie wygląda źle.

    Najważniejsze wnioski

    • Opóźnienie w sieci to nie tylko jeden parametr – liczy się RTT, jitter i utrata pakietów; wysokie, ale stabilne RTT bywa mniej szkodliwe niż niskie, ale mocno skaczące.
    • Najbardziej dokuczliwy dla użytkownika jest jitter i packet loss – to one powodują „lagi”, trzaski w VoIP czy przycinanie obrazu, nawet gdy średni ping wygląda dobrze.
    • Całkowite opóźnienie to suma kilku składowych: propagacji (odległość i medium), transmisji (prędkość łącza i wielkość pakietu), przetwarzania (routery, firewalle) i kolejkowania (przeciążone bufory).
    • Pakiety „giną” głównie przez przeciążenie lub filtrację: pełne bufory na routerach/przełącznikach, ograniczenia na firewallach, błędy kart sieciowych, słabe łącza radiowe lub miedziane.
    • Traceroute i ping mogą wprowadzać w błąd, bo wiele urządzeń obniża priorytet ICMP – gwiazdki lub wysokie RTT na pojedynczym hopie nie muszą oznaczać realnego problemu z ruchem aplikacyjnym.
    • „Wolna sieć” często okazuje się problemem aplikacji lub serwera: ping bywa stabilny i niski, a opóźnienie generuje obciążona baza danych, CPU, RAM lub storage.
    • Prosty test diagnostyczny to równoległy pomiar pingu i czasu odpowiedzi aplikacji (np. curl); niski ping przy długim czasie odpowiedzi wskazuje na problem po stronie serwera, a nie infrastruktury sieciowej.

    Bibliografia i źródła

    • RFC 2681: A Round-trip Delay Metric for IPPM. IETF (1999) – Definicje i metryki RTT w pomiarach wydajności IP
    • RFC 3393: IP Packet Delay Variation Metric for IPPM. IETF (2002) – Formalna definicja jittera (IP Packet Delay Variation)
    • Computer Networking: A Top-Down Approach. Pearson (2021) – Podstawy opóźnień, kolejkowania, strat pakietów, QoS
    • High Performance Browser Networking. O'Reilly Media (2013) – Wpływ RTT, jittera i strat pakietów na aplikacje sieciowe
    • Understanding Latency in Packet-Switched Networks. Cisco Systems – Opis źródeł opóźnień, kolejkowania i bufferbloat w sieciach IP