ADC

TCP構成

NetScaler ADCアプライアンスのTCP構成は、TCP設定の集合であるTCPプロファイルと呼ばれるエンティティで指定できます。TCP プロファイルは、これらの TCP 設定を使用するサービスまたは仮想サーバに関連付けることができます。

デフォルトの TCP プロファイルを設定して、すべてのサービスおよび仮想サーバにグローバルに適用される TCP 設定を設定できます。

注:

TCP パラメータがサービス、仮想サーバ、およびグローバルに異なる値を持つ場合、最も具体的なエンティティ(サービス)の値が最も優先されます。NetScaler ADCアプライアンスは、TCPを構成するための他のアプローチも提供します。

サポートされる TCP 設定

NetScaler ADCアプライアンスは、次のTCP機能をサポートしています。

RFC 5961に基づくスプーフィング攻撃からのTCPの防御

NetScalerは、TCPをスプーフィング攻撃から保護するためのRSTウィンドウ減衰およびSYNスプーフィング保護方法をサポートしており、RFC 4953に準拠しています。

NetScaler 14.1-4.xリリース以降、NetScalerはTCPスプーフィング攻撃に対する保護を強化するRFC 5961に準拠しています。NetScalerはRFC 5961に準拠しているため、RSTウィンドウ減衰とSYNスプーフィング保護に加えて、次の機能も備えています。

  • 無効なデータインジェクションの可能性を減らします。
  • NetScalerが1秒あたりに送信するチャレンジACK応答の数に制限を課すことができます。

デフォルトでは、RFC 5961 コンプライアンスは無効になっています。CLI または GUI を使用して有効にできます。詳細については、「 スプーフィング攻撃からの TCP の防御」を参照してください。

明示的な輻輳通知(ECN)

アプライアンスは、ネットワークの輻輳ステータスの通知をデータの送信者に送信し、データの輻輳またはデータ破損に対する是正措置を講じます。ECNのNetScaler ADCの実装は、RFC 3168に準拠しています。

タイムスタンプオプションを使用したラウンドトリップ時間測定 (RTTM)

TimeStamp オプションが機能するためには、接続の少なくとも片側(クライアントまたはサーバ)がそれをサポートしている必要があります。TimeStampオプションのNetScaler ADCの実装は、RFC 1323に準拠しています。

不適切な再送信の検出

この検出は、TCP 重複選択確認応答 (D-SACK) とフォワード RTO リカバリ (F-RTO) を使用して実行できます。スプリアス再送信がある場合、輻輳制御設定は元の状態に戻ります。D-SACKのNetScaler ADC 実装はRFC 2883に準拠しており、F-RTOはRFC 5682に準拠しています。

輻輳制御

この機能は、ニューリノ、BIC、CUBIC、Nile、TCP Westwood、および BBR アルゴリズムを使用します。

  • BBR: パケット損失に対応するのではなく、ラウンドトリップ時間 (RTT) と帯域幅を監視して動作します。このアプローチにより、BBRはトラフィックを効果的に規制できるため、スループットと遅延が向上します。
  • BIC: 遅延の大きい高速ネットワーク (長時間のネットワーク) 向けに最適化されています。これらのネットワークでは、使用率が著しく低い帯域幅を修正する点で、BIC は他の輻輳制御アルゴリズムに比べて大きな利点があります。
  • CUBIC: 高遅延時に、ネットワークを介した高帯域幅接続をより迅速かつ確実に実現します。長時間のネットワークを最適化するのに役立ちます。
  • Default/New Reno -輻輳による大量のパケット損失を防ぎ、他のフローとの公平性を維持します。
  • ナイル: NetScalerは、LTE、LTEアドバンス、3Gなどの高速ネットワーク向けにこのTCP最適化アルゴリズムを開発しました。Nileは、フェーディング、ランダムまたは輻輳による損失、リンク層の再送信、およびキャリアアグリゲーションによって生じる特有の課題に対処します。詳細については、「 NILE アルゴリズム」を参照してください。詳細については、「 NILE アルゴリズム」を参照してください。
  • Westwood: TCP Westwood (TCPW) アルゴリズムは、TCP輻輳ウィンドウアルゴリズムを送信側で修正したもので、有線ネットワークとワイヤレスネットワークの両方でパフォーマンスを向上させます。

BBR アルゴリズムの設定:

NetScalerリリース14.1-21.x以降、NetScalerはTCPのボトルネック帯域幅とラウンドトリップ伝播時間(BBR)アルゴリズムをサポートしています。このアルゴリズムを使用すると、NetScalerはネットワークパフォーマンスを向上させ、より効率的なトラフィック管理システムを提供します。

CLI を使用して BBR サポートを設定するには、次のコマンドを実行します:

set ns tcpprofile <tcpprofile> -SACK [enable|disable] -flavor [ BBR| BIC |  CUBIC | Default | Nile | Westwood ]
<!--NeedCopy-->

注:

BBR 輻輳制御アルゴリズムを最適に機能させるには、TCP プロファイルで選択的確認応答(SACK)機能を有効にする必要があります。

例:

set ns tcpprofile <tcpprofilename> -SACK enable -flavor BBR
<!--NeedCopy-->

GUI を使用して BBR サポートを設定するには:

  1. [ システム] > [プロファイル] > [TCP プロファイル ] に移動し、[ 追加] をクリックします。
  2. TCP プロファイルの作成 」ページの「 TCP フレーバー 」フィールドで、「 BBR」を選択します。

ウィンドウスケーリング

これにより、 TCP 受信ウィンドウのサイズが最大値 65,535 バイトを超えて増加します。

