zoukankan      html  css  js  c++  java
  • Linux 网卡特性配置ethtool详解

    近期遇到一个自定义报文传输性能问题,解决过程中借助了ethtool这个工具,因此发掘一下与此工具相关的网卡的一些特性。

    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

     

       

  • 相关阅读:
    大数相加和快速相乘
    (转)直线分割平面 与 平面分割区域 问题
    8.3水了一天
    8.2数论(1)
    7.31 基本算法1.2
    7.31 基本算法1.1
    《GSoC 2019小结》&《买车小记》By Ray Guo
    【笔试题】中国电信天翼智慧家庭2020春季校园招聘
    TinyMCE主题的文章目录没法点击页内跳转
    【毕设】答辩如何准备?本科毕业论文如何撰写文献综述?
  • 原文地址:https://www.cnblogs.com/danxi/p/6591885.html
Copyright © 2011-2022 走看看