TCP最適化によるユーザーエクスペリエンスの改善

ビジネス推進本部 応用技術部
コアネットワークチーム
山口 智史

 今日のインターネットにおけるTCP(Transmission Control Protocol)の役割は安定したサービス提供をする上で必要不可欠なものとなっており、ウェブ閲覧、ファイル転送、動画、ゲーム、SNS等、全Trafficの8割以上の通信に利用されています。
 TCPはデータ転送の信頼性が高いことから多くのアプリケーションで利用されておりますが、近年はNetwork環境が複雑化し、その処理の重さから輻輳を招き、ユーザーのQoE(Quality of Experience)を悪化させる原因の一つとなっています。本コラムでは、TCP通信の最適化手法を実際の商材(Sandvine)を通じてご紹介致します。

TCPとは

 TCPはTransmission Control Protocolの略称であり、インターネット上でIPの上位層として標準的に利用されているプロトコルです。転送効率よりも確実性が重視される用途でよく利用され、信頼性の高い通信を実現します。また、コネクション型で通信相手の状況を確認して接続を確立し、データの伝送が終わると切断するという手順を踏みます。通信相手が確実にデータを受け取ったかを確認したり、データの欠落や破損を検知して再送したり、届いたデータを送信順に並べ直したりといった制御を行います。

 しかし、通信の信頼性が高い分、複雑な処理を実施するため転送効率は良くありません。アプリケーションやサービスを利用する上で、通信経路の品質が悪いとデータの到着に遅延が生じ、ユーザーのQoEを悪化させる可能性があります。

TCPの問題点

 TCPはその性質上、送信側および受信側双方の連携によって通信を行います。よって、片方のNetwork帯域に充分余裕があっても、もう片方のNetworkが輻輳しているとデータ送受信効率が悪くなってしまいます。一度輻輳が発生すると、TCP輻輳ウィンドウサイズの調整が入り、帯域を有効活用できなくなることがあります(図1.TCP輻輳ウィンドウサイズ推移参照)。

y1

図1. TCP輻輳ウィンドウサイズ推移



 また、通信経路の途中でパケット廃棄が発生すると、パケット再送信が必要となり、これも帯域を有効活用できなくなる原因の一つとなります(図2. ネットワーク輻輳時の悪循環参照)。

y2

図2. ネットワーク輻輳時の悪循環



 これらが頻発しますと、ユーザーのQoEに大きな影響を与えてしまいます。

TCP最適化

 上記問題を解決するための技術の1つにTCP通信を最適化する手法、「TCP Accelerator」があります。

 TCP AcceleratorはL2透過型で1台の設置で動作可能ですので、既存Networkに影響を与えず導入が可能です。また、ソフトウェアとして提供されるため、任意のServerや、Cloud上での展開も可能となります。TCP AcceleratorはTCPのFlowを制御するのみで、データ(ペイロード)自体を見ることはありませんので、通信の秘密を阻害することはありませんし、暗号化されている通信においても適用が可能となります。

 TCP Acceleratorは大きく以下の3つの機能を実装しています。

(1)TCP FlowのACK代理応答
ACKの代理応答を制御することで、通信相手側の伝送速度をコントロールし、次のデータ送信までの時間を速くします(図3.ACK代理応答参照)。

y3

図3. ACK代理応答



(2)TCP Data再送信要求
自身でTCPデータのLossを検知した際、SACK(Selective ACK)を送信し、データ送信元にLossしたデータの再要求を行います(図4.SACK代理応答)。

y4

図4. SACK代理応答



(3)TCP Flow DataのBuffering
SACKを受信した際、自身のBuffer内に該当データを持っていたら、実際のSACK先にデータ要求せずに自身のBufferから要求データを送信します(図5.データ再送信参照)。

y5

図5. データ再送信



これらの機能の実装により、帯域を有効活用し、ユーザーのQoEを向上させることが可能となります。

TCP最適化装置設置箇所

 TCP Acceleratorの設置箇所は基本的にどこでも問題ありませんが、最もTCP最適化の効果が大きくなるのは、低帯域ネットワークと高帯域ネットワークの境界点となります。この境界点は元々TCPの輻輳が発生しやすいポイントのため、TCP Acceleratorを設置することでの効果が高くなります(図6. TCP Accelerator設置点 DPIなし参照)。

 また、一歩進んだ使い方としてDPI製品と組み合わせて使用する方法もあります。DPI製品と組み合わせることで、TCP最適化をするアプリケーションを特定し、任意のアプリケーションのTCP速度を早くすることでサービスの差別化も可能となります。例えば、プレミアムユーザーだけオンラインゲームの通信を早くする等といったことが可能となります(図6. TCP Accelerator設置点 DPIあり参照)。

y6

図6. TCP Accelerator設置点



※DPIに関しての詳細はDPI入門を参照してください。

