いくつかのTCP接続、特に長距離のものは、しばしば高いレイテンシーを経験し、ユーザー経験に悪影響を及ぼします。 Cato NetworksのTCP加速機能は、WAN上でTCP接続を加速し、TCPトラフィックのネットワーク効率と速度を向上させます。
この記事では、CatoがTCP加速を実装する方法を説明し、TCPトラフィックに基づく特定のアプリケーションに対するTCP加速の最適化のためのベストプラクティスをいくつかリストアップしています。
TCP加速の解説
Catoは、クライアントと宛先サーバの間にCato PoPを中間プロキシサーバとして指定することでTCP加速を達成します。 プロキシは長距離接続を排除し、代わりに短い接続に分割します。 利点として、長距離接続を維持する代わりに、ソケットは最も近いPoPとの短い接続を維持します。 PoP間のトラフィックはCato Cloudのプライベートバックボーンを通じて転送され、クラウドの速度と低レイテンシを保証します。 最も宛先に近いPoPがトラフィックをサーバに送信します。
パケット損失がある場合、PoPがパケットの再送信を担当し、これにより迅速な対応が可能になり応答時間が短縮されます。 この技術により、TCPパフォーマンスが向上し、トンネルが切断された場合の復旧時間を短縮します。 各短い接続は、一つの長距離接続に比べて、一パケットあたりの往復時間(RTT)が短い。 短い接続により、パフォーマンスが向上し、宛先へのデータ配送が迅速に保証されます。 高いRTTを伴う長距離接続は、パケットが宛先に到達するまで長時間の移動を意味します。 移動時間が長く、接続が遅いと、ユーザーエクスペリエンスが低下する可能性があります。
次の図は、クライアントからサーバへの接続を示し、PoP AとPoP Bがプロキシサーバとして機能しています:

プロキシはクライアントとサーバ間の長距離接続を短い接続に分割します:
最初の接続はソケットからPoP Aへのものです。
PoP AからPoP Bへの接続は、Cato Cloud上で行われます。
宛先サーバに対する接続はPoP Bから行われます。
各PoPは独自のTCPスタックを維持し、パケットの再送信を最小限に抑えます。 TLSトラフィックが有効な場合、または出口ネットワークルールが評価されている場合、PoPはクライアントからのSYNメッセージを受信すると、クライアントに迅速にACK応答を返します。 その間、ソケットはTCPトラフィックを継続して送信し、接続を速めます。 PoPは次の式に従って、プロパティTCPスタックウィンドウサイズを割り当てます:ウィンドウサイズ = RTT * 帯域幅。 例えば、RTTが200msで帯域幅が20Mbsの接続の場合、TCPウィンドウサイズは4MB(0.2秒 * 20 MB)です。 しかし、他のシナリオではPoPはサーバからの応答を待ってからクライアントにACK応答を送信します。
注意:オルタナティブ-WANおよびオフクラウドトランスポートでは、TCP加速はサポートされていません。
TCPアクセラレーション vs TCPプロキシ
PoPビューでは、前のセクションで説明された動作はTCPプロキシとして見られます。 TCPアクセラレーションはCato管理アプリケーションで有効化または無効化できる機能であり、TCPプロキシは実際のTCP接続分割メカニズムです。 TCPアクセラレーションが有効化されると、TCPプロキシをトリガーします。 この区別は、一部の状況では、Cato管理アプリケーションでTCPアクセラレーションが無効でもTCPプロキシが発生するためです。
WANトラフィックのためのTCPプロキシ
Cato Cloud上のWANトラフィックでは、次のTCPプロキシモードが利用可能です:
フルWAN TCPプロキシ
オリジナルのWAN TCPネゴシエーションを保持し、TCPプロキシを遅延させます
フルWAN TCPプロキシモードを使用するWANトラフィックでは、TCPプロキシは最初の接続ごとにSYNパケットでは即座に開始されます。 このモードは、ネットワークルールでTCPアクセラレーションが有効化されており、ルールが簡単なルールである場合、TCPプロキシを最初のSYNで強制します。 このモードは、SIPトランクおよびオフクラウドトラフィックに対しては最適な設定ではない場合があります。
オリジナルのWAN TCPネゴシエーションを保持し、TCPプロキシを遅延させるモードでは、TCPハンドシェイクが完了した後にのみTCPプロキシが開始されます。 ALT WANトラフィックとオフクラウドフェイルオーバーには、このモードをお勧めします。PoPはトンネル上で同じTCPシーケンスを保持します。 ただし、このモードを使用する場合、TCPプロキシが開始される前にTCPセッションパラメーター (例:ウィンドウスケーリング、MSSなど) が既に設定されているため、Cato PoPからのTCPパラメーターと異なる可能性があります。
2023年11月から、フルWAN TCPプロキシは新規アカウントのデフォルトモードとなります。 この日付前に作成されたアカウントについては、フルWAN TCPプロキシモードはデフォルトで無効です。
アカウントレベルとサイトレベルの両方に対して、高度な設定ページでWAN TCPプロキシモードを変更できます。
TCPプロキシの強制
次のセクションでは、TCPプロキシが自動的に有効化され、アクティブTCPアクセラレーション設定を上書きする状況について説明します。
ネットワークルール内の出力IPを使用する
出力IPまたはロケーションをネットワークルールで選択すると、PoPが接続のプロキシサーバとして働き、Catoが自動的にTCPプロキシをアクティブ化します。 Cato管理アプリケーションでは、出力ルールに対してTCP加速を無効化できません。 次のスクリーンショットは、アクティブなTCPアクセラレーションオプションがグレーアウトされているネットワークルールを示しています (Network > Network Rules > Edit Rule)。

