網路卡引數查詢及設定工具ethtool

onephone發表於2017-01-17

ethtool是用來查詢和設定網路卡驅動&硬體資訊的工具,功能很強大!Linux一般都會預設安裝,在進行網路除錯和網路效能分析時非常有用。提供統計資訊查詢、ring buffer設定、協議解除安裝設定、網路卡測試等等……

自己在進行DDoS攻擊模擬、分析和測試中經常使用!

簡單例項

以網路卡p5p2為例

  • 檢視NIC ring buffer大小, ethtool -g p5p2

        [root@globus03 20160924]# ethtool -g p5p2
        Ring parameters for p5p2:
        Pre-set maximums:
        RX:        4078
        RX Mini:    0
        RX Jumbo:    0
        TX:        4078
        Current hardware settings:
        RX:        2014
        RX Mini:    0
        RX Jumbo:    0
        TX:        4078
    
  • 設定NIC ring buffer大小,ethtool -G p5p2 rx 4078 詳細命令,ethtool -G|--set-ring devname [rx N] [rx-mini N] [rx-jumbo N] [tx N]

        [root@globus03 20160924]# ethtool -G p5p2 rx 4078
        [root@globus03 20160924]# ethtool -g p5p2
        Ring parameters for p5p2:
        Pre-set maximums:
        RX:        4078
        RX Mini:    0
        RX Jumbo:    0
        TX:        4078
        Current hardware settings:
        RX:        4078
        RX Mini:    0
        RX Jumbo:    0
        TX:        4078
    
  • 檢視網路卡驅動資訊 ethtool -i p5p2

        [root@globus03 20160924]# ethtool -i p5p2
        driver: bnx2x
        version: 1.710.51-0
        firmware-version: FFV7.12.19 bc 7.12.5 phy 1.45
        bus-info: 0000:06:00.1
        supports-statistics: yes
        supports-test: yes
        supports-eeprom-access: yes
        supports-register-dump: yes
        supports-priv-flags: yes
    
  • 檢視當前網路卡主要資訊,ethtool p5p2

        [root@globus03 20160924]# ethtool p5p2
        Settings for p5p2:
            Supported ports: [ TP ]
            Supported link modes:   100baseT/Half 100baseT/Full 
                                    1000baseT/Full 
                                    10000baseT/Full 
            Supported pause frame use: Symmetric Receive-only
            Supports auto-negotiation: Yes
            Advertised link modes:  100baseT/Half 100baseT/Full 
                                    1000baseT/Full 
                                    10000baseT/Full 
            Advertised pause frame use: Symmetric Receive-only
            Advertised auto-negotiation: Yes
            Link partner advertised link modes:  100baseT/Half 100baseT/Full 
                                                 1000baseT/Half 1000baseT/Full 
                                                 10000baseT/Full 
            Link partner advertised pause frame use: No
            Link partner advertised auto-negotiation: Yes
            Speed: 10000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 17
            Transceiver: internal
            Auto-negotiation: on
            MDI-X: Unknown
            Supports Wake-on: g
            Wake-on: d
            Current message level: 0x00000000 (0)
    
    
    
        Link detected: yes
    
  • 網路卡測試命令, ethtool -t p5p2 online

詳細命令為ethtool -t|--test devname [offline|online|external_lb],其中online表示不需要重啟網路卡的測試,offline表示要重啟網路卡

        [root@globus03 ~]# ethtool -t p5p2 online
        The test result is PASS
        The test extra info:
        register_test (offline)         0
        memory_test (offline)           0
        int_loopback_test (offline)     0
        ext_loopback_test (offline)     0
        nvram_test (online)             0
        interrupt_test (online)         0
        link_test (online)              0

統計資訊

  • 查詢網路卡接收資料包資訊,ethtool -S em2 | grep -i error

        [root@globus03 ~]# ethtool -S em2 | grep -i error
             rx_fcs_errors: 0
             rx_align_errors: 0
             rx_frame_too_long_errors: 0
             rx_in_length_errors: 0
             rx_out_length_errors: 0
             tx_mac_errors: 0
             tx_carrier_sense_errors: 0
             tx_errors: 0
    
  • 查詢網路卡接收的資料包資訊,ethtool -S em2 | grep -i error

        [root@globus03 ~]# ethtool -S em2 | grep -i rx
             rx_octets: 0
             rx_fragments: 0
             rx_ucast_packets: 0
             rx_mcast_packets: 0
             rx_bcast_packets: 0
             rx_fcs_errors: 0
        …………
    

