ADC

TCP オプティマイゼーション

TCPは、データ伝送におけるネットワークの輻輳を回避するために、以下の最適化手法と輻輳制御戦略(またはアルゴリズム)を使用します。

渋滞制御戦略

TCPは、インターネット接続の確立と管理、転送エラーの処理、およびWebアプリケーションとクライアントデバイスの円滑な接続に長い間使用されてきました。しかし、パケットロスはネットワークの輻輳だけに依存するわけではなく、輻輳が必ずしもパケットロスを引き起こすわけではないため、ネットワークトラフィックの制御はより困難になっています。したがって、輻輳を測定するには、TCP アルゴリズムはパケット損失と帯域幅の両方に焦点を当てる必要があります。

比例レート回復 (PRR) アルゴリズム

TCP 高速回復メカニズムは、パケット損失によるウェブの遅延を低減します。新しい比例レート回復 (PRR) アルゴリズムは、損失回復中に TCP データを評価する高速回復アルゴリズムです。輻輳制御アルゴリズムで選択したターゲットウィンドウに適した割合を使用して、Rate-Halvingを模したパターンになっています。これにより、ウィンドウの調整が最小限に抑えられ、リカバリ終了時の実際のウィンドウサイズは Slow-Start のしきい値 (ssthresh) に近い値になります。

TCP ファストオープン (TFO)

TCP Fast Open(TFO)は、TCPの最初のハンドシェイク中にクライアントとサーバー間で迅速かつ安全なデータ交換を可能にするTCPメカニズムです。この機能は、Citrix ADCアプライアンスの仮想サーバーにバインドされたTCPプロファイルのTCPオプションとして利用できます。TFOは、Citrix ADCアプライアンスが生成するTCPファストオープンCookie(セキュリティクッキー)を使用して、仮想サーバーへのTFO接続を開始するクライアントを検証および認証します。この TFO メカニズムを使用すると、1 回のフルラウンドトリップに必要な時間だけアプリケーションのネットワーク遅延を減らすことができます。これにより、短い TCP 転送で発生する遅延が大幅に減少します。

TFO の仕組み

クライアントが TFO 接続を確立しようとすると、最初の SYN セグメントに TCP Fast Open Cookie が含まれ、それ自体が認証されます。認証が成功すると、Citrix ADCアプライアンス上の仮想サーバーは、3ウェイハンドシェイクの最後のACKセグメントを受信していなくても、SYN-ACKセグメントにデータを含めることができます。これにより、データを交換する前に三者間のハンドシェイクを必要とする通常の TCP 接続と比較して、最大 1 回の往復を節約できます。

クライアントとバックエンドサーバーは、次の手順を実行して TFO 接続を確立し、最初の TCP ハンドシェイク中にデータを安全に交換します。

  1. クライアントに認証用のTCPファストオープンクッキーがない場合、クライアントはSYNパケットでファストオープンクッキー要求をCitrix ADCアプライアンス上の仮想サーバーに送信します。
  2. 仮想サーバにバインドされたTCPプロファイルでTFOオプションが有効になっている場合、アプライアンスは(クライアントのIPアドレスを秘密鍵で暗号化することにより)Cookie を生成し、生成されたFast Open CookieをTCPオプションフィールドに含むSYN-ACKでクライアントに応答します。
  3. クライアントは、アプライアンス上の同じ仮想サーバーへの今後の TFO 接続に備えて Cookie をキャッシュします。
  4. クライアントが同じ仮想サーバーへのTFO接続を確立しようとすると、キャッシュされたFast Open Cookie(TCPオプションとして)を含むSYNをHTTPデータとともに送信します。
  5. Citrix ADCアプライアンスはクッキーを検証し、認証が成功すると、サーバーはSYNパケット内のデータを受け入れ、SYN-ACK、TFOCookie、およびHTTPレスポンスでイベントを確認します。

注:

