Dlaczego VPN wydaje się wolny podczas wysyłania: opóźnienie kolejki
Szybki transfer nadal może powodować zacinanie rozmów, gdy pakiety czekają w kolejce. Porównaj czasy rundy w spoczynku i pod obciążeniem, zanim obwinisz punkt końcowy VPN.
Rozpoczyna się wysyłanie kopii zapasowej, licznik transferu wygląda zdrowo, a rozmowa wideo zamienia się w papkę. Łączu nie brakuje przepustowości w sensie sugerowanym przez tę liczbę; pakiety czekają gdzieś w kolejce, a interaktywne stoją za dużymi danymi. To opóźnienie kolejki, powszechnie nazywane bufferbloat. VPN może dodać własną kolejkę, ale rzadko tworzy problem sam.
Przepustowość i opóźnienie to różne pomiary
Przepustowość odpowiada na to, ile danych przemieszcza się na sekundę, podczas gdy opóźnienie odpowiada na to, ile czasu jeden pakiet potrzebuje na pokonanie ścieżki. Zatkane łącze może utrzymywać duże zaległości i wciąż zgłaszać dobrą przepustowość, ponieważ kolejka opróżnia się z prędkością linii, gdy tylko skończy się seria. Ruch interaktywny cierpi pierwszy, bo rozmowa potrzebuje pakietu co kilka milisekund, a nie dużego pliku na końcu. Dlatego mierzenie tylko wyniku testu prędkości ukrywa objaw, który skłonił cię do sprawdzenia.
Zwróć też uwagę na kierunek pod obciążeniem. Pełny bufor wysyłania może opóźnić wszystko inne, podczas gdy przepustowość pobierania stoi bezczynnie.
Zmierz czas rundy pod obciążeniem
Pobierz linię bazową na spokojnym łączu, a następnie powtórz ten sam pomiar, gdy trwa jeden kontrolowany transfer. Porównaj oba przebiegi, a nie liczby bezwzględne.
ping -c 20 -i 0.2 203.0.113.5
dd if=/dev/zero bs=1M count=50 | ssh [email protected] "cat > /dev/null"Pierwsze polecenie próbkuje czas rundy, a drugie tworzy ciągłe wysyłanie bez potrzeby usługi testu prędkości. Linia bazowa, która pozostaje płaska, a potem obciążony przebieg rosnący o setki milisekund, to sygnał, którego szukasz. Niektóre sieci obniżają priorytet ICMP, więc traktuj ping jako wskazówkę i potwierdź własnym wyświetlaczem opóźnienia aplikacji. Utrzymuj test krótki na łączach z limitem danych, bo powtarzalny kontrast liczy się bardziej niż długie nasycenie.
Przenieś kolejkę tam, gdzie jest wąskie gardło
Zarządzanie kolejką pomaga tylko na urządzeniu, które naprawdę trzyma zaległości. Sprawdź, co robi interfejs, zanim dodasz reguły.
tc -s qdisc show dev eth0
tc qdisc replace dev eth0 root fq_codelPolecenie show raportuje bieżącą dyscyplinę oraz liczniki zaległości i odrzuceń, co mówi, czy ten interfejs jest wąskim gardłem, czy tylko przepuszcza ruch. Zastąpienie dyscypliny głównej algorytmem sprawiedliwej kolejki daje krótkim strumieniom własną kolej zamiast jednego FIFO dzielonego z dużymi danymi. Zastosuj to na interfejsie WAN routera, gdy router jest wąskim gardłem, a nie z przyzwyczajenia na urządzeniu tunelu. Zachowaj poprzednią konfigurację i ponownie przetestuj zarówno responsywność pod obciążeniem, jak i szybkość transferu, bo nieco niższa prędkość masowa to dobry interes za użyteczne rozmowy.
Co zmienia tunel i co ukrywa
VPN dodaje szyfrowanie i jeszcze jeden przeskok, a także ukrywa poszczególne strumienie przed sprzętem poza tunelem. Ma to znaczenie, gdy urządzenie wyżej oferuje priorytetyzację według aplikacji, bo widzi zaszyfrowane pakiety zamiast pierwotnych rozmów. Router, który sam kończy tunel, ma inny widok i inne obciążenie i może klasyfikować wewnątrz. Żadne z tych rozwiązań nie usuwa kolejki na łączu dostępowym, gdzie zwykle gromadzi się opóźnienie.
Jeśli opóźnienie nie podąża za obciążeniem, przestań stroić kolejki i spojrzyj gdzie indziej: warunki Wi-Fi, problemy z rozmiarem pakietu lub jedno słabe wyjście. Ustawienia kolejki zastosowane bez pomiaru tylko przenoszą zagadkę.