9

对于有效载荷小于 1470 的 UDP 数据包,是否有可能实现 1Gbit 吞吐量?由于数据包较小,在实现这种吞吐量(I/O、操作系统、网络等)方面应该存在一些瓶颈。我想驱动程序和硬件可能必须调整为小数据包/高吞吐量。有没有人尝试过使用小型 UDP 数据包成功实现 1Gbit 吞吐量?

4

5 回答 5

7

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

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

Steve Moyer的评论一样,任何网络的使用都存在理论上的限制。在我的实验中(在一个完全安静的网络上进行),我看到的最大值约为(而且仅超出我的记忆)900Mb/s。这是 CPU 负载为 30% 到 40% 的情况。

与您的网络基础设施相比,您的系统硬件(即 PC)更有可能施加限制 - 任何值得其盐分的网络交换机都应该能够以小数据包维持全速网络访问 - 当然速率要高得多大多数电脑都能应付。

于 2008-09-20T12:05:39.470 回答
3

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

于 2008-09-19T02:49:53.380 回答
3

检查您正在使用的交换机的文档。交换机每秒可以传输的数据包数量 (pps) 受到限制,如果您发送的数据包远小于最大有效负载大小,则通常无法维持 1GBps。

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

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

于 2008-09-19T02:54:18.767 回答
3

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

我在这里报告了更多数字,http://code.google.com/p/openpgm/

于 2010-08-31T20:54:35.337 回答
0

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

于 2008-09-19T02:48:46.813 回答