クライアント認証が失敗した場合、サーバーはデータをドロップし、セッションタイムアウトを示す SYN のみでイベントを確認します。

  1. サーバー側では、サービスにバインドされたTCPプロファイルでTFOオプションが有効になっている場合、Citrix ADCアプライアンスは、接続しようとしているサービスにTCP Fast Open Cookieが存在するかどうかを判断します。
  2. TCP Fast Open Cookie が存在しない場合、アプライアンスは SYN パケットで Cookie リクエストを送信します。
  3. バックエンドサーバーが Cookie を送信すると、アプライアンスはその Cookie をサーバー情報キャッシュに保存します。
  4. アプライアンスに特定の宛先 IP ペアの Cookie が既にある場合は、古い Cookie が新しい Cookie に置き換えられます。
  5. 仮想サーバーが同じ SNIP アドレスを使用して同じバックエンドサーバーに再接続しようとしたときに Cookie がサーバー情報キャッシュに存在する場合、アプライアンスは SYN パケット内のデータを Cookie と結合し、バックエンドサーバーに送信します。
  6. バックエンドサーバーは、データと SYN の両方を使用してイベントを確認します。

注: サーバーがSYNセグメントのみでイベントを確認した場合、Citrix ADCアプライアンスは元のパケットからSYNセグメントとTCPオプションを削除した後、すぐにデータパケットを再送信します。

TCP ファストオープンの設定

TCP Fast Open(TFO)機能を使用するには、関連する TCP プロファイルで TCP Fast Open オプションを有効にし、TFO Cookie Timeout パラメータをそのプロファイルのセキュリティ要件に適した値に設定します。

CLI を使用して TFO を有効または無効にする

コマンドプロンプトで、次のコマンドのいずれかを入力して、新規または既存のプロファイルの TFO を有効または無効にします。

注: デフォルト値は DISABLED です。

    add tcpprofile <TCP Profile Name> - tcpFastOpen ENABLED | DISABLED
    set tcpprofile <TCP Profile Name> - tcpFastOpen ENABLED | DISABLED
    unset tcpprofile <TCP Profile Name> - tcpFastOpen
    Examples
    add tcpprofile Profile1 – tcpFastOpen
    Set tcpprofile Profile1 – tcpFastOpen Enabled
    unset tcpprofile Profile1 – tcpFastOpen
<!--NeedCopy-->

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

    set tcpparam –tcpfastOpenCookieTimeout <Timeout Value>
    Example
    set tcpprofile –tcpfastOpenCookieTimeout 30secs
<!--NeedCopy-->

GUI を使用して TCP ファストオープンを設定するには

  1. [ 構成 ] > [ システム ] > [ プロファイル ] に移動し、[ 編集 ] をクリックして TCP プロファイルを変更します。
  2. TCP プロファイルの設定」ページで、「TCPFast Open 」チェックボックスを選択します。
  3. OK をクリックしてから、「完了」をクリックします。

GUI を使用して TCP ファストクッキーのタイムアウト値を設定するには

[ 構成 ] > [ システム ] > [ 設定] > [TCP パラメータの変更 ] に移動し、次に [ TCP パラメータの設定 ] ページに移動して TCP Fast Open Cookie のタイムアウト値を設定します。

TCP ハイスタート

新しい TCP プロファイルパラメーター HyStart により、HyStart アルゴリズムが有効になります。HyStart アルゴリズムは、終了する安全なポイント (ssthresh) を動的に決定するスロースタートアルゴリズムです。これにより、大量のパケットロスを発生させることなく、輻輳回避への移行が可能になります。この新しいパラメータはデフォルトでは無効になっています。

混雑が検出されると、HyStartは輻輳回避フェーズに入ります。これを有効にすると、パケット損失の多い高速ネットワークでのスループットが向上します。このアルゴリズムは、トランザクションの処理中に最大帯域幅に近い状態を維持するのに役立ちます。そのため、スループットを向上させることができます。

TCP ハイスタートの設定

HyStart機能を使用するには、関連するTCPプロファイルでCubic HyStartオプションを有効にします。

コマンドラインインターフェイス (CLI) を使用して HyStart を設定するには

コマンドプロンプトで、次のコマンドのいずれかを入力して、新規または既存のTCPプロファイルでHyStartを有効または無効にします。

