linux – UDP Packet drop – INErrors Vs .RcvbufErrors
我写了一个简单的UDP服务器程序来了解更多可能的网络瓶颈.
UDP服务器:创建UDP套接字,将其绑定到指定的端口和addr,并将套接字文件描述符添加到epoll兴趣列表中.然后它的epoll等待传入的数据包.在接收到传入数据包(EPOLLIN)时,它读取数据包,只打印接收的数据包长度.很简单,对:) UDP客户端:我使用hping如下所示:
当我以每秒100个数据包发送udp数据包时,我没有发现任何UDP数据包丢失.但是当我淹没udp数据包(如上面的命令所示)时,我看到有重大的丢包. 测试1:
对于Test1,丢包率为?53%. 我验证了在客户端和服务器端使用“ethtool -S ethX”命令的硬件级别没有太多的损失,而在应用程序级别我看到如上所述损失了53%. 因此,为了减少丢包,我尝试了这些: 突破-20:
收到buf大小到16MB:
这些变化后,执行Test2. 测试2:
对于Test2,丢包率为6%. 数据包丢失明显减少.但我有以下问题: >丢包可以进一步减少吗?我知道我在这里贪婪:)但是我只是试图找出是否可能进一步减少丢包. 感谢您的帮助和时间! 解决方法
调整Linux内核的网络堆栈以减少数据包丢失有一点涉及,因为从驱动程序一直到网络堆栈有很多调整选项.
我写了一个long blog post,从上到下解释所有的调优参数,并解释了/ proc / net / snmp中的每个字段是什么意思,所以你可以弄清楚为什么这些错误发生.看看,我认为它应该帮助你让你的网络下降到0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |