KVMハイパーバイザー上のNetScaler VPXをSR-IOVモードでIntel QATを使用してSSLアクセラレーションを行うように構成する
Linux KVMハイパーバイザー上のNetScaler VPXインスタンスは、Intel QuickAssist Technology (QAT) を使用してNetScalerのSSLパフォーマンスを高速化できます。Intel QATを使用すると、レイテンシーの高いすべての暗号処理をチップにオフロードできるため、1つ以上のホストCPUを解放して他のタスクを実行できます。
以前は、すべてのNetScaler®データパス暗号処理は、ホストvCPUを使用してソフトウェアで実行されていました。
注:
現在、NetScaler VPXはIntel 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間で共有されます。
Intel QATを使用するためのホスト環境をセットアップする
-
Linuxホストに、C62xシリーズ (QAT) チップモデル用のIntel提供のドライバーをダウンロードしてインストールします。Intelパッケージのダウンロードとインストール手順の詳細については、「Linux用Intel QuickAssist Technologyドライバー」を参照してください。 ダウンロードパッケージの一部としてreadmeファイルが利用可能です。このファイルには、ホストでパッケージをコンパイルおよびインストールするための手順が記載されています。
ドライバーをダウンロードしてインストールした後、次の健全性チェックを実行します。
-
C62xチップの数をメモします。各C62xチップには最大3つのPCIeエンドポイントがあります。
-
すべてのエンドポイントがUPであることを確認します。すべてのPFエンドポイント(最大3つ)のステータスを表示するには、
adf_ctl statusコマンドを実行します。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が表示されていることを確認します(エンドポイントごとに16VF、合計48VF)。
-
adf_ctl status コマンドを実行して、すべてのPFエンドポイント(最大3つ)と各Intel QATチップのVFがUPであることを確認します。この例では、システムにはC62xチップが1つしかないため、合計51個のエンドポイント(3 + 48 VF)があります。

-
- LinuxホストでSR-IOVを有効にします。
- 仮想マシンを作成します。VMを作成する際は、パフォーマンス要件を満たすために適切な数のPCIデバイスを割り当てます。
注:
各C62x(QAT)チップは、最大3つの個別のPCIエンドポイントを持つことができます。各エンドポイントはVFの論理的な集合であり、チップの他のPCIエンドポイントと帯域幅を均等に共有します。各エンドポイントは、16個のPCIデバイスとして表示される最大16個のVFを持つことができます。QATチップを使用して暗号化アクセラレーションを行うには、これらのデバイスをVMに追加します。
留意事項
- VMの暗号化要件が複数のQAT PCIエンドポイント/チップを使用することである場合、対称的な分散を実現するために、対応するPCIデバイス/VFをラウンドロビン方式で選択することをお勧めします。
-
選択するPCIデバイスの数は、ライセンスされたvCPUの数(管理vCPUの数を含まない)と等しくすることをお勧めします。利用可能なvCPUの数よりも多くのPCIデバイスを追加しても、必ずしもパフォーマンスが向上するわけではありません。
例:
3つのエンドポイントを持つIntel C62xチップを1つ搭載したLinuxホストを考えます。6つのvCPUを持つVMをプロビジョニングする際、各エンドポイントから2つのVFを選択し、それらをVMに割り当てます。この割り当てにより、VMの暗号化ユニットが効果的かつ均等に分散されます。利用可能なvCPUの合計から、デフォルトで1つのvCPUが管理プレーン用に予約され、残りのvCPUはデータプレーンPE用に利用可能です。
Linux KVMハイパーバイザーに展開されたNetScaler VPXにQAT VFを割り当てる
-
Linux KVM仮想マシンマネージャーで、VM (NetScaler VPX) が電源オフになっていることを確認します。
-
ハードウェアの追加 > PCIホストデバイス に移動します。
-
Intel QAT VFをPCIデバイスに割り当てます。

-
完了 をクリックします。
-
前述の手順を繰り返して、合計vCPU数から1を引いた数まで、1つ以上のIntel QAT VFをNetScaler VPXインスタンスに割り当てます。1つのvCPUは管理プロセス用に予約されているためです。
VMあたりのQAT仮想機能数 = 仮想CPU数 - 1
-
VMの電源をオンにします。
-
NetScaler CLIで
stat sslコマンドを実行してSSLサマリーを表示し、NetScaler VPXにQAT VFを割り当てた後、SSLカードを確認します。この例では、5つのvCPUを使用しており、これは4つのパケットエンジン (PE) を意味します。

展開について
この展開は、以下のコンポーネント仕様でテストされました。
- NetScaler VPXバージョンとビルド: 14.1–8.50
- Ubuntuバージョン: 18.04、カーネル 5.4.0-146
- リナックス用 Intel C62x QAT ドライバーバージョン: L.4.21.0-00001