add tcpprofile <profileName> -hystart ENABLED
set tcpprofile <profileName> -hystart ENABLED
unset tcprofile <profileName> -hystart
<!--NeedCopy-->

例:

    add tcpprofile profile1 -hystart ENABLED
    set tcpprofile profile1 -hystart ENABLED
    unset tcprofile profile1 -hystart
<!--NeedCopy-->

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

  1. [ 構成 ] > [ システム ] > [ プロファイル ] に移動し、[ 編集 ] をクリックして TCP プロファイルを変更します。
  2. TCP プロファイルの設定 」ページで、「 Cubic Hystart 」チェックボックスを選択します。
  3. OK をクリックしてから、「完了」をクリックします。

TCP バーストレート制御

TCP制御メカニズムにより、高速モバイルネットワークでバーストトラフィックフローが発生し、ネットワーク全体の効率に悪影響を与える可能性があることが確認されています。データの輻輳やレイヤ 2 再送信などのモバイルネットワークの状況により、TCP 確認応答がまとまって送信者に届き、大量の送信がトリガーされます。これらの連続したパケットのグループが、短いパケット間ギャップで送信されます。これを TCP パケットバーストと呼びます。トラフィックバーストを克服するために、Citrix ADCアプライアンスはTCPバーストレート制御技術を使用しています。この手法では、データがバーストに送信されないように、ラウンドトリップ時間全体にわたってデータをネットワークに均等に配置します。このバーストレート制御技術を使用すると、スループットを向上させ、パケットドロップ率を下げることができます。

TCP バーストレート制御の仕組み

Citrix ADCアプライアンスでは、この手法により、ラウンドトリップ時間(RTT)の全期間にわたってパケットの送信が均等に分散されます。これは、TCPスタックとネットワークパケットスケジューラを使用してさまざまなネットワーク条件を識別し、進行中のTCPセッションのパケットを出力してバーストを減らすことで実現されます。

送信側では、確認応答を受信したらすぐにパケットを送信する代わりに、パケットの送信を遅延させて、スケジューラ(動的構成)または TCP プロファイル(固定構成)で定義されたレートでパケットを分散させることができます。

TCP バーストレート制御の設定

関連する TCP プロファイルの TCP バーストレート制御オプションを使用して、バーストレート制御パラメータを設定します。

コマンドラインを使用して TCP バーストレート制御を設定するには

コマンドプロンプトで、次のいずれか 1 つの TCP Burst Rate Control コマンドを新規または既存のプロファイルで設定します。

:デフォルト値は DISABLED です。

add tcpprofile <TCP Profile Name> -burstRateControl Disabled | Dynamic | Fixed

set tcpprofile <TCP Profile Name> -burstRateControl Disabled | Dynamic | Fixed

unset tcpprofile <TCP Profile Name> -burstRateControl Disabled | Dynamic | Fixed
<!--NeedCopy-->

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

無効 — バーストレート制御が無効になっている場合、Citrix ADCアプライアンスはMaxBurst設定以外のバースト管理を実行しません。

固定 — TCP バーストレート制御が Fixed の場合、アプライアンスは TCP プロファイルに記載されている TCP 接続ペイロード送信レート値を使用します。

ダイナミック — バーストレート制御が「ダイナミック」の場合、TCP バーストを減らすために、さまざまなネットワーク条件に基づいて接続が調整されます。このモードは、TCP 接続が ENDPOINT モードの場合にのみ機能します。ダイナミックバーストレート制御が有効な場合、TCP プロファイルの maxBurst パラメータは有効になりません。

add tcpProfile  profile1 -burstRateControl Disabled

set tcpProfile profile1 -burstRateControl Dynamic

unset tcpProfile profile1 -burstRateControl Fixed
<!--NeedCopy-->