ウィンドウスケーリングを構成する前に考慮すべきポイント

  • スケールファクターには高い値を設定しないでください。これは、アプライアンスとネットワークに悪影響を及ぼす可能性があるためです。
  • ウィンドウサイズを変更する理由が明確にわかっていない限り、ウィンドウのスケーリングは構成しません。
  • TCP 接続内の両方のホストは、接続の確立時にウィンドウスケールオプションを送信します。接続の片側のみでこのオプションが設定されている場合、ウィンドウの拡大/縮小は接続に使用されません。
  • 同じセッションの各接続は、独立したウィンドウスケーリングセッションです。たとえば、クライアントの要求とサーバーの応答がアプライアンスを通過する場合、アプライアンスとサーバーの間でウィンドウスケーリングを行わずに、クライアントとアプライアンスの間でウィンドウスケーリングを行うことができます。

TCP 最大輻輳ウィンドウ

ウィンドウサイズは、ユーザーが設定可能なサイズです。デフォルト値は 8190 バイトです。

選択的確認応答 (SACK)

これは、データレシーバー(NetScaler ADCアプライアンスまたはクライアント)を使用して、正常に受信されたすべてのセグメントについて送信者に通知します。

転送確認 (FACK)

この機能により、ネットワーク内の未処理のデータバイトの総数を明示的に測定し、送信者(NetScaler ADCまたはクライアント)が再送信タイムアウト時にネットワークに注入されるデータ量を制御できるようにすることで、TCPの輻輳を回避できます。

TCP 接続多重化

この機能により、既存の TCP 接続の再利用が可能になります。NetScaler ADCアプライアンスは、確立されたTCP接続を再利用プールに保存します。クライアント要求が受信されるたびに、アプライアンスは再使用プール内の使用可能な接続をチェックし、接続が使用可能な場合は新しいクライアントに処理します。使用できない場合、アプライアンスはクライアント要求の接続を作成し、その接続を再利用プールに保存します。NetScaler ADCは、HTTP、SSL、およびDataStream接続タイプの接続多重化をサポートしています。

動的受信バッファリング

これにより、メモリとネットワークの状態に基づいて受信バッファを動的に調整できます。

MPTCP コネクション

クライアントとNetScaler ADC間のMPTCP接続。NetScaler ADCとバックエンドサーバー間では、MPTCP接続はサポートされていません。MPTCPのNetScaler ADC 実装は、RFC 6824に準拠しています。

コマンドラインインターフェイスを使用して、アクティブ MPTCP 接続やアクティブサブフロー接続などの MPTCP 統計情報を表示できます。

コマンドプロンプトで、次のコマンドのいずれかを入力して、MPTCP 統計情報の概要または詳細な概要を表示するか、統計情報の表示をクリアします。

  1. Stat MPTCP
  2. Stat mptcp –detail
  3. Clearstats basic

注:

MPTCP接続を確立するには、クライアントとNetScaler ADCアプライアンスの両方が同じMPTCPバージョンをサポートしている必要があります。NetScaler ADCアプライアンスをサーバーのMPTCPゲートウェイとして使用する場合、サーバーはMPTCPをサポートする必要はありません。クライアントが新しい MPTCP 接続を開始すると、アプライアンスは SYN パケットの MP_CAPABALE オプションからクライアントの MPTPC バージョンを識別します。クライアントのバージョンがアプライアンスでサポートされているバージョンよりも高い場合、アプライアンスは SYN-ACK パケットの MP_CAPABALE オプションで最上位のバージョンを示します。その後、クライアントは下位バージョンにフォールバックし、ACK パケットの MP_CAPABALE オプションでバージョン番号を送信します。そのバージョンがサポート可能な場合、アプライアンスは MPTCP 接続を続行します。それ以外の場合、アプライアンスは通常の TCP にフォールバックします。NetScaler ADCアプライアンスはサブフロー(MP_JOIN)を開始しません。アプライアンスは、クライアントがサブフローを開始することを想定しています。

MPTCP での追加アドレスアドバタイズ (ADD_ADDR) のサポート

MPTCP 展開では、追加の仮想サーバの IP アドレスを持つ IP セットにバインドされた仮想サーバがある場合、追加のアドレスアドバタイズメント(ADD_ADDR)機能によって、IP セットにバインドされた仮想サーバの IP アドレスがアドバタイズされます。クライアントは、アドバタイズされた IPアドレスへの追加のMP-JOINサブフローを開始できます。

MPTCP ADD_ADDR 機能について覚えておくべきポイント

  • ADD_ADDRオプションの一部として最大 10 個の IP アドレスを送信できます。mptcpAdvertise パラメータが有効で 10 個以上の IP アドレスがある場合、10 の IP アドレスをアドバタイズした後、アプライアンスは残りの IP アドレスを無視します。
  • MP-CAPABLE サブフローがプライマリ仮想サーバの IP アドレスではなく、IP セット内のいずれかの IP アドレスに対して行われる場合、仮想サーバのIPアドレスに対してmptcpAdvertiseパラメータが有効になっている場合、仮想サーバの IP アドレスがアドバタイズされます。

CLI を使用して追加の VIP アドレスをアドバタイズするアドレスアドバタイズメント(ADD_ADDR)機能を設定する

IPv4 とIPv6の両方のアドレスタイプに対してMPTCP ADD_ADDR機能を設定できます。一般に、複数の IPv4 および IPv6 IP を単一の IP セットに接続でき、このパラメータは任意の IP アドレスのサブセットで有効にできます。ADD_ADDR 機能では、「mptcapAdvertise」オプションが有効になっている IP アドレスのみがアドバタイズされ、IP セットの残りの IP アドレスは無視されます。 ADD_ADDR機能を設定するには、次の手順を実行します。

  1. IP セットを追加します。
  2. MPTCP アドバタイズを有効にして、タイプ仮想サーバ IP(VIP)の IP アドレスを追加します。
  3. IP アドレスを IP セットにバインドします。
  4. 負荷分散仮想サーバーで IP セットを構成します。

