Dlaczego oznaczenie Wi-Fi routera nie przewiduje przepustowości VPN
Reklamowana prędkość Wi-Fi i zmierzona prędkość VPN opisują różne warstwy. Przejdź tę uporządkowaną kontrolę, zanim kupisz szybszy router.
Router z plakietką Wi-Fi 3,000 Mbps wciąż może przenosić zaszyfrowany ruch z ułamkiem tej liczby, i żadna z tych liczb nie jest nieuczciwa. Ocena radiowa opisuje najlepszą możliwą modulację łącza bezprzewodowego, którą obsługuje chipset; liczba VPN opisuje, jak szybko jedno urządzenie może przepchnąć zaszyfrowane pakiety przez procesor routera i poza twoją linię dostępową. To różne warstwy, różne rozmiary pakietów i różne metody pomiaru. Traktuj liczbę na pudełku jako sufit, którego nikt nie osiąga, a nie prognozę prędkości twojego tunelu.
Krok 1: Zmapuj cztery warstwy, które ograniczają tę liczbę
Prawie każde zgłoszenie wolnego routera, z którym pracowałem, trafia do jednego z czterech poziomów: łącza bezprzewodowego, szybkości dostępu WAN, ścieżki przekazywania (NAT, zapora, śledzenie połączeń) albo ścieżki kryptograficznej VPN. Nakładają się, a najwolniejszy poziom wyznacza wynik. Reklamowana prędkość Wi-Fi mówi tylko o pierwszym poziomie i mówi o nim hojnie.
Ta liczba bierze się ze strumieni pomnożonych przez szerokość kanału i najwyższą modulację, jaką chipset może wynegocjować. Radio 2x2 na 5 GHz przy 80 MHz z 1024-QAM reklamowane jest blisko 1,200 Mbps, ale Wi-Fi to współdzielone medium półdupleksowe: klienci się zmieniają, retransmisje i ruch zarządzający palą czas antenowy, a TCP dokłada własny narzut. Klient, który wynegocjuje najwyższą prędkość w idealnych warunkach, zwykle mierzy znacznie poniżej połowy, a mniej, gdy pojawią się sąsiednie sieci.
| Symptom | Tier to suspect first |
|---|---|
| Wired clients are slow too | WAN access or forwarding path |
| Only Wi-Fi clients are slow | Radio, airtime, or channel width |
| One stream is slow, four parallel streams add up | Per-connection CPU path, not the link |
| Every stream is slow and one core sits at 100% | Crypto path |
| Fast to LAN hosts, slow to the internet | WAN, not the tunnel |
Jeśli tabela wskazuje radio, najpierw napraw stronę bezprzewodową: pasmo, szerokość kanału, odległość. Jeśli wskazuje poniżej radia, liczą się kolejne cztery kroki, i żaden zakup anten tego nie zmieni.
Krok 2: Zmierz przewodową linię bazową, zanim dotkniesz radia
Podłącz laptop do Ethernetu i najpierw zmierz ścieżkę bez tunelu, bo to daje mianownik. Uruchom narzędzie przepustowości po drugiej stronie, na VPS-ie albo serwerze domowym, który zakańcza VPN, i skieruj klienta na jego adres publiczny, aby ruch przechodził przez twój router i linię dostępową.
# on the far host (VPN endpoint)
iperf3 -s
# wired client, direct to the endpoint's public address
iperf3 -c 203.0.113.10 -t 30
# same client, four parallel streams
iperf3 -c 203.0.113.10 -t 30 -P 4
Dwie liczby z tego bloku odpowiadają na różne pytania. Jeden strumień pokazuje sufit na połączenie, z zachowaniem okna TCP i dowolnym kształtowaniem na przepływ w ścieżce. Cztery strumienie pokazują, czy łącze ma niewykorzystaną pojemność, bo strumienie równoległe mogą wypełnić rurę, której jeden strumień nie wypełni.
Zachowaj uczciwość: ten sam host, pora dnia i czas trwania, i nic innego nie streamuje w domu. Trzydziestosekundowe przesyłanie masowe to właściwa jednostka, a RFC 6349, ramy testowania przepustowości TCP, opierają się dokładnie na tym rozumowaniu, bo krótkie serie i małe żądania schlebiają łączu. Zapisz linię bazową, zanim cokolwiek zmienisz.
Krok 3: Uruchom ten sam test przez tunel
Teraz powtórz go wobec adresu tunelu punktu końcowego, z tym samym klientem, czasem i liczbą strumieni, przy włączonym tunelu i bez innego ruchu. Stosunek obu wyników mówi, ile kosztuje szyfrowanie i enkapsulacja na tym sprzęcie; liczba bezwzględna mówi, czy to wystarczy do zadania.
Obserwuj liczniki podczas przesyłania. W WireGuardzie wg show raportuje przesłane bajty na partnera; w OpenVPN plik stanu zapisywany co interwał daje ten sam widok.
watch -n 1 'wg show wg0 transfer'
# OpenVPN: add --status /run/openvpn/server.status 10 to the server config
tail -f /run/openvpn/server.status
Jeśli liczba tunelu jest blisko przewodowej linii bazowej, VPN nie jest wąskim gardłem i możesz przestać go winić. Jeśli to ułamek linii bazowej, strata powstała wewnątrz ścieżki szyfrowania i przekazywania routera, a następny krok mówi, w której części.
Jedno ostrzeżenie: gdy zmieni się wyjściowy IP, niektóre serwisy testów prędkości po cichu wybierają inny serwer pomiarowy, więc ostatecznie porównujesz dwa różne cele. Sam przypnij adres serwera.
Krok 4: Czytaj procesor jako ścieżkę, nie jako średnią
Router pokazujący 30 procent całkowitego procesora wciąż może być nasycony: praca jednego tunelu zwykle ląduje na jednym rdzeniu, jednej kolejce przerwań albo jednym wątku jądra, więc średnia ukrywa sufit. Patrz na liczby na rdzeń i softirq zamiast na wskaźnik w panelu.
mpstat -P ALL 1
top -H -p $(pgrep -f 'openvpn')
grep -o -m1 aes /proc/cpuinfo
W tym wyniku znaczenie mają trzy rzeczy. Jeden rdzeń przypięty blisko 100 procent, gdy pozostałe stoją bezczynnie, wskazuje limit na połączenie. Duży %soft albo zajęty ksoftirqd na jednym procesorze wskazuje przetwarzanie pakietów po stronie odbioru, które nie rozkłada się na kolejki. A brak flagi aes oznacza, że procesor nie ma instrukcji AES, więc szyfrowanie symetryczne działa w oprogramowaniu i kosztuje znacznie więcej na pakiet.
Implementacja też ma znaczenie. Tradycyjna instancja OpenVPN w przestrzeni użytkownika przetwarza pakiety jednego tunelu w dużej mierze w jednym miejscu, więc szybkie wielordzeniowe pudło może zachowywać się jak jednordzeniowe dla tego tunelu. WireGuard w jądrze rozkłada pracę na procesory, a odciążenie kanału danych OpenVPN również przenosi obsługę pakietów do jądra, ale tylko w kompilacjach i na platformach, które to obsługują. Twierdzenie o przyspieszeniu sprzętowym na stronie marketingowej nie jest dowodem, że ścieżka kodu, którą uruchamiasz, z niego korzysta.
Krok 5: Zdecyduj, co zmienić, właśnie w tej kolejności
Przejdź listę w dół i zatrzymaj się na pierwszym prawdziwym wierszu, bo zmiana czegokolwiek poniżej nie ruszy liczby.
1. Przewodowa przepustowość bezpośrednia jest niższa niż to, za co płacisz: porozmawiaj z dostawcą, bo tunel nie może stworzyć pojemności, której linia dostępowa nie daje. 2. Po kablu bezpośrednio jest dobrze, ale jeden rdzeń przypina się podczas testu tunelu: ścieżka kryptograficzna routera jest granicą. 3. Procesor stoi bezczynnie, ale tunel jest wolny: sprawdź MTU i fragmentację, potem własną pojemność odległego punktu końcowego. 4. Wolni są tylko klienci Wi-Fi: zmień pasmo albo szerokość kanału i przyjmij, że reklamowana prędkość nigdy nie była liczbą VPN.
Gdy router naprawdę jest granicą, uczciwe opcje to urządzenie z instrukcjami AES i szybszą ścieżką przekazywania, tunel po stronie jądra, jak WireGuard, zamiast tego w przestrzeni użytkownika, albo przeniesienie klienta na samo urządzenie, aby router przestał szyfrować. Wyłączenie szyfrowania z uwierzytelnianiem, aby wygrać test porównawczy, nie jest jedną z nich; zamienia właściwość bezpieczeństwa na liczbę, która i tak nie będzie pasować do pudełka.
Zanim cokolwiek kupisz, uruchom ponownie kroki 2 i 3 na nowym urządzeniu z tym samym serwerem i czasem, a potem porównuj stosunki, a nie szczyty.