!圧縮の方法 コマンド ユーザごとの設定ファイル ~/.ssh/config システム全体にわたる (system-wide) 設定ファイル /etc/ssh/ssh_config teraterm なら TERATERM.INI puttyなら putty.ini !圧縮率 http://www.unixuser.org/~haruyama/security/openssh/support/addendum.html#add_6 6. 圧縮および圧縮レベルの設定の目安 OpenSSH では、遅いネットワーク環境でのデータ転送速度を上げるためにデータを圧縮しながら転送することができます。本書 156ページには「圧縮を行うかどうかの目安は 4-?. 節を参照してください」と書かれていますが、実際には本書に目安は書かれていませんでした。 以下は著者の環境において、さまざまな回線速度および圧縮レベルで scp を利用したときのデータ転送速度を測定したものです (scp はデータの転送に ssh を使っているため、結果的には ssh の速度を測定していることになります)。「無圧縮」と書かれているのは圧縮を使用しなかった場合の転送速度で、「レベル1」「レベル6」「レベル9」と書かれているのは、ssh コマンドの CompressionLevel 設定項目の値としてそれぞれ 1、6 (デフォルト)、9 を与えた場合の見かけの転送速度です (ここでいう「見かけの転送速度」とは、TCP の転送にかかる時間に加えて SSH の暗号化や復号化、および圧縮と展開にかかる時間も含めた転送速度をさします。なお SSH のセッション開始にかかる時間は除いてあります) 圧縮による見かけのデータ転送速度 (3DES使用時、単位 KBytes/s、 赤字は最高速度) ,TCP転送速度 ,ファイル群 1 (圧縮率・高) , , , ,ファイル群 2 (圧縮率・低), , , , ,無圧縮 ,レベル1 ,レベル6 ,レベル9 ,無圧縮 ,レベル1 ,レベル6 ,レベル9 ,8533KB/s (100Base-T) ,584.7 ,695.5 ,623.3 ,579.0 ,644.0 ,656.2 ,579.5 ,492.2 ,955KB/s (10Base-T 相当) ,427.2 ,615.9 ,570.4 ,554.2 ,419.1 ,524.1 ,524.0 ,432.7 ,494KB/s ,301.5 ,497.1 ,527.2 ,497.9 ,299.4 ,433.1 ,442.0 ,429.0 ,126KB/s (ADSL 相当) ,109.0 ,261.7 ,286.6 ,296.9 ,108.6 ,186.8 ,187.2 ,190.5 ,32KB/s ,30.4 ,86.3 ,100.5 ,101.2 ,30.4 ,56.1 ,58.8 ,58.8 圧縮による見かけのデータ転送速度 (Blowfish使用時、単位 KBytes/s、 赤字は最高速度) ,TCP転送速度 ,ファイル群 1 (圧縮率・高) , , , ,ファイル群 2 (圧縮率・低), , , , ,無圧縮 ,レベル1 ,レベル6 ,レベル9 ,無圧縮 ,レベル1 ,レベル6 ,レベル9 ,8533KB/s (100Base-T) ,739.4 ,738.4 ,709.0 ,605.7 ,732.5 ,682.4 ,596.9 ,511.1 ,955KB/s (10Base-T 相当) ,419.9 ,639.8 ,633.0 ,545.2 ,434.9 ,561.4 ,509.3 ,453.1 ,494KB/s ,298.1 ,520.6 ,557.9 ,503.2 ,298.5 ,435.2 ,416.2 ,428.4 ,126KB/s (ADSL 相当) ,109.4 ,259.8 ,287.9 ,293.7 ,109.1 ,183.1 ,191.1 ,190.7 ,32KB/s ,30.5 ,86.2 ,100.7 ,100.9 ,30.4 ,56.2 ,58.7 ,58.6 一般に CompressionLevel を上げると転送するデータ量は少なくなりますが、そのぶんデータ圧縮にかかる計算も多くなるのでデータ転送全体の 速度はかえって低下する場合もあります。上に示した結果から、遅い回線を 使った場合ほど CompressionLevel の効果が大きいことがわかります。また 100Base-T 相当の高速回線を使った場合でも、圧縮レベル 1 程度の圧縮ならばファイルによっては転送速度を稼げるようです (暗号化アルゴリズムに 3DES を使った場合)。ただしモデムを介した接続の場合はモデム自身が圧縮をおこなうため、 SSH による圧縮はかえって転送速度を下げる場合があります。 今回はファイルを 2種類 (圧縮率の高いファイルと低いファイル) に分けて測定をおこなっています。回線速度が低い場合、圧縮率があまり高くないファイルでは、圧縮レベルを上げることは逆効果になる場合もあります (上の表で、暗号化アルゴリズムに Blowfish を使った場合など)。またデータ圧縮はある程度の計算コストを必要としますので、 SSH の利用が多いサーバで複数の接続が圧縮を利用していると計算機の負荷が高くなり、かえって時間がかってしまうこともあります。したがって最適な圧縮レベルを決定するには回線速度だけでなく、 転送するデータの種類、計算機の能力、サーバの利用状況なども考慮する必要があります。 (データ転送速度の測定について) データ転送速度の測定は、以下の表に示すファイルを scp でコピーすることによっておこないました。ネットワークの流量が少ない時間帯に同じ測定を 5回くり返し、その平均時間から転送速度を求めました。 SSH のセッションを開始するまでにかかった時間は空のファイルをコピーするのに要する時間であると仮定しています。なお、実際の測定はすべて 100Base-T Ethernet 上のホスト間 (それぞれ Pentium III, 500MHz および Alpha, 600MHz を使用) で行っており、TCP転送速度の変更はソフトウエア的にトラフィックを制限することにより実現しています。 測定に使用したファイル (単位 Bytes) , ,説明 ,元サイズ ,圧縮レベル1 ,圧縮レベル6 ,圧縮レベル9 ,ファイル群 1 (圧縮率・高) ,ファイル1 (画像含むPostScriptファイル) ,700118 ,210352 (69.9%) ,183262 (73.8%) ,179879 (74.3%) , ,ファイル2 (Shift-JISテキストファイル) ,646529 ,256297 (60.3%) ,219183 (66.1%) ,218824 (66.1%) , ,ファイル3 (OpenSSH-2.9p1ソース) ,1445408 ,419013 (71.0%) ,335808 (76.7%) ,334762 (76.8%) ,ファイル群 2 (圧縮率・低) ,ファイル1 (jpeg画像) ,141551 ,139671 (1.3%) ,139671 (1.3%) ,139671 (1.3%) , ,ファイル2 (libX11.so.6) ,1005912 ,554314 (44.8%) ,524151 (47.8%) ,523652 (47.9%) , ,ファイル3 (GhostScriptのバイナリ) ,1587712 ,725252 (54.3%) ,679673 (57.1%) ,677941 (57.1%) {{category2 ネットワーク}}