PR
図1 Webシステムのボトルネックとアクセラレータの適用範囲<BR>Webシステムを構築・運用する場合には,さまざまな個所が性能上のボトルネックになり得る。既存システムの構成変更を最小限にとどめつつ,このボトルネックを解消するときに有用なのが,各種アクセラレータである。
図1 Webシステムのボトルネックとアクセラレータの適用範囲<BR>Webシステムを構築・運用する場合には,さまざまな個所が性能上のボトルネックになり得る。既存システムの構成変更を最小限にとどめつつ,このボトルネックを解消するときに有用なのが,各種アクセラレータである。
[画像のクリックで拡大表示]
図2 SSL通信の処理負荷は公開鍵暗号を使うハンドシェーク処理に集中&lt;BR&gt;公開鍵暗号で必要な演算量は,共通鍵暗号の10~20倍。SSL通信では,サーバーやクライアントの認証と共通鍵の交換を実施するハンドシェーク処理で,公開鍵暗号を使う。つまり,このハンドシェーク処理がボトルネックになりやすい。ただし,SSL通信の用途によっては,共通鍵の生成や,共通鍵による暗号がボトルネックになる場合もある。
図2 SSL通信の処理負荷は公開鍵暗号を使うハンドシェーク処理に集中<BR>公開鍵暗号で必要な演算量は,共通鍵暗号の10~20倍。SSL通信では,サーバーやクライアントの認証と共通鍵の交換を実施するハンドシェーク処理で,公開鍵暗号を使う。つまり,このハンドシェーク処理がボトルネックになりやすい。ただし,SSL通信の用途によっては,共通鍵の生成や,共通鍵による暗号がボトルネックになる場合もある。
[画像のクリックで拡大表示]
写真1 SSLアクセラレータ製品の例&lt;BR&gt;左は,Webサーバーに装着するPCIカード型(アイルランドのAEPシステムズの「AEP1000L」)。右は,Webサーバーの手前に配置するアプライアンス型(米イングリアン・ネットワークスの「Ingrian i215」)。
写真1 SSLアクセラレータ製品の例<BR>左は,Webサーバーに装着するPCIカード型(アイルランドのAEPシステムズの「AEP1000L」)。右は,Webサーバーの手前に配置するアプライアンス型(米イングリアン・ネットワークスの「Ingrian i215」)。
[画像のクリックで拡大表示]
表1 主なSSLアクセラレータ
表1 主なSSLアクセラレータ
[画像のクリックで拡大表示]
図3 SSLアクセラレータの処理性能は仕組みによって大きく異なる&lt;BR&gt;どのくらいの処理をさばけるかは,ハードウエアの機能や実装形態によって変わってくる。図では,Webサーバーに装着するSSLアクセラレータ・カードを比較してみた。安価な製品では,最も処理能力を要求される,べき剰余演算だけを高速化する。最近は,SSLで必要な全演算を高速化するチップを搭載する製品が多い。
図3 SSLアクセラレータの処理性能は仕組みによって大きく異なる<BR>どのくらいの処理をさばけるかは,ハードウエアの機能や実装形態によって変わってくる。図では,Webサーバーに装着するSSLアクセラレータ・カードを比較してみた。安価な製品では,最も処理能力を要求される,べき剰余演算だけを高速化する。最近は,SSLで必要な全演算を高速化するチップを搭載する製品が多い。
[画像のクリックで拡大表示]
図4 インライン型のアプライアンスはTCP/IPスタック処理で発生するオーバーヘッドを削減してさらなる高速化を図る&lt;BR&gt;PCベースのSSLアクセラレータ・アプライアンスの場合,SSLメッセージを再構築してから復号/暗号するものが多かった。米アンデス・ネットワークスの「PSSL」シリーズなど,最近の製品の中には,ポート番号を利用してSSLパケットのみをフック。パケット単位で復号/暗号することで,高速化を図る製品もある。
図4 インライン型のアプライアンスはTCP/IPスタック処理で発生するオーバーヘッドを削減してさらなる高速化を図る<BR>PCベースのSSLアクセラレータ・アプライアンスの場合,SSLメッセージを再構築してから復号/暗号するものが多かった。米アンデス・ネットワークスの「PSSL」シリーズなど,最近の製品の中には,ポート番号を利用してSSLパケットのみをフック。パケット単位で復号/暗号することで,高速化を図る製品もある。
[画像のクリックで拡大表示]