IP セットの追加

コマンドプロンプトで入力します:

add ipset <name> [-td <positive_integer>]
<!--NeedCopy-->

例:

add ipset ipset_1
<!--NeedCopy-->

MPTCP アドバタイズが有効になっているタイプの仮想サーバ IP(VIP)の IP アドレスを追加します

コマンドで次のように入力します。

add ns ip <IPAddress>@ <netmask> [-mptcpAdvertise ( YES | NO )] -type <type>
<!--NeedCopy-->

例:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP

IP アドレスを IP セットにバインドする

コマンドプロンプトで入力します:

bind ipset <name> <IPAddress>
<!--NeedCopy-->

例:

bind ipset ipset_1 10.10.10.10

IP セットを負荷分散仮想サーバーに設定する

コマンドプロンプトで入力します:

set lb vserver <name> [-ipset  <string>]
<!--NeedCopy-->

例:

set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

サンプル構成:

Add ipset ipset_1
add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP
bind ipset ipset_1 10.10.10.10
set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

ADD_ADDR 機能を使用してアドバタイズする外部 IP アドレスを構成する

アドバタイズされたIPアドレスが外部エンティティによって所有され、NetScaler ADCアプライアンスがIPアドレスをアドバタイズする必要がある場合は、「mptcpAdvertise」パラメータをstateおよびARPパラメータを無効にして有効にする必要があります。

外部 IPアドレスをアドバタイズするようにADD_ADDRを設定するには、次の手順を実行します。

  1. MPTCP アドバタイズを有効にして、タイプ仮想サーバ IP(VIP)の IP アドレスを追加します。
  2. IP アドレスを IP セットにバインドします。
  3. IP セットを負荷分散仮想サーバーとバインドする

MPTCP アドバタイズを有効にして、仮想サーバー IP (VIP) タイプの外部 IP アドレスを追加する

コマンドプロンプトで入力します:

add ns ip <IPAddress>@ <External-IP-mask -type VIP> [-mptcpAdvertise ( YES | NO )] -type <type> -state DISABLED -arp DISABLED
<!--NeedCopy-->

例:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP -state DISABLED -arp DISABLED

IP アドレスを IP セットにバインドする

コマンドプロンプトで入力します:

bind ipset <name> <IPAddress>
<!--NeedCopy-->

例:

bind ipset ipset_1 10.10.10.10

IP セットを負荷分散仮想サーバーに設定する

コマンドプロンプトで入力します:

set lb vserver <name> [-ipset  <string>]
<!--NeedCopy-->

例:

set lb vserver lb1 -ipset ipset_1

サンプル構成:

add ns ip 10.10.10.10 255.255.255.255 -mptcpAdvertise YES -type VIP state DISABLED -arp DISABLED
bind ipset ipset_1 10.10.10.10
set lb vserver lb1 -ipset ipset_1
<!--NeedCopy-->

NetScaler GUIを使用して、IPアドレスをMPTCP対応クライアントにアドバタイズする

MPTCP 対応クライアントに IP アドレスをアドバタイズするには、次の手順を実行します。

  1. [ システム] > [ネットワーク] > [IP] に移動します。
  2. 詳細ペインで、[ 追加] をクリックします。
  3. [ IP アドレスの作成 ] ページで、[ MPTCP アドバタイズ ] チェックボックスをオンにしてパラメータを設定します。デフォルトでは、無効になっています。

TCP/IP パスオーバーレイオプションの抽出とクライアント IP HTTP ヘッダーの挿入

TCP/IP パスオーバーレイを抽出し、クライアント IP HTTP ヘッダーを挿入します。オーバーレイネットワークを介したデータ転送では、接続終了または送信元クライアントの IP アドレスが失われるネットワークアドレス変換 (NAT) を使用することがよくあります。これを回避するために、NetScaler ADCアプライアンスはTCP/IPパスオーバーレイオプションを抽出し、ソースクライアントのIPアドレスをHTTPヘッダーに挿入します。ヘッダーに IP アドレスが含まれていると、Web サーバーは接続を確立したソースクライアントを識別できます。抽出されたデータは TCP 接続の存続期間にわたって有効であるため、ネクストホップホストがオプションを再度解釈する必要がなくなります。このオプションは、client-IP 挿入オプションが有効になっている Web サービスに対してのみ適用できます。

TCP セグメンテーションオフロード

TCP セグメンテーションを NIC にオフロードします。オプションを「自動」に設定すると、NIC がサポートされている場合、TCP セグメンテーションは NIC にオフロードされます。

これは、SYN フラッド攻撃に抵抗するために使用されます。クライアントとの TCP SYNCOOKIE ハンドシェイクのメカニズムを有効または無効にできます。SYNCOOKIEを無効にすると、SYNがNetScaler ADCアプライアンスでの攻撃保護を防止します。

MSS の学習により、アプライアンスに設定されているすべての仮想サーバーで MSS ラーニングが有効になります

サポートされている TCP パラメータ

次の表は、TCP パラメータとそのデフォルト値の一覧です。

