PCとサーバーの間にギガビット接続があり(iperf3テストでは約930Mbpsが示されています)、大きなファイルをできるだけ速く転送できるようにしたいと考えています。サーバーのハードドライブはUSB3経由で接続されており、Rock64です。 sshを使用する場合(私はsshでbtrbkを使用しています)、CPU使用率が高く、温度が高い(〜60C)ため、ボトルネックはおそらくsshだと思います。デフォルトでは無効になっていると思いますが、圧縮を無効にしました(〜/ .ssh/configに入れてください)。最大350Mbpsの速度しか得られませんでしたが、それは大きく変動しました。Rock64がそれほど多くのデータを含む暗号を処理できるとは思いません。そしてしばらくすると、私にはわからない何らかの理由でクロール(1Mbps未満)に減速しました。転送の再開は機能しました。 (質問に関連しない場合があります)。
少なくとも約480Mbpsを実行できる暗号が必要です。ただし、現実的なUSB3の速度により、おそらくその数を少し減らすことができます。 PC>ルーター>サーバーからのイーサネット接続だけなので、セキュリティについてはそれほど心配していませんが、暗号化がない/弱いとにかくやり過ぎでしょう。したがって、できれば、上記の速度を実行できる最も安全な暗号です。
すべての暗号は480Mbpsをサポートできますが、多くのCPUはその暗号を十分に高速に実行できません。したがって、探しているのは、CPUの十分に高速な実装です。
実行の連鎖は
read from disk -> encrypt -> send over network -> decrypt -> write to disk
したがって、最初に確認する必要があるのは、実際に暗号化が邪魔になることです。
Sshではなくnc
で開始します
nc -l -p 9999 > /path/to/destination/file # on the receiving side
nc -N [ip.of.receiver.pc] 9999 < /path/of/original/file # on the sending side
これにより、暗号化/復号化がチェーンから外され、実際に可能な速度がわかります。
次に、送信側が一部の暗号に対してハードウェアアクセラレーションによる暗号化を使用しているかどうかを確認します。ほとんどの場合、そうではありませんが、試してみる価値はあります。
arcfour
暗号を試してみると希望が持てるかもしれません
興味深い暗号速度を見つけました ブログ 。それはあなたにネットワークなしで暗号速度を測定する方法のアイデアを与えます。
for i in `ssh -Q cipher`; do dd if=/dev/zero bs=1M count=100 2> /dev/null \
| ssh -c $i someuser@localhost "(time -p cat) > /dev/null" 2>&1 \
| grep real | awk '{print "'$i': "100 / $2" MB/s" }'; done
したがって、特定のハードウェアで暗号のパフォーマンスを実際に測定できます。