図1 Webシステムのボトルネックとアクセラレータの適用範囲
Webシステムを構築・運用する場合には,さまざまな個所が性能上のボトルネックになり得る。既存システムの構成変更を最小限にとどめつつ,このボトルネックを解消するときに有用なのが,各種アクセラレータである。
[画像のクリックで拡大表示]

図2 SSL通信の処理負荷は公開鍵暗号を使うハンドシェーク処理に集中
公開鍵暗号で必要な演算量は,共通鍵暗号の10~20倍。SSL通信では,サーバーやクライアントの認証と共通鍵の交換を実施するハンドシェーク処理で,公開鍵暗号を使う。つまり,このハンドシェーク処理がボトルネックになりやすい。ただし,SSL通信の用途によっては,共通鍵の生成や,共通鍵による暗号がボトルネックになる場合もある。
[画像のクリックで拡大表示]

写真1 SSLアクセラレータ製品の例
左は,Webサーバーに装着するPCIカード型(アイルランドのAEPシステムズの「AEP1000L」)。右は,Webサーバーの手前に配置するアプライアンス型(米イングリアン・ネットワークスの「Ingrian i215」)。
[画像のクリックで拡大表示]

表1 主なSSLアクセラレータ
[画像のクリックで拡大表示]

図3 SSLアクセラレータの処理性能は仕組みによって大きく異なる
どのくらいの処理をさばけるかは,ハードウエアの機能や実装形態によって変わってくる。図では,Webサーバーに装着するSSLアクセラレータ・カードを比較してみた。安価な製品では,最も処理能力を要求される,べき剰余演算だけを高速化する。最近は,SSLで必要な全演算を高速化するチップを搭載する製品が多い。
[画像のクリックで拡大表示]

図4 インライン型のアプライアンスはTCP/IPスタック処理で発生するオーバーヘッドを削減してさらなる高速化を図る
PCベースのSSLアクセラレータ・アプライアンスの場合,SSLメッセージを再構築してから復号/暗号するものが多かった。米アンデス・ネットワークスの「PSSL」シリーズなど,最近の製品の中には,ポート番号を利用してSSLパケットのみをフック。パケット単位で復号/暗号することで,高速化を図る製品もある。
[画像のクリックで拡大表示]

「大量のトラフィックをさばけるように,サーバー処理を高速化したい。しかも,アプリケーションなどの変更は最小限にとどめたい」---。こんな場面で便利なのが,「アクセラレータ」と呼ばれる高速化装置である。SSL(セキュア・ソケット・レイヤー)通信を高速化するSSLアクセラレータなどが,代表例だ。ほかにも,データベースと連動して生成する動的Webページのアクセラレータや,ウイルス検出処理のアクセラレータなどがある。これらの装置は,何をどのくらい高速化してくれるのか,仕組みの違いで価格がどのくらい違うのか---などを探った。
(実森 仁志=hjitsumo@nikkeibp.co.jp)

 1年前の2002年夏,あるコンテンツ・サイトにアクセスが殺 到した。ピーク時には「ダウン寸前の状態」(システム構築・運用を受託したソフトクリエイトのサーバーセンター課長である黒瀬 泰広氏)に陥った。このときはかろうじて乗り切ったが,2003年のパンクは必至。サーバー増設も検討したが,3倍の台数が必要という試算に,「現実的とは思えなかった」(黒瀬氏)---。

 こうした状況で検討に値するのが,「アクセラレータ」だ(図1[拡大表示])。既存システムの変更を最小限に,低コストで高速化できる。よく知られているのは,「SSL(セキュア・ソケット・レイヤー)アクセラレータ」。ほかにも「Webアクセラレータ」「XML(拡張可能マークアップ言語)アクセラレータ」「アンチウイルス・アクセラレータ」などがある。