パラメーター デフォルト値 説明
ウィンドウ管理    
TCP 遅延-ACK タイマー 100 ミリ秒 TCP 遅延 ACK のタイムアウト(ミリ秒単位)。
TCP 最小再送信タイムアウト(RTO)(ミリ秒) 1000ミリ秒 10 ミリ秒単位で指定された最小再送信タイムアウト(ミリ秒単位)(10 で割った場合は整数である必要があります)
キープアライブプローブを開始する前の接続のアイドル時間 900 秒 アイドルタイムアウト時にTCP確立された接続をサイレントにドロップアイドルタイムアウト時に確立した接続
TCP タイムスタンプオプション 無効 タイムスタンプオプションを使用すると、正確な RTT 測定が可能になります。TCP タイムスタンプオプションを有効または無効にします。
マルチパス TCP セッションタイムアウト 0秒 MPTCP セッションタイムアウト(秒単位)。この値が設定されていない場合は、アイドル状態になります。MPTCP セッションは、仮想サーバーのクライアントのアイドルタイムアウト後にフラッシュされます。
アイドルタイムアウト時に半閉じた接続をサイレントにドロップ 0秒 アイドルタイムアウトで TCP ハーフクローズ接続をサイレントにドロップします。
アイドルタイムアウト時に確立された接続をサイレントにドロップする 無効 アイドルタイムアウト時にTCP確立した接続をサイレントにドロップする
メモリ管理    
TCP バッファサイズ
131072 バイト
TCPバッファサイズは、NetScaler 受信バッファサイズです。このバッファサイズは、NetScaler ADCからクライアントとサーバーに通知され、NetScaler ADCにデータを送信する機能を制御します。デフォルトのバッファサイズは131072です。通常、内部サーバーファームと通信する場合はこれを増やしても安全です。バッファーサイズは、NetScalerの実際のアプリケーションレイヤーの影響も受けます。SSL エンドポイントの場合、バッファサイズは 40 K に設定され、圧縮の場合、バッファサイズは 96 K に設定されます。
注: 動的な調整を行うには、バッファサイズ引数を設定する必要があります。
TCP 送信バッファサイズ 131072 バイト TCP 送信バッファサイズ
TCP ダイナミック受信バッファリング 無効 ダイナミック受信バッファリングを有効または無効にします。有効にすると、メモリやネットワークの状態に基づいて受信バッファを動的に調整できます。注: 動的調整を行うには、buffer size 引数を設定する必要があります。
TCP 最大輻輳ウィンドウ (CWND) 524288 バイト TCP 最大輻輳ウィンドウ
ウィンドウのスケーリングステータス 有効に ウィンドウのスケーリングを有効または無効にします。
ウィンドウのスケーリング係数 8 新しいウィンドウサイズの計算に使用される係数。この引数は、ウィンドウのスケーリングが有効になっている場合にのみ必要です。
接続セットアップ    
キープアライブプローブ 無効 定期的な TCP キープアライブ(KA)プローブを送信して、ピアがまだアップしているかどうかを確認します。
キープアライブプローブを開始する前の接続のアイドル時間 900 秒 キープアライブ(KA)プローブを送信する前の接続がアイドル状態になるまでの時間(秒)。
キープアライブプローブ間隔 75秒 ピアが応答しない場合、次のキープアライブ(KA)プローブの前の時間間隔(秒)。
接続をドロップする前に逃すキープアライブプローブの最大数。 3 ピアがダウンしていると仮定する前に、確認応答がないときに送信されるキープアライブ(KA)プローブの数。
RFC 5961 コンプライアンス 無効 なりすましから保護するには、RFC 5961 コンプライアンスを有効にします。有効にすると、RSTウィンドウ減衰とSYNスプーフィング保護の両方が可能になり、NetScalerが送信するチャレンジACKの数を制御することもできます。RFC 5961 準拠機能を動作させるには、RST ウィンドウ減衰と SYN スプーフィング保護の両方を無効にする必要があることに注意してください。
RSTウィンドウ減衰 (なりすまし保護)。 無効 スプーフィングから保護するために、RST ウィンドウ減衰を有効または無効にします。有効にすると、シーケンス番号が無効の場合、応答は是正 ACK となります。
最後に確認応答されたシーケンス番号で RST を受け入れます。 有効  
データ転送    
PUSH パケットの即時ACK 有効 PUSH フラグを使用して TCP パケットの受信時に即時肯定応答(ACK)を送信します。
MSS あたりの最大パケット数 0 TCP データセグメントで許可するオクテットの最大数
ナーグルのアルゴリズム 無効 Nagleのアルゴリズムは、TCP伝送における小さなパケットの問題と戦っています。Telnet などのリアルタイムエンジンなどのアプリケーションは、すべてのキーストロークを反対側に渡す必要があるため、小さなパケットを作成することがよくあります。Nagle のアルゴリズムで NetScaler は、このような小さなパケットをバッファリングし、接続効率を高めるために一緒に送信することができます。このアルゴリズムは、NetScaler 他のTCP最適化手法と一緒に機能する必要があります。
バーストで許可される TCP セグメントの最大数 10 MSS バーストで許可される TCP セグメントの最大数
キューに入れる順序外パケットの最大数 300 順不同パケットキューの最大サイズ。値 0 は制限がないことを意味します。
輻輳制御    
TCP フレーバー キュービック  
初期輻輳ウィンドウ (cwnd) 設定 4 MSS サーバへの TCP リンクで未処理になることができる TCP パケット数の初期の上限
TCP 明示的輻輳通知 (ECN) 無効 明示的な輻輳通知(ECN)は、パケットをドロップすることなく、ネットワーク輻輳のエンドツーエンド通知を提供します。
TCP 最大輻輳ウィンドウ (CWND) 524288 バイト TCP は輻輳ウィンドウ(CWND)を維持し、エンドツーエンドで送信される可能性のある未確認パケットの総数を制限します。TCP では、輻輳ウィンドウは、いつでも未処理になる可能性のあるバイト数を決定する要素の 1 つです。輻輳ウィンドウは、送信者と受信者の間のリンクが多すぎるトラフィックで過負荷にならないようにする手段です。これは、リンク上に存在する輻輳の量を推定することによって計算されます。
TCP ハイブリッドスタート (HyStart) 8 バイト  
TCP 最小再送信タイムアウト(RTO)(ミリ秒) 1000 最小再送信タイムアウト(ミリ秒単位)。10 ミリ秒単位で指定します(10 で割った場合は、値が整数になる必要があります)。
TCP デュパックのしきい値 無効  
バーストレート制御 3 TCP バーストレート制御無効/固定/ダイナミック。FIXED には TCP レートを設定する必要があります
TCP レート 無効 TCP 接続ペイロード送信レート(KB/秒)
TCP レート最大キュー 0 BurstrateControl が使用されている場合の最大接続キューサイズ(バイト単位)。
MPTCP    
マルチパス TCP 無効 Multipath TCP(MPTCP)は、マルチパス TCP サービスを提供するための通常の TCP に対する拡張のセットです。これにより、トランスポート接続を複数のパスで同時に動作させることができます。
事前に確立されたサブフロー上のマルチパス TCP ドロップデータ 無効 事前確立されたサブフローにデータをサイレントドロップするのを有効または無効にします。有効の場合、DSS データパケットは、事前に確立されたサブフローでデータが受信されたときに、接続をドロップするのではなく、サイレントにドロップされます。
マルチパス TCP ファストオープン 無効 マルチパス TCP ファストオープンを有効または無効にします。有効の場合、DSS データパケットは SYN ハンドシェイクの 3 番目のACKを受信する前に受け入れられます。
マルチパス TCP セッションタイムアウト 0秒 MPTCP セッションタイムアウト(秒単位)。この値が設定されていない場合、仮想サーバーのクライアントのアイドルタイムアウト後にアイドル状態の MPTCP セッションがフラッシュされます。
セキュリティ    
SYN スプーフィング保護 無効 スプーフィングから保護するために、無効な SYN パケットのドロップを有効または無効にします。無効にすると、SYN パケットが受信されたときに確立された接続がリセットされます。
TCP Syncookie 無効 これは、SYN フラッド攻撃に抵抗するために使用されます。クライアントとの TCP ハンドシェイクの SYNCOOKIE メカニズムを有効または無効にします。SYNCOOKIEを無効にすると、NetScaler ADCアプライアンスでのSYN攻撃保護が防止されます。
損失検出とリカバリ    
重複選択的謝辞 (DSACK) 有効 NetScaler ADCアプライアンスは、重複選択確認(DSACK)を使用して、再送信がエラーで送信されたかどうかを判断します。
フォワードRTO リカバリ (FRTO) 有効 スプリアス TCP 再送信タイムアウトを検出します。タイムアウトによってトリガーされた最初の未確認のセグメントを再送信した後、TCP 送信者のアルゴリズムは、着信確認を監視して、タイムアウトがスプリアスであるかどうかを判断します。次に、新しいセグメントを送信するか、未確認のセグメントを再送信するかを決定します。このアルゴリズムは、別の不要な再送信を効果的に回避するのに役立ち、スプリアスタイムアウトの場合の TCP パフォーマンスが向上します。
TCP 転送確認応答 (FACK) 有効 FACK(フォワード ACK)を有効または無効にします。
選択的確認応答 (SACK) ステータス 有効 TCP SACKは、全体的なスループット容量を低下させる複数のパケット損失の問題に対処します。選択的確認応答を使用すると、受信者は正常に受信されたすべてのセグメントについて送信者に通知できるため、送信者は失われたセグメントのみを再送信できるようになります。この手法は、NetScaler ADCが全体的なスループットを向上させ、接続待ち時間を短縮するのに役立ちます。
再送信あたりの最大パケット数 1 NetScaler ADCが、1回の試行で再送信するパケット数を制御できるようにします。NetScaler ADCが部分的なACKを受信し、再送信を行う必要がある場合、この設定が考慮されます。これは RTO ベースの再送信には影響しません。
TCP 遅延-ACK タイマー 100 ミリ秒 TCP 遅延 ACK のタイムアウト(ミリ秒単位)
TCO 最適化    
TCP 最適化モード トランスペアレント TCP 最適化モードトランスペアレント/エンドポイント
適応型 TCP 最適化の適用 無効 アダプティブ TCP 最適化の適用
TCP セグメンテーションオフロード 自動 TCP セグメンテーションを NIC にオフロードします。AUTOMATIC に設定すると、NIC がサポートしている場合、TCP セグメンテーションは NIC にオフロードされます。
ACK集約 無効 ACK 集約を有効または無効にする
TCP タイム待機 (または time_Wait) 40秒 閉じた TCP 接続を解放するまでの経過時間
RST 上のクライアントとサーバーのリンクを解消する 無効 相手側に送信する未処理のデータがある場合は、クライアントとサーバーの接続をリンク解除します。

