Citrix ADC

TCP 最適化構成

TCP最適化を構成する前に、Citrix ADCアプライアンスで次の基本構成設定を適用します。

初期設定:

enable ns feature LB IPv6PT
enable ns mode FR L3 USIP MBF Edge USNIP PMTUD
disable ns feature SP
disable ns mode TCPB
set lb parameter -preferDirectRoute NO
set lb parameter -vServerSpecificMac ENABLED
set l4param -l2ConnMethod Vlan
set rsskeytype -rsstype SYMMETRIC
set ns param -useproxyport DISABLED

rsskeytypeシステムパラメーターを変更する場合は、Citrix ADCアプライアンスを再起動します。

TCP 終端処理

Citrix ADC T1がTCP最適化を適用するには、まず着信TCPトラフィックを終了する必要があります。この目的のために、ワイルドカード TCP vserver を作成し、入力トラフィックを代行受信し、それをインターネットルータに転送するように設定する必要があります。

スタティックまたはダイナミックルーティング環境

静的または動的ルーティングが設定されている環境では、vserver はルーティングテーブル情報を使用してパケットをインターネットルータに転送できます。デフォルトルートはインターネットルーターを指し、ワイヤレスルーターへのクライアントサブネットのルーティングエントリも配置する必要があります。

例:

add lb vserver vsrv-wireless TCP * * -persistenceType NONE -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless").STATE.EQ(UP)" -m IP -cltTimeout 9000
add route 0.0.0.0 0.0.0.0 192.168.2.1
add route 10.0.0.0 255.0.0.0 192.168.1.1

VLAN 間(PBR)環境

加入者のトラフィックが複数のフローにセグメント化され、着信トラフィックパラメータに基づいて異なるルータに転送する必要があるお客様の環境があります。ポリシーベースルーティング(PBR)を使用すると、VLAN、MAC アドレス、インターフェイス、送信元 IP、送信元ポート、宛先 IP アドレス、宛先ポートなどの着信パケットパラメータに基づいてパケットをルーティングできます。

ローカライズされた画像

例:

add lb vserver vsrv-wireless TCP * * -m IP -l2Conn ON -listenpolicy "CLIENT.VLAN.ID.EQ(100) || CLIENT.VLAN.ID.EQ(101) || CLIENT.VLAN.ID.EQ(102)"

add ns pbr pbr-vlan100-to-vlan200 ALLOW -vlan 100 -nexthop 172.16.200.1

add ns pbr pbr-vlan101-to-vlan201 ALLOW -vlan 101 -nexthop 172.16.201.1

add ns pbr pbr-vlan102-to-vlan202 ALLOW -vlan 102 -nexthop 172.16.202.1

ポリシーベースルーティングを使用して TCP 最適化トラフィックをルーティングすることは、リリース 11.1 50.10 で追加された新機能です。以前のリリースでは、VLAN ごとに複数の「モード MAC」仮想サーバエンティティを持つことは、マルチ VLAN 環境の代替ソリューションです。各 vserver には、特定のフローのインターネットルーターを表すバインドされたサービスがあります。

例:

add server internet_router_1 172.16.200.1

add server internet_router_2 172.16.201.1

add server internet_router_3 172.16.202.1

add service svc-internet-1 internet_router_1 TCP * -usip YES -useproxyport NO

add service svc-internet-2 internet_router_2 TCP * -usip YES -useproxyport NO

add service svc-internet-3 internet_router_3 TCP * -usip YES -useproxyport NO

bind service svc-internet-1 -monitorName arp

bind service svc-internet-2 -monitorName arp

bind service svc-internet-3 -monitorName arp

add lb vserver vsrv-wireless-1 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(100) && SYS.VSERVER("vsrv-wireless-1").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-2 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(101) && SYS.VSERVER("vsrv-wireless-2").STATE.EQ(UP)" -m MAC -l2Conn ON

add lb vserver vsrv-wireless-3 TCP * * -Listenpolicy "CLIENT.VLAN.ID.EQ(102) && SYS.VSERVER("vsrv-wireless-3").STATE.EQ(UP)" -m MAC -l2Conn ON

bind lb vserver vsrv-wireless-1 svc-internet-1

bind lb vserver vsrv-wireless-2 svc-internet-2

bind lb vserver vsrv-wireless-3 svc-internet-3

注:

