このセクションでは、TSO、GRO、RSS の構成プロセスについて説明します。

NSX Advanced Load Balancer SE での TSO と GRO の有効化

TSO 機能は NSX Advanced Load Balancer SE でデフォルトで有効化されていますが、GRO 機能はデフォルトで無効化されています。

以前のバージョンからアップグレードされても、SE グループの GRO 構成は引き継がれます。ただし、SE グループが NSX Advanced Load Balancer バージョン 22.1.2 で新しく作成された場合、GRO 構成は自動モードになります。SE グループに vCPU が 8 つ以上の SE がある場合、GRO が有効化されます。

注:
  • TSO-GRO の有効化は無停止なので、SE の再起動は必要ありません。

  • 既存の ServiceEngineGroup プロパティを更新するために PUT API 呼び出しが行われ、GRO 構成ノブ ("disable_gro": true) に明示的な値が設定されていない場合、NSX Advanced Load Balancer バージョン 22.1.1 以降ではデフォルトで GRO がリセット/有効化されます。この動作は、SE グループのプロパティが CLI によって更新された場合には、認識されません。

SE で TSO と GRO を有効化するには、次の手順を実行します。

  1. CLI にログインし、configure serviceenginegroup コマンドを使用して TSO 機能と GRO 機能を有効化します。

    [admin:cntrl]: > configure serviceenginegroup Default-Group    
    Updating an existing object. Currently, the object is:    
    | disable_gro                           | True    |    
    | disable_tso                           | True    |    
    [admin:cntrl]: serviceenginegroup> no disable_gro    
    Overwriting the previously entered value for disable_gro    
    [admin:cntrl]: serviceenginegroup> no disable_tso    
    Overwriting the previously entered value for disable_tso    
    [admin:cntrl]: serviceenginegroup> save    
    | disable_gro                           | False    |    
    | disable_tso                           | False    | 
  2. SE で機能が正しくオンになっているかどうかを確認するには、Controller CLI で次の統計情報を確認します。

    1. GRO 統計情報は、インターフェイス統計情報の一部です。GRO については、次のパラメータで統計情報を確認します。

      1. gro_mbufs_coalesced

    2. TSO 統計情報は、mbuf 統計情報の一部です。TSO については、次のパラメータで統計情報を確認します。

      1. num_tso_bytes

      2. num_tso_chain

  3. grep コマンドを次のように使用して、show serviceengine <interface IP address> インターフェイス コマンドを実行し出力をフィルタリングします。

    [admin:cntrl]: > show serviceengine 10.1.1.1 interface  | grep gro
    |     gro_mbufs_coalesced            | 1157967  |
    |     gro_mbufs_coalesced            | 1157967  |
    注:

    ここに記載したサンプル出力は、1 キュー(RSS なし)の場合です。

    RSS 対応、4 キュー RSS については、次の出力を参照してください。

    注:

    ポート チャネル インターフェイスの場合は、[intfname] オプションで、関連する物理インターフェイス名をフィルタとして指定します。イーサネット 4 インターフェイスの場合については、次の出力を参照してください。

    show serviceengine 10.1.1.1 interface filter intfname eth4 | grep gro
    |       gro_mbufs_coalesced          | 320370    |
    |       gro_mbufs_coalesced          | 283307    |
    |       gro_mbufs_coalesced          | 343143    |
    |       gro_mbufs_coalesced          | 217442    |
    |       gro_mbufs_coalesced          | 1164262   |
    注:

    NIC の統計情報は、特定のインターフェイスの各キューの統計情報を合計したものです。

    [admin:cntrl]: > show serviceengine 10.1.1.1 mbufstats | grep tso
    | num_tso_bytes                    | 4262518516                   |
    | num_tso_chains                   | 959426                       |

    この機能が有効化されている場合、ここに記載した出力の統計情報には、TSO パラメーターのゼロ以外の値が反映されます。

NSX Advanced Load Balancer SE での RSS の有効化

SE グループ プロパティの distribute_queues ノブでは、RSS を有効化/無効化します。CLI にログインし、distribute_queues コマンドを使用して RSS 機能を有効化します。