注:

HTTP/2が有効な場合、CitrixではTCPプロファイルのTCP動的受信バッファリングパラメータを無効にすることを推奨します。

グローバル TCP パラメータの設定

NetScaler ADCアプライアンスでは、すべてのNetScaler ADCサービスと仮想サーバーに適用されるTCPパラメータの値を指定できます。これは、以下を使用して実行できます。

  • デフォルトの TCP プロファイル
  • グローバル TCP コマンド
  • TCP バッファリング機能

メモ:

  • set ns tcppParamコマンドのrecvBuffSizeパラメータは、リリース 9.2 以降から廃止されました。以降のリリースでは、set ns tcpProfileコマンドのbufferSizeパラメータを使用してバッファサイズを設定します。recvBuffSizeパラメータが廃止されるリリースにアップグレードすると、bufferSizeパラメータはデフォルト値に設定されます。

  • TCP プロファイルを設定する際は、TCP buffersizeパラメータがhttppipelinebuffersizeパラメータと同じかそれ以下であることを確認してください。 TCPプロファイルのbuffersizeパラメーターが HTTP プロファイルのhttppipelinebuffersizeパラメーターよりも大きい場合、TCP ペイロードが蓄積され、HTTP パイプラインのバッファーサイズを超える可能性があります。その結果、NetScaler ADCアプライアンスはTCP接続をリセットします。

