Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
PostgreSQLアンカンファレンス@東京(1/18)
河原 翔

※Linux環境に基づいた内容です


libpqのデータベース接続制御関数
◦ Version9.2でSSL圧縮を無効化にするオプションが追加

1(デフォルト)に設定することで、SSL接続越えで送信されるデータは圧縮さ
れます(これにはOpenSSLバージョン0.9.8以降...


libpqはデフォルトでSSL圧縮が有効だが、比較的新しい
opensslはデフォルトでSSL圧縮が無効となっている

It is also not recommended to use compression if data trans...


パケット解析し、SSLハンドシェイク中の
Compression Methodを確認する

SSL圧縮が有効の場合は、Client Hello、
Server HelloのCompression Methodに
null以外の方式が格納さ...


性能の観点からは、CPUの性能やデータの内容により
性能への影響は変化するため、結局は実環境で
性能測定をしなければ正確なことはわからない
◦ が、よほどNWに問題があるケースでない限り、SSL圧縮は
無効化した方が応答時間やスループット...
試験内容
¥copy
【条件】
・create table ssltest as select
generate_series(1,10000000)で
テストデータ作成
・クライアントからpsqlで
¥timing
¥copy ssltest...
試験内容

pgbench
【条件】
・サーバでpgbench –i でテストデータ作成
・クライアントから
pgbench -c 10 -t 1000 -h サーバのIPで
pgbenchを実行

暗号化
なし
あり

なし
あり

圧縮化
...
Upcoming SlideShare
Loading in …5
×

sslcompressionの設定方法および性能測定結果

8,656 views

Published on

Published in: Technology
  • Be the first to comment

sslcompressionの設定方法および性能測定結果

  1. 1. PostgreSQLアンカンファレンス@東京(1/18) 河原 翔 ※Linux環境に基づいた内容です
  2. 2.  libpqのデータベース接続制御関数 ◦ Version9.2でSSL圧縮を無効化にするオプションが追加 1(デフォルト)に設定することで、SSL接続越えで送信されるデータは圧縮さ れます(これにはOpenSSLバージョン0.9.8以降が必要です)。 0に設定す ると、圧縮が無効になります(これにはOpenSSL1.0.0以降が必要です)。 このパラメータはSSLが確立していない接続や使用されるOpenSSLがサ ポートしていない場合は無視されます。 圧縮はCPU処理時間を使用しますが、ネットワークが問題である場合はス ループットを改良することができます。 CPU性能が制約要因であれば、圧 縮を無効にすることで、応答時間やスループットを改良することができます。 PostgreSQL 9.3.2文書より引用 http://www.postgresql.jp/document/9.3/html/libpq-connect.html $ psql "host=192.168.1.100 sslcompression=0" sslcompressionを 指定しない場合は、 デフォルトで圧縮される 0指定で圧縮無効化 2
  3. 3.  libpqはデフォルトでSSL圧縮が有効だが、比較的新しい opensslはデフォルトでSSL圧縮が無効となっている It is also not recommended to use compression if data transfered contain untrusted parts that can be manipulated by an attacker as he could then get information about the encrypted data. See the CRIME attack. For that reason the default loading of the zlib compression method is disabled and enabled only if the environment variable B<OPENSSL_DEFAULT_ZLIB> is present during the library initialization. http://vault.centos.org/6.5/os/Source/SPackages/openssl-1.0.1e-15.el6.src.rpmの openssl-1.0.1e-env-zlib.patchより引用 $ cat .bash_profile [ -f /etc/profile ] && source /etc/profile export PGDATA=/var/lib/pgsql/9.3/data export PATH=/usr/pgsql-9.3/bin:$PATH export OPENSSL_DEFAULT_ZLIB=1 クライアント、サーバの両方で環境変数に OPENSSL_DEFAULT_ZLIBを設定しないと SSL圧縮が有効にならない 3
  4. 4.  パケット解析し、SSLハンドシェイク中の Compression Methodを確認する SSL圧縮が有効の場合は、Client Hello、 Server HelloのCompression Methodに null以外の方式が格納される (データ転送量が減少しているかで 圧縮の有効化は判断できるが、圧縮されて いない場合の原因がクライアント・サーバの いずれにあるかの判断まではできない) 4
  5. 5.  性能の観点からは、CPUの性能やデータの内容により 性能への影響は変化するため、結局は実環境で 性能測定をしなければ正確なことはわからない ◦ が、よほどNWに問題があるケースでない限り、SSL圧縮は 無効化した方が応答時間やスループットは改善すると思われる  NICが100Mbpsで共有されていて帯域逼迫しているとか…  NW遅延が往復100ms以上あるとか…  セキュリティの観点からは、圧縮無効化が推奨 ◦ CRIME attackの条件が満たされている場合であっても、 接続時のアカウントやパスワードが漏えいすることはなさそう ではあるが… 5
  6. 6. 試験内容 ¥copy 【条件】 ・create table ssltest as select generate_series(1,10000000)で テストデータ作成 ・クライアントからpsqlで ¥timing ¥copy ssltest to '/dev/null' を実行 暗号化 なし あり なし あり なし あり 圧縮化 なし NW遅延 測定結果 約2秒 なし あり なし あり なし あり 約3秒 約6秒 あり 往復 20ms あり 往復 200ms ・¥copyの測定結果はpsqlの¥timingコマンドを利用 ・ハードディスクのボトルネックを避けるために、¥copyでは/dev/nullを利用 ・クライアントサーバ間はギガビットイーサで接続 ・サーバのプロセッサ速度は2.7GHz ・NW遅延はクライアント、サーバの両方でtcコマンドで設定 ・暗号化方式はDHE-RSA-AES256-SHA ・ssltestデータはファイルの状態で約76M ・クライアント、サーバ共にCPUは2コアだが、暗号・圧縮化時であっても1コアしか 利用されない模様 約3秒 約4秒 約7秒 約20秒 約20秒 約10秒 6
  7. 7. 試験内容 pgbench 【条件】 ・サーバでpgbench –i でテストデータ作成 ・クライアントから pgbench -c 10 -t 1000 -h サーバのIPで pgbenchを実行 暗号化 なし あり なし あり 圧縮化 NW遅延 約630tps なし なし あり なし あり 測定結果 約580tps 約550tps あり 往復 20ms 約24tps 約24tps 約25tps ・pgbenchの測定結果はtps(excluding connections establishing)を利用 ・暗号化、圧縮化の有無はサーバ側で設定 ・クライアントサーバ間はギガビットイーサで接続 ・サーバのプロセッサ速度は2.7GHz ・NW遅延はクライアント、サーバの両方でtcコマンドで設定 ・暗号化方式はDHE-RSA-AES256-SHA ・クライアント、サーバ共にCPUは2コア 7

×