注:

distribute_queues パラメータを変更したら、SE の再起動が必要です。

| distribute_queues | False  |
[admin:cntrl]: serviceenginegroup> distribute_queues
Overwriting the previously entered value for distribute_queues
[admin:cntrl]: serviceenginegroup> save
| distribute_queues | True   |

RSS がオンの場合、SE のすべての NIC では、SE によって計算された結果としての最適な数のキュー ペアを構成して使用します。この最適な数の計算については、構成可能なディスパッチャーのセクションに記載しています。

たとえば、RSS でサポートされる 4 つのキューのインターフェイスの出力は次のようになります。

[admin:cntrl]: > show serviceengine 10.1.1.1 interface filter intfname bond1 | grep ifq
|     ifq_stats[1]                   |
|     ifq_stats[2]                   |
|     ifq_stats[3]                   |
|     ifq_stats[4]                   |

インターフェイス キューごとの ipackets(入力パケット)と opackets(出力パケット)のカウンタの値は、次に示すように、ゼロ以外の値になります。

[admin:cntrl]: > show serviceengine 10.1.1.1 interface filter intfname bond1 | grep pack
|     ipackets                       | 40424864                         |
|     opackets                       | 42002516                         |
|       ipackets                     | 10108559                         |
|       opackets                     | 11017612                         |
|       ipackets                     | 10191660                         |
|       opackets                     | 10503881                         |
|       ipackets                     | 9873611                          |
|       opackets                     | 10272103                         |
|       ipackets                     | 10251034                         |
|       opackets                     | 10208920                         |
注:

出力には、各キューの統計情報と、NIC 全体について 1 つに結合した統計情報が含まれます。

構成のサンプル

次に示す例は、ベアメタル マシンの構成で、24 個の vCPU、2 つの 10G NIC、2 つの 10G NIC を結合して 1 つにしたもの、distribute_queues が有効化されてます。

  • num_dispatcher_cores 構成パラメータの値を 8 に設定します。

    [admin:cntrl]: serviceenginegroup> num_dispatcher_cores 8
    Overwriting the previously entered value for num_dispatcher_cores
    [admin-ctrlr]: serviceenginegroup> save 
    [admin:cntrl]:> show serviceengine 10.1.1.1 seagent | grep -E "dispatcher|queues"
    |num_dispatcher_cpu                   | 8
    |num_queues                           | 8 
  • configure num_dispatcher_cores パラメータの値を 0(デフォルト値)に設定します。SE を再起動すると、ディスパッチャーの構成値が 0 に設定されていても、次の出力に示すように、キューの数とディスパッチャーの数が 4 に変更されます。

    [admin:cntrl]:> show serviceengine 10.1.1.1 seagent | grep -E "dispatcher|queues"
    |num_dispatcher_cpu                   | 4
    |num_queues                           | 4 

vNIC あたりの最大キュー数の構成

max_queues_per_vnic パラメータでは、次の値がサポートされます。

0(予約済み):

自動(NIC と動作環境に基づいてディスパッチャーごとに最適なキュー数を推測)

1(予約済み):

NIC ごとにキュー 1 つ(デフォルト)

整数値:

2 の累乗。上限は 16 です。

max_queues_per_vnic パラメータにより、RSS 操作モードを有効化するために使用される distribute_queues パラメータは廃止されます。キューの数はディスパッチャーの数と等しくなります。

移行ルーチンにより、distribute_queues が有効になっている場合、max_queues_per_vnic パラメータが num_dispatcher_cores に設定され、それ以外の場合の max_queues_per_vnic は 1 に設定されることが確実になります。

次のコマンドは max_queues_per_vnic を構成するのに使用できます。

[admin:admin-controller-1]: serviceenginegroup> max_queues_per_vnic

INTEGER 0,1,2,4,8,16    Maximum number of queues per vnic Setting to '0' utilises all queues that are distributed across dispatcher cores.