デフォルトの TCP プロファイル

nstcp_default_profileというTCP プロファイルは、サービスレベルまたは仮想サーバレベルで TCP 設定が提供されない場合に使用される TCP 設定を指定するために使用されます。

メモ:

  • すべての TCP パラメータをデフォルトの TCP プロファイルで設定できるわけではありません。一部の設定は、グローバル TCP コマンドを使用して実行する必要があります (以下のセクションを参照)。

  • デフォルトプロファイルは、サービスまたは仮想サーバーに明示的にバインドする必要はありません。

デフォルトの TCP プロファイルを設定するには

  • コマンド・ライン・インタフェースを使用して、コマンド・プロンプトに次のように入力します。

     set ns tcpProfile nstcp_default_profile...
     <!--NeedCopy-->
    
  • GUI で、[システム] > [プロファイル] に移動し、[TCP プロファイル] をクリックして、nstcp_default_profile を更新します。

グローバル TCP コマンド

グローバル TCP パラメータを設定するために使用できるもう 1 つの方法は、global TCP コマンドです。このコマンドでは、一意のパラメータに加えて、TCP プロファイルを使用して設定できるいくつかのパラメータが複製されます。これらの重複パラメータに対する更新は、デフォルトの TCP プロファイルの対応するパラメータに反映されます。

たとえば、この方法を使用して SACK パラメータを更新すると、デフォルトの TCP プロファイル(nstcp_default_profile)の SACK パラメータにその値が反映されます。

注:

このアプローチは、デフォルトのTCPプロファイルで使用できないTCPパラメータにのみ使用することをお勧めします。

グローバル TCP コマンドを設定するには

  • コマンド・ライン・インタフェースを使用して、コマンド・プロンプトに次のように入力します。

     set ns tcpParam …
     <!--NeedCopy-->
    
  • GUI で、[ システム] > [設定] に移動し、[ TCP パラメータの変更 ] をクリックし、必要な TCP パラメータを更新します。

TCP バッファリング機能

NetScaler ADCは、TCPバッファサイズを指定するために使用できる、TCPバッファリングと呼ばれる機能を提供します。この機能は、グローバルに有効にすることも、サービスレベルで有効にすることもできます。

注:

バッファサイズは、デフォルトのTCPプロファイルで設定することもできます。TCP バッファリング機能とデフォルトの TCP プロファイルでバッファサイズの値が異なる場合は、大きい値が適用されます。

TCP バッファリング機能をグローバルに構成する

  • コマンドプロンプトで、次のように入力します。

    enable ns mode TCPB

    set ns tcpbufParam -size <positiveInteger> -memLimit <positiveInteger>

  • GUI で、[ システム ] > [ 設定] に移動し、[ モードの設定 ] をクリックし、[ TCP バッファリング] を選択します。

    そして、[ システム ] > [ 設定] に移動し、[ TCP パラメータの変更] をクリックし、[ バッファサイズ ] と [ メモリ使用制限] の値を指定します。

サービスまたは仮想サーバ固有の TCP パラメータの設定

TCP プロファイルを使用して、サービスおよび仮想サーバの TCP パラメータを指定できます。TCP プロファイルを定義し(または組み込みの TCP プロファイルを使用して)、プロファイルを適切なサービスおよび仮想サーバに関連付ける必要があります。

注:

要件に従って、デフォルトプロファイルの TCP パラメータを変更することもできます。

TCP バッファリング機能で指定されたパラメータを使用して、サービスレベルで TCP バッファサイズを指定できます。

コマンドラインインターフェイスを使用してサービスレベルまたは仮想サーバーレベルの TCP 構成を指定するには

コマンドプロンプトで、次の操作を実行します。

  1. TCP プロファイルを設定します。

    set ns tcpProfile <profile-name>...
    <!--NeedCopy-->
    
  2. TCP プロファイルをサービスまたは仮想サーバーにバインドします。

   set service <name> ....
   <!--NeedCopy-->

例:

> set service service1 -tcpProfileName profile1

TCP プロファイルを仮想サーバにバインドするには、次の手順を実行します。

set lb vserver <name> ....
<!--NeedCopy-->

> set lb vserver lbvserver1 -tcpProfileName profile1
<!--NeedCopy-->

GUI を使用してサービスレベルまたは仮想サーバレベルの TCP 構成を指定するには

GUI で、次の手順を実行します。

  1. TCP プロファイルを設定します。

    [ システム ] > [ プロファイル ] > [ TCP プロファイル] に移動し、TCP プロファイルを作成します。

  2. TCP プロファイルをサービスまたは仮想サーバーにバインドします。

    [ トラフィック管理 ] > [ 負荷分散 ] > [ サービス/仮想サーバー] に移動し、サービスまたは仮想サーバーにバインドする TCP プロファイルを作成します。

組み込み TCP プロファイル

構成の便宜上、NetScaler ADCにはTCPプロファイルがいくつか組み込まれています。次の組み込みプロファイルを確認し、プロファイルを選択してそのまま使用するか、要件に合わせて変更します。これらのプロファイルを、必要なサービスまたは仮想サーバーにバインドできます。