vserver モードは MAC であり、以前の例とは対照的に、モード IP です。これは、vserverにバインドされたサービス(複数可)を持っているときに宛先IP情報を保持するために必要です。また、追加の PBR 設定では、最適化されていないトラフィックをルーティングする必要があります。

TCP 最適化

すぐに使用できるCitrix ADC TCP終端は、TCPパススルー機能用に構成されています。TCPパススルーとは、本質的に、Citrix ADC T1がクライアント/サーバーTCPストリームを透過的に傍受することがありますが、クライアント/サーバーバッファーを個別に保持したり、最適化手法を適用したりしないことを意味します。

TCP 最適化を有効にするには、nstcpprofile という名前の TCP プロファイルを使用して、TCP 構成を指定します。TCP 構成は、サービスレベルまたは仮想サーバーレベルで提供されていない場合に使用され、次のように変更する必要があります。

コマンド:

add ns tcpProfile nstcpprofile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT

注:

明示的に作成され、vserver および service にバインドされたプロファイルが存在しない場合、プロファイルの nstcp_default_profile はデフォルトでバインドされます。

複数の TCP プロファイル要件がある場合は、追加の TCP プロファイルを作成し、適切な仮想サーバに関連付けることができます。

コマンド:

add ns tcpProfile custom_profile -WS ENABLED -SACK ENABLED -WSVal 8 -mss 1460 -maxBurst 30 -initialCwnd 16 -oooQSize 15000 -minRTO 800 -bufferSize 4000000 -flavor BIC -dynamicReceiveBuffering ENABLED -KA ENABLED -sendBuffsize 4000000 -rstWindowAttenuate ENABLED -spoofSynDrop ENABLED -ecn ENABLED -frto ENABLED -maxcwnd 1000000 -fack ENABLED -rstMaxAck enABLED -tcpmode ENDPOINT

set lb vserver vsrv-wireless -tcpProfileName custom_profile

注:

vserver-m MAC および service を使用するデプロイメントでは、同じプロファイルをサービスに関連付ける必要があります。

set service svc-internet -tcpProfileName custom_profile

TCP 最適化機能

