Internet a larghezza di banda ridotta tramite VPN


10

Ho appena finito di configurare un NAS VPN con il mio Raspberry Pi modello B non acquisito di recente acquisito e ho incontrato qualcosa per cui non riesco a trovare una risposta altrove.

La larghezza di banda Internet, come determinato utilizzando

wget --output-document = / dev / null http://speedtest.wdc01.softlayer.com/downloads/test500.zip

è molto più lento di quello che mi aspetterei di ottenere. Mi sto avvicinando a 1,34 MBps sul mio Pi tramite Ethernet quando mi sto avvicinando a 7 Mbps quando l'Ethernet è collegato direttamente al mio laptop.

Il problema è con OpenVPN, ma non riesco a capire cosa sia esattamente. Ecco come lo so.

Ho confrontato le velocità di download sul Pi con la VPN spenta e accesa - era 5.03 MBPS contro 1.34 MBPS.

Poi l'ho provato sul mio laptop (cablato): 6,9 MBPS (perfetto) contro 6,7 MBPS (quasi perfetto).

Quindi la colpa non risiede interamente nel mio servizio VPN (PrivateInternetAccess) che offre una riduzione del 3% della larghezza di banda sul mio laptop - ma ha a che fare con il modo in cui OpenVPN viene eseguito sul Pi che offre una riduzione del 74% della larghezza di banda.

Qualche idea sul perché OpenVPN su Raspbian sia così terribile?

AGGIORNAMENTO: La maggior parte di quella riduzione da 6,9 Mbps sul laptop senza VPN a 5,03 MBPS su Pi senza VPN sembra derivare dalla velocità di scrittura della scheda SD, che ho determinato essere di circa 4,9 Mbps. È quella enorme riduzione da 5.03 MPBS sul Pi senza VPN a 1.3MBPS con VPN che deve essere spiegata.

AGGIORNAMENTO 2: Alcuni ulteriori indizi dai suggerimenti dei commenti: 1) OpenVPN utilizza il 70% della CPU quando è in esecuzione e wget è in background 2) Sul Pi, ottengo 1,34 MBPS da un server VPN degli Stati Uniti e circa 500- 600 KBPS da TUTTI i server VPN europei, MA sul mio laptop, ottengo 6,7 Mbps dal server VPN degli Stati Uniti e 6,6 Mbps molto simili da alcuni server europei come quello olandese. Quello che sto dicendo è che la distanza dal server sembra influenzare in modo sproporzionato Pi piuttosto che il mio laptop.


Potrebbe essere una combinazione di scarsa velocità di scrittura e sovraccarico VPN. Non mi è mai piaciuto usare le VPN perché erano solo lente su Internet e il tunneling SSH era sempre il più veloce. Esistono opzioni per abilitare la compressione su OpenVPN? Forse gioca con quello, forse al volo la crittografia causa problemi. Ottima domanda. Sono anche interessato alle risposte in relazione al Pi
Piotr Kula del

Osserva il carico della CPU topdurante il test, che dovrebbe dire qualcosa sull'overhead della crittografia.
Frepa,

@Frepa Ottimo suggerimento! Quando la VPN è abilitata, OpenVPN utilizza il 70% della CPU. Pensi che questo sia ciò che sta causando l'enorme differenza nelle velocità di trasferimento?
dbrane,

@dbrane, sembra che la CPU sia il fattore limitante. Dove va il tempo CPU rimanente del 30%? Inattivo? Dall'aggiornamento 2 sembra che la latenza della rete (ovvero non solo la velocità effettiva) sia importante per le prestazioni. Forse c'è qualcosa di tremendo nella VPN.
Frepa,

@Frepa La maggior parte del tempo CPU rimanente viene utilizzato da wget stesso, che è il comando che utilizzo per testare la velocità di trasferimento. Tutto il resto dell'elenco utilizza meno dell'1% ciascuno. Sto usando un certificato CA con la VPN, se queste informazioni aiutano. Forse dovrei provare l'overclocking e vedere se questo aiuta?
dbrane,