TCP Accelerator動作

 それではSandvine 社が提供する TCP AcceleratorではどのようなTCP最適化処理が行われているかをご紹介します。

 図7で『TCP Acceleratorシーケンス例1』を示します。ClientからのACKをTCP Acceleratorが代理応答することで、ServerからのData送信を速くし、ClientのData取得までの時間が短縮されます。

y7

図7. TCP Acceleratorシーケンス例1



以下がシーケンス例1の詳細となります。

①TCP 3way handshakeが確立されます。TCP AcceleratorはSYNパケット受信のタイミングで、該当パケットの5-tupple情報(送信元IPアドレス、宛先IPアドレス、送信元ポート番号、宛先ポート番号、プロトコル)を内部に保存します。この情報は後のACK代理応答時に使用します。なお、SYN/ACKパケットはそのまま透過させ、TCP Acceleratorでは終端しません。

②TCP AcceleratorはServerからのData送信パケットを一旦終端し、自身でバッファした上で、Client側の輻輳状況を監視し、適切なタイミングでClient側に送信します。

③ServerからのData送信パケットを受け取ったTCP AcceleratorはServer対してClient ACKの代理応答を行います。それによりServerは実際のClient ACKを待つより高速に次のData送信が可能となります。

④Clientから送信されたACKは既にServer応答済みのためTCP Acceleratorで廃棄します。これによりServer側にACKが二重で届くことはありません。

 続いて図8で『TCP Acceleratorシーケンス例2』を示します。ServerからのData送信の一部がDropされた例です。TCP Acceleratorに届く前にパケットDropされていれば、TCP AcceleratorがSACKの代理応答を行い、TCP Acceleratorを通過した後であれば、自身がDataをBufferしているので、ClientからのSACKにTCP Acceleratorが直接応答します。これによりClientのData取得までの時間短縮と、ネットワーク利用率の向上が図れます。

y8

図8. TCP Acceleratorシーケンス例2



以下がシーケンス例2の詳細となります。

①ServerからのData送信に対して例1同様、TCP AcceleratorはACK代理応答を行います。これにより実際のClient ACKよりも早くServerは次のData送信を始めることが可能となります。

②ServerからのData送信の一部がLossしたとします。その場合TCP AcceleratorがTCPのData Lossを認識し、Serverに対してSACKで失われたDataの再送要求を行います。それによりServerは実際のClientがData Lossを認識するより早くDataの再送を行うことが可能となります。

③仮にその再送Dataパケットが再度欠けてしまったとします。その欠けたタイミングがTCP Acceleratorを透過した後であれば、該当DataパケットはTCP Accelerator内でBufferされています。その場合、ClientからのSACK要求に対して、TCP Accelerator内のBufferから直接応答が可能となります。

TCP Accelerator効果

 TCP Accelerator検証結果について『図9.TCP Packet Data Size毎最適化効果』に示します。同一のTCP環境で、TCP Acceleratorが有る場合と無い場合でのPacket Data Size毎の最大帯域(kbps)について纏めました。全てのPacket Data SizeでTCP Acceleratorの効果を確認でき、大きければ大きいほど効果が高いことが確認できます。

y9

図9.TCP Packet Data Size毎最適化効果


 続いて別の視点での検証結果について『図10.TCP Round Trip Time測定』に示します。TCP Sessionサンプルをキャプチャしたものを長時間流し、TCP Acceleratorが有る場合と無い場合でのRTT(Round Trip Time)値を計測しました。結果として、全てのサンプルでRTT値が低くなり、また、RTTの分散幅も小さくなっていることから、よりQoEが安定した結果となっています。

y10

図10.TCP Round Trip Time測定


まとめ

 今回ご紹介したTCP最適化手法の1つ「TCP Accelerator」を導入することで、TCP通信の効率を上げ、ユーザーのQoEを改善可能です。この手法はネットワーク環境・品質に改善が必要と思われるケースでより効果を発揮します。例えば、MVNO等の限られた回線帯域を多くのモバイルユーザーでシェアして使用しているような環境での効果がより高くなります。是非、今後の導入について検討いただければと思います。
 また、Sandvine社TCP Accelerator製品にご興味がございましたら弊社担当営業までご連絡頂ければと思います。

執筆者プロフィール

山口 智史
ネットワンシステムズ株式会社 ビジネス推進本部 応用技術部 コアネットワークチーム所属。

ソフトウェア開発会社に新卒入社し、Router/Switchの開発に従事。その後、ソフトウェア開発会社の経営悪化により、ネットワンシステムズに入社。ネットワンシステムズでは、DPIプロダクト担当として評価・検証および様々な案件サポートに従事し、今に至る。なお、前職のソフトウェア開発会社は、リーマンショックの経営悪化に加え、社長の脱税が発覚し倒産した。

・情報処理「ネットワークスペシャリスト」
・情報処理「情報セキュリティスペシャリスト」
・情報処理「応用情報技術者」
・モバイル技術検定1級
・ORACLE MASTER Gold Database 11g

イベント/レポート

pagetop