導入の手軽さがメリット

 高速化の手法としては,サーバーの増設と強化が王道だが,コストは膨らむ。ハードの代金だけでなく,ソフトのライセンス料と保守費も上がる。管理コストやデータセンターの施設料も増す。他方,サーバー単体の強化にはハード上の限界がある。高速サーバーへの移行は,マシン購入に加え,アプリの載せ換えや動作検証などが必要となり,手間がかかる。

 この点,アクセラレータは,ネットワークやサーバーに組み込むだけで使える。アプリの変更は必要ないか,最小限で済む。手軽さが利点である。

 だが,アクセラレータを入れたら必ず効果が出るとは限らない。ネックを見極めた選択が不可欠だ。さもないと,効果は期待できない。仮に効果が出ても,別の問題を誘発してしまう。

 ソフトクリエイトは2002年8月,Webサーバーのキャパシティを上げる装置だけを試験導入した。その結果,1台あたりでさばけるアクセス数は従来の4倍に跳ね上がったが,その分だけデータベースにアクセス負荷が集中。2003年6月には,データベース負荷を軽減する装置も導入した。

 各種のアクセラレータは,どんな場合にどのくらいの効果を期待できるのか,どんな仕組みで高速化するのか。アクセラレータの“秘密”を解き明かす。

SSLアクセラレータ
重い暗号処理を専用ハードで代替

 SSL(セキュア・ソケット・レイヤー)やTLS(トランスポート・レイヤー・セキュリティ)は,電子商取引サイトなどに個人情報を送信する用途でおなじみの技術。クライアントやサーバーの認証,暗号化データの送受信に使う。最近では,企業が遠隔拠点間を結ぶVPN(仮想プライベート・ネットワーク)への応用も始まった。

 SSL/TLSは,コンピュータにとってはかなり重い処理(図2[拡大表示])。実際,高性能なサーバーでも,数十から数百のSSL/TLS通信を同時に受け付けると,ほかの処理はできない状態に陥る。

 負荷の高いこの処理をサーバーのMPU(小型演算ユニット)の代わりに実行するのが,「SSLアクセラレータ」である。サーバーの処理が減る分だけ,キャパシティの向上も見込める。

最初の「ハンドシェーク」が重荷

 SSL/TLSの負荷は,通信開始時のハンドシェーク処理に集中する。原因は「公開鍵暗号」にある。誰に見られても構わない公開鍵と,誰にも見せない秘密鍵というペア鍵を使う公開鍵暗号は,暗号鍵を事前に交換する必要がない。不特定の相手と通信するインターネット向きである。

 公開鍵暗号では,公開鍵をヒントに秘密鍵を簡単に推測されないよう,1024ビットなどの長い鍵と,複雑な演算を使う。暗号/復号には,数百けたの数字を利用したべき剰余演算(指数演算した結果から割り算して余りを求める計算)を用いる。演算にかかる手数は,通信相手と同じ暗号鍵を使う共通鍵暗号と比べ,「およそ10~20倍」(東京エレクトロンデバイスのコミュニケーションプロダクトグループ課長である芹沢 健氏)にもなる。

 SSLアクセラレータは,べき剰余演算を専用ハードで高速に処理する。形状は2種類。Webサーバーに内蔵して使う拡張カード型と,Webサーバーの手前に置いて複数サーバーを高速化するアプライアンス型である(写真1[拡大表示])。

 カード型は装着したサーバーだけを高速化し,価格は数十万円(表1[拡大表示])。15万円を切るアイルランドのAEPシステムズの「AEP1000L」(国内販売は住商エレクトロニクス)は,ASIC(特定用途向けIC)により,べき剰余演算を1秒間で最大1000回こなす。

