Citrix ADC

TCP 構成

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

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

注:

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

サポートされる TCP 設定

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

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

Citrix ADCによるウィンドウ減衰の実装は 、RFC 4953に準拠しています。

明示的な輻輳通知(ECN)

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

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

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

不適切な再送信の検出

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

輻輳制御

この機能は、New-Reno、BIC、CUBIC、Nile、TCP ウエストウッドのアルゴリズムを使用します。

ウィンドウスケーリング

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

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

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

TCP 最大輻輳ウィンドウ

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

選択的確認応答 (SACK)

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

転送確認 (FACK)

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

TCP 接続多重化

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

動的受信バッファリング

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

マルチパス TCP 接続

クライアントとCitrix ADCアプライアンス間のマルチパスTCP(MPTCP)接続。Citrix ADCアプライアンスとバックエンドサーバー間では、MPTCP接続はサポートされていません。MPTCPのCitrix ADC実装は、RFC 6824およびRFC 8684に準拠しており、MPTCPバージョン0と1の両方をサポートしています。

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

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

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

注:

MPTCP接続を確立するには、クライアントとCitrix ADCアプライアンスの両方が同じMPTCPバージョンをサポートしている必要があります。Citrix ADCアプライアンスをサーバーのMPTCPゲートウェイとして使用する場合、サーバーはMPTCPをサポートする必要はありません。クライアントが新しい MPTCP 接続を開始すると、アプライアンスは SYN パケットの MP_CAPABALE オプションからクライアントの MPTPC バージョンを識別します。クライアントのバージョンがアプライアンスでサポートされているバージョンよりも高い場合、アプライアンスは SYN-ACK パケットの MP_CAPABALE オプションで最上位のバージョンを示します。その後、クライアントは下位バージョンにフォールバックし、ACK パケットの MP_CAPABALE オプションでバージョン番号を送信します。そのバージョンがサポート可能な場合、アプライアンスは MPTCP 接続を続行します。それ以外の場合、アプライアンスは通常の TCP にフォールバックします。Citrix 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 を使用して、追加アドレスアドバタイズメント(ADD_ADDR)機能を設定し、より多くの VIP アドレスをアドバタイズする

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アドレスが外部エンティティによって所有されており、Citrix ADCアプライアンスがIPアドレスをアドバタイズする必要がある場合は、「mptcpAdvertise」パラメータを有効にして、状態パラメータと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-->

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

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

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

MPTCP クライアントに IP アドレスをアドバタイズする GUI 手順

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

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

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

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

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

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

サポート可能な TCP パラメータ

