TCP 最適化設定
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
TCP ターミネーション
スタティックまたはダイナミックルーティング環境
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) 環境
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
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
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
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
set service svc-internet -tcpProfileName custom_profile
TCP 最適化機能
-
ウィンドウスケーリング (WS): TCP ウィンドウスケーリングにより、TCP 受信ウィンドウサイズを 65535 バイト以上に増やすことができます。これにより、TCP のパフォーマンスが全体的に向上し、特に高帯域幅で遅延が長いネットワークで改善されます。レイテンシを削減し、TCP での応答時間を改善するのに役立ちます。
-
選択的確認応答 (SACK): TCP SACK は、全体的なスループット容量を低下させる複数のパケット損失の問題に対処します。選択的確認により、受信者は正常に受信されたすべてのセグメントについて送信者に通知できるため、送信者は失われたセグメントのみを再送信できます。この手法は、T1 が全体的なスループットを向上させ、接続遅延を減らすのに役立ちます。
-
ウィンドウスケーリング係数 (WSVal): 新しいウィンドウサイズの計算に使用される係数。NS がアドバタイズするウィンドウが少なくともバッファサイズと等しくなるように、高い値に設定する必要があります。
-
最大セグメントサイズ (MSS): 単一の TCP セグメントの MSS。この値は、中間ルータとエンドクライアントの MTU 設定によって異なります。1460 の値は MTU が 1500 に相当します。
-
MaxBurst: バーストで許可される TCP セグメントの最大数。
-
初期輻輳ウィンドウサイズ (InitialCWnd): TCP の初期輻輳ウィンドウサイズによって、トランザクションの開始時に未処理のまま残せるバイト数が決まります。これにより、T1 は回線の輻輳を気にすることなく、これだけ多くのバイトを送信できます。
-
OOO パケットキューの最大サイズ (OOOQSize): TCP はアウトオブオーダーキューを維持して、OOO パケットを TCP 通信に保持します。この設定は、パケットをランタイムメモリに保持する必要があるためにキューサイズが大きい場合、システムメモリに影響します。したがって、ネットワークの種類とアプリケーションの特性に基づいて、これを最適なレベルに保つ必要があります。
-
最小 RTO (minRTO): TCP 再送信タイムアウトは、内部実装ロジックに基づいて受信した ACK ごとに計算されます。デフォルトの再送信タイムアウトは最初は 1 秒ですが、この設定で微調整できます。 これらのパケットの 2 回目の再送信では、RTO は N*2 で計算され、N*4... N*8... は最後の再送信試行まで続きます。
-
BufferSize/SendBuffSize: これらは、T1 がサーバーから受信し、クライアントに送信せずに内部的にバッファリングできる最大データ量を指します。これらは、基盤となる伝送チャネルの帯域幅遅延積よりも大きい(少なくとも2倍の)値に設定する必要があります。
-
フレーバー:これは TCP 輻輳制御アルゴリズムを指します。有効な値は、デフォルト、BIC、CUBIC、ウェストウッド、ナイルです。
-
動的受信バッファリング:メモリとネットワークの状態に基づいて受信バッファを動的に調整できます。固定サイズのバッファーをサーバーから先に読み込んで、クライアントのダウンロードパイプをいっぱいにするのに必要なだけバッファをいっぱいにします。後者は TCP プロファイルで指定され、通常は 2*BDP などの条件に基づいて接続します。NetScaler T1は、クライアントのネットワーク状態を監視し、サーバーから先に読み取る必要がある量を推定します。
-
キープアライブ(KA):定期的にTCPキープアライブ(KA)プローブを送信して、ピアがまだ稼働しているかどうかを確認します。
-
RST ウィンドウ減衰:スプーフィング攻撃から TCP を防御します。シーケンス番号が無効な場合は、訂正 ACK を返信します。
-
RstMaxAck: ウィンドウ外であっても最も大きい ACKシーケンス番号をエコーする RST の受け入れを有効または無効にします。
-
SpoofSynDrop: スプーフィングを防ぐために無効な SYN パケットをドロップします。
-
明示的な混雑通知 (ecn): ネットワークの混雑状況の通知をデータの送信者に送信し、データの混雑やデータ破損の是正措置を講じます。
-
フォワードRTOリカバリ:スプリアス再送信の場合、輻輳制御設定は元の状態に戻ります。
-
TCP 最大輻輳ウィンドウ (maxcwnd): ユーザが設定可能な TCP 最大輻輳ウィンドウサイズ。
-
転送確認 (FACK): ネットワーク内の未処理のデータバイトの総数を明示的に測定し、再送信タイムアウト時に送信者 (T1 またはクライアント) がネットワークに注入されるデータ量を制御できるようにすることで、TCP の輻輳を回避します。
-
tcpmode: 特定のプロファイルの TCP 最適化モード。TCP 最適化モードには、トランスペアレントモードとエンドポイントモードの 2 つがあります。
-
エンドポイント。このモードでは、アプライアンスはクライアント接続とサーバー接続を別々に管理します。
-
トランスペアレント。トランスペアレントモードでは、クライアントは仮想サーバを介さずにサーバに直接アクセスする必要があります。クライアントはサーバーにアクセスできる必要があるので、サーバーIPアドレスはパブリックにする必要があります。
アイドル状態の接続をサイレントドロップする
set ns tcpProfile nstcpprofile -DropHalfClosedConnOnTimeout ENABLED
set ns tcpProfile nstcpprofile -DropEstConnOnTimeout ENABLED