无法实现1Gbps的UDP吞吐量

9

对于负载小于1470的UDP数据包,能否实现1Gbit吞吐量?由于数据包大小较小,实现这样的吞吐量可能会有一些瓶颈(I/O、操作系统、网络等)。我想驱动程序和硬件可能需要调整到小包/高吞吐量模式。是否有人成功地使用小UDP数据包实现了1Gbit的吞吐量?


提供更详细的网络拓扑描述将有助于我们提出建议... - Stu Thompson
5个回答

7

我之前曾在相对标准的PC硬件上进行过吞吐量实验,虽然只是通过 tcpreplay进行传输而不是UDP。

我发现最大的瓶颈在于将数据包传输到网卡本身。使用高速总线与NIC(例如4x pci-express NIC)接口可以显著提高性能。但即使如此,仍有明显的每秒数据包限制。显然增加数据包大小可以在减少处理器负载的同时利用更多带宽。

Steve Moyer的评论类似,任何网络的利用率都存在理论上的限制。在我的实验中(在完全安静的网络上进行),我看到最大速度约为900Mb/s(仅凭记忆)。这是在CPU负载达到30%至40%的情况下实现的。

限制很可能会受到系统硬件(即PC)的影响,而不是网络基础设施 - 任何值得其盐的网络交换机都应该能够以小数据包维持全速网络访问,肯定比大多数PC处理能力更强。


3
我发现硬件的每秒数据包处理能力明显低于网络的理论容量。对于Broadcomm BCM5704S,我在69000个pps时达到了此限制,而千兆以太网则为1488100pps。
这里还有一些数字,可以在此处查看:http://code.google.com/p/openpgm/

3
你使用的是什么类型的网络连接?如果你使用的是1000BaseTx/Fx连接,最大包大小时不要期望超过80%的吞吐量。随着数据包大小的减小,间距、同步、以太网头、IP头和UDP头的开销会相对于有效载荷而增加,因此会进一步降低你的最大吞吐量。

3
请查看您所使用的交换机的文档。交换机可以提供每秒数据包数量(pps)限制,并且如果您发送的数据包显着小于最大有效负载大小,则通常无法维持1GBps。
另一个需要检查的是您的网络卡是否正在执行中断合并,并且它支持的发送/接收描述符的最大数量是多少。在这种吞吐量水平下,即使具有现代CPU和内存系统,中断服务时间和上下文切换时间也可能成为主机系统的重要开销。
此外,如果您使用铜基千兆以太网,则该卡发出的最小以太网帧为512字节,因此较小的消息将被填充到该大小。这是由于需要进行载波侦听/冲突检测的要求。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接