对于有效载荷小于1470的UDP数据包,是否可以实现1Gbit吞吐量?由于数据包较小,因此在实现此类吞吐量(I/O,OS,网络等)时应存在一些瓶颈。我认为可能必须将驱动程序和硬件调整为小数据包/高吞吐量。是否有人尝试通过小型UDP数据包成功实现1Gbit吞吐量?
最佳答案
我以前已经在相对标准的PC硬件上对千兆链接的吞吐量进行了一些实验,尽管只是通过tcpreplay进行传输(而不是通过udp进行传输)。
我发现的最大瓶颈在于仅将数据包发送到NIC本身。通过使用高速总线连接到NIC(例如4x pci-express NIC),可以大大改善这一点。但是即使这样,还是有非常明确的数据包/秒限制。显然,增加数据包大小将使您可以利用更多带宽,同时减少处理器负载。
与Steve Moyer的注释相同,任何网络的使用都存在理论上的限制。在我的实验中(这是在完全安静的网络上完成的),我看到的最大值约为900Mb/s(并且仅在内存顶部)。 CPU负载为30%到40%。
这种限制更有可能是由您的系统硬件(例如PC)而不是网络基础结构强加的-任何有值(value)的网络交换机都应该能够以小数据包维持全速网络访问-当然,其速率比大多数PC都可以应付。
关于sockets - 无法实现1Gbit UDP吞吐量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/99054/