【大数据】Spark优化经验&案例--数据倾斜 《Mysql必知必会》读书笔记 jar包名中自动添加git commit id PyCharm教学视频学习笔记 《SQL基础教程》简要总结 《设计师要懂心理学》读书笔记 MySQL与MariaDB学习笔记 WDT (Folly) 安装指南 -- CentOS 7 [solved]Page build failed(Jekyll) 数据包过滤及分析实例 tshark tcpdump Scala Tour 学习总结 “Docker容器和容器云”读书笔记(1) “Docker Practice”读书笔记 “图解基础设施设计模式”小结 “图解服务器端网络架构”小结 Python网络安全编程 数据包解析笔记 华为挑战赛(1) DDoS攻击防御与云服务 基于网络回溯分析技术的异常行为分析 “Linux程序设计”小结(进程间通信) C语言编程规范(华为软件精英挑战赛) 2017阿里在线编程题--单源最短路径问题 2017年阿里在线编程题-- 数串分组 Uinx/Linux上的帮助查询命令 你懂C,所以C++不在话下 一篇特别长的总结(C专家编程) 程序员面试金典--笔记(精华篇) C陷阱与缺陷--笔记 半小时搭建电子商务网站--opencart linux网络知识和工具(持续更新) 网卡参数查询及设置工具ethtool 高性能流量生成工具trafgen(DDoS模拟) Linux流量控制工具TC 流量控制工具TC详细说明 tcpdump过滤数据包,结果不对? Lecture 网络攻击与防御技术笔记 gotgit-git权威指南 高效使用MacOS所要知道的 shell内置字符串处理 配置ntp(知其所以然) 360黑客攻防技术分享会--记录 中毒U盘恢复--快捷键病毒 Tor--anonymity network介绍(PPT) IBM bluemix 再读《Linux Shell脚本攻略》 linux shell 学习摘记(9) linux shell 学习摘记(8) linux shell 学习摘记(7) linux shell 学习摘记(6) linux shell 学习摘记(5) linux shell 学习摘记(4) linux shell 学习摘记(3) linux shell 学习摘记(2) linux shell 学习摘记(1) firefox vim 插件 vimperator A Byte of Vim 笔记 windows注册表小知识 安全测试工具篇(开源&商业) 安全及性能测试工具(网站收集) 性能测试工具 屡试不爽的“3个”iPad使用技巧 Shell Shortcuts(和Tab键一样实用) vim--自动添加jekyll post信息头 vim 自动给文件添加头部信息 GitHub Tips (很实用,值得收藏) Linux路由、防火墙、NAT命令

网卡参数查询及设置工具ethtool

2017年01月12日

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 ...

知识共享许可协议
SWF's Hacking Dreamonephone 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2024. All rights reserved by onephone. Powerd by Jekyll.