【问题标题】:how to find which packets got dropped如何查找哪些数据包被丢弃
【发布时间】:2012-01-24 13:50:27
【问题描述】:

我从 Broadcom 网卡收到数千个丢弃的包:

eth1      Link encap:Ethernet  HWaddr 01:27:B0:14:DA:FE
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2746252626 errors:0 dropped:1151734 overruns:0 frame:0
          TX packets:4109502155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:427998700000 (408171.3 Mb)  TX bytes:3530782240047 (3367216.3 Mb)
          Interrupt:40 Memory:d8000000-d8012700

这是安装的版本:

filename:       /lib/modules/2.6.27.54-0.2-default/kernel/drivers/net/bnx2.ko
version:        1.8.0
license:        GPL
description:    Broadcom NetXtreme II BCM5706/5708/5709 Driver

数据包会以每小时 500 到 5000 个数据包的数量批量丢弃。服务器(运行 Postgres)运行良好 - 只是 dropps 很烦人。

在尝试了很多不同的事情之后,我在问:我怎样才能知道数据包来自哪里以及为什么会被丢弃?

【问题讨论】:

    标签: linux networking broadcom


    【解决方案1】:

    丢弃的数据包意味着用于存储数据包以进行转发/处理的缓冲区已满。查看数据包的数据以获取信息的行为意味着您首先要查看数据(您没有,因为没有空间存储它)。

    解决此问题的一种好方法是查看流量转储,以查找离开服务器的 TCP 重传请求,这样您就可以看到哪些数据被丢弃了。当 TCP 数据包丢失时,无论出于何种原因,您的服务器都会要求重新发送它。重新传输将为您提供您正在寻找的对话上下文。

    我实际上建议查看您的服务器所连接的交换机/路由器。它将能够让您很好地了解服务器接口上的损耗和吞吐量,例如,您可以诊断您的卡是否太慢而无法连接线。

    编辑

    This blog post 引用了一个名为dropwatch 的工具,它也可能给你一些线索。

    【讨论】:

    • 值得指出的是,在撰写本文时,还没有适用于 Ubuntu 的可用构建 - 为 fedora/redhat 维护和提供了 dropwatch ..
    • 即便如此,我也从未发现它非常有用(或至少可用)
    • 如果您真的需要 dropwatch,您可以找到适合您架构的 rpm 并将其转换为带有 alien 的 deb 文件。
    【解决方案2】:

    你可能会遇到https://www.novell.com/support/kb/doc.php?id=7007165。

    引用:

    从内核 2.6.37 开始,已更改丢弃数据包计数的含义。以前,丢弃的数据包很可能是由于错误造成的。现在,rx_dropped 计数器显示丢帧的统计数据,原因是:

    Softnet backlog 已满——(从 /proc/net/softnet_stat 测量)

    错误/意外的 VLAN 标记

    未知/未注册的协议

    服务器未配置 IPv6 时的 IPv6 帧

    如果任何帧满足这些条件,它们会在协议栈之前被丢弃,并且 rx_dropped 计数器会递增。

    【讨论】:

      【解决方案3】:

      (为了那些通过搜索找到这个问题的人的利益)我看到了同样的问题(也有一个 bnx2 模块,IIRC)。

      您可以尝试关闭 irqbalance 服务。就我而言,它完全停止了解决方案。

      还请注意,不久前,irqbalance 有很多更新(RHEL 6)。还应检查主系统和以太网板的固件更新。

      我们看到这只是一个非常大的子网,具有非常大量的广播/多播活动。我们没有在同一设备上的噪音较小但仍然非常活跃的网络部分看到这种情况。

      还可以为 NIC 设置以太网环形缓冲区大小。我知道在那个繁忙的网络上 sysctl 有一些改动......

      【讨论】:

        猜你喜欢
        • 2012-08-18
        • 1970-01-01
        • 2019-07-25
        • 1970-01-01
        • 2011-11-27
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多