このセクションでは、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 を有効化するには、次の手順を実行します。
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 |
SE で機能が正しくオンになっているかどうかを確認するには、Controller CLI で次の統計情報を確認します。
GRO 統計情報は、インターフェイス統計情報の一部です。GRO については、次のパラメータで統計情報を確認します。
gro_mbufs_coalesced
TSO 統計情報は、
mbuf
統計情報の一部です。TSO については、次のパラメータで統計情報を確認します。num_tso_bytes
num_tso_chain
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_vnic
と num_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