• 银河麒麟服务器系统中intel-x710网卡丢包问题


    一 系统环境

    [root@localhost ~]# nkvers 
    ############## Kylin Linux Version #################
    Release:
    Kylin Linux Advanced Server release V10 (Sword)
    
    Kernel:
    4.19.90-24.4.v2101.ky10.x86_64
    
    Build:
    Kylin Linux Advanced Server
    release V10 (SP2) /(Sword)-x86_64-Build09/20210524
    #################################################
    
    服务器的网卡型号:INTEL X710
    网卡使用的驱动版本:操作系统自带2.3.2-k
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    二 问题描述

    问题现象一:生产环境的物理服务器开机运行一段时间后,系统下执行命令netstat -in出现bond1的 RX-DRP数值不断升高,担心对业务有影响。目前现场人员已经更换网卡和升级网卡驱动以后依然存在该情况。

    问题现象二:网卡intel x710收包丢包,发包正常。博通网卡正常。

    三 问题分析过程

    3.1 查看网卡配置文件
    # cat ifcfg-bond1
    DEVICE=bond1
    BOOTPROTO=none
    ONBOOT=yes
    IPV6INIT=no
    TYPE=Ethernet
    PEERDNS=yes
    USERCTL=n0
    IPADDR=xxx.xxx.xxx.xxx
    NETMASK=255.255.255.0
    GATEWAY=xxx.xxx.xxx.xxx
    BONDING_OPTS="mode=1 miimon=100"
    
    # cat ifcfg-p2p1
    DEVICE=p2p1
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    ONBOOT=yes
    IPV6INIT=no
    TYPE=Ethernet
    PEERDNS=yes
    USERCTL=no
    
    # cat ifcfg-p3p1
    DEVICE=p3p1
    BOOTPROTO=none
    MASTER=bond1
    SLAVE=yes
    ONBOOT=yes
    IPV6INIT=no
    TYPE=Ethernet
    PEERDNS=yes
    USERCTL=no
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    3.2 netstat -ni查看丢包和重传

    netstat -ni 查看现场问题机器,RX-DRP的数值方面,有一组网卡值为非0,存在丢包的现象
    正常如下:

    [root@localhost ~]# netstat -ni
    Kernel Interface table
    Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
    ens33            1500     1465      0      0 0          1110      0      0      0 BMRU
    lo              65536   212363      0      0 0        212363      0      0      0 LRU
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.3 使用ethtool -S {网卡名}查看drop

    使用ethtool -S {网卡名},查看rx_dropped的数量

    3.4 使用sar -n DEV查看丢包情况

    查看rxdrop/s值是否为0,如果为0表示无丢包,如果非0表述存在丢包。

    3.5 使用sar -n ETCP 1查看重传情况

    查看retrans/s数值是否为0,如果为0表示无重传,如果非0表示存在重传。

    3.6 查看/proc/net/snmp中,tcp和udp的重传情况
    [root@localhost ~]# cat /proc/net/snmp
    Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates
    Ip: 2 64 225567 0 3 0 0 0 225460 224834 12 0 0 0 0 0 0 0 0
    Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps
    Icmp: 19 0 0 18 0 0 0 0 1 0 0 0 0 0 61 0 60 0 0 0 0 0 1 0 0 0 0
    IcmpMsg: InType3 InType8 OutType0 OutType3
    IcmpMsg: 18 1 1 60
    Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors
    Tcp: 1 200 120000 -1 6152 4149 1995 2952 33 229308 228559 0 0 3893 0
    Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti
    Udp: 100 19 0 196 0 4 0 0
    UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors IgnoredMulti
    UdpLite: 0 0 0 0 0 0 0 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    3.7 查看查看/proc/net/udp中,udp的丢包情况
    [root@localhost ~]# cat /proc/net/udp
      sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode ref pointer drops             
       76: 00000000:0044 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 126177 2 000000006a4fbf90 0        
      119: 00000000:006F 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 24464 2 0000000026c71e42 0         
      331: 0100007F:0143 00000000:0000 07 00000000:00000000 00:00000000 00000000     0        0 27170 2 00000000bbb90c01 0         
    
    • 1
    • 2
    • 3
    • 4
    • 5
    3.8 通过tcpdump抓包进行分析
    tcpdump -i 网卡名 -e|grep -v -E 'ARP|IP|802.1Q|802.1AD'
    
    • 1

    四 解决方法

    4.1 建议不要升级网卡驱动;
    4.2 调整ringbuffer,lldp,tso
    (1)将网卡的ringbuffer调大
    ethtool -G {网卡名} tx 4096 rx 4096
    
    (2)关闭 lldp
    ethtool --set-priv-flags {网卡名} disable-fw-lldp on
    
    (3)关闭tso
    ethtool -K {网卡名} tso off
    
    #一般都是一块网卡两个网口,所以两个网口的设备都要改,例如p2p1,p3p1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    LLDP (Link Layer Discovery Protocol,链路层发现协议)提供了一种标准的链路层发现方式,可以将本端设备的的主要能力、管理地址、设备标识、接口标识等信息组织成不同的TLV(Type/Length/alue),并封装在LLDPDU(Link Layer Discovery Protocol
    Data Unit,链路层发现协议数据单元)中发布给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(ManagementInformation Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。

  • 相关阅读:
    pcl--第三节 关键点
    Linux项目自动化构建工具-make/Makefile
    使用labelme打标签,详细教程
    开源联合、聚力共赢丨2023 CCF中国开源大会10月开幕
    python 字典里的value
    多线程的学习第二篇
    前沿研究|16s+宏基因组binning揭示大型藻类附生微生物群落核心组成
    【RPA技术】UI分析器与可视化树:解决界面元素获取难题
    工业镜头接口类型
    关于Flask模板_过滤器的介绍和使用
  • 原文地址:https://blog.csdn.net/weixin_45754407/article/details/136879685