TSO 讓網卡硬體接管 TCP 分段重組,CPU 僅需提交大塊資料 (如 64KB),網卡依 MTU 自動切割成多個 MSS 大小的 TCP 封包並補齊標頭。本文從數位邏輯電路角度,描述 TSO 硬體引擎的核心模組:封包緩衝、序號產生器、檢核和計算、標頭模板引擎、DMA 搬移控制器。

TSO 標誌,含完整 TCP 負載 (≤ 64KB)、模板標頭 (IP/TCP 固定欄位)。MSS 位元組數。// skb 準備
skb_shinfo(skb)->gso_size = mss; // 設定分段大小
skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;
skb->ip_summed = CHECKSUM_PARTIAL; // 硬體計算檢核和
// 網卡驅動 xmit
netdev_start_xmit(skb, dev) {
if (skb_is_gso(skb))
hw_tso_segment(skb); // 觸發硬體 TSO 引擎
}
TSO 是現代高速網卡 (10GbE+) 的標配功能,配合 LRO (Large Receive Offload) 實現雙向卸載。