コマンドラインインターフェイスを使用して TCP バーストレート制御パラメータを設定するには

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

    set ns tcpprofile nstcp_default_profile –burstRateControl <type of burst rate control> –tcprate <TCP rate> -rateqmax <maximum bytes in queue>

    T1300-10-2> show ns tcpprofile nstcp_default_profile
            Name: nstcp_default_profile
            Window Scaling status:  ENABLED
            Window Scaling factor: 8
            SACK status: ENABLED
            MSS: 1460
            MaxBurst setting: 30 MSS
            Initial cwnd setting: 16 MSS
            TCP Delayed-ACK Timer: 100 millisec
            Nagle's Algorithm: DISABLED
            Maximum out-of-order packets to queue: 15000
            Immediate ACK on PUSH packet: ENABLED
            Maximum packets per MSS: 0
            Maximum packets per retransmission: 1
            TCP minimum RTO in millisec: 1000
            TCP Slow start increment: 1
            TCP Buffer Size: 8000000 bytes
            TCP Send Buffer Size: 8000000 bytes
            TCP Syncookie: ENABLED
            Update Last activity on KA Probes: ENABLED
            TCP flavor: BIC
            TCP Dynamic Receive Buffering: DISABLED
            Keep-alive probes: ENABLED
            Connection idle time before starting keep-alive probes: 900 seconds
            Keep-alive probe interval: 75 seconds
            Maximum keep-alive probes to be missed before dropping connection: 3
            Establishing Client Connection: AUTOMATIC
            TCP Segmentation Offload: AUTOMATIC
            TCP Timestamp Option: DISABLED
            RST window attenuation (spoof protection): ENABLED
            Accept RST with last acknowledged sequence number: ENABLED
            SYN spoof protection: ENABLED
            TCP Explicit Congestion Notification: DISABLED
            Multipath TCP: DISABLED
            Multipath TCP drop data on pre-established subflow: DISABLED
            Multipath TCP fastopen: DISABLED
            Multipath TCP session timeout: 0 seconds
            DSACK: ENABLED
            ACK Aggregation: DISABLED
            FRTO: ENABLED
            TCP Max CWND : 4000000 bytes
            FACK: ENABLED
            TCP Optimization mode: ENDPOINT
            TCP Fastopen: DISABLED
            HYSTART: DISABLED
            TCP dupack threshold: 3
            Burst Rate Control: Dynamic
            TCP Rate: 0
            TCP Rate Maximum Queue: 0
<!--NeedCopy-->

GUI を使用して TCP バーストレート制御を設定するには

  1. [ 構成 ] > [ システム ] > [ プロファイル ] に移動し、[ 編集 ] をクリックして TCP プロファイルを変更します。
  2. TCP プロファイルの設定ページで 、ドロップダウンリストから TCP バーストコントロールオプションを選択します
    1. BurstRateCntrl
    2. CreditBytePrms
    3. RateBytePerms
    4. RateSchedulerQ
  3. OK をクリックしてから、「完了」をクリックします。

ラップシーケンスからの保護 (PAWS) アルゴリズム

デフォルトのTCPプロファイルでTCPタイムスタンプオプションを有効にすると、Citrix ADCアプライアンスは、シーケンスが「ラップ」された(最大値に達して0から再起動された)ため、シーケンス番号が現在のTCP接続の受信ウィンドウ内にある古いパケットを識別して拒否します。

ネットワークの混雑により SYN 以外のデータパケットが遅延し、パケットが到着する前に新しい接続を開くと、シーケンス番号のラップによって新しい接続がパケットを有効として受け入れてしまい、データが破損する可能性があります。ただし、TCP タイムスタンプオプションが有効な場合、パケットは破棄されます。

デフォルトでは、TCP タイムスタンプオプションは無効になっています。これを有効にすると、アプライアンスはパケットのヘッダーの TCP タイムスタンプ (Seg.tsval) を最近のタイムスタンプ (ts.Recent) の値と比較します。Seg.tsVal が ts.Recent と同じかそれより大きい場合、パケットは処理されます。それ以外の場合、アプライアンスはパケットをドロップし、修正確認を送信します。

PAWSの仕組み

