關於網卡特性TSO、UFO、GSO、LRO、GRO


我們來看下關於網卡特性的解釋,不過記住GSO和GRO兩個特性就好。

TSO(TCP Segmentation Offload),是利用網卡對TCP數據包分片,減輕CPU負荷的一種技術,也有人叫 LSO (Large segment offload) ,TSO是針對TCP的,UFO是針對UDP的。如果硬件支持 TSO功能,同時也需要硬件支持的TCP校驗計算和分散/聚集 (Scatter Gather) 功能。如果網卡支持TSO/GSO,可以把最多64K大小的TCP payload直接往下傳給協議棧,此時IP層也不會進行segmentation,網卡會生成TCP/IP包頭和幀頭,這樣可以offload很多協議棧上的內存操作,節省CPU資源,當然如果都是小包,那么功能基本就沒啥用了。

GSO(Generic Segmentation Offload),GSO是TSO的增強 ,GSO不只針對TCP,對任意協議。比TSO更通用,推遲數據分片直至發送到網卡驅動之前,此時會檢查網卡是否支持分片功能(如TSO、UFO),如果支持直接發送到網卡,如果不支持就進行分片后再發往網卡。

LRO(Large Receive Offload),通過將接收到的多個TCP數據聚合成一個大的數據包,然后傳遞給網絡協議棧處理,以減少上層協議棧處理 開銷,提高系統接收TCP數據包的能力。

GRO(Generic Receive Offload),跟LRO類似,克服了LRO的一些缺點,更通用。后續的驅動都使用GRO的接口,而不是LRO。

            在系統中可以通過ethtool命令來進行查看,如下:

#ethtool -k eth0

generic-segmentation-offload: on

generic-receive-offload: on

TSO、UFO、GSO是對應網絡發送, LRO、GRO是在接收方向上。

     我們只需要記住GSO/GRO兩個關鍵字就好了,因為GSO是TSO/UFO的升級,GRO是LRO的升級。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM