SR-IOVモードでのSSLアクセラレーションにIntel QATを使用するようにKVMハイパーバイザー上のNetScaler VPXを構成します
Linux KVMハイパーバイザー上のNetScaler VPXインスタンスは、Intel クイックアシストテクノロジー(QAT)を使用してNetScaler SSLのパフォーマンスを高速化できます。 インテルQATを使用すると、レイテンシーの高い暗号処理をすべてチップにオフロードできるため、1つまたは複数のホストCPUを解放して他のタスクを実行できるようになります。
以前は、NetScalerデータパスの暗号化処理はすべて、ホストvCPUを使用するソフトウェアで行われていました。
注
現在、NetScaler VPXはインテルQATファミリーのC62xチップモデルのみをサポートしています。 この機能は、NetScalerリリース14.1ビルド8.50以降でサポートされています。
前提条件
-
Linux ホストには、マザーボードに直接統合されているか、外部 PCI カードに追加された Intel QAT C62x チップが搭載されています。
Intel QAT C62x シリーズ モデル: C625、C626、C627、C628。 これらの C62x モデルのみに公開キー暗号化 (PKE) 機能が含まれています。 その他の C62x バリアントは PKE をサポートしていません。
-
NetScaler VPXは、VMware ESXのハードウェア要件を満たしています。 詳細については、「 Linux KVM プラットフォームに NetScaler VPX インスタンスをインストールする」を参照してください。
制限事項
個々の VM 用に暗号ユニットや帯域幅を予約する規定はありません。 Intel QAT ハードウェアで使用可能なすべての暗号ユニットは、QAT ハードウェアを使用するすべての VM で共有されます。
インテル QAT を使用するためのホスト環境のセットアップ
-
Linux ホストに C62x シリーズ (QAT) チップモデル用のIntel 提供のドライバーをダウンロードしてインストールします。 Intel パッケージのダウンロードとインストール手順の詳細については、 Linux 用Intel QuickAssist テクノロジー・ドライバーを参照してください。 readme ファイルはダウンロードパッケージに含まれています。 ダウンロード パッケージの一部として readme ファイルが提供されます。 このファイルには、パッケージをコンパイルしてホストにインストールする手順が記載されています。
ドライバをダウンロードしてインストールしたら、次の健全性チェックを行います:
-
C62x チップの数に注意してください。 各C62xチップには、最大3つのPCIeエンドポイントがあります。
-
すべてのエンドポイントが稼働していることを確認します。
adf_ctl status
コマンドを実行して、すべての PF エンドポイント (最大 3 つ) のステータスを表示します。root@Super-Server:~# adf_ctl status Checking status of all devices. There is 51 QAT acceleration device(s) in the system qat_dev0 - type: c6xx, inst_id: 0, node_id: 0, bsf: 0000:1a:00.0, #accel: 5 #engines: 10 state: up qat_dev1 - type: c6xx, inst_id: 1, node_id: 0, bsf: 0000:1b:00.0, #accel: 5 #engines: 10 state: up qat_dev2 - type: c6xx, inst_id: 2, node_id: 0, bsf: 0000:1c:00.0, #accel: 5 #engines: 10 state: up <!--NeedCopy-->
-
すべての QAT エンドポイントで SRIOV (VF サポート) を有効にします。
root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1a\:00.0/sriov_numvfs root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1b\:00.0/sriov_numvfs root@Super-Server:~# echo 1 > /sys/bus/pci/devices/0000\:1c\:00.0/sriov_numvfs <!--NeedCopy-->
- すべての VF が表示されていることを確認します(エンドポイントあたり 16 VF、合計 48 VF)。
-
adf_ctl status コマンドを実行して、各 Intel QAT チップのすべての PF エンドポイント (最大 3 つ) と VF が稼働していることを確認します。 この例では、システムには C62x チップが 1 つしかありません。 つまり、合計で51のエンドポイント(3+48のVF)があります。
-
- Linux ホストで SR-IOV を有効にしてください。
- 仮想マシンを作成します。 仮想マシンを作成するときは、パフォーマンス要件を満たす適切な数の PCI デバイスを割り当てます。
注
各 C62x (QAT) チップには、最大 3 つの個別の PCI エンドポイントを設定できます。 各エンドポイントは VF の論理的な集合であり、チップの他の PCI エンドポイントと帯域幅を均等に共有します。 各エンドポイントには、最大 16 個の PCI デバイスとして表示される VF を最大 16 個設定できます。 これらのデバイスを VM に追加して、QAT チップを使用して暗号アクセラレーションを行います。
注意事項
- 仮想マシンの暗号化要件が複数の QAT PCI エンドポイント/チップを使用することである場合は、対応する PCI デバイス/VF をラウンドロビン方式で選択して対称分散を行うことをお勧めします。
-
選択する PCI デバイスの数は、ライセンスされている vCPU の数と同じにすることをお勧めします (管理 vCPU 数は含まない)。 利用可能な vCPU 数よりも多くの PCI デバイスを追加しても、必ずしもパフォーマンスが向上するわけではありません。
例
3 つのエンドポイントを備えた 1 つの Intel C62x チップを搭載した Linux ホストを考えてみましょう。 6 個の vCPU を搭載した VM をプロビジョニングする場合、各エンドポイントから 2 つの VF を選択し、それらを VM に割り当てます。 この割り当てにより、仮想マシンの暗号ユニットを効果的かつ均等に分配できます。 使用可能な vCPU の合計のうち、デフォルトで 1 つの vCPU が管理プレーン用に予約され、残りの vCPU はデータプレーン PE で使用できます。
Linux KVM ハイパーバイザーにデプロイされたNetScaler VPX に QAT VF を割り当てる
-
Linux KVM Virtual Machine Managerで、仮想マシン (NetScaler VPX) の電源がオフになっていることを確認します。
-
[ ハードウェアの追加] > [PCI ホストデバイス] に移動します。
-
Intel QAT VF を PCI デバイスに割り当てます。
-
[完了] をクリックします。
-
前述の手順を繰り返して、1つ以上のIntel QAT VFをNetScaler VPXインスタンスに割り当てます。 なぜなら、1 つの vCPU が管理プロセス用に予約されているからです。
仮想マシンあたりの QAT 仮想マシンの数 = 仮想CPUの数-1
-
Power on the VM.
-
NetScaler CLIで
stat ssl
コマンドを実行してSSLサマリーを表示し、QAT VFをNetScaler VPXに割り当てた後にSSLカードを確認します。この例では、5 つの vCPU を使用しました。 つまり、4 つのパケットエンジン (PE) です。
展開について
このデプロイメントは、次のコンポーネント仕様でテストされました:
- NetScaler VPX バージョンとビルド :14.1—8.50
- Ubuntu バージョン: 18.04、カーネル 5.4.0-146
- Linux用インテル C62x QAT ドライバーのバージョン :L.4.21.0-00001