x

Einloggen

Hast du noch keinen Account? Jetzt registrieren!

High Performance SSH/SCP – HPN-SSH

Original: http://www.psc.edu/networking/projects/hpn-ssh/


(PI) Chris Rapier PSC, Michael Stevens CMU, Benjamin Bennett PSC
email: hpn-ssh@psc.edu


FAQ

Benutzt du HPN-SSH? Lass es uns bitte wissen


5.6p1 Patch veröffentlicht. Dieses Mal waren wir in der Lage, das 5.6-Patch-Set etwas zeitiger zu veröffentlichen. Es ist wichtig, zu beachten, dass die AES CTR-eingezogenen Chiffren, die in der Küchenspüle gefunden wurden und das eingezogene Patch-Set die Gabelung noch immer nicht richtig behandeln. Wenn du AES CTR-Chiffren und -Gabelungen mit diesem Patch-Set benutzt, wird diese Applikation sich aufhängen. Wie immer würden wir dieses Problem gerne lösen, aber A) arbeitet die Person, die die eingezogene Chiffre schrieb, nicht mehr mit PSC und B) haben wir keinen zugehörigen Finanzierungsstrom für die HPN-SSH-Patches mehr. Daher werden wir vielleicht nie in der Lage sein, das Problem zu lösen, falls sich nicht jemand freiwillig dafür meldet (bitte kontaktiere uns unter hpn-ssh@psc.edu) oder wir Spenden bekommen (auch hier, bitte kontaktiere uns unter hpn-ssh@psc.edu). Auch hatten wir einen Freiwilligen, der diese Seite ins Weißrussische übersetzt hat, um dieser Community einen Dienst zu erweisen. Du kannst das Weißrussische hier finden, bereitgestellt von fatcow.


Abstract

SPC und die grundlegende SSH2-Protokoll-Implementation in Open SSH ist eine Netzwerkleistung, die limitiert wird von statisch definierten, internen Fließkontroll-Buffern. Diese Buffer enden oft damit, dass sie als Engpass für den Netzwerkdatendurchlauf von SCP agieren, besonders bei langen Netzwerklinks mit hoher Bandbreite. Wenn der SSH-Code so modifiziert wird, dass er den Buffern erlaubt, als Laufzeit definiert zu werden, eliminiert dies den Engpass. Wir haben einen Patch kreiert, der den Engpass entfernt und vollkommen kompatibel mit andern Servern und Clients ist. Zusätzlich werden HPN-Clients in der Lage sein, schneller von Nicht-HPN-Servern herunterzuladen, und HPN-Server werden schneller Uploads von Nicht-HPN-Clients erhalten. Indes muss der Host, der die Daten erhält, einen richtig getunten TCP/IP-Stack besitzen. Bitte beziehe dich auf diese Tuning-Seite für weitere Informationen.



Die Menge der Verbesserungen, die ein einzelner User sehen wird, hängt von einer Reihe von Faktoren ab. Transferraten können weder die Kapazität des Netzwerkes noch den Durchlauf des I/O-Subsystems übersteigen, inklusive der Disc und der Pufferspeichergeschwindigkeit. Die Verbesserung wird zudem stark beeinflusst von der Kapazität des Prozessors, die Chiffrierung und Dechiffrierung durchzuführen. Weniger rechenteure Chiffren werden oft besseren Datendurchlauf bieten als komplexere Chiffren.


Performance Gap


Bei vielen Verbindungen mit hoher Bandbreite besteht eine Leistungslücke zwischen dem, wozu SSH in der Lage ist und dem, was der Netzwerklink in der Lage ist, zu tun. Die Differenz zwischen diesen beiden Zahlen nennt sich die Leistungslücke, oder auch die ungenutzte Portion deiner Netzwerkverbindung. In den meisten Situationen ist diese Lücke der direkte Grund für zu kleine Receive-Buffer im SSH-Stau-Kontrollmechanismus. Die untere Grafik zeigt den optimalen Receive-Buffer gegen den effektiven SSH-Channel-Receive-Buffer für verschiedene Rundreisen auf einem 100Mbps-Pfad.


 
 