PAWS アルゴリズムは、同期接続のすべての着信 TCP パケットを次のように処理します。

  1. If SEG.TSval < Ts.recent: 受信パケットは受け入れられません。PAWS は(RFC-793 で指定されているように)確認応答を送信し、パケットをドロップします。注:ハーフオープン接続を検出して回復する TCP のメカニズムを維持するには、ACK セグメントの送信が必要です。
  2. パケットがウィンドウの外にある場合:PAWS は、通常の TCP 処理と同様にパケットを拒否します。
  3. SEG.TSval If > Ts.recent: PAWS がパケットを受け入れて処理します。
  4. SEG.TSval <=Last.ACK.sent (到着セグメントが満たす場合): PAWSはSEG.TSval値をTs.recentにコピーします。
  5. パケットが順番に並んでいる場合:PAWS はパケットを受け入れます。
  6. パケットが順番に並んでいない場合:パケットは通常のウィンドウ内順序外の TCP セグメントとして扱われます。たとえば、後で配信するためにキューに入れられている場合があります。
  7. Ts.recent 値が 24 日以上アイドル状態の場合:PAWS タイムスタンプチェックが失敗すると、 Ts.recent の有効性が確認されます。ts.Recent の値が無効であることが判明した場合、そのセグメントは受け入れられ、PAWS ruleが新しいセグメントのTs.recentのをTSval 値で更新します。

コマンドラインインターフェイスを使用して TCP タイムスタンプを有効または無効にするには

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

`set nstcpprofile nstcp_default_profile -TimeStamp (ENABLED | DISABLED)`

GUI を使用して TCP タイムスタンプを有効または無効にするには

[ システム ] > [ プロファイル ] > [ TCP プロファイル] に移動し、デフォルトの TCP プロファイルを選択して [ 編集] をクリックし、 TCP タイムスタンプチェックボックスをオンまたはオフにします

最適化手法

TCP では、以下の最適化手法と方法を使用してフロー制御を最適化します。

ポリシーベースの TCP プロファイル選択

今日のネットワークトラフィックは、かつてないほど多様で帯域幅を大量に消費しています。トラフィックの増加に伴い、サービス品質 (QoS) が TCP のパフォーマンスに与える影響は大きくなります。QoS を強化するために、ネットワークトラフィックのクラスごとに異なる TCP プロファイルを使用して AppQoE ポリシーを設定できるようになりました。AppQoEポリシーは、仮想サーバーのトラフィックを分類して、3G、4G、LAN、WANなどの特定のタイプのトラフィックに最適化されたTCPプロファイルを関連付けます。

この機能を使用するには、TCP プロファイルごとにポリシーアクションを作成し、AppQoE ポリシーにアクションを関連付け、負荷分散仮想サーバーにポリシーをバインドします。

サブスクライバ属性を使用して TCP 最適化を実行する方法については、 ポリシーベースの TCP プロファイルを参照してください

ポリシーベースの TCP プロファイル選択の設定

ポリシーベースの TCP プロファイル選択の設定は、次のタスクで構成されます。

  • AppQoE を有効にする。TCP プロファイル機能を設定する前に、AppQoE 機能を有効にする必要があります。
  • AppQoE アクションを追加します。AppQoE 機能を有効にしたら、TCP プロファイルを使用して AppQoE アクションを設定します。
  • AppQoE ベースの TCP プロファイル選択の設定さまざまなトラフィッククラスにTCPプロファイル選択を実装するには、Citrix ADCが接続を区別し、正しいAppQoEアクションを各ポリシーにバインドできるようにAppQoEポリシーを構成する必要があります。
  • AppQoE ポリシーを仮想サーバにバインドします。AppQoEポリシーを構成したら、それらを1つ以上の負荷分散、コンテンツスイッチング、またはキャッシュリダイレクト仮想サーバーにバインドする必要があります。

コマンドラインインターフェイスを使用した構成

コマンドラインインターフェイスを使用して AppQoE を有効にするには

コマンドプロンプトで次のコマンドを入力して機能を有効にし、有効になっていることを確認します。

  • enable ns feature appqoe
  • show ns feature

コマンドラインインターフェイスを使用して AppQoE アクションを作成する際に TCP プロファイルをバインドするには

コマンドプロンプトで、次の AppQoE action コマンドとオプションを入力します。 tcpprofiletobind

