コンテンツにスキップ

スケーリングとベンチマーキング

CloudflareのKeyless SSL技術は、垂直および水平スケーリングを使用して、あらゆるサイズのワークロードに対応できるように設計されており、可能な限りECDSAなどの事前計算技術を使用しています。キーサーバーのアーキテクチャ設計の目標は、1秒あたりの署名操作を最大化しながらレイテンシを最小限に抑えることです。

各キーサーバーはワーカープールモデルを使用しており、受信したクライアント接続は独自のリーダー/ライターgoroutineペアによって処理され、暗号作業はグローバルプールから引き出された別のワーカーgoroutineで行われます。

必要に応じて、複数のキーサーバーを展開し、好みのイングレス負荷分散構成を使用してバランスを取ることができます。完全な高可用性を確保するためには、予想されるワークロードの2倍を処理できる十分なキーサーバーを展開してください。


キータイプ

キーサーバーはECDSAとRSAの両方のキーをサポートしていますが、RSAの署名は計算コストが桁違いに高いため、展開時に使用するキーのタイプを考慮してください。

ECDSA署名は2つのステップに分けることができます。最初のステップであるランダム値の生成(後でプライベートキーと署名するメッセージと共に使用される)は、計算コストの大部分を占めるため、レイテンシを大幅に削減するためにこれらのランダム値を事前生成します。ECDSA署名リクエストは、RSA署名リクエストとは別のワーカープールを使用して計算的に隔離されており、可能な限り迅速に処理されます。

追加の詳細は、gokeylessサーバーのREADMEファイルに記載されています。


ベンチマーク

私たちは、当時の最新世代のコンピュート最適化されたEC2インスタンス(c5.xlarge)でCloudflareのgokeylessベンチツールを使用してベンチマークを実施しました。この特定のインスタンスは、3.0 GHzのIntel Xeonプロセッサによって駆動される4つのvCPUを持っています:

c5$ cat /proc/cpuinfo|grep "model name"
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz
model name : Intel(R) Xeon(R) Platinum 8124M CPU @ 3.00GHz

デフォルトでは、ベンチはコアごとに1つのワーカーgoroutine(4)で実行され、オペレーティングシステムスレッドの最大数はコアの総数(この場合、GOMAXPROCS=4)に等しくなります。予想通り、ECDSA署名のパフォーマンスはRSAを大きく上回ります。結果はこのc5.xlマシンの各コアが1秒あたり10,000以上のECDSA署名操作を実行でき、約200のRSA署名操作を実行できることを示しています。

展開を計画する際は、特定のキーサーバーを使用して終了することを期待する新しいTLS接続の最大数を決定し、それに応じてスケールしてください。完全な高可用性を確保するために、キーなしで運用される各データセンターは、予想される全ワークロードを終了できる必要があります。

結果

ECDSA

c5$ bench -ski $ECDSA_SKI -op ECDSA-SHA256 -bandwidth -duration 60s
完了した操作の合計: 2661570
平均操作時間: 22.543µs

RSA

c5$ bench -ski $RSA_SKI -op RSA-SHA256 -bandwidth -duration 60s
完了した操作の合計: 46560
平均操作時間: 1.288659ms.