High Performance SSH/SCP – HPN-SSH

Die Differenz zwischen der roten und blauen Linie ist im Grunde verlorenes Durchlaufpotential auf dem Pfad.


Normal vs. HPN SCP Performance
 

Der Effekt daraus, die Größe des SSH-Buffers zu erhöhen, kann dem folgenden Bild entnommen werden. Der Standarddurchlauf des SSH, repräsentiert von den roten Säulen, kommt dem erwarteten Durchlauf für diesen Pfad sehr nah, wenn der Receive-Buffer auf 64KB begrenzt wurde. Indem die Größe des Receive-Buffer-Durchlaufs des SSH-Channels erhöht wurde (repräsentiert von den blauen Säulen), erhöhte sich der Effekt um gut 1000%. Die Differenz, die man nun sehen kann, beruht auf der Komplixität der Chiffren und den Grenzen des Harddrives.


High Performance SSH/SCP – HPN-SSH

Klar zu erkennen ist, dass die HPN-Patches die Durchlaufleistung signifikant erhöhen. Diese Verbesserung beruht einzig und allein auf dem Tunen der SSH-Buffergrößen.


Patches

Alle Patches sollten auf die OpenSSH-Quelldateien angewandt werden, indem die „Patch“-Utility aus der Befehlszeile verwendet wird. SSH von der Quelle aus aufzubauen, ist mit der empfohlenen Methode eigentlich recht einfach. Einige Binärpakete werden aus Annehmlichkeit bereitgestellt werden, jedoch nicht offiziell unterstützt.


Solaris-Nutzer: Eine Versionen von Solaris nutzen eine ältere Version der Patch- und Diff-Kommandos, die mit diesem Patch nicht kompatibel sind. Bitte gehe sicher, dass du eine neue Version des Gnu-Patches verwendest.


HPN-13

Dies ist die siebente Korrektur der dreizehnten Hauptversion des HPN-Patch-Sets. Das HPN12-Patch-Set bleibt hier erhältlich. Es gibt zwei grundlegende Unterschiede zwischen dem HPN12- und dem HPN13-Patch-Set… Der augenfälligste ist der Einbezug der Multi-Threaded AES CTR (MT-AES-CTR)-Modus-Chiffre. Ein Aufsatz und eine Präsentation zu dieser Arbeit sind erhältlich.


