【发布时间】:2012-10-21 17:48:45
【问题描述】:
在基于 RAW-socket 的数据包发送测试期间,我发现了非常恼人的症状。 使用默认的 RAW 套接字设置(特别是对于 SO_SNDBUF 大小), 原始套接字发送 100,000 个数据包没有问题,但花了大约 8 秒 发送所有数据包,并且数据包被接收进程正确接收。 这意味着默认设置可实现约 10,000 pps(每秒数据包)。 (我觉得这个数字太小了,出乎我的意料。)
无论如何,为了增加 pps 值,我增加了数据包发送缓冲区大小 通过调整 /proc/sys/net/core/{wmem_max, wmem_default}。 增加两个系统参数后,我已经确定了刺激性症状。 100,000个数据包被及时发送,但只有3,000个数据包被发送 由接收进程(位于远程节点)接收。
在发送 Linux 机器(Centos 5.2),我做了 netstat -a -s 和 ifconfig。 Netstat 显示发出了 100,000 个请求,但 ifconfig 显示 只有 3,000 个数据包被发送。
我想知道发生这种情况的原因,我也想知道 这个问题怎么解决(当然不知道是不是真的有问题)。
谁能给我一些关于这个问题的建议、例子或参考?
最好的问候, bjlee
【问题讨论】: