立即前往

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 智算采购季 热销S6云服务器2核4G限时88元/年起,部分主机可加赠对象存储组合包!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 产品能力
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
    • 关系数据库SQL Server版
    • 企业主机安全
    • 云防火墙
    • CDN加速
    • 物理机
    • GPU云主机
    • 天翼云电脑(政企版)
    • 天翼云电脑(公众版)
    • 云主机备份
    • 弹性云主机
      搜索发现
      关系数据库SQL Server版企业主机安全云防火墙CDN加速物理机GPU云主机天翼云电脑(政企版)天翼云电脑(公众版)云主机备份弹性云主机
    • 文档
    • 控制中心
    • 备案
    • 管理中心
    • 登录
    • 免费注册

    【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重

    首页 知识中心 其他 文章详情页

    【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重

    2025-02-26 07:22:00 阅读次数:12

    网卡

    即看即用

    查看:

    ethtool ethx          查看eth0网卡的基本设置

    内容包括网卡速率、网卡的工作模式等,其中 x 是对应网卡的编号,如eth0、eth1等等

    ethtool -i eth0      查看eth0网卡的驱动信息,内容包括驱动的型号、驱动的版本等

    ethtool -d ethx      查询ethx网口注册性信息
    ethtool -S ethx     查询ethx网口收发包统计 (注意S是大写)
    ethtool -h              显示ethtool的命令帮助(help)
    ethtool -r ethx      重置ethX网口到自适应模式

    ethtool -g ethx     显示网卡的接收/发送环形参数。

    设置:

    注意:该命令只是临时设置,如果网卡重启就失效了,如果想要永久保存应该配置 /etc/sysconfig/network-scripts/ifcfg-ethx 文件,见后面详细信息。

    ethtool -s eth0 speed [10|100|1000]        # 设置网卡的速率,单位是:Mb/s

    ethtool -s eth0 autoneg [on|off]                  # 设置网卡是否自动协商

    自动协商的内容主要包括工作模式、网卡速率以及流控等参数

    ethtool -s ethX [speed 10|100|1000] [duplex half|full]  [autoneg on|off]        //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商

    ethtool -s eth0 autoneg off speed 100 duplex full # 也可以同时写在一起

    ethtool -s eth0 duplex [half|full] #                   设置网卡的工作模式,可设置为半双工或全双工

    ethtool -G eth0 rx 4096 /ethtool -G eth0 tx 4096                      //修改网卡的接收/发送环形参数。

    ethtool -E eth0 magic 0x10798086 offset 0x10 value 0x1A   修改网卡EEPROM内容(0x1079 网卡device id , 0x8086网卡verdor id  )

    ethtool -e eth0  : dump网卡EEPROM内容

     

    ethX

    查询ethx网口基本设置,其中x是对应网卡的编号,如eth0、eth1等。

    -k

    查询网卡的Offload信息。

    -K

    修改网卡的Offload信息。

    -c

    查询网卡聚合信息。

    -C

    修改网卡聚合信息。

    -l

    查看网卡队列数。

    -L

    设置网卡队列数。

     

    -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 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。加上-s选项修改的内容才会生效

    -S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。

    -t 让网卡执行自我检测,有两种模式:offline or online.

    详细信息

    软件简介

    ethtool是一个 Linux 下功能强大的网络管理工具,目前几乎所有的网卡驱动程序都有对 ethtool 的支持,可以用于网卡状态/驱动版本信息查询、收发数据信息查询及能力配置以及网卡工作模式/链路速度等查询配置。

    它可以用来:

    • 获取标识和诊断信息
    • 获取扩展的设备统计信息
    • 控制以太网设备的速度、双工、自动协商和流控制
    • 控制校验和卸载及其他硬件卸载功能
    • 控制 DMA 环大小及中断控制
    • 控制多队列设备的接收队列选择
    • 升级闪存中的固件
    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-low N] [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        //修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。加上-s选项修改的内容才会生效
    -S        //显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。
    -t        //让网卡执行自我检测,有两种模式:offline or online. 

    输出详解

    ethtool eth0

    [root@localhost ~]# 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 // 支持自动协商
    Supported FEC modes: Not reported
     
    // 通告模式
    Advertised link modes: 10baseT/Half 10baseT/Full
    100baseT/Half 100baseT/Full
    1000baseT/Full
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes // 使用自动协商
    Advertised FEC modes: Not reported
     
    Speed: 1000Mb/s // 当前速率 1000Mb/s
    Duplex: Full // 工作模式为全双工
     
    Port: Twisted Pair
    PHYAD: 0
    Transceiver: internal
     
    Auto-negotiation: on // 自动协商打开
     
    MDI-X: off (auto)
    Supports Wake-on: d
    Wake-on: d
    Current message level: 0x00000007 (7)
    drv probe link
    Link detected: yes

     

     输出格式:

    # ethtool -k eth0
    
    Features for eth0: 
    rx-checksumming: on 
    tx-checksumming: on 
    scatter-gather: on 
    tcp-segmentation-offload: on
    
    # ethtool -l eth0
    
    Channel parameters for eth0: 
    Pre-set maximums: 
    … 
    Current hardware settings: 
    … 
    Combined:       8 
    
    # ethtool -c eth0
    
    Coalesce parameters for eth0: 
    Adaptive RX: off  TX: off 
    … 
    rx-usecs:30 
    rx-frames:50 
    … 
    tx-usecs:30 
    tx-frames:1

     

    参数含义如下:

    参数

    说明

    rx-checksumming

    接收包校验和。

    tx-checksumming

    发送包校验和。

    scatter-gather

    分散-聚集功能,是网卡支持TSO的必要条件之一。

    tcp-segmentation-offload

    简称为TSO,利用网卡对TCP数据包分片。

    Combined

    网卡队列数。

    adaptive-rx

    接收队列的动态聚合执行开关。

    adaptive-tx

    发送队列的动态聚合执行开关。

    tx-usecs

    产生一个中断之前至少有一个数据包被发送之后的微秒数。

    tx-frames

    产生中断之前发送的数据包数量。

    rx-usecs

    产生一个中断之前至少有一个数据包被接收之后的微秒数。

    rx-frames

    产生中断之前接收的数据包数量。

    ethtool工具_鲲鹏通用_鲲鹏性能优化十板斧_网络子系统性能调优_常用性能监测工具_华为云

     

     

    其他指令

     

    ethtool -A tx off eth0    停止网卡的发送模块TX

    操作完毕后,可输入:ethtool -a eth0,查看tx模块是否已被停止。

    ethtool -K eth0 rx off 关闭网卡对收到的数据包的校验功能

    操作完毕后,可输入:ethtool -k eth0,查看校验功能是否已被停止。

    ethtool -p eth0 10  如果机器上安装了两块网卡,查看eth0对应着哪块网卡

    操作完毕后,看哪块网卡的led灯在闪,eth0就对应着哪块网卡。
     

     

    将 ethtool 设置永久保存

     将 ethtool 设置永久保存在网络设备有两种方法,一种是写入网口配置文件中,一种是开机自启动脚本。

     解决方法一:
     ethtool 设置可通过 /etc/sysconfig/network-scripts/ifcfg-ethX 文件保存,从而在设备下次启动时激活选项。 
    例如:ethtool -s eth0 speed 100 duplex full autoneg off
    此指令将eth0设备设置为全双工自适应,速度为100Mbs。若要eth0启动时设置这些参数, 修改文件/etc/sysconfig/network-scripts/ifcfg-eth0 ,添加如下一行: 
    ETHTOOL_OPTS="speed 100 duplex full autoneg off"

    解决方法二:
     将ethtool设置写入/etc/rc.d/rc.local之中。

     

     如何使用 ethtool 优化 Linux 虚拟机网卡性能

     

    在高并发应用场景下,Linux 虚拟机可能会出现丢包现象,可以通过调整网卡的 Buffer size 来缓解此问题。

    本文使用 ethtool 来查看和修改 RX/TX 值来获取更好性能,以下为参考示例:

    在 ethtool 配置文件中可以看到,RX/TX 值的单位是 section size:

    shell复制

    #define NETVSC_SEND_SECTION_SIZE                6144
    #define NETVSC_RECV_SECTION_SIZE                1728
    
    1. 查看当前网卡 RX/TX 参数:

      shell复制

      [root@centos75 ~]# ethtool -g eth0
      Ring parameters for eth0:
      Pre-set maximums:
      RX:                   18811
      RX Mini:              0
      RX Jumbo:             0
      TX:                   2560
      Current hardware settings:
      RX:                   10486
      RX Mini:              0
      RX Jumbo:             0
      TX:                   192
      

       重要

      Pre-set maximums 中的 RX/TX 值为该网卡的 Buffer size 最大值;
      Current hardware settings 中 RX/TX 值代表该网卡当前的 Buffer size 大小。
      所以,设置的 Current hardware settings 的 RX/TX 值必须在 Pre-set maximums 的限制之内。

    2. 调整 RX/TX 参数:

      shell复制

      [root@centos75 ~]# ethtool -G eth0 rx 18000 tx 2500
      
    3. 查看调整后的 RX/TX 参数:

      shell复制

      [root@centos75 ~]# ethtool -g eth0
      Ring parameters for eth0:
      Pre-set maximums:
      RX:                   18811
      RX Mini:              0
      RX Jumbo:             0
      TX:                   2560
      Current hardware settings:
      RX:                   18000
      RX Mini:              0
      RX Jumbo:             0
      TX:                   2500
      

    由于重启之后修改会失效,您可以在 rc.local 中设置为开机自动运行修改命令,参考如下:

    1. 添加可执行权限:

      shell复制

      [root@centos75 ~]# chmod -x /etc/rc.d/rc.local
      
    2. 添加修改命令,并保存:

      shell复制

      [root@centos75 ~]# vi /etc/rc.d/rc.local
      
      #!/bin/bash
      # THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
      #
      # It is highly advisable to create own systemd services or udev rules
      # to run scripts during boot instead of using this file.
      #
      # In contrast to previous versions due to parallel execution during boot
      # this script will NOT be run after all other services.
      #
      # Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
      # that this script will be executed during boot.
      
      touch /var/lock/subsys/local
      ethtool -G eth0 rx 18000 tx 2500
      
    3. 重启并验证:

      shell复制

      [root@centos75 ~]# ethtool -g eth0
      Ring parameters for eth0:
      Pre-set maximums:
      RX:                   18811
      RX Mini:              0
      RX Jumbo:             0
      TX:                   2560
      Current hardware settings:
      RX:                   18000
      RX Mini:              0
      RX Jumbo:             0
      TX:                   2500

     

    如何使用 ethtool 优化 Linux 虚拟机网卡性能 | Azure Docs

     

    ethtool 解决网卡丢包严重和网卡原理

    (原文;ethtool 解决网卡丢包严重和网卡原理_一个人的旅行的博客-CSDN博客_网卡丢包)

    1 概述
     

    最近业务上老有问题,查看发现overruns值不断增加,学习了一下相关的知识。发现数值也在不停的增加。发现这些 errors, dropped, overruns 表示的含义还不大一样。

    [root@localhost ~]# ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.1.135 netmask 255.255.255.0 broadcast 192.168.1.255
    inet6 fe80::20c:29ff:fe9b:52d3 prefixlen 64 scopeid 0x20<link>
    ether 00:0c:29:9b:52:d3 txqueuelen 1000 (Ethernet)
    RX packets 833 bytes 61846 (60.3 KiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 122 bytes 9028 (8.8 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

     

    (1) RX errors

    表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。

     

    (2) RX dropped

    表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。

     

    (3) RX overruns

    表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。

     

    (4) RX frame

    表示 misaligned 的 frames。

     

    2 网卡工作原理
     

    2.1 网卡收包
    网线上的packet首先被网卡获取,网卡会检查packet的CRC校验,保证完整性,然后将packet头去掉,得到frame。网卡会检查MAC包内的目的MAC地址,如果和本网卡的MAC地址不一样则丢弃(混杂模式除外)。

     

    网卡将frame拷贝到网卡内部的FIFO缓冲区,触发硬件中断。(如有ring buffer的网卡,好像frame可以先存在ring buffer里再触发软件中断(下篇文章将详细解释Linux中frame的走向),ring buffer是网卡和驱动程序共享,是设备里的内存,但是对操作系统是可见的,因为看到linux内核源码里网卡驱动程序是使用kcalloc来分配的空间,所以ring buffer一般都有上限,另外这个ring buffer size,表示的应该是能存储的frame的个数,而不是字节大小。另外有些系统的 ethtool 命令 并不能改变ring parameters来设置ring buffer的大小,暂时不知道为什么,可能是驱动不支持。)

     

    网卡驱动程序通过硬中断处理函数,构建sk_buff,把frame从网卡FIFO拷贝到内存skb中,接下来交给内核处理。(支持napi的网卡应该是直接放在ring buffer,不触发硬中断,直接使用软中断,拷贝ring buffer里的数据,直接输送给上层处理,每个网卡在一次软中断处理过程能处理weight个frame)

     

    过程中,网卡芯片对frame进行了MAC过滤,以减小系统负荷。(除了混杂模式)

     

    2.2 网卡发包
    网卡驱动程序将IP包添加14字节的MAC头,构成frame(暂无CRC)。Frame(暂无CRC)中含有发送端和接收端的MAC地址,由于是驱动程序创建MAC头,所以可以随便输入地址,也可以进行主机伪装。

     

    驱动程序将frame(暂无CRC)拷贝到网卡芯片内部的缓冲区,由网卡处理。

     

    网卡芯片将未完全完成的frame(缺CRC)再次封装为可以发送的packet,也就是添加头部同步信息和CRC校验,然后丢到网线上,就完成一个IP报的发送了,所有接到网线上的网卡都可以看到该packet。

     

    2.3 网卡中断处理函数
     

    产生中断的每个设备都有一个相应的中断处理程序,是设备驱动程序的一部分。每个网卡都有一个中断处理程序,用于通知网卡该中断已经被接收了,以及把网卡缓冲区的数据包拷贝到内存中。

     

    当网卡接收来自网络的数据包时,需要通知内核数据包到了。网卡立即发出中断。内核通过执行网卡已注册的中断处理函数来做出应答。中断处理程序开始执行,通知硬件,拷贝最新的网络数据包到内存,然后读取网卡更多的数据包。

     

    这些都是重要、紧迫而又与硬件相关的工作。内核通常需要快速的拷贝网络数据包到系统内存,因为网卡上接收网络数据包的缓存大小固定,而且相比系统内存也要小得多。所以上述拷贝动作一旦被延迟,必然造成网卡FIFO缓存溢出 - 进入的数据包占满了网卡的缓存,后续的包只能被丢弃,这也应该就是ifconfig里的overrun的来源。

     

    当网络数据包被拷贝到系统内存后,中断的任务算是完成了,这时它把控制权交还给被系统中断前运行的程序。

     

    2.4 缓冲区访问
    网卡的内核缓冲区,是在PC内存中,由内核控制,而网卡会有FIFO缓冲区,或者ring buffer,这应该将两者区分开。FIFO比较小,里面有数据便会尽量将数据存在内核缓冲中。

     

    网卡中的缓冲区既不属于内核空间,也不属于用户空间。它属于硬件缓冲,允许网卡与操作系统之间有个缓冲;

    内核缓冲区在内核空间,在内存中,用于内核程序,做为读自或写往硬件的数据缓冲区;

    用户缓冲区在用户空间,在内存中,用于用户程序,做为读自或写往硬件的数据缓冲区;

    另外,为了加快数据的交互,可以将内核缓冲区映射到用户空间,这样,内核程序和用户程序就可以同时访问这一区间了。

     

    对于有ring buffer的网卡,ring buffer是由驱动与网卡共享的,所以内核可以直接访问ring buffer,一般拷贝frames的副本到自己的内核空间进行处理(deliver到上层协议,之后的一个个skb就是按skb的指针传递方式传递,直到用户获得数据,所以,对于ring buffer网卡,大量拷贝发生在frame从ring buffer传递到内核控制的计算机内存里)。

     

    3 丢包排查
    网卡工作在数据链路层,数据量链路层,会做一些校验,封装成帧。我们可以查看校验是否出错,确定传输是否存在问题。然后从软件层面,是否因为缓冲区太小丢包。

     

    3.1 先查看硬件情况
    一台机器经常收到丢包的报警,先看看最底层的有没有问题:

    (1) 查看工作模式是否正常

    [root@localhost ~]# ethtool eth0 | egrep 'Speed|Duplex'
    Speed: 1000Mb/s
    Duplex: Full
     

    (2) 查看检验是否正常

    [root@localhost ~]# ethtool -S eth0 | grep crc
    rx_crc_errors: 0
     
    Speed,Duplex,CRC 之类的都没问题,基本可以排除物理层面的干扰。

     

    3.2 通过 ifconfig 可以看到 overruns 是否一直增大
     

    for i in `seq 1 100`; do ifconfig eth2 | grep RX | grep overruns; sleep 1; done
     

    这里一直增加

    RX packets:346547657 errors:0 dropped:0 overruns:35345 frame:0
     

    3.3 查看buffer大小
     

    可以通过ethtool来修改网卡的buffer size ,首先要网卡支持,我的服务器是是INTEL 的1000M网卡,我们看看ethtool说明 

    -g   –show-ringQueries the specified ethernet device for rx/tx ring parameter information.
     
    -G   –set-ringChanges the rx/tx ring parameters of the specified ethernet device.
     

    (1) 查看当前网卡的buffer size情况

    ethtool -g eth0
    [root@localhost ~]# ethtool -g eth0
    Ring parameters for eth0:
    Pre-set maximums:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 256
    RX Mini: 0
    RX Jumbo: 0
    TX: 256
     

     

    3.4 修改buffer size大小
    ethtool -G eth0 rx 2048
     
    ethtool -G eth0 tx 2048
     

    [root@localhost ~]# ethtool -G eth0 rx 2048
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# ethtool -G eth0 tx 2048
    [root@localhost ~]#
    [root@localhost ~]#
    [root@localhost ~]# ethtool -g eth0
    Ring parameters for eth0:
    Pre-set maximums:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 2048
    RX Mini: 0
    RX Jumbo: 0
    TX: 2048

    版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/bandaoyu/article/details/115556372,作者:bandaoyu,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

    上一篇:【GCC】参数选项笔记|-Wl,-soname|include宏定义和易错地方

    下一篇:React DOM 和 Virtual DOM 的区别?优缺点?

    相关文章

    2025-04-22 09:28:31

    【Linux】ifconfig命令详解

    【Linux】ifconfig命令详解

    2025-04-22 09:28:31
    ifconfig , 命令 , 地址 , 网卡 , 网络接口
    2025-03-18 08:27:10

    dell服务器配置双网卡

    dell服务器配置双网卡

    2025-03-18 08:27:10
    交换机 , 服务器 , 网卡
    2025-03-04 09:05:29

    通过Xshell远程连接wsl2

    通过Xshell远程连接wsl2

    2025-03-04 09:05:29
    ip , SSH , 宿主机 , 网卡
    2025-02-27 09:34:21

    【网络】DPDK的基本原理|DPDK和RDMA的区别

    【网络】DPDK的基本原理|DPDK和RDMA的区别

    2025-02-27 09:34:21
    CPU , RDMA , 用户 , 网卡
    2025-02-26 07:22:11

    【RDMA】降CPU除RDMA (vbers)还有VMA ?|使用socket进行RDMA编程?

    【RDMA】降CPU除RDMA (vbers)还有VMA ?|使用socket进行RDMA编程?

    2025-02-26 07:22:11
    RDMA , socket , 内核 , 网卡
    2025-02-26 07:22:11

    【RDMA】深入浅出全面解析RDMA -- 研读

    【RDMA】深入浅出全面解析RDMA -- 研读

    2025-02-26 07:22:11
    RDMA , 数据 , 网卡 , 网络
    2025-02-21 08:58:12

    【网络】如何判断网络达到瓶颈|网络查询命令

    【网络】如何判断网络达到瓶颈|网络查询命令

    2025-02-21 08:58:12
    带宽 , 查看 , 网卡
    2025-02-21 08:58:00

    【RDMA】IBV_SEND_INLINE和IBV_SEND_SIGNALED的原理|RDMA小消息通信性能优化

    【RDMA】IBV_SEND_INLINE和IBV_SEND_SIGNALED的原理|RDMA小消息通信性能优化

    2025-02-21 08:58:00
    IBV , RDMA , 网卡
    2025-02-21 08:56:43

    【RDMA】RDMA编程和TCP编程的区别|bRPC

    【RDMA】RDMA编程和TCP编程的区别|bRPC

    2025-02-21 08:56:43
    API , RDMA , TCP , 内存 , 发送 , 网卡
    2025-02-17 09:30:02

    【动态规划】【 数学】C++算法:514自由之路

    【动态规划】【 数学】C++算法:514自由之路

    2025-02-17 09:30:02
    int , key , pos , 字符
    查看更多
    推荐标签

    作者介绍

    天翼云小翼
    天翼云用户

    文章

    32777

    阅读量

    4800270

    查看更多

    最新文章

    通过Xshell远程连接wsl2

    2025-03-04 09:05:29

    【网络】DPDK的基本原理|DPDK和RDMA的区别

    2025-02-27 09:34:21

    【网络】如何判断网络达到瓶颈|网络查询命令

    2025-02-21 08:58:12

    [INS-41118] The interface (enp2s0f3) chosen as Public ....

    2024-12-27 08:03:57

    网卡UUID相同异常处理

    2024-12-27 08:03:57

    Nvidia与AMD显卡的区别及选购指南

    2024-12-20 07:45:21

    查看更多

    热门文章

    centos7修改网卡一致性命名

    2023-04-24 11:27:30

    VMware ESXI 7.0 手动安装INTEL万兆X550-T2网卡驱动教程

    2023-06-15 05:58:58

    双网卡问题

    2023-06-25 07:14:48

    Linux脚本练习之script034-取出网卡 IP 地址。

    2023-08-03 08:01:02

    Centos7双网卡绑定

    2023-07-20 06:08:10

    Ubuntu网卡驱动相关知识点

    2023-03-10 01:13:50

    查看更多

    热门标签

    linux java python javascript 数组 前端 docker Linux vue 函数 shell git 容器 spring 节点
    查看更多

    相关产品

    弹性云主机

    随时自助获取、弹性伸缩的云服务器资源

    天翼云电脑(公众版)

    便捷、安全、高效的云电脑服务

    对象存储

    高品质、低成本的云上存储服务

    云硬盘

    为云上计算资源提供持久性块存储

    查看更多

    随机文章

    vSphere ESXi 5.5网络问题两例及解决方法

    【网络】如何判断网络达到瓶颈|网络查询命令

    Cobaltstrike4.0系列 -- 界面介绍

    Centos7双网卡绑定

    【网络】DPDK的基本原理|DPDK和RDMA的区别

    通过Xshell远程连接wsl2

    • 7*24小时售后
    • 无忧退款
    • 免费备案
    • 专家服务
    售前咨询热线
    400-810-9889转1
    关注天翼云
    • 权益商城
    • 天翼云APP
    • 天翼云微信公众号
    服务与支持
    • 备案中心
    • 售前咨询
    • 智能客服
    • 自助服务
    • 工单管理
    • 客户公告
    • 涉诈举报
    账户管理
    • 管理中心
    • 订单管理
    • 余额管理
    • 发票管理
    • 充值汇款
    • 续费管理
    快速入口
    • 权益商城
    • 文档中心
    • 最新活动
    • 免费试用
    • 信任中心
    • 天翼云学堂
    云网生态
    • 甄选商城
    • 渠道合作
    • 云市场合作
    了解天翼云
    • 关于天翼云
    • 天翼云APP
    • 服务案例
    • 新闻资讯
    • 联系我们
    热门产品
    • 云电脑
    • 弹性云主机
    • 云电脑政企版
    • 天翼云手机
    • 云数据库
    • 对象存储
    • 云硬盘
    • Web应用防火墙
    • 服务器安全卫士
    • CDN加速
    热门推荐
    • 云服务备份
    • 边缘安全加速平台
    • 全站加速
    • 安全加速
    • 云服务器
    • 云主机
    • 智能边缘云
    • 应用编排服务
    • 微服务引擎
    • 共享流量包
    更多推荐
    • web应用防火墙
    • 密钥管理
    • 等保咨询
    • 安全专区
    • 应用运维管理
    • 云日志服务
    • 文档数据库服务
    • 云搜索服务
    • 数据湖探索
    • 数据仓库服务
    友情链接
    • 中国电信集团
    • 189邮箱
    • 天翼企业云盘
    • 天翼云盘
    ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
    公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
    • 用户协议
    • 隐私政策
    • 个人信息保护
    • 法律声明
    备案 京公网安备11010802043424号 京ICP备 2021034386号