add appqoe action <name> [-priority <priority>] [-respondWith ( ACS | NS ) [<CustomFile>] [-altContentSvcName <string>] [-altContentPath <string>] [-maxConn <positive_integer>] [-delay <usecs>]] [-polqDepth <positive_integer>] [-priqDepth <positive_integer>] [-dosTrigExpression <expression>] [-dosAction ( SimpleResponse |HICResponse )] [-tcpprofiletobind <string>] show appqoe action

コマンドラインインターフェイスを使用して AppQoE ポリシーを構成するには

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

add appqoe policy <name> -rule <expression> -action <string>

コマンドラインインターフェイスを使用してAppQoEポリシーを負荷分散、キャッシュリダイレクト、またはコンテンツスイッチング仮想サーバーにバインドするには

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

bind cs vserver cs1 -policyName <appqoe_policy_name> -priority <priority> bind lb vserver <name> - policyName <appqoe_policy_name> -priority <priority> bind cr vserver <name> -policyName <appqoe_policy_name> -priority <priority>

    add ns tcpProfile tcp1 -WS ENABLED -SACK ENABLED -WSVal 8 -nagle ENABLED -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 500 -slowStartIncr 1 -bufferSize 4194304 -flavor BIC -KA ENABLED -sendBuffsize 4194304 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -dsack enabled -frto ENABLED -maxcwnd 4000000 -fack ENABLED -tcpmode ENDPOINT
    add appqoe action appact1 -priority HIGH -tcpprofile tcp1
    add appqoe policy apppol1 -rule "client.ip.src.eq(10.102.71.31)" -action appact1
    bind lb vserver lb2 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST
    bind cs vserver cs1 -policyName apppol1 -priority 1 -gotoPriorityExpression END -type REQUEST
<!--NeedCopy-->

GUI を使用したポリシーベースの TCP プロファイリングの設定

GUI を使用して AppQoE を有効にするには

  1. [ システム ] > [ 設定]に移動します。
  2. 詳細ウィンドウで、「 拡張機能の設定」をクリックします。
  3. 拡張機能の設定 」ダイアログで、「 AppQoE 」チェックボックスを選択します。
  4. [OK] をクリックします。

GUI を使用して AppQoE ポリシーを設定するには

  1. [ **アプリエキスパート] > [ **AppQoE** ] > [アクション] に移動します。**
  2. 詳細ウィンドウで、次のいずれかの操作を行います。
  3. アクションを作成するには、[ 追加] をクリックします。
  4. 既存のアクションを変更するには、アクションを選択し、[ 編集] をクリックします。
  5. AppQoE アクションの作成 」または「 AppQoE アクションの設定 」画面で、パラメータの値を入力または選択します。ダイアログボックスの内容は、「AppQoE アクションを構成するためのパラメーター」で説明されているパラメーターに次のように対応します (アスタリスクは必須パラメーターを示します)。
    1. 名前—名前
    2. アクションタイプ — 次の式で応答
    3. 優先度 — 優先度
    4. ポリシーキューの深さ:POLQ の深さ
    5. キューの深さ — PRIQ の深さ
    6. DOS アクション—ディスコクション
  6. [作成] をクリックします。

GUI を使用して AppQoE ポリシーをバインドするには

  1. [ トラフィック管理 ] > [ 負荷分散 ] > [ 仮想サーバー] に移動し、サーバーを選択して [ 編集] をクリックします。
  2. ポリシー 」セクションで、(+) をクリックしてAppQoEポリシーをバインドします。
  3. ポリシー 」スライダーで、次の操作を行います。
    1. ドロップダウンリストから AppQoE としてポリシータイプを選択します。
    2. ドロップダウンリストからトラフィックタイプを選択します。
  4. ポリシーバインディング 」セクションで、次の操作を行います。
    1. 新規 」をクリックして AppQoE ポリシーを作成します。
    2. 既存のポリシーをクリックして 、ドロップダウンリストから AppQoE ポリシーを選択します。
  5. バインディングの優先順位を設定し、 ポリシーを仮想サーバにバインドをクリックします
  6. [完了] をクリックします。

SACK ブロック生成

