TCPセグメンテーションオフロード(ティーシーピーセグメンテーションオフロード)とは | 意味や読み方など丁寧でわかりやすい用語解説
TCPセグメンテーションオフロード(ティーシーピーセグメンテーションオフロード)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
TCPセグメンテーションオフロード (ティーシーピーセグメンテーションオフロード)
英語表記
TCP Segmentation Offload (ティーシーピーセグメンテーションオフロード)
用語解説
TCPセグメンテーションオフロード(TSO)とは、コンピューターのOS(オペレーティングシステム)が行うTCPデータ転送におけるセグメント分割処理の一部を、ネットワークインターフェースカード(NIC)に肩代わりさせる技術である。この技術の主な目的は、CPUの負荷を軽減し、ネットワークのスループットを向上させることにある。特にギガビットイーサネットや10ギガビットイーサネットといった高速なネットワーク環境において、データ転送に伴うCPUの処理量が増大する問題に対応するために開発された。簡単に言えば、OSが担っていた煩雑な処理を、そのための専用回路を持つNICに任せることで、コンピューター全体の効率を高める仕組みである。
まず、TSOが導入される前の一般的なTCPデータ転送の流れを見てみよう。アプリケーションから大量のデータが送信される際、OSのTCP/IPスタックは、そのデータをネットワークの最大転送単位(MTU)に合わせて小さなセグメントに分割する。例えば、イーサネットのMTUが1500バイト(ヘッダ部分を除くデータ本体のサイズ)であれば、アプリケーションから送られた数メガバイトのデータは、多数の1500バイト以下のセグメントに細かく分けられることになる。このMTUは、一度に送れるデータの最大のサイズを定義するもので、ネットワークの種類によって異なる。その後、それぞれのセグメントに対し、TCPヘッダとIPヘッダが付与される。これらのヘッダには、送信元や宛先のIPアドレス、ポート番号、シーケンス番号、データ長、チェックサムなどの情報が含まれ、データが正しく相手に届くために不可欠な情報である。OSのCPUは、このセグメント分割と、それぞれのセグメントにヘッダを付与する処理を、送信されるデータ量に応じて繰り返し実行する必要がある。この一連の処理は、データ量が増えれば増えるほどCPUに大きな負担をかけ、特にデータセンターのサーバーなど、高速なネットワークを扱う環境では、CPUがデータ転送処理だけで飽和してしまうことが課題となっていた。CPUの処理能力の向上よりもネットワークの転送速度の向上が速かったため、CPUがボトルネックになりやすかったのだ。
そこで登場するのがTCPセグメンテーションオフロード(TSO)である。TSOが有効な環境では、OSのTCP/IPスタックは、アプリケーションから受け取った大量のデータをMTUに合わせて細かく分割する処理を基本的に行わない。代わりに、OSは数百バイトから最大64キロバイトといった、より大きな塊のデータを、まだTCPヘッダやIPヘッダを付与しない状態で直接NICへと渡す。この大きな塊のデータは「ラージセグメント」と呼ばれる。NICは、このラージセグメントを受け取ると、そこから自身で各セグメントをMTUサイズに分割し、それぞれの分割されたセグメントに適切なTCPヘッダとIPヘッダを付与する処理を自身で行う。さらに、IPアドレスやTCPのポート番号、シーケンス番号などの計算もNICが行う。つまり、OSのCPUは、大量のデータに対して何度もセグメント分割とヘッダ付与のループ処理を実行する必要がなくなり、単に大きなデータを一度NICに渡すだけで済むようになるのだ。これにより、CPUはこれらの煩雑な処理から解放され、他のアプリケーションの実行やシステム全体の管理といった、より重要なタスクにリソースを集中できるようになる。
TSOの導入による最大のメリットは、前述の通りCPU負荷の大幅な軽減である。特に大量のデータを高速で転送するサーバーや仮想化環境では、このCPU負荷軽減の効果は非常に大きい。CPUの空きリソースが増えることで、サーバー全体のパフォーマンスが向上し、より多くのアプリケーションやサービスを同時に実行できるようになる。結果として、ネットワークのスループットも向上し、データ転送がより効率的に行われる。これは、OSとNIC間のデータ転送回数が減ることも一因である。多数の小さなセグメントを個別にNICに渡す代わりに、大きな塊を一度に渡すことで、OSとNIC間のやり取りのオーバーヘッドが減少する。また、CPU使用率が下がることで、サーバー全体の電力消費量の抑制にも寄与する可能性がある。ただし、TSOを利用するには、その機能に対応したNICと、適切なドライバーがシステムにインストールされている必要がある。TSO機能を持つNICは、専用のハードウェアロジックを内蔵しているため、そうでないNICではこのオフロードは行えない。また、TSOは基本的に送信側のオフロード技術であるが、受信側にも同様の考え方で処理をオフロードする技術(Large Receive Offload: LROやReceive Segment Offload: RSO)が存在する。これらの技術も、受信したデータをNIC側で結合してからOSに渡すことで、CPU負荷を軽減する効果がある。万が一、ネットワークのトラブルが発生した場合、TSOなどのオフロード機能を一時的に無効にして問題を切り分けることもあるため、その存在と役割を理解しておくことはシステム管理者にとって非常に重要である。