NetScaler Ingressコントローラー

TCP ユースケース

このトピックでは、NetScaler Ingress Controllerのアノテーションを使用してIngress NetScaler上で構成できるさまざまなTCPユースケースについて説明します。

次の表に、TCP のユースケースとサンプルアノテーションを示します。

使用例 サンプル注釈
アイドル状態の TCP 接続をサイレントにドロップする ingress.citrix.com/frontend-tcpprofile: '{"apache":{"DropHalfClosedConnOnTimeout" : "ENABLE", "DropEstConnOnTimeout":"ENABLE"}}'
遅延 TCP 接続確認応答 ingress.citrix.com/frontend-tcpprofile: '{"apache":{"delayack" : "150"}}'
クライアント側の MPTCP セッション管理 ingress.citrix.com/frontend-tcpprofile: '{"apache":{"mptcp": "ENABLED", "mptcpSessionTimeout":"7200"}}'
TCP最適化 -
なりすまし攻撃に対する TCP の防御 ingress.citrix.com/frontend_tcpprofile: '{"rstwindowattenuate" : "enabled", "spoofSynDrop":"enabled"}

アイドル状態の TCP 接続をサイレントにドロップする

ネットワークでは、多数のTCP接続がアイドル状態になり、Ingress Citrix ADCはRSTパケットを送信して接続を閉じます。チャネルを介して送信されたパケットは、これらのチャネルを不必要にアクティブ化し、大量のメッセージを引き起こし、Ingress NetScaler で大量のサービス拒否メッセージが生成されます。

TCPプロファイルでdrophalfclosedconnontimeoutおよびdropestconnontimeoutパラメータを使用すると、アイドルタイムアウト時に TCP ハーフクローズ接続をサイレントにドロップしたり、アイドルタイムアウト時に TCP で確立された接続をドロップしたりできます。Ingress NetScaler では、これらのパラメーターはデフォルトで無効になっています。両方を有効にすると、接続が半分閉じられていても、接続が確立されても、接続がタイムアウトしたときに RST パケットがクライアントに送信されることはありません。Citrix ADCは接続を切断するだけです。

TCPプロファイルの注釈を使用して、Ingress Citrix ADCでdrophalfclosedconnontimeoutおよびdropestconnontimeoutを有効または無効にできます。これらのパラメータを有効にするための TCP プロファイルの注釈の例を次に示します。

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"drophalfclosedconnontimeout" : "enable", "dropestconnontimeout":"enable"}}'

遅延 TCP 接続確認応答

複数のACKパケットの送信を回避するために、Ingress Citrix ADCはTCP遅延確認応答メカニズムをサポートしています。デフォルトのタイムアウトは 100 ミリ秒で遅延 ACK を送信します。Ingress Citrix ADCは、2つのデータパケットを継続して受信した場合、またはタイマーが期限切れになった場合にのみ、データパケットを蓄積してACKを送信します。TCP で展開された ACK に設定できる最小遅延は 10 ミリ秒、最大遅延は 300 ミリ秒です。デフォルトでは、遅延は 100 ミリ秒に設定されています。

TCP プロファイルの注釈を使用して、遅延 ACK パラメータを管理できます。これらのパラメータを有効にするための TCP プロファイルの注釈の例を次に示します。

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"delayack" : "150"}}'

クライアント側の MPTCP セッション管理

クライアントとイングレス NetScaler 間の MPTCP 接続用に、イングレス NetScaler で TCP 構成を実行します。Citrix ADCとバックエンド通信の間ではMPTCP接続はサポートされていません。クライアントとIngress Citrix ADCアプライアンスの両方が同じ MPTCP バージョンをサポートしている必要があります。

Ingress NetScaler の TCP プロファイルを使用して、MPTCP を有効にし、MPTCP セッションタイムアウト(mptcpsessiontimeout)を秒単位で設定できます。mptcpsessiontimeout値が設定されていない場合、MPTCP セッションはクライアントのアイドルタイムアウト後にフラッシュされます。設定できる最小タイムアウト値は 0 で、最大値は 86400 です。デフォルトでは、タイムアウト値は 0 に設定されています。

TCPプロファイルの注釈を使用して、Ingress Citrix ADCでMPTCPを有効にし、 mptcpsessiontimeout パラメーター値を設定できます。Ingress NetScaler で MPTCP を有効にし、 mptcpsessiontimeout パラメーター値を 7200 に設定するための TCP プロファイルの注釈の例を次に示します。

ingress.citrix.com/frontend-tcpprofile: '{"apache":{"mptcp" : "ENABLED", "mptcpSessionTimeout":"7200"}}'

TCP最適化