Risposte:


4

Sui dispositivi a bassa potenza, almeno quando utilizzo SSH, ho avuto una buona esperienza nell'utilizzo del codice RC4 per migliorare le prestazioni poiché è più veloce dal punto di vista computazionale, quindi utilizza meno CPU per la larghezza di banda / consente larghezze di banda più elevate per lo stesso utilizzo della CPU. Questa guida spiega come modificare la cifra in una supportata da OpenSSL - come RC4:

http://openvpn.net/index.php/open-source/documentation/howto.html#security

Si noti che RC4 non è l'algoritmo più sicuro disponibile, ma SSL lo utilizza ancora in modo sicuro (che esiste, come descritto qui: http://en.wikipedia.org/wiki/RC4 ). Aggiornamento : questo è meno vero ora che in passato. La fiducia nella sicurezza di RC4 si sta riducendo ancora di più, poiché le tecniche per romperlo avanzano, e il 2013 ci ha dato vari progressi nel rompere RC4 e le speculazioni sulla gestione dell'NSA . Citando Wikipedia:

A partire dal 2013, si ipotizza che alcune agenzie crittografiche statali possano possedere la capacità di infrangere RC4 anche se utilizzate nel protocollo TLS. [3] Microsoft consiglia di disabilitare RC4 ove possibile. [4] [5]

Quindi, posso ancora raccomandare RC4? Non proprio in generale. Ovviamente devi compromettere la sicurezza e le prestazioni e forse non hai davvero bisogno di molta sicurezza: qualsiasi crittografia, anche RC4, rallenterà comunque gli sforzi di sorveglianza del dragnet come quelli della NSA. Ma starei molto attento ai dati realmente sensibili e cambierei l'algoritmo in qualcos'altro se possibile (ho iniziato a confrontare il mio Raspberry per cercare alternative veloci).

Aggiornamento 2 : sul mio Raspberry (overcloccato), AES non è così lento, se hai abbastanza CPU disponibile. La tabella seguente mostra che RC4 può crittografare ~ 57 MB / s, mentre AES-128-CBC può crittografare ~ 21,4 MB / s. Ovviamente, questo non spiega perché si ottengano prestazioni così scarse, ma forse si utilizza per impostazione predefinita un cifrario più lento o forse c'è qualche altra inefficienza che potrebbe essere migliorata.

$ openssl speed rc4 aes
[...]
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
rc4              45281.36k    54782.67k    57196.80k    57391.48k    57570.77k
aes-128 cbc      17904.15k    20469.38k    21133.95k    21449.62k    21403.72k

Impostazioni di overclocking da /boot/config.txt:

arm_freq=950

# for more options see http://elinux.org/RPi_config.txt
core_freq=250
sdram_freq=450
over_voltage=6

1
Qualsiasi tipo di crittografia (ssh / vpn) causerà un ulteriore utilizzo della CPU, che è probabilmente il collo di bottiglia.
earthmeLon

1
Il mio punto era che RC4 utilizza meno CPU rispetto ad altri numeri, quindi potrebbe essere buono in questa situazione. Ma non sono sicuro che tu sia d'accordo o in disaccordo con la mia risposta.
Blaisorblade,

@earthmeLon: ho aggiornato la mia risposta per affermare esplicitamente il mio punto, perché comunque non era chiaro. Non sono sicuro che affronti il ​​tuo commento.
Blaisorblade,

Assolutamente. Sono stato molto grato di sapere che RC4 è una buona soluzione con un sovraccarico minimo, grazie all'implementazione di SSH2. Grazie per l'informazione: D. Peccato che non hai visto che ti ho dato un voto, eh?
earthmeLon

In effetti - ho notato solo in seguito che il tuo commento è coinciso con il tempo con il voto. Grazie!
Blaisorblade,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.