分析 GNU/Linux 上的传入 TCP 数据包丢弃

分析 GNU/Linux 上的传入 TCP 数据包丢弃

我使用 Ubntu 12.04 Server 作为网关/路由器。该服务器有两个 NetXtreme BCM5721 千兆以太网 PCI Express 卡,用于 LAN 和 WAN 接口。Opennms 监控软件显示 WAN(ISP)接口上的传入数据包丢弃。ISP 通过 SDH/SONET 环提供直接以太网连接。但是我没有在 LAN 接口上看到任何数据包丢弃。以下是 WAN 接口图:

在此处输入图片描述

是否有任何工具/命令可以发现导致此类数据包丢弃的原因。是否有可能知道 ISP 方面的某些配置错误是否导致了此类问题。

Ifconfig 输出:

eth1      Link encap:Ethernet  HWaddr **:**:**:**:63:5d  
          inet addr:***.***.4.130  Bcast:***.***.4.131  Mask:255.255.255.252
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:865089489 errors:0 dropped:596 overruns:0 frame:3
          TX packets:498072410 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1092458492329 (1.0 TB)  TX bytes:48179244881 (48.1 GB)
          Interrupt:17 

答案1

ethtool命令用于向驱动程序查询 NIC 正在报告的统计信息。ethtool -S ethX将显示特定卡的统计信息,并且您可以看到丢失的位置。

最常见的情况是,您会在环形缓冲区中丢失数据包(报告为“discard”“fifo”“bufs”等状态,不同卡会有所不同),您可以通过增加环形缓冲区来解决此问题ethtool -g。 请参阅man ethtool以了解更多信息。

netstat命令用于查询内核的网络堆栈。netstat -s将显示统计信息,您可以查看是否在积压(NIC 之后但在套接字缓冲区之前)或在套接字缓冲区(缓冲区太小或应用程序缓慢)或其他地方丢失流量。

相关内容