我使用 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 之后但在套接字缓冲区之前)或在套接字缓冲区(缓冲区太小或应用程序缓慢)或其他地方丢失流量。