サーバーが3台以上なら
アプライアンス型が有利

 高速化したいWebサーバーの台数が3台を超えるなら,アプライアンス型を利用した方が安価になる。装置自体の価格もあるが,年間で数十万円はかかるサーバー証明書のコストが大きい。カード型はサーバーごとに装置と証明書が必要だが,アプライアンス型は装置に証明書を1つ組み込めば済む。

 アプライアンス型は,Webサーバーに対するリバース・プロキシとして動作する。ハンドシェーク時の公開鍵暗号だけでなく,通信データの暗号化に使う共通鍵暗号の処理も,各Webサーバーに代わって行う。

 共通鍵暗号の演算量は,公開鍵暗号に比べれば少ないが,数がまとまれば重くなる。これがボトルネックにならないよう,アプライアンス型では,共通鍵暗号を含むすべての処理を高速にさばく必要がある。最近では,複数の演算機能を1チップに集積したセキュリティ・チップを搭載して高速化する(図3[拡大表示])。公開鍵暗号,共通鍵暗号,共通鍵の生成に使うハッシュなどの演算回路を備えたチップだ。米ブロードコムの「BCM5821」は,べき剰余演算を含むRSA演算を毎秒4000回も実行できる。SSL/TLSスループットは最大600Mビット/秒に達する。

負荷の高い処理にパワーを配分

 同じSSLを利用していても,サイトの種類によって負荷のかかり具合は異なる。例えばBtoCサイトなどは,ハンドシェーク処理が24時間生じ得るが,共通鍵暗号を利用した通信量はさほど多くない。一方,SSL-VPNで拠点間を結んでいる企業の場合,ハンドシェーク処理は始業時間に集中し,その後は終日,共通鍵暗号の比率が大きくなる。

 始業時間は公開鍵暗号に,業務時間中は共通鍵暗号に,演算パワーを振り分ける仕組みがあれば効率的だ。これを実現するのが,米カビウム・ネットワークスの「NITROX」。数個から数十個のマイクロチップを1つに集積したマルチチップ型RISC(縮小命令型コンピュータ)で,マイクロチップに必要な演算プログラムをロードして実行する。つまり,ハンドシェーク処理が集中したら自動的に公開鍵暗号を処理するマイクロチップの数が増える。

パケット単位の処理で高速化

 高速化の解はチップ化だけではない。ネットワークの仕組みを考慮してスループットを上げる手もある(図4[拡大表示])。米アンデス・ネットワークスの「PSSL」は,パケット単位で暗号/復号する。PSSLはWebサーバーに向かうパケットを監視,SSL/TLSならばASICで復号してWebサーバーに送る。

 PCベースのSSLアクセラレータは,必ずしもパケット単位で暗号/復号していない。通常は,パケットのデータ本体(IPデータグラム)を取り出してTCP/IPスタックで処理し,暗号化メッセージ全体がそろったところで復号する。これだと,TCP/IPスタック処理で遅くなるし,メッセージ全体がそろうまでの待ち時間もかかる。

部内者による盗聴を防ぐ製品も

 アプライアンス型では通常,Webサーバーまでの内部ネットワーク上は,暗号化していない平文のデータが流れる。セキュリティ上は好ましくはない。かといって,再びSSL化するのでは本末転倒である。

 速度を損なうことなくWebサーバーまで再暗号化するのが,米イングリアン・ネットワークスの「Ingrian」や米レッドライン・ネットワークスの「Redline T|X」。装置からWebサーバーまでSSL通信のコネクションを1本だけ張り,複数クライアントからのデータを暗号化してWebサーバーに送る。ハンドシェークが必要なコネクション確立時を除けば,Webサーバーの負担は共通鍵暗号の処理だけで済む。