# SSL TLS アクセラレーション ## 定義 SSL/TLS アクセラレーションとは、SSL/TLS ハンドシェイクおよびバルク暗号化処理のオーバーヘッドをハードウェアや専用実装によって削減し、サーバのスループットとレイテンシを改善する技術である。RSA などの公開鍵暗号処理と AES などの共通鍵暗号処理が主な対象。(Source: [[@2011__NSDI11__SSLShader - Cheap SSL Acceleration with Commodity Processors]]) ## 背景と問題 2011 年時点では、SSL 展開はコスト面から限定されていた。サーバサイドの暗号計算オーバーヘッドが重く、現実解は高価なハードウェア SSL アクセラレータ(専用アプライアンス)に限られていた。これがインターネット全体での SSL/TLS 普及を妨げる構造的要因となっていた。 ## 実装アプローチ ### GPU ベースの RSA アクセラレーション GPU の大規模並列性を利用した RSA 演算の高速化。SSLShader(NSDI 2011)では NVIDIA GTX580 上での MP 並列モンゴメリ乗算実装が CPU 単コア比 22.6〜31.7 倍を達成。複数 SSL セッションの RSA 演算をバッチ処理して GPU コアを飽和させる。鍵は CRT(計算量 1/8)・CLNW(乗算数 21% 削減)・2 フェーズ並列モンゴメリ乗算(O(s) 実装)の組み合わせ。 **役割分担の明確な非対称性**: RSA(非対称暗号)は GPU に向く大規模並列演算だが、AES バルク暗号は AES-NI があれば CPU 処理のほうが GPU(DMA 転送コスト込み)を凌駕する。「RSA=GPU、AES=CPU(AES-NI)」という役割分担がコモディティ GPU ベース実装の合理的設計。 ### AESNI(AES New Instructions) Intel が提供するハードウェア AES 命令セット(AES-NI)。`AESENC` / `AESDEC` 1 命令で AES 1 ラウンドを処理し、ソフトウェア実装比 2.5〜6 倍高速。SSLShader では AES-NI 有効時のバルク転送でのみ CPU が GPU を上回ることを実証——AES-NI が「GPU SSL アクセラレーションの対象を RSA ハンドシェイク処理に絞らせる」前提条件となった。 ### オポチュニスティックオフロード 低負荷時は GPU バッチ待ちのレイテンシ増を防ぎ CPU で処理し、高負荷時は GPU にバッチオフロードするアダプティブ制御。最小閾値(GPU が CPU を超え始める点)を下回る場合は CPU 処理を選択。AES-NI 有効時は最小閾値を最大値と同じにして CPU が飽和した場合のみ GPU を使う。これでレイテンシとスループットが実用上両立する。 ### NUMA 対応設計 マルチソケットサーバにおける非一様メモリアクセス(NUMA)に対応した GPU 共有設計。GPU を同一 NUMA ノード内のスレッドのみが共有することでクロスノード通信コストを回避。イントラ NUMA はスレッド(キュー共有が速い)、インター NUMA はプロセス(ソケット操作の競合を避ける)。 ### 透過的プロキシ構成 SSLShader はアプリケーション非侵襲な透過的 SSL リバースプロキシとして動作する。クライアントから見れば通常の SSL 接続、バックエンドサーバから見れば平文 HTTP 接続。既存サーバの変更なしに SSL アクセラレーションを挟み込める。大ファイル(4 MB 超)ではプロキシのデータコピーオーバーヘッドがボトルネックになる制約あり。 ## 横断的知見 - **役割分担原則**: RSA(非対称暗号)は GPU の大規模並列性に適合し 22〜31 倍の改善が可能。AES バルク暗号は AES-NI により CPU 単コアが GPU(DMA コスト込み)を凌駕する。SSL/TLS アクセラレーション設計では「何を GPU にオフロードするか」の選択が性能を決定する。(Source: [[@2011__NSDI11__SSLShader - Cheap SSL Acceleration with Commodity Processors]]) - **Linux カーネルのコネクション受付がスケールボトルネック**: SSLShader の 1024-bit RSA 性能(29K TPS)は GPU の RSA 処理能力ではなく Linux カーネルのコネクション受付(CPU 時間の 60%)によって上限が決まる。ネットワークスタックのスケーラビリティが SSL アクセラレーション研究の次の制約として浮上する。(Source: [[@2011__NSDI11__SSLShader - Cheap SSL Acceleration with Commodity Processors]]) — mTCP(カーネルバイパスTCPスタック、NSDI 2014)はこの制約への直接回答。 - **性能/ドルでの優位性**: コモディティ GPU(GTX580 $499)は専用 SSL アプライアンス(CN1620 $2,129)比で RSA 性能/ドルが 6 倍以上。専用ハードウェアの優位性はアルゴリズム固定・柔軟性欠如のコストを支払うものだと再定義される。(Source: [[@2011__NSDI11__SSLShader - Cheap SSL Acceleration with Commodity Processors]]) ## 未解決の問い - TLS 1.3 では RSA 鍵交換が廃止され ECDHE(楕円曲線 Diffie-Hellman)が必須化された。GPU での楕円曲線演算は RSA 並列化と同様の効果を得られるか? - AES-NI が事実上すべての現代 x86 CPU に搭載された現在、バルク暗号処理の GPU オフロードの意義はどこにあるか(ChaCha20-Poly1305 への移行との関係を含む)? - 現代のサーバで NIC オフロード(TLS オフロード、e.g. Mellanox NVIDIA ConnectX)と GPU アクセラレーションをどう使い分けるべきか? ## 関連 - [[@2011__NSDI11__SSLShader - Cheap SSL Acceleration with Commodity Processors]] — 本概念の一次ソース - [[KyoungSoo Park]] — SSLShader の責任著者 - [[KAIST]] — 発信機関 - [[GPU最適化]] — GPU 汎用演算の関連概念