[admin:admin-controller-1]: > configure serviceenginegroup Default-Group
Updating an existing object. Currently, the object is:
+-----------------------------------------+----------------------------+
| Field                                   | Value                      |
+-----------------------------------------+----------------------------+
[output truncated]
| se_rum_sampling_nav_percent             | 1                          |
| se_rum_sampling_res_percent             | 100                        |
| se_rum_sampling_nav_interval            | 1 sec                      |
| se_rum_sampling_res_interval            | 2 sec                      |
| se_kni_burst_factor                     | 2                          |
| max_queues_per_vnic                     | 1                          |
| core_shm_app_learning                   | False                      |
| core_shm_app_cache                      | False                      |
| pcap_tx_mode                            | PCAP_TX_AUTO               |
+-----------------------------------------+----------------------------+
[admin:admin-controller-1]: serviceenginegroup> max_queues_per_vnic 2
Overwriting the previously entered value for max_queues_per_vnic
[admin:admin-controller-1]: serviceenginegroup> save

show serviceegine [se] seagent には、ディスパッチャーあたりのキュー数と、インターフェイスごとのキューの合計数が表示されます。

show serviceengine [se] seagent
| num_dp_heartbeat_miss                | 0                              |
| se_registration_count                | 2                              |
| se_registration_fail_count           | 0                              |
| num_dispatcher_cpu                   | 1                              |
| ------------------------- truncated output----------------------------|
| num_flow_cpu                         | 1                              |
| num_queues                           | 1                              |
| num_queues_per_dispatcher            | 1                              |

ハイブリッド RSS の構成

hybrid_rss_mode は、SE グループの構成可能なプロパティです。RSS が構成されている DPDK モードでの SE ハイブリッド専用モードの操作を切り替えます。ここでは、各 SE データパス インスタンスはディスパッチャーとプロキシ機能の両方を実行する独立したスタンドアローンのハイブリッド インスタンスとして動作します。これには再起動を必要とします。

構成コマンドは次のとおりです。

configure serviceenginegroup <se-group> > hybrid_rss_mode
[admin:10-102-66-36]: serviceenginegroup> max_queues_per_vnic 0 
Overwriting the previously entered value for max_queues_per_vnic
[admin:10-102-66-36]: serviceenginegroup>> hybrid_rss_mode
Overwriting the previously entered value for hybrid_rss_mode 
[admin:10-102-66-36]: serviceenginegroup> save
注:

hybrid_rss_mode は必須のチェックによって保護されているので、このプロパティを True に切り替える前に RSS を有効化する必要があります。

  • このプロパティは、SE に従って表示されることもあります。構成コマンドは次のとおりです。

    ----------------------------------------+ 
    | num_dispatcher_cpu        |   4  | 
    | num_flow_cpu              |   4  | 
    | num_queues                |   4  | 
    | num_queues_per_dispatcher |   1  | 
    | hybrid_rss_mode           | True | 
    +---------------------------------------+

パブリック クラウドの自動 RSS の構成

この機能により、AWS、Azure、GCP などのパブリック クラウドに展開されている NSX Advanced Load Balancer SE の RSS を構成できます。

SE グループのプロパティ max_queues_per_vnicnum_dispatcher_cores を 0 に設定できます。SE には構成後の再起動を必要とします。

[admin:controller]: > configure serviceenginegroup Default-Group
[admin:controller]: serviceenginegroup> max_queues_per_vnic 0
[admin:controller]: serviceenginegroup> num_dispatcher_cores 0
[admin:controller]: serviceenginegroup> save

RSS ノブのデフォルト値は次のとおりです。

max_queues_per_vnic = 1

num_dispacther_core = 0

パブリック クラウド専用ディスパッチャーの構成

専用ディスパッチャー (DD) は、ランタイム SE グループ構成可能プロパティです。dedicated_dispatcher_core ノブを切り替えることで設定したり設定解除したりできます。

[admin:controller]: > configure serviceenginegroup Default-Group
[admin:controller]: serviceenginegroup> dedicated_dispatcher_core
[admin:controller]: serviceenginegroup> save

[admin:controller]: > configure serviceenginegroup Default-Group
[admin:controller]: serviceenginegroup> no dedicated_dispatcher_core
[admin:controller]: serviceenginegroup> save