Citrix ADCアプライアンスの関連するTCP最適化機能のほとんどは、対応するTCPプロファイルを介して公開されます。TCP プロファイルの作成時に考慮すべき典型的な CLI パラメータは次のとおりです。

  1. ウィンドウスケーリング (WS): TCP ウィンドウスケーリングにより、TCP 受信ウィンドウサイズを 65535 バイト以上に増やすことができます。これは、全体的に、特に高帯域幅と長い遅延ネットワークで TCP のパフォーマンスを向上させるのに役立ちます。これは、遅延を低減し、TCP上の応答時間を向上させるのに役立ちます。
  2. 選択的確認応答(SACK):TCP SACKは、全体的なスループット容量を低減する複数のパケット損失の問題に対処します。選択的確認応答で受信機は、唯一の失われたセグメントを再送信する送信者を可能にする、正常に受信されたすべてのセグメントについて送信者に通知することができます。この手法は、T1 が全体的なスループットを改善し、接続待ち時間を短縮するのに役立ちます。
  3. ウィンドウスケール係数 (WSVal): 新しいウィンドウサイズの計算に使用される係数。NS によってアドバタイズされたウィンドウがバッファサイズと少なくとも等しくなるようにするには、この値を大きく設定する必要があります。
  4. 最大セグメントサイズ(MSS):単一の TCP セグメントの MSS。この値は、中間ルータおよびエンドクライアントの MTU 設定によって異なります。値 1460 は、1500 の MTU に対応します。
  5. maxBurst:バーストで許可される TCP セグメントの最大数。
  6. 初期輻輳ウィンドウサイズ (initialCwnd): TCP 初期輻輳ウィンドウサイズは、トランザクションの開始時に未処理のバイト数を決定します。これにより、T1 は、ワイヤ上の輻輳を気にすることなく、これらの多くのバイトを送信できます。
  7. 最大OOOパケットキューサイズ(oooQSize):TCPは、TCP通信でOOパケットを維持するために、アウトオブオーダーキューを維持します。この設定は、パケットをランタイムメモリに保持する必要がある限り、キューサイズが長い場合、システムメモリに影響します。したがって、これは、ネットワークおよびアプリケーションの特性の種類に基づいて最適化されたレベルに保つ必要があります。
  8. 最小 RTO (minRTO): TCP 再送信タイムアウトは、内部実装ロジックに基づいて、受信した ACK ごとに計算されます。デフォルトの再送信タイムアウトは 1 秒で開始され、この設定で調整できます。これらのパケットの 2 回目の再送信の場合、RTO は N*2 によって計算され、次に N*4… N*8… は、最後の再送信試行まで続きます。
  9. buffersize/sendBuffSize: これらは、T1 がサーバーから受信できるデータの最大量を参照し、クライアントに送信せずに内部的にバッファします。これらは、基礎となる伝送チャネルの帯域幅遅延積(Bandwidth Delay Product)よりも大きい(少なくとも2倍)値に設定する必要があります。
  10. フレーバー:これは TCP 輻輳制御アルゴリズムを指します。有効な値は、デフォルト、BIC、CUBIC、Westwood、Nileです。
  11. 動的受信バッファリング:受信バッファは、メモリとネットワークの条件に基づいて動的に調整することができます。後者はTCPプロファイルで指定され、通常は2* BDPなどの基準に基づいて接続のために、サーバーから先読んで、固定サイズのバッファをいっぱいにするのではなく、クライアントのダウンロードパイプをいっぱいに保つために必要なだけバッファをいっぱいにします。Citrix ADC T1は、クライアントのネットワーク状態を監視し、サーバーから先読みする量を見積もります。
  12. Keep-Alive(KA):定期的な TCP キープアライブ(KA)プローブを送信して、ピアがまだアップしているかどうかを確認します。
  13. rstWindowAttenuate: なりすまし攻撃から TCP を防御します。シーケンス番号が無効な場合、修正ACKで応答します。
  14. rstMaxAck: ウィンドウ外にある RST の受け入れを有効または無効にします。最大の ACK シーケンス番号がエコーされます。
  15. spoofSynDrop:スプーフィングから保護するために、無効な SYN パケットをドロップします。
  16. 明示的な輻輳通知(ecn):これは、データの送信者にネットワークの輻輳状態の通知を送信し、データの輻輳やデータ破損のための是正措置を取ります。
  17. フォワード RTO-Recovery:スプリアス再送信の場合、輻輳制御の設定は元の状態に戻ります。
  18. TCP 最大輻輳ウィンドウ(maxcwnd):ユーザが設定可能な TCP 最大輻輳ウィンドウサイズ。
  19. Forward ACK(FACK; 転送確認応答):ネットワークで未処理のデータバイトの合計数を明示的に測定し、送信者(T1 またはクライアント)が再送信タイムアウト時にネットワークに注入されるデータ量を制御できるようにすることで、TCP 輻輳を回避します。
  20. tcpmode:特定のプロファイルの TCP 最適化モード。透過とエンドポイント-2つのTCP最適化モードがあります。
  • [エンドポイント] このモードでは、アプライアンスはクライアントとサーバーの接続を別々に管理します。
  • 透明。透過モードでは、クライアントは仮想サーバを介在させることなく、サーバに直接アクセスする必要があります。クライアントはサーバーにアクセスできる必要があるので、サーバーIPアドレスはパブリックにする必要があります。次の図に示す例では、NetScalerアプライアンスがクライアントとサーバーの間に配置されています。そのため、トラフィックはアプライアンスを経由する必要があります。

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

電話会社ネットワークでは、Citrix ADCアプライアンスのTCP接続のほぼ50%がアイドル状態になり、アプライアンスはRSTパケットを送信してそれらを閉じます。無線チャネルを介して送信されたパケットは、これらのチャネルを不必要にアクティブ化し、メッセージが大量に発生し、その結果、アプライアンスがサービス拒否メッセージを大量に生成します。既定の TCP プロファイルには、ドロップの半分閉じられた接続タイムアウトと DropEstConnOnTimeout パラメーターが含まれるようになりました。これらのパラメーターはデフォルトで無効になっています。両方を有効にした場合、ハーフクローズ接続でも確立された接続でも、接続がタイムアウトしたときに RST パケットがクライアントに送信されることはありません。アプライアンスは接続を切断するだけです。

set ns tcpProfile nstcpprofile  -DropHalfClosedConnOnTimeout ENABLED
set ns tcpProfile nstcpprofile  -DropEstConnOnTimeout ENABLED

TCP 最適化構成