Зошто Wi-Fi оценката на вашиот рутер не ја предвидува пропусната моќ на VPN
Рекламираната Wi-Fi брзина и измерената VPN брзина опишуваат различни слоеви. Поминете ја оваа уредена проверка пред да купите побрз рутер.
Рутер со Wi-Fi ознака од 3,000 Mbps сѐ уште може да пренесува шифриран сообраќај со дел од таа бројка, и ниту една од двете бројки не е нечесна. Радио оценката ја опишува најдобрата можна модулација на безжичната врска што ја поддржува чипсетот; бројката за VPN опишува колку брзо еден уред може да турка шифрирани пакети низ процесорот на рутерот и надвор од вашата пристапна линија. Тоа се различни слоеви, различни големини на пакети и различни методи на мерење. Третирајте ја бројката на кутијата како таван што никој не го достигнува, а не како прогноза за брзината на вашиот тунел.
Чекор 1: Мапирајте ги четирите слоја што ја ограничуваат бројката
Речиси секоја жалба за бавен рутер со која сум работел паѓа во едно од четири нивоа: безжичната врска, брзината на WAN пристапот, патот на препраќање (NAT, огнен ѕид, следење на врски) или крипто патот на VPN. Тие се натрупуваат, а најбавното ниво го одредува резултатот. Рекламираната Wi-Fi брзина зборува само за првото ниво и зборува за него дарежливо.
Таа бројка доаѓа од бројот на текови помножен со ширината на каналот и со највисоката модулација што чипсетот може да ја договори. Радио 2x2 на 5 GHz при 80 MHz со 1024-QAM се рекламира близу 1,200 Mbps, но Wi-Fi е споделена полудуплексна средина: клиентите се менуваат, повторните испраќања и управниот сообраќај трошат воздушно време, а TCP ги додава своите трошоци. Клиент што ја договорил највисоката брзина во идеални услови обично мери значително под половината од неа, а уште помалку кога ќе се појават соседни мрежи.
| 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 |
Ако табелата покажува на радио, прво поправете ја безжичната страна: појас, ширина на каналот, растојание. Ако покажува под радиото, важни се следните четири чекори, и никакво купување антени тоа нема да го промени.
Чекор 2: Земете жичена основна линија пред да го допрете радиото
Ставете го преносникот на Ethernet и прво измерете го патот без тунелот, зашто тоа ви дава именител. Стартувајте го алатот за пропусна моќ на спротивната страна, на VPS-от или домашниот сервер што го завршува VPN-от, и насочете го клиентот кон неговата јавна адреса за сообраќајот да помине низ вашиот рутер и пристапната линија.
# 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
Две бројки од тој блок одговараат на различни прашања. Еден тек го покажува таванот за една врска, што вклучува однесување на TCP прозорецот и какво било обликување по тек на патот. Четири текови покажуваат дали врската има капацитет што не го користите, зашто паралелните текови можат да наполнат цевка што еден тек не ја полни.
Држете го чесно: истиот домаќин, дел од денот и времетраење, без ништо друго да стримува во домот. Преносот од триесет секунди е вистинската единица овде, а RFC 6349, рамката за тестирање на TCP пропусна моќ, е изградена токму на тоа размислување, зашто кратките изблици и малите барања ласкаат на врската. Запишете ја основната линија пред да промените нешто.
Чекор 3: Пуштете го истиот тест низ тунелот
Сега повторете го кон адресата на тунелот на крајната точка, со истиот клиент, времетраење и број текови, со подигнат тунел и без друг сообраќај. Односот меѓу двата резултата ви кажува колку чинат шифрирањето и инкапсулацијата на тој хардвер; апсолутната бројка ви кажува дали е доволна за работата.
Гледајте ги бројачите додека трае преносот. На WireGuard wg show пријавува пренесени бајти по партнер; на OpenVPN датотеката со состојба што се пишува на интервал ви го дава истиот поглед.
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
Ако бројката на тунелот е близу жичената основна линија, VPN-от не е вашето тесно грло и можете да престанете да го обвинувате. Ако е дел од основната линија, загубата се случила внатре во крипто и препраќачкиот пат на рутерот, а следниот чекор ви кажува кој дел.
Едно предупредување: штом излезната IP се смени, некои услуги за тест на брзина тивко избираат друг мерен сервер, па на крајот споредувате две различни одредишта. Самите закачете ја адресата на серверот.
Чекор 4: Читајте го процесорот како пат, а не како просек
Рутер што покажува 30 проценти вкупно оптоварување на процесорот сѐ уште може да биде заситен: работата на еден тунел обично паѓа на едно јадро, еден ред за прекини или една нишка на јадрото, па просекот го крие таванот. Гледајте бројки по јадро и softirq наместо мерачот на панелот.
mpstat -P ALL 1
top -H -p $(pgrep -f 'openvpn')
grep -o -m1 aes /proc/cpuinfo
Три работи се важни во тој излез. Едно јадро закачено близу 100 проценти додека другите мируваат покажува ограничување по врска. Висок %soft или зафатен ksoftirqd на еден процесор покажува обработка на пакети на приемната страна што не се распоредува по редовите. А знамето aes што недостасува значи дека процесорот нема AES инструкции, па симетричното шифрирање работи во софтвер и чини многу повеќе по пакет.
И имплементацијата е важна. Традиционална OpenVPN инстанца во кориснички простор ги обработува пакетите на еден тунел претежно на едно место, па брза повеќејадрена кутија за тој тунел може да се однесува како еднојадрена. WireGuard во јадрото ја распоредува работата по процесорите, а растоварувањето на податочниот канал на OpenVPN исто така ја преместува обработката на пакети во јадрото, но само во градби и на платформи што го поддржуваат. Тврдењето за хардверско забрзување на маркетинг страницата не е доказ дека кодниот пат што го извршувате го користи.
Чекор 5: Одлучете што да смените, точно во тој редослед
Поминете ја листата надолу и застанете на првиот вистински ред, зашто менување на нешто под него нема да ја помести бројката.
1. Жичената директна пропусна моќ е под она што го плаќате: разговарајте со давателот, зашто тунелот не може да создаде капацитет што пристапната линија не го дава. 2. Жичено директно е во ред, но едно јадро се закачува за време на тестот на тунелот: крипто патот на рутерот е границата. 3. Процесорот мирува, но тунелот е бавен: проверете MTU и фрагментација, потоа сопствениот капацитет на далечната крајна точка. 4. Бавни се само Wi-Fi клиентите: сменете појас или ширина на канал и прифатете дека рекламираната брзина никогаш не била бројка за VPN.
Кога рутерот навистина е границата, чесните опции се уред со AES инструкции и побрз пат на препраќање, тунел на страната на јадрото како WireGuard наместо оној во кориснички простор, или преместување на клиентот на самиот уред за рутерот да престане да шифрира. Исклучувањето на автентицирано шифрирање за да победите на споредбен тест не е една од нив; тоа ја заменува безбедносната особина за бројка што сепак нема да се совпадне со кутијата.
Пред да купите нешто, повторно пуштете ги чекорите 2 и 3 на новиот уред со истиот сервер и времетраење, па споредете односи, а не врвови.