出力ルールの設定方法については、「送信ルールの設定方法」を参照してください。
単純および複雑なネットワークルールの操作
ネットワークルールの設定に基づいたTCPプロキシの動作を理解するには、単純なネットワークルールと複雑なネットワークルールを区別することが重要です。
複雑なネットワークルールとは、Socket自身が評価できないルールです。 そのような場合、SocketはPoPにトラフィックを転送し、正しいネットワークルールを選択する必要があり、それがTCPプロキシを有効化します。 以下は、単純および複雑なネットワークルールの定義です:
複雑なルールは、アプリ/カテゴリの設定でアプリケーション、アプリケーションカテゴリ、サービス、カスタムアプリケーション、またはドメイン/FQDNのいずれかを含むものです
単純なルールは、ポート範囲、カスタムサービス、またはアプリ/カテゴリ設定のいずれかに設定されたANYのみを使用して定義できます。 その他の場合、ルールは複雑なルールです
ネットワークルールでのTCP加速の無効化は、次の場合にTCPプロキシを無効化しません:
TCP加速が無効なネットワークルールは、上位に複雑なネットワークルールが存在します
TCP加速が無効なネットワークルール自体が複雑なルールです
以下の例は、TCP加速が無効なネットワークルール#2を示しています。 なぜなら、ルール #1 がアプリケーションを含む複雑なルールであるため、ネットワークルール #2に一致するトラフィックにはTCPプロキシが適用されます。 このシナリオでTCPプロキシを無効にするためには、ネットワークルール#2を複雑なルール(ルール#1)の上に配置する必要があります。

PoP切断からの回復
SocketからPoPへのトンネルが切断された場合、Socketは同じPoPへの再接続を試みます。 Socketが再接続に成功すると、PoPがトンネルの状態を保持しているので接続が回復します。 Socketが同じPoPに接続できず、ネットワークルールでTCP加速が有効な場合、既存の接続の状態は失われます。 SocketがPoPへの接続を失うとき、PoPがTCPプロキシサーバとして機能するため、接続の状態が失われ、クライアントは新しい接続を開始する必要があります。 したがって、一時的な切断を耐えられるアプリケーション (例えばウェブアプリケーションやファイル共有) にはTCPプロキシの有効化を推奨します。
TCP加速のベストプラクティス
このセクションでは、特定のアプリケーションタイプに対してTCP加速を有効にする際のベストプラクティスについて説明します。
ウェブアプリケーションのためのTCP加速の有効化
一般的に、ウェブアプリケーションはクライアントレスであり、ウェブブラウザを使用してサーバに接続します。 CatoのTCP加速エンジンは、このトラフィックのパフォーマンスを大幅に向上させます。 ウェブアプリケーションのネットワークルールにはTCP加速の有効化をお勧めします。
ファイル共有アプリケーションのためのTCP加速の有効化
ファイル共有アプリケーションは、ネットワークのレイテンシやパケット損失による再送で問題を抱えることがあります。 ネットワーク内でのパソコン間のファイル共有(例えばリソース共有のためのSMBプロトコル)を使用している場合、CatoのTCP加速はファイル転送速度を大幅に改善できます。 これらのアプリケーションのネットワークルールに対してTCP加速の有効化をお勧めします。
センシティブなアプリケーションに対するTCP加速の無効化
一部のアプリケーションはネットワーク切断に対して感度が高く、切断後の回復が困難です。 これらのアプリケーションは、クライアントサーバアーキテクチャにおけるデスクトップレガシーアプリケーションです。 切断後、クライアントに新しい接続を開始させ、接続状態を失います。 例えば、既に最適化されたプロトコルを使用しているCitrixクライアントに対しては、このトラフィックに対するルールでTCP加速を無効化することをお勧めします。
TCPプロキシおよびTLSインスペクション
TLSインスペクション機能は、アンチマルウェアやIPSなどのセキュリティ機能のためにHTTPSトラフィックを復号化します。 この機能は、PoPをプロキシサーバとして使用し、悪意のあるファイルや脅威のためにトラフィックを検査します。 TLSインスペクションをアカウントで有効化すると、CatoはすべてのTLSトラフィックに対してTCPプロキシをアクティブ化します。 TLSインスペクションについての詳細は、「アカウントのためのTLSインスペクションポリシーの設定」を参照してください。
TCP加速の有効化や無効化は、TLSインスペクションの有効化とは関連しません。
Windows OSのためのTCP加速の微調整
このセクションでは、WindowsコンピュータのTCP設定を最適化して、ネットワークルールのTCP加速を向上させる方法を説明します。
TCPウィンドウスケーリングオプションの有効化
一部のWindowsオペレーティングシステムは、デフォルトのウィンドウサイズを64KBとして使用するように設定されています。 このウィンドウサイズは制限されており、パフォーマンスの問題やレイテンシーを引き起こす可能性があります。 Cato PoPはより効率的なデータ転送のために、デフォルトのウィンドウサイズより大きなTCPスタックを割り当てます。 したがって、WindowsコンピュータでTCPウィンドウスケーリングオプションを有効にすることを強くお勧めします。
注: 通常、TCPウィンドウスケーリングオプションはデフォルトで有効になっています。
TCPタイムスタンプオプションの有効化
Windowsオペレーティングシステムのデフォルト設定では、TCPタイムスタンプオプションはサポートされていません。 TCPタイムスタンプオプションを有効にして、パケットRTT測定を改善し、パケット損失を特定するのに役立てます。 このオプションは、パケット損失が発生した場合の再送タイマーの調整にも役立ちます。 WindowsコンピュータでTCPタイムスタンプを有効にすることをお勧めします。