Ingress NetScaler 関連するTCP最適化機能のほとんどは、対応するTCPプロファイルを介して公開されます。TCPプロファイルの注釈を使用すると、Ingress Citrix ADCで次のTCP最適化機能を有効にできます。

  • Selective acknowledgment (SACK):TCP SACK は、複数のパケット損失の問題に対処し、全体的なスループットキャパシティを低下させます。選択的確認応答により、受信者は正常に受信されたすべてのセグメントについて送信者に通知することができ、送信者は失われたセグメントのみを再送信できます。この手法は、T1 が全体的なスループットを向上させ、接続遅延を減らすのに役立ちます。

    Ingress Citrix ADCでSACKを有効にするためのTCPプロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"sack" : "enabled"}
    
  • Forward acknowledgment (FACK):ネットワーク内の未処理データバイトの総数を明示的に測定し、送信者(T1 またはクライアント)が再送信タイムアウト時にネットワークに注入されるデータ量を制御できるようにすることで、TCP の輻輳を回避します。

    Ingress NetScaler で FACK を有効にするための TCP プロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"fack" : "enabled"}
    
  • Window Scaling (WS):TCP ウィンドウスケーリングにより、TCP 受信ウィンドウサイズを 65535 バイト以上に増やすことができます。これにより、TCP のパフォーマンスが全体的に向上し、特に高帯域幅で遅延が長いネットワークで改善されます。レイテンシを削減し、TCP での応答時間を改善するのに役立ちます。

    Ingress Citrix ADCでWSを有効にするためのTCPプロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"ws" : "enabled", "wsval" : "9"}
    

    wsvalは新しいウィンドウサイズの計算に使用される係数です。この引数はウィンドウスケーリングが有効な場合にのみ必須です。 設定できる最小値は 0、最大値は 14 です。既定では、この値は 4 に設定されています。

  • Maximum Segment Size (MSS): 単一の TCP セグメントの MSS。この値は、中間ルータとエンドクライアントの MTU 設定によって異なります。1460 の値は MTU が 1500 に相当します。

    Ingress Citrix ADCでMSSを有効にするためのTCPプロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"mss" : "1460", "maxPktPerMss" : "512"}
    

    各項目の意味は次のとおりです:

    • mss は TCP 接続に使用する MSS です。設定できる最小値は 0 で、最大値は 9176 です。
    • maxPktPerMss は、最大セグメントサイズ (MSS) ごとに許可される TCP パケットの最大数です。設定できる最小値は 0 で、最大値は 1460 です。
  • Keep-Alive (KA):定期的な TCP キープアライブ(KA)プローブを送信して、ピアがまだアップ状態であるかどうかを確認します。

    Ingress Citrix ADCでTCPキープアライブ(KA)を有効にするためのTCPプロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"ka" : "enabled", "kaprobeupdatelastactivity":"enabled", "KAconnIdleTime": "900",  "kamaxprobes" : "3",  "kaprobeinterval" : "75"}
    

    各項目の意味は次のとおりです:

    • ka は、定期的な TCP Keep-alive(KA; キープアライブ)プローブの送信を有効にして、ピアがまだアップ状態かどうかをチェックするために使用されます。指定可能な値:有効、無効。デフォルト値:無効。
    • kaprobeupdatelastactivityはキープアライブ (KA) プローブを受信したあと、接続の最後のアクティビティを更新します。 指定可能な値:有効、無効。デフォルト値:有効。
    • KAconnIdleTime は、キープアライブ (KA) プローブを送信する前に接続がアイドル状態になるまでの時間 (秒単位) です。設定できる最小値は 1 で、最大値は 4095 です。
    • kaprobeinterval は、ピアが応答しない場合に、次のキープアライブ(KA)プローブが実行されるまでの内部時間(秒単位)です。設定できる最小値は 1 で、最大値は 4095 です。
  • bufferSize: はTCP バッファサイズをバイト単位で指定します。設定できる最小値は 8190 で、最大値は 20971520 です。デフォルトでは、この値は 8190 に設定されています。

    TCP バッファサイズを指定するための TCP プロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"bufferSize" : "8190"}
    
  • MPTCP: MPTCP を有効にして、オプションの MPTCP 構成を設定します。MPTCP を有効にし、オプションの MPTCP 設定を使用するための TCP プロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"mptcp" : "enabled", "mptcpDropDataOnPreEstSF":"enabled", "mptcpFastOpen": "enabled", "mptcpSessionTimeout":"7200"}
    
  • flavor:TCP 輻輳制御アルゴリズムを設定します。有効な値は、デフォルト、BIC、CUBIC、Westwood、Nile です。既定では、この値は [既定] に設定されています。TCP 輻輳制御アルゴリズムを設定する TCP プロファイルの注釈の例を次に示します。

     ingress.citrix.com/frontend_tcpprofile: '{"flavor" : "westwood"}
    
  • Dynamic receive buffering: 動的受信バッファリングを有効または無効にします。有効にすると、メモリやネットワークの状態に基づいて受信バッファを動的に調整できます。有効な値:有効、無効、デフォルト値:無効。

    注記:

    動的アジャストを実行するには、buffer size 引数を設定する必要があります。

     ingress.citrix.com/frontend_tcpprofile: '{"dynamicReceiveBuffering" : "enabled"}
    

スプーフィング攻撃から TCP を防御

Ingress NetScaler を有効にして、TCP プロファイルのrstWindowAttenuationを使用してスプーフィング攻撃からTCP を防御できます。デフォルトでは、rstWindowAttenuationパラメーターは無効になっています。このパラメーターは、Ingress NetScaler をスプーフィングから保護するために有効になっています。有効にすると、無効なシーケンス番号に対する修正確認応答(ACK)で応答します。有効な値は [有効] または [無効]

Ingress Citrix ADCでrstWindowAttenuationを有効にするTCPプロファイルの注釈の例を次に示します。

ingress.citrix.com/frontend_tcpprofile: '{"rstwindowattenuate" : "enabled", "spoofSynDrop":"enabled"}
TCP ユースケース