組み込みのプロファイル 説明
nstcp_default_profile アプライアンスのデフォルトのグローバル TCP 設定を表します。
nstcp_default_tcp_lan バックエンドサーバー接続で、これらのサーバーがアプライアンスと同じ LAN 上に存在する場合に役立ちます。
nstcp_default_WAN WAN 展開に便利です。
nstcp_default_tcp_lan_thin_stream nstcp_default_tcp_lan プロファイルに似ています。ただし、設定は小さなサイズのパケットフローに調整されます。
nstcp_default_tcp_interactive_stream nstcp_default_tcp_lan プロファイルに似ています。ただし、遅延 ACK タイマーと ACK ON PUSH パケットの設定が減少します
nstcp_default_tcp_lfp クライアント側の長太パイプネットワーク (WAN) に便利です。長いファットパイプネットワークには、遅延が長く、パケットドロップが最小限に抑えられ、帯域幅の回線が長くなります。
nstcp_default_tcp_lfp_thin_stream nstcp_default_tcp_lfp プロファイルに似ています。ただし、この設定は小さいサイズのパケットフローに合わせて調整されます。
nstcp_default_tcp_lnp クライアント側の細長いパイプネットワーク (WAN) に便利です。細長いパイプネットワークでは、かなりのパケット損失が発生することがあります。
nstcp_default_tcp_lnp_thin_stream nstcp_default_tcp_lnp プロファイルに似ています。ただし、この設定は小さいサイズのパケットフローに合わせて調整されます。
nstcp_internal_apps アプライアンス上の内部アプリケーション(GSLB サイトの同期など)に便利です。これには、目的のアプリケーションに合わせて調整されたウィンドウスケーリングと SACK オプションが含まれています。このプロファイルは、内部アプリケーション以外のアプリケーションにバインドしないでください。
nstcp_default_mobile_profile モバイルデバイスに便利です。
nstcp_default_XA_XD_profile Citrix Virtual Apps and Desktopsの展開に役立ちます。

TCP 設定の例

次の設定に使用するコマンドラインインターフェイスの例の例。

なりすまし攻撃に対する TCP の防御

RFC 5961 コンプライアンスサポート以前のバージョン

CLI を使用して RST ウィンドウ減衰と SYN スプーフィング保護を有効にするには:

> set ns tcpProfile profile1 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED
    Done
 > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

GUI を使用して RST ウィンドウ減衰と SYN スプーフィング保護を有効にするには:

  1. [ システム] > [プロファイル] > [TCP プロファイル] に移動し、[ 追加 ] をクリックして TCP プロファイルを作成します。
  2. RST ウィンドウ減衰とSYNスプーフィング保護を選択します。
  3. [作成] をクリックします。

RFC 5961コンプライアンスをサポートするNetScalerリリース14.1-4.x以降

CLI を使用して RFC 5961 コンプライアンスを有効にするには:

> set ns tcpProfile profile1 -rstWindowAttenuate DISABLED -spoofSynDrop DISABLED -rfc5961Compliance ENABLED
    Done
> set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

1 秒あたりに許可されるチャレンジ ACK の数に制限を課すには、 以下のrfc5961ChallengeAckLimitパラメーターを有効にします。

> set ns tcpParam -rfc5961ChlgAckLimit 100
 Done
<!--NeedCopy-->

GUI を使用して RFC 5961 コンプライアンスを有効にするには:

  1. [ システム] > [プロファイル] > [TCP プロファイル] に移動し、[ 追加 ] をクリックして TCP プロファイルを作成します。
  2. RST ウィンドウ減衰とSYNスプーフ保護をクリアします。
  3. [ **RFC5961 コンプライアンス ] を選択し、[作成] をクリックします。**
  4. [ システム] > [設定] > [TCP パラメータの変更] に移動します。
  5. RFC5961 クロッグラック制限に値を入力し、「OK」をクリックします。

明示的な輻輳通知(ECN)

必要な TCP プロファイルで ECN を有効にします。

    > set ns tcpProfile profile1 -ECN ENABLED
    Done
    > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

選択的謝辞 (SACK)

必要な TCP プロファイルで SACK を有効にします。

    > set ns tcpProfile profile1 -SACK ENABLED
    Done
    > set lb vserver lbvserver1 -tcpProfileName profile1
    Done
<!--NeedCopy-->

転送確認応答 (FACK)

必要な TCP プロファイルで FACK を有効にします。

> set ns tcpProfile profile1 -FACK ENABLED
> set lb vserver lbvserver1 -tcpProfileName profile1
<!--NeedCopy-->

ウィンドウスケーリング (WS)

ウィンドウスケーリングを有効にし、必要な TCP プロファイルでウィンドウのスケーリング係数を設定します。

set ns tcpProfile profile1 –WS ENABLED –WSVal 9
Done
set lb vserver lbvserver1 -tcpProfileName profile1
Done
<!--NeedCopy-->

最大セグメントサイズ (MSS)

MSS 関連の設定を更新します。

> set ns tcpProfile profile1 –mss 1460 - maxPktPerMss 512
Done
> set lb vserver lbvserver1 -tcpProfileName profile1
Done
<!--NeedCopy-->

NetScaler で仮想サーバーのMSSを学習する

NetScaler ADCがVSSを学習し、その他の関連構成を更新できるようにします。

> set ns tcpParam -learnVsvrMSS ENABLED –mssLearnInterval 180 -mssLearnDelay 3600
Done
<!--NeedCopy-->

TCP キープアライブ

TCP キープアライブを有効にし、その他の関連設定を更新します。

> set ns tcpProfile profile1 –KA ENABLED –KaprobeUpdateLastactivity ENABLED -KAconnIdleTime 900 -KAmaxProbes 3 -KaprobeInterval 75 Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

バッファサイズ-TCP プロファイルの使用

バッファサイズを指定します。

> set ns tcpProfile profile1 –bufferSize 8190 Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

バッファサイズ-TCP バッファリング機能を使用

TCP バッファリング機能(グローバルまたはサービス)を有効にし、バッファサイズとメモリ制限を指定します。

> enable ns feature TCPB Done > set ns tcpbufParam -size 64 -memLimit 64 Done

MPTCP

MPTCP を有効にし、オプションの MPTCP 設定を設定します。

