网卡丢包排查二

上次没查到根本原因,这次继续排查,发现和我们发的包有很大的关系,根据上次rx_drop的含义,丢的数据可能是以下几种原因:

The softnet backlog full
Bad VLAN tags
Packets received with unknown or unregistered protocols
IPv6 frames when the server is configured only for ipv4

一 dropwatch使用

1.1 使用

丢包排查的神器,上篇已经说过,这次在仔细用以下,dropwatch目前要求首先内核必须大于等于2.6.30。

yum install dropwatch

采用交互方式运行:

[root@localhost ~]# dropwatch -l kas
>start

启动,按ctrl+C停止。

dropwatch> start
Enabling monitoring...
Kernel monitoring activated.
Issue Ctrl-C to stop monitoring
15 drops at ip6_mc_input+1ad (0xffffffff8164414d)
117 drops at ip_rcv+cf (0xffffffff815ca47f)
2 drops at __udp4_lib_mcast_deliver+2ad (0xffffffff815fbe3d)
6 drops at ip_rcv_finish+1b4 (0xffffffff815c9e04)
2 drops at __netif_receive_skb_core+3d2 (0xffffffff81586d82)
2 drops at ip_forward+1d0 (0xffffffff815cbee0)
1 drops at skb_queue_purge+18 (0xffffffff81572ec8)
13 drops at ip_rcv_finish+1b4 (0xffffffff815c9e04)
7 drops at tcp_v4_rcv+87 (0xffffffff815f0197)
25 drops at ip6_mc_input+1ad (0xffffffff8164414d)
15 drops at ip_rcv_finish+1b4 (0xffffffff815c9e04)
118 drops at ip_rcv+cf (0xffffffff815ca47f)
3 drops at ip_forward+1d0 (0xffffffff815cbee0)
1 drops at __brk_limit+3e1e36a8 (0xffffffffc05f46a8)
1 drops at __netif_receive_skb_core+3d2 (0xffffffff81586d82)
4 drops at ip_rcv_finish+1b4 (0xffffffff815c9e04)
7 drops at tcp_v4_rcv+87 (0xffffffff815f0197)
17 drops at ip6_mc_input+1ad (0xffffffff8164414d)
112 drops at ip_rcv+cf (0xffffffff815ca47f)
6 drops at ip_forward+1d0 (0xffffffff815cbee0)
5 drops at ip_rcv_finish+1b4 (0xffffffff815c9e04)

丢包主要几种在:118 drops at ip_rcv+cf (0xffffffff815ca47f)这个函数,查看drop位置:

#grep -w "ip_rcv" /boot/System.map-$(uname -r)  -A10
ffffffff815ca3b0 T ip_rcv
ffffffff815ca7c0 t ip4_frag_match
ffffffff815ca810 t ipqhashfn
ffffffff815ca8c0 t ip4_hashfn
ffffffff815ca8f0 t ip4_frag_free
ffffffff815ca910 t ip4_frag_init
ffffffff815ca9f0 t ipv4_frags_exit_net
ffffffff815caa30 t ipv4_frags_init_net
ffffffff815cab30 t ip_expire
ffffffff815cac50 T ip_defrag
ffffffff815cba30 T ip_check_defrag

我们注意到0xffffffff815ca47fffffffff815ca3b0ffffffff815ca7c0之间。
如果dropwatch显示的地址,则可以通过以下命令进行定位:

cat  /proc/kallsyms|grep xxx(地址前面xx位)

找下内核源码去查看:

