zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    父子进程 signal 出现 Interrupted system call 问题
    一个测试文章
    《淘宝客户端 for Android》项目实战 html webkit android css3
    Django 中的 ForeignKey ContentType GenericForeignKey 对应的数据库结构
    coreseek 出现段错误和Unigram dictionary load Error 新情况(Gentoo)
    一个 PAM dbus 例子
    漫画统计学 T分数
    解决 paramiko 安装问题 Unable to find vcvarsall.bat
    20141202
    js
  • 原文地址:https://www.cnblogs.com/larrypeng/p/12496115.html
Copyright © 2011-2022 走看看