Kial la Wi-Fi takso de via enkursigilo ne antaŭdiras la VPN-fluon
Reklamita Wi-Fi-rapideco kaj mezurita VPN-rapideco priskribas malsamajn tavolojn. Trapasu ĉi tiun ordigitan kontrolon antaŭ ol aĉeti pli rapidan enkursigilon.
Enkursigilo kun Wi-Fi-etikedo de 3,000 Mbps ankoraŭ povas movi ĉifritan trafikon per frakcio de tiu nombro, kaj neniu el la du nombroj estas malhonesta. La radio-takso priskribas plejbonan moduladon de la sendrata ligo, kiun la ĉipso subtenas; la VPN-nombro priskribas kiom rapide unu aparato povas puŝi ĉifritajn pakaĵojn tra la procesoro de la enkursigilo kaj ekster vian alirŝaltilon. Tiuj estas malsamaj tavoloj, malsamaj pakaĵgrandoj kaj malsamaj mezurmetodoj. Traktu la nombron sur la skatolo kiel plafonon, kiun neniu atingas, ne kiel prognozon de la rapideco de via tunelo.
Paŝo 1: Mapu la kvar tavolojn, kiuj limigas la nombron
Preskaŭ ĉiu plendo pri malrapida enkursigilo, kiun mi prilaboris, falas en unu el kvar niveloj: la sendrata ligo, la WAN-alirrapideco, la plusenda vojo (NAT, fajroŝirmilo, spurigo de konektoj) aŭ la VPN-ĉifra vojo. Ili stakiĝas, kaj la plej malrapida nivelo difinas la rezulton. Reklamita Wi-Fi-rapideco parolas nur pri la unua nivelo, kaj ĝi parolas malavare pri ĝi.
Tiu nombro venas de fluoj oble kanal-larĝo oble la plej alta modulado, kiun la ĉipso povas intertrakti. 2x2-radio ĉe 5 GHz je 80 MHz kun 1024-QAM estas reklamata apud 1,200 Mbps, sed Wi-Fi estas komuna, duondupleksa medio: klientoj alterniĝas, ripetoj kaj administra trafiko bruligas aeran tempon, kaj TCP aldonas sian propran superkoston. Kliento, kiu intertraktas la pintan rapidecon en idealaj kondiĉoj, kutime mezuras multe sub la duono de ĝi, kaj malpli kiam najbaraj retoj aperas.
| 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 |
Se la tabelo montras al la radio, unue ripari la sendratan flankon: bendo, kanal-larĝo, distanco. Se ĝi montras sub la radio, la venontaj kvar paŝoj gravas, kaj neniu kvanto da antena aĉetado tion ŝanĝos.
Paŝo 2: Prenu kablan bazlinion antaŭ ol tuŝi la radion
Metu la tekkomputilon sur Ethernet kaj unue mezuru la vojon sen la tunelo, ĉar tio donas al vi denominatoron. Rulu la trafluilon ĉe la malproksima flanko, sur la VPS aŭ hejma servilo, kiu finas la VPN, kaj direktu la klienton al ĝia publika adreso, por ke la trafiko trapasu vian enkursigilon kaj alirŝaltilon.
# 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 nombroj el tiu bloko respondas malsamajn demandojn. Unu fluo montras la plafonon por konekto, kiu inkluzivas la konduton de la TCP-fenestro kaj ajnan formadon por fluo sur la vojo. Kvar fluoj montras, ĉu la ligo havas kapaciton, kiun vi ne uzas, ĉar paralelaj fluoj povas plenigi tubon, kiun unu fluo ne plenigas.
Tenu ĝin honesta: sama gastiganto, tago-tempo kaj daŭro, sen io alia elsendanta en la domo. Transigo de tridek sekundoj estas la ĝusta unuo ĉi tie, kaj RFC 6349, la kadro por testado de TCP-trafluo, baziĝas ĝuste sur tiu rezonado, ĉar mallongaj ekbruloj kaj malgrandaj petoj flatas ligon. Notu la bazlinion antaŭ ol ŝanĝi ion ajn.
Paŝo 3: Rulu la saman teston tra la tunelo
Nun ripetu ĝin kontraŭ la tunela adreso de la finpunkto, kun la sama kliento, daŭro kaj nombro da fluoj, kun la tunelo aktiva kaj sen alia trafiko. La proporcio inter la du rezultoj diras al vi, kion ĉifrado kaj enkapsuligo kostas sur tiu aparataro; la absoluta nombro diras, ĉu ĝi sufiĉas por la tasko.
Observu la nombrilojn dum la transigo funkcias. Ĉe WireGuard, wg show raportas transigitajn bitokojn por kunulo; ĉe OpenVPN, statusa dosiero skribata laŭ intervaloj donas al vi la saman bildon.
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
Se la tunela nombro estas proksima al la kabla bazlinio, la VPN ne estas via botelcolo kaj vi povas ĉesi kulpigi ĝin. Se ĝi estas frakcio de la bazlinio, la perdo okazis ene de la ĉifra kaj plusenda vojo de la enkursigilo, kaj la venonta paŝo diras al vi kiun parton.
Unu averto: kiam la elira IP ŝanĝiĝas, iuj rapidec-testaj servoj kviete elektas alian mezuran servilon, do vi finas komparante du celojn. Fiksu la servilan adreson mem.
Paŝo 4: Legu la procesoron kiel vojon, ne kiel averaĝon
Enkursigilo montranta 30 procentojn da totala procesoro ankoraŭ povas esti saturita: la laboro de unu tunelo emas surteriĝi sur unu kernon, unu interrompan vicon aŭ unu kernan fadenon, do la averaĝo kaŝas la plafonon. Rigardu nombrojn por kerno kaj softirq anstataŭ la mezurilon de la panelo.
mpstat -P ALL 1
top -H -p $(pgrep -f 'openvpn')
grep -o -m1 aes /proc/cpuinfo
Tri aferoj gravas en tiu eligo. Unu kerno fiksita apud 100 procentoj dum la aliaj malaktivas montras limon por konekto. Peza %soft aŭ okupata ksoftirqd sur unu procesoro montras pakaĵprilaboradon ĉe la riceva flanko, kiu ne disvastiĝas tra la vicoj. Kaj mankanta aes-flago signifas, ke la procesoro ne havas AES-instrukciojn, do simetria ĉifrado ruliĝas en programaro kaj kostas multe pli por pakaĵo.
La efektivigo ankaŭ gravas. Tradicia OpenVPN-kazo en uzantspaco prilaboras la pakaĵojn de unu tunelo grandparte en unu loko, do rapida plurkerna skatolo povas konduti kiel unukerna por tiu tunelo. WireGuard en la kerno disvastigas laboron tra procesoroj, kaj la datumkanala malŝarĝo de OpenVPN ankaŭ movas pakaĵprilaboradon en la kernon, sed nur en konstruoj kaj platformoj, kiuj subtenas ĝin. Aserto pri aparatara akcelo sur la merkatika paĝo ne estas pruvo, ke la kodvojo, kiun vi rulas, uzas ĝin.
Paŝo 5: Decidu, kion ŝanĝi, en tiu ordo
Laboru malsupren laŭ ĉi tiu listo kaj haltu ĉe la unua vera linio, ĉar ŝanĝi ion sub ĝi ne movos la nombron.
1. Kabla rekta trafluo estas sub tio, kion vi pagas: parolu kun la provizanto, ĉar la tunelo ne povas krei kapaciton, kiun la alirŝaltilo ne liveras. 2. Kabla rekta estas en ordo, sed unu kerno fiksiĝas dum la tunela testo: la ĉifra vojo de la enkursigilo estas la limo. 3. La procesoro malaktivas, sed la tunelo malrapidas: kontrolu MTU kaj fragmentadon, poste la propran kapaciton de la malproksima finpunkto. 4. Nur Wi-Fi-klientoj malrapidas: ŝanĝu bendon aŭ kanal-larĝon, kaj akceptu, ke la reklamita rapideco neniam estis VPN-nombro.
Kiam la enkursigilo vere estas la limo, la honestaj opcioj estas aparato kun AES-instrukcioj kaj pli rapida plusenda vojo, tunelo ĉe la kerna flanko kiel WireGuard anstataŭ unu en uzantspaco, aŭ movi la klienton sur la aparaton mem, por ke la enkursigilo ĉesu ĉifri. Malŝalti aŭtentikigitan ĉifradon por gajni referencan teston ne estas unu el ili; ĝi interŝanĝas sekurecan econ kontraŭ nombro, kiu ankoraŭ ne kongruos kun la skatolo.
Antaŭ ol aĉeti ion ajn, rerulu paŝojn 2 kaj 3 sur la nova aparato kun la sama servilo kaj daŭro, poste komparu proporciojn anstataŭ pintojn.