カスタム モードは、TCP プロキシ設定を手動で構成するために使用されます。 TCP プロキシ プロファイルがカスタムに設定されている場合、管理者は NSX Advanced Load Balancer ユーザー インターフェイス、CLI、または REST API を使用して、この後のセクションで説明する TCP プロキシ プロファイルのデフォルト パラメータを変更することができます。
タイムアウト パラメータ
[アイドル接続] - [アイドル期間] パラメータで指定します。NSX Advanced Load Balancer が接続の終端です。SE、クライアント、またはサーバによる接続を介して送受信されるパケットで、[アイドル期間] タイマーがリセットされます。
[TCP キープアライブ] か [アイドル接続の期限切れ] のいずれかを選択して、アイドル接続の動作を制御します。
[TCP キープアライブ]:キープアライブ パケットを定期的にクライアントへ送信します。クライアント確認応答が正常であれば、アイドル時間タイマーをリセットします。SE から送信されるキープアライブ パケットでは、タイマーをリセットしません。
[アイドル接続の期限切れ]:[期間] フィールドで指定したとおりに、クライアントからのキープアライブ信号がないアイドル接続を終端します。 NSX Advanced Load Balancer からキープアライブを送信することはありませんが、クライアントまたはサーバから受信したキープアライブ パケットの引き受けはします。
[アイドル期間] を秒単位で入力します(5 ~ 14,400 秒、無限タイムアウトの場合は 0)。これは、その TCP 接続が NSX Advanced Load Balancer によってプロアクティブ クローズの対象となるまでの時間です。タイマーは、クライアント、サーバ、または SE によってパケットが送受信されるとリセットされます。
この値を大きく設定すると、キープアライブ パケットを使用しない長期間の接続に適している場合があります。設定値が高くなると、サービス妨害攻撃に対する NSX Advanced Load Balancer の脆弱性も増大します。システムではアイドル接続のプロアクティブ クローズをしないためです。
[アイドル期間] のデフォルト値は 600 秒です。[範囲] は 5 ~ 3,600 秒です。(無限タイムアウトとアイドル接続のプロアクティブクローズを無効にする場合は 0 秒)。
[待機時間を無視] - SE とクライアントとの間または SE とサーバとの間の接続が閉じられると、一意のクライアントまたはサーバの IP:ポート + サービス エンジンの IP:ポート(4 タプルといいます)が一定時間 TIME_WAIT 状態になります。この 4 タプルは、まだインフライトであるかまだ配信されていない遅延パケットがネットワークからなくなったと判断されるまでは、再利用できません。[待機時間] 値は、この 4 タプルが再利用されるまでのタイムアウト期間を定義するものです。500 ~ 2,000 ミリ秒の値を入力します。代わりに [待機時間を無視] オプションを有効化すると、NSX Advanced Load Balancer には、同じ 4 タプルに一致するリモート IP アドレスから SYN パケットを受信した場合に、その 4-タプル接続をすぐに再度開くことが許可されます。 デフォルト値は 2,000 ミリ秒 です。
再送の動作パラメータ
[最大再送回数] - 3 ~ 8 の値を入力します。これは、接続を閉じるまでに再送を試行する回数です。デフォルト値は 8 です。
[SYN 再送の最大数] - 3 ~ 8 の値を入力します。これは、SYN パケットの再送を試行してギブアップとなるまでの最大回数です。デフォルト値は 8 です。
バッファ管理パラメータ
1.[受信ウィンドウ] では送信者に、NSX Advanced Load Balancer で TCP 確認応答を送信する前にバッファできるデータ量を示します。値の範囲は 32 KB から 65,536 KB までとなります。
2.[最大セグメント サイズ] (MSS) は、ネットワーク インターフェイスの最大転送ユニット (MTU) 長を使用して計算されます。MSS で、TCP パケットへ安全に挿入できるデータの最大サイズが決まります。
一部の環境では、MSS を MTU より小さくしなければなりません。たとえば、NSX Advanced Load Balancer とクライアントとの間のトラフィックでサイト間 VPN を経由するなら、暗号化データを埋め込むための領域がいくらか予約されている必要があります。[サイズにネットワーク インターフェイス MTU を使用] をクリックすると、ネットワーク インターフェイスの MTU サイズに基づいて MSS を設定できます。IP および TCP ヘッダーを考慮するため、MSS は MTU - 40 バイトに設定されます。MTU が 1500 バイトの場合、MSS は 1460 に設定されます。
代わりに、カスタム値を 512 ~ 9,000 バイトの範囲で入力することもできます。
QoS とトラフィック エンジニアリングのパラメータ
DSCP (Differentiated Service Code Point) により、NSX Advanced Load Balancer には、DSCP パラメータを渡すかカスタム番号を指定するかのいずれかが許可されます。DSCP は TCP ヘッダーの 8 ビット フィールドであり、トラフィックの分類に使用されます。
次に示すパラメータは、NSX Advanced Load Balancer CLI と REST API から構成することができます。
輻輳制御パラメータ
Aggressive Congestion Avoidance - Congestion window では、送信者が ACK なしで確実に転送できるデータ量を定義します。輻輳ウィンドウ サイズは、最大受信ウィンドウまで、またはネットワークが輻輳制限に達するまで増加し続けます。ネットワークで転送やタイムアウトが確認されなければ、NSX Advanced Load Balancer では初期輻輳ウィンドウを大きくして、スロー スタートを回避し、TCP 接続のランプアップを迅速化します。フィールドに使用できる値は次のとおりです。
有効 — 10 倍。
無効 — MSS のサイズと同じ。
デフォルト値は 無効 です。
CC Algo は輻輳制御アルゴリズムであり、検出したネットワーク輻輳を特定し応答するにあたっての動作を統制するものです。フィールドに使用できる値は次のとおりです。
NewReno は、ほとんどのネットワークに対応する多用途の TCP 輻輳制御アルゴリズムです。
Cubic は、スループットが高く遅延が大きい広帯域高遅延ネットワーク (LFN) 向けに設計されています。
HTCP は、スループットが高く遅延が大きいネットワークにのみ推奨されます。
デフォルト値は NewReno です。
Congestion Recovery Scaling Factor は、回復後の輻輳ウィンドウのスケール ファクタを定義するものであり、アグレッシブな輻輳回避で使用されます。範囲は 0 ~ 8 で、デフォルトは 2 です。
Min Rexmt Timeout の範囲は 50 ~ 5,000 ミリ秒です。TCP には、リモート デバイスがパケットを確実に受信するようにするロジックが組み込まれており、送信者がパケットを再送信できません。このパラメータでは、パケットを再送するまでの最小時間を設定します。
Reassembly Queue Size では、セグメントが Out-of-Order に到達した際の TCP セグメント再アセンブルで使用されるバッファのサイズ、つまり再アセンブルのキューに入る TCP セグメントの最大数を定義します。値を小さくすると、サイズの大きいコンテンツのダウンロードや一括トラフィックの処理に問題が発生する可能性があります。値は 0 ~ 5k の範囲で指定できます。デフォルト値は 0 です(キュー サイズが無制限となります)。
Reorder Threshold では、再送のトリガに要する ACK の重複数を制御します。値が大きいほど、パケットの並べ替えによる再転送の数が少なくなります。環境で順序の誤ったパケットが一般的な場合は、より多くの値を使用することをお勧めします。値は 1 ~ 100 の範囲で指定できます。デフォルト値は、パブリック クラウド(AWS、Azure、GCP など)は 8、それ以外は 3 です。
Slow Start Scaling Factor は、スロー スタート時の輻輳ウィンドウのスケール ファクタです。ウィンドウのスケール ファクタとは異なります。このパラメータの効力があるのは、aggressive congestion avoidance が有効化されている場合のみです。フィールドの値の範囲は 0 ~ 8 になります。デフォルト値は 1 です。
Time Wait Delay は、TIME_WAIT 状態の接続を閉じるまでの待機時間です。このフィールドには次のような値を取ることができます。
範囲 — 500 ~ 2,000 ミリ秒。
特殊 — 0(即時に閉じる場合)。
デフォルト — 0。
NSX Advanced Load Balancer TCP スタックには他にもデフォルトで有効化されている最適化パラメータがいくつかありますが、ユーザーによる変更はできません。そうしたパラメータについては、この次のセクションで説明します。
変更不可パラメータ
Window Scaling Factor - ウィンドウのスケールにより、受信者 (SE) が接続用にバッファできる TCP データの量が決まります。デフォルトの初期ウィンドウは 65,535 ビットです。この TCP 拡張をサポートする最新の TCP クライアントでは、ウィンドウのスケール ファクタでウィンドウ サイズを x 倍(ここでの x がスケール ファクタ)にすることにより、この数値を大幅に増やします。これは、ほとんどのブロードバンド インターネット接続を記述する遅延が大きくスループットが高いネットワークで有用です。NSX Advanced Load Balancer ウィンドウのスケール ファクタは 10、つまり 67,104,840 ビットまではバッファできるということです。このフィールドのデフォルト値は 10 です(受信ウィンドウが 65,535 に設定されている場合のバッファは最大 67,104,840 ビットという意味です)。
Selective ACK - 選択的な確認応答により、データ受信者は送信者に、正常に到達したセグメントすべてについて通知できます。そのため、送信者は実際に失われたセグメントのみを再送すればよいのです。初めの 5 つのパケットが正常に受信され、6 つ目のパケットが失われていまだ受信されず、パケット 7 ~ 10 が正常に受信されたというシナリオを考えてみましょう。この場合、SACK がなく、送信者は実際に失われたパケットを把握できないため、パケット 6 以降のすべてのパケットを再送信することになります。そうすると、不要な再送をすることになり、帯域幅がさらに消費されるので、TCP のパフォーマンスに影響します。このフィールドのデフォルト値は 有効 です。
Limited Transmit Recovery - このパラメータは、接続の輻輳ウィンドウが小さい場合、または 1 つの送信ウィンドウで複数のセグメントが失われている場合、失われたセグメントをより効果的に回復するのに使用されます。制限付き送信アルゴリズムでは、送信者に到達した初めの 2 つの重複した確認応答それぞれに対する応答で新しいデータ セグメントを送信することが許容されます。このようなセグメントを送信すると、コストのかかる再送タイムアウトが使用される代わりに、高速再送アルゴリズムが使用され、失われたセグメント 1 つから TCP が回復される確率が高くなります。このフィールドの値は 有効 です。
Delayed ACK - データ セグメントを受信するたびに ACK セグメントを 1 つ送信する代わりに、NSX Advanced Load Balancer では遅延した ACK を送信することで効率を向上させます。これは TCP 輻輳制御の一部です。RFC に従うと、ACK 遅延のタイムスタンプは 0.5 秒未満です。フル サイズのセグメントのストリームでは、ACK が少なくとも 1 セグメントおきに可能となります。
CLI を使用した MTU の構成
最大転送ユニット (MTU) をグローバル プロパティに構成すると、Controller クラスタによって管理されるすべての SE にわたる MTU が設定されます。デフォルトでは、MTU は DHCP を使用して学習されます。これは CLI によって手動で設定できます。この後に示すコマンドでは、MTU を 1,500 バイトに設定します。MTU をデフォルトから変更する必要がある場合の例を 2 つ示します。
VXLAN などのタイプのオーバーレイ ネットワーク(OpenStack など)を使用する環境にインストールする場合は、トンネル ヘッダーの追加に対応するため、MTU を減らす必要があります。
DHCP オプションで MTU が 9000(ジャンボ)に設定されているが、インフラストラクチャ全体(スイッチとルーター)ではジャンボ MTU をサポートしていない場合。これは AWS 環境で発生することがあります。
configure serviceengineproperties se_runtime_properties global_mtu 1500 Overwriting the previously entered value for global_mtu save save
NSX Advanced Load Balancer SE では最大 1,500 バイトの MTU をサポートします。
TCP 攻撃からの保護
攻撃タイプ |
説明 |
軽減 |
---|---|---|
SYN フラッド |
サービス妨害攻撃の一種で、攻撃者が SYN ACK の確認応答をせずにターゲット システムへ SYN 要求を立て続けに送信するものです。1 回試行されるだけでサーバ リソースを消費するのに十分であり、システムが正当なトラフィックに対しても応答しなくなります。 |
TCP テーブルにハーフオープン接続がある場合、NSX Advanced Load Balancer ではデフォルトで SYN Cookie の送信を開始します。現在、この動作によって特定のクライアントを許可する構成はありません。TCP プロキシをしない TCP 高速パス プロファイルでは、SYN 保護を有効化できます。そうすると、クライアントとの完全 3 ウェイ ハンドシェイクが行われるまで、NSX Advanced Load Balancer ではサーバとの TCP セッションの確立を遅延させます。これでサーバは SYN フラッドやハーフオープン状態から保護されます。 |
LAND 攻撃 |
これは SYN フラッド攻撃のように動作します。相違点は、送信元と宛先の IP アドレスが同一であるため、IP スタックでは同じパケットを何度も繰り返し処理することになり、攻撃対象となったシステムがクラッシュする可能性があります。 |
この攻撃が検出されると、NSX Advanced Load Balancer ではディスパッチャー レイヤーでパケットをドロップします。 |
ポート スキャン |
攻撃者は、さまざまなポートから TCP パケットを送信してポート スキャンを起動し、リスニング ポートを見つけて次のレベルの攻撃対象にします。当該ポートのほとんどは非リスニング ポートです。 |
この攻撃が検出されると、NSX Advanced Load Balancer ではディスパッチャー レイヤーでパケットをドロップします。 |