无法实现1Gbit UDP吞吐量

时间:2008-09-19 02:46:29

标签: sockets networking udp

对于有效载荷小于1470的UDP数据包,是否可以实现1Gbit吞吐量?由于数据包大小较小,实现此类吞吐量(I / O,OS,网络等)应该存在一些瓶颈。我想可能必须将驱动程序和硬件调整为小数据包/高吞吐量。有没有人尝试用小UDP数据包成功实现1Gbit吞吐量?

5 个答案:

答案 0 :(得分:7)

我以前在相对标准的PC硬件上进行了千兆链路上的吞吐量试验,虽然只是传输(通过tcpreplay),而不是udp。

我发现的最大瓶颈在于只是将数据包发送到NIC本身。通过使用高速总线连接到NIC(例如,4x pci-express NIC),可以显着提高这一点。但即使有这个,也有一个非常明确的数据包/秒限制。显然,增加数据包大小可以让您在减少处理器负载的同时充分利用带宽。

Steve Moyer的评论相同,对任何网络的利用都存在理论上的限制。在我的实验中(这是在一个完全安静的网络上完成的)我看到的最大值(并且仅在我的记忆顶部)900Mb / s。这是因为cpu负载为30%到40%。

你的系统硬件(即PC)比你的网络基础设施更有可能施加限制 - 任何有价值的网络交换机应该能够通过小数据包维持全速网络访问 - 当然高于大多数PC可以应对的速度。

答案 1 :(得分:3)

您使用的是哪种类型的网络连接?如果您使用的是1000BaseTx / Fx链路,那么对于最大大小的数据包,预计吞吐量不会超过80%。随着数据包大小的减小,间隔,同步,以太网报头,IP报头和UDP报头的开销会随着有效负载的增加而增加,从而进一步降低最大吞吐量。

答案 2 :(得分:3)

查看您正在使用的交换机的文档。交换机受限于它们可以提供的每秒数据包数(pps),如果您发送的数据包明显小于最大有效负载大小,则通常无法维持1GBps。

要检查的另一件事是您的网卡是否正在进行中断合并,以及它可以支持的最大发送/接收描述符数。在这种吞吐量水平下,即使使用现代CPU和内存系统,中断服务时间和上下文切换时间也会成为主机系统的一大开销。

此外,如果您使用千兆位铜线,则卡将发出的最小以太网帧为512字节,因此较小的消息将填充到该大小。这是因为对载波侦听/碰撞检测的要求。

答案 3 :(得分:3)

我发现硬件的每秒数据包数量明显低于网络理论容量。对于Broadcomm BCM5704S,我的成本为69,000 pps,而千兆位为1,488,100pps。

我在此报告的更多数字http://code.google.com/p/openpgm/

答案 4 :(得分:0)

有一个关于调整网络设置(在Linux中)的好教程,以实现真正的千兆位速度:http://datatag.web.cern.ch/datatag/howto/tcp.html