Zrozumienie ograniczeń przepustowości TCP
Rzeczywista wydajność pojedynczego przepływu TCP na trasie sieciowej rzadko dorównuje nominalnej prędkości zakupionego łącza. Protokół TCP opiera się na mechanizmach potwierdzeń i kontroli przeciążeń, co sprawia, że ostateczna prędkość transferu jest wypadkową trzech niezależnych czynników: fizycznej przepustowości, rozmiaru okna odbioru oraz stopy utraty pakietów.
Kalkulator opóźnienia i przepustowości sieci pozwala precyzyjnie wskazać, który z tych elementów stanowi w danym momencie wąskie gardło połączenia. Wprowadzając parametry trasy oraz parametry TCP, można natychmiast zidentyfikować aktywny limit, określany dynamicznie jako:
- przepustowość łącza,
- okno odbioru,
- utratę pakietów.
Wszystkie obliczenia wykonywane są bezpośrednio w przeglądarce użytkownika. Każda wprowadzona wartość jest przetwarzana bezpośrednio w tej przeglądarce — nic nie jest nigdzie wysyłane.
Parametry wejściowe i konfiguracja trasy
Aby dokonać dokładnej analizy wydajności, narzędzie wymaga zdefiniowania parametrów fizycznych oraz protokołu. Pola wejściowe obejmują następujące elementy:
- Przepustowość łącza: Najwolniejszy odcinek na trasie — często prędkość nominalna Twojego planu taryfowego. Wartość ta musi być większa od zera.
- Czas RTT (Round-Trip Time): Czas ping do drugiego końca — użyj największej wartości oczekiwanej pod obciążeniem. Wartość musi być większa od zera.
- Rozmiar danych: Dane do przesłania — plik, kopia zapasowa, zbiór danych. Wartość musi być większa od zera.
- Okno odbioru: Bajty, które odbiorca może buforować. Wartość 65,535 to nieskalowane maksimum; puste pole oznacza brak limitu okna. Wartość nie może przekraczać 1 073 725 440 bajtów.
- MSS (bajty): Bajty danych użytecznych na pakiet — wartość 1,460 zapełnia standardową ramkę Ethernet. Puste pole powoduje ignorowanie narzutu protokołu i utraty pakietów. Wymagana jest liczba całkowita z przedziału od 1 do 65 495.
- Utrata pakietów (%): Średnie prawdopodobieństwo utraty pakietów. Puste pole lub 0 oznacza brak limitu utraty. Zakres dopuszczalny wynosi od 0 do 100 procent.
- Miejsca po przecinku: Określa precyzję wyświetlania wyników liczbowych.
Interfejs udostępnia przycisk Załaduj przykład do automatycznego wypełnienia pól danymi testowymi oraz przycisk Wyczyść do resetowania formularza.
Metodyka obliczeń i stosowane wzory
Narzędzie wyznacza wydajność sieci poprzez zestawienie ze sobą trzech sufitów wydajnościowych i wybranie wartości najniższej. Poniżej przedstawiono matematyczny zapis poszczególnych kroków kalkulacji:
1. Wydajność protokołu i limit łącza
Każdy pakiet przesyłany przez sieć Ethernet obarczony jest narzutem nagłówków. Standardowy narzut wynosi 78 bajtów na pakiet (40 bajtów na nagłówki TCP/IP oraz 38 bajtów narzutu warstwy fizycznej). Wydajność protokołu oraz limit łącza po uwzględnieniu narzutu obliczane są następująco:
Wydajność protokołu = MSS / (MSS + 78 B)
Limit łącza = przepustowość × wydajność
2. Iloczyn przepustowości i opóźnienia (BDP) oraz okno odbioru
BDP określa fizyczną pojemność „rury” sieciowej. Aby w pełni wysycić łącze, okno odbioru musi być co najmniej równe tej wartości:
BDP = przepustowość × RTT
Okno do zapełnienia trasy = BDP / 8
Jeśli zdefiniowano limit okna odbioru, maksymalna przepustowość ograniczona oknem wynosi:
Limit okna = okno / RTT
3. Limit utraty pakietów (Model Mathisa)
W przypadku występowania strat pakietów, przepustowość TCP drastycznie spada. Do wyznaczenia tego limitu stosowany jest model Mathisa:
Limit utraty pakietów (Mathis) = MSS / (RTT × √(p))
Gdzie p oznacza prawdopodobieństwo utraty pakietów wyrażone jako ułamek dziesiętny.
4. Ostateczna przepustowość i czas transferu
Oczekiwana przepustowość TCP to najniższa z wyliczonych powyżej wartości:
przepustowość = min(szybkość × wydajność, okno ÷ RTT, MSS ÷ RTT ÷ √p) · BDP = szybkość × RTT
Czas potrzebny na przesłanie danych uwzględnia czas propagacji pierwszego pakietu (1 RTT) oraz czas transmisji całej reszty ładunku:
Czas transferu = RTT + (8 × rozmiar) / przepustowość
Komunikaty systemowe i ostrzeżenia
W zależności od wprowadzonych danych, kalkulator wyświetla dynamiczne powiadomienia ułatwiające diagnostykę problemów sieciowych:
- Wymóg skalowania okna: Jeśli wymagane okno do zapełnienia trasy przekracza standardowy limit 65 535 bajtów, pojawia się komunikat: „Zapełnienie tej trasy wymaga okna o rozmiarze
‹window›— to powyżej nieskalowanego maksimum wynoszącego 65,535 bajtów, więc obie strony muszą wynegocjować skalowanie okna TCP (RFC 7323).” - Przekroczenie limitu RFC 7323: Gdy wymagane okno przekracza absolutny limit protokołu TCP, system informuje: „Zapełnienie tej trasy wymaga okna
‹window›— to więcej niż największe okno, jakie TCP może wynegocjować (1,073,725,440 bajtów). Pojedynczy przepływ na tej trasie nigdy nie przekroczy‹value›.” - Sugestia optymalizacji okna: Jeśli okno odbioru ogranicza transfer, wyświetlane jest powiadomienie: „Zwiększenie okna odbioru do
‹window›pozwoliłoby temu transferowi osiągnąć do‹value›.” - Ograniczenia modelu Mathisa: Przy wysokiej utracie pakietów pojawia się ostrzeżenie: „Utrata pakietów powyżej 1% wykracza poza zakres wiarygodności modelu Mathisa — limit utraty należy traktować jako optymistyczny szacunek.”
Obsługa błędów walidacji
W przypadku wprowadzenia niepoprawnych danych, kalkulator wyświetla jeden z poniższych komunikatów o błędach:
- Błąd parsowania: „Przepustowość łącza: „abc” nie jest liczbą.”
- Błędna przepustowość: „Przepustowość łącza musi być większa od zera.”
- Błędny czas RTT: „Czas RTT musi być większy od zera.”
- Błędny rozmiar danych: „Rozmiar danych musi być większy od zera.”
- Błędne okno odbioru: „Okno odbioru musi być większe od zera.”
- Zbyt duże okno: „Protokół TCP nie może wynegocjować okna powyżej 1,073,725,440 bajtów (skalowanie okna RFC 7323).”
- Błędny rozmiar MSS: „MSS musi być całkowitą liczbą bajtów z przedziału od 1 do 65,495.”
- Błędna utrata pakietów: „Wskaźnik utraty pakietów musi mieścić się w przedziale od 0 do 100 procent.”
- Przepełnienie zakresu: „Wartość lub wynik pośredni przekracza obsługiwany zakres liczb.”
Często zadawane pytania (FAQ)
Co to jest iloczyn przepustowości i opóźnienia (BDP) i dlaczego określa on rozmiar okna? BDP — czyli przepustowość łącza × czas RTT — to ilość danych przesyłanych w sieci w danym momencie. TCP może mieć najwyżej jedno niepotwierdzone okno w locie, więc okno mniejsze niż BDP pozostawia łącze częściowo niewykorzystane: przy 100 Mbit/s i RTT wynoszącym 50 ms pojemność łącza wynosi 625 kB, a okno o rozmiarze 65,535 bajtów zapełnia zaledwie jedną dziesiątą tej przestrzeni. Dlatego szybkie trasy o dużym opóźnieniu wymagają skalowania okna TCP (RFC 7323), co podnosi maksymalny możliwy do wynegocjowania rozmiar z 65,535 bajtów do około 1 GB.
Dlaczego mój transfer jest wolniejszy niż przepustowość łącza, za którą płacę? Pojedynczy przepływ TCP napotyka trzy niezależne limity, z których najniższy decyduje o ostatecznej prędkości. Narzut protokołu ogranicza samo łącze o około 5% — standardowa ramka Ethernet przenosi 1,460 bajtów danych użytecznych z 1,538 bajtów przesyłanych fizycznie. Okno odbioru ogranicza przepustowość do wartości okno ÷ RTT, przez co klasyczne okno o rozmiarze 65,535 bajtów ogranicza transfer na trasie o opóźnieniu 50 ms do około 10.5 Mbit/s, bez względu na to, jak szybkie jest łącze. Z kolei utrata pakietów ogranicza transfer do wartości (MSS ÷ RTT) ÷ √strata. Powyższy wynik wskazuje, który z tych limitów jest kluczowy dla Twoich parametrów.
W jaki sposób utrata pakietów ogranicza przepustowość TCP? TCP traktuje utratę pakietów jako objaw przeciążenia sieci i zmniejsza prędkość wysyłania o połowę przy każdym takim zdarzeniu, dlatego nawet minimalna utrata pakietów ma ogromne znaczenie na szybkich trasach. Model Mathisa szacuje limit jako (MSS ÷ RTT) ÷ √p — przy utracie pakietów na poziomie 0.01% na trasie o opóźnieniu 50 ms i MSS wynoszącym 1,460 bajtów daje to około 23 Mbit/s, niezależnie od nominalnej prędkości łącza. Model ten zakłada równomiernie rozłożone, niezależne przypadki utraty pakietów; poniżej około 1% dobrze odzwierciedla rzeczywistość, natomiast przy utracie pakietów o charakterze seryjnym (pakietami) jego szacunki są zbyt optymistyczne.
Czy megabajty na tej stronie są takie same jak w moim menedżerze plików? Niezupełnie. Ta strona korzysta z jednostek dziesiętnych, zgodnie z konwencją sieciową: 1 kbit = 1,000 bitów, a 1 MB = 1,000,000 bajtów. Większość menedżerów plików liczy dane w jednostkach opartych na potęgach dwójki (1024), często błędnie oznaczając je jako MB — plik o rozmiarze „100 MB” w takim programie to zazwyczaj 100 MiB ≈ 104.86 dziesiętnych MB, więc jego przesłanie zajmuje o około 5% dłużej, niż sugerowałaby wartość dziesiętna. Wpisz tutaj 104.86 MB, aby dokładnie dopasować obliczenia.