# スマートNICオフロード
スマートNICオフロード(Smart NIC Offload)とは、プログラマブルなネットワークインターフェースカード(スマートNIC)の演算資源(専用プロセッサコア、SRAM、P4パイプライン等)を活用して、従来ホストCPUが担っていたネットワーク処理の一部または全部をNIC側で実行する設計手法である。全スタックオフロード(TOE: TCP Offload Engine)から部分的な固定機能オフロード(TSO/LRO等)まで多段階が存在する。AccelTCP(Moon ほか、NSDI 2020)はコネクション管理とパケットリレーのみを選択的にオフロードする「ステートフルオフロード」の中間的アプローチを提案した。(Source: [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]])
## 定義
スマートNICオフロードには以下の主要形態がある:
1. **部分的固定機能オフロード(Partial Fixed Offload)**: TSO(TCP Segmentation Offload)・LRO(Large Receive Offload)・チェックサム計算。大メッセージのDMAコストとCPU割り込み回数を削減する。短命コネクション・小メッセージには効果薄。
2. **フルスタックTOE(Full Stack TOE)**: TCPスタック全体をNICに移植。カーネルスタックの侵襲的変更が必要でバグ修正・アルゴリズム変更が困難。現在はほぼ採用されない。
3. **選択的ステートフルオフロード(Selective Stateful Offload)**: AccelTCP が提案する中間形態。ホストが制御の主導権を維持しつつ、ステートフル操作の特定サブセット(コネクション確立・切断・スプライシング)のみをNICにオフロードする。
4. **ネットワーク機能オフロード(NF Offload)**: OvS・BPFフィルタ・キーバリューストア等を直接NICで実行。
## 横断的知見
- **TCP プロトコル適合オーバーヘッドは「根本的なCPUサイクル浪費」**: 短命コネクションでは接続確立・切断がCPUサイクルの60.5%を占め、L7プロキシではDMA転送が性能の3.2〜6.3倍劣化要因となる。カーネルバイパス(DPDK/mTCP)でも解決できない問題の構造 (Source: [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]], §2)
- **スマートNICの進化がステートフルオフロードを可能にした**: 2014年頃のスマートNIC(複数コア・大容量メモリ・C/P4プログラミング対応)の登場で、従来「複雑すぎる」とされたコネクション管理オフロードが現実的になった。Agilio LX(NFP-6480、120コア、8MB IMEM + 8GB EMEM)が実証プラットフォーム (Source: [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]], §2.3)
- **TCBの単独所有権原則が状態一貫性問題を解決**: 2スタック間でのTCB共有が一貫性問題を引き起こすことへの対処として、任意時点で一方のみがTCBを所有し、オフロード要求と同時に所有権を移転する設計が有効 (Source: [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]], §3)
- **BlueField-3 は計測特化の後継プラットフォーム**: [[BlueField-3]] (NVIDIA)はDPA(Data-Path Accelerator)を搭載し、Pulse(ASPLOS 2026)ではマイクロ秒レベルのRDMA計測基盤として活用される。AccelTCP(2020)→BlueField-3系研究(2026+)でスマートNIC適用領域がネットワーク処理オフロードから計測・観測性へ拡大 (Source: [[@2026__ASPLOS__Pulse - Fine-grained and Non-intrusive LLM Training Monitoring via Microsecond-level Traffic Measurement]])
## 未解決の問い
- ステートフルオフロードはAIクラスタのRDMAトランスポート(RoCEv2)と組み合わせてどのような相乗効果をもたらすか?AccelTCPは標準TCP向けだが、RDMAオフロード([[RDMA]])との設計的類似点・相違点は何か?
- スマートNICの計算コスト($1,750 vs $440 通常NIC)はどのように変化しているか?2024年時点でのBlueField-3($500〜1,000程度)の普及により、コスト効率の議論はどう変わるか?
- P4 プログラマブルパイプラインとCコード実装の最適な分担点はどのワークロードでも有効か?AccelTCPの「P4でL3フォワーディング、CでステートフルTCP」という分割が一般化できる設計原則かどうか。
- Kernel 6.x のio_uring、XDP(eXpress Data Path)とステートフルNICオフロードはどう棲み分けるか?
## 関連
- [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]] — 定義の一次ソース
- [[BlueField-3]] — 後継スマートNICプラットフォーム(計測特化)
- [[RDMA]] — NICからのメモリアクセスオフロードの別系統
- [[Webロードバランシング]] — L7プロキシはAccelTCPの主要適用ユースケース
- [[eBPF]] — ホスト側カーネル内プログラマブル処理の補完技術
## 出典
- [[@2020__NSDI__AccelTCP - Accelerating Network Applications with Stateful TCP Offloading]] — Moon, Lee, Jamshed, Park / KAIST / Intel Labs / NSDI 2020