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

前端之家收集整理的这篇文章主要介绍了分析GNU / Linux上传入的TCP数据包丢弃前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用Ubntu 12.04服务器作为网关/路由器.该服务器有两个用于LAN和WAN接口的NetXtreme BCM5721千兆以太网PCI Express卡. 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

解决方法

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

最常见的是你会丢失环形缓冲区中的数据包(报告为像“discard”“fifo”“bufs”这样的数据,因卡而异)你可以通过使用ethtool -g增加环形缓冲区来解决这个问题.请参阅man ethtool了解更多信息.

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

猜你在找的Linux相关文章