Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ソフトウェア受信側のスケーリング

概要

最新の NIC は、複数の受信および送信記述子キュー (マルチキュー) をサポートしています。受信時に、NIC は異なるパケットを異なるキューに送信して、CPU 間で処理を分散できます。NIC は、少数の論理フローの 1 つに割り当てる各パケットにフィルターを適用して、パケットを分散します。各フローのパケットは個別の受信キューに送られ、受信キューは個別の CPU で処理できます。このメカニズムは、一般に受信側スケーリング (RSS) と呼ばれます。RSS技術の目的は、パフォーマンスを均一に向上させることです。RSS は、遅延が懸念される場合や、受信割り込み処理がボトルネックになる場合に有効になります。CPU 間で負荷を分散すると、キューの長さが減少します。待機時間の短いネットワークの場合、最適な設定は、システム内の CPU と同じ数のキューを割り当てることです (または、小さい場合は NIC の最大数)。最も効率的な高レート構成は、CPU が飽和しているために受信キューがオーバーフローしない、受信キューの数が最も少ない構成である可能性があります。受信側スケーリングを使用すると、ブリッジングのスループットを向上させることができます。

フロー スレッド アフィニティ アーキテクチャに従って、各フロー スレッド (FLT) は NIC の専用受信キューからパケットをポーリングし、実行が完了するまでパケットを処理します。したがって、フロー スレッドは、不一致を回避するために、パケット処理のために NIC 受信 (RX) キューと送信 (TX) キューにバインドされます。したがって、マルチコアvSRX仮想ファイアウォールフレーバーをサポートするには、NICのRXキューとTXキューの数がvSRX仮想ファイアウォールのデータプレーンCPUの数と同じである必要があります。ソフトウェアRSS(SWRSS)は、さまざまなFLTスレッドにソフトウェアベースのパケットスプレーを実装することで、vSRX仮想ファイアウォールのマルチコアフレーバーを実行するためのNICハードウェアキューの制限を解消します。

ソフトウェア RSS は、個々のフローの処理を複数のカーネルの 1 つにオフロードするため、NIC からパケットを受け取るフロー スレッドはより多くのパケットを処理できます。RSS と同様に、SWRSS を使用した場合のネットワーク スループットの向上には、CPU 使用率と線形相関があります。

SWRSS では、各 NIC ポートは、I/O スレッドと同じかそれ以下の数のハードウェア RX/TX キューで初期化されます。I/O スレッドは、vSRX 仮想ファイアウォール内のすべての NIC インターフェイスにおける合計データパス CPU と最小 NIC キューに基づいて決定されます。たとえば、I/O スレッドが 4 と計算された場合、NIC ポートあたりの HW キューの数は 4 キュー以下になります。

NICに、サポートされているvSRX仮想ファイアウォールインスタンスのFLTスレッドほど十分な数のキューがない場合、ソフトウェアRSS(SWRSS)はフローされたデータパスによって有効になります。SWRSSは、NIC受信キューからパケットを取得した後、FLT間でパケットを分散するソフトウェアモデルを実装します。NIC HWキューの制限を取り除くことで、SWRSSはさまざまなvSRX仮想ファイアウォールインスタンスタイプをサポートし、vCPUの拡張を可能にします。

I/O 操作中に、パケットは NIC ポートの受信キューから取得され、パケット分類が実行されます。その後、FLT スレッド仮想キューへのパケットの配布が続きます。これらの仮想キューは、DPDK リング キューを介して実装されます。伝送パスでは、SWRSS は FLT スレッドの仮想送信キューからパケットを取得し、これらのパケットを NIC 送信キューにプッシュして送信します。

SWRSS I/Oスレッドの数は、vSRX仮想ファイアウォールインスタンスで見つかったCPUの合計とNICキューの数に基づいて選択されます。HWRSS および SWRSS との混合動作モードはサポートされていません。

ソフトウェア受信側スケーリングの構成について

このトピックでは、ソフトウェア受信側スケーリング (SWRSS) の種類とその構成について詳しく説明します。

SWRSSは2つの動作モードをサポートしており、必要なデータパスCPUの数に基づいて有効になります。これらのモードは、共有 IO モードと専用 IO モードです。これらのモードは、必要なデータパスCPUの数に基づいて有効になります。vSRX仮想ファイアウォールおよびvSRX3.0は、専用I/Oモードのみをサポートします。

専用 I/O モードでは、フローされたプロセスは I/O 操作専用の I/O スレッドを作成します。vSRX 仮想ファイアウォールに必要な I/O スレッドの数に基づいて、I/O スレッドは専用の NIC ポートに関連付けられます。次に、キューの送受信 NIC ポートは、統一された分散と I/O スレッドのロックを回避するために、ラウンドロビン方式で各 I/O スレッドに結合されます。各専用 I/O スレッドは、NIC 受信キューからバースト モードでパケットをプルし、パケット送信の TX パスについては FLT スレッドに分散し、その逆も同様です。

SWRSS は、vCPU の数に基づいて有効になります。NIC に、異なる vCPU を持つ vSRX 仮想ファイアウォールのフロースレッド(FLT)として十分な数のキューがない場合、フロープロセスによってソフトウェア RSS(SWRSS)が有効になります。

SWRSS は、次のシナリオでは有効になっていません。

  • NIC に、必要な PFE データパス CPU 用の十分な数のハードウェア RX または TX キューがある場合。

  • vSRX 仮想ファイアウォール(vCPU の数に基づく)と NIC の結果、FLT CPU の数は、最も近いハードウェア RSS(HWRSS)モードで得られる数よりも少なくなります。このような場合、vSRX仮想ファイアウォールはHWRSSモードで有効になり、SWRSSモードよりもFLT CPUが多くなり、パケット処理のスループットが向上します。

  • SWRSSは、専用IOスレッドの実行に必要な数よりも少ない数のNICキューをサポートする特定のタイプのNICを持つvSRX仮想ファイアウォールには推奨されません。このような場合、SWRSS は有効になりますが、I/O CPU が完全に使用されるまで、追加の CPU が FLT CPU に接続されます。

SWRSS が有効になっていない場合は、 set security forwarding-options receive-side-scaling software-rss mode enable コマンドを使用して SWRSS を有効にします。このコマンドを実行すると、NIC、RSS、または vCPU の数に関係なく、SWRSS が強制的に有効になります。CLI を使用して SWRSS を有効にしない場合、SWRSS の有効化は自動的に FLT:IO(4:1)のデフォルト比率に基づいて決定されます。

必要な IO スレッド数を構成するには、 コマンドを使用します set security forwarding-options receive-side-scaling software-rss io-thread-number <1-8> 。IOフロースレッドに割り当てられたvCPUの実際の数を表示するには、 コマンドを使用します show security forwarding-options resource-manager

SWRSS の有効化は、IO スレッドとワーカー スレッドのアーキテクチャと概念に基づいて、自動的に決定するか、強制的に決定できます。SWRSS を有効にするとパフォーマンスに影響するため、IO スレッドの数は、必要な場合にのみ、パフォーマンスに影響するボトルネック ポイントに達するまで変更することをお勧めします。