对于负载小于1470的UDP数据包,能否实现1Gbit吞吐量?由于数据包大小较小,实现这样的吞吐量可能会有一些瓶颈(I/O、操作系统、网络等)。我想驱动程序和硬件可能需要调整到小包/高吞吐量模式。是否有人成功地使用小UDP数据包实现了1Gbit的吞吐量?
对于负载小于1470的UDP数据包,能否实现1Gbit吞吐量?由于数据包大小较小,实现这样的吞吐量可能会有一些瓶颈(I/O、操作系统、网络等)。我想驱动程序和硬件可能需要调整到小包/高吞吐量模式。是否有人成功地使用小UDP数据包实现了1Gbit的吞吐量?
我之前曾在相对标准的PC硬件上进行过吞吐量实验,虽然只是通过 tcpreplay进行传输而不是UDP。
我发现最大的瓶颈在于将数据包传输到网卡本身。使用高速总线与NIC(例如4x pci-express NIC)接口可以显著提高性能。但即使如此,仍有明显的每秒数据包限制。显然增加数据包大小可以在减少处理器负载的同时利用更多带宽。
与 Steve Moyer的评论类似,任何网络的利用率都存在理论上的限制。在我的实验中(在完全安静的网络上进行),我看到最大速度约为900Mb/s(仅凭记忆)。这是在CPU负载达到30%至40%的情况下实现的。
限制很可能会受到系统硬件(即PC)的影响,而不是网络基础设施 - 任何值得其盐的网络交换机都应该能够以小数据包维持全速网络访问,肯定比大多数PC处理能力更强。
这里有一个很好的教程,介绍如何调整你的网络设置(在Linux中),以实现真正的千兆速度:http://datatag.web.cern.ch/datatag/howto/tcp.html