> set ns tcpProfile profile1 -mptcp ENABLED Done > set ns tcpProfile profile1 -mptcpDropDataOnPreEstSF ENABLED -mptcpFastOpen ENABLED -mptcpSessionTimeout 7200 Done > set ns tcpparam -mptcpConCloseOnPassiveSF ENABLED -mptcpChecksum ENABLED -mptcpSFtimeout 0 -mptcpSFReplaceTimeout 10 -mptcpMaxSF 4 -mptcpMaxPendingSF 4 -mptcpPendingJoinThreshold 0 -mptcpRTOsToSwitchSF 2 -mptcpUseBackupOnDSS ENABLED Done

輻輳制御

必要な TCP 輻輳制御アルゴリズムを設定します。

set ns tcpProfile profile1 -flavor Westwood Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

動的受信バッファリング

必要な TCP プロファイルでダイナミック受信バッファリングを有効にします。

> set ns tcpProfile profile1 -dynamicReceiveBuffering ENABLED Done > set lb vserver lbvserver1 -tcpProfileName profile1 Done

マルチパス TCP (MPTCP) での TCP ファストオープン (TFO) のサポート

NetScaler ADCアプライアンスは、マルチパスTCP(MPTCP)接続を確立し、データ転送を高速化するためのTCP高速オープン(TFO)メカニズムをサポートするようになりました。このメカニズムにより、SYN および SYN-ACK パケットでの初期 MPTCP 接続ハンドシェイク中にサブフローデータを伝送できます。また、MPTCP 接続の確立中に受信ノードによってデータが消費されることも可能になります。

詳細については、「 TCP 高速オープン 」のトピックを参照してください。

MPTCP の可変 TFO クッキーサイズのサポート

NetScaler ADCアプライアンスでは、TCPプロファイルで最小サイズが4バイト、最大サイズが16バイトの可変長TCPファストオープン(TFO)Cookieを構成できるようになりました。これにより、アプライアンスは SYN-ACK パケットで設定された TFO cookie サイズでクライアントに応答できます。

コマンドラインインターフェイスを使用して TCP プロファイルで TCP Fast Open(TFO)Cookie を設定するには

コマンドプロンプトで入力します:

set tcpProfile nstcp_default_profile -tcpFastOpenCookieSize <positive_integer>

set tcpProfile nstcp_default_profile -tcpFastOpenCookieSize 8

GUI を使用して TCP プロファイルで TCP ファストオープン(TFO)クッキーを設定するには

  1. [設定] > [システム] > [プロファイル] に移動します。
  2. 詳細ペインで、[ TCP プロファイル ] タブに移動し、TCP プロファイルを選択します。
  3. [ TCP プロファイルの設定 ] ページで、[ TCP 高速オープン Cookie サイズ] を設定します。
  4. [OK] をクリックし、[完了] をクリックします。

TCPSyncookieパラメータは、SYN 攻撃に対する堅牢な(RFC 4987)ベースの保護を提供するために、TCP プロファイルでデフォルトで有効になっています。この保護と互換性がないカスタム TCP クライアントに対応する必要があるが、攻撃の場合にフォールバックを確保したい場合、synAttackDetectionは、autosyncookietimeoutパラメータで指定された期間、内部的にSYNCookie動作を自動的にアクティブ化することによってこれを処理します。

コマンドラインインターフェイスを使用して SYN ACK 再送信の最大しきい値を設定するには、次の手順を実行します。

コマンドプロンプトで入力します:

    set ns tcpparam [-maxSynAckRetx <positive_integer>]

    Set ns tcpparam [-maxSynAckRetx 150]
<!--NeedCopy-->

コマンドラインインターフェイスを使用して自動 SYN Cookie タイムアウト間隔を設定するには

コマンドプロンプトで入力します:

set ns tcpparam [-autosyncookietimeout <positive_integer>]

Set ns tcpparam [-autosyncookietimeout 90]

ISN 生成機能の強化

このパラメーターを有効にすると、TCP接続の確立中にNetScalerによって生成される初期シーケンス番号(ISN)の変動が大きくなります。このシナリオは、NetScalerがサーバーとして機能するTCP接続にのみ適用されます。デフォルトでは、このパラメーターは無効になっています。

CLI を使用して拡張 ISN 生成を有効にするには、次のコマンドを実行します:

set ns tcpparam -enhancedISNgeneration [ENABLED | DISABLED]
<!--NeedCopy-->

例:

set ns tcpparam -enhancedISNgeneration ENABLED
<!--NeedCopy-->

GUI を使用して拡張 ISN 生成を有効にするには:

  1. [ 構成]-> [システム]-> [設定]-> [TCP パラメーターの変更]に移動します。

  2. TCP パラメータの設定 」ページで、「 拡張 ISN 生成」を選択します。

  3. [OK] をクリックします。

クライアントとサーバーの接続をリンク解除する

有効にすると、相手側に送信する未処理のデータがある場合、このパラメータはクライアントとサーバーの接続を切断します。デフォルトでは、このパラメーターは無効になっています。

set ns tcpparam -delinkClientServerOnRST ENABLED
Done
<!--NeedCopy-->

スロースタートしきい値パラメータを構成する

スロースタートしきい値slowStartthresholdパラメーターを使用して、 輻輳制御アルゴリズムのNileバリアントのtcp-slowstartthreshold値を構成できます。パラメータに使用できる値は、min = 8190max = 524288です。デフォルトの値は524288です。TCPプロファイルの下のTCPバリアントNileは、maxcwndパラメータに依存しなくなりました。NileバリアントのslowStartthresholdパラメータを設定する必要があります。

コマンドプロンプトで次のように入力します:

set tcpprofile nstcp_default_profile -slowstartthreshold 8190
Done

<!--NeedCopy-->
TCP構成

この記事の概要