Чаму рэйтынг 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 на новай прыладзе з тым жа серверам і працягласцю, а затым параўноўвайце суадносіны, а не пікі.