ethool的使用
ethtool命令
- 网络配置
- ethtool命令用于获取以太网卡的配置信息,或者修改这些配置。这个命令比较复杂,功能特别多
语法
- ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX
- ethtool [-A] ethX [autoneg on|off] [rx on|off] [tx on|off]
- ethtool [-C] ethX [adaptive-rx on|off] [adaptive-tx on|off] [rx-usecs N] [rx-frames N] [rx-usecs-irq N] [rx-frames-irq N] [tx-usecs N] [tx-frames N] [tx-usecs-irq N] [tx-frames-irq N] [stats-block-usecs N][pkt-rate-low N][rx-usecs-low N] [rx-frames-low N] [tx-usecs-low N] [tx-frames-lowN] [pkt-rate-high N] [rx-usecs-high N] [rx-frames-high N] [tx-usecs-high N] [tx-frames-high N] [sample-interval N]
- ethtool [-G] ethX [rx N] [rx-mini N] [rx-jumbo N] [tx N]
- ethtool [-e] ethX [raw on|off] [offset N] [length N]
- ethtool [-E] ethX [magic N] [offset N] [value N]
- ethtool [-K] ethX [rx on|off] [tx on|off] [sg on|off] [tso on|off]
- ethtool [-p] ethX [N]
- ethtool [-t] ethX [offline|online]
- ethtool [-s] ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off] [port tp|aui|bnc|mii] [phyad N] [xcvr internal|external]
- [wol p|u|m|b|a|g|s|d...] [sopass xx:yy:zz:aa:bb:cc] [msglvl N]
选项
- -a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
- -A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。
- -c display the Coalesce information of the specified ethernet card。
- -C Change the Coalesce setting of the specified ethernet card。
- -g Display the rx/tx ring parameter information of the specified ethernet card。
- -G change the rx/tx ring setting of the specified ethernet card。
- -i 显示网卡驱动的信息,如驱动的名称、版本等。
- -d 显示register dump信息, 部分网卡驱动不支持该选项。
- -e 显示EEPROM dump信息,部分网卡驱动不支持该选项。
- -E 修改网卡EEPROM byte。
- -k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。
- -K 修改网卡Offload参数的状态。
- -p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。
- -r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation。
- -S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
- -t 让网卡执行自我检测,有两种模式:offline or online。
- -s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。
数据来源
- Ethtool命令显示的信息来源于网卡驱动层,即TCP/ip协议的链路层。该命令在Linux内核中实现的逻辑层次为:
- 最重要的结构体struct ethtool_ops,该结构体成员为用于显示或修改以太网卡配置的一系列函数指针,见下表中的第二列。
- 网卡驱动负责实现(部分)这些函数,并将其封装入ethtool_ops结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。
Ethtool命令选项
、struct ethtool_ops成员函数
、Ethtool命令显示参数的来源
,三者间的对应关系如下表所示:
命令选项 | struct ethtool_ops成员函数 | Ethtool命令显示参数的来源(以网卡驱动BNX2为例) |
---|---|---|
无 -s | get_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel | 从网卡寄存器中获得网卡速度等信息,可配置。 |
-a -A | get_pauseparam set_pauseparam | 从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff,可配置。 |
-c -C | get_coalesceset_coalesce | 从网卡寄存器中获得coalescing参数:TX/RX一个数据包后,推迟发生TX/RX中断的时间(us)/数据包个数。—减小该值可以提高网卡的响应时间。 当rx-usecs&rx-frames同时被设为0时,RX中断停止。 当tx-usecs&tx-frames同时被设为0时,TX中断停止。 |
-g -G | get_ringparam set_ringparam | 除当前TX/RX ring的值(从网卡寄存器中读取得到,可配置)外,其它为网卡bnx2自己固定的信息。 |
-k -K | get_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso | 显示信息从保存该状态的变量中读取得到,没有对应的寄存器。因此,TX/RX校验等模块一直处于on状态,实际上是无法修改的。 |
-i | get_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len] |
网卡bnx2自己固定的信息,如: ——————————————————– driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0 ——————————————————– |
-d | get_drvinfoget_regs | 不支持,即bnx2中没有实现函数get_regs。 |
-e -E | get_eepromset_eeprom | 不支持,即bnx2中没有实现函数get_eeprom。 |
-r | nway_reset | 配置网卡MII_BMCR寄存器,重启Auto negotiation模块。查看自适应模式 |
-p | phys_id | 配置网卡BNX2_EMAC_LED寄存器,实现LED闪功能。 |
-t | self_test | 通过配置网卡寄存器,逐一测试网卡的硬件模块:registers,memory,loopback,Link stat,interrupt。 |
-S | get_ethtool_stats | 显示信息来源于网卡驱动中的结构体变量stats_blk。(网卡通过DMA方式,将寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的数据实时地读取到结构体变量struct statistics_block *stats_blk中。) —显示的数据都是从网卡寄存器中统计得到的,各项的含义需查询网卡(芯片)手册。 |
由上可见,ethtool命令用于显示/配置网卡硬件(寄存器)。
实例
查看网卡的收发包数据统计
- [root@fp-web-133 network-scripts]# ethtool -S eth0
- NIC statistics:
- rx_packets: 185760985
- tx_packets: 4918134
- rx_bytes: 15902699978
- tx_bytes: 750813785
- rx_broadcast: 0
- tx_broadcast: 0
- rx_multicast: 0
- tx_multicast: 0
- rx_errors: 0
- tx_errors: 0
- tx_dropped: 0
- multicast: 0
- collisions: 0
- rx_length_errors: 0
- rx_over_errors: 0
- rx_crc_errors: 0
- rx_frame_errors: 0
- rx_no_buffer_count: 0
- rx_missed_errors: 0
- tx_aborted_errors: 0
- tx_carrier_errors: 0
- tx_fifo_errors: 0
- tx_heartbeat_errors: 0
- tx_window_errors: 0
- tx_abort_late_coll: 0
- tx_deferred_ok: 0
- tx_single_coll_ok: 0
- tx_multi_coll_ok: 0
- tx_timeout_count: 0
- tx_restart_queue: 3
- rx_long_length_errors: 0
- rx_short_length_errors: 0
- rx_align_errors: 0
- tx_tcp_seg_good: 3
- tx_tcp_seg_failed: 0
- rx_flow_control_xon: 0
- rx_flow_control_xoff: 0
- tx_flow_control_xon: 0
- tx_flow_control_xoff: 0
- rx_long_byte_count: 15902699978
- rx_csum_offload_good: 28677202
- rx_csum_offload_errors: 0
- alloc_rx_buff_failed: 0
- tx_smbus: 0
- rx_smbus: 0
- dropped_smbus: 0
- 小写是设置
#ethtool –s ethX [speed 10|100|1000] [duplex half|full] [autoneg on|off]
#设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商
查看机器上网卡的速度:百兆还是千兆,请输入:
- [root@fp-web-133 network-scripts]# ethtool eth0
- Settings for eth0:
- Supported ports: [ TP ]
- Supported link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Supported pause frame use: No
- Supports auto-negotiation: Yes
- Advertised link modes: 10baseT/Half 10baseT/Full
- 100baseT/Half 100baseT/Full
- 1000baseT/Full
- Advertised pause frame use: No
- Advertised auto-negotiation: Yes
- Speed: 1000Mb/s
- Duplex: Full
- Port: Twisted Pair
- PHYAD: 0
- Transceiver: internal
- Auto-negotiation: on
- MDI-X: Unknown
- Supports Wake-on: d
- Wake-on: d
- Current message level: 0x00000007 (7)
- drv probe link
- Link detected: yes
操作完毕后,输出信息中Speed:
这一项就指示了网卡的速度。停止网卡的发送模块TX,请输入:
- [root@fp-web-133 network-scripts]# ethtool -K eth0 tx off //大写k设置
- Actual changes:
- tx-checksumming: off
- scatter-gather: off
- tcp-segmentation-offload: off
[root@fp-web-133 network-scripts]# ethtool -k eth0 //小写k查看
Features for eth0:
rx-checksumming: off
tx-checksumming: off
scatter-gather: off
tcp-segmentation-offload: off
udp-fragmentation-offload: off
generic-segmentation-offload: on
generic-receive-offload: off
large-receive-offload: off
rx-vlan-offload: on
tx-vlan-offload: on
ntuple-filters: off
receive-hashing: off
操作完毕后,可输入ethtool -a eth0
,查看tx模块是否已被停止。查看网卡eth0采用了何种驱动,请输入:
- [root@fp-web-133 network-scripts]# ethtool -i eth0
- driver: e1000 //e1000驱动,网卡类型
- version: 7.3.21-k8-NAPI //网卡型号
- firmware-version:
- bus-info: 0000:02:00.0
- supports-statistics: yes
- supports-test: yes
- supports-eeprom-access: yes
- supports-register-dump: yes
- supports-priv-flags: no
查看网卡驱动信息
- [root@fp-web-133 network-scripts]# ethtool -i eth0
- driver: e1000 //e1000驱动,网卡类型
..........
- [root@fp-web-133 network-scripts]# modinfo e1000
- filename: /lib/modules/2.6.32-358.el6.x86_64/kernel/drivers/net/e1000/e1000.ko
- version: 7.3.21-k8-NAPI
- license: GPL
- description: Intel(R) PRO/1000 Network Driver
- author: Intel Corporation, <linux.nics@intel.com>
- srcversion: 1D4F1E82BB99EA36D320B1B
- alias: pci:v00008086d00002E6Esv*sd*bc*sc*i*
- alias: pci:v00008086d000010B5sv*sd*bc*sc*i*
- alias: pci:v00008086d00001099sv*sd*bc*sc*i*
- alias: pci:v00008086d0000108Asv*sd*bc*sc*i*
- alias: pci:v00008086d0000107Csv*sd*bc*sc*i*
- alias: pci:v00008086d0000107Bsv*sd*bc*sc*i*
- alias: pci:v00008086d0000107Asv*sd*bc*sc*i*
- alias: pci:v00008086d00001079sv*sd*bc*sc*i*
- alias: pci:v00008086d00001078sv*sd*bc*sc*i*
- alias: pci:v00008086d00001077sv*sd*bc*sc*i*
- alias: pci:v00008086d00001076sv*sd*bc*sc*i*
- alias: pci:v00008086d00001075sv*sd*bc*sc*i*
- alias: pci:v00008086d00001028sv*sd*bc*sc*i*
- alias: pci:v00008086d00001027sv*sd*bc*sc*i*
- alias: pci:v00008086d00001026sv*sd*bc*sc*i*
- alias: pci:v00008086d0000101Esv*sd*bc*sc*i*
- alias: pci:v00008086d0000101Dsv*sd*bc*sc*i*
- alias: pci:v00008086d0000101Asv*sd*bc*sc*i*
- alias: pci:v00008086d00001019sv*sd*bc*sc*i*
- alias: pci:v00008086d00001018sv*sd*bc*sc*i*
- alias: pci:v00008086d00001017sv*sd*bc*sc*i*
- alias: pci:v00008086d00001016sv*sd*bc*sc*i*
- alias: pci:v00008086d00001015sv*sd*bc*sc*i*
- alias: pci:v00008086d00001014sv*sd*bc*sc*i*
- alias: pci:v00008086d00001013sv*sd*bc*sc*i*
- alias: pci:v00008086d00001012sv*sd*bc*sc*i*
- alias: pci:v00008086d00001011sv*sd*bc*sc*i*
- alias: pci:v00008086d00001010sv*sd*bc*sc*i*
- alias: pci:v00008086d0000100Fsv*sd*bc*sc*i*
- alias: pci:v00008086d0000100Esv*sd*bc*sc*i*
- alias: pci:v00008086d0000100Dsv*sd*bc*sc*i*
- alias: pci:v00008086d0000100Csv*sd*bc*sc*i*
- alias: pci:v00008086d00001009sv*sd*bc*sc*i*
- alias: pci:v00008086d00001008sv*sd*bc*sc*i*
- alias: pci:v00008086d00001004sv*sd*bc*sc*i*
- alias: pci:v00008086d00001001sv*sd*bc*sc*i*
- alias: pci:v00008086d00001000sv*sd*bc*sc*i*
- depends:
- vermagic: 2.6.32-358.el6.x86_64 SMP mod_unload modversions
- parm: TxDescriptors:Number of transmit descriptors (array of int)
- parm: RxDescriptors:Number of receive descriptors (array of int)
- parm: Speed:Speed setting (array of int)
- parm: Duplex:Duplex setting (array of int)
- parm: AutoNeg:Advertised auto-negotiation setting (array of int)
- parm: FlowControl:Flow Control setting (array of int)
- parm: XsumRX:Disable or enable Receive Checksum offload (array of int)
- parm: TxIntDelay:Transmit Interrupt Delay (array of int)
- parm: TxAbsIntDelay:Transmit Absolute Interrupt Delay (array of int)
- parm: RxIntDelay:Receive Interrupt Delay (array of int)
- parm: RxAbsIntDelay:Receive Absolute Interrupt Delay (array of int)
- parm: InterruptThrottleRate:Interrupt Throttling Rate (array of int)
- parm: SmartPowerDownEnable:Enable PHY smart power down (array of int)
- parm: KumeranLockLoss:Enable Kumeran lock loss workaround (array of int)
- parm: copybreak:Maximum size of packet that is copied to a new buffer on receive (uint)
- parm: debug:Debug level (0=none,...,16=all) (int)
操作完毕后,显示 driver: bnx2;version: 1.4.30 等信息。关闭网卡对收到的数据包的校验功能,请输入:
- [root@fp-web-133 network-scripts]# ethtool -K eth0 rx off //-K必须是大写
操作完毕后,可输入ethtool -k eth0
,查看校验功能是否已被停止。
- [root@fp-web-133 network-scripts]# ethtool -k eth0 //注意这里是小写k ,修改时候是大写k
- Features for eth0:
- rx-checksumming: off
- tx-checksumming: on
- scatter-gather: on
- tcp-segmentation-offload: on //TSO
- udp-fragmentation-offload: off
- generic-segmentation-offload: on //GSO
- generic-receive-offload: off //GRO
- large-receive-offload: off //LRO
- rx-vlan-offload: on
- tx-vlan-offload: on
- ntuple-filters: off
- receive-hashing: off
这些offload特性都是为了提升网络收/发性能。TSO、UFO和GSO是对应网络发送,在接收方向上对应的是LRO、GRO。
1,TSO
TSO(TCP Segmentation Offload),是一种利用网卡对TCP数据包分片,减轻CPU负荷的一种技术,有时也被叫做 LSO (Large segment offload) ,
TSO是针对TCP的,UFO是针对UDP的。 如果硬件支持 TSO功能,同时也需要硬件支持的TCP校验计算和分散/聚集 (Scatter Gather) 功能。
2,GSO
GSO(Generic Segmentation Offload),它比TSO更通用,基本思想就是尽可能的推迟数据分片直至发送到网卡驱动之前,此时会检查网卡是否支持分片功能(如TSO、UFO),
如果支持直接发送到网卡,如果不支持就进行分片后再发往网卡。这样大数据包只需走一次协议栈,而不是被分割成几个数据包分别走,这就提高了效率。
3,LRO
LRO(Large Receive Offload),通过将接收到的多个TCP数据聚合成一个大的数据包,然后传递给网络协议栈处理,以减少上层协议栈处理 开销,提高系统接收TCP数据包的能力。
4,GRO
GRO(Generic Receive Offload),基本思想跟LRO类似,克服了LRO的一些缺点,更通用。后续的驱动都使用GRO的接口,而不是LRO。
5,RSS
RSS(Receive Side Scaling),是一项网卡的新特性,俗称多队列。具备多个RSS队列的网卡,可以将不同的网络流分成不同的队列,
再分别将这些队列分配到多个CPU核心上进行处理,从而将负荷分散,充分利用多核处理器的能力。
6,可以使用如下命令来关闭对应的参数:
#ethtool -K eth1 gro off
#ethtool -K eth1 lro off
#ethtool -K eth1 tso off
如果机器上安装了两块网卡,那么eth0对应着哪块网卡呢? 输入:
- [root@fp-web-133 network-scripts]# ethtool -p eth0 10
操作完毕后,看哪块网卡的led灯在闪,eth0就对应着哪块网卡。
查看网卡,在接收/发送数据时,有没有出错?请输入:
- [root@fp-web-133 network-scripts]# ethtool –S eth0
将千兆网卡的速度降为百兆,请输入:
- [root@fp-web-133 network-scripts]# ethtool -s eth0 speed 100
ethool的使用的更多相关文章
- [转载] ACE 组播校验和出错问题解决
源地址:http://yuanmuqiuyu2000.blog.sohu.com/140904942.html 使用ACE框架写了个组播简单的测试工具,但是测试过程中,总是发现udp校验和出错的信息. ...
- ethtool命令
用途 显示或修改以太网卡的配置信息. 语法 ethtool [ -a | -c | -g | -i | -d | -k | -r | -S |] ethX ethtool [-A] ethX [aut ...
- Linux网络设备驱动架构
Linux网络设备驱动程序体系结构分为四层:网络协议接口层.网络设备接口层.提供实际功能的设备驱动层以及网络设备与媒介层. (1)网络协议接口层向网络层协议提供统一的数据包收发接口,不论上层协议是AR ...
- Ethtool工具源码剖析
Ethtool工具源码剖析 ethool是一个实用的工具,用来给系统管理员以大量的控制网络接口的操作.可以用来控制接口参数,速度,介质类型,双工模式,DMA环设置,硬件校验和,LAN唤醒操作等.本人经 ...
- 【Linux】ethtool 用法
ethtool命令用于获取以太网卡的配置信息,或者修改这些配置.这个命令比较复杂,功能特别多. 语法 ethtool [ -a | -c | -g | -i | -d | -k | -r | -S | ...
随机推荐
- CF1428B题解
打比赛的时候sb了,用了一个似乎原本可以不用的东西来找环... 首先,根据题意,我们可以连成一张图,而蛇能不能回到自己的家, 只需要在一个环上就行了. 问题是怎么找环,我用了 Tarjan... 具体 ...
- async-validator 源码学习笔记(三):rule
系列文章: 1.async-validator 源码学习(一):文档翻译 2.async-validator 源码学习笔记(二):目录结构 rule 主要实现的是校验规则,文件结构为下图: 一.rul ...
- 一文让你明白CPU上下文切换
我们都知道,Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行.当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时 ...
- 字符串的高级应用-char a[100] = "1+2=;3-2=;2*5=;8/4=;" 得到char a[100] ="1+2=3;3-2=1;2*5=10;8/4=2;"
1 #include<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 char a[100] = "1+2=;3 ...
- kdump原理,是如何找到入口的
请解释下kdump原理,捕获内核是如何获取到生产内核的首地址的.
- python豆瓣250爬取
import requests from bs4 import BeautifulSoup from lxml import etree # qianxiao996精心制作 #博客地址:https:/ ...
- 一道有意思的 CSS 面试题,FizzBuzz ~
FizzBuzz 是一道很有意思的题目.我们来看看题目: 如果遇见了 3 的倍数要说 Fizz,5 的倍数就说 Buzz,如果即是 3 的倍数又是 5 的倍数就说 FizzBuzz. 如果是在一些 ...
- Linux 环境部署Skywalking支持Elasticsearch
一.环境准备 1.Java JKD 1.8(建议) 2.Elasticsearch 3.Skywalking 二. 环境搭建 安装Skywalking分为两个步骤: a.安装Backend后端服务 b ...
- HTTP与HTTPS有什么区别
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂 ...
- 介绍Collection框架的结构?
随意发挥题,天南海北谁便谈,只要让别觉得你知识渊博,理解透彻即可.