Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

ソフトウェア受信側の拡張

概要

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

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

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

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

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

I/O 操作中に、パケットは NIC ポートの受信キューからフェッチされ、パケット分類が実行されます。その後、FLT スレッド仮想キューへのパケットの配布が行われます。これらの仮想キューは DPDK リング キュー経由で実装されます。送信パスでは、SWRSS は FLT スレッドの仮想送信キューからパケットをフェッチし、送信のためにこれらのパケットを NIC 送信キューにプッシュします。

SWRSS I/Oスレッドの数は、vSRXインスタンス内の合計CPUとNICキュー数に基づいて選択されます。HWRSS および SWRSS との混在動作モードはサポートされていません。

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

このトピックでは、SWRSS(Software Receive Side Scaling)のタイプとその設定について詳しく説明します。

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 受信キューからバースト モードでパケットを引き出し、FLT スレッドに配信し、その逆でパケット送信用の TX パスに配信します。

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

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

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

  • vSRX(vCPU の数に基づく)および NIC の結果として、最も近いハードウェア RSS(HWRSS)モードで取得した FLT CPU の数が少ない場合。このようなシナリオでは、vSRX が HWRSS モードで有効になり、SWRSS モードよりも FLT CPU が増加し、パケット処理スループットが向上します。

  • 専用 IO スレッドの実行に必要な NIC キューの数が少ない特定のタイプの NIC を持つ vSRX では、SWRSS は推奨されません。このような場合、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 スレッドの数を変更することをお勧めします。