協議解除安裝

offload 是將本來該作業系統進行的一些資料包處理(如分片、重組等)放到網路卡硬體中去做,降低系統 CPU 消耗的同時,提高處理的效能。

  • 查詢網路卡協議解除安裝(offload)資訊, ethtool -k p5p2
  • 資訊說明
    1. LSO/LRO 分別對應到傳送和接收兩個方向,是 Large Segment OffloadLarge Receive Offload
    2. LSO 在傳送資料超過 MTU 限制的時候(太容易發生了),OS 只需要提交一次傳輸請求給網路卡,網路卡會自動的把資料拿過來,然後進行切,並封包發出,發出的網包不超過 MTU 限制。 當網路卡收到很多碎片包的時候,LRO 可以輔助自動組合成一段較大的資料,一次性提交給 OS處理。 一般的,LSO 和 LRO 主要面向 TCP 報文。
    3. GSO/GRO Generic Segmentation Offload 和 Generic Receive Offload,分別比 LSO 和 LRO 更通用,自動檢測網路卡支援特性,支援分包則直接發給網路卡,否則先分包後發給網路卡。這樣大資料包只需走一次協議棧,而不是被分割成幾個資料包分別走,提高了效率。新的驅動一般用 GSO/GRO。
    4. TSO/UFO TCP Segmentation OffloadUDP fragmentation offload,分別對應 TCP 報文和 UDP 報文。 很典型的,TCP 協議中就考慮了分片存在的情況,往往是切分 TCP 的資料包,叫做 TSO。而一般的情況,則稱為 LSO 或者 GSO。 對於其他不支援切片的協議例如 UDP,則只能進行 IP 層上的切片。
    5. RSS RSS(Receive Side Scaling),是一項網路卡的新特性,俗稱多佇列。具備多個RSS佇列的網路卡,可以將不同的網路流分成不同的佇列,再分別將這些佇列分配到多個CPU核心上進行處理,從而將負荷分散,充分利用多核處理器的能力。
  • 全部資訊顯示

        [root@globus03 ~]# ethtool -k p5p2
        Features for p5p2:
        rx-checksumming: on
        tx-checksumming: on
            tx-checksum-ipv4: on
            tx-checksum-ip-generic: off [fixed]
            tx-checksum-ipv6: on
            tx-checksum-fcoe-crc: off [fixed]
            tx-checksum-sctp: off [fixed]
        scatter-gather: on
            tx-scatter-gather: on
            tx-scatter-gather-fraglist: off [fixed]
        tcp-segmentation-offload: on
            tx-tcp-segmentation: on
            tx-tcp-ecn-segmentation: on
            tx-tcp6-segmentation: on
        udp-fragmentation-offload: off [fixed]
        generic-segmentation-offload: on
        generic-receive-offload: on
        large-receive-offload: off
        rx-vlan-offload: on [fixed]
        tx-vlan-offload: on
        ntuple-filters: off [fixed]
        receive-hashing: on
        highdma: on [fixed]
        rx-vlan-filter: off [fixed]
        vlan-challenged: off [fixed]
        tx-lockless: off [fixed]
        netns-local: off [fixed]
        tx-gso-robust: off [fixed]
        tx-fcoe-segmentation: off [fixed]
        tx-gre-segmentation: on
        tx-ipip-segmentation: on
        tx-sit-segmentation: on
        tx-udp_tnl-segmentation: on
        tx-mpls-segmentation: off [fixed]
        fcoe-mtu: off [fixed]
        tx-nocache-copy: off
        loopback: off
        rx-fcs: off [fixed]
        rx-all: off [fixed]
        tx-vlan-stag-hw-insert: off [fixed]
        rx-vlan-stag-hw-parse: off [fixed]
        rx-vlan-stag-filter: off [fixed]
        busy-poll: on [fixed]
    
  • 協議解除安裝設定 ethtool -K eth0 gso off(接收GSO) 詳細命令ethtool -K|--features|--offload devname feature on|off ...

相關文章