1 つのデータウィンドウで複数のパケットが失われると、TCP のパフォーマンスが低下します。このようなシナリオでは、選択的確認応答(SACK)メカニズムと選択的繰り返し再送信ポリシーを組み合わせることで、この制限を克服できます。順不同のパケットが受信されるたびに、SACK ブロックを生成する必要があります。

順序が狂ったパケットが再構成キューブロックに収まる場合は、そのブロックにパケット情報を挿入し、完全なブロック情報を SACK-0 に設定します。順序が狂ったパケットが再構成ブロックに収まらない場合は、そのパケットを SACK-0 として送信し、先の SACK ブロックを繰り返します。順序が合っていないパケットが重複していて、パケット情報が SACK-0に設定されている場合は、ブロックをD-SACKします。

注: 確認済みのパケット、または既に受信された順序の悪いパケットの場合、そのパケットは D-SACK と見なされます。

クライアントリネージング

Citrix ADCアプライアンスは、SACKベースのリカバリ中にクライアントのリネージを処理できます。

PCB 上の end_point をマーキングするためのメモリチェックでは、使用可能なメモリの合計が考慮されない

Citrix ADCアプライアンスでは、使用可能な合計メモリを使用するのではなく、メモリ使用量のしきい値を75%に設定すると、新しいTCP接続はTCP最適化をバイパスします。

SACK ブロックの欠落による不必要な再送信

非エンドポイントモードで DUPACKS を送信するときに、順序が狂ったパケットのいくつかで SACK ブロックが欠落していると、サーバからの再送信が増えます。

接続の SNMP が過負荷のため最適化をバイパスしました

過負荷が原因でTCP最適化をバイパスした接続数を追跡するために、次のSNMP IDがCitrix ADCアプライアンスに追加されました。

  1. 1.3.6.1.4.1.5951.4.1.46.131 (TCP 最適化が有効)。TCP 最適化で有効になっている接続の総数を追跡します。
  2. 1.3.6.1.4.1.5951.4.1.46.132 (TCP 最適化バイパス)。接続の総数を追跡するには、TCP最適化をバイパスしました。

ダイナミック受信バッファ

TCPパフォーマンスを最大化するために、NetScaler ADCアプライアンスはTCP受信バッファサイズを動的に調整できるようになりました。

テール・ロス・プローブ・アルゴリズム

再送信タイムアウト (RTO) は、トランザクションの最後でセグメントが失われることです。RTO は、特に短いウェブトランザクションで、アプリケーションのレイテンシーに問題がある場合に発生します。トランザクションの終了時に失われたセグメントを回復するために、TCPはTail Loss Probe (TLP) アルゴリズムを使用します。 TLP は送信者専用アルゴリズムです。TCP 接続で一定期間確認応答がない場合、TLP は最後の未確認パケット(損失プローブ)を送信します。元の送信でテールロスが発生した場合、損失プローブからの確認応答により SACK または FACK のリカバリがトリガーされます。

テールロスプローブの設定

Tail Loss Probe (TLP) アルゴリズムを使用するには、TCP プロファイルで TLP オプションを有効にし、パラメータをそのプロファイルのセキュリティ要件に適した値に設定する必要があります。

コマンドラインを使用して TLP を有効にする

コマンドプロンプトで、次のコマンドのいずれかを入力して、新規または既存のプロファイルの TLP を有効または無効にします。

注記:

デフォルト値は無効です。

add tcpprofile <TCP Profile Name> - taillossprobe ENABLED | DISABLED

set tcpprofile <TCP Profile Name> - taillossprobe ENABLED | DISABLED

unset tcpprofile <TCP Profile Name> - taillossprobe

例:

add tcpprofile nstcp_default_profile – taillossprobe

set tcpprofile nstcp_default_profile –taillossprobe Enabled

unset tcpprofile nstcp_default_profile –taillossprobe

Citrix ADC GUIを使用してテールロスプローブアルゴリズムを構成する

  1. [ 構成 ] > [ システム ] > [ プロファイル ] に移動し、[ 編集 ] をクリックして TCP プロファイルを変更します。
  2. TCP プロファイルの設定 」ページで、「 Tail Loss Probe 」チェックボックスを選択します。
  3. OK をクリックしてから、「完了」をクリックします。