Kodėl maršrutizatoriaus Wi-Fi reitingas nenuspėja VPN pralaidumo
Skelbiamas Wi-Fi greitis ir išmatuotas VPN greitis apibūdina skirtingus sluoksnius. Atlikite šią tvarkingą patikrą prieš pirkdami greitesnį maršrutizatorių.
Maršrutizatorius su 3,000 Mbps Wi-Fi ženkleliu vis tiek gali perkelti šifruotą srautą tik maža to skaičiaus dalimi, ir nė vienas iš šių skaičių nėra nesąžiningas. Radijo reitingas apibūdina geriausią įmanomą belaidės jungties moduliavimą, kurį palaiko lustų rinkinys; VPN skaičius apibūdina, kaip greitai vienas įrenginys gali stumti šifruotus paketus per maršrutizatoriaus procesorių ir už jūsų prieigos linijos ribų. Tai skirtingi sluoksniai, skirtingi paketų dydžiai ir skirtingi matavimo metodai. Skaičių ant dėžutės laikykite lubomis, kurių niekas nepasiekia, o ne savo tunelio greičio prognoze.
1 žingsnis: sudarykite keturių sluoksnių, ribojančių skaičių, žemėlapį
Beveik kiekvienas skundas dėl lėto maršrutizatoriaus, su kuriuo dirbau, patenka į vieną iš keturių lygių: belaidė jungtis, WAN prieigos greitis, persiuntimo kelias (NAT, ugniasienė, ryšių sekimas) arba VPN šifravimo kelias. Jie susikaupia, ir lėčiausias lygis nustato rezultatą. Skelbiamas Wi-Fi greitis kalba tik apie pirmą lygį, ir kalba apie jį dosniai.
Šis skaičius gaunamas srautus padauginus iš kanalo pločio ir didžiausios moduliacijos, dėl kurios lustų rinkinys gali susitarti. 5 GHz 2x2 radijas, 80 MHz ir 1024-QAM, skelbiamas apie 1,200 Mbps, tačiau Wi-Fi yra bendra pusiau dvipusė terpė: klientai keičiasi, pakartotiniai siuntimai ir valdymo srautas degina eterio laiką, o TCP prideda savo sąnaudas. Klientas, idealomis sąlygomis suderėjęs didžiausią greitį, paprastai išmatuoja gerokai mažiau nei pusę, o atsiradus kaimyniniams tinklams – dar mažiau.
| 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 |
Jei lentelė nurodo radiją, pirmiausia sutvarkykite belaidę pusę: juostą, kanalo plotį, atstumą. Jei ji nurodo žemiau radijo, svarbūs kiti keturi žingsniai, ir jokia antenų pirkimas to nepakeis.
2 žingsnis: paimkite laidinę bazinę liniją, prieš liesdami radiją
Prijunkite nešiojamąjį kompiuterį prie Ethernet ir pirmiausia išmatuokite kelią be tunelio, nes tai duos vardiklį. Paleiskite pralaidumo įrankį kitoje pusėje, VPN užbaigiančiame VPS ar namų serveryje, ir nukreipkite klientą į jo viešąjį adresą, kad srautas eitų per jūsų maršrutizatorių ir prieigos liniją.
# 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
Du skaičiai iš to bloko atsako į skirtingus klausimus. Vienas srautas rodo lubas vienai jungčiai, įskaitant TCP lango elgseną ir bet kokį srauto formavimą kelyje. Keturi srautai rodo, ar jungtis turi nepanaudotų pajėgumų, nes lygiagretūs srautai gali pripildyti vamzdį, kurio vienas srautas nepritildo.
Laikykite tai sąžininga: tas pats kompiuteris, paros laikas ir trukmė, ir namie niekas kitas nestreamina. Trisdešimties sekundžių masinis perdavimas čia yra tinkamas vienetas, o RFC 6349, TCP pralaidumo testavimo sistema, remiasi būtent šiuo samprotavimu, nes trumpi pliūpsniai ir maži prašymai jungčiai meilikauja. Užrašykite bazinę liniją, prieš ką nors keisdami.
3 žingsnis: paleiskite tą patį testą per tunelį
Dabar pakartokite jį į galinio taško tunelio adresą, su tuo pačiu klientu, trukme ir srautų skaičiumi, tuneliui veikiant ir be kito srauto. Dviejų rezultatų santykis pasako, kiek šifravimas ir inkapsuliavimas kainuoja toje aparatinėje įrangoje; absoliutus skaičius pasako, ar to pakanka darbui.
Stebėkite skaitiklius, kol vyksta perdavimas. WireGuard atveju wg show praneša perduotus baitus vienam partneriui; OpenVPN atveju intervalais rašomas būsenos failas duoda tą patį vaizdą.
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
Jei tunelio skaičius artimas laidinei bazinei linijai, VPN nėra jūsų kliūtis ir galite nustoti jį kaltinti. Jei tai tik bazinės linijos dalis, nuostoliai įvyko maršrutizatoriaus šifravimo ir persiuntimo kelyje, o kitas žingsnis pasakys, kurioje dalyje.
Vienas įspėjimas: kai pasikeičia išėjimo IP, kai kurios greičio testų paslaugos tyliai pasirenka kitą matavimo serverį, todėl galiausiai lyginate du skirtingus taikinius. Serverio adresą užfiksuokite patys.
4 žingsnis: skaitykite procesorių kaip kelią, o ne kaip vidurkį
Maršrutizatorius, rodantis 30 procentų bendro procesoriaus, vis tiek gali būti prisotintas: vieno tunelio darbas dažniausiai atsiduria viename branduolyje, vienoje pertraukimų eilėje arba viename branduolio sraute, todėl vidurkis slepia lubas. Žiūrėkite skaičius pagal branduolius ir softirq, o ne prietaiso skydelio rodyklę.
mpstat -P ALL 1
top -H -p $(pgrep -f 'openvpn')
grep -o -m1 aes /proc/cpuinfo
Tame išvedime svarbūs trys dalykai. Vienas branduolys, prisegtas prie 100 procentų, kol kiti tušti, rodo vienos jungties ribą. Didelis %soft arba užimtas ksoftirqd viename procesoriuje rodo priėmimo pusės paketų apdorojimą, kuris nesiskirsto po eiles. O trūkstama aes vėliavėlė reiškia, kad procesorius neturi AES instrukcijų, todėl simetrinis šifravimas veikia programinėje įrangoje ir kainuoja daug brangiau už paketą.
Įgyvendinimas taip pat svarbus. Tradicinė OpenVPN instancija vartotojo erdvėje vieno tunelio paketus daugiausia apdoroja vienoje vietoje, todėl greita daugiabranduolė dėžutė tam tuneliui gali elgtis kaip vienabranduolė. WireGuard branduolyje paskirsto darbą procesoriams, o OpenVPN duomenų kanalo iškėlimas taip pat perkelia paketų apdorojimą į branduolį, bet tik tuose rinkiniuose ir platformose, kurios tai palaiko. Tvirtinimas apie aparatinį pagreitį rinkodaros puslapyje nėra įrodymas, kad jį naudoja jūsų vykdomas kodo kelias.
5 žingsnis: nuspręskite, ką keisti, būtent ta tvarka
Eikite sąrašu žemyn ir sustokite ties pirmąja teisinga eilute, nes pakeitus ką nors žemiau skaičius nepajudės.
1. Laidinė tiesioginė pralaidumas mažesnis už tai, už ką mokate: pasikalbėkite su tiekėju, nes tunelis negali sukurti pajėgumo, kurio prieigos linija neduoda. 2. Laidinis tiesioginis veikia gerai, bet tunelio testo metu vienas branduolys prisegamas: maršrutizatoriaus šifravimo kelias yra riba. 3. Procesorius tuščias, bet tunelis lėtas: patikrinkite MTU ir fragmentaciją, tada paties nuotolinio galinio taško pajėgumą. 4. Lėti tik Wi-Fi klientai: pakeiskite juostą arba kanalo plotį ir pripažinkite, kad skelbiamas greitis niekada nebuvo VPN skaičius.
Kai maršrutizatorius tikrai yra riba, sąžiningos galimybės yra įrenginys su AES instrukcijomis ir greitesniu persiuntimo keliu, branduolio pusės tunelis, pavyzdžiui, WireGuard, vietoj vartotojo erdvės tunelio, arba kliento perkėlimas į patį įrenginį, kad maršrutizatorius nustotų šifruoti. Autentifikuoto šifravimo išjungimas norint laimėti etaloninį testą nėra viena iš jų; tai iškeičia saugumo savybę į skaičių, kuris vis tiek nesutaps su dėžute.
Prieš ką nors pirkdami, iš naujo paleiskite 2 ir 3 žingsnius naujame įrenginyje su tuo pačiu serveriu ir trukme, o tada lyginkite santykius, o ne piką.