recv - 什么时候开始丢弃未处理的数据包?

时间:2012-07-05 08:04:30

标签: sockets recv

我们正在使用recv(2)来监听网络管理应用程序中传入的ICMP数据包,其中有一个状态轮询功能可以ping所有托管主机。

在高效的环境中,托管主机的数量可能会变得非常大(1,000+),而目前,当执行所述状态轮询时,我们会按顺序发送所有ping请求,而不会有任何延迟。

显然,这将导致许多ping回复几乎同时被发回,并且看起来我们的调度例程无法赶上。这似乎导致数据包被丢弃,我们的应用程序实际上从未收到ping回复。我们相信是因为许多主机被错误地检测为"不可用"。

调度员除了将收到的回复添加到"收件箱之外,其他任何事情都没有做到。排序,稍后由另一个线程处理,即它不需要花费太多时间,并且可能无法进一步优化。

recv(在网络硬件中的内核?)中使用的内部数据包缓冲区是否可能填满并开始丢弃数据包?如果是这样,是否有一种很好的方法可以确定可以安全执行的合理最大同时ping数量(即从操作系统获取缓冲区大小)?

0 个答案:

没有答案