# TCP高速化サービス
## 定義
TCP高速化サービスは、TCPの共通ケースを専用CPUまたは専用実行コンポーネントへ分離し、接続制御・輻輳制御・タイムアウトなどの複雑な処理を別の制御経路へ残す設計パターンである。
TASはこの分離をOSサービスとして実装し、POSIXソケット互換性、未信頼アプリケーションへのポリシー強制、負荷比例のCPU割当を同時に扱う。(Source: [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]])
## 設計軸
- **共通処理と例外処理の境界**: 順序どおりのデータ交換をfast pathへ置き、接続確立・異常パケット・タイムアウトをslow pathへ置く。
- **ポリシーの所有者**: アプリケーションへACKや輻輳制御を委譲せず、信頼された制御側が方針を決め、fast pathが強制する。
- **API互換性**: POSIXソケットを維持するか、IXやmTCPのような低レベルAPIへ寄せるか。
- **資源比例性**: NICキュー、RSS、CPUコア、アプリケーションコンテキストを負荷に応じて増減する。
- **状態の局所性**: per-flow状態をキャッシュに保持し、共有キュー・ロック・大きな状態機械の参照を共通経路から外す。
## 横断的知見
- **TCP高速化はスタックの移動ではなく責任の分割として整理できる**: mTCPはTCP処理をアプリケーション側のコアローカルスレッドへ移し、AccelTCPは状態付きTCP処理の一部をSmartNICへ移す。一方TASは共通処理をOSサービスへ切り出し、制御ポリシーをホスト側slow pathに残す。(Source: [[@2014__NSDI__mTCP - a Highly Scalable User-level TCP Stack for Multicore Systems]], [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]], [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]])
- **安全性・互換性・性能の境界は、fast pathが何を強制するかで決まる**: mTCPや一般的なカーネルバイパスはアプリケーションの自由度を増やす代わりに、輻輳制御を信頼する必要がある。TASはACK、ECN、TCPタイムスタンプ、レート制御をfast pathまたはslow pathの管理下に置き、POSIXソケットも維持する。(Source: [[@2014__NSDI__mTCP - a Highly Scalable User-level TCP Stack for Multicore Systems]], [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]])
- **小さい共通経路と大きい制御経路の分離は、柔軟性とキャッシュ効率の交換である**: TASは1フロー102バイトの状態をfast pathに保持し、接続管理・タイムアウト・輻輳制御をslow pathへ置く。iipが統合側へ実行ループ・NIC機能・メモリ責任を開くのに対し、TASはOSサービス側がポリシーと高速経路を所有する。(Source: [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]], [[@2024__SIGCOMM CCR__iip - An Integratable TCP IP Stack]])
- **平均CPUコストとテールレイテンシは別の最適化軸である**: TASは短いRPCのパケット処理、共有状態、パイプライン停滞を減らす。後続のLinux測定は、十分に最適化された条件ではsoftIRQ計上、CPU公平性、割り込み調整がテールを支配し、ユーザー空間TASとの差を小さくできることを示す。(Source: [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]], [[@2026__SIGCOMM__Understanding Host Network Stack Latency]])
- **負荷比例性は性能機構であると同時にテール要因でもある**: TASはCPU使用率を監視してfast pathコアを増減できるが、コア再配置中に要求レイテンシが一時的に約30%上昇する。専用資源を常時確保する方式と、共有CPU上の資源管理を改善する方式には、容量コストと遷移時レイテンシのトレードオフがある。(Source: [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]], [[@2026__SIGCOMM__Understanding Host Network Stack Latency]])
## 未解決の問い
- 400Gbps級NIC、DPU、SmartNIC、現行Linuxで、TAS型fast path/slow path分離のどこが新たなボトルネックになるか。
- `io_uring`、AF_XDP、eBPF、SmartNICオフロードを同じ責任分割モデルへ写像したとき、ACK・輻輳制御・接続状態の所有者をどこに置くべきか。
- TLS、長RTT、頻繁な接続制御、インターネット規模の損失を含む通信で、データセンター向け共通ケースの仮定をどこまで維持できるか。
- CPUコアの増減による一時的テールを、予測型割り込み調整やネットワーク認識型スケジューリングと組み合わせて抑えられるか。
- per-flow状態のキャッシュ局所性と、数百万接続を収容するメモリ容量・接続バッファ再配置を一つの資源モデルで扱えるか。
## 関連
- [[TAS]] — TCP共通処理をOSサービスとして実装した具体例。
- [[ユーザーレベルTCPスタック]] — TCP処理をアプリケーション空間へ移す系譜。
- [[カーネルバイパスネットワーキング]] — DPDKなどでカーネル経路を迂回する設計。
- [[TCP IPスタック統合|TCP/IPスタック統合]] — TCP処理の責任境界と実行ループを統合側で選ぶ問題。
- [[ホストネットワークスタック性能]] — データコピー、NUMA、キャッシュ、CPU資源管理を含む上位の性能領域。
## 出典
- [[@2019__EuroSys__TAS - TCP Acceleration as an OS Service]]
- [[@2014__NSDI__mTCP - a Highly Scalable User-level TCP Stack for Multicore Systems]]
- [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]]
- [[@2024__SIGCOMM CCR__iip - An Integratable TCP IP Stack]]