次の表に、Citrix ADCアプライアンスで構成された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バッファサイズは、Citrix ADC 受信バッファサイズです。このバッファサイズは、Citrix ADCからクライアントとサーバーに通知され、Citrix ADCにデータを送信する機能を制御します。デフォルトのバッファサイズは 8K で、通常、内部サーバファームと通信するときにこの値を増やしても安全です。バッファサイズは、SSLエンドポイントの場合は40 Kに設定され、圧縮の場合は96 Kに設定されるなど、Citrix ADC 実際のアプリケーション層の影響を受けます。 注: 動的調整を行うには、バッファサイズ引数を設定する必要があります。
TCP 送信バッファサイズ 8190 バイト TCP 送信バッファサイズ
TCP ダイナミック受信バッファリング 無効 ダイナミック受信バッファリングを有効または無効にします。有効にすると、メモリやネットワークの状態に基づいて受信バッファを動的に調整できます。注: 動的調整を行うには、buffer size 引数を設定する必要があります。
TCP 最大輻輳ウィンドウ (CWND) 524288 バイト TCP 最大輻輳ウィンドウ
ウィンドウのスケーリングステータス 有効に ウィンドウのスケーリングを有効または無効にします。
ウィンドウのスケーリング係数 8 新しいウィンドウサイズの計算に使用される係数。この引数は、ウィンドウのスケーリングが有効になっている場合にのみ必要です。
接続セットアップ    
キープアライブプローブ 無効 定期的な TCP キープアライブ(KA)プローブを送信して、ピアがまだアップしているかどうかを確認します。
キープアライブプローブを開始する前の接続のアイドル時間 900 秒 キープアライブ(KA)プローブを送信する前の接続がアイドル状態になるまでの時間(秒)。
キープアライブプローブ間隔 75秒 ピアが応答しない場合、次のキープアライブ(KA)プローブの前の時間間隔(秒)。
接続をドロップする前に逃すキープアライブプローブの最大数。 3 ピアがダウンしていると仮定する前に、確認応答がないときに送信されるキープアライブ(KA)プローブの数。
RSTウィンドウ減衰 (なりすまし保護)。 無効 スプーフィングから保護するために、RST ウィンドウ減衰を有効または無効にします。有効にすると、シーケンス番号が無効の場合、応答は是正 ACK となります。
最後に確認応答されたシーケンス番号で RST を受け入れます。 有効  
データ転送    
PUSH パケットの即時ACK 有効 PUSH フラグを使用して TCP パケットの受信時に即時肯定応答(ACK)を送信します。
MSS あたりの最大パケット数 0 TCP データセグメントで許可するオクテットの最大数
ナーグルのアルゴリズム 無効 Nagleのアルゴリズムは、TCP伝送のパケットが小さいという問題に対処します。Telnet などのリアルタイムエンジンなどのアプリケーションは、すべてのキーストロークを反対側に渡す必要があるため、小さなパケットを作成することがよくあります。Nagle のアルゴリズムで Citrix ADC は、このような小さなパケットをバッファリングし、接続効率を高めるために一緒に送信することができます。このアルゴリズムは、Citrix ADC 他の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 セッションがフラッシュされます。
Security    
SYN スプーフィング保護 無効 スプーフィングから保護するために、無効な SYN パケットのドロップを有効または無効にします。無効にすると、SYN パケットが受信されたときに確立された接続がリセットされます。
TCP Syncookie 無効 これは、SYN フラッド攻撃に抵抗するために使用されます。クライアントとの TCP ハンドシェイクの SYNCOOKIE メカニズムを有効または無効にします。SYNCOOKIEを無効にすると、Citrix ADCアプライアンスでのSYN攻撃保護が防止されます。
損失検出とリカバリ    
重複選択的謝辞 (DSACK) 有効 Citrix ADCアプライアンスは、重複選択確認(DSACK)を使用して、再送信がエラーで送信されたかどうかを判断します。
フォワードRTO リカバリ (FRTO) 有効 スプリアス TCP 再送信タイムアウトを検出します。タイムアウトによってトリガーされた最初の未確認のセグメントを再送信した後、TCP 送信者のアルゴリズムは、着信確認を監視して、タイムアウトがスプリアスであるかどうかを判断します。次に、新しいセグメントを送信するか、未確認のセグメントを再送信するかを決定します。このアルゴリズムは、別の不要な再送信を効果的に回避するのに役立ち、スプリアスタイムアウトの場合の TCP パフォーマンスが向上します。
TCP 転送確認応答 (FACK) 有効 FACK(フォワード ACK)を有効または無効にします。
選択的確認応答 (SACK) ステータス 有効 TCP SACKは、全体的なスループット容量を低下させる複数のパケット損失の問題に対処します。選択的確認応答を使用すると、受信者は正常に受信されたすべてのセグメントについて送信者に通知できるため、送信者は失われたセグメントのみを再送信できるようになります。この手法は、Citrix ADCが全体的なスループットを向上させ、接続待ち時間を短縮するのに役立ちます。
再送信あたりの最大パケット数 1 Citrix ADCが、1回の試行で再送信するパケット数を制御できるようにします。Citrix 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 上のクライアントとサーバーのリンクを解消する 無効 相手側に送信する未処理のデータがある場合は、クライアントとサーバーの接続をリンク解除します。

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

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

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

注意:

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

デフォルトの 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 バッファリング機能

Citrix 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 プロファイル

構成の便宜上、Citrix 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_xd_profile Citrix Virtual Apps and Desktopsの展開に役立ちます。

TCP 設定の例

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

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

Citrix ADCがなりすまし攻撃からTCPを防御できるようにします。デフォルトでは、「rstWindowWattenuation」パラメータは無効になっています。このパラメータは、スプーフィングからアプライアンスを保護するために有効になっています。有効にすると、無効なシーケンス番号に対する修正確認応答(ACK)で応答します。有効な値は、[有効]、[無効] です。

ここで、 RST window attenuate パラメータは、スプーフィングからアプライアンスを保護します。有効にすると、シーケンス番号が無効な場合に是正 ACK で返信します。

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

明示的な輻輳通知(ECN)

Enable ECN on the required TCP profile

    > 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-->

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

Citrix 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) のサポート

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

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

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

Citrix 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]

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

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

set ns tcpparam -delinkClientServerOnRST ENABLED
Done

<!--NeedCopy-->
TCP 構成