找到相应版本后,搜索ip_rcv
[https://elixir.bootlin.com/linux/v3.10.69/source/net/ipv4/ip_input.c#L375](https://elixir.bootlin.com/linux/v3.10.69/source/net/ipv4/ip_input.c#L375)
内核ip_rcv代码

大概是pkt_type类型不对,丢弃掉不是发往本机的报文,skb->pkt_type在网卡接收报文处理以太网头时会根据dst mac设置,协议栈的书会讲不是发往本机的广播报文会在二层被丢弃,但是这个和我们的不符合,我们是采用混杂模式,所以不存在mac不匹配的问题。

二 其他丢包查询办法

2.1 ip查看丢包

 $ip -s -s link ls eno2
24: eno2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT qlen 1000
    link/ether 78:ac:44:0f:16:00 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    16179332325329 79927306089 0       123106137 0       315991391 
    RX errors: length   crc     frame   fifo    missed
               0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0       
    TX errors: aborted  fifo   window heartbeat transns
               0        0       0       0       8     

2.2 netstat 查看丢包情况

$ netstat -i 
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eno1             1500   132108      0  24242 0          7034      0      0      0 BMRU
eno2             1500 80057630017      0 123636508 0             0      0      0      0 BMPRU
eno3             1500 173704853      0 527651 0      52369033      0      0      0 BMPRU
eno4             1500     8497      0      0 0             0      0      0      0 BMU
enp59s0f0        1500        0      0      0 0             0      0      0      0 BMU
enp59s0f1        1500        0      0      0 0             0      0      0      0 BMU
lo              65536 581220807      0      0 0      581220807      0      0      0 LRU
vboxnet0         1500        0      0      0 0         20880      0      0      0 BMRU
virbr0           1500        0      0      0 0             0      0      0      0 BMU

2.3 查看具体协议的丢包

比如udp丢包

netstat -su
IcmpMsg:
    InType0: 112
    InType3: 165692
    InType8: 7
    InType11: 7434
    OutType0: 7
    OutType3: 169248
    OutType5: 7
    OutType8: 153
Udp:
    126528161 packets received
    77827 packets to unknown port received.
    20408348 packet receive errors
    120504641 packets sent
    20408348 receive buffer errors
    0 send buffer errors
UdpLite:
IpExt:
    InNoRoutes: 4
    InMcastPkts: 26550045
    OutMcastPkts: 2576
    InBcastPkts: 456933
    OutBcastPkts: 36
    InOctets: 1176854170075
    OutOctets: 1113352074110
    InMcastOctets: 7163508127
    OutMcastOctets: 165775
    InBcastOctets: 138811485
    OutBcastOctets: 2808
    InCsumErrors: 21934887
    InNoECTPkts: 1058031660
    InECT0Pkts: 2361

2.4查看各个协议的收发情况

#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: 1 64 1054834458 21934887 0 5631 159 0 652874483 636977013 0 52 256 3409 889 256 7277 0 23887
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: 173245 34807 0 165692 7434 0 0 0 7 112 0 0 0 0 169415 0 169248 0 0 0 7 153 7 0 0 0 0
IcmpMsg: InType0 InType3 InType8 InType11 OutType0 OutType3 OutType5 OutType8
IcmpMsg: 112 165692 7 7434 7 169248 7 153
Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors
Tcp: 1 200 120000 -1 547226 349549 365407 43767 184 505212431 516379275 219665 0 489834 0
Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors
Udp: 126561398 77827 20408348 120536958 20408348 0 0
UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors
UdpLite: 0 0 0 0 0 0 0

三 参考

如何分析linux tcp/ip 丢包问题
systemtap能做什么?第一篇

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容

  • 一 背景 有时候,需要关注下网络的是否丢包,特别是高带宽情况下测试系统的性能的时候, 这次我们在测试很小的流量的情...
    明翼阅读 6,006评论 0 1
  • 首先来看看网卡收发包的处理流程: 收包: 网线上的packet首先被网卡获取,网卡会检查packet的CRC校验,...
    _爱吃兔子的萝卜_阅读 11,904评论 0 2
  • veth是kernel提供的一种虚拟网卡,总是成对出现。在一端发送数据,就可以在另一端接收到,类似一根网线。那么它...
    分享放大价值阅读 3,340评论 0 1
  • 最近碰到一个问题,使用 af_packet的mmap模式发包时,如果把网卡down了再up起来后,第一个报文总是发...
    分享放大价值阅读 1,086评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,493评论 16 22