Linux 網卡特性配置ethtool詳解


轉載於:https://www.cnblogs.com/danxi/p/6591885.html


ethtool 常用命令如下,比如對eth0的操作:

ethtool eth0       //查詢ethx網口基本設置,其中 x 是對應網卡的編號,如eth0、eth1等等
ethtool –h        //顯示ethtool的命令幫助(help)
ethtool –i eth0    //查詢eth0網口的相關信息
ethtool –d eth0    //查詢eth0網口注冊性信息
ethtool –r eth0    //重置eth0網口到自適應模式
ethtool –S eth0    //查詢eth0網口收發包統計
ethtool –s eth0 [speed 10|100|1000] [duplex half|full]  [autoneg on|off]        //設置網口速率10/100/1000M、設置網口半/全雙工、設置網口是否自協商

我這里主要想發掘一下ethtool -k 相關的內容,以下命令在ubuntu 14.04上親測:

1、rx-checksumming: off      

    接收側硬件校驗和計算,如能設置為on,表示網卡支持該特性,命令: ethtool -K eth0 rx-checksum on|off

2、tx-checksumming: on      

    發送側硬件校驗和計算,如能設置為on,表示網卡支持該特性,命令: ethtool -K eth0 tx-checksum-ip-generic on|off

3、scatter-gather: on          

    分散/聚集 (Scatter Gather) 功能,是網卡要支持TSO的必要條件之一。

4、tcp-segmentation-offload: on 

    簡稱TSO,是一種利用網卡對TCP數據包分片,減輕CPU負荷的一種技術,有時也被叫做 LSO (Large segment offload) ,TSO是針對TCP的,UFO是針對UDP的。如果硬件支持 TSO功能,同時也需要硬件支持的TCP校驗計算和分散/聚集 (Scatter Gather) 功能。命令: ethtool -K eth0 tso on|off

     在不支持TSO的網卡上,TCP層向IP層發送數據會考慮mss,使得TCP向下發送的數據可以包含在一個IP分組中而不會造成分片, mss是在TCP初始建立連接時由網卡MTU確定並和對端協商的,所以在一個MTU=1500的網卡上,TCP向下發送的數據不會大於min(mss_local, mss_remote)-ip頭-tcp頭。
      網卡支持TSO時,TCP層會逐漸增大mss(總是整數倍數增加),當TCP層向下發送大塊數據時,僅僅計算TCP頭,網卡接到到了IP層傳下的大數據包后自己重新分成若干個IP數據包,添加IP頭,復制TCP頭並且重新計算校驗和等相關數據,這樣就把一部分CPU相關的處理工作轉移到由網卡來處理。

5、udp-fragmentation-offload: off

    簡稱UFO,是網卡對udp提供的類似TSO的技術。 命令:ethtool -K eth0 ufo on | off

    在我的網卡上不支持這個特性,所以命令執行失敗是這樣的:

root@ubuntu:~# ethtool -K eth0 ufo on
Cannot change udp-fragmentation-offload
Could not change any device features

6、generic-segmentation-offload: on

     簡稱GSO,它比TSO更通用,基本思想就是盡可能的推遲數據分片直至發送到網卡驅動之前,此時會檢查網卡是否支持分片功能(如TSO、UFO), 如果支持直接發送到網卡,如果不支持就進行分片后再發往網卡。這樣大數據包只需走一次協議棧,而不是被分割成幾個數據包分別走,這就提高了效率。命令: ethtool -K eth0 gso on | off

7、large-receive-offload: off

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

8、generic-receive-offload: on

    簡稱GRO,基本思想跟LRO類似,克服了LRO的一些缺點,更通用。后續的驅動都使用GRO的接口,而不是LRO。

 

附:

RSS(Receive Side Scaling),是一項網卡的新特性,俗稱多隊列。具備多個RSS隊列的網卡,可以將不同的網絡流分成不同的隊列,再分別將這些隊列分配到多個CPU核心上進行處理,從而將負荷分散,充分利用多核CPU的能力。

 

 參考:

http://www.winyao.com/solution_show.asp?id=224


免責聲明!

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



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