Raspberry Pi 3 Cluster für VPN Verarbeitung nutzen?

4 Antworten

Dein Ansatz ist erstmal verstaendlich, aber aus folgendem Grund weniger sinnig:

Selbst wenn du einen Cluster baust, der einzelne Tunnel bereitstellt und du damit in Summe ueber X Connections (ueber eine einzige geht das nicht) deine 100 Mbits erreichst, brauchst du vorne dran ein Geraet was sauberes Downlink Balancing macht. Da solche Geraet in der Regel selbst Gateways mit VPN Funktionalitaet sind, die in der Regel sehr viel potenter als ein Raspi sind, kann man VPN auch direkt dort beteiben und braucht den "Cluster" nicht mehr.

Wie sieht denn Deine Anwendung aus?

Wenn Dein Raspberry Pi (ich hoffe mal in der Version 3B) an einer 100 Mbit/s Leitung (100 Mbit/s symmetrisch) hängt, einfach einen OpenVPN-Server installieren, dann solltest Du "von außen" ca. 100 Mbit/s pro Richtung (z. B. bei einem Download - hingegen maximal 50 Mbit/s bei bidirektionaler Kommunikation, denn alles, was "verschlüsselt" rein geht, muss ja "entschlüsselt" wieder raus und umgekehrt) erzielen. Dafür sollte es keinen "Cluster" brauchen.

Für Clusterung dürfte dieses Problem auch nicht geeignet sein, da es sehr vermutlich nicht "computationally bound" (durch die CPU begrenzt) ist, sondern eher durch die Speicherbandbreite und/oder andere I/O (z. B. Netzwerk). Zudem ist das Problem "tightly coupled", da bei der Ver-/Entschlüsselung häufig die vorherigen Daten benötigt werden. Selbst wenn etwas, wie eine Blockchiffre im Counter-Mode verwendet wird, was prinzipiell parallelisierbar ist, müsste jedes Paket ja zunächst "aufgeteilt" und später wieder "zusammengesetzt" werden. Selbst wenn es technisch möglich wäre, würde es keinen Sinn ergeben, weil Du letztlich viel mehr kommunizierst, als Du rechnest und die Effizienz durch verteilte Verarbeitung daher sinken wird.

Cluster können sinnvoll sein, um Probleme zu lösen, die "einfach" (mit wenig Rechenleistung) aufgeteilt und wieder "zusammengesetzt" werden können und bei denen auf relativ kleinen Datensätzen (damit sie schnell übertragen werden können) relativ viel gerechnet werden muss. Das trifft auf die wenigsten Probleme zu und auf kryptographische schon überhaupt nicht. Moderne Kryptosysteme sind hocheffizient. Ein moderner Prozessor kann mit einer Blockchiffre wie AES üblicherweise mehrere Gigabyte pro Sekunde chiffrieren/dechiffrieren. Auch wenn im Raspberry Pi "nur" ein ARM sitzt, sollte es für 100 Mbit/s leicht reichen, immerhin handelt es sich um einen ARM Cortex 53 (ARMv8 / AArch64) mit vier Kernen und 1.2 GHz Taktfrequenz.


NoHumanBeing  07.02.2018, 16:21
ARM Cortex 53

Hier wurde ein Buchstabe verschluckt, es handelt sich um einen ARM Cortex A53.

(Das A steht für "application processor".)

0
barnim  08.02.2018, 06:14
Wenn Dein  Raspberry Pi (ich hoffe mal in der Version  3B) an einer 100 Mbit/s Leitung (100 Mbit/s  symmetrisch) hängt, einfach einen OpenVPN-Server installieren, dann solltest Du "von außen" ca. 100 Mbit/s pro Richtung (z. B. bei einem Download - hingegen maximal 50 Mbit/s bei bidirektionaler Kommunikation, denn alles, was "verschlüsselt" rein geht, muss ja "entschlüsselt" wieder raus und umgekehrt) erzielen
Auch wenn im  Raspberry Pi "nur" ein  ARM sitzt, sollte es für 100 Mbit/s leicht reichen,

Ein Raspi (auch der 3B nicht) ist definitiv nicht in der Lage auch nur annaehernd 100 Mbits Crypto Performance zu stemmen, auch nicht 50 Mbits.

Mit 30 Mbits +/- kann man rechnen.

1

Kann NoHumanBeing zustimmen und als kleine Ergänzung:

PiVPN

Schau dir das mal an, damit kannst du ganz einfach, schnell und vernünftig mit OpenVPN dein Vorhaben umsetzen. Einfach auf die Webseite von PiVPN, dort solltest du alle Informationen finden, ansonsten steht sehr viel über OpenVPN mit PiVPN im Internet, einfach mal googeln.

Hoffe das hilft dir weiter.

MFG

HouseDoktor


NoHumanBeing  07.02.2018, 16:18

Als ich den Befehl curl -L [URL] | bash (also quasi "lade Code von einem Webserver und führe ihn aus") sah, bin ich schon ziemlich zusammengezuckt, aber der Code scheint zumindest im Quelltext verfügbar zu sein.

https://github.com/pivpn/pivpn

Ob die URL tatsächlich Code zurückliefert, der auf diesen Quellen basiert, ist natürlich die andere Frage. Aber wenn zumindest ein Open-Source-Projekt dahintersteht, wird es vermutlich okay sein.

Grundsätzlich sollte man sich so etwas aber besser nicht "angewöhnen", gerade wenn man vorhat, eine VPN-Lösung aufzusetzen, die ja eigentlich der Sicherheit dienen soll. ;-)

1

Das mit einem Cluster zu lösen scheint mir eher unsinnvoll. Hier hilft es ein entsprechendes Board mit entsprechenden CPU zu kaufen.

Ich habe hier ein Gigabyte GA-N3150-D3V mit 4GB RAM. Bevor du genug Pis für ein Cluster hast, welches die Leistung erbringen könnte zahlt es sich eher aus auf ein Stück leistungsfähige Hardware zu setzen. Dazu kommt noch die Kompatibilität bei Cluster-Systemen, gerade Netzwerk-Anwendungen mögen das eher weniger.

https://www.hackviking.com/single-board-computers/openvpn-performance-on-the-pi/