Der Chiffren-Modus führt den Multi-Einzug in die OpenSSH-Applikation ein, um ihr zu erlauben, die auf Multi-Core-Systemen erhältlichen CPU-Resspourchen voll auszunutzen. Da die autorisierte Distribution von OpenSSH nicht fähig ist, mehr als einen Core zu nutzen, können Hochleistungstransfers vom kryptographischen Overhead gestaut werden. HPN12 befasste sich mit diesem Problem mit der Einführung des `None Cipher Swichting' [Nicht-Chiffren-Wechsel]. Jedoch


 ist diese Technik den Usern vorbehalten, die willens sind, ihre Daten ohne Chiffrierung zu übertragen. Sie war durch ihre Form auch auf Massendatentransfers beschränkt, was ihren Wert für einige Nutzer einschränkte. Der MT-AES-CTR-Modus wird Nutzern auf Multiple-Core-Plattformen erlauben, Durchlaufraten zu erreichen, die vergleichbar oder gleichwertig sind mit unchiffrierten Datentransfers. Sowohl unter Versuchs- als auch unter realen Bedingungen wurden Durchläufe bei vollen GigE-Line-Raten mit voller Chiffrierung allgemein beobachtet.


High Performance SSH/SCP – HPN-SSH

Offensichtlich durchbricht die MT AES-CTR-Moduschiffre den Einzelkernstau.


 

MT-AES-CTR produziert einen Chiffrenstrom, der ununterscheidbar ist von der AES-CTR-(ST-AES-CTR)-Moduschiffre und, nach unserem Wissen, vollkommen kompatibel mit allen anderen AES-CTR-Modus-Implementationen ist. In anderen Worten ist er vollkommen rückwärtskompatibel und funktioniert problemlos in heterogenen Verbindungen. Nichtsdestotrotz ist es wichtig, anzumerken, dass MT-AES-CTR einen zusätzlichen Overhead einführt und zu Leistungseinbußen auf Einzelkernmaschinen führen könnte. Zusätzlich ersetzt die MT-AES-CTR-Moduschiffre die vorgegebene ST-AES-CTR-Moduschiffre. Beachte, dass, wenn der Clientprozess gegabelt wird, wenn er die -f-Befehlszeilenoption benutzt, sich dieser Prozess aufhängt, da der Parentthread vom Key-Generation-Thread 'getrennt' wird. Dieses Problem wird so schnell wie möglich gelöst werden. Zusätzlich beruht dies auf Posix-Threads. Daher musst du sicher sein, dass diese im Ziel-OS richtig unterstützt werden.


Der zweite Hauptunterschied liegt in der Art, in der das HPN-Patch-Set verfügbar gemacht wird. HPN13 wird sowohl als 'Spüle' als auch als 'A la carte'-Distribution bereitgestellt. Diese Spülen-Distribution wird die dynamischen Window-Patches einbeziehen, NONE-Chiffrenwechsel, MT-AES-CTR-Moduschiffren, Spitzendurchlaufanzeigen in SCP und erweiterte Serverside-Protokollierung. Die A-la-carte-Distribution wird jedes dieser Teile als Distinct-Patches verfügbar machen, welche jeweils unabhängig von den anderen benutzt werden können.


HPN-13 Kitchen Sink

Beachte: Dieser Patch wurde g-zipped. Du musst ihn gunzippen, bevor du ihn anwendest.


OpenSSH Version
HPN-SSH Patch

OpenSSH 4.7p1
OpenSSH-4.7p1-hpn13 v1

OpenSSH 5.0p1
OpenSSH-5.0p1-hpn13 v3

OpenSSH 5.1p1
OpenSSH-5.1p1-hpn13 v5

OpenSSH 5.2p1
OpenSSH-5.2p1-hpn13 v6

OpenSSH 5.3p1
OpenSSH-5.3p1-hpn13 v7

OpenSSH 5.4p1
OpenSSH-5.4p1-hpn13 v8

OpenSSH 5.5p1
OpenSSH-5.5p1-hpn13 v9

OpenSSH 5.6p1
OpenSSH-5.6p1-hpn13 v10

OpenSSH 5.8p1
OpenSSH-5.8p1-hpn13 v11



 


HPN-13 A la Carte



Dies sind die a-la-carte-Patches und einige der Versionsnummern können sich von Zeit zu Zeit verdrehen. Wenn beispielsweise der Spitzendurchlauf-Patch mehrere OpenSSH-Releases lang nicht upgedated werden muss, wird auch die Patchnummer nicht aktualisiert. Nicht alle dieser Patches sind derzeit schon verfügbar, da der NONE-Chiffren-Wechsel noch immer aus dem HPN12-Patch-Set herausgelöst werden muss.


 
Patch

Description



Source


Dynamic Windows and None Cipher (Dynamisches Window und Nicht-Chiffre)



Dies ist eine Grundlage des HPN-SSH-Patch-Sets. Es bietet dynamisches Window in SSH und die Möglichkeit, zu einer NONE-Chiffren-Authentifikation zu wechseln. Basis ist der HPN12 v20-Patch. Dieser Patch ist g-zipped.




openssh4.7-dynwindow_noneswitch.diff.gz




openssh5.0-dynwindow_noneswitch.diff.gz




openssh5.1-dynwindow_noneswitch.diff.gz




openssh5.2-dynwindow_noneswitch.diff.gz




openssh5.3-dynwindow_noneswitch.diff.gz




openssh5.4-dynwindow_noneswitch.diff.gz




openssh5.5-dynwindow_noneswitch.diff.gz




openssh5.6-dynwindow_noneswitch.diff.gz








Threaded CTR cipher mode (Threaded CTR-Chiffrenmodus)

Dieser Patch fügt Threading zum CTR-Blockmodus für AES und andere unterstützte Chiffren hinzu. Dies könnte SSH erlauben, multiple Cores/CPUs während Übertragungen zu verwenden und den Durchlauf signifikant zu erhöhen. Dieser Patch sollte zur Zeit als exeperimentell bewertet werden.




openssh4.7-CTR-threading.diff




openssh5.0-CTR-threading.diff




openssh5.1-CTR-threading.diff




openssh5.2-CTR-threading.diff




openssh5.3-CTR-threading.diff




openssh5.4-CTR-threading.diff




openssh5.5-CTR-threading.diff




openssh5.6-CTR-threading.diff








Peak Throughput (Spitzendurchlauf)

This patch modifes the progress bar to display the 1 second throughput average. On completion of the transfer it will display the peak throughput through the life of the connection.


Dieser Patch modifiziert die Fortschrittsanzeige derart, dass der 1-Sekunde-Durchlauf-Durchschnitt angezeigt wird. Bei Komplettierung des Transfers wird er den Spitzendurchlauf während der gesamten Verbindung anzeigen.




openssh4.7-peaktput.diff




openssh5.0-peaktput.diff




openssh5.1-peaktput.diff




openssh5.2-peaktput.diff




openssh5.3-peaktput.diff




openssh5.4-peaktput.diff




openssh5.5-peaktput.diff




openssh5.6-peaktput.diff








Server Logging
(Server-Protokollierung)

Dieser Patch fügt zusätzliche Protokollierung zum SSHD-Server hinzu, inklusive benutzter Chiffrierung, lokaler Adresse und Port, Username, lokalen Versionsinformationen, insgesamt transferierter Bytes, und Durchschnittsdurchlauf. Um diesen Patch zu nutzen, musst du direkten Syslog haben, um ein zusätzliches Protokollierungsbuchse [socket] zu nutzen. Diese Buchse [socket] wird sich im SSHD Chroot befinden, typischerweise /var/empty. Daher wirst du ein /var/empty/dev-Verzeichnis erstellen müssen und '-a /var/empty/dev/log' zu deiner Syslogd-Konfiguration hinzufügen müssen. Ein Beispiel -Output kann hier angesehen werden. Für Open SSH 4.7pl.




openssh4.7-server-logging.diff




openssh5.0-server-logging.diff




openssh5.1-server-logging.diff




openssh5.2-server-logging.diff




openssh5.3-server-logging.diff




openssh5.4-server-logging.diff




openssh5.5-server-logging.diff




openssh5.6-server-logging.diff










 


Wie diese Patches hinzugefügt werden:
1. Nehme den OpenSSH-Quellcode von OpenSSH.org.
2. Entpacke die OpenSSH-Quelle.C
3. CD ins OpenSSH-Quellverzeichnis

4. Wenn es g-zipped ist, schreibe 'zcat pathtopatch/patchfile | patch'


Ansonsten 'patch < pathtopatch/patchfile'
5. Schreibe 'configure && make'
6. Schreibe 'make install'
 

 

Derzeitige Probleme mit buffer_append_space in HPN-SSH. Wenn du Probleme mit Disconnects hast, beruhend auf einem Fehler in buffer_append_space, lass es uns bitte wissen. Wir spüren derzeit einige solcher Probleme auf und wir versuchen, Informationen zu sammeln, um das Problem zu lösen.

SCP, ssh
6230 Mal gelesen
+4
8. Apr 2011, 14:19

Kommentare

(1)
RSS
avatar
0
v x
Yanestra 9. Apr 2011, 20:52

Bizarr. Die Übersetzung ist absolut indiskutabel — und 5.6p1 ist Monate alt — aktuell ist 5.8p1.


Kommentieren

Fett Kursiv Unterstrichen Durchgestrichen   Link Zitieren Code
Ich bin mit den Nutzungsbedingungen einverstanden.
Zukünftige Kommentare zu diesem Beitrag abonnieren (abbestellbar).
 
Bitte klicke jetzt auf den Bestätigungslink in deiner E-Mail.